Skip to content

Commit

Permalink
Update tests to be compatible with Simba and Facebook JDBC drivers
Browse files Browse the repository at this point in the history
Don't specify data types in result files. For Java tests that must
be different for the two JDBC drivers, check which driver is in use and
act accordingly.
  • Loading branch information
Brian Rickman authored and electrum committed Sep 8, 2016
1 parent 7e6fdcb commit 36dd443
Show file tree
Hide file tree
Showing 40 changed files with 400 additions and 87 deletions.
4 changes: 4 additions & 0 deletions presto-product-tests/pom.xml
Expand Up @@ -101,6 +101,10 @@
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</dependency>
</dependencies>

<build>
Expand Down
Expand Up @@ -16,21 +16,40 @@
import com.teradata.tempto.ProductTest;
import org.testng.annotations.Test;

import java.sql.Connection;

import static com.facebook.presto.tests.TestGroups.JMX_CONNECTOR;
import static com.facebook.presto.tests.utils.JdbcDriverUtils.usingPrestoJdbcDriver;
import static com.facebook.presto.tests.utils.JdbcDriverUtils.usingTeradataJdbcDriver;
import static com.teradata.tempto.assertions.QueryAssert.assertThat;
import static com.teradata.tempto.query.QueryExecutor.defaultQueryExecutor;
import static com.teradata.tempto.query.QueryExecutor.query;
import static java.sql.JDBCType.BIGINT;
import static java.sql.JDBCType.LONGNVARCHAR;
import static java.sql.JDBCType.VARCHAR;

