* Benchmarking suite for the PHP-XMLRPC lib.
*
* @author Gaetano Giunta
- * @copyright (c) 2005-2014 G. Giunta
- * @license code licensed under the BSD License: http://phpxmlrpc.sourceforge.net/license.txt
+ * @copyright (c) 2005-2020 G. Giunta
+ * @license code licensed under the BSD License: see file license.txt
*
* @todo add a test for response ok in call testing
* @todo add support for --help option to give users the list of supported parameters
+ * @todo make number of test iterations flexible
+ * @todo add https tests
**/
use PhpXmlRpc\PhpXmlRpc;
}
}
-// test 'old style' data encoding vs. 'automatic style' encoding
+// test 'manual style' data encoding vs. 'automatic style' encoding
begin_test('Data encoding (large array)', 'manual encoding');
for ($i = 0; $i < $num_tests; $i++) {
$vals = array();
$response = $dummy->ParseResponse($in, true);
$value = $response->value();
$result = array();
- for ($k = 0; $k < $value->arraysize(); $k++) {
+ foreach($value as $val1) {
+ $out = array();
+ foreach($val1 as $name => $val) {
+ $out[$name] = array();
+ foreach($val as $data) {
+ $out[$name][] = $data->scalarval();
+ }
+ }
+ $result[] = $out;
+ }
+}
+end_test('Data decoding (large array)', 'manual decoding', $result);
+
+begin_test('Data decoding (large array)', 'manual decoding deprecated');
+for ($i = 0; $i < $num_tests; $i++) {
+ $response = $dummy->ParseResponse($in, true);
+ $value = $response->value();
+ $result = array();
+ $l = $value->arraysize();
+ for ($k = 0; $k < $l; $k++) {
$val1 = $value->arraymem($k);
$out = array();
- while (list($name, $val) = $val1->structeach()) {
+ foreach($val1 as $name => $val) {
$out[$name] = array();
- for ($j = 0; $j < $val->arraysize(); $j++) {
+ $m = $val->arraysize();
+ for ($j = 0; $j < $m; $j++) {
$data = $val->arraymem($j);
$out[$name][] = $data->scalarval();
}
$result[] = $out;
}
}
-end_test('Data decoding (large array)', 'manual decoding', $result);
+end_test('Data decoding (large array)', 'manual decoding deprecated', $result);
begin_test('Data decoding (large array)', 'automatic decoding');
for ($i = 0; $i < $num_tests; $i++) {
if (!$xd) {
+ $num_tests = 25;
+
/// test multicall vs. many calls vs. keep-alives
$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++) {
+ for ($i = 0; $i < $num_tests; $i++) {
$reqs[] = $req;
}
- $server = explode(':', $args['LOCALSERVER']);
+ $server = explode(':', $args['HTTPSERVER']);
if (count($server) > 1) {
- $srv = $server[1] . '://' . $server[0] . $args['URI'];
- $c = new Client($args['URI'], $server[0], $server[1]);
+ $srv = $server[1] . '://' . $server[0] . $args['HTTPURI'];
+ $c = new Client($args['HTTPURI'], $server[0], $server[1]);
} else {
- $srv = $args['LOCALSERVER'] . $args['URI'];
- $c = new Client($args['URI'], $args['LOCALSERVER']);
+ $srv = $args['HTTPSERVER'] . $args['HTTPURI'];
+ $c = new Client($args['HTTPURI'], $args['HTTPSERVER']);
}
// do not interfere with http compression
$c->accepted_compression = array();
}
begin_test($testName, 'http 10');
$response = array();
- for ($i = 0; $i < 25; $i++) {
+ for ($i = 0; $i < $num_tests; $i++) {
$resp = $c->send($req);
$response[] = $resp->value();
}
if (function_exists('curl_init')) {
begin_test($testName, 'http 11 w. keep-alive');
$response = array();
- for ($i = 0; $i < 25; $i++) {
+ for ($i = 0; $i < $num_tests; $i++) {
$resp = $c->send($req, 10, 'http11');
$response[] = $resp->value();
}
$c->keepalive = false;
begin_test($testName, 'http 11');
$response = array();
- for ($i = 0; $i < 25; $i++) {
+ for ($i = 0; $i < $num_tests; $i++) {
$resp = $c->send($req, 10, 'http11');
$response[] = $resp->value();
}
begin_test($testName, 'http 10 w. compression');
$response = array();
- for ($i = 0; $i < 25; $i++) {
+ for ($i = 0; $i < $num_tests; $i++) {
$resp = $c->send($req);
$response[] = $resp->value();
}
if (function_exists('curl_init')) {
begin_test($testName, 'http 11 w. keep-alive and compression');
$response = array();
- for ($i = 0; $i < 25; $i++) {
+ for ($i = 0; $i < $num_tests; $i++) {
$resp = $c->send($req, 10, 'http11');
$response[] = $resp->value();
}
$c->keepalive = false;
begin_test($testName, 'http 11 w. compression');
$response = array();
- for ($i = 0; $i < 25; $i++) {
+ for ($i = 0; $i < $num_tests; $i++) {
$resp = $c->send($req, 10, 'http11');
$response[] = $resp->value();
}