summaryrefslogtreecommitdiff
path: root/cpp/src
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
commit2ccd734741281b6bf9f9e7f5af6d3697f579ae14 (patch)
tree38ebc613fe92d3fa7061cf096c27743e6d3b8434 /cpp/src
parent0bd1b0141e46e64debe2b4da971a4250dba5c59c (diff)
downloadqpid-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.cpp22
-rw-r--r--cpp/src/tests/ForkedBroker.h8
-rw-r--r--cpp/src/tests/PartialFailure.cpp5
-rw-r--r--cpp/src/tests/failover_soak.cpp14
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;