123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- #include <iostream>
- #include "servant/Application.h"
- #include "util/tc_option.h"
- using namespace tars;
- Communicator *_comm;
- string matchObj = "TestApp.HelloServer.HelloObj@tcp -h 127.0.0.1 -p 8999";
- struct Param
- {
- int count;
- int thread;
- ServantPrx pPrx;
- };
- Param param;
- std::atomic<int> callback(0);
- void ping(int c)
- {
- for(int i = 0 ; i < c; i++)
- {
- param.pPrx->tars_ping();
- ++callback;
- }
- }
- int main(int argc, char *argv[])
- {
- try
- {
- if (argc < 2)
- {
- cout << "Usage:" << argv[0] << " --count=1000 --thread=1" << endl;
- return 0;
- }
- TC_Option option;
- option.decode(argc, argv);
- param.count = TC_Common::strto<int>(option.getValue("count"));
- if(param.count <= 0) param.count = 1000;
- param.thread = TC_Common::strto<int>(option.getValue("thread"));
- if(param.thread <= 0) param.thread = 1;
- _comm = new Communicator();
- // LocalRollLogger::getInstance()->logger()->setLogLevel(6);
- _comm->setProperty("sendqueuelimit", "1000000");
- _comm->setProperty("asyncqueuecap", "1000000");
- param.pPrx = _comm->stringToProxy<ServantPrx>(matchObj);
- param.pPrx->tars_connect_timeout(50000);
- param.pPrx->tars_set_timeout(60 * 1000);
- param.pPrx->tars_async_timeout(60*1000);
- int64_t start = TC_Common::now2us();
- std::function<void(int)> func;
- func = ping;
- vector<std::thread*> vt;
- for(int i = 0 ; i< param.thread; i++)
- {
- vt.push_back(new std::thread(func, param.count));
- }
- std::thread print([&]{while(callback != param.count * param.thread) {
- cout << "Call:" << " : ----------finish count:" << callback << endl;
- std::this_thread::sleep_for(std::chrono::seconds(1));
- };});
- for(size_t i = 0 ; i< vt.size(); i++)
- {
- vt[i]->join();
- delete vt[i];
- }
- cout << "(pid:" << std::this_thread::get_id() << ")"
- << "(count:" << param.count << ")"
- << "(use ms:" << (TC_Common::now2us() - start)/1000 << ")"
- << endl;
- while(callback != param.count * param.thread) {
- std::this_thread::sleep_for(std::chrono::seconds(1));
- }
- print.join();
- cout << " ----------finish count:" << callback << endl;
- }
- catch(exception &ex)
- {
- cout << ex.what() << endl;
- }
- cout << "main return." << endl;
- return 0;
- }
|