Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse code

This commit was manufactured by cvs2svn to create tag 'BEFORE_ARG_INFO'.

  • Loading branch information...
commit 1002acbac0e99cad57b4ed3b58f1bae0b51980f5 1 parent f05452f
authored

Showing 100 changed files with 0 additions and 18,325 deletions. Show diff stats Hide diff stats

  1. 103  ext/imap/imap.h
  2. 56  ext/pcre/config0.m4
  3. 0  ext/soap/EXPERIMENTAL
  4. 8  ext/soap/Makefile.in
  5. 39  ext/soap/TODO
  6. 33  ext/soap/config.m4
  7. 25  ext/soap/interop/base.php
  8. 102  ext/soap/interop/client_round2.php
  9. 796  ext/soap/interop/client_round2_interop.php
  10. 636  ext/soap/interop/client_round2_params.php
  11. 75  ext/soap/interop/client_round2_results.php
  12. 54  ext/soap/interop/client_round2_run.php
  13. 45  ext/soap/interop/database_round2.sql
  14. 16  ext/soap/interop/echoheadersvc.wsdl
  15. 85  ext/soap/interop/endpointdata.sql
  16. 70  ext/soap/interop/index.php
  17. 1  ext/soap/interop/info.php
  18. 18  ext/soap/interop/interop.wsdl
  19. 13  ext/soap/interop/interopB.wsdl
  20. 35  ext/soap/interop/server_round2.php
  21. 184  ext/soap/interop/server_round2_base.php
  22. 87  ext/soap/interop/server_round2_groupB.php
  23. 41  ext/soap/interop/server_round2_groupC.php
  24. 258  ext/soap/interop/server_round2_test.php
  25. 81  ext/soap/interop/test.utility.php
  26. 17  ext/soap/interop/testclient.php
  27. 17  ext/soap/interop/testserver.php
  28. 59  ext/soap/package.xml
  29. 1,135  ext/soap/php_encoding.c
  30. 256  ext/soap/php_encoding.h
  31. 456  ext/soap/php_http.c
  32. 11  ext/soap/php_http.h
  33. 141  ext/soap/php_packet_soap.c
  34. 6  ext/soap/php_packet_soap.h
  35. 1,080  ext/soap/php_schema.c
  36. 28  ext/soap/php_schema.h
  37. 1,139  ext/soap/php_sdl.c
  38. 167  ext/soap/php_sdl.h
  39. 148  ext/soap/php_soap.dsp
  40. 416  ext/soap/php_soap.h
  41. 242  ext/soap/php_xml.c
  42. 28  ext/soap/php_xml.h
  43. 2,309  ext/soap/soap.c
  44. 2  ext/spl/CREDITS
  45. 0  ext/spl/EXPERIMENTAL
  46. 88  ext/spl/README
  47. 98  ext/spl/README.PROFILING
  48. 13  ext/spl/TODO
  49. 43  ext/spl/config.m4
  50. 79  ext/spl/examples/dba_array.php
  51. 28  ext/spl/examples/dba_dump.php
  52. 83  ext/spl/examples/dba_reader.inc
  53. 96  ext/spl/examples/filter.inc
  54. 20  ext/spl/examples/filter_tree.php
  55. 65  ext/spl/examples/ini_groups.php
  56. 102  ext/spl/examples/key_filter.inc
  57. 116  ext/spl/examples/sub_dir.inc
  58. 18  ext/spl/examples/tree.php
  59. 281  ext/spl/php_spl.c
  60. 110  ext/spl/php_spl.h
  61. 243  ext/spl/spl.php
  62. 674  ext/spl/spl_array.c
  63. 44  ext/spl/spl_array.h
  64. 273  ext/spl/spl_directory.c
  65. 342  ext/spl/spl_engine.c
  66. 117  ext/spl/spl_engine.h
  67. 274  ext/spl/spl_foreach.c
  68. 38  ext/spl/spl_foreach.h
  69. 163  ext/spl/spl_functions.c
  70. 81  ext/spl/spl_functions.h
  71. 3  ext/spl/tests/.htaccess
  72. 67  ext/spl/tests/array.phpt
  73. 122  ext/spl/tests/array_access_001.phpt
  74. 133  ext/spl/tests/array_access_002.phpt
  75. 138  ext/spl/tests/array_iterator.phpt
  76. 208  ext/spl/tests/array_read.phpt
  77. 193  ext/spl/tests/foreach.phpt
  78. 90  ext/spl/tests/foreach_break.phpt
  79. 61  ext/spl/tests/foreach_non_spl.phpt
  80. 136  ext/spl/tests/forward.phpt
  81. 138  ext/spl/tests/sequence.phpt
  82. 2  ext/tidy/CREDITS
  83. 154  ext/tidy/README_TIDY
  84. 4  ext/tidy/TODO
  85. 35  ext/tidy/config.m4
  86. 40  ext/tidy/examples/cleanhtml.php
  87. 94  ext/tidy/examples/dumpit.php
  88. 63  ext/tidy/examples/urlgrab.php
  89. 55  ext/tidy/package.xml
  90. 193  ext/tidy/php_tidy.h
  91. 24  ext/tidy/tests/001.phpt
  92. 25  ext/tidy/tests/002.phpt
  93. 27  ext/tidy/tests/003.phpt
  94. 24  ext/tidy/tests/004.phpt
  95. 1  ext/tidy/tests/005.html
  96. 25  ext/tidy/tests/005.phpt
  97. 23  ext/tidy/tests/006.phpt
  98. 37  ext/tidy/tests/007.phpt
  99. 1,920  ext/tidy/tidy.c
  100. 283  main/php_realpath.c
