📄 client.cpp
字号:
// client.cpp,v 1.4 2003/11/02 23:27:22 dhinton Exp
#include "TestC.h"
#include "tao/DynamicInterface/Request.h"
#include "tao/Strategies/advanced_resource.h"
#include "tao/TC_Constants_Forward.h"
#include "ace/Get_Opt.h"
#include "ace/Sched_Params.h"
#include "ace/High_Res_Timer.h"
#include "ace/Sched_Params.h"
#include "ace/Stats.h"
#include "ace/Sample_History.h"
#include "ace/OS_NS_errno.h"
ACE_RCSID(Deferred_Latency, client, "client.cpp,v 1.4 2003/11/02 23:27:22 dhinton Exp")
const char *ior = "file://test.ior";
int niterations = 1000;
int burst = 10;
int do_shutdown = 1;
int do_dump_history = 0;
int sz = 512;
const char *data_type = "octet";
int
parse_args (int argc, char *argv[])
{
ACE_Get_Opt get_opts (argc, argv, "t:s:hxk:i:b:");
int c;
while ((c = get_opts ()) != -1)
switch (c)
{
case 't':
data_type = get_opts.opt_arg ();
if (ACE_OS::strcmp (data_type, "octet") != 0 &&
ACE_OS::strcmp (data_type, "char") != 0 &&
ACE_OS::strcmp (data_type, "long") != 0 &&
ACE_OS::strcmp (data_type, "short") != 0 &&
ACE_OS::strcmp (data_type, "double") != 0 &&
ACE_OS::strcmp (data_type, "longlong") != 0)
return -1;
break;
case 's':
sz = ACE_OS::atoi (get_opts.opt_arg ());
break;
case 'h':
do_dump_history = 1;
break;
case 'x':
do_shutdown = 0;
break;
case 'k':
ior = get_opts.opt_arg ();
break;
case 'i':
niterations = ACE_OS::atoi (get_opts.opt_arg ());
break;
case 'b':
burst = ACE_OS::atoi (get_opts.opt_arg ());
break;
case '?':
default:
ACE_ERROR_RETURN ((LM_ERROR,
"usage: %s "
"-t <datatype> "
"-s <size> "
"-k <ior> "
"-i <niterations> "
"-b <burst> "
"-x (disable shutdown) "
"-h (dump history) "
"\n",
argv [0]),
-1);
}
// Indicates sucessful parsing of the command line
return 0;
}
int
test_octet_seq (Test::Roundtrip_ptr roundtrip ACE_ENV_ARG_DECL)
{
ACE_Sample_History history (niterations);
Test::octet_load ol (sz);
ol.length (sz);
ACE_hrtime_t test_start = ACE_OS::gethrtime ();
CORBA::Request_var *request;
ACE_NEW_RETURN (request, CORBA::Request_var[burst], 1);
for (int i = 0; i < niterations; ++i)
{
int j;
for (j = 0; j != burst; ++j)
{
CORBA::ULongLong start = ACE_OS::gethrtime ();
request[j] =
roundtrip->_request ("test_octet_method"
ACE_ENV_ARG_PARAMETER);
ACE_CHECK_RETURN (-1);
request[j]->add_in_arg ("octet_load") <<= ol;
request[j]->add_in_arg ("send_time") <<= start;
request[j]->set_return_type (CORBA::_tc_ulonglong);
request[j]->send_deferred (ACE_ENV_SINGLE_ARG_PARAMETER);
ACE_CHECK_RETURN (-1);
}
for (j = 0; j != burst; ++j)
{
request[j]->get_response (ACE_ENV_SINGLE_ARG_PARAMETER);
ACE_CHECK_RETURN (-1);
CORBA::ULongLong retval;
if ((request[j]->return_value () >>= retval) == 1)
{
ACE_hrtime_t now = ACE_OS::gethrtime ();
history.sample (now - retval);
}
}
}
delete[] request;
ACE_hrtime_t test_end = ACE_OS::gethrtime ();
ACE_DEBUG ((LM_DEBUG, "test finished\n"));
ACE_DEBUG ((LM_DEBUG, "High resolution timer calibration...."));
ACE_UINT32 gsf = ACE_High_Res_Timer::global_scale_factor ();
ACE_DEBUG ((LM_DEBUG, "done\n"));
if (do_dump_history)
{
history.dump_samples ("HISTORY", gsf);
}
ACE_Basic_Stats stats;
history.collect_basic_stats (stats);
stats.dump_results ("Total", gsf);
ACE_Throughput_Stats::dump_throughput ("Total", gsf,
test_end - test_start,
stats.samples_count ());
return 0;
}
int
test_long_seq (Test::Roundtrip_ptr roundtrip ACE_ENV_ARG_DECL)
{
ACE_Sample_History history (niterations);
Test::long_load ll (sz);
ll.length (sz);
ACE_hrtime_t test_start = ACE_OS::gethrtime ();
CORBA::Request_var *request;
ACE_NEW_RETURN (request, CORBA::Request_var[burst], 1);
for (int i = 0; i < niterations; ++i)
{
int j;
for (j = 0; j != burst; ++j)
{
CORBA::ULongLong start = ACE_OS::gethrtime ();
request[j] =
roundtrip->_request ("test_long_method"
ACE_ENV_ARG_PARAMETER);
ACE_CHECK_RETURN (-1);
request[j]->add_in_arg ("long_load") <<= ll;
request[j]->add_in_arg ("send_time") <<= start;
request[j]->set_return_type (CORBA::_tc_ulonglong);
request[j]->send_deferred (ACE_ENV_SINGLE_ARG_PARAMETER);
ACE_CHECK_RETURN (-1);
}
for (j = 0; j != burst; ++j)
{
request[j]->get_response (ACE_ENV_SINGLE_ARG_PARAMETER);
ACE_CHECK_RETURN (-1);
CORBA::ULongLong retval;
if ((request[j]->return_value () >>= retval) == 1)
{
ACE_hrtime_t now = ACE_OS::gethrtime ();
history.sample (now - retval);
}
}
}
delete[] request;
ACE_hrtime_t test_end = ACE_OS::gethrtime ();
ACE_DEBUG ((LM_DEBUG, "test finished\n"));
ACE_DEBUG ((LM_DEBUG, "High resolution timer calibration...."));
ACE_UINT32 gsf = ACE_High_Res_Timer::global_scale_factor ();
ACE_DEBUG ((LM_DEBUG, "done\n"));
if (do_dump_history)
{
history.dump_samples ("HISTORY", gsf);
}
ACE_Basic_Stats stats;
history.collect_basic_stats (stats);
stats.dump_results ("Total", gsf);
ACE_Throughput_Stats::dump_throughput ("Total", gsf,
test_end - test_start,
stats.samples_count ());
return 0;
}
int
test_short_seq (Test::Roundtrip_ptr roundtrip ACE_ENV_ARG_DECL)
{
ACE_Sample_History history (niterations);
Test::short_load sl (sz);
sl.length (sz);
ACE_hrtime_t test_start = ACE_OS::gethrtime ();
CORBA::Request_var *request;
ACE_NEW_RETURN (request, CORBA::Request_var[burst], 1);
for (int i = 0; i < niterations; ++i)
{
int j;
for (j = 0; j != burst; ++j)
{
CORBA::ULongLong start = ACE_OS::gethrtime ();
request[j] =
roundtrip->_request ("test_short_method"
ACE_ENV_ARG_PARAMETER);
ACE_CHECK_RETURN (-1);
request[j]->add_in_arg ("short_load") <<= sl;
request[j]->add_in_arg ("send_time") <<= start;
request[j]->set_return_type (CORBA::_tc_ulonglong);
request[j]->send_deferred (ACE_ENV_SINGLE_ARG_PARAMETER);
ACE_CHECK_RETURN (-1);
}
for (j = 0; j != burst; ++j)
{
request[j]->get_response (ACE_ENV_SINGLE_ARG_PARAMETER);
ACE_CHECK_RETURN (-1);
CORBA::ULongLong retval;
if ((request[j]->return_value () >>= retval) == 1)
{
ACE_hrtime_t now = ACE_OS::gethrtime ();
history.sample (now - retval);
}
}
}
delete[] request;
ACE_hrtime_t test_end = ACE_OS::gethrtime ();
ACE_DEBUG ((LM_DEBUG, "test finished\n"));
ACE_DEBUG ((LM_DEBUG, "High resolution timer calibration...."));
ACE_UINT32 gsf = ACE_High_Res_Timer::global_scale_factor ();
ACE_DEBUG ((LM_DEBUG, "done\n"));
if (do_dump_history)
{
history.dump_samples ("HISTORY", gsf);
}
ACE_Basic_Stats stats;
history.collect_basic_stats (stats);
stats.dump_results ("Total", gsf);
ACE_Throughput_Stats::dump_throughput ("Total", gsf,
test_end - test_start,
stats.samples_count ());
return 0;
}
int
test_char_seq (Test::Roundtrip_ptr roundtrip ACE_ENV_ARG_DECL)
{
ACE_Sample_History history (niterations);
Test::char_load cl (sz);
cl.length (sz);
ACE_hrtime_t test_start = ACE_OS::gethrtime ();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -