diff options
author | Alan Conway <aconway@apache.org> | 2009-04-15 21:21:47 +0000 |
---|---|---|
committer | Alan Conway <aconway@apache.org> | 2009-04-15 21:21:47 +0000 |
commit | 2ccd734741281b6bf9f9e7f5af6d3697f579ae14 (patch) | |
tree | 38ebc613fe92d3fa7061cf096c27743e6d3b8434 /cpp/src | |
parent | 0bd1b0141e46e64debe2b4da971a4250dba5c59c (diff) | |
download | qpid-python-2ccd734741281b6bf9f9e7f5af6d3697f579ae14.tar.gz |
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
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@765365 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src')
-rw-r--r-- | cpp/src/tests/ForkedBroker.cpp | 22 | ||||
-rw-r--r-- | cpp/src/tests/ForkedBroker.h | 8 | ||||
-rw-r--r-- | cpp/src/tests/PartialFailure.cpp | 5 | ||||
-rw-r--r-- | cpp/src/tests/failover_soak.cpp | 14 |
4 files changed, 30 insertions, 19 deletions
diff --git a/cpp/src/tests/ForkedBroker.cpp b/cpp/src/tests/ForkedBroker.cpp index 383dcc496c..24ada12739 100644 --- a/cpp/src/tests/ForkedBroker.cpp +++ b/cpp/src/tests/ForkedBroker.cpp @@ -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) { diff --git a/cpp/src/tests/ForkedBroker.h b/cpp/src/tests/ForkedBroker.h index e72f421563..45b522068c 100644 --- a/cpp/src/tests/ForkedBroker.h +++ b/cpp/src/tests/ForkedBroker.h @@ -48,8 +48,12 @@ class ForkedBroker { 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 @@ class ForkedBroker { pid_t getPID() { return pid; } private: + void init(const Args& args); pid_t pid; int port; + std::string dataDir; }; #endif /*!TESTS_FORKEDBROKER_H*/ diff --git a/cpp/src/tests/PartialFailure.cpp b/cpp/src/tests/PartialFailure.cpp index f7187b2e77..5137672e7d 100644 --- a/cpp/src/tests/PartialFailure.cpp +++ b/cpp/src/tests/PartialFailure.cpp @@ -53,11 +53,8 @@ void updateArgs(ClusterFixture::Args& args, size_t index) { 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")) { diff --git a/cpp/src/tests/failover_soak.cpp b/cpp/src/tests/failover_soak.cpp index 2da60f47b5..c8f67aadd8 100644 --- a/cpp/src/tests/failover_soak.cpp +++ b/cpp/src/tests/failover_soak.cpp @@ -326,21 +326,15 @@ startNewBroker ( brokerVector & brokers, 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 @@ startNewBroker ( brokerVector & brokers, argv.push_back(string("--module-dir=")+moduleOrDir); } - newbie = new ForkedBroker ( argv ); + newbie = new ForkedBroker (argv); newbie_port = newbie->getPort(); ForkedBroker * broker = newbie; |