From 056f9ba9a0c0564cba4f90392c97a3e1a7de8c42 Mon Sep 17 00:00:00 2001 From: Marc Slemko Date: Thu, 17 Aug 2006 02:59:05 +0000 Subject: [PATCH] Print out results of stress test git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@664764 13f79535-47bb-0310-9956-ffa450edef68 --- lib/cpp/Makefile.am | 2 -- lib/cpp/src/test/main.cc | 71 +++++++++++++++++++++++++++++++++------- 2 files changed, 59 insertions(+), 14 deletions(-) diff --git a/lib/cpp/Makefile.am b/lib/cpp/Makefile.am index 9ef5b8f0..b06e06fe 100644 --- a/lib/cpp/Makefile.am +++ b/lib/cpp/Makefile.am @@ -73,5 +73,3 @@ concurrency_test_LDADD = libthrift.la concurrency_test_CXXFLAGS = $(common_cxxflags) concurrency_test_LDFLAGS = $(common_ldflags) - -dist_bin_SCRIPTS = thrift diff --git a/lib/cpp/src/test/main.cc b/lib/cpp/src/test/main.cc index 8cee758d..51ac38a9 100644 --- a/lib/cpp/src/test/main.cc +++ b/lib/cpp/src/test/main.cc @@ -80,7 +80,7 @@ public: {Synchronized s(_monitor); _workerCount--; - + if(_workerCount == 0) { _monitor.notify(); @@ -88,7 +88,6 @@ public: } } -private: shared_ptr _transport; shared_ptr _client; Monitor& _monitor; @@ -100,7 +99,6 @@ private: Monitor _sleep; }; - int main(int argc, char **argv) { int port = 9090; @@ -110,7 +108,7 @@ int main(int argc, char **argv) { size_t clientCount = 10; size_t loopCount = 10000; - ostringstream usage; + ostringstream usage; usage << argv[0] << " [--port=] [--server-type=] [--protocol-type=] [--workers=]" << endl << @@ -131,12 +129,13 @@ int main(int argc, char **argv) { size_t end = arg.find_first_of("=", 2); + string key = string(arg, 2, end - 2); + if(end != string::npos) { - args[string(arg, 2, end - 2)] = string(arg, end + 1); + args[key] = string(arg, end + 1); } else { - args[string(arg, 2, end - 2)] = "true"; + args[key] = "true"; } - ix++; } else { throw invalid_argument("Unexcepted command line token: "+arg); } @@ -212,7 +211,7 @@ int main(int argc, char **argv) { threadManager))); } - cout << "Starting the server on port " << port << endl; + cerr << "Starting the server on port " << port << endl; serverThread->start(); @@ -236,19 +235,67 @@ int main(int argc, char **argv) { (*thread)->start(); } - cout << endl; + cerr << endl; + + long long time00; + long long time01; {Synchronized s(monitor); threadCount = clientCount; - - cout << "Launch "<< clientCount << " client threads" << endl; + + cerr << "Launch "<< clientCount << " client threads" << endl; + + time00 = Util::currentTime(); + monitor.notifyAll(); while(threadCount > 0) { monitor.wait(); } + + time01 = Util::currentTime(); } + + long long firstTime = 9223372036854775807LL; + long long lastTime = 0; + + double averageTime = 0; + long long minTime = 9223372036854775807LL; + long long maxTime = 0; + + for(set >::iterator ix = clientThreads.begin(); ix != clientThreads.end(); ix++) { + + shared_ptr client = dynamic_pointer_cast((*ix)->runnable()); + + long long delta = client->_endTime - client->_startTime; + + assert(delta > 0); + + if(client->_startTime < firstTime) { + firstTime = client->_startTime; + } + + if(client->_endTime > lastTime) { + lastTime = client->_endTime; + } + + if(delta < minTime) { + minTime = delta; + } + + if(delta > maxTime) { + maxTime = delta; + } + + averageTime+= delta; + } + + averageTime /= clientCount; + + + cout << "workers :" << workerCount << ", client : " << clientCount << ", loops : " << loopCount << ", rate : " << (clientCount * loopCount * 1000) / ((double)(time01 - time00)) << endl; + + cerr << "done." << endl; - printf("done.\n"); return 0; } -- 2.17.1