X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=tests%2Fbenchmark.php;h=01087011b369fe71c670b53d967e7be1ab52212b;hb=891efe4262d3cc5a379e0454f1f92c9dbdade9f7;hp=a762e5f75439255a7f1c140cb3fff1a8088bf601;hpb=c79e320a2d513194a0e7b65d26407a45ae4cbdd3;p=plcapi.git diff --git a/tests/benchmark.php b/tests/benchmark.php index a762e5f..0108701 100644 --- a/tests/benchmark.php +++ b/tests/benchmark.php @@ -1,25 +1,33 @@ \n\n\n$title\n\n\n

$title

\n
\n";
-}
-else
-{
+} else {
     echo "$title\n\n";
 }
 
-if($is_web)
-{
-    echo "

Using lib version: $xmlrpcVersion on PHP version: ".phpversion()."

\n"; - if ($xd) echo "

XDEBUG profiling enabled: skipping remote tests. Trace file is: ".htmlspecialchars(xdebug_get_profiler_filename())."

\n"; +if ($is_web) { + echo "

Using lib version: " . PhpXmlRpc::$xmlrpcVersion . " on PHP version: " . phpversion() . "

\n"; + if ($xd) { + echo "

XDEBUG profiling enabled: skipping remote tests. Trace file is: " . htmlspecialchars(xdebug_get_profiler_filename()) . "

\n"; + } flush(); ob_flush(); -} -else -{ - echo "Using lib version: $xmlrpcVersion on PHP version: ".phpversion()."\n"; - if ($xd) echo "XDEBUG profiling enabled: skipping remote tests\nTrace file is: ".xdebug_get_profiler_filename()."\n"; +} else { + echo "Using lib version: " . PhpXmlRpc::$xmlrpcVersion . " on PHP version: " . phpversion() . "\n"; + if ($xd) { + echo "XDEBUG profiling enabled: skipping remote tests\nTrace file is: " . xdebug_get_profiler_filename() . "\n"; + } } // test 'old style' data encoding vs. 'automatic style' encoding begin_test('Data encoding (large array)', 'manual encoding'); -for ($i = 0; $i < $num_tests; $i++) -{ +for ($i = 0; $i < $num_tests; $i++) { $vals = array(); - for ($j = 0; $j < 10; $j++) - { + for ($j = 0; $j < 10; $j++) { $valarray = array(); - foreach ($data[$j] as $key => $val) - { + foreach ($data[$j] as $key => $val) { $values = array(); - $values[] = new xmlrpcval($val[0], 'int'); - $values[] = new xmlrpcval($val[1], 'double'); - $values[] = new xmlrpcval($val[2], 'string'); - $values[] = new xmlrpcval($val[3], 'boolean'); - $values[] = new xmlrpcval($val[4], 'dateTime.iso8601'); - $values[] = new xmlrpcval($val[5], 'int'); - $values[] = new xmlrpcval($val[6], 'double'); - $values[] = new xmlrpcval($val[7], 'string'); - $values[] = new xmlrpcval($val[8], 'boolean'); - $values[] = new xmlrpcval($val[9], 'dateTime.iso8601'); - $valarray[$key] = new xmlrpcval($values, 'array'); + $values[] = new Value($val[0], 'int'); + $values[] = new Value($val[1], 'double'); + $values[] = new Value($val[2], 'string'); + $values[] = new Value($val[3], 'boolean'); + $values[] = new Value($val[4], 'dateTime.iso8601'); + $values[] = new Value($val[5], 'int'); + $values[] = new Value($val[6], 'double'); + $values[] = new Value($val[7], 'string'); + $values[] = new Value($val[8], 'boolean'); + $values[] = new Value($val[9], 'dateTime.iso8601'); + $valarray[$key] = new Value($values, 'array'); } - $vals[] = new xmlrpcval($valarray, 'struct'); + $vals[] = new Value($valarray, 'struct'); } - $value = new xmlrpcval($vals, 'array'); + $value = new Value($vals, 'array'); $out = $value->serialize(); } end_test('Data encoding (large array)', 'manual encoding', $out); begin_test('Data encoding (large array)', 'automatic encoding'); -for ($i = 0; $i < $num_tests; $i++) -{ - $value = php_xmlrpc_encode($data, array('auto_dates')); +$encoder = new Encoder(); +for ($i = 0; $i < $num_tests; $i++) { + $value = $encoder->encode($data, array('auto_dates')); $out = $value->serialize(); } end_test('Data encoding (large array)', 'automatic encoding', $out); -if (function_exists('xmlrpc_set_type')) -{ +if (function_exists('xmlrpc_set_type')) { begin_test('Data encoding (large array)', 'xmlrpc-epi encoding'); - for ($i = 0; $i < $num_tests; $i++) - { - for ($j = 0; $j < 10; $j++) - foreach ($keys as $k) - { + for ($i = 0; $i < $num_tests; $i++) { + for ($j = 0; $j < 10; $j++) { + foreach ($keys as $k) { xmlrpc_set_type($data[$j][$k][4], 'datetime'); xmlrpc_set_type($data[$j][$k][8], 'datetime'); } + } $out = xmlrpc_encode($data); } end_test('Data encoding (large array)', 'xmlrpc-epi encoding', $out); } // test 'old style' data decoding vs. 'automatic style' decoding -$dummy = new xmlrpcmsg(''); -$out = new xmlrpcresp($value); -$in = ''."\n".$out->serialize(); +$dummy = new Request(''); +$out = new Response($value); +$in = '' . "\n" . $out->serialize(); begin_test('Data decoding (large array)', 'manual decoding'); -for ($i = 0; $i < $num_tests; $i++) -{ +for ($i = 0; $i < $num_tests; $i++) { $response = $dummy->ParseResponse($in, true); $value = $response->value(); $result = array(); - for ($k = 0; $k < $value->arraysize(); $k++) - { + for ($k = 0; $k < $value->arraysize(); $k++) { $val1 = $value->arraymem($k); $out = array(); - while (list($name, $val) = $val1->structeach()) - { + while (list($name, $val) = $val1->structeach()) { $out[$name] = array(); - for ($j = 0; $j < $val->arraysize(); $j++) - { + for ($j = 0; $j < $val->arraysize(); $j++) { $data = $val->arraymem($j); $out[$name][] = $data->scalarval(); } @@ -162,146 +161,131 @@ for ($i = 0; $i < $num_tests; $i++) end_test('Data decoding (large array)', 'manual decoding', $result); begin_test('Data decoding (large array)', 'automatic decoding'); -for ($i = 0; $i < $num_tests; $i++) -{ +for ($i = 0; $i < $num_tests; $i++) { $response = $dummy->ParseResponse($in, true, 'phpvals'); $value = $response->value(); } end_test('Data decoding (large array)', 'automatic decoding', $value); -if (function_exists('xmlrpc_decode')) -{ +if (function_exists('xmlrpc_decode')) { begin_test('Data decoding (large array)', 'xmlrpc-epi decoding'); - for ($i = 0; $i < $num_tests; $i++) - { + for ($i = 0; $i < $num_tests; $i++) { $response = $dummy->ParseResponse($in, true, 'xml'); $value = xmlrpc_decode($response->value()); } end_test('Data decoding (large array)', 'xmlrpc-epi decoding', $value); } -if (!$xd) -{ +if (!$xd) { /// test multicall vs. many calls vs. keep-alives - $value = php_xmlrpc_encode($data1, array('auto_dates')); - $msg = new xmlrpcmsg('interopEchoTests.echoValue', array($value)); - $msgs=array(); - for ($i = 0; $i < 25; $i++) - $msgs[] = $msg; - $server = explode(':', $args['LOCALSERVER']); - if(count($server) > 1) - { - $c = new xmlrpc_client($args['URI'], $server[0], $server[1]); + $encoder = new Encoder(); + $value = $encoder->encode($data1, array('auto_dates')); + $req = new Request('interopEchoTests.echoValue', array($value)); + $reqs = array(); + for ($i = 0; $i < 25; $i++) { + $reqs[] = $req; } - else - { - $c = new xmlrpc_client($args['URI'], $args['LOCALSERVER']); + $server = explode(':', $args['LOCALSERVER']); + if (count($server) > 1) { + $srv = $server[1] . '://' . $server[0] . $args['URI']; + $c = new Client($args['URI'], $server[0], $server[1]); + } else { + $srv = $args['LOCALSERVER'] . $args['URI']; + $c = new Client($args['URI'], $args['LOCALSERVER']); } // do not interfere with http compression $c->accepted_compression = array(); //$c->debug=true; + $testName = "Repeated send (small array) to $srv"; + if (function_exists('gzinflate')) { $c->accepted_compression = null; } - begin_test('Repeated send (small array)', 'http 10'); + begin_test($testName, 'http 10'); $response = array(); - for ($i = 0; $i < 25; $i++) - { - $resp = $c->send($msg); + for ($i = 0; $i < 25; $i++) { + $resp = $c->send($req); $response[] = $resp->value(); } - end_test('Repeated send (small array)', 'http 10', $response); + end_test($testName, 'http 10', $response); - if (function_exists('curl_init')) - { - begin_test('Repeated send (small array)', 'http 11 w. keep-alive'); + if (function_exists('curl_init')) { + begin_test($testName, 'http 11 w. keep-alive'); $response = array(); - for ($i = 0; $i < 25; $i++) - { - $resp = $c->send($msg, 10, 'http11'); + for ($i = 0; $i < 25; $i++) { + $resp = $c->send($req, 10, 'http11'); $response[] = $resp->value(); } - end_test('Repeated send (small array)', 'http 11 w. keep-alive', $response); + end_test($testName, 'http 11 w. keep-alive', $response); $c->keepalive = false; - begin_test('Repeated send (small array)', 'http 11'); + begin_test($testName, 'http 11'); $response = array(); - for ($i = 0; $i < 25; $i++) - { - $resp = $c->send($msg, 10, 'http11'); + for ($i = 0; $i < 25; $i++) { + $resp = $c->send($req, 10, 'http11'); $response[] = $resp->value(); } - end_test('Repeated send (small array)', 'http 11', $response); + end_test($testName, 'http 11', $response); } - begin_test('Repeated send (small array)', 'multicall'); - $response = $c->send($msgs); - foreach ($response as $key =>& $val) - { + begin_test($testName, 'multicall'); + $response = $c->send($reqs); + foreach ($response as $key => & $val) { $val = $val->value(); } - end_test('Repeated send (small array)', 'multicall', $response); + end_test($testName, 'multicall', $response); - if (function_exists('gzinflate')) - { + if (function_exists('gzinflate')) { $c->accepted_compression = array('gzip'); $c->request_compression = 'gzip'; - begin_test('Repeated send (small array)', 'http 10 w. compression'); + begin_test($testName, 'http 10 w. compression'); $response = array(); - for ($i = 0; $i < 25; $i++) - { - $resp = $c->send($msg); + for ($i = 0; $i < 25; $i++) { + $resp = $c->send($req); $response[] = $resp->value(); } - end_test('Repeated send (small array)', 'http 10 w. compression', $response); + end_test($testName, 'http 10 w. compression', $response); - if (function_exists('curl_init')) - { - begin_test('Repeated send (small array)', 'http 11 w. keep-alive and compression'); + if (function_exists('curl_init')) { + begin_test($testName, 'http 11 w. keep-alive and compression'); $response = array(); - for ($i = 0; $i < 25; $i++) - { - $resp = $c->send($msg, 10, 'http11'); + for ($i = 0; $i < 25; $i++) { + $resp = $c->send($req, 10, 'http11'); $response[] = $resp->value(); } - end_test('Repeated send (small array)', 'http 11 w. keep-alive and compression', $response); + end_test($testName, 'http 11 w. keep-alive and compression', $response); $c->keepalive = false; - begin_test('Repeated send (small array)', 'http 11 w. compression'); + begin_test($testName, 'http 11 w. compression'); $response = array(); - for ($i = 0; $i < 25; $i++) - { - $resp = $c->send($msg, 10, 'http11'); + for ($i = 0; $i < 25; $i++) { + $resp = $c->send($req, 10, 'http11'); $response[] = $resp->value(); } - end_test('Repeated send (small array)', 'http 11 w. compression', $response); + end_test($testName, 'http 11 w. compression', $response); } - begin_test('Repeated send (small array)', 'multicall w. compression'); - $response = $c->send($msgs); - foreach ($response as $key =>& $val) - { + begin_test($testName, 'multicall w. compression'); + $response = $c->send($reqs); + foreach ($response as $key => & $val) { $val = $val->value(); } - end_test('Repeated send (small array)', 'multicall w. compression', $response); + end_test($testName, 'multicall w. compression', $response); } - } // end of 'if no xdebug profiling' echo "\n"; -foreach($test_results as $test => $results) -{ +foreach ($test_results as $test => $results) { echo "\nTEST: $test\n"; - foreach ($results as $case => $data) - echo " $case: {$data['time']} secs - Output data CRC: ".crc32(serialize($data['result']))."\n"; + foreach ($results as $case => $data) { + echo " $case: {$data['time']} secs - Output data CRC: " . crc32(serialize($data['result'])) . "\n"; + } } - -if($is_web) -{ +if ($is_web) { echo "\n
\n\n\n"; }