Repository: phoenix Updated Branches: refs/heads/4.x-HBase-0.98 d1d3ffc02 -> 7e979038b
PHOENIX-1915 QueryServerBasicsIT should bind QS instance to random port Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/7e979038 Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/7e979038 Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/7e979038 Branch: refs/heads/4.x-HBase-0.98 Commit: 7e979038b7872e2e8ba76b2c426eba073d68dc0a Parents: d1d3ffc Author: Nick Dimiduk <[email protected]> Authored: Fri Apr 24 12:39:29 2015 -0700 Committer: Nick Dimiduk <[email protected]> Committed: Fri Apr 24 14:41:45 2015 -0700 ---------------------------------------------------------------------- .../phoenix/end2end/QueryServerBasicsIT.java | 23 ++++--- .../src/it/resources/log4j.properties | 63 ++++++++++++++++++++ .../apache/phoenix/queryserver/server/Main.java | 12 ++-- 3 files changed, 85 insertions(+), 13 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/phoenix/blob/7e979038/phoenix-server/src/it/java/org/apache/phoenix/end2end/QueryServerBasicsIT.java ---------------------------------------------------------------------- diff --git a/phoenix-server/src/it/java/org/apache/phoenix/end2end/QueryServerBasicsIT.java b/phoenix-server/src/it/java/org/apache/phoenix/end2end/QueryServerBasicsIT.java index c3b6115..3b18c4e 100644 --- a/phoenix-server/src/it/java/org/apache/phoenix/end2end/QueryServerBasicsIT.java +++ b/phoenix-server/src/it/java/org/apache/phoenix/end2end/QueryServerBasicsIT.java @@ -19,7 +19,9 @@ package org.apache.phoenix.end2end; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.apache.hadoop.conf.Configuration; import org.apache.phoenix.queryserver.client.ThinClientUtil; +import org.apache.phoenix.queryserver.server.Main; import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Test; @@ -49,16 +51,19 @@ public class QueryServerBasicsIT extends BaseHBaseManagedTimeIT { private static final Log LOG = LogFactory.getLog(QueryServerBasicsIT.class); private static QueryServerThread AVATICA_SERVER; + private static Configuration CONF; private static String CONN_STRING; @BeforeClass public static void beforeClass() throws Exception { + CONF = getTestClusterConfig(); + CONF.setInt(Main.QUERY_SERVER_HTTP_PORT_KEY, 0); String url = getUrl(); - AVATICA_SERVER = new QueryServerThread(new String[] { url }, getTestClusterConfig(), - QueryServerBasicsIT.class.getName()); + AVATICA_SERVER = new QueryServerThread(new String[] { url }, CONF, + QueryServerBasicsIT.class.getName()); AVATICA_SERVER.start(); - final int port = AVATICA_SERVER.getMain().getPort(); AVATICA_SERVER.getMain().awaitRunning(); + final int port = AVATICA_SERVER.getMain().getPort(); LOG.info("Avatica server started on port " + port); CONN_STRING = ThinClientUtil.getConnectionUrl("localhost", port); LOG.info("JDBC connection string is " + CONN_STRING); @@ -110,18 +115,20 @@ public class QueryServerBasicsIT extends BaseHBaseManagedTimeIT { @Test public void smokeTest() throws Exception { + final String tableName = getClass().getSimpleName().toUpperCase() + System.currentTimeMillis(); try (final Connection connection = DriverManager.getConnection(CONN_STRING)) { assertThat(connection.isClosed(), is(false)); connection.setAutoCommit(true); try (final Statement stmt = connection.createStatement()) { - assertFalse(stmt.execute("CREATE TABLE TEST_TABLE(" + assertFalse(stmt.execute("DROP TABLE IF EXISTS " + tableName)); + assertFalse(stmt.execute("CREATE TABLE " + tableName + "(" + "id INTEGER NOT NULL, " + "pk varchar(3) NOT NULL " + "CONSTRAINT PK_CONSTRAINT PRIMARY KEY (id, pk))")); assertEquals(0, stmt.getUpdateCount()); - assertEquals(1, stmt.executeUpdate("UPSERT INTO TEST_TABLE VALUES(1, 'foo')")); - assertEquals(1, stmt.executeUpdate("UPSERT INTO TEST_TABLE VALUES(2, 'bar')")); - assertTrue(stmt.execute("SELECT * FROM TEST_TABLE")); + assertEquals(1, stmt.executeUpdate("UPSERT INTO " + tableName + " VALUES(1, 'foo')")); + assertEquals(1, stmt.executeUpdate("UPSERT INTO " + tableName + " VALUES(2, 'bar')")); + assertTrue(stmt.execute("SELECT * FROM " + tableName)); try (final ResultSet resultSet = stmt.getResultSet()) { assertTrue(resultSet.next()); assertEquals(1, resultSet.getInt(1)); @@ -131,7 +138,7 @@ public class QueryServerBasicsIT extends BaseHBaseManagedTimeIT { assertEquals("bar", resultSet.getString(2)); } } - final String sql = "SELECT * FROM TEST_TABLE WHERE id = ?"; + final String sql = "SELECT * FROM " + tableName + " WHERE id = ?"; try (final PreparedStatement stmt = connection.prepareStatement(sql)) { stmt.setInt(1, 1); try (ResultSet resultSet = stmt.executeQuery()) { http://git-wip-us.apache.org/repos/asf/phoenix/blob/7e979038/phoenix-server/src/it/resources/log4j.properties ---------------------------------------------------------------------- diff --git a/phoenix-server/src/it/resources/log4j.properties b/phoenix-server/src/it/resources/log4j.properties new file mode 100644 index 0000000..6b1ce50 --- /dev/null +++ b/phoenix-server/src/it/resources/log4j.properties @@ -0,0 +1,63 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Define some default values that can be overridden by system properties +hbase.root.logger=DEBUG,console +hbase.log.dir=. +hbase.log.file=hbase.log + +# Define the root logger to the system property "hbase.root.logger". +log4j.rootLogger=${hbase.root.logger} + +# Logging Threshold +log4j.threshhold=ALL + +# +# Daily Rolling File Appender +# +log4j.appender.DRFA=org.apache.log4j.DailyRollingFileAppender +log4j.appender.DRFA.File=${hbase.log.dir}/${hbase.log.file} + +# Rollver at midnight +log4j.appender.DRFA.DatePattern=.yyyy-MM-dd + +# 30-day backup +#log4j.appender.DRFA.MaxBackupIndex=30 +log4j.appender.DRFA.layout=org.apache.log4j.PatternLayout + +# Pattern format: Date LogLevel LoggerName LogMessage +#log4j.appender.DRFA.layout.ConversionPattern=%d{ISO8601} %p %c: %m%n + +# Debugging Pattern format +log4j.appender.DRFA.layout.ConversionPattern=%d %-5p [%t] %C{2}(%L): %m%n + + +# +# console +# Add "console" to rootlogger above if you want to use this +# +log4j.appender.console=org.apache.log4j.ConsoleAppender +log4j.appender.console.target=System.err +log4j.appender.console.layout=org.apache.log4j.PatternLayout +log4j.appender.console.layout.ConversionPattern=%d %-5p [%t] %C{2}(%L): %m%n + +# Custom Logging levels + +#log4j.logger.org.apache.hadoop.fs.FSNamesystem=DEBUG + +log4j.logger.org.apache.hadoop=WARN +log4j.logger.org.apache.zookeeper=ERROR +log4j.logger.org.apache.hadoop.hbase=DEBUG http://git-wip-us.apache.org/repos/asf/phoenix/blob/7e979038/phoenix-server/src/main/java/org/apache/phoenix/queryserver/server/Main.java ---------------------------------------------------------------------- diff --git a/phoenix-server/src/main/java/org/apache/phoenix/queryserver/server/Main.java b/phoenix-server/src/main/java/org/apache/phoenix/queryserver/server/Main.java index 52529d5..b099f91 100644 --- a/phoenix-server/src/main/java/org/apache/phoenix/queryserver/server/Main.java +++ b/phoenix-server/src/main/java/org/apache/phoenix/queryserver/server/Main.java @@ -60,7 +60,7 @@ public final class Main extends Configured implements Tool, Runnable { private final String[] argv; private final CountDownLatch runningLatch = new CountDownLatch(1); - private int port = DEFAULT_HTTP_PORT; + private HttpServer server = null; private int retCode = 0; private Throwable t = null; @@ -76,11 +76,12 @@ public final class Main extends Configured implements Tool, Runnable { } /** - * @return the port number this instance is bound to. + * @return the port number this instance is bound to, or {@code -1} if the server is not running. */ @VisibleForTesting public int getPort() { - return port; + if (server == null) return -1; + return server.getPort(); } /** @@ -126,12 +127,13 @@ public final class Main extends Configured implements Tool, Runnable { } Class<? extends PhoenixMetaFactory> factoryClass = getConf().getClass( QUERY_SERVER_META_FACTORY_KEY, PhoenixMetaFactoryImpl.class, PhoenixMetaFactory.class); - port = getConf().getInt(QUERY_SERVER_HTTP_PORT_KEY, DEFAULT_HTTP_PORT); + int port = getConf().getInt(QUERY_SERVER_HTTP_PORT_KEY, DEFAULT_HTTP_PORT); + LOG.debug("Listening on port " + port); PhoenixMetaFactory factory = factoryClass.getDeclaredConstructor(Configuration.class).newInstance(getConf()); Meta meta = factory.create(Arrays.asList(args)); Service service = new LocalService(meta); - HttpServer server = new HttpServer(port, new AvaticaHandler(service)); + server = new HttpServer(port, new AvaticaHandler(service)); server.start(); runningLatch.countDown(); server.join();
