This is an automated email from the ASF dual-hosted git repository. apucher pushed a commit to branch tls-integration-test in repository https://gitbox.apache.org/repos/asf/incubator-pinot.git
commit 702f325eb225e3809de832e159391606a67aa74a Author: Alexander Pucher <a...@alexpucher.com> AuthorDate: Wed Jun 2 11:26:40 2021 -0700 support TLS in pinot-transport --- .../org/apache/pinot/client/ConnectionFactory.java | 28 +++++++--------- .../client/JsonAsyncHttpPinotClientTransport.java | 29 +++++++++++++---- .../JsonAsyncHttpPinotClientTransportFactory.java | 37 +++++++++++++++++++--- .../pinot/client/PinotClientTransportFactory.java | 11 ------- .../apache/pinot/client/ConnectionFactoryTest.java | 7 +++- .../apache/pinot/client/PreparedStatementTest.java | 21 +++--------- .../apache/pinot/client/ResultSetGroupTest.java | 17 ++-------- .../java/org/apache/pinot/client/PinotDriver.java | 29 ++++++++++++++--- .../apache/pinot/client/PinotConnectionTest.java | 24 +++----------- .../pinot/client/PinotPreparedStatementTest.java | 14 -------- .../apache/pinot/client/PinotResultSetTest.java | 17 ++-------- .../apache/pinot/client/PinotStatementTest.java | 21 +++--------- 12 files changed, 115 insertions(+), 140 deletions(-) diff --git a/pinot-clients/pinot-java-client/src/main/java/org/apache/pinot/client/ConnectionFactory.java b/pinot-clients/pinot-java-client/src/main/java/org/apache/pinot/client/ConnectionFactory.java index a233fea..d34d7b0 100644 --- a/pinot-clients/pinot-java-client/src/main/java/org/apache/pinot/client/ConnectionFactory.java +++ b/pinot-clients/pinot-java-client/src/main/java/org/apache/pinot/client/ConnectionFactory.java @@ -20,7 +20,6 @@ package org.apache.pinot.client; import java.util.Arrays; import java.util.List; -import java.util.Map; import java.util.Properties; @@ -28,8 +27,6 @@ import java.util.Properties; * Creates connections to Pinot, given various initialization methods. */ public class ConnectionFactory { - static PinotClientTransportFactory _transportFactory = new JsonAsyncHttpPinotClientTransportFactory(); - private ConnectionFactory() { } @@ -40,20 +37,20 @@ public class ConnectionFactory { * @return A connection that connects to the brokers in the given Helix cluster */ public static Connection fromZookeeper(String zkUrl) { - return fromZookeeper(zkUrl, null); + return fromZookeeper(zkUrl, new JsonAsyncHttpPinotClientTransportFactory().buildTransport()); } /** * Creates a connection to a Pinot cluster, given its Zookeeper URL * * @param zkUrl The URL to the Zookeeper cluster, must include the cluster name e.g host:port/chroot/pinot-cluster - * @param headers Map of key and values of header which need to be used during http call + * @param transport pinot transport * @return A connection that connects to the brokers in the given Helix cluster */ - public static Connection fromZookeeper(String zkUrl, Map<String, String> headers) { + public static Connection fromZookeeper(String zkUrl, PinotClientTransport transport) { try { DynamicBrokerSelector dynamicBrokerSelector = new DynamicBrokerSelector(zkUrl); - return new Connection(dynamicBrokerSelector, _transportFactory.buildTransport(headers)); + return new Connection(dynamicBrokerSelector, transport); } catch (Exception e) { throw new PinotClientException(e); } @@ -66,19 +63,18 @@ public class ConnectionFactory { * @return A connection that connects to the brokers specified in the properties */ public static Connection fromProperties(Properties properties) { - return fromProperties(properties, null); + return fromProperties(properties, new JsonAsyncHttpPinotClientTransportFactory().buildTransport()); } /** * Creates a connection from properties containing the connection parameters. * * @param properties The properties to use for the connection - * @param headers Map of key and values of header which need to be used during http call + * @param transport pinot transport * @return A connection that connects to the brokers specified in the properties */ - public static Connection fromProperties(Properties properties, Map<String, String> headers) { - return new Connection(Arrays.asList(properties.getProperty("brokerList").split(",")), - _transportFactory.buildTransport(headers)); + public static Connection fromProperties(Properties properties, PinotClientTransport transport) { + return new Connection(Arrays.asList(properties.getProperty("brokerList").split(",")), transport); } /** @@ -88,17 +84,17 @@ public class ConnectionFactory { * @return A connection to the set of brokers specified */ public static Connection fromHostList(String... brokers) { - return fromHostList(Arrays.asList(brokers), null); + return fromHostList(Arrays.asList(brokers), new JsonAsyncHttpPinotClientTransportFactory().buildTransport()); } /** * Creates a connection which sends queries randomly between the specified brokers. * * @param brokers The list of brokers to send queries to - * @param headers Map of key and values of header which need to be used during http call + * @param transport pinot transport * @return A connection to the set of brokers specified */ - public static Connection fromHostList(List<String> brokers, Map<String, String> headers) { - return new Connection(brokers, _transportFactory.buildTransport(headers)); + public static Connection fromHostList(List<String> brokers, PinotClientTransport transport) { + return new Connection(brokers, transport); } } diff --git a/pinot-clients/pinot-java-client/src/main/java/org/apache/pinot/client/JsonAsyncHttpPinotClientTransport.java b/pinot-clients/pinot-java-client/src/main/java/org/apache/pinot/client/JsonAsyncHttpPinotClientTransport.java index a5937c2..9c907bc 100644 --- a/pinot-clients/pinot-java-client/src/main/java/org/apache/pinot/client/JsonAsyncHttpPinotClientTransport.java +++ b/pinot-clients/pinot-java-client/src/main/java/org/apache/pinot/client/JsonAsyncHttpPinotClientTransport.java @@ -23,11 +23,15 @@ import com.fasterxml.jackson.databind.ObjectReader; import com.fasterxml.jackson.databind.node.JsonNodeFactory; import com.fasterxml.jackson.databind.node.ObjectNode; import com.ning.http.client.AsyncHttpClient; +import com.ning.http.client.AsyncHttpClientConfig; import com.ning.http.client.Response; +import java.util.HashMap; import java.util.Map; import java.util.concurrent.ExecutionException; import java.util.concurrent.Future; import java.util.concurrent.TimeUnit; +import javax.net.ssl.SSLContext; +import org.apache.pinot.spi.utils.CommonConstants; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -35,18 +39,31 @@ import org.slf4j.LoggerFactory; /** * JSON encoded Pinot client transport over AsyncHttpClient. */ -class JsonAsyncHttpPinotClientTransport implements PinotClientTransport { +public class JsonAsyncHttpPinotClientTransport implements PinotClientTransport { private static final Logger LOGGER = LoggerFactory.getLogger(JsonAsyncHttpPinotClientTransport.class); private static final ObjectReader OBJECT_READER = new ObjectMapper().reader(); - AsyncHttpClient _httpClient = new AsyncHttpClient(); - Map<String, String> _headers; + AsyncHttpClient _httpClient; + + Map<String, String> _headers = new HashMap<>(); + String _scheme = CommonConstants.HTTP_PROTOCOL; + SSLContext _sslContext = null; public JsonAsyncHttpPinotClientTransport() { + _httpClient = new AsyncHttpClient(); } - public JsonAsyncHttpPinotClientTransport(Map<String, String> headers) { + public JsonAsyncHttpPinotClientTransport(SSLContext sslContext, Map<String, String> headers, String scheme) { _headers = headers; + _scheme = scheme; + _sslContext = sslContext; + + AsyncHttpClientConfig.Builder builder = new AsyncHttpClientConfig.Builder(); + if (_sslContext != null) { + builder.setSSLContext(_sslContext); + } + + _httpClient = new AsyncHttpClient(builder.build()); } @Override @@ -72,10 +89,10 @@ class JsonAsyncHttpPinotClientTransport implements PinotClientTransport { final String url; if (queryFormat.equalsIgnoreCase("sql")) { - url = "http://" + brokerAddress + "/query/sql"; + url = _scheme + "://" + brokerAddress + "/query/sql"; json.put("queryOptions", "groupByMode=sql;responseFormat=sql"); } else { - url = "http://" + brokerAddress + "/query"; + url = _scheme + "://" + brokerAddress + "/query"; } AsyncHttpClient.BoundRequestBuilder requestBuilder = _httpClient.preparePost(url); diff --git a/pinot-clients/pinot-java-client/src/main/java/org/apache/pinot/client/JsonAsyncHttpPinotClientTransportFactory.java b/pinot-clients/pinot-java-client/src/main/java/org/apache/pinot/client/JsonAsyncHttpPinotClientTransportFactory.java index 7dda9d8..8c867f8 100644 --- a/pinot-clients/pinot-java-client/src/main/java/org/apache/pinot/client/JsonAsyncHttpPinotClientTransportFactory.java +++ b/pinot-clients/pinot-java-client/src/main/java/org/apache/pinot/client/JsonAsyncHttpPinotClientTransportFactory.java @@ -18,19 +18,46 @@ */ package org.apache.pinot.client; +import java.util.HashMap; import java.util.Map; +import javax.net.ssl.SSLContext; +import org.apache.pinot.spi.utils.CommonConstants; + /** * Pinot client transport factory for JSON encoded BrokerResults through HTTP. */ -class JsonAsyncHttpPinotClientTransportFactory implements PinotClientTransportFactory { +public class JsonAsyncHttpPinotClientTransportFactory implements PinotClientTransportFactory { + Map<String, String> _headers = new HashMap<>(); + String _scheme = CommonConstants.HTTP_PROTOCOL; + SSLContext _sslContext = null; + @Override public PinotClientTransport buildTransport() { - return new JsonAsyncHttpPinotClientTransport(); + return new JsonAsyncHttpPinotClientTransport(_sslContext, _headers, _scheme); } - @Override - public PinotClientTransport buildTransport(Map<String, String> headers) { - return new JsonAsyncHttpPinotClientTransport(headers); + public Map<String, String> getHeaders() { + return _headers; + } + + public void setHeaders(Map<String, String> headers) { + _headers = headers; + } + + public String getScheme() { + return _scheme; + } + + public void setScheme(String scheme) { + _scheme = scheme; + } + + public SSLContext getSslContext() { + return _sslContext; + } + + public void setSslContext(SSLContext sslContext) { + _sslContext = sslContext; } } diff --git a/pinot-clients/pinot-java-client/src/main/java/org/apache/pinot/client/PinotClientTransportFactory.java b/pinot-clients/pinot-java-client/src/main/java/org/apache/pinot/client/PinotClientTransportFactory.java index 4d4dd5f..8a8bdfa 100644 --- a/pinot-clients/pinot-java-client/src/main/java/org/apache/pinot/client/PinotClientTransportFactory.java +++ b/pinot-clients/pinot-java-client/src/main/java/org/apache/pinot/client/PinotClientTransportFactory.java @@ -18,8 +18,6 @@ */ package org.apache.pinot.client; -import java.util.Map; - /** * Factory for client transports. */ @@ -27,14 +25,5 @@ interface PinotClientTransportFactory { /** * This method is deprecating. Method with headers can be used in place of this by passing null headers. */ - @Deprecated PinotClientTransport buildTransport(); - - /** - * Fetch pinot client transport - * @param headers custom headers to be passed in the pinot client call. - */ - default PinotClientTransport buildTransport(Map<String, String> headers) { - return buildTransport(); - } } diff --git a/pinot-clients/pinot-java-client/src/test/java/org/apache/pinot/client/ConnectionFactoryTest.java b/pinot-clients/pinot-java-client/src/test/java/org/apache/pinot/client/ConnectionFactoryTest.java index 41f99bc..3deaec8 100644 --- a/pinot-clients/pinot-java-client/src/test/java/org/apache/pinot/client/ConnectionFactoryTest.java +++ b/pinot-clients/pinot-java-client/src/test/java/org/apache/pinot/client/ConnectionFactoryTest.java @@ -66,9 +66,14 @@ public class ConnectionFactoryTest { List<String> brokers = new ArrayList<>(); brokers.add("127.0.0.1:1234"); brokers.add("localhost:2345"); + Map<String, String> headers = new HashMap<>(); headers.put("Caller", "curl"); - Connection connection = ConnectionFactory.fromHostList(brokers, headers); + + JsonAsyncHttpPinotClientTransportFactory factory = new JsonAsyncHttpPinotClientTransportFactory(); + factory.setHeaders(headers); + + Connection connection = ConnectionFactory.fromHostList(brokers, factory.buildTransport()); // Check that the broker list has the right length and has the same servers Assert.assertEquals(connection.getBrokerList(), brokers); diff --git a/pinot-clients/pinot-java-client/src/test/java/org/apache/pinot/client/PreparedStatementTest.java b/pinot-clients/pinot-java-client/src/test/java/org/apache/pinot/client/PreparedStatementTest.java index 593f0ed..dbb7619 100644 --- a/pinot-clients/pinot-java-client/src/test/java/org/apache/pinot/client/PreparedStatementTest.java +++ b/pinot-clients/pinot-java-client/src/test/java/org/apache/pinot/client/PreparedStatementTest.java @@ -18,10 +18,9 @@ */ package org.apache.pinot.client; +import java.util.Collections; import java.util.concurrent.Future; import org.testng.Assert; -import org.testng.annotations.AfterClass; -import org.testng.annotations.BeforeClass; import org.testng.annotations.Test; @@ -31,13 +30,14 @@ import org.testng.annotations.Test; */ public class PreparedStatementTest { private final DummyPinotClientTransport _dummyPinotClientTransport = new DummyPinotClientTransport(); - private PinotClientTransportFactory _previousTransportFactory = null; @Test public void testPreparedStatementEscaping() { // Create a prepared statement that has to quote a string appropriately - Connection connection = ConnectionFactory.fromHostList("dummy"); - PreparedStatement preparedStatement = connection.prepareStatement(new Request("sql", "SELECT foo FROM bar WHERE baz = ?")); + Connection connection = + ConnectionFactory.fromHostList(Collections.singletonList("dummy"), _dummyPinotClientTransport); + PreparedStatement preparedStatement = + connection.prepareStatement(new Request("sql", "SELECT foo FROM bar WHERE baz = ?")); preparedStatement.setString(0, "'hello'"); preparedStatement.execute(); @@ -45,17 +45,6 @@ public class PreparedStatementTest { Assert.assertEquals("SELECT foo FROM bar WHERE baz = '''hello'''", _dummyPinotClientTransport.getLastQuery()); } - @BeforeClass - public void overridePinotClientTransport() { - _previousTransportFactory = ConnectionFactory._transportFactory; - ConnectionFactory._transportFactory = new DummyPinotClientTransportFactory(); - } - - @AfterClass - public void resetPinotClientTransport() { - ConnectionFactory._transportFactory = _previousTransportFactory; - } - static class DummyPinotClientTransport implements PinotClientTransport { private String _lastQuery; diff --git a/pinot-clients/pinot-java-client/src/test/java/org/apache/pinot/client/ResultSetGroupTest.java b/pinot-clients/pinot-java-client/src/test/java/org/apache/pinot/client/ResultSetGroupTest.java index 900ec1e..77b337c 100644 --- a/pinot-clients/pinot-java-client/src/test/java/org/apache/pinot/client/ResultSetGroupTest.java +++ b/pinot-clients/pinot-java-client/src/test/java/org/apache/pinot/client/ResultSetGroupTest.java @@ -20,10 +20,9 @@ package org.apache.pinot.client; import com.fasterxml.jackson.databind.ObjectMapper; import java.io.InputStream; +import java.util.Collections; import java.util.concurrent.Future; import org.testng.Assert; -import org.testng.annotations.AfterClass; -import org.testng.annotations.BeforeClass; import org.testng.annotations.Test; @@ -33,7 +32,6 @@ import org.testng.annotations.Test; */ public class ResultSetGroupTest { private final DummyJsonTransport _dummyJsonTransport = new DummyJsonTransport(); - private PinotClientTransportFactory _previousTransportFactory = null; @Test public void testDeserializeSelectionResultSet() { @@ -120,21 +118,10 @@ public class ResultSetGroupTest { private ResultSetGroup getResultSet(String resourceName) { _dummyJsonTransport._resource = resourceName; - Connection connection = ConnectionFactory.fromHostList("dummy"); + Connection connection = ConnectionFactory.fromHostList(Collections.singletonList("dummy"), _dummyJsonTransport); return connection.execute("dummy"); } - @BeforeClass - public void overridePinotClientTransport() { - _previousTransportFactory = ConnectionFactory._transportFactory; - ConnectionFactory._transportFactory = new DummyJsonTransportFactory(); - } - - @AfterClass - public void resetPinotClientTransport() { - ConnectionFactory._transportFactory = _previousTransportFactory; - } - static class DummyJsonTransport implements PinotClientTransport { public String _resource; diff --git a/pinot-clients/pinot-jdbc-client/src/main/java/org/apache/pinot/client/PinotDriver.java b/pinot-clients/pinot-jdbc-client/src/main/java/org/apache/pinot/client/PinotDriver.java index a4c9bfa..ba2c459 100644 --- a/pinot-clients/pinot-jdbc-client/src/main/java/org/apache/pinot/client/PinotDriver.java +++ b/pinot-clients/pinot-jdbc-client/src/main/java/org/apache/pinot/client/PinotDriver.java @@ -28,26 +28,45 @@ import java.sql.SQLException; import java.sql.SQLFeatureNotSupportedException; import java.util.ArrayList; import java.util.List; +import java.util.Map; import java.util.Properties; import java.util.logging.Logger; +import java.util.stream.Collectors; +import org.apache.commons.lang3.tuple.Pair; import org.apache.pinot.client.utils.DriverUtils; import org.slf4j.LoggerFactory; public class PinotDriver implements Driver { private static final org.slf4j.Logger LOGGER = LoggerFactory.getLogger(PinotDriver.class); - private final String SCHEME = "pinot"; - public static final String TENANT = "tenant"; + private static final String URI_SCHEME = "pinot"; + public static final String INFO_TENANT = "tenant"; public static final String DEFAULT_TENANT = "DefaultTenant"; + public static final String INFO_SCHEME = "scheme"; + public static final String INFO_HEADERS = "headers"; @Override public Connection connect(String url, Properties info) throws SQLException { try { LOGGER.info("Initiating connection to database for url: " + url); - PinotClientTransport pinotClientTransport = new JsonAsyncHttpPinotClientTransportFactory().buildTransport(); + JsonAsyncHttpPinotClientTransportFactory factory = new JsonAsyncHttpPinotClientTransportFactory(); + + if (info.contains(INFO_SCHEME)) { + factory.setScheme(info.getProperty(INFO_SCHEME)); + } + + Map<String, String> headers = + info.entrySet().stream().filter(entry -> entry.getKey().toString().startsWith(INFO_HEADERS + ".")).map( + entry -> Pair.of(entry.getKey().toString().substring(INFO_HEADERS.length() + 1), entry.getValue().toString())) + .collect(Collectors.toMap(Pair::getKey, Pair::getValue)); + if (!headers.isEmpty()) { + factory.setHeaders(headers); + } + + PinotClientTransport pinotClientTransport = factory.buildTransport(); String controllerUrl = DriverUtils.getControllerFromURL(url); - String tenant = info.getProperty(TENANT, DEFAULT_TENANT); + String tenant = info.getProperty(INFO_TENANT, DEFAULT_TENANT); return new PinotConnection(controllerUrl, pinotClientTransport, tenant); } catch (Exception e) { throw new SQLException(String.format("Failed to connect to url : %s", url), e); @@ -59,7 +78,7 @@ public class PinotDriver implements Driver { throws SQLException { String cleanURI = url.substring(5); URI uri = URI.create(cleanURI); - return uri.getScheme().contentEquals(SCHEME); + return uri.getScheme().contentEquals(URI_SCHEME); } @Override diff --git a/pinot-clients/pinot-jdbc-client/src/test/java/org/apache/pinot/client/PinotConnectionTest.java b/pinot-clients/pinot-jdbc-client/src/test/java/org/apache/pinot/client/PinotConnectionTest.java index fbf81b4..e2136ae 100644 --- a/pinot-clients/pinot-jdbc-client/src/test/java/org/apache/pinot/client/PinotConnectionTest.java +++ b/pinot-clients/pinot-jdbc-client/src/test/java/org/apache/pinot/client/PinotConnectionTest.java @@ -20,33 +20,19 @@ package org.apache.pinot.client; import java.sql.Statement; import org.testng.Assert; -import org.testng.annotations.AfterClass; -import org.testng.annotations.BeforeClass; import org.testng.annotations.Test; public class PinotConnectionTest { - private DummyPinotClientTransport - _dummyPinotClientTransport = new DummyPinotClientTransport(); - + private DummyPinotClientTransport _dummyPinotClientTransport = new DummyPinotClientTransport(); private DummyPinotControllerTransport _dummyPinotControllerTransport = new DummyPinotControllerTransport(); - private PinotClientTransportFactory _previousTransportFactory = null; @Test - public void createStatementTest() throws Exception { - PinotConnection pinotConnection = new PinotConnection("dummy", _dummyPinotClientTransport, "dummy" ,_dummyPinotControllerTransport); + public void createStatementTest() + throws Exception { + PinotConnection pinotConnection = + new PinotConnection("dummy", _dummyPinotClientTransport, "dummy", _dummyPinotControllerTransport); Statement statement = pinotConnection.createStatement(); Assert.assertNotNull(statement); } - - @BeforeClass - public void overridePinotClientTransport() { - _previousTransportFactory = ConnectionFactory._transportFactory; - ConnectionFactory._transportFactory = new DummyPinotClientTransportFactory(_dummyPinotClientTransport); - } - - @AfterClass - public void resetPinotClientTransport() { - ConnectionFactory._transportFactory = _previousTransportFactory; - } } diff --git a/pinot-clients/pinot-jdbc-client/src/test/java/org/apache/pinot/client/PinotPreparedStatementTest.java b/pinot-clients/pinot-jdbc-client/src/test/java/org/apache/pinot/client/PinotPreparedStatementTest.java index 1141881..b32e3fe 100644 --- a/pinot-clients/pinot-jdbc-client/src/test/java/org/apache/pinot/client/PinotPreparedStatementTest.java +++ b/pinot-clients/pinot-jdbc-client/src/test/java/org/apache/pinot/client/PinotPreparedStatementTest.java @@ -26,8 +26,6 @@ import java.sql.Timestamp; import org.apache.commons.codec.binary.Hex; import org.apache.pinot.client.utils.DateTimeUtils; import org.testng.Assert; -import org.testng.annotations.AfterClass; -import org.testng.annotations.BeforeClass; import org.testng.annotations.Test; @@ -38,7 +36,6 @@ public class PinotPreparedStatementTest { public static final String SINGLE_STRING_QUERY = "SELECT * FROM dummy WHERE value = ?"; private DummyPinotClientTransport _dummyPinotClientTransport = new DummyPinotClientTransport(); private DummyPinotControllerTransport _dummyPinotControllerTransport = new DummyPinotControllerTransport(); - private PinotClientTransportFactory _previousTransportFactory = null; @Test public void testSetAndClearValues() @@ -108,15 +105,4 @@ public class PinotPreparedStatementTest { Assert.assertEquals(_dummyPinotClientTransport.getLastQuery(), String.format("SELECT * FROM dummy WHERE value = '%s'", Hex.encodeHexString(value.getBytes()))); } - - @BeforeClass - public void overridePinotClientTransport() { - _previousTransportFactory = ConnectionFactory._transportFactory; - ConnectionFactory._transportFactory = new DummyPinotClientTransportFactory(_dummyPinotClientTransport); - } - - @AfterClass - public void resetPinotClientTransport() { - ConnectionFactory._transportFactory = _previousTransportFactory; - } } diff --git a/pinot-clients/pinot-jdbc-client/src/test/java/org/apache/pinot/client/PinotResultSetTest.java b/pinot-clients/pinot-jdbc-client/src/test/java/org/apache/pinot/client/PinotResultSetTest.java index e1b470b..468675f 100644 --- a/pinot-clients/pinot-jdbc-client/src/test/java/org/apache/pinot/client/PinotResultSetTest.java +++ b/pinot-clients/pinot-jdbc-client/src/test/java/org/apache/pinot/client/PinotResultSetTest.java @@ -22,13 +22,12 @@ import com.fasterxml.jackson.databind.ObjectMapper; import java.io.InputStream; import java.sql.ResultSetMetaData; import java.util.Calendar; +import java.util.Collections; import java.util.Date; import java.util.concurrent.Future; import org.apache.commons.io.IOUtils; import org.apache.pinot.client.utils.DateTimeUtils; import org.testng.Assert; -import org.testng.annotations.AfterClass; -import org.testng.annotations.BeforeClass; import org.testng.annotations.Test; @@ -39,7 +38,6 @@ import org.testng.annotations.Test; public class PinotResultSetTest { public static final String TEST_RESULT_SET_RESOURCE = "result_table.json"; private DummyJsonTransport _dummyJsonTransport = new DummyJsonTransport(); - private PinotClientTransportFactory _previousTransportFactory = null; @Test public void testFetchValues() @@ -164,21 +162,10 @@ public class PinotResultSetTest { private ResultSetGroup getResultSet(String resourceName) { _dummyJsonTransport._resource = resourceName; - Connection connection = ConnectionFactory.fromHostList("dummy"); + Connection connection = ConnectionFactory.fromHostList(Collections.singletonList("dummy"), _dummyJsonTransport); return connection.execute("dummy"); } - @BeforeClass - public void overridePinotClientTransport() { - _previousTransportFactory = ConnectionFactory._transportFactory; - ConnectionFactory._transportFactory = new DummyJsonTransportFactory(); - } - - @AfterClass - public void resetPinotClientTransport() { - ConnectionFactory._transportFactory = _previousTransportFactory; - } - class DummyJsonTransport implements PinotClientTransport { public String _resource; diff --git a/pinot-clients/pinot-jdbc-client/src/test/java/org/apache/pinot/client/PinotStatementTest.java b/pinot-clients/pinot-jdbc-client/src/test/java/org/apache/pinot/client/PinotStatementTest.java index c439784..a29a49d 100644 --- a/pinot-clients/pinot-jdbc-client/src/test/java/org/apache/pinot/client/PinotStatementTest.java +++ b/pinot-clients/pinot-jdbc-client/src/test/java/org/apache/pinot/client/PinotStatementTest.java @@ -21,8 +21,6 @@ package org.apache.pinot.client; import java.sql.ResultSet; import java.sql.Statement; import org.testng.Assert; -import org.testng.annotations.AfterClass; -import org.testng.annotations.BeforeClass; import org.testng.annotations.Test; @@ -30,25 +28,14 @@ public class PinotStatementTest { private DummyPinotClientTransport _dummyPinotClientTransport = new DummyPinotClientTransport(); private DummyPinotControllerTransport _dummyPinotControllerTransport = new DummyPinotControllerTransport(); - private PinotClientTransportFactory _previousTransportFactory = null; - @Test - public void testExecuteQuery() throws Exception { - PinotConnection connection = new PinotConnection("dummy", _dummyPinotClientTransport, "dummy" ,_dummyPinotControllerTransport); + public void testExecuteQuery() + throws Exception { + PinotConnection connection = + new PinotConnection("dummy", _dummyPinotClientTransport, "dummy", _dummyPinotControllerTransport); Statement statement = new PinotStatement(connection); ResultSet resultSet = statement.executeQuery("select * from dummy"); Assert.assertNotNull(resultSet); Assert.assertEquals(statement.getConnection(), connection); } - - @BeforeClass - public void overridePinotClientTransport() { - _previousTransportFactory = ConnectionFactory._transportFactory; - ConnectionFactory._transportFactory = new DummyPinotClientTransportFactory(_dummyPinotClientTransport); - } - - @AfterClass - public void resetPinotClientTransport() { - ConnectionFactory._transportFactory = _previousTransportFactory; - } } --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@pinot.apache.org For additional commands, e-mail: commits-h...@pinot.apache.org