Repository: phoenix Updated Branches: refs/heads/master 2faeda4a7 -> 05971c0ca
Attempting to make unit tests more resilient Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/05971c0c Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/05971c0c Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/05971c0c Branch: refs/heads/master Commit: 05971c0cac245ff4700959c51c5fc5d3a5fbe6d9 Parents: 2faeda4 Author: James Taylor <jtay...@salesforce.com> Authored: Tue Oct 7 10:59:46 2014 -0700 Committer: James Taylor <jtay...@salesforce.com> Committed: Tue Oct 7 10:59:46 2014 -0700 ---------------------------------------------------------------------- .../end2end/index/MutableIndexFailureIT.java | 13 +++++--- .../index/MutableIndexReplicationIT.java | 17 ++-------- .../phoenix/jdbc/PhoenixEmbeddedDriver.java | 21 ++++++------ .../java/org/apache/phoenix/query/BaseTest.java | 34 ++++++++++++-------- 4 files changed, 41 insertions(+), 44 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/phoenix/blob/05971c0c/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/MutableIndexFailureIT.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/MutableIndexFailureIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/MutableIndexFailureIT.java index 6137e06..acece20 100644 --- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/MutableIndexFailureIT.java +++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/MutableIndexFailureIT.java @@ -116,14 +116,17 @@ public class MutableIndexFailureIT extends BaseTest { @After public void tearDown() throws Exception { - if(scheduleTimer != null){ - scheduleTimer.cancel(); - scheduleTimer = null; - } try { destroyDriver(driver); } finally { - util.shutdownMiniCluster(); + try { + if(scheduleTimer != null){ + scheduleTimer.cancel(); + scheduleTimer = null; + } + } finally { + util.shutdownMiniCluster(); + } } } http://git-wip-us.apache.org/repos/asf/phoenix/blob/05971c0c/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/MutableIndexReplicationIT.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/MutableIndexReplicationIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/MutableIndexReplicationIT.java index ca59df8..15465d1 100644 --- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/MutableIndexReplicationIT.java +++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/MutableIndexReplicationIT.java @@ -52,7 +52,6 @@ import org.apache.hadoop.hbase.util.Bytes; import org.apache.hadoop.hbase.zookeeper.MiniZooKeeperCluster; import org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher; import org.apache.phoenix.end2end.NeedsOwnMiniClusterTest; -import org.apache.phoenix.jdbc.PhoenixEmbeddedDriver; import org.apache.phoenix.jdbc.PhoenixTestDriver; import org.apache.phoenix.query.BaseTest; import org.apache.phoenix.query.QueryServices; @@ -112,7 +111,7 @@ public class MutableIndexReplicationIT extends BaseTest { @AfterClass public static void tearDownAfterClass() throws Exception { try { - destroyDriver(); + destroyDriver(driver); } finally { try { utility2.shutdownMiniCluster(); @@ -127,6 +126,7 @@ public class MutableIndexReplicationIT extends BaseTest { // lookups // conf1.set(HConstants.ZOOKEEPER_ZNODE_PARENT, "/1"); // smaller log roll size to trigger more events + setUpConfigForMiniCluster(conf1); conf1.setFloat("hbase.regionserver.logroll.multiplier", 0.0003f); conf1.setInt("replication.source.size.capacity", 10240); conf1.setLong("replication.source.sleepforretries", 100); @@ -140,9 +140,6 @@ public class MutableIndexReplicationIT extends BaseTest { conf1.setInt("replication.stats.thread.period.seconds", 5); conf1.setBoolean("hbase.tests.use.shortcircuit.reads", false); - // add the phoenix-specific configs - BaseTest.setUpConfigForMiniCluster(conf1); - utility1 = new HBaseTestingUtility(conf1); utility1.startMiniZKCluster(); MiniZooKeeperCluster miniZK = utility1.getZkCluster(); @@ -182,15 +179,7 @@ public class MutableIndexReplicationIT extends BaseTest { // Must update config before starting server URL = getLocalClusterUrl(utility1); LOG.info("Connecting driver to "+URL); - setUpTestDriver(URL, new ReadOnlyProps(props.entrySet().iterator())); - } - - protected static void setUpTestDriver(String url, ReadOnlyProps props) throws Exception { - if (PhoenixEmbeddedDriver.isTestUrl(url)) { - if (driver == null) { - driver = initAndRegisterDriver(url, props); - } - } + driver = initAndRegisterDriver(URL, new ReadOnlyProps(props.entrySet().iterator())); } @Test http://git-wip-us.apache.org/repos/asf/phoenix/blob/05971c0c/phoenix-core/src/main/java/org/apache/phoenix/jdbc/PhoenixEmbeddedDriver.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/jdbc/PhoenixEmbeddedDriver.java b/phoenix-core/src/main/java/org/apache/phoenix/jdbc/PhoenixEmbeddedDriver.java index c706486..ff25fae 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/jdbc/PhoenixEmbeddedDriver.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/jdbc/PhoenixEmbeddedDriver.java @@ -41,6 +41,7 @@ import org.apache.phoenix.util.PropertiesUtil; import org.apache.phoenix.util.ReadOnlyProps; import org.apache.phoenix.util.SQLCloseable; +import com.google.common.collect.ImmutableMap; import com.google.common.collect.Maps; @@ -58,6 +59,7 @@ public abstract class PhoenixEmbeddedDriver implements Driver, org.apache.phoeni * The protocol for Phoenix Network Client */ private final static String DNC_JDBC_PROTOCOL_SUFFIX = "//"; + private final static String DRIVER_NAME = "PhoenixEmbeddedDriver"; private static final String TERMINATOR = "" + PhoenixRuntime.JDBC_PROTOCOL_TERMINATOR; private static final String DELIMITERS = TERMINATOR + PhoenixRuntime.JDBC_PROTOCOL_SEPARATOR; private static final String TEST_URL_AT_END = "" + PhoenixRuntime.JDBC_PROTOCOL_TERMINATOR + PHOENIX_TEST_DRIVER_URL_PARAM; @@ -68,22 +70,17 @@ public abstract class PhoenixEmbeddedDriver implements Driver, org.apache.phoeni public final static String MINOR_VERSION_PROP = "DriverMinorVersion"; public final static String DRIVER_NAME_PROP = "DriverName"; - private final ReadOnlyProps defaultProps; + public static final ReadOnlyProps DEFFAULT_PROPS = new ReadOnlyProps( + ImmutableMap.of( + MAJOR_VERSION_PROP, Integer.toString(MetaDataProtocol.PHOENIX_MAJOR_VERSION), + MINOR_VERSION_PROP, Integer.toString(MetaDataProtocol.PHOENIX_MINOR_VERSION), + DRIVER_NAME_PROP, DRIVER_NAME)); PhoenixEmbeddedDriver() { - Map<String, String> defaultPropsMap = Maps.newHashMapWithExpectedSize(3); - defaultPropsMap.put(MAJOR_VERSION_PROP, Integer.toString(getMajorVersion())); - defaultPropsMap.put(MINOR_VERSION_PROP, Integer.toString(getMinorVersion())); - defaultPropsMap.put(DRIVER_NAME_PROP, getDriverName()); - defaultProps = new ReadOnlyProps(defaultPropsMap); } protected ReadOnlyProps getDefaultProps() { - return defaultProps; - } - - private String getDriverName() { - return this.getClass().getName(); + return DEFFAULT_PROPS; } abstract public QueryServices getQueryServices(); @@ -125,7 +122,7 @@ public abstract class PhoenixEmbeddedDriver implements Driver, org.apache.phoeni } Properties augmentedInfo = PropertiesUtil.deepCopy(info); - augmentedInfo.putAll(defaultProps.asMap()); + augmentedInfo.putAll(getDefaultProps().asMap()); ConnectionQueryServices connectionServices = getConnectionQueryServices(url, augmentedInfo); PhoenixConnection connection = connectionServices.connect(url, augmentedInfo); return connection; http://git-wip-us.apache.org/repos/asf/phoenix/blob/05971c0c/phoenix-core/src/test/java/org/apache/phoenix/query/BaseTest.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/test/java/org/apache/phoenix/query/BaseTest.java b/phoenix-core/src/test/java/org/apache/phoenix/query/BaseTest.java index 7bdab7b..cdda1f1 100644 --- a/phoenix-core/src/test/java/org/apache/phoenix/query/BaseTest.java +++ b/phoenix-core/src/test/java/org/apache/phoenix/query/BaseTest.java @@ -90,6 +90,7 @@ import java.math.BigDecimal; import java.sql.Connection; import java.sql.DatabaseMetaData; import java.sql.Date; +import java.sql.Driver; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; @@ -102,8 +103,6 @@ import java.util.Map; import java.util.Map.Entry; import java.util.Properties; import java.util.Set; -import java.util.logging.Level; -import java.util.logging.Logger; import javax.annotation.Nonnull; @@ -120,6 +119,7 @@ import org.apache.hadoop.hbase.util.Bytes; import org.apache.phoenix.end2end.BaseClientManagedTimeIT; import org.apache.phoenix.end2end.BaseHBaseManagedTimeIT; import org.apache.phoenix.jdbc.PhoenixDatabaseMetaData; +import org.apache.phoenix.jdbc.PhoenixEmbeddedDriver; import org.apache.phoenix.jdbc.PhoenixTestDriver; import org.apache.phoenix.schema.NewerTableAlreadyExistsException; import org.apache.phoenix.schema.PTableType; @@ -131,7 +131,8 @@ import org.apache.phoenix.util.PropertiesUtil; import org.apache.phoenix.util.QueryUtil; import org.apache.phoenix.util.ReadOnlyProps; import org.apache.phoenix.util.SchemaUtil; -import org.junit.Assert; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import com.google.common.collect.ImmutableMap; import com.google.common.collect.Lists; @@ -153,7 +154,7 @@ import com.google.common.collect.Sets; */ public abstract class BaseTest { private static final Map<String,String> tableDDLMap; - private static Logger logger = Logger.getLogger("BaseTest.class"); + private static final Logger logger = LoggerFactory.getLogger(BaseTest.class); static { ImmutableMap.Builder<String,String> builder = ImmutableMap.builder(); @@ -554,7 +555,7 @@ public abstract class BaseTest { try { utility.shutdownMiniCluster(); } catch (Exception e) { - logger.log(Level.WARNING, "Exception caught when shutting down mini cluster: " + e.getMessage()); + logger.warn("Exception caught when shutting down mini cluster", e); } } }); @@ -641,25 +642,32 @@ public abstract class BaseTest { * @return an initialized and registered {@link PhoenixTestDriver} */ protected static PhoenixTestDriver initAndRegisterDriver(String url, ReadOnlyProps props) throws Exception { - PhoenixTestDriver driver = new PhoenixTestDriver(props); - DriverManager.registerDriver(driver); - Assert.assertTrue(DriverManager.getDriver(url) == driver); - Connection conn = driver.connect(url, PropertiesUtil.deepCopy(TEST_PROPERTIES)); + PhoenixTestDriver newDriver = new PhoenixTestDriver(props); + DriverManager.registerDriver(newDriver); + Driver oldDriver = DriverManager.getDriver(url); + if (oldDriver != newDriver) { + destroyDriver(oldDriver); + } + Connection conn = newDriver.connect(url, PropertiesUtil.deepCopy(TEST_PROPERTIES)); conn.close(); - return driver; + return newDriver; } //Close and unregister the driver. - protected static boolean destroyDriver(PhoenixTestDriver driver) { + protected static boolean destroyDriver(Driver driver) { if (driver != null) { + assert(driver instanceof PhoenixEmbeddedDriver); + PhoenixEmbeddedDriver pdriver = (PhoenixEmbeddedDriver)driver; try { try { - driver.close(); + pdriver.close(); return true; } finally { DriverManager.deregisterDriver(driver); } - } catch (Exception ignored) {} + } catch (Exception e) { + logger.warn("Unable to close registered driver: " + driver, e); + } } return false; }