summaryrefslogtreecommitdiff
path: root/cpp/src/tests/failover_soak.cpp
diff options
context:
space:
mode:
authorAlan Conway <aconway@apache.org>2009-03-31 14:20:05 +0000
committerAlan Conway <aconway@apache.org>2009-03-31 14:20:05 +0000
commit4520be370b44168214456919d594a1d846d2766c (patch)
treea5a7ef037c39b4b5084f97196333b24e4a931eb8 /cpp/src/tests/failover_soak.cpp
parent10b3d5f1fc2530f27f45d05cb0ad339de858da86 (diff)
downloadqpid-python-4520be370b44168214456919d594a1d846d2766c.tar.gz
cpp/src/tests/failover_soak.cpp: allow it to run with all modules loaded or only the cluster module.
cpp/src/tests/run_failover_soak: run failover_soak with all modules loaded by default. git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@760458 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src/tests/failover_soak.cpp')
-rw-r--r--cpp/src/tests/failover_soak.cpp65
1 files changed, 37 insertions, 28 deletions
diff --git a/cpp/src/tests/failover_soak.cpp b/cpp/src/tests/failover_soak.cpp
index 4f16e469b8..5636268c95 100644
--- a/cpp/src/tests/failover_soak.cpp
+++ b/cpp/src/tests/failover_soak.cpp
@@ -361,35 +361,45 @@ wait_for_newbie ( )
}
}
-
+bool endsWith(const char* str, const char* suffix) {
+ return (strlen(suffix) < strlen(str) && 0 == strcmp(str+strlen(str)-strlen(suffix), suffix));
+}
void
startNewBroker ( brokerVector & brokers,
- char const * srcRoot,
- char const * moduleDir,
+ char const * moduleOrDir,
string const clusterName,
int verbosity )
{
static int brokerId = 0;
- stringstream path, prefix, module;
- module << moduleDir << "/cluster.so";
- path << srcRoot << "/qpidd";
+ 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")
- ("--no-module-dir")
- ("--load-module=cluster.so")
- ("--cluster-name")
- (clusterName)
+ ("--cluster-name")(clusterName)
("--auth=no")
- ("--no-data-dir")
+ ("--data-dir")(dataDir)
("--mgmt-enable=no")
("--log-prefix")
(prefix.str())
("--log-to-file")
(prefix.str()+".log");
+ if (endsWith(moduleOrDir, "cluster.so")) {
+ // Module path specified, load only that module.
+ argv.push_back(string("--load-module=")+moduleOrDir);
+ argv.push_back("--no-module-dir");
+ }
+ else {
+ // Module directory specified, load all modules in dir.
+ argv.push_back(string("--module-dir=")+moduleOrDir);
+ }
+
newbie = new ForkedBroker ( argv );
newbie_port = newbie->getPort();
ForkedBroker * broker = newbie;
@@ -616,24 +626,25 @@ startSendingClient ( brokerVector brokers,
int
main ( int argc, char const ** argv )
{
- if ( argc < 9 ) {
- cerr << "Usage: failoverSoak srcRoot moduleDir host senderPath receiverPath nMessages verbosity\n";
- cerr << " ( argc was " << argc << " )\n";
+ if ( argc != 8 ) {
+ cerr << "Usage: "
+ << argv[0]
+ << "moduleOrDir declareQueuesPath senderPath receiverPath nMessages reportFrequency verbosity"
+ << endl;
return BAD_ARGS;
}
-
signal ( SIGCHLD, childExit );
- char const * srcRoot = argv[1];
- char const * moduleDir = argv[2];
- char const * host = argv[3];
- char const * declareQueuesPath = argv[4];
- char const * senderPath = argv[5];
- char const * receiverPath = argv[6];
- char const * nMessages = argv[7];
- char const * reportFrequency = argv[8];
- int verbosity = atoi(argv[9]);
+ int i = 1;
+ char const * moduleOrDir = argv[i++];
+ char const * declareQueuesPath = argv[i++];
+ char const * senderPath = argv[i++];
+ char const * receiverPath = argv[i++];
+ char const * nMessages = argv[i++];
+ char const * reportFrequency = argv[i++];
+ int verbosity = atoi(argv[i++]);
+ char const * host = "127.0.0.1";
int maxBrokers = 50;
allMyChildren.verbosity = verbosity;
@@ -652,8 +663,7 @@ main ( int argc, char const ** argv )
int nBrokers = 3;
for ( int i = 0; i < nBrokers; ++ i ) {
startNewBroker ( brokers,
- srcRoot,
- moduleDir,
+ moduleOrDir,
clusterName,
verbosity );
}
@@ -745,8 +755,7 @@ main ( int argc, char const ** argv )
cout << "Starting new broker.\n\n";
startNewBroker ( brokers,
- srcRoot,
- moduleDir,
+ moduleOrDir,
clusterName,
verbosity );