206 lines
6.4 KiB
PHP
206 lines
6.4 KiB
PHP
<?php
|
|
// this script is usefull for quickly testing stuff, use the 'pretty' file for html output
|
|
//
|
|
// +----------------------------------------------------------------------+
|
|
// | PHP Version 4 |
|
|
// +----------------------------------------------------------------------+
|
|
// | Copyright (c) 1997-2003 The PHP Group |
|
|
// +----------------------------------------------------------------------+
|
|
// | This source file is subject to version 2.02 of the PHP license, |
|
|
// | that is bundled with this package in the file LICENSE, and is |
|
|
// | available at through the world-wide-web at |
|
|
// | http://www.php.net/license/2_02.txt. |
|
|
// | If you did not receive a copy of the PHP license and are unable to |
|
|
// | obtain it through the world-wide-web, please send a note to |
|
|
// | license@php.net so we can mail you a copy immediately. |
|
|
// +----------------------------------------------------------------------+
|
|
// | Authors: Shane Caraveo <Shane@Caraveo.com> |
|
|
// +----------------------------------------------------------------------+
|
|
//
|
|
// $Id: interop_client_run.php,v 1.11 2007/01/26 15:03:24 yunosh Exp $
|
|
//
|
|
|
|
if (isset($_SERVER['SERVER_NAME'])) {
|
|
die("full test run cannot be done via webserver.");
|
|
}
|
|
|
|
set_time_limit(0);
|
|
error_reporting(E_ALL);
|
|
|
|
require 'Console/Getopt.php';
|
|
require_once 'interop_client.php';
|
|
|
|
$INTEROP_LOCAL_SERVER = TRUE;// add local server to endpoints
|
|
|
|
$iop =& new Interop_Client();
|
|
|
|
// debug output
|
|
$iop->show = 1;
|
|
$iop->debug = 0;
|
|
$iop->showFaults = 0; // used in result table output
|
|
$restrict = null;
|
|
|
|
$args = Console_Getopt::getopt($_SERVER['argv'],
|
|
'c:dehl:m:np:r:s:t:v:wq',
|
|
array('help'));
|
|
if (PEAR::isError($args)) {
|
|
echo "\n" . $args->getMessage() . "\n\n";
|
|
help();
|
|
exit;
|
|
}
|
|
|
|
function help() {
|
|
print <<<END
|
|
interop_client_run.php [options]
|
|
-c pear|php-soap client type (not implemented yet)
|
|
-d turn on debug output
|
|
-e fetch interop test information
|
|
-h this help
|
|
-l list comma seperated list of endpoint names to skip
|
|
-m method_name specific soap method to test
|
|
-n do not save results to database
|
|
-p t|e print list of [t]ests or [e]ndpoints
|
|
-r string restrict tests to those whose name starts with...
|
|
-s server_name test a specific server
|
|
-t test_name run a specific set of tests
|
|
-v php|soapval run tests with specific param types (requires -t)
|
|
-w run wsdl tests only (requires -t)
|
|
-q do not run tests
|
|
|
|
END;
|
|
}
|
|
|
|
function print_test_names()
|
|
{
|
|
global $iop;
|
|
print "Interop tests supported:\n";
|
|
foreach ($iop->tests as $test) {
|
|
print " $test\n";
|
|
}
|
|
}
|
|
|
|
function print_endpoint_names()
|
|
{
|
|
global $iop;
|
|
|
|
if (!class_exists('G')) {
|
|
$realdocuroot = str_replace( '\\', '/', $_SERVER['DOCUMENT_ROOT'] );
|
|
$docuroot = explode( '/', $realdocuroot );
|
|
array_pop( $docuroot );
|
|
$pathhome = implode( '/', $docuroot ) . '/';
|
|
array_pop( $docuroot );
|
|
$pathTrunk = implode( '/', $docuroot ) . '/';
|
|
require_once($pathTrunk.'gulliver/system/class.g.php');
|
|
}
|
|
|
|
$filter = new InputFilter();
|
|
$currTest = $filter->xssFilterHard($iop->currentTest);
|
|
|
|
if (!$iop->getEndpoints($iop->currentTest)) {
|
|
die("Unable to retrieve endpoints for $currTest\n");
|
|
}
|
|
print "Interop Servers for $currTestt:\n";
|
|
foreach ($iop->endpoints as $server) {
|
|
print " $server->name\n";
|
|
}
|
|
}
|
|
|
|
foreach ($args[0] as $arg) {
|
|
switch($arg[0]) {
|
|
case 'c':
|
|
$iop->client_type = $arg[1];
|
|
break;
|
|
case 'd':
|
|
$iop->debug = true;
|
|
break;
|
|
case 'e':
|
|
$iop->fetchEndpoints();
|
|
break;
|
|
case 'h':
|
|
case '--help':
|
|
help();
|
|
exit(0);
|
|
case 'l':
|
|
$iop->skipEndpointList = explode(',', $arg[1]);
|
|
break;
|
|
case 'm':
|
|
$iop->testMethod = $arg[1];
|
|
break;
|
|
case 'n':
|
|
$iop->nosave = true;
|
|
break;
|
|
case 'p':
|
|
if ($arg[1] == 't') {
|
|
print_test_names();
|
|
} elseif ($arg[1] == 'e') {
|
|
if (!$iop->currentTest) {
|
|
print "You need to specify a test with -t\n";
|
|
exit(0);
|
|
}
|
|
print_endpoint_names();
|
|
} else {
|
|
die("invalid print argument\n");
|
|
}
|
|
exit(0);
|
|
case 'r':
|
|
$restrict = $arg[1];
|
|
break;
|
|
case 's':
|
|
$iop->specificEndpoint = $arg[1];
|
|
break;
|
|
case 't':
|
|
$iop->currentTest = $arg[1];
|
|
break;
|
|
case 'v':
|
|
if ($arg[1] != 'php' && $arg[1] != 'soapval') {
|
|
|
|
if (!class_exists('G')) {
|
|
$realdocuroot = str_replace( '\\', '/', $_SERVER['DOCUMENT_ROOT'] );
|
|
$docuroot = explode( '/', $realdocuroot );
|
|
array_pop( $docuroot );
|
|
$pathhome = implode( '/', $docuroot ) . '/';
|
|
array_pop( $docuroot );
|
|
$pathTrunk = implode( '/', $docuroot ) . '/';
|
|
require_once($pathTrunk.'gulliver/system/class.g.php');
|
|
}
|
|
|
|
$filter = new InputFilter();
|
|
$arg[1] = $filter->xssFilterHard($arg[1]);
|
|
|
|
die('Incorrect value for argument v: ' . $arg[1] . "\n");
|
|
}
|
|
$iop->paramType = $arg[1];
|
|
break;
|
|
case 'w':
|
|
$iop->useWSDL = true;
|
|
break;
|
|
case 'q':
|
|
exit(0);
|
|
}
|
|
}
|
|
|
|
// These are endpoints that are listed in the interop server, but do not realy
|
|
// exist any longer.
|
|
$bad = array('Spheon JSOAP', 'Phalanx', 'SilverStream', 'SOAPx4 (PHP)',
|
|
'Virtuoso (development)', 'Zolera SOAP Infrastructure');
|
|
$iop->skipEndpointList = array_merge($iop->skipEndpointList, $bad);
|
|
|
|
if ($restrict) {
|
|
$tests = $iop->tests;
|
|
$iop->tests = array();
|
|
foreach ($tests as $test) {
|
|
if (stristr($test, $restrict)) {
|
|
$iop->tests[] = $test;
|
|
}
|
|
}
|
|
}
|
|
|
|
if ($iop->currentTest) {
|
|
$iop->doTest(); // run a single set of tests using above options
|
|
} else {
|
|
// $iop->doGroupTests(); // run a group of tests set in $currentTest
|
|
$iop->doTests(); // run all tests, ignore above options
|
|
}
|
|
|
|
echo "done\n";
|