diff --git a/asterix-installer/pom.xml b/asterix-installer/pom.xml
index 373503d1..fcf0e87 100644
--- a/asterix-installer/pom.xml
+++ b/asterix-installer/pom.xml
@@ -17,6 +17,7 @@
 	<artifactId>asterix-installer</artifactId>
 	<properties>
 		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+		<test.excludes>**/DmlRecoveryIT.java</test.excludes>
 	</properties>
 
 	<build>
@@ -106,6 +107,9 @@
 				<configuration>
 					<runOrder>alphabetical</runOrder>
 					<forkMode>pertest</forkMode>
+					<excludes>
+						<exclude>${test.excludes}</exclude>
+					</excludes>
 				</configuration>
 				<executions>
 					<execution>
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
index 9caf48c..ee41ddb 100644
--- 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
@@ -28,7 +28,6 @@
 public class DmlRecoveryIT {
 
     // variable to indicate whether this test will be executed
-    private static final boolean IS_DML_RECOVERY_TEST_ON = false;
 
     private static final Logger LOGGER = Logger.getLogger(RecoveryIT.class.getName());
     private static final String PATH_ACTUAL = "rttest/";
@@ -96,12 +95,10 @@
     public static Collection<Object[]> tests() throws Exception {
 
         Collection<Object[]> testArgs = new ArrayList<Object[]>();
-        if (IS_DML_RECOVERY_TEST_ON) {
-            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 });
-            }
+        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;
     }
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 730b9b0..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
@@ -38,8 +38,6 @@
 
 @RunWith(Parameterized.class)
 public class RecoveryIT {
-    // indicate wheth Recovery_DDL will be executed
-    private static final boolean IS_RECOVERY_DDL_TEST_ON = false;
 
     private static final Logger LOGGER = Logger.getLogger(RecoveryIT.class.getName());
     private static final String PATH_ACTUAL = "rttest/";
@@ -105,10 +103,6 @@
         Collection<Object[]> testArgs = new ArrayList<Object[]>();
         TestCaseContext.Builder b = new TestCaseContext.Builder();
         for (TestCaseContext ctx : b.build(new File(PATH_BASE))) {
-            
-            if (!IS_RECOVERY_DDL_TEST_ON && ctx.getTestCase().getFilePath().contains("recovery_ddl"))
-                continue;
-            
             testArgs.add(new Object[] { ctx });
         }
         return testArgs;
diff --git a/asterix-installer/src/test/resources/transactionts/testsuite.xml b/asterix-installer/src/test/resources/transactionts/testsuite.xml
index 15db39b..f2bd2b5 100644
--- a/asterix-installer/src/test/resources/transactionts/testsuite.xml
+++ b/asterix-installer/src/test/resources/transactionts/testsuite.xml
@@ -85,7 +85,7 @@
         <output-dir compare="Text">load_after_recovery</output-dir>
       </compilation-unit>
     </test-case>
-<!--
+    
     <test-case FilePath="recovery_ddl">
       <compilation-unit name="insert_after_recovery">
         <output-dir compare="Text">insert_after_recovery</output-dir>
@@ -97,7 +97,7 @@
         <output-dir compare="Text">delete_after_recovery</output-dir>
       </compilation-unit>
     </test-case>
--->
+    
     <test-case FilePath="recovery_ddl">
       <compilation-unit name="function_recovery">
         <output-dir compare="Text">function_recovery</output-dir>
