dml recovery added
diff --git a/asterix-app/src/test/java/edu/uci/ics/asterix/test/metadata/MetadataTest.java b/asterix-app/src/test/java/edu/uci/ics/asterix/test/metadata/MetadataTest.java
index 84c9b74..fbfaa84 100644
--- a/asterix-app/src/test/java/edu/uci/ics/asterix/test/metadata/MetadataTest.java
+++ b/asterix-app/src/test/java/edu/uci/ics/asterix/test/metadata/MetadataTest.java
@@ -105,7 +105,7 @@
@Test
public void test() throws Exception {
- TestsUtils.executeTest(PATH_ACTUAL, tcCtx, null);
+ TestsUtils.executeTest(PATH_ACTUAL, tcCtx, null, false);
}
}
diff --git a/asterix-app/src/test/java/edu/uci/ics/asterix/test/runtime/ExecutionTest.java b/asterix-app/src/test/java/edu/uci/ics/asterix/test/runtime/ExecutionTest.java
index c6025fd..13e374e 100644
--- a/asterix-app/src/test/java/edu/uci/ics/asterix/test/runtime/ExecutionTest.java
+++ b/asterix-app/src/test/java/edu/uci/ics/asterix/test/runtime/ExecutionTest.java
@@ -131,6 +131,6 @@
@Test
public void test() throws Exception {
- TestsUtils.executeTest(PATH_ACTUAL, tcCtx, null);
+ TestsUtils.executeTest(PATH_ACTUAL, tcCtx, null, false);
}
}
diff --git a/asterix-common/src/test/java/edu/uci/ics/asterix/test/aql/TestsUtils.java b/asterix-common/src/test/java/edu/uci/ics/asterix/test/aql/TestsUtils.java
index eda0c99..38807bf 100644
--- a/asterix-common/src/test/java/edu/uci/ics/asterix/test/aql/TestsUtils.java
+++ b/asterix-common/src/test/java/edu/uci/ics/asterix/test/aql/TestsUtils.java
@@ -357,7 +357,8 @@
return s.toString();
}
- public static void executeTest(String actualPath, TestCaseContext testCaseCtx, ProcessBuilder pb) throws Exception {
+ public static void executeTest(String actualPath, TestCaseContext testCaseCtx, ProcessBuilder pb,
+ boolean isDmlRecoveryTest) throws Exception {
File testFile;
File expectedResultFile;
@@ -383,10 +384,26 @@
TestsUtils.executeDDL(statement);
break;
case "update":
+
+ //isDmlRecoveryTest: set IP address
+ if (isDmlRecoveryTest && statement.contains("nc1://")) {
+ statement = statement
+ .replaceAll("nc1://", "127.0.0.1://../../../../../../asterix-app/");
+
+ }
+
TestsUtils.executeUpdate(statement);
break;
case "query":
try {
+ // isDmlRecoveryTest: insert Crash and Recovery
+ if (isDmlRecoveryTest) {
+ executeScript(pb, pb.environment().get("SCRIPT_HOME") + File.separator
+ + "dml_recovery" + File.separator + "kill_cc_and_nc.sh");
+ executeScript(pb, pb.environment().get("SCRIPT_HOME") + File.separator
+ + "dml_recovery" + File.separator + "stop_and_start.sh");
+ }
+
InputStream resultStream = executeQuery(statement);
expectedResultFile = expectedResultFileCtxs.get(queryCount).getFile();
diff --git a/asterix-installer/src/test/java/edu/uci/ics/asterix/installer/test/AsterixExternalLibraryIT.java b/asterix-installer/src/test/java/edu/uci/ics/asterix/installer/test/AsterixExternalLibraryIT.java
index a6be981..a1226c3 100644
--- a/asterix-installer/src/test/java/edu/uci/ics/asterix/installer/test/AsterixExternalLibraryIT.java
+++ b/asterix-installer/src/test/java/edu/uci/ics/asterix/installer/test/AsterixExternalLibraryIT.java
@@ -59,7 +59,7 @@
@Test
public void test() throws Exception {
for (TestCaseContext testCaseCtx : testCaseCollection) {
- TestsUtils.executeTest(PATH_ACTUAL, testCaseCtx, null);
+ TestsUtils.executeTest(PATH_ACTUAL, testCaseCtx, null, false);
}
}
diff --git a/asterix-installer/src/test/java/edu/uci/ics/asterix/installer/test/AsterixFaultToleranceIT.java b/asterix-installer/src/test/java/edu/uci/ics/asterix/installer/test/AsterixFaultToleranceIT.java
index 62b79f1..c532de5 100644
--- a/asterix-installer/src/test/java/edu/uci/ics/asterix/installer/test/AsterixFaultToleranceIT.java
+++ b/asterix-installer/src/test/java/edu/uci/ics/asterix/installer/test/AsterixFaultToleranceIT.java
@@ -63,7 +63,7 @@
@Test
public void test() throws Exception {
for (TestCaseContext testCaseCtx : testCaseCollection) {
- TestsUtils.executeTest(PATH_ACTUAL, testCaseCtx, null);
+ TestsUtils.executeTest(PATH_ACTUAL, testCaseCtx, null, false);
}
}
diff --git a/asterix-installer/src/test/java/edu/uci/ics/asterix/installer/test/AsterixLifecycleIT.java b/asterix-installer/src/test/java/edu/uci/ics/asterix/installer/test/AsterixLifecycleIT.java
index 2fd0146..d2dd016 100644
--- a/asterix-installer/src/test/java/edu/uci/ics/asterix/installer/test/AsterixLifecycleIT.java
+++ b/asterix-installer/src/test/java/edu/uci/ics/asterix/installer/test/AsterixLifecycleIT.java
@@ -121,7 +121,7 @@
@Test
public void test() throws Exception {
for (TestCaseContext testCaseCtx : testCaseCollection) {
- TestsUtils.executeTest(PATH_ACTUAL, testCaseCtx, null);
+ TestsUtils.executeTest(PATH_ACTUAL, testCaseCtx, null, false);
}
}
diff --git a/asterix-installer/src/test/java/edu/uci/ics/asterix/installer/transaction/DmlRecoveryIT.java b/asterix-installer/src/test/java/edu/uci/ics/asterix/installer/transaction/DmlRecoveryIT.java
new file mode 100644
index 0000000..dfb3f1e
--- /dev/null
+++ b/asterix-installer/src/test/java/edu/uci/ics/asterix/installer/transaction/DmlRecoveryIT.java
@@ -0,0 +1,117 @@
+package edu.uci.ics.asterix.installer.transaction;
+
+import java.io.File;
+import java.io.FilenameFilter;
+import java.io.InputStream;
+import java.io.PrintWriter;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+import java.util.logging.Logger;
+
+import org.apache.commons.io.FileUtils;
+import org.codehaus.jackson.map.JsonMappingException;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+import org.junit.runners.Parameterized.Parameters;
+
+import edu.uci.ics.asterix.test.aql.TestsUtils;
+import edu.uci.ics.asterix.testframework.context.TestCaseContext;
+import edu.uci.ics.asterix.testframework.context.TestFileContext;
+import edu.uci.ics.asterix.testframework.xml.TestCase.CompilationUnit;
+
+@RunWith(Parameterized.class)
+public class DmlRecoveryIT {
+
+ private static final Logger LOGGER = Logger.getLogger(RecoveryIT.class.getName());
+ private static final String PATH_ACTUAL = "rttest/";
+
+ private static final String TESTSUITE_PATH_BASE = "../asterix-app/src/test/resources/runtimets/";
+
+
+ private TestCaseContext tcCtx;
+ private static File asterixInstallerPath;
+ private static File asterixAppPath;
+ private static File asterixDBPath;
+ private static File installerTargetPath;
+ private static String managixHomeDirName;
+ private static String managixHomePath;
+ private static String scriptHomePath;
+ private static ProcessBuilder pb;
+ private static Map<String, String> env;
+
+ @BeforeClass
+ public static void setUp() throws Exception {
+ File outdir = new File(PATH_ACTUAL);
+ outdir.mkdirs();
+
+ asterixInstallerPath = new File(System.getProperty("user.dir"));
+ asterixDBPath = new File(asterixInstallerPath.getParent());
+ asterixAppPath = new File(asterixDBPath.getAbsolutePath() + File.separator + "asterix-app");
+ installerTargetPath = new File(asterixInstallerPath, "target");
+ managixHomeDirName = installerTargetPath.list(new FilenameFilter() {
+ @Override
+ public boolean accept(File dir, String name) {
+ return new File(dir, name).isDirectory() && name.startsWith("asterix-installer")
+ && name.endsWith("binary-assembly");
+ }
+ })[0];
+ managixHomePath = new File(installerTargetPath, managixHomeDirName).getAbsolutePath();
+ LOGGER.info("MANAGIX_HOME=" + managixHomePath);
+
+ pb = new ProcessBuilder();
+ env = pb.environment();
+ env.put("MANAGIX_HOME", managixHomePath);
+ scriptHomePath = asterixInstallerPath + File.separator + "src" + File.separator + "test" + File.separator
+ + "resources" + File.separator + "transactionts" + File.separator + "scripts";
+ env.put("SCRIPT_HOME", scriptHomePath);
+
+ TestsUtils.executeScript(pb, scriptHomePath + File.separator + "dml_recovery" + File.separator
+ + "configure_and_validate.sh");
+ TestsUtils.executeScript(pb, scriptHomePath + File.separator + "dml_recovery" + File.separator
+ + "stop_and_delete.sh");
+
+ TestsUtils.executeScript(pb, scriptHomePath + File.separator + "dml_recovery" + File.separator
+ + "create_and_start.sh");
+
+ }
+
+ @AfterClass
+ public static void tearDown() throws Exception {
+ File outdir = new File(PATH_ACTUAL);
+ FileUtils.deleteDirectory(outdir);
+ File dataCopyDir = new File(managixHomePath + File.separator + ".." + File.separator + ".." + File.separator
+ + "data");
+ FileUtils.deleteDirectory(dataCopyDir);
+ TestsUtils.executeScript(pb, scriptHomePath + File.separator + "dml_recovery" + File.separator
+ + "stop_and_delete.sh");
+ TestsUtils.executeScript(pb, scriptHomePath + File.separator + "dml_recovery" + File.separator + "shutdown.sh");
+
+ }
+
+ @Parameters
+ public static Collection<Object[]> tests() throws Exception {
+ Collection<Object[]> testArgs = new ArrayList<Object[]>();
+ TestCaseContext.Builder b = new TestCaseContext.Builder();
+ for (TestCaseContext ctx : b.build(new File(TESTSUITE_PATH_BASE))) {
+ if (ctx.getTestCase().getFilePath().equals("dml"))
+ testArgs.add(new Object[] { ctx });
+ }
+ return testArgs;
+ }
+
+ public DmlRecoveryIT(TestCaseContext tcCtx) {
+ this.tcCtx = tcCtx;
+ }
+
+ @Test
+ public void test() throws Exception {
+
+ TestsUtils.executeTest(PATH_ACTUAL, tcCtx, pb, true);
+
+ }
+}
diff --git a/asterix-installer/src/test/java/edu/uci/ics/asterix/installer/transaction/RecoveryIT.java b/asterix-installer/src/test/java/edu/uci/ics/asterix/installer/transaction/RecoveryIT.java
index 39bd0a2..44ca366 100644
--- a/asterix-installer/src/test/java/edu/uci/ics/asterix/installer/transaction/RecoveryIT.java
+++ b/asterix-installer/src/test/java/edu/uci/ics/asterix/installer/transaction/RecoveryIT.java
@@ -114,7 +114,7 @@
@Test
public void test() throws Exception {
- TestsUtils.executeTest(PATH_ACTUAL, tcCtx, pb);
+ TestsUtils.executeTest(PATH_ACTUAL, tcCtx, pb, false);
}
}
diff --git a/asterix-installer/src/test/resources/transactionts/scripts/dml_recovery/configure_and_validate.sh b/asterix-installer/src/test/resources/transactionts/scripts/dml_recovery/configure_and_validate.sh
new file mode 100755
index 0000000..643e9ad
--- /dev/null
+++ b/asterix-installer/src/test/resources/transactionts/scripts/dml_recovery/configure_and_validate.sh
@@ -0,0 +1,3 @@
+$MANAGIX_HOME/bin/managix configure;
+$MANAGIX_HOME/bin/managix validate;
+$MANAGIX_HOME/bin/managix validate -c $MANAGIX_HOME/clusters/local/local.xml;
\ No newline at end of file
diff --git a/asterix-installer/src/test/resources/transactionts/scripts/dml_recovery/create_and_start.sh b/asterix-installer/src/test/resources/transactionts/scripts/dml_recovery/create_and_start.sh
new file mode 100755
index 0000000..945f01d
--- /dev/null
+++ b/asterix-installer/src/test/resources/transactionts/scripts/dml_recovery/create_and_start.sh
@@ -0,0 +1 @@
+$MANAGIX_HOME/bin/managix create -n nc1 -c $MANAGIX_HOME/clusters/local/local.xml;
diff --git a/asterix-installer/src/test/resources/transactionts/scripts/dml_recovery/kill_cc_and_nc.sh b/asterix-installer/src/test/resources/transactionts/scripts/dml_recovery/kill_cc_and_nc.sh
new file mode 100755
index 0000000..096d7df
--- /dev/null
+++ b/asterix-installer/src/test/resources/transactionts/scripts/dml_recovery/kill_cc_and_nc.sh
@@ -0,0 +1 @@
+jps | awk '{if ($2 == "NCDriver" || $2 == "CCDriver") print $1;}' | xargs -n 1 kill -9
diff --git a/asterix-installer/src/test/resources/transactionts/scripts/dml_recovery/shutdown.sh b/asterix-installer/src/test/resources/transactionts/scripts/dml_recovery/shutdown.sh
new file mode 100755
index 0000000..4df5a05
--- /dev/null
+++ b/asterix-installer/src/test/resources/transactionts/scripts/dml_recovery/shutdown.sh
@@ -0,0 +1 @@
+$MANAGIX_HOME/bin/managix shutdown;
diff --git a/asterix-installer/src/test/resources/transactionts/scripts/dml_recovery/stop_and_delete.sh b/asterix-installer/src/test/resources/transactionts/scripts/dml_recovery/stop_and_delete.sh
new file mode 100755
index 0000000..d7deea3
--- /dev/null
+++ b/asterix-installer/src/test/resources/transactionts/scripts/dml_recovery/stop_and_delete.sh
@@ -0,0 +1,3 @@
+$MANAGIX_HOME/bin/managix stop -n nc1;
+$MANAGIX_HOME/bin/managix delete -n nc1;
+
diff --git a/asterix-installer/src/test/resources/transactionts/scripts/dml_recovery/stop_and_start.sh b/asterix-installer/src/test/resources/transactionts/scripts/dml_recovery/stop_and_start.sh
new file mode 100755
index 0000000..7855938
--- /dev/null
+++ b/asterix-installer/src/test/resources/transactionts/scripts/dml_recovery/stop_and_start.sh
@@ -0,0 +1,3 @@
+$MANAGIX_HOME/bin/managix stop -n nc1;
+$MANAGIX_HOME/bin/managix start -n nc1;
+