103  ext/imap/imap.h
... ...
@@ -1,103 +0,0 @@
1  
-#ifndef _INCLUDED_IMAP_H
2  
-#define _INCLUDED_IMAP_H
3  
-
4  
-#if COMPILE_DL
5  
-#undef HAVE_IMAP
6  
-#define HAVE_IMAP 1
7  
-#endif
8  
-
9  
-#if HAVE_IMAP
10  
-
11  
-#ifndef PHP_WIN32
12  
-#include "build-defs.h"
13  
-#endif
14  
-
15  
-/* Functions accessable to PHP */
16  
-extern zend_module_entry imap_module_entry;
17  
-#define imap_module_ptr &imap_module_entry
18  
-
19  
-extern PHP_MINIT_FUNCTION(imap);
20  
-extern PHP_RINIT_FUNCTION(imap);
21  
-extern PHP_RSHUTDOWN_FUNCTION(imap);
22  
-PHP_MINFO_FUNCTION(imap);
23  
-PHP_FUNCTION(imap_open);
24  
-PHP_FUNCTION(imap_popen);
25  
-PHP_FUNCTION(imap_reopen);
26  
-PHP_FUNCTION(imap_num_msg);
27  
-PHP_FUNCTION(imap_num_recent);
28  
-PHP_FUNCTION(imap_headers);
29  
-PHP_FUNCTION(imap_headerinfo);
30  
-PHP_FUNCTION(imap_rfc822_parse_headers);
31  
-PHP_FUNCTION(imap_body);
32  
-PHP_FUNCTION(imap_fetchstructure);
33  
-PHP_FUNCTION(imap_fetchbody);
34  
-PHP_FUNCTION(imap_expunge);
35  
-PHP_FUNCTION(imap_delete);
36  
-PHP_FUNCTION(imap_undelete);
37  
-PHP_FUNCTION(imap_check);
38  
-PHP_FUNCTION(imap_close);
39  
-PHP_FUNCTION(imap_mail_copy);
40  
-PHP_FUNCTION(imap_mail_move);
41  
-PHP_FUNCTION(imap_createmailbox);
42  
-PHP_FUNCTION(imap_renamemailbox);
43  
-PHP_FUNCTION(imap_deletemailbox);
44  
-PHP_FUNCTION(imap_listmailbox);
45  
-PHP_FUNCTION(imap_scanmailbox);
46  
-PHP_FUNCTION(imap_subscribe);
47  
-PHP_FUNCTION(imap_unsubscribe);
48  
-PHP_FUNCTION(imap_append);
49  
-PHP_FUNCTION(imap_ping);
50  
-PHP_FUNCTION(imap_base64);
51  
-PHP_FUNCTION(imap_qprint);
52  
-PHP_FUNCTION(imap_8bit);
53  
-PHP_FUNCTION(imap_binary);
54  
-PHP_FUNCTION(imap_mailboxmsginfo);
55  
-PHP_FUNCTION(imap_rfc822_write_address);
56  
-PHP_FUNCTION(imap_rfc822_parse_adrlist);
57  
-PHP_FUNCTION(imap_setflag_full);
58  
-PHP_FUNCTION(imap_clearflag_full);
59  
-PHP_FUNCTION(imap_sort);
60  
-PHP_FUNCTION(imap_fetchheader);
61  
-PHP_FUNCTION(imap_fetchtext);
62  
-PHP_FUNCTION(imap_uid);
63  
-PHP_FUNCTION(imap_msgno);
64  
-PHP_FUNCTION(imap_list);
65  
-PHP_FUNCTION(imap_list_full);
66  
-PHP_FUNCTION(imap_listscan);
67  
-PHP_FUNCTION(imap_lsub);
68  
-PHP_FUNCTION(imap_lsub_full);
69  
-PHP_FUNCTION(imap_create);
70  
-PHP_FUNCTION(imap_rename);
71  
-PHP_FUNCTION(imap_status);
72  
-PHP_FUNCTION(imap_bodystruct);
73  
-PHP_FUNCTION(imap_fetch_overview);
74  
-PHP_FUNCTION(imap_mail_compose);
75  
-PHP_FUNCTION(imap_alerts);
76  
-PHP_FUNCTION(imap_errors);
77  
-PHP_FUNCTION(imap_last_error);
78  
-PHP_FUNCTION(imap_mail);
79  
-PHP_FUNCTION(imap_search);
80  
-PHP_FUNCTION(imap_utf8);
81  
-PHP_FUNCTION(imap_utf7_decode);
82  
-PHP_FUNCTION(imap_utf7_encode);
83  
-PHP_FUNCTION(imap_mime_header_decode);
84  
-#else
85  
-#define imap_module_ptr NULL
86  
-#endif /* HAVE_IMAP */
87  
-
88  
-#endif
89  
-
90  
-
91  
-
92  
-
93  
-
94  
-
95  
-#define phpext_imap_ptr imap_module_ptr
96  
-
97  
-
98  
-
99  
-
100  
-
101  
-
102  
-
103  
-
56  ext/pcre/config0.m4
... ...
@@ -1,56 +0,0 @@
1  
-dnl
2  
-dnl $Id$
3  
-dnl
4  
-
5  
-dnl By default we'll compile and link against the bundled PCRE library
6  
-dnl if DIR is supplied, we'll use that for linking
7  
-
8  
-PHP_ARG_WITH(pcre-regex,for PCRE support,
9  
-[  --without-pcre-regex    Do not include Perl Compatible Regular Expressions 
10  
-                          support. Use --with-pcre-regex=DIR to specify DIR
11  
-                          where PCRE's include and library files are located,
12  
-                          if not using bundled library.],yes)
13  
-
14  
-if test "$PHP_PCRE_REGEX" != "no"; then
15  
-  if test "$PHP_PCRE_REGEX" = "yes"; then
16  
-    PHP_NEW_EXTENSION(pcre, pcrelib/maketables.c pcrelib/get.c pcrelib/study.c pcrelib/pcre.c php_pcre.c, $ext_shared,,-DSUPPORT_UTF8 -DLINK_SIZE=2 -DPOSIX_MALLOC_THRESHOLD=10 -I@ext_srcdir@/pcrelib)
17  
-    PHP_ADD_BUILD_DIR($ext_builddir/pcrelib)
18  
-    AC_DEFINE(HAVE_BUNDLED_PCRE, 1, [ ])
19  
-  else
20  
-    for i in $PHP_PCRE_REGEX $PHP_PCRE_REGEX/include $PHP_PCRE_REGEX/include/pcre; do
21  
-      test -f $i/pcre.h && PCRE_INCDIR=$i
22  
-    done
23  
-
24  
-    if test -z "$PCRE_INCDIR"; then
25  
-      AC_MSG_ERROR([Could not find pcre.h in $PHP_PCRE_REGEX])
26  
-    fi
27  
-
28  
-    for j in $PHP_PCRE_REGEX $PHP_PCRE_REGEX/lib; do
29  
-      test -f $j/libpcre.a -o -f $j/libpcre.$SHLIB_SUFFIX_NAME && PCRE_LIBDIR=$j
30  
-    done
31  
-    
32  
-    if test -z "$PCRE_LIBDIR" ; then
33  
-      AC_MSG_ERROR([Could not find libpcre.(a|$SHLIB_SUFFIX_NAME) in $PHP_PCRE_REGEX])
34  
-    fi
35  
-
36  
-    changequote({,})
37  
-    pcre_major=`grep PCRE_MAJOR $PCRE_INCDIR/pcre.h | sed -e 's/[^0-9]//g'`
38  
-    pcre_minor=`grep PCRE_MINOR $PCRE_INCDIR/pcre.h | sed -e 's/[^0-9]//g'`
39  
-    changequote([,])
40  
-    pcre_minor_length=`echo "$pcre_minor" | wc -c | sed -e 's/[^0-9]//g'`
41  
-    if test "$pcre_minor_length" -eq 2 ; then
42  
-      pcre_minor="$pcre_minor"0
43  
-    fi
44  
-    pcre_version=$pcre_major$pcre_minor
45  
-    if test "$pcre_version" -lt 208; then
46  
-      AC_MSG_ERROR([The PCRE extension requires PCRE library version >= 2.08])
47  
-    fi
48  
-
49  
-    PHP_ADD_LIBRARY_WITH_PATH(pcre, $PCRE_LIBDIR, PCRE_SHARED_LIBADD)
50  
-    
51  
-    AC_DEFINE(HAVE_PCRE, 1, [ ])
52  
-    PHP_ADD_INCLUDE($PCRE_INCDIR)
53  
-    PHP_NEW_EXTENSION(pcre, php_pcre.c, $ext_shared,,-DSUPPORT_UTF8 -DLINK_SIZE=2 -DPOSIX_MALLOC_THRESHOLD=10)
54  
-  fi
55  
-  PHP_SUBST(PCRE_SHARED_LIBADD)
56  
-fi
0  ext/soap/EXPERIMENTAL
No changes.
8  ext/soap/Makefile.in
... ...
@@ -1,8 +0,0 @@
1  
-# $Id$
2  
-
3  
-LTLIBRARY_NAME        = libsoap.la
4  
-LTLIBRARY_SOURCES     = soap.c php_sdl.c php_schema.c php_xml.c php_encoding.c php_http.c php_packet_soap.c
5  
-LTLIBRARY_SHARED_NAME = soap.la
6  
-LTLIBRARY_SHARED_LIBADD  = $(SOAP_SHARED_LIBADD)
7  
-
8  
-include $(top_srcdir)/build/dynlib.mk
39  ext/soap/TODO
... ...
@@ -1,39 +0,0 @@
1  
-TODO:
2  
-make sure soap 1.1 and 1.2 is supported fully
3  
-Better WSDL support Client and server (how much validation is needed here?)
4  
-UDDI??
5  
-make internal refrences for soap encoding (use seralization logic)
6  
-add ini option for always soap_error_handler
7  
-provide user space overriding of serialization certin objects and types
8  
-serialization in general needs to be polished/finished... all xsd types
9  
-make perstistant objects and work with or without register_globals on
10  
-look to see if php-soap will work with out always_populate_raw_post_data on
11  
-see if client will work with ssl.. should be eaiser with php_streams
12  
-work on soap seralizer (php serialization)
13  
-work on a soap-service 'regiestry' and 'proxy' (apache soap style)
14  
-convert all string mainpulation to use smart_str
15  
-make the 'soap' packet abstract.. maybe incorperate xml-rpc
16  
-make the transport layer abstract.. what other transport layers are needed?... who uses smtp? what about jabber?
17  
-make $soap_object->data = 'text'; maybe invoke a set_*() and/or get_*() method
18  
-when using wsdls and function names are similar find the best match
19  
-	void test(int);
20  
-	void test(string);
21  
-	maybe use the same alogrithim as ext/java.
22  
-investigate further http keep_alive... inital testing proved slower.. maybe php_streams will speed things up..
23  
-provide schema 1999/2001 support....
24  
-through memory leak testing
25  
-possible using shared memory for sdl caching...
26  
-api for clearing/checking sdl caching...
27  
-make php-soap work as a standalone server using php_streams and the new socket extension
28  
-http authication
29  
-proxy support
30  
-wsdl generation static and auto (.net style (http://server.com/soapserver.php?WSDL)) using phpdoc parsing engine
31  
-interpo testing...
32  
-BENCHMARKING...... lets prove how fast it is.
33  
-do some more work on website
34  
-
35  
-does this list stop... what exactly have i done?
36  
-im sure im forgetting 20 thousand more things....
37  
-
38  
-
39  
- - brad
33  ext/soap/config.m4
... ...
@@ -1,33 +0,0 @@
1  
-dnl $Id$
2  
-dnl config.m4 for extension soap
3  
-
4  
-PHP_ARG_ENABLE(soap, whether to enable soap support,
5  
-[  --enable-soap[=DIR]      Enable soap support.  DIR is libxml2
6  
-                           library directory.])
7  
-
8  
-if test "$PHP_SOAP" != "no"; then
9  
-  if test "$PHP_SOAP" = "yes"; then
10  
-    for i in /usr/local /usr; do
11  
-      if test -d "$i/include/libxml2/libxml"; then
12  
-        XML2_INCDIR=$i/include/libxml2
13  
-        XML2_LIBDIR=$i/lib
14  
-      fi      
15  
-    done
16  
-  else
17  
-    if test -d "$PHP_SOAP/include/libxml2/libxml"; then
18  
-      XML2_INCDIR=$PHP_SOAP/include/libxml2
19  
-      XML2_LIBDIR=$PHP_SOAP/lib
20  
-    fi      
21  
-  fi
22  
-
23  
-  if test -z "$XML2_INCDIR"; then
24  
-    AC_MSG_ERROR(Cannot find libxml2 header. Please specify correct libxml2 installation path)
25  
-  fi    
26  
-
27  
-  AC_DEFINE(HAVE_PHP_SOAP,1,[Whether you have soap module])
28  
-
29  
-  PHP_ADD_INCLUDE($XML2_INCDIR)
30  
-  PHP_ADD_LIBRARY_WITH_PATH(xml2,$XML2_LIBDIR,SOAP_SHARED_LIBADD)
31  
-  PHP_NEW_EXTENSION(soap, soap.c php_encoding.c php_http.c php_packet_soap.c php_schema.c php_sdl.c php_xml.c, $ext_shared)
32  
-  PHP_SUBST(SOAP_SHARED_LIBADD)
33  
-fi
25  ext/soap/interop/base.php
... ...
@@ -1,25 +0,0 @@
1  
-<?php
2  
-//
3  
-// +----------------------------------------------------------------------+
4  
-// | PHP Version 4                                                        |
5  
-// +----------------------------------------------------------------------+
6  
-// | Copyright (c) 1997-2003 The PHP Group                                |
7  
-// +----------------------------------------------------------------------+
8  
-// | This source file is subject to version 2.02 of the PHP license,      |
9  
-// | that is bundled with this package in the file LICENSE, and is        |
10  
-// | available at through the world-wide-web at                           |
11  
-// | http://www.php.net/license/2_02.txt.                                 |
12  
-// | If you did not receive a copy of the PHP license and are unable to   |
13  
-// | obtain it through the world-wide-web, please send a note to          |
14  
-// | license@php.net so we can mail you a copy immediately.               |
15  
-// +----------------------------------------------------------------------+
16  
-// | Authors: Shane Caraveo <Shane@Caraveo.com>                           |
17  
-// +----------------------------------------------------------------------+
18  
-//
19  
-// $Id$
20  
-//
21  
-class Interop_Base
22  
-{
23  
-}
24  
-
25  
-?>
102  ext/soap/interop/client_round2.php
... ...
@@ -1,102 +0,0 @@
1  
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2  
-
3  
-<html>
4  
-<head>
5  
-	<title>Round 2 Interop Client Tests</title>
6  
-</head>
7  
-
8  
-<body>
9  
-<a href="index.php">Back to Interop Index</a><br>
10  
-<p>&nbsp;</p>
11  
-<?php
12  
-require_once 'SOAP/interop/client_round2_interop.php';
13  
-
14  
-$iop = new Interop_Client();
15  
-
16  
-function endpointList($test,$sel_endpoint)
17  
-{
18  
-    global $iop;
19  
-    $iop->getEndpoints($test);
20  
-    echo "<select name='endpoint'>\n";
21  
-    foreach ($iop->endpoints as $epname => $epinfo) {
22  
-        $selected = '';
23  
-        if ($sel_endpoint == $epname) $selected = ' SELECTED';
24  
-        echo "<option value='$epname'$selected>$epname</option>\n";
25  
-    }
26  
-    echo "</select>\n";
27  
-}
28  
-function methodList($test,$sel_method)
29  
-{
30  
-    global $iop;
31  
-    
32  
-    $ml = $iop->getMethodList($test);
33  
-    echo "<select name='method'>\n";
34  
-    foreach ($ml as $method) {
35  
-        $selected = '';
36  
-        if ($sel_method == $method) $selected = ' SELECTED';
37  
-        echo "<option value='$method'$selected>$method</option>\n";
38  
-    }
39  
-    echo "<option value='ALL'>Run All Methods</option>\n";
40  
-    echo "</select>\n";
41  
-}
42  
-
43  
-function endpointTestForm($test, $endpoint, $method, $paramType, $useWSDL)
44  
-{
45  
-    global $PHP_SELF;
46  
-    if (!$test) $test = 'base';
47  
-    echo "Round 2 '$test' Selected<br>\n";
48  
-    echo "Select endpoint and method to run:<br>\n";
49  
-    echo "<form action='$PHP_SELF' method='post'>\n";
50  
-    echo "<input type='hidden' name='test' value='$test'>\n";
51  
-    endpointList($test, $endpoint);
52  
-    methodList($test, $method);
53  
-    echo "<select name='paramType'><option value='soapval'>soap value</option>";
54  
-    echo "<option value='php'".($paramType=='php'?' selected':'').">php internal type</option></select>\n";
55  
-    echo "<select name='useWSDL'><option value='0'>go Direct</option><option value='1'".($useWSDL?' selected':'').">use WSDL</option></select>\n";
56  
-    echo "<input type='submit' value='Go'>\n";
57  
-    echo "</form><br>\n";
58  
-}
59  
-
60  
-function testSelectForm($selected_test = NULL)
61  
-{
62  
-    global $iop, $PHP_SELF;
63  
-    echo "Select a Round 2 test case to run:<br>\n";
64  
-    echo "<form action='$PHP_SELF' method='post'>\n";
65  
-    echo "<select name='test'>\n";
66  
-    foreach ($iop->tests as $test) {
67  
-        $selected = '';
68  
-        if ($selected_test == $test) $selected = ' SELECTED';
69  
-        echo "<option value='$test'$selected>$test</option>\n";
70  
-    }
71  
-    echo "</select>\n";
72  
-    echo "<input type='submit' value='Go'>\n";
73  
-    echo "</form><br>\n";
74  
-}
75  
-
76  
-testSelectForm($_POST['test']);
77  
-endpointTestForm($_POST['test'],$_POST['endpoint'],$_POST['method'],$_POST['paramType'],$_POST['useWSDL']);
78  
-
79  
-if ($_POST['test'] && array_key_exists('endpoint', $_POST) && array_key_exists('method', $_POST)) {
80  
-    // here we execute the orders
81  
-    echo "<h2>Calling {$_POST['method']} at {$_POST['endpoint']}</h2>\n";
82  
-    echo "NOTE: wire's are slightly modified to display better in web browsers.<br>\n";
83  
-    
84  
-    $iop->currentTest = $_POST['test'];      // see $tests above
85  
-    $iop->paramType = $_POST['paramType'];     // 'php' or 'soapval'
86  
-    $iop->useWSDL = $_POST['useWSDL'];           // 1= do wsdl tests
87  
-    $iop->numServers = 0;        // 0 = all
88  
-    $iop->specificEndpoint = $_POST['endpoint']; // test only this endpoint
89  
-    $iop->testMethod = $_POST['method']=='ALL'?'':$_POST['method'];       // test only this method
90  
-    $iop->skipEndpointList = array(); // endpoints to skip
91  
-    $this->nosave = 0; // 1= disable saving results to database
92  
-    // debug output
93  
-    $iop->show = 1;
94  
-    $iop->debug = 1;
95  
-    $iop->showFaults = 0; // used in result table output
96  
-    echo '<pre>';
97  
-    $iop->doTest();  // run a single set of tests using above options
98  
-    echo '</pre>';
99  
-}
100  
-?>
101  
-</body>
102  
-</html>
796  ext/soap/interop/client_round2_interop.php
... ...
@@ -1,796 +0,0 @@
1  
-<?php
2  
-//
3  
-// +----------------------------------------------------------------------+
4  
-// | PHP Version 4                                                        |
5  
-// +----------------------------------------------------------------------+
6  
-// | Copyright (c) 1997-2003 The PHP Group                                |
7  
-// +----------------------------------------------------------------------+
8  
-// | This source file is subject to version 2.02 of the PHP license,      |
9  
-// | that is bundled with this package in the file LICENSE, and is        |
10  
-// | available at through the world-wide-web at                           |
11  
-// | http://www.php.net/license/2_02.txt.                                 |
12  
-// | If you did not receive a copy of the PHP license and are unable to   |
13  
-// | obtain it through the world-wide-web, please send a note to          |
14  
-// | license@php.net so we can mail you a copy immediately.               |
15  
-// +----------------------------------------------------------------------+
16  
-// | Authors: Shane Caraveo <Shane@Caraveo.com>                           |
17  
-// +----------------------------------------------------------------------+
18  
-//
19  
-// $Id$
20  
-//
21  
-require_once 'DB.php'; // PEAR/DB
22  
-require_once 'base.php';
23  
-require_once 'client_round2_params.php';
24  
-require_once 'test.utility.php';
25  
-
26  
-error_reporting(E_ALL ^ E_NOTICE);
27  
-
28  
-class Interop_Client extends Interop_Base
29  
-{
30  
-    // database DNS
31  
-    var $DSN = 'mysql://user@localhost/interop2';
32  
-
33  
-    // our central interop server, where we can get the list of endpoints
34  
-    var $interopServer = "http://www.whitemesa.net/interopInfo";
35  
-    
36  
-    // our local endpoint, will always get added to the database for all tests
37  
-    var $localEndpoint;
38  
-    
39  
-    // specify testing
40  
-    var $currentTest = 'base';      // see $tests above
41  
-    var $paramType = 'php';     // 'php' or 'soapval'
42  
-    var $useWSDL = 0;           // 1= do wsdl tests
43  
-    var $numServers = 0;        // 0 = all
44  
-    var $specificEndpoint = ''; // test only this endpoint
45  
-    var $testMethod = '';       // test only this method
46  
-    var $skipEndpointList = array(); // endpoints to skip
47  
-    var $nosave = 0;
48  
-    var $startAt = ''; // start in list at this endpoint
49  
-    // debug output
50  
-    var $show = 1;
51  
-    var $debug = 0;
52  
-    var $showFaults = 0; // used in result table output
53  
-    
54  
-    // PRIVATE VARIABLES
55  
-    var $dbc = NULL;
56  
-    var $totals = array();
57  
-    var $tests = array('base','GroupB', 'GroupC');
58  
-    var $paramTypes = array('php', 'soapval');
59  
-    var $endpoints = array();
60  
-    
61  
-    function Interop_Client() {
62  
-        // set up the database connection
63  
-        $this->dbc = DB::connect($this->DSN, true);
64  
-        // if it errors out, just ignore it and rely on regular methods
65  
-        if (DB::isError($this->dbc)) {
66  
-            echo $this->dbc->getMessage();
67  
-            $this->dbc = NULL;
68  
-        }
69  
-        // set up local endpoint
70  
-        $this->localEndpoint['base'] = array(
71  
-                                'endpointName'=>'PEAR SOAP',
72  
-                                'endpointURL'=>'http://localhost/soap_interop/server_round2.php',
73  
-                                'wsdlURL'=>'http://localhost/soap_interop/interop.wsdl'
74  
-                              );
75  
-        $this->localEndpoint['GroupB'] = array(
76  
-                                'endpointName'=>'PEAR SOAP',
77  
-                                'endpointURL'=>'http://localhost/soap_interop/server_round2.php',
78  
-                                'wsdlURL'=>'http://localhost/soap_interop/interopB.wsdl'
79  
-                              );
80  
-        $this->localEndpoint['GroupC'] = array(
81  
-                                'endpointName'=>'PEAR SOAP',
82  
-                                'endpointURL'=>'http://localhost/soap_interop/server_round2.php',
83  
-                                'wsdlURL'=>'http://localhost/soap_interop/echoheadersvc.wsdl'
84  
-                              );
85  
-    }
86  
-    
87  
-    function _fetchEndpoints(&$soapclient, $test) {
88  
-        $this->_getEndpoints($test, 1);
89  
-        
90  
-        // retreive endpoints from the endpoint server
91  
-        $endpointArray = $soapclient->call("GetEndpointInfo",array("groupName"=>$test),"http://soapinterop.org/info/","http://soapinterop.org/info/");
92  
-        if (PEAR::isError($endpointArray)) {
93  
-            print $soapclient->wire;
94  
-            print_r($endpointArray);
95  
-            return;
96  
-        }
97  
-        
98  
-        // add our local endpoint
99  
-        if ($this->localEndpoint[$test]) {
100  
-        array_push($endpointArray, $this->localEndpoint[$test]);
101  
-        }
102  
-        
103  
-        if (!$endpointArray) return;
104  
-        
105  
-        // reset the status to zero
106  
-        $res = $this->dbc->query("update endpoints set status = 0 where class='$test'");
107  
-        if (DB::isError($res)) {
108  
-            die ($res->getMessage());
109  
-        }
110  
-        if (is_object($res)) $res->free();
111  
-        // save new endpoints into database
112  
-        foreach($endpointArray as $k => $v){
113  
-            if (array_key_exists($v['endpointName'],$this->endpoints)) {
114  
-                $res = $this->dbc->query("update endpoints set endpointURL='{$v['endpointURL']}', wsdlURL='{$v['wsdlURL']}', status=1 where id={$this->endpoints[$v['endpointName']]['id']}");
115  
-            } else {
116  
-                $res = $this->dbc->query("insert into endpoints (endpointName,endpointURL,wsdlURL,class) values('{$v['endpointName']}','{$v['endpointURL']}','{$v['wsdlURL']}','$test')");
117  
-            }
118  
-            if (DB::isError($res)) {
119  
-                die ($res->getMessage());
120  
-            }
121  
-            if (is_object($res)) $res->free();
122  
-        }
123  
-    }
124  
-    
125  
-    /**
126  
-    *  fetchEndpoints
127  
-    * retreive endpoints interop server
128  
-    *
129  
-    * @return boolean result
130  
-    * @access private
131  
-    */    
132  
-    function fetchEndpoints($test = NULL) {
133  
-        // fetch from the interop server
134  
-        $soapclient = new SoapObject($this->interopServer);
135  
-        
136  
-        if ($test) {
137  
-            $this->_fetchEndpoints($soapclient, $test);
138  
-        } else {
139  
-            foreach ($this->tests as $test) {
140  
-                $this->_fetchEndpoints($soapclient, $test);
141  
-            }
142  
-            $test = 'base';
143  
-        }
144  
-        
145  
-        // retreive all endpoints now
146  
-        $this->currentTest = $test;
147  
-        return $this->_getEndpoints($test);
148  
-    }
149  
-    
150  
-    /**
151  
-    *  getEndpoints
152  
-    * retreive endpoints from either database or interop server
153  
-    *
154  
-    * @param string base (see local var $tests)
155  
-    * @param boolean all (if false, only get valid endpoints, status=1)
156  
-    * @return boolean result
157  
-    * @access private
158  
-    */    
159  
-    function getEndpoints($base = 'base', $all = 0) {
160  
-        if (!$this->_getEndpoints($base, $all)) {
161  
-            return $this->fetchEndpoints($base);
162  
-        }
163  
-        return TRUE;
164  
-    }
165  
-
166  
-    /**
167  
-    *  _getEndpoints
168  
-    * retreive endpoints from database
169  
-    *
170  
-    * @param string base (see local var $tests)
171  
-    * @param boolean all (if false, only get valid endpoints, status=1)
172  
-    * @return boolean result
173  
-    * @access private
174  
-    */    
175  
-    function _getEndpoints($base = "", $all = 0) {
176  
-        $this->endpoints = array();
177  
-
178  
-        // build sql
179  
-        $sql = "select * from endpoints ";
180  
-        if ($base) {
181  
-            $sql .= "where class='$base' ";
182  
-            if (!$all) $sql .= "and status=1";
183  
-        } else
184  
-        if (!$all) $sql .= "where status=1";
185  
-        
186  
-        $db_ep = $this->dbc->getAll($sql,NULL, DB_FETCHMODE_ASSOC );
187  
-        if (DB::isError($db_ep)) {
188  
-            echo $sql."\n";
189  
-            echo $db_ep->getMessage();
190  
-            return FALSE;
191  
-        }
192  
-        // rearange the array
193  
-        foreach ($db_ep as $entry) {
194  
-            $this->endpoints[$entry['endpointName']] = $entry;
195  
-        }
196  
-        if (count($this->endpoints) > 0) {
197  
-            $this->currentTest = $base;
198  
-            return TRUE;
199  
-        }
200  
-        return FALSE;
201  
-    }
202  
-
203  
-    /**
204  
-    *  getResults
205  
-    * retreive results from the database, stuff them into the endpoint array
206  
-    *
207  
-    * @access private
208  
-    */
209  
-    function getResults($test = 'base', $type = 'php', $wsdl = 0) {
210  
-        // be sure we have the right endpoints for this test result
211  
-        $this->getEndpoints($test);
212  
-        
213  
-        // retreive the results and put them into the endpoint info
214  
-        $sql = "select * from results where class='$test' and type='$type' and wsdl=$wsdl";
215  
-        $results = $this->dbc->getAll($sql,NULL, DB_FETCHMODE_ASSOC );
216  
-        foreach ($results as $result) {
217  
-            // find the endpoint
218  
-            foreach ($this->endpoints as $epn => $epi) {
219  
-                if ($epi['id'] == $result['endpoint']) {
220  
-                    // store the info
221  
-                    $this->endpoints[$epn]['methods'][$result['function']] = $result;
222  
-                    break;
223  
-                }
224  
-            }
225  
-        }
226  
-    }
227  
-    
228  
-    /**
229  
-    *  saveResults
230  
-    * save the results of a method test into the database
231  
-    *
232  
-    * @access private
233  
-    */
234  
-    function _saveResults($endpoint_id, &$soap_test) {
235  
-        if ($this->nosave) return;
236  
-        
237  
-        $result = $soap_test->result;
238  
-        $wire = $result['wire'];
239  
-        if ($result['success']) {
240  
-            $success = 'OK';
241  
-            $error = '';
242  
-        } else {
243  
-            $success = $result['fault']->faultcode;
244  
-            $error = $result['fault']->faultstring;
245  
-            if (!$wire) $wire= $result['fault']->detail;
246  
-        }
247  
-        
248  
-        $test_name = $soap_test->test_name;
249  
-        // add header info to the test name
250  
-        if ($soap_test->headers) {
251  
-            foreach ($soap_test->headers as $h) {
252  
-                $destination = 0;
253  
-                if (get_class($h) == 'soap_header') {
254  
-                    if ($h->attributes['SOAP-ENV:actor'] == 'http://schemas.xmlsoap.org/soap/actor/next') $destination = 1;
255  
-                    $test_name .= ":{$h->name},$destination,{$h->attributes['SOAP-ENV:mustUnderstand']}";
256  
-                } else {
257  
-                    if (!$h[3] || $h[3] == 'http://schemas.xmlsoap.org/soap/actor/next') $destination = 1;
258  
-                    if (!$h[2]) $h[2] = 0;
259  
-                    $qn = new QName($h[0]);
260  
-                    $test_name .= ":{$qn->name},$destination,".(int)$h[2];
261  
-                }
262  
-            }
263  
-        }
264  
-        
265  
-        $sql = "delete from results where endpoint=$endpoint_id ".
266  
-                    "and class='$this->currentTest' and type='$this->paramType' ".
267  
-                    "and wsdl=$this->useWSDL and function=".
268  
-                    $this->dbc->quote($test_name);
269  
-        #echo "\n".$sql;
270  
-        $res = $this->dbc->query($sql);
271  
-        if (DB::isError($res)) {
272  
-            die ($res->getMessage());
273  
-        }
274  
-        if (is_object($res)) $res->free();
275  
-        
276  
-        $sql = "insert into results (endpoint,stamp,class,type,wsdl,function,result,error,wire) ".
277  
-                    "values($endpoint_id,".time().",'$this->currentTest',".
278  
-                    "'$this->paramType',$this->useWSDL,".
279  
-                    $this->dbc->quote($test_name).",".
280  
-                    $this->dbc->quote($success).",".
281  
-                    $this->dbc->quote($error).",".
282  
-                    ($wire?$this->dbc->quote($wire):"''").")";
283  
-        #echo "\n".$sql;
284  
-        $res = $this->dbc->query($sql);
285  
-        
286  
-        if (DB::isError($res)) {
287  
-            die ($res->getMessage());
288  
-        }
289  
-        if (is_object($res)) $res->free();
290  
-    }
291  
-
292  
-    /**
293  
-    *  decodeSoapval
294  
-    * decodes a soap value to php type, used for test result comparisions
295  
-    *
296  
-    * @param SOAP_Value soapval
297  
-    * @return mixed result
298  
-    * @access public
299  
-    */    
300  
-    function decodeSoapval($soapval)
301  
-    {
302  
-        if (gettype($soapval) == "object" &&
303  
-            (strcasecmp(get_class($soapval),"soapparam") == 0 ||
304  
-             strcasecmp(get_class($soapval),"soapvar") == 0)) {
305  
-                if (strcasecmp(get_class($soapval),"soapparam") == 0)
306  
-                    $val = $soapval->param_data->enc_value;
307  
-                else
308  
-                    $val = $soapval->enc_value;
309  
-        } else {
310  
-            $val = $soapval;
311  
-        }
312  
-        if (is_array($val)) {
313  
-            foreach($val as $k => $v) {
314  
-                if (gettype($v) == "object" &&
315  
-                    (strcasecmp(get_class($soapval),"soapparam") == 0 ||
316  
-                    strcasecmp(get_class($soapval),"soapvar") == 0)) {
317  
-                    $val[$k] = $this->decodeSoapval($v);
318  
-                }
319  
-            }
320  
-        }
321  
-        return $val;
322  
-    }
323  
-    
324  
-    /**
325  
-    *  compareResult
326  
-    * compare two php types for a match
327  
-    *
328  
-    * @param string expect
329  
-    * @param string test_result
330  
-    * @return boolean result
331  
-    * @access public
332  
-    */    
333  
-    function compareResult($expect, $result, $type = NULL)
334  
-    {
335  
-        $ok = 0;
336  
-        $expect_type = gettype($expect);
337  
-        $result_type = gettype($result);
338  
-        if ($expect_type == "array" && $result_type == "array") {
339  
-            # compare arrays
340  
-            $ok = array_compare($expect, $result);
341  
-        } else {
342  
-            if ($type == 'boolean')
343  
-                $ok = boolean_compare($expect, $result);
344  
-            else
345  
-                $ok = string_compare($expect, $result);
346  
-        }
347  
-        return $ok;
348  
-    }
349  
-
350  
-
351  
-    /**
352  
-    *  doEndpointMethod
353  
-    *  run a method on an endpoint and store it's results to the database
354  
-    *
355  
-    * @param array endpoint_info
356  
-    * @param SOAP_Test test
357  
-    * @return boolean result
358  
-    * @access public
359  
-    */    
360  
-    function doEndpointMethod(&$endpoint_info, &$soap_test) {
361  
-        $ok = FALSE;
362  
-        
363  
-        // prepare a holder for the test results
364  
-        $soap_test->result['class'] = $this->currentTest;
365  
-        $soap_test->result['type'] = $this->paramType;
366  
-        $soap_test->result['wsdl'] = $this->useWSDL;
367  
-        
368  
-        if ($this->useWSDL) {
369  
-            if (array_key_exists('wsdlURL',$endpoint_info)) {
370  
-                if (!array_key_exists('client',$endpoint_info)) {
371  
-                    $endpoint_info['client'] = new SoapObject($endpoint_info['wsdlURL']);
372  
-                }
373  
-                $soap =& $endpoint_info['client'];
374  
-                
375  
-                # XXX how do we determine a failure on retreiving/parsing wsdl?
376  
-                if ($soap->wsdl->fault) {
377  
-                    $fault = $soap->wsdl->fault->getFault();
378  
-                    $soap_test->setResult(0,'WSDL',
379  
-                                          $fault->faultstring."\n\n".$fault->detail,
380  
-                                          $fault->faultstring,
381  
-                                          $fault
382  
-                                          );
383  
-                    return FALSE;
384  
-                }
385  
-            } else {
386  
-                $fault = new SoapFault('WSDL',"no WSDL defined for $endpoint");
387  
-                $soap_test->setResult(0,'WSDL',
388  
-                                      $fault->faultstring,
389  
-                                      $fault->faultstring,
390  
-                                      $fault
391  
-                                      );
392  
-                return FALSE;
393  
-            }
394  
-            $namespace = false;
395  
-            $soapaction = false;
396  
-        } else {
397  
-            $namespace = $soapaction = 'http://soapinterop.org/';
398  
-            // hack to make tests work with MS SoapToolkit
399  
-            // it's the only one that uses this soapaction, and breaks if
400  
-            // it isn't right.  Can't wait for soapaction to be fully depricated
401  
-            if ($this->currentTest == 'base' &&
402  
-                strstr($endpoint_info['endpointName'],'MS SOAP ToolKit 2.0')) {
403  
-                $soapaction = 'urn:soapinterop';
404  
-            }
405  
-            if (!array_key_exists('client',$endpoint_info)) {
406  
-                $endpoint_info['client'] = new SoapObject($endpoint_info['endpointURL'],$soapaction);
407  
-            }
408  
-            $soap = $endpoint_info['client'];
409  
-        }
410  
-        // add headers to the test
411  
-        if ($soap_test->headers) {
412  
-            // $header is already a SOAP_Header class
413  
-            foreach ($soap_test->headers as $header) {
414  
-                $soap->addHeader($header);
415  
-            }
416  
-        }
417  
-        // XXX no way to set encoding
418  
-        // this lets us set UTF-8, US-ASCII or other
419  
-        //$soap->setEncoding($soap_test->encoding);
420  
-        
421  
-        if ($this->useWSDL) {
422  
-            $args = '';
423  
-            foreach ($soap_test->method_params as $pname => $param) {
424  
-                $arg = '$soap_test->method_params["'.$pname.'"]';
425  
-                $args .= $args?','.$arg:$arg;
426  
-            }
427  
-            $return = eval('return $soap->'.$soap_test->method_name.'('.$args.');');
428  
-        } else {
429  
-            $return = $soap->__call($soap_test->method_name,$soap_test->method_params,$soapaction, $namespace);
430  
-        }
431  
-        
432  
-        // save the wire
433  
-        $wire = $soap->__getlastrequest()."\n\n".$soap->__getlastresponse();
434  
-        $wire = str_replace('>',">\n",$wire);
435  
-        $wire = str_replace('" ',"\" \n",$wire);
436  
-        #print $wire;
437  
-        
438  
-        if(!$soap->__isfault()){
439  
-            if (is_array($soap_test->method_params) && count($soap_test->method_params) == 1) {
440  
-                $sent = array_shift($soap_test->method_params);
441  
-            } else {
442  
-                $sent = $soap_test->method_params;
443  
-            }
444  
-
445  
-            // compare header results
446  
-            $header_result = array();
447  
-            $headers_ok = TRUE;
448  
-            
449  
-            # XXX need to implement header support!
450  
-            #
451  
-            #if ($soap_test->headers) {
452  
-            #    // $header is already a SOAP_Header class
453  
-            #    foreach ($soap_test->headers as $header) {
454  
-            #        if (get_class($header) != 'soap_header') {
455  
-            #            // assume it's an array
456  
-            #            $header = new SOAP_Header($header[0], NULL, $header[1], $header[2], $header[3], $header[4]);
457  
-            #        }
458  
-            #        $expect = $soap_test->headers_expect[$header->name];
459  
-            #        $header_result[$header->name] = array();
460  
-            #        // XXX need to fix need_result to identify the actor correctly
461  
-            #        $need_result = $hresult ||
462  
-            #            ($header->attributes['SOAP-ENV:actor'] == 'http://schemas.xmlsoap.org/soap/actor/next'
463  
-            #             && $header->attributes['SOAP-ENV:mustUnderstand']);
464  
-            #        if ($expect) {
465  
-            #            $hresult = $soap->headers[key($expect)];
466  
-            #            $ok = !$need_result || $this->compareResult($hresult ,$expect[key($expect)]);
467  
-            #        } else {
468  
-            #            $hresult = $soap->headers[$header->name];
469  
-            #            $expect = $this->decodeSoapval($header);
470  
-            #            $ok = !$need_result || $this->compareResult($hresult ,$expect);
471  
-            #        }
472  
-            #        $header_result[$header->name]['ok'] = $ok;
473  
-            #        if (!$ok) $headers_ok = FALSE;
474  
-            #    }
475  
-            #}
476  
-
477  
-            # we need to decode what we sent so we can compare!
478  
-            $sent_d = $this->decodeSoapval($sent);
479  
-            
480  
-            $soap_test->result['sent'] = $sent;
481  
-            $soap_test->result['return'] = $return;
482  
-            // compare the results with what we sent
483  
-            $ok = $this->compareResult($sent_d,$return, $sent->type);
484  
-            if (!$ok && $soap_test->expect) {
485  
-                $ok = $this->compareResult($soap_test->expect,$return);
486  
-            }
487  
-            
488  
-            if($ok){
489  
-                if (!$headers_ok) {
490  
-                    $fault = new SoapFault('HEADER','The returned result did not match what we expected to receive');
491  
-                    $soap_test->setResult(0,$fault->faultcode,
492  
-                                      $wire,
493  
-                                      $fault->faultstring,
494  
-                                      $fault
495  
-                                      );
496  
-                } else {
497  
-                    $soap_test->setResult(1,'OK',$wire);
498  
-                    $success = TRUE;
499  
-                }
500  
-            } else {
501  
-                $fault = new SoapFault('RESULT','The returned result did not match what we expected to receive');
502  
-                $soap_test->setResult(0,$fault->faultcode,
503  
-                                  $wire,
504  
-                                  $fault->faultstring,
505  
-                                  $fault
506  
-                                  );
507  
-            }
508  
-        } else {
509  
-            $fault = $soap->__getfault();
510  
-            if ($soap_test->expect_fault) {
511  
-                $ok = 1;
512  
-                $res = 'OK';
513  
-            } else {
514  
-                $ok = 0;
515  
-                $res =$fault->faultcode;
516  
-            }
517  
-            $soap_test->setResult($ok,$res, $wire,$fault->faultstring, $fault);
518  
-        }
519  
-        return $ok;
520  
-    }
521  
-    
522  
-
523  
-    /**
524  
-    *  doTest
525  
-    *  run a single round of tests
526  
-    *
527  
-    * @access public
528  
-    */    
529  
-    function doTest() {
530  
-        global $soap_tests;
531  
-        // get endpoints for this test
532  
-        $this->getEndpoints($this->currentTest);
533  
-        #clear totals
534  
-        $this->totals = array();
535  
-        
536  
-        $i = 0;
537  
-        foreach($this->endpoints as $endpoint => $endpoint_info){
538  
-            
539  
-            // if we specify an endpoint, skip until we find it
540  
-            if ($this->specificEndpoint && $endpoint != $this->specificEndpoint) continue;
541  
-            if ($this->useWSDL && !$endpoint_info['endpointURL']) continue;
542  
-            
543  
-            $skipendpoint = FALSE;
544  
-            $this->totals['servers']++;
545  
-            #$endpoint_info['tests'] = array();
546  
-            
547  
-            if ($this->show) print "Processing $endpoint at {$endpoint_info['endpointURL']}<br>\n";
548  
-            
549  
-            foreach($soap_tests[$this->currentTest] as $soap_test) {
550  
-            //foreach(array_keys($method_params[$this->currentTest][$this->paramType]) as $method)
551  
-            
552  
-                // only run the type of test we're looking for (php or soapval)
553  
-                if ($soap_test->type != $this->paramType) continue;
554  
-                
555  
-                // if we haven't reached our startpoint, skip
556  
-                if ($this->startAt && $this->startAt != $endpoint_info['endpointName']) continue;
557  
-                $this->startAt = '';
558  
-            
559  
-                // if this is in our skip list, skip it
560  
-                if (in_array($endpoint, $this->skipEndpointList)) {
561  
-                    $skipendpoint = TRUE;
562  
-                    $skipfault = new SoapFault('SKIP','endpoint skipped');
563  
-                    $soap_test->setResult(0,$fault->faultcode, '',
564  
-                                  $skipfault->faultstring,
565  
-                                  $skipfault
566  
-                                  );
567  
-                    #$endpoint_info['tests'][] = &$soap_test;
568  
-                    #$soap_test->showTestResult($this->debug);
569  
-                    #$this->_saveResults($endpoint_info['id'], $soap_test->method_name);
570  
-                    $soap_test->result = NULL;
571  
-                    continue;
572  
-                }
573  
-                
574  
-                // if we're looking for a specific method, skip unless we have it
575  
-                if ($this->testMethod && !strstr($this->testMethod,$soap_test->test_name)) continue;
576  
-                if ($this->testMethod && $this->currentTest == 'GroupC') {
577  
-                    // we have to figure things out now
578  
-                    if (!preg_match('/(.*):(.*),(\d),(\d)/',$this->testMethod, $m)) continue;
579  
-                    
580  
-                    // is the header in the headers list?
581  
-                    $gotit = FALSE;
582  
-                    foreach ($soap_test->headers as $header) {
583  
-                        if (get_class($header) == 'soap_header') {
584  
-                            if ($header->name == $m[2]) {
585  
-                                $gotit = $header->attributes['SOAP-ENV:actor'] == ($m[3]?SOAP_TEST_ACTOR_NEXT:SOAP_TEST_ACTOR_OTHER);
586  
-                                $gotit = $gotit && $header->attributes['SOAP-ENV:mustUnderstand'] == $m[4];
587  
-                            }
588  
-                        } else {
589  
-                            if ($header[0] == $m[2]) {
590  
-                                $gotit = $gotit && $header[3] == ($m[3]?SOAP_TEST_ACTOR_NEXT:SOAP_TEST_ACTOR_OTHER);
591  
-                                $gotit = $gotit && $header[4] == $m[4];
592  
-                            }
593  
-                        }
594  
-                    }
595  
-                    if (!$gotit) continue;
596  
-                }
597  
-            
598  
-                // if we are skipping the rest of the tests (due to error) note a fault
599  
-                if ($skipendpoint) {
600  
-                    $soap_test->setResult(0,$fault->faultcode, '',
601  
-                                  $skipfault->faultstring,
602  
-                                  $skipfault
603  
-                                  );
604  
-                    #$endpoint_info['tests'][] = &$soap_test;
605  
-                    $this->totals['fail']++;
606  
-                } else {
607  
-                    // run the endpoint test
608  
-                    if ($this->doEndpointMethod($endpoint_info, $soap_test)) {
609  
-                        $this->totals['success']++;
610  
-                    } else {
611  
-                        $skipendpoint = $soap_test->result['fault']->faultcode=='HTTP'
612  
-                            && strstr($soap_test->result['fault']->faultstring,'Connect Error');
613  
-                        $skipfault = $soap_test->result['fault'];
614  
-                        $this->totals['fail']++;
615  
-                    }
616  
-                    #$endpoint_info['tests'][] = &$soap_test;
617  
-                }
618  
-                $soap_test->showTestResult($this->debug);
619  
-                $this->_saveResults($endpoint_info['id'], $soap_test);
620  
-                $soap_test->result = NULL;
621  
-                $this->totals['calls']++;
622  
-            }
623  
-            if ($this->numservers && ++$i >= $this->numservers) break;
624  
-        }
625  
-    }
626  
-    
627  
-    function doGroupTests() {
628  
-        $dowsdl = array(0,1);
629  
-        foreach($dowsdl as $usewsdl) {
630  
-            $this->useWSDL = $usewsdl;
631  
-            foreach($this->paramTypes as $ptype) {
632  
-                // skip a pointless test
633  
-                if ($usewsdl && $ptype == 'soapval') break;
634  
-                $this->paramType = $ptype;
635  
-                $this->doTest();
636  
-            }
637  
-        }
638  
-    }
639  
-    
640  
-    /**
641  
-    *  doTests
642  
-    *  go all out.  This takes time.
643  
-    *
644  
-    * @access public
645  
-    */    
646  
-    function doTests() {
647  
-        // the mother of all interop tests
648  
-        $dowsdl = array(0,1);
649  
-        foreach($this->tests as $test) {
650  
-            $this->currentTest = $test;
651  
-            foreach($dowsdl as $usewsdl) {
652  
-                $this->useWSDL = $usewsdl;
653  
-                foreach($this->paramTypes as $ptype) {
654  
-                    // skip a pointless test
655  
-                    if ($usewsdl && $ptype == 'soapval') break;
656  
-                    $this->paramType = $ptype;
657  
-                    $this->doTest();
658  
-                }
659  
-            }
660  
-        }
661  
-    }
662  
-    
663  
-    // ***********************************************************
664  
-    // output functions
665  
-    
666  
-    /**
667  
-    *  getResults
668  
-    * retreive results from the database, stuff them into the endpoint array
669  
-    *
670  
-    * @access private
671  
-    */
672  
-    function getMethodList($test = 'base') {
673  
-        // retreive the results and put them into the endpoint info
674  
-        $sql = "select distinct(function) from results where class='$test' order by function";
675  
-        $results = $this->dbc->getAll($sql);
676  
-        $ar = array();
677  
-        foreach($results as $result) {
678  
-            $ar[] = $result[0];
679  
-        }
680  
-        return $ar;
681  
-    }
682  
-    
683  
-    function outputTable()
684  
-    {
685  
-        $methods = $this->getMethodList($this->currentTest);
686  
-        if (!$methods) return;
687  
-        $this->getResults($this->currentTest,$this->paramType,$this->useWSDL);
688  
-        
689  
-        echo "<b>Testing $this->currentTest ";
690  
-        if ($this->useWSDL) echo "using WSDL ";
691  
-        else echo "using Direct calls ";
692  
-        echo "with $this->paramType values</b><br>\n";
693  
-        
694  
-        // calculate totals for this table
695  
-        $this->totals['success'] = 0;
696  
-        $this->totals['fail'] = 0;
697  
-        $this->totals['servers'] = 0; #count($this->endpoints);
698  
-        foreach ($this->endpoints as $endpoint => $endpoint_info) {
699  
-            if (count($endpoint_info['methods']) > 0) {
700  
-                $this->totals['servers']++;
701  
-                foreach ($methods as $method) {