summaryrefslogtreecommitdiff
path: root/qpid/cpp/src/tests/ForkedBroker.cpp
diff options
context:
space:
mode:
authorAlan Conway <aconway@apache.org>2009-04-15 21:21:47 +0000
committerAlan Conway <aconway@apache.org>2009-04-15 21:21:47 +0000
commit774307d5bea0e169b03980af1bc7b4c16631e48e (patch)
tree96e1ab6ab00243223e274e35b53165a6b1af4d0f /qpid/cpp/src/tests/ForkedBroker.cpp
parent4ea5f0d5250bc1ab0a7ea09da243d569e8c95c9d (diff)
downloadqpid-python-774307d5bea0e169b03980af1bc7b4c16631e48e.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@765365 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/cpp/src/tests/ForkedBroker.cpp')
-rw-r--r--qpid/cpp/src/tests/ForkedBroker.cpp22
1 files changed, 18 insertions, 4 deletions
diff --git a/qpid/cpp/src/tests/ForkedBroker.cpp b/qpid/cpp/src/tests/ForkedBroker.cpp
index 383dcc496c..24ada12739 100644
--- a/qpid/cpp/src/tests/ForkedBroker.cpp
+++ b/qpid/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) {