Author: aconway
Date: Wed Apr 15 21:21:47 2009
New Revision: 765365

URL: http://svn.apache.org/viewvc?rev=765365&view=rev
Log:
Clean up temporary data directories in tests.

ForkedBroker.cpp: create/delete tmp data directory if passed arg TMP_DATA_DIR.
failover_soak.cpp, PartialFailure.cpp: use tmp data dir feature of ForkedBroker

Modified:
    qpid/trunk/qpid/cpp/src/tests/ForkedBroker.cpp
    qpid/trunk/qpid/cpp/src/tests/ForkedBroker.h
    qpid/trunk/qpid/cpp/src/tests/PartialFailure.cpp
    qpid/trunk/qpid/cpp/src/tests/failover_soak.cpp

Modified: qpid/trunk/qpid/cpp/src/tests/ForkedBroker.cpp
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/tests/ForkedBroker.cpp?rev=765365&r1=765364&r2=765365&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/tests/ForkedBroker.cpp (original)
+++ qpid/trunk/qpid/cpp/src/tests/ForkedBroker.cpp Wed Apr 15 21:21:47 2009
@@ -31,14 +31,28 @@
 using namespace std;
 using qpid::ErrnoException;
 
-ForkedBroker::ForkedBroker(const Args& args) { init(args); }
-
-ForkedBroker::ForkedBroker(int argc, const char* const argv[]) { 
init(Args(argv, argc+argv)); }
+ForkedBroker::ForkedBroker(const Args& constArgs) {
+    Args args(constArgs);
+    Args::iterator i = find(args.begin(), args.end(), string("TMP_DATA_DIR"));
+    if (i != args.end()) {
+        args.erase(i);
+        char dd[] = "/tmp/ForkedBroker.XXXXXX";
+        if (!mkdtemp(dd))
+            throw qpid::ErrnoException("Can't create data dir");
+        dataDir = dd;
+        args.push_back("--data-dir");
+        args.push_back(dataDir);
+    }
+    init(args);
+}
 
 ForkedBroker::~ForkedBroker() {
-    try { kill(); } catch(const std::exception& e) {
+    try { kill(); }
+    catch (const std::exception& e) {
         QPID_LOG(error, QPID_MSG("Killing forked broker: " << e.what()));
     }
+    if (!dataDir.empty()) 
+        ::system(("rm -rf "+dataDir).c_str());
 }
 
 void ForkedBroker::kill(int sig) {

Modified: qpid/trunk/qpid/cpp/src/tests/ForkedBroker.h
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/tests/ForkedBroker.h?rev=765365&r1=765364&r2=765365&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/tests/ForkedBroker.h (original)
+++ qpid/trunk/qpid/cpp/src/tests/ForkedBroker.h Wed Apr 15 21:21:47 2009
@@ -48,8 +48,12 @@
   public:
     typedef std::vector<std::string> Args;
 
+    // argv args are passed to broker.
+    // 
+    // Special value "TMP_DATA_DIR" is substituted with a temporary
+    // data directory for the broker.
+    // 
     ForkedBroker(const Args& argv);
-    ForkedBroker(int argc, const char* const argv[]);
     ~ForkedBroker();
 
     void kill(int sig=SIGINT);
@@ -58,10 +62,12 @@
     pid_t getPID() { return pid; }
 
   private:
+
     void init(const Args& args);
 
     pid_t pid;
     int port;
+    std::string dataDir;
 };
 
 #endif  /*!TESTS_FORKEDBROKER_H*/

Modified: qpid/trunk/qpid/cpp/src/tests/PartialFailure.cpp
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/tests/PartialFailure.cpp?rev=765365&r1=765364&r2=765365&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/tests/PartialFailure.cpp (original)
+++ qpid/trunk/qpid/cpp/src/tests/PartialFailure.cpp Wed Apr 15 21:21:47 2009
@@ -53,11 +53,8 @@
     os << "--test-store-name=s" << index;
     args.push_back(os.str());
     args.push_back("--load-module=.libs/test_store.so");
-    string dataDir("/tmp/PartialFailure.XXXXXX");
-    if (!mkdtemp(const_cast<char*>(dataDir.c_str())))
-        throw ErrnoException("Can't create data dir");
-    args.push_back("--data-dir="+dataDir);
     args.push_back("--auth=no");
+    args.push_back("TMP_DATA_DIR");
 
     // These tests generate errors deliberately, disable error logging unless 
a log env var is set.
     if (!::getenv("QPID_TRACE") && !::getenv("QPID_LOG_ENABLE")) {

Modified: qpid/trunk/qpid/cpp/src/tests/failover_soak.cpp
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/tests/failover_soak.cpp?rev=765365&r1=765364&r2=765365&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/tests/failover_soak.cpp (original)
+++ qpid/trunk/qpid/cpp/src/tests/failover_soak.cpp Wed Apr 15 21:21:47 2009
@@ -326,21 +326,15 @@
     static int brokerId = 0;
     stringstream path, prefix;
     prefix << "soak-" << brokerId;
-    string dataDir("/tmp/failover_soak.XXXXXX");
-    if (!mkdtemp(const_cast<char*>(dataDir.c_str())))
-        throw qpid::ErrnoException("Can't create data dir");
-
     std::vector<std::string> argv = list_of<string>
         ("qpidd")
         ("--cluster-name")(clusterName)
         ("--auth=no")
-        ("--data-dir")(dataDir)
         ("--mgmt-enable=no")
-        ("--log-prefix")
-        (prefix.str())
-        ("--log-to-file")
+        ("--log-prefix")(prefix.str())
+        ("--log-to-file")(prefix.str()+".log")
         ("--log-enable=error+")
-        (prefix.str()+".log");
+        ("TMP_DATA_DIR");
 
     if (endsWith(moduleOrDir, "cluster.so")) {
         // Module path specified, load only that module.
@@ -355,7 +349,7 @@
         argv.push_back(string("--module-dir=")+moduleOrDir);
     }
 
-    newbie = new ForkedBroker ( argv );
+    newbie = new ForkedBroker (argv);
     newbie_port = newbie->getPort();
     ForkedBroker * broker = newbie;
 



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

Reply via email to