diff options
author | Andrew Stitcher <astitcher@apache.org> | 2009-06-23 20:02:51 +0000 |
---|---|---|
committer | Andrew Stitcher <astitcher@apache.org> | 2009-06-23 20:02:51 +0000 |
commit | 9a8fecf6ced95ce81d3657e24b46b002222b337e (patch) | |
tree | a104e9b0e6d5bfdcc6c1a8cc6e82412ac9080484 /cpp/src/tests/perftest.cpp | |
parent | adea131916da275eadece32cc92be9614c7b3dce (diff) | |
download | qpid-python-9a8fecf6ced95ce81d3657e24b46b002222b337e.tar.gz |
Fix to perftest to make sure that all threads are joined even if there
is an exception
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@787816 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src/tests/perftest.cpp')
-rw-r--r-- | cpp/src/tests/perftest.cpp | 50 |
1 files changed, 23 insertions, 27 deletions
diff --git a/cpp/src/tests/perftest.cpp b/cpp/src/tests/perftest.cpp index 78606e46cd..f55528fcd5 100644 --- a/cpp/src/tests/perftest.cpp +++ b/cpp/src/tests/perftest.cpp @@ -656,7 +656,10 @@ struct SubscribeThread : public Client { }; int main(int argc, char** argv) { - + int exitCode = 0; + boost::ptr_vector<Client> subs(opts.subs); + boost::ptr_vector<Client> pubs(opts.pubs); + try { opts.parse(argc, argv); @@ -666,7 +669,7 @@ int main(int argc, char** argv) { case TOPIC: exchange="amq.topic"; break; case SHARED: break; } - + bool singleProcess= (!opts.setup && !opts.control && !opts.publish && !opts.subscribe); if (singleProcess) @@ -674,9 +677,6 @@ int main(int argc, char** argv) { if (opts.setup) Setup().run(); // Set up queues - boost::ptr_vector<Client> subs(opts.subs); - boost::ptr_vector<Client> pubs(opts.pubs); - // Start pubs/subs for each queue/topic. for (size_t i = 0; i < opts.qt; ++i) { ostringstream key; @@ -701,29 +701,25 @@ int main(int argc, char** argv) { } if (opts.control) Controller().run(); - - - // Wait for started threads. - if (opts.publish) { - for (boost::ptr_vector<Client>::iterator i=pubs.begin(); - i != pubs.end(); - ++i) - i->thread.join(); - } - - - if (opts.subscribe) { - for (boost::ptr_vector<Client>::iterator i=subs.begin(); - i != subs.end(); - ++i) - i->thread.join(); - } - return 0; } catch (const std::exception& e) { - cout << endl << e.what() << endl; + cout << endl << e.what() << endl; + exitCode = 1; } - return 1; -} - + // Wait for started threads. + if (opts.publish) { + for (boost::ptr_vector<Client>::iterator i=pubs.begin(); + i != pubs.end(); + ++i) + i->thread.join(); + } + + if (opts.subscribe) { + for (boost::ptr_vector<Client>::iterator i=subs.begin(); + i != subs.end(); + ++i) + i->thread.join(); + } + return exitCode; +} |