$c) {
$d = $b[$key];
if (!match($c, $d)) {
$matches = false;
break;
}
}
} else {
if ($a !== $b || xmlrpc_get_type($a) !== xmlrpc_get_type($b)) {
$matches = false;
}
}
return $matches;
}
function pass($method) {
echo "pass $method()
";
}
function fail($method, $sent, $received) {
echo "fail $method()
";
if ($sent) {
echo "
sent
";
var_dump($sent);
echo "";
}
if ($received) {
echo "received
";
var_dump($received);
echo "";
}
}
// this needs to be fixed.
function check_if_matches($method, $sent, $received) {
if (match($sent, $received)) {
pass($method);
}
else {
fail($method, $sent, $received);
}
}
function foo($method_name, $args) {
xmlrpc_encode_request($method_name, $args);
}
function run_test($server, $debug, $output, $method, $args='', $expected='') {
global $HTTP_GET_VARS;
echo "
";
if (!is_array($args))
$params = $args ? array($args) : array();
else
$params = $args;
if (!empty($HTTP_GET_VARS['start_debug'])) // zend ide support
$server['uri'] .= "?start_debug=1";
$result = xu_rpc_http_concise(array('method' => $method,
'args' => $params,
'host' => $server['host'],
'uri' => $server['uri'],
'port' => $server['port'],
'debug' => $debug,
'output' => $output));
check_if_matches($method, $expected, $result);
echo "";
flush();
}
// should return non-zero integer
function run_no_param_test($server, $debug, $output, $method) {
global $HTTP_GET_VARS;
echo "
";
if (!empty($HTTP_GET_VARS['start_debug'])) // zend ide support
$server['uri'] .= "?start_debug=1";
$result = xu_rpc_http_concise(array('method' => $method,
'host' => $server['host'],
'uri' => $server['uri'],
'port' => $server['port'],
'debug' => $debug,
'output' => $output));
if ($result && gettype($result) === "integer") {
pass($method);
}
else {
fail($method, false, $result);
}
flush();
}
// a method to run wiki tests against remote server. tests described at bottom.
function run_easy_tests($server, $debug=0, $output = null) {
//global $wiki_dmap;
run_test($server, $debug, $output, "wiki.getRPCVersionSupported", '', 1);
// getRecentChanges of the last day:
// Note: may crash with dba on index.php, not on RPC2.php
run_test($server, $debug, $output, "wiki.getRecentChanges", iso8601_encode(time()-86400));
run_test($server, $debug, $output, "wiki.getPage", "HomePage", "* What is a WikiWikiWeb? A description of this application. * Learn HowToUseWiki and learn about AddingPages. * Use the SandBox page to experiment with Wiki pages. * Please sign your name in RecentVisitors. * See RecentChanges for the latest page additions and changes. * Find out which pages are MostPopular. * Read the ReleaseNotes and RecentReleases. * Administer this wiki via PhpWikiAdministration. * See more PhpWikiDocumentation.");
run_test($server, $debug, $output, "wiki.getPageVersion", array("HomePage", 1));
run_test($server, $debug, $output, "wiki.getPageHTML", "HomePage");
run_test($server, $debug, $output, "wiki.getPageHTMLVersion", array("HomePage", 1));
run_test($server, $debug, $output, "wiki.getAllPages");
run_test($server, $debug, $output, "wiki.getPageInfo", "HomePage");
run_test($server, $debug, $output, "wiki.getPageInfoVersion", array("HomePage", 1));
run_test($server, $debug, $output, "wiki.listLinks", "HomePage");
run_test($server, $debug, $output, "wiki.putPage",
array("PutPage", "new PutPage content", "XxXx"),
array('code' => 200, 'version' => 1, 'message' => "Page PutPage version 1 created"));
run_test($server, $debug, $output, "wiki.putPage",
array("PutPage", "new PutPage content", "XxXx"),
array('code' => 400, 'version' => 1, 'message' => "Page PutPage unchanged"));
run_test($server, $debug, $output, "wiki.putPage",
array("PutPage", "new PutPage content", "disallowed"),
array('code' => 401, 'version' => 0, 'message' => "no permission for disallowed"));
run_test($server, $debug, $output, "wiki.rssPleaseNotify", "HomePage", 0);
run_test($server, $debug, $output, "wiki.mailPasswordToUser", ADMIN_USER);
run_test($server, $debug, $output, "wiki.titleSearch", "Hom");
}
function run_stress_tests($server, $debug=0, $output=null) {
global $wiki_dmap;
run_no_param_test($server, $debug, $output, "wiki.getRPCVersionSupported");
// of the last day:
run_test($server, $debug, $output, "wiki.getRecentChanges", iso8601_encode(time()-86400, 1));
/* ... */
}
// a method to display an html form for invoking the script
function print_html_form($servers_list) {
echo <<< END
Choose an xmlrpc wiki server to run tests against
END;
print_servers_form($servers_list);
}
// some code which determines if we are in form display or response mode.
$server_list = get_wiki_servers();
$server = get_server_from_user($server_list);
if ($server) {
$debug = $GLOBALS['HTTP_GET_VARS']['debug'] || $GLOBALS['HTTP_GET_VARS']['start_debug'];
$output['version'] = $GLOBALS['HTTP_GET_VARS']['version'];
if ($server) {
$title = $server['title'];
echo "Results for $title
";
if($GLOBALS['HTTP_GET_VARS']['stress'] == 1) {
run_stress_tests($server, $debug, $output);
}
else {
run_easy_tests($server, $debug, $output);
}
}
else {
echo "invalid option
";
}
}
else {
print_html_form($server_list);
}