diff options
author | Alan Conway <aconway@apache.org> | 2009-03-31 14:20:05 +0000 |
---|---|---|
committer | Alan Conway <aconway@apache.org> | 2009-03-31 14:20:05 +0000 |
commit | 4520be370b44168214456919d594a1d846d2766c (patch) | |
tree | a5a7ef037c39b4b5084f97196333b24e4a931eb8 /cpp/src/tests/failover_soak.cpp | |
parent | 10b3d5f1fc2530f27f45d05cb0ad339de858da86 (diff) | |
download | qpid-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.cpp | 65 |
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 ); |