killbill-aplcache

test: keep MySQL running when there are tests failures It

7/15/2012 6:40:24 PM

Details

diff --git a/util/src/test/java/com/ning/billing/dbi/MysqlTestingHelper.java b/util/src/test/java/com/ning/billing/dbi/MysqlTestingHelper.java
index a1b64f4..6cb1852 100644
--- a/util/src/test/java/com/ning/billing/dbi/MysqlTestingHelper.java
+++ b/util/src/test/java/com/ning/billing/dbi/MysqlTestingHelper.java
@@ -108,10 +108,14 @@ public class MysqlTestingHelper {
             throw new IllegalStateException("MySQL did not start.");
         } else {
             log.info("MySQL running on port " + mysqldResource.getPort());
-            log.info(String.format("To connect to it: mysql -u%s -p%s -P%s -S%s/mysql.sock %s", USERNAME, PASSWORD, port, dataDir, DB_NAME));
+            log.info("To connect to it: " + getConnectionString());
         }
     }
 
+    public String getConnectionString() {
+        return String.format("mysql -u%s -p%s -P%s -S%s/mysql.sock %s", USERNAME, PASSWORD, port, dataDir, DB_NAME);
+    }
+
     public void cleanupTable(final String table) {
 
         if (!isUsingLocalInstance() && (mysqldResource == null || !mysqldResource.isRunning())) {
diff --git a/util/src/test/java/com/ning/billing/KillbillTestSuite.java b/util/src/test/java/com/ning/billing/KillbillTestSuite.java
index 0d8edb2..9f6d924 100644
--- a/util/src/test/java/com/ning/billing/KillbillTestSuite.java
+++ b/util/src/test/java/com/ning/billing/KillbillTestSuite.java
@@ -25,8 +25,11 @@ import org.testng.annotations.AfterMethod;
 import org.testng.annotations.BeforeMethod;
 
 public class KillbillTestSuite {
+
     // Use the simple name here to save screen real estate
-    private static final Logger log = LoggerFactory.getLogger(KillbillTestSuite.class.getSimpleName());
+    protected static final Logger log = LoggerFactory.getLogger(KillbillTestSuite.class.getSimpleName());
+
+    private boolean hasFailed = false;
 
     @BeforeMethod(alwaysRun = true)
     public void startTestSuite(final Method method) throws Exception {
@@ -39,7 +42,15 @@ public class KillbillTestSuite {
     public void endTestSuite(final Method method, final ITestResult result) throws Exception {
         log.info("***************************************************************************************************");
         log.info("***   Ending test {}:{} {} ({} s.)", new Object[]{method.getDeclaringClass().getName(), method.getName(),
-                result.isSuccess() ? "SUCCESS" : "!!! FAILURE !!!", (result.getEndMillis() - result.getStartMillis()) / 1000});
+                                                                    result.isSuccess() ? "SUCCESS" : "!!! FAILURE !!!",
+                                                                    (result.getEndMillis() - result.getStartMillis()) / 1000});
         log.info("***************************************************************************************************");
+        if (!hasFailed && !result.isSuccess()) {
+            hasFailed = true;
+        }
+    }
+
+    public boolean hasFailed() {
+        return hasFailed;
     }
 }
diff --git a/util/src/test/java/com/ning/billing/KillbillTestSuiteWithEmbeddedDB.java b/util/src/test/java/com/ning/billing/KillbillTestSuiteWithEmbeddedDB.java
index 16eada2..9b409d8 100644
--- a/util/src/test/java/com/ning/billing/KillbillTestSuiteWithEmbeddedDB.java
+++ b/util/src/test/java/com/ning/billing/KillbillTestSuiteWithEmbeddedDB.java
@@ -50,6 +50,14 @@ public class KillbillTestSuiteWithEmbeddedDB extends KillbillTestSuite {
 
     @AfterSuite(groups = "slow")
     public void shutdownMysqlAfterTestSuite() throws IOException, ClassNotFoundException, SQLException, URISyntaxException {
+        if (hasFailed()) {
+            log.error("*************************************************************************************************");
+            log.error("*** TESTS HAVE FAILED - LEAVING MySQL RUNNING FOR DEBUGGING - MAKE SURE TO KILL IT ONCE DONE ****");
+            log.error(helper.getConnectionString());
+            log.error("*************************************************************************************************");
+            return;
+        }
+
         try {
             helper.stopMysql();
         } catch (Exception ignored) {