public class JmxConnectorTests
extends ProductTest
{
@Test(groups = JMX_CONNECTOR)
public void selectFromJavaRuntimeJmxMBean()
{
assertThat(query("SELECT node, vmname, vmversion FROM jmx.current.\"java.lang:type=runtime\""))
.hasColumns(LONGNVARCHAR, LONGNVARCHAR, LONGNVARCHAR)
.hasAnyRows();
Connection connection = defaultQueryExecutor().getConnection();
String sql = "SELECT node, vmname, vmversion FROM jmx.current.\"java.lang:type=runtime\"";

if (usingPrestoJdbcDriver(connection)) {
assertThat(query(sql))
.hasColumns(LONGNVARCHAR, LONGNVARCHAR, LONGNVARCHAR)
.hasAnyRows();
}
else if (usingTeradataJdbcDriver(connection)) {
assertThat(query(sql))
.hasColumns(VARCHAR, VARCHAR, VARCHAR)
.hasAnyRows();
}
else {
throw new IllegalStateException();
}
}

@Test(groups = JMX_CONNECTOR)
Expand Down
Expand Up @@ -16,28 +16,47 @@
import com.teradata.tempto.ProductTest;
import org.testng.annotations.Test;

import java.sql.Connection;

import static com.facebook.presto.tests.TestGroups.SYSTEM_CONNECTOR;
import static com.facebook.presto.tests.utils.JdbcDriverUtils.usingPrestoJdbcDriver;
import static com.facebook.presto.tests.utils.JdbcDriverUtils.usingTeradataJdbcDriver;
import static com.teradata.tempto.assertions.QueryAssert.assertThat;
import static com.teradata.tempto.query.QueryExecutor.defaultQueryExecutor;
import static com.teradata.tempto.query.QueryExecutor.query;
import static java.sql.JDBCType.BIGINT;
import static java.sql.JDBCType.LONGNVARCHAR;
import static java.sql.JDBCType.TIMESTAMP;
import static java.sql.JDBCType.VARCHAR;

public class SystemConnectorTests
extends ProductTest
{
@Test(groups = SYSTEM_CONNECTOR)
public void selectRuntimeNodes()
{
assertThat(query("SELECT node_id, http_uri, node_version, state FROM system.runtime.nodes"))
.hasColumns(LONGNVARCHAR, LONGNVARCHAR, LONGNVARCHAR, LONGNVARCHAR)
.hasAnyRows();
Connection connection = defaultQueryExecutor().getConnection();
String sql = "SELECT node_id, http_uri, node_version, state FROM system.runtime.nodes";
if (usingPrestoJdbcDriver(connection)) {
assertThat(query(sql))
.hasColumns(LONGNVARCHAR, LONGNVARCHAR, LONGNVARCHAR, LONGNVARCHAR)
.hasAnyRows();
}
else if (usingTeradataJdbcDriver(connection)) {
assertThat(query(sql))
.hasColumns(VARCHAR, VARCHAR, VARCHAR, VARCHAR)
.hasAnyRows();
}
else {
throw new IllegalStateException();
}
}

@Test(groups = SYSTEM_CONNECTOR)
public void selectRuntimeQueries()
{
assertThat(query("SELECT" +
Connection connection = defaultQueryExecutor().getConnection();
String sql = "SELECT" +
" node_id," +
" query_id," +
" state," +
Expand All @@ -50,16 +69,29 @@ public void selectRuntimeQueries()
" started," +
" last_heartbeat," +
" 'end' " +
"FROM system.runtime.queries"))
.hasColumns(LONGNVARCHAR, LONGNVARCHAR, LONGNVARCHAR, LONGNVARCHAR, LONGNVARCHAR,
BIGINT, BIGINT, BIGINT, TIMESTAMP, TIMESTAMP, TIMESTAMP, LONGNVARCHAR)
.hasAnyRows();
"FROM system.runtime.queries";
if (usingPrestoJdbcDriver(connection)) {
assertThat(query(sql))
.hasColumns(LONGNVARCHAR, LONGNVARCHAR, LONGNVARCHAR, LONGNVARCHAR, LONGNVARCHAR,
BIGINT, BIGINT, BIGINT, TIMESTAMP, TIMESTAMP, TIMESTAMP, LONGNVARCHAR)
.hasAnyRows();
}
else if (usingTeradataJdbcDriver(connection)) {
assertThat(query(sql))
.hasColumns(VARCHAR, VARCHAR, VARCHAR, VARCHAR, VARCHAR,
BIGINT, BIGINT, BIGINT, TIMESTAMP, TIMESTAMP, TIMESTAMP, VARCHAR)
.hasAnyRows();
}
else {
throw new IllegalStateException();
}
}

@Test(groups = SYSTEM_CONNECTOR)
public void selectRuntimeTasks()
{
assertThat(query("SELECT" +
Connection connection = defaultQueryExecutor().getConnection();
String sql = "SELECT" +
" node_id," +
" task_id," +
" stage_id," +
Expand All @@ -83,18 +115,44 @@ public void selectRuntimeTasks()
" start," +
" last_heartbeat," +
" 'end' " +
"FROM SYSTEM.runtime.tasks"))
.hasColumns(LONGNVARCHAR, LONGNVARCHAR, LONGNVARCHAR, LONGNVARCHAR, LONGNVARCHAR,
BIGINT, BIGINT, BIGINT, BIGINT, BIGINT, BIGINT, BIGINT, BIGINT, BIGINT,
BIGINT, BIGINT, BIGINT, BIGINT, BIGINT, TIMESTAMP, TIMESTAMP, TIMESTAMP, LONGNVARCHAR)
.hasAnyRows();
"FROM SYSTEM.runtime.tasks";
if (usingPrestoJdbcDriver(connection)) {
assertThat(query(sql))
.hasColumns(LONGNVARCHAR, LONGNVARCHAR, LONGNVARCHAR, LONGNVARCHAR, LONGNVARCHAR,
BIGINT, BIGINT, BIGINT, BIGINT, BIGINT, BIGINT, BIGINT, BIGINT, BIGINT,
BIGINT, BIGINT, BIGINT, BIGINT, BIGINT, TIMESTAMP, TIMESTAMP, TIMESTAMP, LONGNVARCHAR)
.hasAnyRows();
}
else if (usingTeradataJdbcDriver(connection)) {
assertThat(query(sql))
.hasColumns(VARCHAR, VARCHAR, VARCHAR, VARCHAR, VARCHAR,
BIGINT, BIGINT, BIGINT, BIGINT, BIGINT, BIGINT, BIGINT, BIGINT, BIGINT,
BIGINT, BIGINT, BIGINT, BIGINT, BIGINT, TIMESTAMP, TIMESTAMP, TIMESTAMP, VARCHAR)
.hasAnyRows();
}
else {
throw new IllegalStateException();
}
}

@Test(groups = SYSTEM_CONNECTOR)
public void selectMetadataCatalogs()
{
assertThat(query("select catalog_name, connector_id from system.metadata.catalogs"))
.hasColumns(LONGNVARCHAR, LONGNVARCHAR)
.hasAnyRows();
Connection connection = defaultQueryExecutor().getConnection();
String sql = "select catalog_name, connector_id from system.metadata.catalogs";

if (usingPrestoJdbcDriver(connection)) {
assertThat(query(sql))
.hasColumns(LONGNVARCHAR, LONGNVARCHAR)
.hasAnyRows();
}
else if (usingTeradataJdbcDriver(connection)) {
assertThat(query(sql))
.hasColumns(VARCHAR, VARCHAR)
.hasAnyRows();
}
else {
throw new IllegalStateException();
}
}
}
Expand Up @@ -28,6 +28,7 @@ public final class TestGroups
public static final String BLACKHOLE_CONNECTOR = "blackhole";
public static final String SMOKE = "smoke";
public static final String JDBC = "jdbc";
public static final String SIMBA_JDBC = "simba_jdbc";
public static final String QUERY_ENGINE = "qe";
public static final String COMPARISON = "comparison";
public static final String LOGICAL = "logical";
Expand Down
Expand Up @@ -24,6 +24,7 @@
import org.testng.annotations.Test;

import java.math.BigDecimal;
import java.sql.Connection;
import java.sql.Date;
import java.sql.SQLException;

Expand All @@ -34,9 +35,12 @@
import static com.facebook.presto.tests.hive.AllSimpleTypesTableDefinitions.ALL_HIVE_SIMPLE_TYPES_PARQUET;
import static com.facebook.presto.tests.hive.AllSimpleTypesTableDefinitions.ALL_HIVE_SIMPLE_TYPES_RCFILE;
import static com.facebook.presto.tests.hive.AllSimpleTypesTableDefinitions.ALL_HIVE_SIMPLE_TYPES_TEXTFILE;
import static com.facebook.presto.tests.utils.JdbcDriverUtils.usingPrestoJdbcDriver;
import static com.facebook.presto.tests.utils.JdbcDriverUtils.usingTeradataJdbcDriver;
import static com.teradata.tempto.assertions.QueryAssert.Row.row;
import static com.teradata.tempto.assertions.QueryAssert.assertThat;
import static com.teradata.tempto.fulfillment.table.TableRequirements.immutableTable;
import static com.teradata.tempto.query.QueryExecutor.defaultQueryExecutor;
import static com.teradata.tempto.query.QueryExecutor.query;
import static com.teradata.tempto.util.DateTimeUtils.parseTimestampInUTC;
import static java.sql.JDBCType.BIGINT;
Expand All @@ -52,6 +56,8 @@
import static java.sql.JDBCType.SMALLINT;
import static java.sql.JDBCType.TIMESTAMP;
import static java.sql.JDBCType.TINYINT;
import static java.sql.JDBCType.VARBINARY;
import static java.sql.JDBCType.VARCHAR;

public class TestAllDatatypesFromHiveConnector
extends ProductTest
Expand Down Expand Up @@ -208,23 +214,48 @@ private void assertProperAllDatatypesSchema(String tableName)

private void assertColumnTypes(QueryResult queryResult)
{
assertThat(queryResult).hasColumns(
TINYINT,
SMALLINT,
INTEGER,
BIGINT,
REAL,
DOUBLE,
DECIMAL,
DECIMAL,
TIMESTAMP,
DATE,
LONGNVARCHAR,
LONGNVARCHAR,
CHAR,
BOOLEAN,
LONGVARBINARY
);
Connection connection = defaultQueryExecutor().getConnection();
if (usingPrestoJdbcDriver(connection)) {
assertThat(queryResult).hasColumns(
TINYINT,
SMALLINT,
INTEGER,
BIGINT,
REAL,
DOUBLE,
DECIMAL,
DECIMAL,
TIMESTAMP,
DATE,
LONGNVARCHAR,
LONGNVARCHAR,
CHAR,
BOOLEAN,
LONGVARBINARY
);
}
else if (usingTeradataJdbcDriver(connection)) {
assertThat(queryResult).hasColumns(
TINYINT,
SMALLINT,
INTEGER,
BIGINT,
REAL,
DOUBLE,
DECIMAL,
DECIMAL,
TIMESTAMP,
DATE,
VARCHAR,
VARCHAR,
CHAR,
BOOLEAN,
VARBINARY
);
}
else {
throw new IllegalStateException();
}
}

@Requires(ParquetRequirements.class)
Expand Down
Expand Up @@ -13,7 +13,6 @@
*/
package com.facebook.presto.tests.hive;

import com.facebook.presto.jdbc.PrestoConnection;
import com.google.common.base.MoreObjects;
import com.google.common.base.Throwables;
import com.google.common.collect.ImmutableMap;
Expand All @@ -29,6 +28,7 @@
import java.util.Map;

import static com.facebook.presto.tests.TestGroups.STORAGE_FORMATS;
import static com.facebook.presto.tests.utils.JdbcDriverUtils.setSessionProperty;
import static com.facebook.presto.util.ImmutableCollectors.toImmutableList;
import static com.teradata.tempto.assertions.QueryAssert.Row.row;
import static com.teradata.tempto.assertions.QueryAssert.assertThat;
Expand Down Expand Up @@ -226,12 +226,11 @@ private static void setSessionProperties(Map<String, String> sessionProperties)
{
Connection connection = defaultQueryExecutor().getConnection();
try {
PrestoConnection prestoConnection = connection.unwrap(PrestoConnection.class);
// create more than one split
prestoConnection.setSessionProperty("task_writer_count", "4");
prestoConnection.setSessionProperty("redistribute_writes", "false");
setSessionProperty(connection, "task_writer_count", "4");
setSessionProperty(connection, "redistribute_writes", "false");
for (Map.Entry<String, String> sessionProperty : sessionProperties.entrySet()) {
prestoConnection.setSessionProperty(sessionProperty.getKey(), sessionProperty.getValue());
setSessionProperty(connection, sessionProperty.getKey(), sessionProperty.getValue());
}
}
catch (SQLException e) {
Expand Down

0 comments on commit 36dd443

Please sign in to comment.