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;
     }

Reply via email to