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) {