Author: robbie
Date: Tue Mar 15 17:04:45 2011
New Revision: 1081857

URL: http://svn.apache.org/viewvc?rev=1081857&view=rev
Log:
QPID-3142: enable tests to run against a copy of an existing work directory

Modified:
    
qpid/branches/0.5.x-dev/qpid/java/common/src/main/java/org/apache/qpid/util/FileUtils.java
    qpid/branches/0.5.x-dev/qpid/java/module.xml
    
qpid/branches/0.5.x-dev/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/QpidTestCase.java

Modified: 
qpid/branches/0.5.x-dev/qpid/java/common/src/main/java/org/apache/qpid/util/FileUtils.java
URL: 
http://svn.apache.org/viewvc/qpid/branches/0.5.x-dev/qpid/java/common/src/main/java/org/apache/qpid/util/FileUtils.java?rev=1081857&r1=1081856&r2=1081857&view=diff
==============================================================================
--- 
qpid/branches/0.5.x-dev/qpid/java/common/src/main/java/org/apache/qpid/util/FileUtils.java
 (original)
+++ 
qpid/branches/0.5.x-dev/qpid/java/common/src/main/java/org/apache/qpid/util/FileUtils.java
 Tue Mar 15 17:04:45 2011
@@ -340,7 +340,7 @@ public class FileUtils
         }
 
         //else we have a source directory
-        if (!dst.isDirectory() && !dst.mkdir())
+        if (!dst.isDirectory() && !dst.mkdirs())
         {
             throw new UnableToCopyException("Unable to create destination 
directory");
         }

Modified: qpid/branches/0.5.x-dev/qpid/java/module.xml
URL: 
http://svn.apache.org/viewvc/qpid/branches/0.5.x-dev/qpid/java/module.xml?rev=1081857&r1=1081856&r2=1081857&view=diff
==============================================================================
--- qpid/branches/0.5.x-dev/qpid/java/module.xml (original)
+++ qpid/branches/0.5.x-dev/qpid/java/module.xml Tue Mar 15 17:04:45 2011
@@ -275,6 +275,8 @@
          <contains substring="${module.name}" string="${exclude.modules}" />
   </condition>
 
+  <property name="broker.existing.qpid.work" value=""/>
+
   <target name="test" depends="build,compile-tests" if="module.test.src.exists"
          unless="${dontruntest}" description="execute unit tests">
 
@@ -298,6 +300,7 @@
       <sysproperty key="broker" value="${broker}"/>
       <sysproperty key="broker.clean" value="${broker.clean}"/>
       <sysproperty key="broker.clean.between.tests" 
value="${broker.clean.between.tests}"/>
+      <sysproperty key="broker.existing.qpid.work" 
value="${broker.existing.qpid.work}"/>
       <sysproperty key="broker.persistent" value="${broker.persistent}"/>
       <sysproperty key="broker.version" value="${broker.version}"/>
       <sysproperty key="broker.ready" value="${broker.ready}" />

Modified: 
qpid/branches/0.5.x-dev/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/QpidTestCase.java
URL: 
http://svn.apache.org/viewvc/qpid/branches/0.5.x-dev/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/QpidTestCase.java?rev=1081857&r1=1081856&r2=1081857&view=diff
==============================================================================
--- 
qpid/branches/0.5.x-dev/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/QpidTestCase.java
 (original)
+++ 
qpid/branches/0.5.x-dev/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/QpidTestCase.java
 Tue Mar 15 17:04:45 2011
@@ -64,6 +64,7 @@ import org.apache.qpid.server.registry.A
 import org.apache.qpid.server.registry.ConfigurationFileApplicationRegistry;
 import org.apache.qpid.server.store.DerbyMessageStore;
 import org.apache.qpid.url.URLSyntaxException;
+import org.apache.qpid.util.FileUtils;
 import org.apache.qpid.util.LogMonitor;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -162,6 +163,7 @@ public class QpidTestCase extends TestCa
     private static final String BROKER = "broker";
     private static final String BROKER_CLEAN = "broker.clean";
     private static final String BROKER_CLEAN_BETWEEN_TESTS = 
"broker.clean.between.tests";
+    private static final String BROKER_EXISTING_QPID_WORK = 
"broker.existing.qpid.work";
     private static final String BROKER_VERSION = "broker.version";
     protected static final String BROKER_READY = "broker.ready";
     private static final String BROKER_STOPPED = "broker.stopped";
@@ -288,6 +290,19 @@ public class QpidTestCase extends TestCa
             fail("Unable to test without config file:" + _configFile);
         }
 
+        if(_brokerCleanBetweenTests)
+        {
+            cleanBroker();
+
+            String existingQpidWorkPath = 
System.getProperty(BROKER_EXISTING_QPID_WORK);
+            if(existingQpidWorkPath != null && 
!existingQpidWorkPath.equals(""))
+            {
+                File existing = new File(existingQpidWorkPath);
+                File qpidWork = new File(getQpidWork(_broker, getPort()));
+                FileUtils.copyRecursive(existing, qpidWork);
+            }
+        }
+
         startBroker();
     }
 
@@ -485,7 +500,7 @@ public class QpidTestCase extends TestCa
             // DON'T change PNAME, qpid.stop needs this value.
             env.put("QPID_PNAME", "-DPNAME=QPBRKR -DTNAME=\"" + _testName + 
"\"");
             // Add the port to QPID_WORK to ensure unique working dirs for 
multi broker tests
-            env.put("QPID_WORK", System.getProperty("QPID_WORK")+ "/" + port);
+            env.put("QPID_WORK", getQpidWork(_broker, port));
 
 
             // Use the environment variable to set amqj.logging.level for the 
broker
@@ -572,6 +587,20 @@ public class QpidTestCase extends TestCa
         _brokers.put(port, process);
     }
 
+    private String getQpidWork(String broker, int port)
+    {
+        if (broker.equals(VM))
+        {
+            return System.getProperty("QPID_WORK");
+        }
+        else if (!broker.equals(EXTERNAL))
+        {
+            return System.getProperty("QPID_WORK")+ "/" + port;
+        }
+
+        return System.getProperty("QPID_WORK");
+    }
+
     public String getTestConfigFile()
     {
         String path = _output == null ? System.getProperty("java.io.tmpdir") : 
_output;



---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:[email protected]

Reply via email to