Added web service test suite
authorLluis Sanchez <lluis@novell.com>
Fri, 12 Dec 2003 16:46:53 +0000 (16:46 -0000)
committerLluis Sanchez <lluis@novell.com>
Fri, 12 Dec 2003 16:46:53 +0000 (16:46 -0000)
svn path=/trunk/mcs/; revision=21069

20 files changed:
mcs/class/System.Web.Services/Test/standalone/ChangeLog [new file with mode: 0644]
mcs/class/System.Web.Services/Test/standalone/Makefile [new file with mode: 0644]
mcs/class/System.Web.Services/Test/standalone/README [new file with mode: 0644]
mcs/class/System.Web.Services/Test/standalone/WebServiceTest.cs [new file with mode: 0644]
mcs/class/System.Web.Services/Test/standalone/client/appserver.pepperzak.net/BankCodeEJBHomeTest.cs [new file with mode: 0644]
mcs/class/System.Web.Services/Test/standalone/client/localhost/ConvDocEncBarTest.cs [new file with mode: 0644]
mcs/class/System.Web.Services/Test/standalone/client/localhost/ConvDocEncWraTest.cs [new file with mode: 0644]
mcs/class/System.Web.Services/Test/standalone/client/localhost/ConvDocLitBarTest.cs [new file with mode: 0644]
mcs/class/System.Web.Services/Test/standalone/client/localhost/ConvDocLitWraTest.cs [new file with mode: 0644]
mcs/class/System.Web.Services/Test/standalone/client/localhost/ConvRpcTest.cs [new file with mode: 0644]
mcs/class/System.Web.Services/Test/standalone/server/ConvDocEncBar.asmx [new file with mode: 0644]
mcs/class/System.Web.Services/Test/standalone/server/ConvDocEncWra.asmx [new file with mode: 0644]
mcs/class/System.Web.Services/Test/standalone/server/ConvDocLitBar.asmx [new file with mode: 0644]
mcs/class/System.Web.Services/Test/standalone/server/ConvDocLitWra.asmx [new file with mode: 0644]
mcs/class/System.Web.Services/Test/standalone/server/ConvRpc.asmx [new file with mode: 0644]
mcs/class/System.Web.Services/Test/standalone/server/xsp.disco [new file with mode: 0644]
mcs/class/System.Web.Services/Test/standalone/services.xml [new file with mode: 0644]
mcs/class/System.Web.Services/Test/standalone/wsdl.ignore [new file with mode: 0644]
mcs/class/System.Web.Services/Test/standalone/wstest [new file with mode: 0755]
mcs/class/System.Web.Services/Test/standalone/wstest.cs [new file with mode: 0644]

diff --git a/mcs/class/System.Web.Services/Test/standalone/ChangeLog b/mcs/class/System.Web.Services/Test/standalone/ChangeLog
new file mode 100644 (file)
index 0000000..ddf7509
--- /dev/null
@@ -0,0 +1,4 @@
+2003-12-12  Lluis Sanchez Gual  <lluis@ximian.com>
+
+       * Added web service test suite
+       
diff --git a/mcs/class/System.Web.Services/Test/standalone/Makefile b/mcs/class/System.Web.Services/Test/standalone/Makefile
new file mode 100644 (file)
index 0000000..d6eb9ba
--- /dev/null
@@ -0,0 +1,37 @@
+MCS=mcs -g
+sourcefile = proxies.sources
+
+%.dll: %.cs
+       $(MCS) /r:System.Web.dll /target:library $<
+
+all: tools update gen proxies tests
+
+tools: wstest.exe
+
+proxies: proxies.dll
+
+wstest.exe: wstest.cs
+       $(MCS) wstest.cs /r:System.Web.Services.dll
+       
+clean:
+       rm -f *.dll *.exe *~ *.pdb
+       rm error/*
+
+proxies.dll:
+       $(MCS) /r:System.Web.Services.dll /target:library -out:proxies.dll @proxies.sources
+
+tests: proxies
+       $(MCS) /r:proxies.dll /r:System.Web.Services.dll /r:NUnit.Framework.dll /target:library -out:testclient.dll @client.sources WebServiceTest.cs
+
+update:
+       mono --debug wstest.exe ur http://www.xmethods.net/default.disco wsdl.ignore
+       mono --debug wstest.exe ur http://localhost:8080/xsp.disco
+
+gen:
+       mono --debug wstest.exe gp
+
+regen:
+       mono --debug wstest.exe gp all
+
+cls:
+       mono --debug wstest.exe clean
diff --git a/mcs/class/System.Web.Services/Test/standalone/README b/mcs/class/System.Web.Services/Test/standalone/README
new file mode 100644 (file)
index 0000000..f123e89
--- /dev/null
@@ -0,0 +1,91 @@
+Web Service Test Suite
+----------------------
+
+This directory contains a test suite for testing Web Services. It tests:
+
+* Proxy generation using the wsdl tool
+* Access to web services using the generated client proxies
+* Execution of web services in the server
+
+This suite not only tests web services running on XSP, but it can also test
+services running on other platforms and that are available in internet. This
+will help track down interoperability issues.
+
+To build the test suite, just run:
+
+> xsp --nonstop --root server &
+> make
+
+This will download the wsdl documents, generate the proxies, build a dll with
+the proxies, and build the nunit tests. Then you can use nunit-console or
+gnunit to run the tests (the nunit dll is testclient.dll).
+
+Which services are tested?
+--------------------------
+
+The file services.xml contains the list of services to test. There is an
+xml element for each web service with the following structure:
+
+  <service>
+    <wsdl>url</wsdl>                                   // url to the wsdl document
+    <name>name</name>                                  // name of the service
+    <protocols>                                                        // List of protocols for which to
+      <protocol>Soap</protocol>                        // generate a proxy
+      <protocol>HttpGet</protocol>
+      <protocol>HttpPost</protocol>
+    </protocols>
+    <clientTest>true</clientTest>              // True if there is a nunit test
+  </service>                                                   // for the service
+
+Notice that not all web services will have a corresponding nunit test, since
+such test is not allways possible. However, proxy generation will be tested
+for all of them.
+
+You can manually add new services to the list or use the wstest tool to add
+a list of references included in a DISCO document. For example:
+
+> ./wstest ur <url> <ignore-file>
+
+This will download the DISCO document from the provided <url> and add an entry
+for each service referenced in the document. The second parameter is optional,
+it is a file that contains a list of wsdl urls that should be ignored from the
+document.
+
+The current Makefile downloads references from the following locations:
+
+* http://www.xmethods.net/default.disco
+* http://localhost:8080/xsp.disco
+
+Creating a new nunit test
+-------------------------
+
+To test services running in XSP, just add the asmx file in the "server"
+directory and update the xsp.disco file in there. Then run "make".
+
+To create a nunit test for a web service already registered, just run:
+
+> ./wstest gc <url>
+
+Where url is the URL of the service's WSDL document. This will generate a class
+in the "client" directory with a basic structure. You should then manually
+implement the test.
+
+Other useful targets in of the makefile
+---------------------------------------
+
+make update:   Updates the services.xml list with the references from 
+               http://www.xmethods.net/default.disco and
+                               http://localhost:8080/xsp.disco
+                        
+make gen:              Generates proxies for new service references.
+
+make regen:            Regenerates all proxies
+
+make cls:              Removes obsolete proxies and tests.
+
+make proxies:  Builds the proxy library.
+
+make tests:            Builds the nunit library.
+
+make tools:            Builds wstest.
+
diff --git a/mcs/class/System.Web.Services/Test/standalone/WebServiceTest.cs b/mcs/class/System.Web.Services/Test/standalone/WebServiceTest.cs
new file mode 100644 (file)
index 0000000..22671e8
--- /dev/null
@@ -0,0 +1,5 @@
+using NUnit.Framework;
+
+public class WebServiceTest: Assertion
+{
+}
diff --git a/mcs/class/System.Web.Services/Test/standalone/client/appserver.pepperzak.net/BankCodeEJBHomeTest.cs b/mcs/class/System.Web.Services/Test/standalone/client/appserver.pepperzak.net/BankCodeEJBHomeTest.cs
new file mode 100644 (file)
index 0000000..cdead16
--- /dev/null
@@ -0,0 +1,23 @@
+// Web service test for WSDL document:
+// http://appserver.pepperzak.net/bankcode/BankCodeEJBHome/wsdl.jsp
+
+using System;
+using NUnit.Framework;
+using BankCodeEJBHomeTests.Soap;
+
+namespace BankCodeEJBHomeTests
+{
+       [TestFixture]
+       public class BankCodeEJBHomeTest: WebServiceTest
+       {
+               [Test]
+               public void TestService ()
+               {
+                       BankCode bc = new BankCode ();
+                       
+                       AssertEquals ("#1", "10020000  ", bc.getCodeByName ("Berlin"));
+                       string s = bc.getNameByCode ("10020000  ");
+                       AssertEquals ("#2", "10020000  ", bc.getCodeByName (s));
+               }
+       }
+}
diff --git a/mcs/class/System.Web.Services/Test/standalone/client/localhost/ConvDocEncBarTest.cs b/mcs/class/System.Web.Services/Test/standalone/client/localhost/ConvDocEncBarTest.cs
new file mode 100644 (file)
index 0000000..565b529
--- /dev/null
@@ -0,0 +1,46 @@
+// Web service test for WSDL document:
+// http://localhost:8080/ConvDocEncBar.asmx?wsdl
+
+using System;
+using NUnit.Framework;
+using ConvDocEncBarTests.Soap;
+
+namespace ConvDocEncBarTests
+{
+       [TestFixture]
+       public class ConvDocEncBarTest: WebServiceTest
+       {
+               [Test]
+               public void TestService ()
+               {
+                       ConverterServiceSoap cs = new ConverterServiceSoap ();
+                       cs.Login ("lluis");
+                       cs.SetCurrencyRate ("EUR", 0.5);
+                       AssertEquals ("#1", 0.5, cs.GetCurrencyRate ("EUR"));
+                       
+                       double res = cs.Convert ("EUR","USD",6);
+                       AssertEquals ("#2", (int)res, (int)12);
+                       
+                       CurrencyInfo[] infos = cs.GetCurrencyInfo ();
+                       foreach (CurrencyInfo info in infos)
+                       {
+                               double val = 0;
+                               switch (info.Name)
+                               {
+                                       case "USD": val = 1; break;
+                                       case "EUR": val = 0.5; break;
+                                       case "GBP": val = 0.611817; break;
+                                       case "JPY": val = 118.271; break;
+                                       case "CAD": val = 1.36338; break;
+                                       case "AUD": val = 1.51485; break;
+                                       case "CHF": val = 1.36915; break;
+                                       case "RUR": val = 30.4300; break;
+                                       case "CNY": val = 8.27740; break;
+                                       case "ZAR": val = 7.62645; break;
+                                       case "MXN": val = 10.5025; break;
+                               }
+                               AssertEquals ("#3 " + info.Name, val, info.Rate);
+                       }
+               }
+       }
+}
diff --git a/mcs/class/System.Web.Services/Test/standalone/client/localhost/ConvDocEncWraTest.cs b/mcs/class/System.Web.Services/Test/standalone/client/localhost/ConvDocEncWraTest.cs
new file mode 100644 (file)
index 0000000..21f2733
--- /dev/null
@@ -0,0 +1,46 @@
+// Web service test for WSDL document:
+// http://localhost:8080/ConvDocEncWra.asmx?wsdl
+
+using System;
+using NUnit.Framework;
+using ConvDocEncWraTests.Soap;
+
+namespace ConvDocEncWraTests
+{
+       [TestFixture]
+       public class ConvDocEncWraTest: WebServiceTest
+       {
+               [Test]
+               public void TestService ()
+               {
+                       ConverterServiceSoap cs = new ConverterServiceSoap ();
+                       cs.Login ("lluis");
+                       cs.SetCurrencyRate ("EUR", 0.5);
+                       AssertEquals ("#1", 0.5, cs.GetCurrencyRate ("EUR"));
+                       
+                       double res = cs.Convert ("EUR","USD",6);
+                       AssertEquals ("#2", (int)res, (int)12);
+                       
+                       CurrencyInfo[] infos = cs.GetCurrencyInfo ();
+                       foreach (CurrencyInfo info in infos)
+                       {
+                               double val = 0;
+                               switch (info.Name)
+                               {
+                                       case "USD": val = 1; break;
+                                       case "EUR": val = 0.5; break;
+                                       case "GBP": val = 0.611817; break;
+                                       case "JPY": val = 118.271; break;
+                                       case "CAD": val = 1.36338; break;
+                                       case "AUD": val = 1.51485; break;
+                                       case "CHF": val = 1.36915; break;
+                                       case "RUR": val = 30.4300; break;
+                                       case "CNY": val = 8.27740; break;
+                                       case "ZAR": val = 7.62645; break;
+                                       case "MXN": val = 10.5025; break;
+                               }
+                               AssertEquals ("#3 " + info.Name, val, info.Rate);
+                       }
+               }
+       }
+}
diff --git a/mcs/class/System.Web.Services/Test/standalone/client/localhost/ConvDocLitBarTest.cs b/mcs/class/System.Web.Services/Test/standalone/client/localhost/ConvDocLitBarTest.cs
new file mode 100644 (file)
index 0000000..2949e34
--- /dev/null
@@ -0,0 +1,46 @@
+// Web service test for WSDL document:
+// http://localhost:8080/ConvDocLitBar.asmx?wsdl
+
+using System;
+using NUnit.Framework;
+using ConvDocLitBarTests.Soap;
+
+namespace ConvDocLitBarTests
+{
+       [TestFixture]
+       public class ConvDocLitBarTest: WebServiceTest
+       {
+               [Test]
+               public void TestService ()
+               {
+                       ConverterServiceSoap cs = new ConverterServiceSoap ();
+                       cs.Login ("lluis");
+                       cs.SetCurrencyRate ("EUR", 0.5);
+                       AssertEquals ("#1", 0.5, cs.GetCurrencyRate ("EUR"));
+                       
+                       double res = cs.Convert ("EUR","USD",6);
+                       AssertEquals ("#2", (int)res, (int)12);
+                       
+                       CurrencyInfo[] infos = cs.GetCurrencyInfo ();
+                       foreach (CurrencyInfo info in infos)
+                       {
+                               double val = 0;
+                               switch (info.Name)
+                               {
+                                       case "USD": val = 1; break;
+                                       case "EUR": val = 0.5; break;
+                                       case "GBP": val = 0.611817; break;
+                                       case "JPY": val = 118.271; break;
+                                       case "CAD": val = 1.36338; break;
+                                       case "AUD": val = 1.51485; break;
+                                       case "CHF": val = 1.36915; break;
+                                       case "RUR": val = 30.4300; break;
+                                       case "CNY": val = 8.27740; break;
+                                       case "ZAR": val = 7.62645; break;
+                                       case "MXN": val = 10.5025; break;
+                               }
+                               AssertEquals ("#3 " + info.Name, val, info.Rate);
+                       }
+               }
+       }
+}
diff --git a/mcs/class/System.Web.Services/Test/standalone/client/localhost/ConvDocLitWraTest.cs b/mcs/class/System.Web.Services/Test/standalone/client/localhost/ConvDocLitWraTest.cs
new file mode 100644 (file)
index 0000000..c7d795d
--- /dev/null
@@ -0,0 +1,46 @@
+// Web service test for WSDL document:
+// http://localhost:8080/ConvDocLitWra.asmx?wsdl
+
+using System;
+using NUnit.Framework;
+using ConvDocLitWraTests.Soap;
+
+namespace ConvDocLitWraTests
+{
+       [TestFixture]
+       public class ConvDocLitWraTest: WebServiceTest
+       {
+               [Test]
+               public void TestService ()
+               {
+                       ConverterServiceSoap cs = new ConverterServiceSoap ();
+                       cs.Login ("lluis");
+                       cs.SetCurrencyRate ("EUR", 0.5);
+                       AssertEquals ("#1", 0.5, cs.GetCurrencyRate ("EUR"));
+                       
+                       double res = cs.Convert ("EUR","USD",6);
+                       AssertEquals ("#2", (int)res, (int)12);
+                       
+                       CurrencyInfo[] infos = cs.GetCurrencyInfo ();
+                       foreach (CurrencyInfo info in infos)
+                       {
+                               double val = 0;
+                               switch (info.Name)
+                               {
+                                       case "USD": val = 1; break;
+                                       case "EUR": val = 0.5; break;
+                                       case "GBP": val = 0.611817; break;
+                                       case "JPY": val = 118.271; break;
+                                       case "CAD": val = 1.36338; break;
+                                       case "AUD": val = 1.51485; break;
+                                       case "CHF": val = 1.36915; break;
+                                       case "RUR": val = 30.4300; break;
+                                       case "CNY": val = 8.27740; break;
+                                       case "ZAR": val = 7.62645; break;
+                                       case "MXN": val = 10.5025; break;
+                               }
+                               AssertEquals ("#3 " + info.Name, val, info.Rate);
+                       }
+               }
+       }
+}
diff --git a/mcs/class/System.Web.Services/Test/standalone/client/localhost/ConvRpcTest.cs b/mcs/class/System.Web.Services/Test/standalone/client/localhost/ConvRpcTest.cs
new file mode 100644 (file)
index 0000000..51335c1
--- /dev/null
@@ -0,0 +1,46 @@
+// Web service test for WSDL document:
+// http://localhost:8080/ConvRpc.asmx?wsdl
+
+using System;
+using NUnit.Framework;
+using ConvRpcTests.Soap;
+
+namespace ConvRpcTests
+{
+       [TestFixture]
+       public class ConvRpcTest: WebServiceTest
+       {
+               [Test]
+               public void TestService ()
+               {
+                       ConverterServiceSoap cs = new ConverterServiceSoap ();
+                       cs.Login ("lluis");
+                       cs.SetCurrencyRate ("EUR", 0.5);
+                       AssertEquals ("#1", 0.5, cs.GetCurrencyRate ("EUR"));
+                       
+                       double res = cs.Convert ("EUR","USD",6);
+                       AssertEquals ("#2", (int)res, (int)12);
+                       
+                       CurrencyInfo[] infos = cs.GetCurrencyInfo ();
+                       foreach (CurrencyInfo info in infos)
+                       {
+                               double val = 0;
+                               switch (info.Name)
+                               {
+                                       case "USD": val = 1; break;
+                                       case "EUR": val = 0.5; break;
+                                       case "GBP": val = 0.611817; break;
+                                       case "JPY": val = 118.271; break;
+                                       case "CAD": val = 1.36338; break;
+                                       case "AUD": val = 1.51485; break;
+                                       case "CHF": val = 1.36915; break;
+                                       case "RUR": val = 30.4300; break;
+                                       case "CNY": val = 8.27740; break;
+                                       case "ZAR": val = 7.62645; break;
+                                       case "MXN": val = 10.5025; break;
+                               }
+                               AssertEquals ("#3 " + info.Name, val, info.Rate);
+                       }
+               }
+       }
+}
diff --git a/mcs/class/System.Web.Services/Test/standalone/server/ConvDocEncBar.asmx b/mcs/class/System.Web.Services/Test/standalone/server/ConvDocEncBar.asmx
new file mode 100644 (file)
index 0000000..4c70cdd
--- /dev/null
@@ -0,0 +1,144 @@
+<%@ WebService Language="c#" Codebehind="ConverterService.asmx.cs" Class="WebServiceTests.ConverterService" %>
+
+using System;
+using System.Collections;
+using System.Xml.Serialization;
+using System.Web.Services;
+using System.Web.Services.Protocols;
+using System.Web.Services.Description;
+
+namespace WebServiceTests
+{
+       public class UserInfo : SoapHeader 
+       {
+               public int userId;
+       }
+       
+       public class CurrencyInfo
+       {
+               public CurrencyInfo ()
+               {
+               }
+
+               public CurrencyInfo (string name, double rate) 
+               {
+                       Name = name;
+                       Rate = rate;
+               }
+               
+               public string Name;
+               public double Rate;
+       }
+       
+       public class Simple
+       {
+               public int Dada;
+       }
+
+       [WebServiceAttribute (Description="Web service that can make currency conversions")]
+       [SoapDocumentServiceAttribute (Use=SoapBindingUse.Encoded, ParameterStyle=SoapParameterStyle.Bare)]
+       public class ConverterService : System.Web.Services.WebService
+       {
+               static int userCount = 0;
+               static Hashtable conversionTable;
+               
+               public UserInfo userInfo;
+
+               static ConverterService ()
+               {
+                       conversionTable = new Hashtable ();
+                       InternalSetCurrencyRate ("USD", 1);
+                       InternalSetCurrencyRate ("EUR", 0.883884 );
+                       InternalSetCurrencyRate ("GBP", 0.611817 );
+                       InternalSetCurrencyRate ("JPY", 118.271 );
+                       InternalSetCurrencyRate ("CAD", 1.36338 );
+                       InternalSetCurrencyRate ("AUD", 1.51485 );
+                       InternalSetCurrencyRate ("CHF", 1.36915 );
+                       InternalSetCurrencyRate ("RUR", 30.4300 );
+                       InternalSetCurrencyRate ("CNY", 8.27740 );
+                       InternalSetCurrencyRate ("ZAR", 7.62645 );
+                       InternalSetCurrencyRate ("MXN", 10.5025 );
+               }
+               
+               [WebMethod (Description="Registers the user into the system")]
+               [SoapHeaderAttribute ("userInfo", Direction = SoapHeaderDirection.Out)]
+               public void Login (string a)
+               {
+                       userInfo = new UserInfo ();
+                       userInfo.userId = ++userCount;
+               }
+
+               [WebMethod (Description="Converts an amount from one currency to another currency")]
+               [SoapHeaderAttribute ("userInfo")]
+               public double Convert (string sourceCurrency, string targetCurrency, double value)
+               {
+                       CheckUser ();
+                       double usd = (1 / GetCurrencyRate (sourceCurrency)) * value;
+                       return usd * GetCurrencyRate (targetCurrency);
+               }
+               
+               [WebMethod (Description="Returns a list of currency rates")]
+               [SoapHeaderAttribute ("userInfo")]
+               public CurrencyInfo[] GetCurrencyInfo ()
+               {
+                       CheckUser ();
+                       
+                       lock (conversionTable)
+                       {
+                               CurrencyInfo[] info = new CurrencyInfo[conversionTable.Count];
+                               int n = 0;
+                               foreach (CurrencyInfo cinfo in conversionTable.Values)
+                                       info [n++] = cinfo;
+                               return info;
+                       }
+               }
+               
+               [WebMethod (Description="Sets the rate of a currency")]
+               [SoapHeaderAttribute ("userInfo")]
+               public void SetCurrencyRate (string currency, double rate)
+               {
+                       CheckUser ();
+                       InternalSetCurrencyRate (currency, rate);
+               }
+
+               static void InternalSetCurrencyRate (string currency, double rate)
+               {
+                       lock (conversionTable)
+                       {
+                               conversionTable [currency] = new CurrencyInfo (currency, rate);
+                       }
+               }
+
+               [WebMethod (Description="Returns the rate of a currency")]
+               [SoapHeaderAttribute ("userInfo")]
+               public double GetCurrencyRate ([XmlElement(DataType="Name")]string cname)
+               {
+                       CheckUser ();
+                       lock (conversionTable)
+                       {
+                               if (!conversionTable.ContainsKey (cname))
+                                       throw new SoapException ("Unknown currency '" + cname + "'", SoapException.ServerFaultCode);
+                                       
+                               return ((CurrencyInfo) conversionTable [cname]).Rate;
+                       }
+               }
+               
+               [WebMethod]
+               public void Test (Simple dada1, int dada)
+               {
+                       dada = 1;
+               }
+               
+               [WebMethod (MessageName="Test2")]
+               public void Test (int[] dada2, byte[] dada3, int dada)
+               {
+                       dada = 1;
+               }
+               
+               void CheckUser ()
+               {
+                       if (userInfo == null) 
+                               throw new SoapException ("User not logged", SoapException.ServerFaultCode);
+               }
+       }
+}
diff --git a/mcs/class/System.Web.Services/Test/standalone/server/ConvDocEncWra.asmx b/mcs/class/System.Web.Services/Test/standalone/server/ConvDocEncWra.asmx
new file mode 100644 (file)
index 0000000..a0b24d6
--- /dev/null
@@ -0,0 +1,144 @@
+<%@ WebService Language="c#" Codebehind="ConverterService.asmx.cs" Class="WebServiceTests.ConverterService" %>
+
+using System;
+using System.Collections;
+using System.Xml.Serialization;
+using System.Web.Services;
+using System.Web.Services.Protocols;
+using System.Web.Services.Description;
+
+namespace WebServiceTests
+{
+       public class UserInfo : SoapHeader 
+       {
+               public int userId;
+       }
+       
+       public class CurrencyInfo
+       {
+               public CurrencyInfo ()
+               {
+               }
+
+               public CurrencyInfo (string name, double rate) 
+               {
+                       Name = name;
+                       Rate = rate;
+               }
+               
+               public string Name;
+               public double Rate;
+       }
+       
+       public class Simple
+       {
+               public int Dada;
+       }
+
+       [WebServiceAttribute (Description="Web service that can make currency conversions")]
+       [SoapDocumentServiceAttribute (Use=SoapBindingUse.Encoded, ParameterStyle=SoapParameterStyle.Wrapped)]
+       public class ConverterService : System.Web.Services.WebService
+       {
+               static int userCount = 0;
+               static Hashtable conversionTable;
+               
+               public UserInfo userInfo;
+
+               static ConverterService ()
+               {
+                       conversionTable = new Hashtable ();
+                       InternalSetCurrencyRate ("USD", 1);
+                       InternalSetCurrencyRate ("EUR", 0.883884 );
+                       InternalSetCurrencyRate ("GBP", 0.611817 );
+                       InternalSetCurrencyRate ("JPY", 118.271 );
+                       InternalSetCurrencyRate ("CAD", 1.36338 );
+                       InternalSetCurrencyRate ("AUD", 1.51485 );
+                       InternalSetCurrencyRate ("CHF", 1.36915 );
+                       InternalSetCurrencyRate ("RUR", 30.4300 );
+                       InternalSetCurrencyRate ("CNY", 8.27740 );
+                       InternalSetCurrencyRate ("ZAR", 7.62645 );
+                       InternalSetCurrencyRate ("MXN", 10.5025 );
+               }
+               
+               [WebMethod (Description="Registers the user into the system")]
+               [SoapHeaderAttribute ("userInfo", Direction = SoapHeaderDirection.Out)]
+               public void Login (string a)
+               {
+                       userInfo = new UserInfo ();
+                       userInfo.userId = ++userCount;
+               }
+
+               [WebMethod (Description="Converts an amount from one currency to another currency")]
+               [SoapHeaderAttribute ("userInfo")]
+               public double Convert (string sourceCurrency, string targetCurrency, double value)
+               {
+                       CheckUser ();
+                       double usd = (1 / GetCurrencyRate (sourceCurrency)) * value;
+                       return usd * GetCurrencyRate (targetCurrency);
+               }
+               
+               [WebMethod (Description="Returns a list of currency rates")]
+               [SoapHeaderAttribute ("userInfo")]
+               public CurrencyInfo[] GetCurrencyInfo ()
+               {
+                       CheckUser ();
+                       
+                       lock (conversionTable)
+                       {
+                               CurrencyInfo[] info = new CurrencyInfo[conversionTable.Count];
+                               int n = 0;
+                               foreach (CurrencyInfo cinfo in conversionTable.Values)
+                                       info [n++] = cinfo;
+                               return info;
+                       }
+               }
+               
+               [WebMethod (Description="Sets the rate of a currency")]
+               [SoapHeaderAttribute ("userInfo")]
+               public void SetCurrencyRate (string currency, double rate)
+               {
+                       CheckUser ();
+                       InternalSetCurrencyRate (currency, rate);
+               }
+
+               static void InternalSetCurrencyRate (string currency, double rate)
+               {
+                       lock (conversionTable)
+                       {
+                               conversionTable [currency] = new CurrencyInfo (currency, rate);
+                       }
+               }
+
+               [WebMethod (Description="Returns the rate of a currency")]
+               [SoapHeaderAttribute ("userInfo")]
+               public double GetCurrencyRate ([XmlElement(DataType="Name")]string cname)
+               {
+                       CheckUser ();
+                       lock (conversionTable)
+                       {
+                               if (!conversionTable.ContainsKey (cname))
+                                       throw new SoapException ("Unknown currency '" + cname + "'", SoapException.ServerFaultCode);
+                                       
+                               return ((CurrencyInfo) conversionTable [cname]).Rate;
+                       }
+               }
+               
+               [WebMethod]
+               public void Test (Simple dada1, int dada)
+               {
+                       dada = 1;
+               }
+               
+               [WebMethod (MessageName="Test2")]
+               public void Test (int[] dada2, byte[] dada3, int dada)
+               {
+                       dada = 1;
+               }
+               
+               void CheckUser ()
+               {
+                       if (userInfo == null) 
+                               throw new SoapException ("User not logged", SoapException.ServerFaultCode);
+               }
+       }
+}
diff --git a/mcs/class/System.Web.Services/Test/standalone/server/ConvDocLitBar.asmx b/mcs/class/System.Web.Services/Test/standalone/server/ConvDocLitBar.asmx
new file mode 100644 (file)
index 0000000..ef6728d
--- /dev/null
@@ -0,0 +1,144 @@
+<%@ WebService Language="c#" Codebehind="ConverterService.asmx.cs" Class="WebServiceTests.ConverterService" %>
+
+using System;
+using System.Collections;
+using System.Xml.Serialization;
+using System.Web.Services;
+using System.Web.Services.Protocols;
+using System.Web.Services.Description;
+
+namespace WebServiceTests
+{
+       public class UserInfo : SoapHeader 
+       {
+               public int userId;
+       }
+       
+       public class CurrencyInfo
+       {
+               public CurrencyInfo ()
+               {
+               }
+
+               public CurrencyInfo (string name, double rate) 
+               {
+                       Name = name;
+                       Rate = rate;
+               }
+               
+               public string Name;
+               public double Rate;
+       }
+       
+       public class Simple
+       {
+               public int Dada;
+       }
+
+       [WebServiceAttribute (Description="Web service that can make currency conversions")]
+       [SoapDocumentServiceAttribute (Use=SoapBindingUse.Literal, ParameterStyle=SoapParameterStyle.Bare)]
+       public class ConverterService : System.Web.Services.WebService
+       {
+               static int userCount = 0;
+               static Hashtable conversionTable;
+               
+               public UserInfo userInfo;
+
+               static ConverterService ()
+               {
+                       conversionTable = new Hashtable ();
+                       InternalSetCurrencyRate ("USD", 1);
+                       InternalSetCurrencyRate ("EUR", 0.883884 );
+                       InternalSetCurrencyRate ("GBP", 0.611817 );
+                       InternalSetCurrencyRate ("JPY", 118.271 );
+                       InternalSetCurrencyRate ("CAD", 1.36338 );
+                       InternalSetCurrencyRate ("AUD", 1.51485 );
+                       InternalSetCurrencyRate ("CHF", 1.36915 );
+                       InternalSetCurrencyRate ("RUR", 30.4300 );
+                       InternalSetCurrencyRate ("CNY", 8.27740 );
+                       InternalSetCurrencyRate ("ZAR", 7.62645 );
+                       InternalSetCurrencyRate ("MXN", 10.5025 );
+               }
+               
+               [WebMethod (Description="Registers the user into the system")]
+               [SoapHeaderAttribute ("userInfo", Direction = SoapHeaderDirection.Out)]
+               public void Login (string a)
+               {
+                       userInfo = new UserInfo ();
+                       userInfo.userId = ++userCount;
+               }
+
+               [WebMethod (Description="Converts an amount from one currency to another currency")]
+               [SoapHeaderAttribute ("userInfo")]
+               public double Convert (string sourceCurrency, string targetCurrency, double value)
+               {
+                       CheckUser ();
+                       double usd = (1 / GetCurrencyRate (sourceCurrency)) * value;
+                       return usd * GetCurrencyRate (targetCurrency);
+               }
+               
+               [WebMethod (Description="Returns a list of currency rates")]
+               [SoapHeaderAttribute ("userInfo")]
+               public CurrencyInfo[] GetCurrencyInfo ()
+               {
+                       CheckUser ();
+                       
+                       lock (conversionTable)
+                       {
+                               CurrencyInfo[] info = new CurrencyInfo[conversionTable.Count];
+                               int n = 0;
+                               foreach (CurrencyInfo cinfo in conversionTable.Values)
+                                       info [n++] = cinfo;
+                               return info;
+                       }
+               }
+               
+               [WebMethod (Description="Sets the rate of a currency")]
+               [SoapHeaderAttribute ("userInfo")]
+               public void SetCurrencyRate (string currency, double rate)
+               {
+                       CheckUser ();
+                       InternalSetCurrencyRate (currency, rate);
+               }
+
+               static void InternalSetCurrencyRate (string currency, double rate)
+               {
+                       lock (conversionTable)
+                       {
+                               conversionTable [currency] = new CurrencyInfo (currency, rate);
+                       }
+               }
+
+               [WebMethod (Description="Returns the rate of a currency")]
+               [SoapHeaderAttribute ("userInfo")]
+               public double GetCurrencyRate ([XmlElement(DataType="Name")]string cname)
+               {
+                       CheckUser ();
+                       lock (conversionTable)
+                       {
+                               if (!conversionTable.ContainsKey (cname))
+                                       throw new SoapException ("Unknown currency '" + cname + "'", SoapException.ServerFaultCode);
+                                       
+                               return ((CurrencyInfo) conversionTable [cname]).Rate;
+                       }
+               }
+               
+               [WebMethod]
+               public void Test (Simple dada1, int dada)
+               {
+                       dada = 1;
+               }
+               
+               [WebMethod (MessageName="Test2")]
+               public void Test (int[] dada2, byte[] dada3, int dada)
+               {
+                       dada = 1;
+               }
+               
+               void CheckUser ()
+               {
+                       if (userInfo == null) 
+                               throw new SoapException ("User not logged", SoapException.ServerFaultCode);
+               }
+       }
+}
diff --git a/mcs/class/System.Web.Services/Test/standalone/server/ConvDocLitWra.asmx b/mcs/class/System.Web.Services/Test/standalone/server/ConvDocLitWra.asmx
new file mode 100644 (file)
index 0000000..5908aa6
--- /dev/null
@@ -0,0 +1,144 @@
+<%@ WebService Language="c#" Codebehind="ConverterService.asmx.cs" Class="WebServiceTests.ConverterService" %>
+
+using System;
+using System.Collections;
+using System.Xml.Serialization;
+using System.Web.Services;
+using System.Web.Services.Protocols;
+using System.Web.Services.Description;
+
+namespace WebServiceTests
+{
+       public class UserInfo : SoapHeader 
+       {
+               public int userId;
+       }
+       
+       public class CurrencyInfo
+       {
+               public CurrencyInfo ()
+               {
+               }
+
+               public CurrencyInfo (string name, double rate) 
+               {
+                       Name = name;
+                       Rate = rate;
+               }
+               
+               public string Name;
+               public double Rate;
+       }
+       
+       public class Simple
+       {
+               public int Dada;
+       }
+
+       [WebServiceAttribute (Description="Web service that can make currency conversions")]
+       [SoapDocumentServiceAttribute (Use=SoapBindingUse.Literal, ParameterStyle=SoapParameterStyle.Wrapped)]
+       public class ConverterService : System.Web.Services.WebService
+       {
+               static int userCount = 0;
+               static Hashtable conversionTable;
+               
+               public UserInfo userInfo;
+
+               static ConverterService ()
+               {
+                       conversionTable = new Hashtable ();
+                       InternalSetCurrencyRate ("USD", 1);
+                       InternalSetCurrencyRate ("EUR", 0.883884 );
+                       InternalSetCurrencyRate ("GBP", 0.611817 );
+                       InternalSetCurrencyRate ("JPY", 118.271 );
+                       InternalSetCurrencyRate ("CAD", 1.36338 );
+                       InternalSetCurrencyRate ("AUD", 1.51485 );
+                       InternalSetCurrencyRate ("CHF", 1.36915 );
+                       InternalSetCurrencyRate ("RUR", 30.4300 );
+                       InternalSetCurrencyRate ("CNY", 8.27740 );
+                       InternalSetCurrencyRate ("ZAR", 7.62645 );
+                       InternalSetCurrencyRate ("MXN", 10.5025 );
+               }
+               
+               [WebMethod (Description="Registers the user into the system")]
+               [SoapHeaderAttribute ("userInfo", Direction = SoapHeaderDirection.Out)]
+               public void Login (string a)
+               {
+                       userInfo = new UserInfo ();
+                       userInfo.userId = ++userCount;
+               }
+
+               [WebMethod (Description="Converts an amount from one currency to another currency")]
+               [SoapHeaderAttribute ("userInfo")]
+               public double Convert (string sourceCurrency, string targetCurrency, double value)
+               {
+                       CheckUser ();
+                       double usd = (1 / GetCurrencyRate (sourceCurrency)) * value;
+                       return usd * GetCurrencyRate (targetCurrency);
+               }
+               
+               [WebMethod (Description="Returns a list of currency rates")]
+               [SoapHeaderAttribute ("userInfo")]
+               public CurrencyInfo[] GetCurrencyInfo ()
+               {
+                       CheckUser ();
+                       
+                       lock (conversionTable)
+                       {
+                               CurrencyInfo[] info = new CurrencyInfo[conversionTable.Count];
+                               int n = 0;
+                               foreach (CurrencyInfo cinfo in conversionTable.Values)
+                                       info [n++] = cinfo;
+                               return info;
+                       }
+               }
+               
+               [WebMethod (Description="Sets the rate of a currency")]
+               [SoapHeaderAttribute ("userInfo")]
+               public void SetCurrencyRate (string currency, double rate)
+               {
+                       CheckUser ();
+                       InternalSetCurrencyRate (currency, rate);
+               }
+
+               static void InternalSetCurrencyRate (string currency, double rate)
+               {
+                       lock (conversionTable)
+                       {
+                               conversionTable [currency] = new CurrencyInfo (currency, rate);
+                       }
+               }
+
+               [WebMethod (Description="Returns the rate of a currency")]
+               [SoapHeaderAttribute ("userInfo")]
+               public double GetCurrencyRate ([XmlElement(DataType="Name")]string cname)
+               {
+                       CheckUser ();
+                       lock (conversionTable)
+                       {
+                               if (!conversionTable.ContainsKey (cname))
+                                       throw new SoapException ("Unknown currency '" + cname + "'", SoapException.ServerFaultCode);
+                                       
+                               return ((CurrencyInfo) conversionTable [cname]).Rate;
+                       }
+               }
+               
+               [WebMethod]
+               public void Test (Simple dada1, int dada)
+               {
+                       dada = 1;
+               }
+               
+               [WebMethod (MessageName="Test2")]
+               public void Test (int[] dada2, byte[] dada3, int dada)
+               {
+                       dada = 1;
+               }
+               
+               void CheckUser ()
+               {
+                       if (userInfo == null) 
+                               throw new SoapException ("User not logged", SoapException.ServerFaultCode);
+               }
+       }
+}
diff --git a/mcs/class/System.Web.Services/Test/standalone/server/ConvRpc.asmx b/mcs/class/System.Web.Services/Test/standalone/server/ConvRpc.asmx
new file mode 100644 (file)
index 0000000..f89da0d
--- /dev/null
@@ -0,0 +1,144 @@
+<%@ WebService Language="c#" Codebehind="ConverterService.asmx.cs" Class="WebServiceTests.ConverterService" %>
+
+using System;
+using System.Collections;
+using System.Xml.Serialization;
+using System.Web.Services;
+using System.Web.Services.Protocols;
+using System.Web.Services.Description;
+
+namespace WebServiceTests
+{
+       public class UserInfo : SoapHeader 
+       {
+               public int userId;
+       }
+       
+       public class CurrencyInfo
+       {
+               public CurrencyInfo ()
+               {
+               }
+
+               public CurrencyInfo (string name, double rate) 
+               {
+                       Name = name;
+                       Rate = rate;
+               }
+               
+               public string Name;
+               public double Rate;
+       }
+       
+       public class Simple
+       {
+               public int Dada;
+       }
+
+       [WebServiceAttribute (Description="Web service that can make currency conversions")]
+       [SoapRpcServiceAttribute ()]
+       public class ConverterService : System.Web.Services.WebService
+       {
+               static int userCount = 0;
+               static Hashtable conversionTable;
+               
+               public UserInfo userInfo;
+
+               static ConverterService ()
+               {
+                       conversionTable = new Hashtable ();
+                       InternalSetCurrencyRate ("USD", 1);
+                       InternalSetCurrencyRate ("EUR", 0.883884 );
+                       InternalSetCurrencyRate ("GBP", 0.611817 );
+                       InternalSetCurrencyRate ("JPY", 118.271 );
+                       InternalSetCurrencyRate ("CAD", 1.36338 );
+                       InternalSetCurrencyRate ("AUD", 1.51485 );
+                       InternalSetCurrencyRate ("CHF", 1.36915 );
+                       InternalSetCurrencyRate ("RUR", 30.4300 );
+                       InternalSetCurrencyRate ("CNY", 8.27740 );
+                       InternalSetCurrencyRate ("ZAR", 7.62645 );
+                       InternalSetCurrencyRate ("MXN", 10.5025 );
+               }
+               
+               [WebMethod (Description="Registers the user into the system")]
+               [SoapHeaderAttribute ("userInfo", Direction = SoapHeaderDirection.Out)]
+               public void Login (string a)
+               {
+                       userInfo = new UserInfo ();
+                       userInfo.userId = ++userCount;
+               }
+
+               [WebMethod (Description="Converts an amount from one currency to another currency")]
+               [SoapHeaderAttribute ("userInfo")]
+               public double Convert (string sourceCurrency, string targetCurrency, double value)
+               {
+                       CheckUser ();
+                       double usd = (1 / GetCurrencyRate (sourceCurrency)) * value;
+                       return usd * GetCurrencyRate (targetCurrency);
+               }
+               
+               [WebMethod (Description="Returns a list of currency rates")]
+               [SoapHeaderAttribute ("userInfo")]
+               public CurrencyInfo[] GetCurrencyInfo ()
+               {
+                       CheckUser ();
+                       
+                       lock (conversionTable)
+                       {
+                               CurrencyInfo[] info = new CurrencyInfo[conversionTable.Count];
+                               int n = 0;
+                               foreach (CurrencyInfo cinfo in conversionTable.Values)
+                                       info [n++] = cinfo;
+                               return info;
+                       }
+               }
+               
+               [WebMethod (Description="Sets the rate of a currency")]
+               [SoapHeaderAttribute ("userInfo")]
+               public void SetCurrencyRate (string currency, double rate)
+               {
+                       CheckUser ();
+                       InternalSetCurrencyRate (currency, rate);
+               }
+
+               static void InternalSetCurrencyRate (string currency, double rate)
+               {
+                       lock (conversionTable)
+                       {
+                               conversionTable [currency] = new CurrencyInfo (currency, rate);
+                       }
+               }
+
+               [WebMethod (Description="Returns the rate of a currency")]
+               [SoapHeaderAttribute ("userInfo")]
+               public double GetCurrencyRate ([XmlElement(DataType="Name")]string cname)
+               {
+                       CheckUser ();
+                       lock (conversionTable)
+                       {
+                               if (!conversionTable.ContainsKey (cname))
+                                       throw new SoapException ("Unknown currency '" + cname + "'", SoapException.ServerFaultCode);
+                                       
+                               return ((CurrencyInfo) conversionTable [cname]).Rate;
+                       }
+               }
+               
+               [WebMethod]
+               public void Test (Simple dada1, int dada)
+               {
+                       dada = 1;
+               }
+               
+               [WebMethod (MessageName="Test2")]
+               public void Test (int[] dada2, byte[] dada3, int dada)
+               {
+                       dada = 1;
+               }
+               
+               void CheckUser ()
+               {
+                       if (userInfo == null) 
+                               throw new SoapException ("User not logged", SoapException.ServerFaultCode);
+               }
+       }
+}
diff --git a/mcs/class/System.Web.Services/Test/standalone/server/xsp.disco b/mcs/class/System.Web.Services/Test/standalone/server/xsp.disco
new file mode 100644 (file)
index 0000000..4a95775
--- /dev/null
@@ -0,0 +1,7 @@
+<disco:discovery xmlns:disco='http://schemas.xmlsoap.org/disco/' xmlns:scl='http://schemas.xmlsoap.org/disco/scl/'>
+       <scl:contractRef ref="http://localhost:8080/ConvDocLitWra.asmx?wsdl" />
+       <scl:contractRef ref="http://localhost:8080/ConvDocLitBar.asmx?wsdl" />
+       <scl:contractRef ref="http://localhost:8080/ConvDocEncWra.asmx?wsdl" />
+       <scl:contractRef ref="http://localhost:8080/ConvDocEncBar.asmx?wsdl" />
+       <scl:contractRef ref="http://localhost:8080/ConvRpc.asmx?wsdl" />
+</disco:discovery>
diff --git a/mcs/class/System.Web.Services/Test/standalone/services.xml b/mcs/class/System.Web.Services/Test/standalone/services.xml
new file mode 100644 (file)
index 0000000..eaebc92
--- /dev/null
@@ -0,0 +1,2897 @@
+<?xml version="1.0" encoding="utf-8"?>
+<services xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+  <service>
+    <wsdl>http://upload.eraserver.net/circle24/autoloan.asmx?wsdl</wsdl>
+    <name>autoloanTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+      <protocol>HttpGet</protocol>
+      <protocol>HttpPost</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.kannadakasturi.com/WebServices/kannadakasturiwebservice.asmx?WSDL</wsdl>
+    <name>kannadakasturiwebserviceTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+      <protocol>HttpGet</protocol>
+      <protocol>HttpPost</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.esynaps.com/WebServices/eSynapsSearch.asmx?WSDL</wsdl>
+    <name>eSynapsSearchTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.codemechanisms.co.uk/WebServices/UNSPSC.asmx?WSDL</wsdl>
+    <name>UNSPSCTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.xmlme.com/WSCustNews.asmx?WSDL</wsdl>
+    <name>WSCustNewsTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://arcweb.esri.com/services/v2/Proximity.wsdl</wsdl>
+    <name>ProximityTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://addison.ra.cwru.edu/orc/calendar_copy/server.php?wsdl</wsdl>
+    <name>serverTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://xml.redcoal.net/SMSSOAP/xmlserver.wsdl</wsdl>
+    <name>xmlserverTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.dotnetisp.com/webservices/dotnetisp/src2html.asmx?WSDL</wsdl>
+    <name>src2htmlTest</name>
+    <protocols />
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://ws2.serviceobjects.net/ft/FastTax.asmx?WSDL</wsdl>
+    <name>FastTaxTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+      <protocol>HttpGet</protocol>
+      <protocol>HttpPost</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://xml.nig.ac.jp/wsdl/ClustalW.wsdl</wsdl>
+    <name>ClustalWTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.marotz.se/scripts/searchperson.exe/wsdl/ISearchSwedishPerson</wsdl>
+    <name>ISearchSwedishPersonTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.xmlme.com/WSDailyXml.asmx?WSDL</wsdl>
+    <name>WSDailyXmlTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.dev1.eraserver.net/REFLECTIONIT/Html2xml.asmx?WSDL</wsdl>
+    <name>Html2xmlTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+      <protocol>HttpGet</protocol>
+      <protocol>HttpPost</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.barnaland.is/dev/puki.asmx?WSDL</wsdl>
+    <name>pukiTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+      <protocol>HttpGet</protocol>
+      <protocol>HttpPost</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.transactionalweb.com/SOAP/geoserve.wsdl</wsdl>
+    <name>geoserveTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.hkwizard.com/WeatherService.asmx?wsdl</wsdl>
+    <name>WeatherServiceTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.dl-me.com/webservices/dic2.asmx?WSDL</wsdl>
+    <name>dic2Test</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.xignite.com/xoptions.asmx?WSDL</wsdl>
+    <name>xoptionsTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+      <protocol>HttpGet</protocol>
+      <protocol>HttpPost</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://wsdl.wsdlfeeds.com/holidays.cfc?wsdl</wsdl>
+    <name>holidaysTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://scores.serviceobjects.com/CupScores.asmx?WSDL</wsdl>
+    <name>CupScoresTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+      <protocol>HttpGet</protocol>
+      <protocol>HttpPost</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://soap.systinet.net/demos/Newsfeed/wsdl</wsdl>
+    <name>NewsfeedTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.xmlme.com/WSElectronics.asmx?WSDL</wsdl>
+    <name>WSElectronicsTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://arcweb.esri.com/services/v2/AddressFinder.wsdl</wsdl>
+    <name>AddressFinderTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.xmlme.com/WSVideoGames.asmx?WSDL</wsdl>
+    <name>WSVideoGamesTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.webservicex.net/braille.asmx?WSDL</wsdl>
+    <name>brailleTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+      <protocol>HttpGet</protocol>
+      <protocol>HttpPost</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://ws.digiposs.com/WorldTime.jws?wsdl</wsdl>
+    <name>WorldTimeTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.cosme.nu/services/pop.php?wsdl</wsdl>
+    <name>popTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.marotz.se/PGPKeyServer/PGPKeyServiceX.exe/wsdl/IPGPKeyServer</wsdl>
+    <name>IPGPKeyServerTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.alanbushtrust.org.uk/soap/compositions.wsdl</wsdl>
+    <name>compositionsTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://glkev.webs.innerhost.com/glkev_ws/businessnews.asmx?WSDL</wsdl>
+    <name>businessnewsTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+      <protocol>HttpGet</protocol>
+      <protocol>HttpPost</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://services.develop.co.za/GetLocalTime.asmx?WSDL</wsdl>
+    <name>GetLocalTimeTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://ws2.serviceobjects.net/ln/lotterynumbers.asmx?WSDL</wsdl>
+    <name>lotterynumbersTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+      <protocol>HttpGet</protocol>
+      <protocol>HttpPost</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.blackstoneonline.com/webservices/dispenser.xml</wsdl>
+    <name>dispenserTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+      <protocol>HttpGet</protocol>
+      <protocol>HttpPost</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.esynaps.com/WebServices/DailyDiblert.asmx?WSDL</wsdl>
+    <name>DailyDiblertTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://soap.achchex.com/exec/achsoap.dll/wsdl/IACHSOAP</wsdl>
+    <name>IACHSOAPTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://transform.dataconcert.com/transform.wsdl</wsdl>
+    <name>transformTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.drouet-web.com/webservices/soap_cdtek.php?wsdl</wsdl>
+    <name>soap_cdtekTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://icuisine.net/webservices/RecipeService.asmx?WSDL</wsdl>
+    <name>RecipeServiceTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+      <protocol>HttpGet</protocol>
+      <protocol>HttpPost</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.cs.fsu.edu/~engelen/lu.wsdl</wsdl>
+    <name>luTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.bitounis.com/WebEvents/events.asmx?WSDL</wsdl>
+    <name>eventsTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+      <protocol>HttpGet</protocol>
+      <protocol>HttpPost</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://interpressfact.net/webservices/promotionService.asmx?wsdl</wsdl>
+    <name>promotionServiceTest</name>
+    <protocols />
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.OneOutBox.com/wsdl/FreeFaxService.wsdl</wsdl>
+    <name>FreeFaxServiceTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.ebi.ac.uk/xembl/XEMBL.wsdl</wsdl>
+    <name>XEMBLTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.xmethods.net/sd/2001/CATrafficService.wsdl</wsdl>
+    <name>CATrafficServiceTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.foxcentral.net/foxcentral.wsdl</wsdl>
+    <name>foxcentralTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.cosme.nu/services/convert.php?wsdl</wsdl>
+    <name>convertTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.ripedev.com/webservices/ZipCode.asmx?WSDL</wsdl>
+    <name>ZipCodeTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://ws.cdyne.com/psaddress/addresslookup.asmx?wsdl</wsdl>
+    <name>addresslookupTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+      <protocol>HttpGet</protocol>
+      <protocol>HttpPost</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.strikeiron.com/scripts/statistics.asmx?WSDL</wsdl>
+    <name>statisticsTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.bitounis.com/W3CParser/LogFileParser.asmx?WSDL</wsdl>
+    <name>LogFileParserTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+      <protocol>HttpGet</protocol>
+      <protocol>HttpPost</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.webservicex.net/NAICS.asmx?wsdl</wsdl>
+    <name>NAICSTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+      <protocol>HttpGet</protocol>
+      <protocol>HttpPost</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://ws.cdyne.com/emailverify/ev.asmx?wsdl</wsdl>
+    <name>evTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+      <protocol>HttpGet</protocol>
+      <protocol>HttpPost</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://62.212.78.36/cgi-bin/WagAddressServerSingle.exe/wsdl/IWagAddressServerSingle</wsdl>
+    <name>IWagAddressServerSingleTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://slashdemocracy.org/links/ws4gotze.wsdl</wsdl>
+    <name>ws4gotzeTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://java.rus.uni-stuttgart.de/quiz/quiz.wsdl</wsdl>
+    <name>quizTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.zanetti-dev.com/scripts/zpop3ws.exe/wsdl/IZPOP3</wsdl>
+    <name>IZPOP3Test</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.gama-system.com/webservices/stockquotes.asmx?wsdl</wsdl>
+    <name>stockquotesTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+      <protocol>HttpGet</protocol>
+      <protocol>HttpPost</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.webservicex.net/barcode.asmx?WSDL</wsdl>
+    <name>barcodeTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+      <protocol>HttpGet</protocol>
+      <protocol>HttpPost</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://service.graphmagic.com/GMService/GraphMagic.asmx?wsdl</wsdl>
+    <name>GraphMagicTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://developerdays.com/cgi-bin/tempconverter.exe/wsdl/ITempConverter</wsdl>
+    <name>ITempConverterTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.webservicex.net/icd10.asmx?WSDL</wsdl>
+    <name>icd10Test</name>
+    <protocols>
+      <protocol>Soap</protocol>
+      <protocol>HttpGet</protocol>
+      <protocol>HttpPost</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.marotz.se/scripts/SlashdotHeadlines.exe/wsdl/ISlashdotHeadlineProvider</wsdl>
+    <name>ISlashdotHeadlineProviderTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.xmethods.net/sd/2001/CurrencyExchangeService.wsdl</wsdl>
+    <name>CurrencyExchangeServiceTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://demo.soapam.com/services/FedEpayDirectory/FedEpayDirectoryService.wsdl</wsdl>
+    <name>FedEpayDirectoryServiceTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://webservices.eraserver.net/zipcoderesolver/zipcoderesolver.asmx?WSDL</wsdl>
+    <name>zipcoderesolverTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+      <protocol>HttpGet</protocol>
+      <protocol>HttpPost</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.webservicex.net/icd9toicd10.asmx?WSDL</wsdl>
+    <name>icd9toicd10Test</name>
+    <protocols>
+      <protocol>Soap</protocol>
+      <protocol>HttpGet</protocol>
+      <protocol>HttpPost</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.ebob42.com/cgi-bin/Romulan.exe/wsdl/IRoman</wsdl>
+    <name>IRomanTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.sidespace.com/ws/fission/fissiondotnet.php?wsdl</wsdl>
+    <name>fissiondotnetTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.x-ws.de/cgi-bin/bork/service.wsdl</wsdl>
+    <name>serviceTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.esynaps.com/WebServices/eSynapsMonitor.wsdl</wsdl>
+    <name>eSynapsMonitorTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.dotnetisp.com/webservices/dotnetisp/ville.asmx?WSDL</wsdl>
+    <name>villeTest</name>
+    <protocols />
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.xmlme.com/WSAmazonBox.asmx?WSDL</wsdl>
+    <name>WSAmazonBoxTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.west-wind.com/wconnect/soap/wwhelpservice.wsdl</wsdl>
+    <name>wwhelpserviceTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.oakleaf.ws/cfrsectws/cfrsectws.asmx?wsdl</wsdl>
+    <name>cfrsectwsTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+      <protocol>HttpGet</protocol>
+      <protocol>HttpPost</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://webservices.mp3.com/MP3Charts.wsdl</wsdl>
+    <name>MP3ChartsTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.bitounis.com/RSAFunctions/RSAFuncs.asmx?WSDL</wsdl>
+    <name>RSAFuncsTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+      <protocol>HttpGet</protocol>
+      <protocol>HttpPost</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://soap.systinet.net/demos/RpmFinder/wsdl</wsdl>
+    <name>RpmFinderTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.ebob42.com/cgi-bin/DrBobsClinic.exe/wsdl/IHeadline</wsdl>
+    <name>IHeadlineTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.webservicex.net/periodictable.asmx?wsdl</wsdl>
+    <name>periodictableTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+      <protocol>HttpGet</protocol>
+      <protocol>HttpPost</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.maillocate.com/soap/index.php?wsdl</wsdl>
+    <name>indexTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://freene.dynip.com/RentDB2/RentDB2.asmx?wsdl</wsdl>
+    <name>RentDB2Test</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://iis1.grantparksoftware.com:8080/gps/pos_public.asmx?WSDL</wsdl>
+    <name>pos_publicTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+      <protocol>HttpGet</protocol>
+      <protocol>HttpPost</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.framewerks.com/WebServices/fWArticleService/fwArticles.asmx?WSDL</wsdl>
+    <name>fwArticlesTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://sandbox.grandcentral.com/services/reports?WSDL</wsdl>
+    <name>reportsTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.webservicex.net/CurrencyConvertor.asmx?wsdl</wsdl>
+    <name>CurrencyConvertorTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+      <protocol>HttpGet</protocol>
+      <protocol>HttpPost</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.x-ws.de/cgi-bin/msn/imstatus.wsdl</wsdl>
+    <name>imstatusTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.esynaps.com/WebServices/MsProxy.asmx?WSDL</wsdl>
+    <name>MsProxyTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.siliconllama.com/services/wsdl/ISOcode2shortformatService.wsdl</wsdl>
+    <name>ISOcode2shortformatServiceTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.webservicex.net/usweather.asmx?WSDL</wsdl>
+    <name>usweatherTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+      <protocol>HttpGet</protocol>
+      <protocol>HttpPost</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.forta.com/cf/tips/syndicate.cfc?wsdl</wsdl>
+    <name>syndicateTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://clientservice.muse.net/ClientService.asmx?WSDL</wsdl>
+    <name>ClientServiceTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+      <protocol>HttpGet</protocol>
+      <protocol>HttpPost</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.flash-db.com/services/ws/siteInspect.wsdl</wsdl>
+    <name>siteInspectTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.webservicex.net/stockquote.asmx?WSDL</wsdl>
+    <name>stockquoteTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+      <protocol>HttpGet</protocol>
+      <protocol>HttpPost</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.worldwidedesktop.com/spellcheck/spellcheckservice.asmx?wsdl</wsdl>
+    <name>spellcheckserviceTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+      <protocol>HttpGet</protocol>
+      <protocol>HttpPost</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://ws.acrosscommunications.com/TAP.asmx?WSDL</wsdl>
+    <name>TAPTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.xignite.com/xsecurity.asmx?WSDL</wsdl>
+    <name>xsecurityTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+      <protocol>HttpGet</protocol>
+      <protocol>HttpPost</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.codebump.com/services/placelookup.asmx?wsdl</wsdl>
+    <name>placelookupTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+      <protocol>HttpGet</protocol>
+      <protocol>HttpPost</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.aspiringgeek.com/cfc/keyword/sekeyword.cfc?wsdl</wsdl>
+    <name>sekeywordTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.x-ws.de/cgi-bin/eliza/chat.wsdl</wsdl>
+    <name>chatTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://ws.cdyne.com/FontToGraphic/ftg.asmx?wsdl</wsdl>
+    <name>ftgTest</name>
+    <protocols />
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://ws2.serviceobjects.net/pc/packcost.asmx?WSDL</wsdl>
+    <name>packcostTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+      <protocol>HttpGet</protocol>
+      <protocol>HttpPost</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://soap.systinet.net/demos/ZVONSearch/wsdl</wsdl>
+    <name>ZVONSearchTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.richsolutions.com/RichPayments/RichCardValidator.asmx?WSDL</wsdl>
+    <name>RichCardValidatorTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+      <protocol>HttpGet</protocol>
+      <protocol>HttpPost</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://ww6.borland.com/webservices/BorlandBabel/BorlandBabel.exe/wsdl/IBorlandBabel</wsdl>
+    <name>IBorlandBabelTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.aspxpressway.com/maincontent/webservices/piglatin.asmx?wsdl</wsdl>
+    <name>piglatinTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+      <protocol>HttpGet</protocol>
+      <protocol>HttpPost</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.cosme.nu/services/dns.php?wsdl</wsdl>
+    <name>dnsTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.cs.uga.edu/~sent/xmethods/CountryInfoLookup.wsdl</wsdl>
+    <name>CountryInfoLookupTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://live.capescience.com/wsdl/FOPService.wsdl</wsdl>
+    <name>FOPServiceTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.swanandmokashi.com/HomePage/WebServices/StockQuotes.asmx?WSDL</wsdl>
+    <name>StockQuotesTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+      <protocol>HttpGet</protocol>
+      <protocol>HttpPost</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.scdi.org/~avernet/webservice/yim.wsdl</wsdl>
+    <name>yimTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://beta2.eraserver.net/webservices/mxchecker/mxchecker.asmx?WSDL</wsdl>
+    <name>mxcheckerTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+      <protocol>HttpGet</protocol>
+      <protocol>HttpPost</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://ws.cdyne.com/whoisquery/whois.asmx?wsdl</wsdl>
+    <name>whoisTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+      <protocol>HttpGet</protocol>
+      <protocol>HttpPost</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://ws.interfax.net/dfs.asmx?WSDL</wsdl>
+    <name>dfsTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+      <protocol>HttpGet</protocol>
+      <protocol>HttpPost</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.xignite.com/xworldnews.asmx?WSDL</wsdl>
+    <name>xworldnewsTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+      <protocol>HttpGet</protocol>
+      <protocol>HttpPost</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.xmlme.com/WSDailyNet.asmx?WSDL</wsdl>
+    <name>WSDailyNetTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://webservices.matlus.com/scripts/sessionservice.dll/wsdl/IMsSessionBrokerService</wsdl>
+    <name>IMsSessionBrokerServiceTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.xmethods.net/sd/2001/BNQuoteService.wsdl</wsdl>
+    <name>BNQuoteServiceTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.gxchart.com/webchart.wsdl</wsdl>
+    <name>webchartTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://smsserver.dotnetisp.com/servicesms.asmx?WSDL</wsdl>
+    <name>servicesmsTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://ws2.serviceobjects.net/ds/domainspy.asmx?WSDL</wsdl>
+    <name>domainspyTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+      <protocol>HttpGet</protocol>
+      <protocol>HttpPost</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://ewsdemo.webmethods.com/WmEWS/directory/wsd.dsp?interface=wmpayflow.sample&amp;service=Credit_Approval</wsdl>
+    <name>Credit_ApprovalTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://sms.idws.com/soap/smsservice.dll/wsdl/ISMSService</wsdl>
+    <name>ISMSServiceTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://glkev.webs.innerhost.com/glkev_ws/HistoricalStockQuotes.asmx?WSDL</wsdl>
+    <name>HistoricalStockQuotesTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+      <protocol>HttpGet</protocol>
+      <protocol>HttpPost</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://ws2.serviceobjects.net/fw/FastWeather.asmx?WSDL</wsdl>
+    <name>FastWeatherTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+      <protocol>HttpGet</protocol>
+      <protocol>HttpPost</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www22.brinkster.com/horaciovallejo/netpress1.asmx?wsdl</wsdl>
+    <name>netpress1Test</name>
+    <protocols>
+      <protocol>Soap</protocol>
+      <protocol>HttpGet</protocol>
+      <protocol>HttpPost</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://ws.acrosscommunications.com/NumPager.asmx?WSDL</wsdl>
+    <name>NumPagerTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://ws.acrosscommunications.com/ICQ.asmx?WSDL</wsdl>
+    <name>ICQTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://oneoutbox.com/wsdl/FaxService.wsdl</wsdl>
+    <name>FaxServiceTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.cgi101.com/~msmithso/wsdl/mach.wsdl</wsdl>
+    <name>machTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://otn.oracle.com/ws/otnnews?WSDL</wsdl>
+    <name>otnnewsTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://xml.nig.ac.jp/wsdl/GetEntry.wsdl</wsdl>
+    <name>GetEntryTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.webservicex.net/aba.asmx?WSDL</wsdl>
+    <name>abaTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+      <protocol>HttpGet</protocol>
+      <protocol>HttpPost</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.infoaccelerator.net/cfc/rtf2html.cfc?WSDL</wsdl>
+    <name>rtf2htmlTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.xeeinc.com/RateInformation/Rateinfo.asmx?WSDL</wsdl>
+    <name>RateinfoTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+      <protocol>HttpGet</protocol>
+      <protocol>HttpPost</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.esynaps.com/WebServices/eSynapsFeed.asmx?WSDL</wsdl>
+    <name>eSynapsFeedTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.webservicex.net/sendsmsworld.asmx?WSDL</wsdl>
+    <name>sendsmsworldTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+      <protocol>HttpGet</protocol>
+      <protocol>HttpPost</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://xml.nig.ac.jp/wsdl/SRS.wsdl</wsdl>
+    <name>SRSTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www28.brinkster.com/hegdes/NumberToWords.asmx?WSDL</wsdl>
+    <name>NumberToWordsTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.richsolutions.com/richpayments/richpay.asmx?WSDL</wsdl>
+    <name>richpayTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+      <protocol>HttpGet</protocol>
+      <protocol>HttpPost</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://server1.pointwsp.net/ws/postal/main.asmx?WSDL</wsdl>
+    <name>mainTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+      <protocol>HttpGet</protocol>
+      <protocol>HttpPost</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://xmlrad.com/WSFindMP3Bin/WSFindMP3.dll/WSDL</wsdl>
+    <name>WSFindMP3Test</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.siliconllama.com/services/wsdl/ISOcodesService.wsdl</wsdl>
+    <name>ISOcodesServiceTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.webserviceoftheday.com/ws/soap/wsotd.asmx?wsdl</wsdl>
+    <name>wsotdTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+      <protocol>HttpGet</protocol>
+      <protocol>HttpPost</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.ripedev.com/webservices/LocalTime.asmx?WSDL</wsdl>
+    <name>LocalTimeTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://majordojo.com/amazon_query/amazon_query.wsdl</wsdl>
+    <name>amazon_queryTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.SoapClient.com/xml/SQLDataSoap.wsdl</wsdl>
+    <name>SQLDataSoapTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://soap.einsteinware.com/nascar/nascardataservice.asmx?WSDL</wsdl>
+    <name>nascardataserviceTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+      <protocol>HttpPost</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://wsdl.wsdlfeeds.com/spell.cfc?wsdl</wsdl>
+    <name>spellTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://ws2.serviceobjects.net/av/AddressValidate.asmx?WSDL</wsdl>
+    <name>AddressValidateTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+      <protocol>HttpGet</protocol>
+      <protocol>HttpPost</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://arcweb.esri.com/services/v2/RouteFinder.wsdl</wsdl>
+    <name>RouteFinderTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://arcweb.esri.com/services/v2/Query.wsdl</wsdl>
+    <name>QueryTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.webservicex.net/fax.asmx?wsdl</wsdl>
+    <name>faxTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+      <protocol>HttpGet</protocol>
+      <protocol>HttpPost</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://ws2.serviceobjects.net/gpp/GeoPinPoint.asmx?WSDL</wsdl>
+    <name>GeoPinPointTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+      <protocol>HttpGet</protocol>
+      <protocol>HttpPost</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://ws2.serviceobjects.net/gp/GeoPhone.asmx?WSDL</wsdl>
+    <name>GeoPhoneTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+      <protocol>HttpGet</protocol>
+      <protocol>HttpPost</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://soap.prowizorka.com/spam/wsdl/ISpamCheck</wsdl>
+    <name>ISpamCheckTest</name>
+    <protocols />
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://webservices.sld.cu/aldia.wsdl</wsdl>
+    <name>aldiaTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.inkostar.com/wsdl/iifws/iifws.wsdl</wsdl>
+    <name>iifwsTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.nims.nl/soap/oms2.wsdl</wsdl>
+    <name>oms2Test</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.lixusnet.com/lixusnet/AddFinder.jws?wsdl</wsdl>
+    <name>AddFinderTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://ws.cdyne.com/ip2geo/ip2geo.asmx?wsdl</wsdl>
+    <name>ip2geoTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+      <protocol>HttpGet</protocol>
+      <protocol>HttpPost</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.xignite.com/xsimulation.asmx?WSDL</wsdl>
+    <name>xsimulationTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+      <protocol>HttpGet</protocol>
+      <protocol>HttpPost</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.webservicex.net/uszip.asmx?WSDL</wsdl>
+    <name>uszipTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+      <protocol>HttpGet</protocol>
+      <protocol>HttpPost</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.rightsecurity.biz/NRICWebServices/NRICWebServices.dll/wsdl/Iws_Verify_NRIC</wsdl>
+    <name>Iws_Verify_NRICTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://live.capescience.com/wsdl/GlobalWeather.wsdl</wsdl>
+    <name>GlobalWeatherTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.barnaland.is/dev/sms.asmx?WSDL</wsdl>
+    <name>smsTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+      <protocol>HttpGet</protocol>
+      <protocol>HttpPost</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.firelife.eu.com/dynamicflash/dynamicflash.asmx?WSDL</wsdl>
+    <name>dynamicflashTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.e-naxos.com/scripts/enwscp.dll/wsdl/IODCODESPOSTAUX</wsdl>
+    <name>IODCODESPOSTAUXTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.indobiz.com/OptionPricing.asmx?WSDL</wsdl>
+    <name>OptionPricingTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+      <protocol>HttpGet</protocol>
+      <protocol>HttpPost</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://xmlrad.com/WSGeneratorBin/WSGenerator.dll/WSDL</wsdl>
+    <name>WSGeneratorTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://xml.nig.ac.jp/wsdl/Blast.wsdl</wsdl>
+    <name>BlastTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://xml.nig.ac.jp/wsdl/TxSearch.wsdl</wsdl>
+    <name>TxSearchTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.codebump.com/services/zipcodelookup.asmx?wsdl</wsdl>
+    <name>zipcodelookupTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+      <protocol>HttpGet</protocol>
+      <protocol>HttpPost</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.esynaps.com/webservices/YourHostInfo.asmx?WSDL</wsdl>
+    <name>YourHostInfoTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.oakleaf.ws/cfrtocws/cfrtocws.asmx?wsdl</wsdl>
+    <name>cfrtocwsTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+      <protocol>HttpGet</protocol>
+      <protocol>HttpPost</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.baxglobal.com/xmltracking/xmltracking.asmx?wsdl</wsdl>
+    <name>xmltrackingTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+      <protocol>HttpGet</protocol>
+      <protocol>HttpPost</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://webservices.isitedesign.com/ws/chartWS.cfc?wsdl</wsdl>
+    <name>chartWSTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://ww6.borland.com/webservices/MapQuest/MapQuest.exe/wsdl/IMapQuest</wsdl>
+    <name>IMapQuestTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.pinellus.com/cfc/Cod_fiscale.cfc?wsdl</wsdl>
+    <name>Cod_fiscaleTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.stgregorioschurchdc.org/wsdl/Bible.wsdl</wsdl>
+    <name>BibleTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://aspnet.lamaan.com/webservices/QuranVerse.asmx?WSDL</wsdl>
+    <name>QuranVerseTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.danmarinescu.com/WebServices/ChessCGIServer.exe/wsdl/IBorlandChess</wsdl>
+    <name>IBorlandChessTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.webservicex.net/EMBLNucleotideSequenceWebService.asmx?wsdl</wsdl>
+    <name>EMBLNucleotideSequenceWebServiceTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+      <protocol>HttpGet</protocol>
+      <protocol>HttpPost</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://wavendon.dsdata.co.uk/axis/services/CarRentalQuotes?wsdl</wsdl>
+    <name>CarRentalQuotesTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://soap.systinet.net/demos/W3CSearch/wsdl</wsdl>
+    <name>W3CSearchTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.codecube.net/services/xreonline.asmx?WSDL</wsdl>
+    <name>xreonlineTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+      <protocol>HttpGet</protocol>
+      <protocol>HttpPost</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://webservices.tei.or.th/getQuakeData.cfc?wsdl</wsdl>
+    <name>getQuakeDataTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://wavendon.dsdata.co.uk:8080/axis/services/SBGGetAirFareQuote?wsdl</wsdl>
+    <name>SBGGetAirFareQuoteTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://ws.cdyne.com/whoisforip/queryip.asmx?wsdl</wsdl>
+    <name>queryipTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+      <protocol>HttpGet</protocol>
+      <protocol>HttpPost</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://ws.acrosscommunications.com/SMS.asmx?WSDL</wsdl>
+    <name>SMSTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://dotnet.cyberthink.net/computerdictionary/computerdictionary.asmx?wsdl</wsdl>
+    <name>computerdictionaryTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+      <protocol>HttpGet</protocol>
+      <protocol>HttpPost</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.apniurdu.com/SOAP/Urdu2.wsdl</wsdl>
+    <name>Urdu2Test</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.webservicex.net/airport.asmx?wsdl</wsdl>
+    <name>airportTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+      <protocol>HttpGet</protocol>
+      <protocol>HttpPost</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://telecommerce.danet.de/axis/services/DocConverterServicePort?wsdl</wsdl>
+    <name>DocConverterServicePortTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.xmlme.com/WSShakespeare.asmx?WSDL</wsdl>
+    <name>WSShakespeareTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://glkev.webs.innerhost.com/glkev_ws/WeatherFetcher.asmx?WSDL</wsdl>
+    <name>WeatherFetcherTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+      <protocol>HttpGet</protocol>
+      <protocol>HttpPost</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.dl-me.com/webservices/unitext.asmx?wsdl</wsdl>
+    <name>unitextTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.suiyi.com/soap/economic.dll/wsdl/Ieconomic</wsdl>
+    <name>IeconomicTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://webservices.isitedesign.com/ws/slashdotnews.cfc?wsdl</wsdl>
+    <name>slashdotnewsTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.xignite.com/xretirement.asmx?WSDL</wsdl>
+    <name>xretirementTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+      <protocol>HttpGet</protocol>
+      <protocol>HttpPost</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://ws2.serviceobjects.net/yp/YellowPages.asmx?WSDL</wsdl>
+    <name>YellowPagesTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+      <protocol>HttpGet</protocol>
+      <protocol>HttpPost</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.securexml.net/securexml/securexml.wsdl</wsdl>
+    <name>securexmlTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://soap.4s4c.com/weblogs/subscribe.wsdl</wsdl>
+    <name>subscribeTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.schemaweb.info/webservices/soap/SchemaWebSoap.asmx?wsdl</wsdl>
+    <name>SchemaWebSoapTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.financialwebservices.ltd.uk/axis/services/bond?wsdl</wsdl>
+    <name>bondTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.xignite.com/xnews.asmx?WSDL</wsdl>
+    <name>xnewsTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+      <protocol>HttpGet</protocol>
+      <protocol>HttpPost</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.what-is-around.com/awwia.wsdl</wsdl>
+    <name>awwiaTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.eyemaginations.com/cgi-bin/getWSDL.pl?wsdl=WebFunction.wsdl</wsdl>
+    <name>getWSDLTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.flash-db.com/services/ws/companyInfo.wsdl</wsdl>
+    <name>companyInfoTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.abundanttech.com/webservices/population/population.wsdl</wsdl>
+    <name>populationTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+      <protocol>HttpGet</protocol>
+      <protocol>HttpPost</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://wsdl.wsdlfeeds.com/odp.cfc?wsdl</wsdl>
+    <name>odpTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.xignite.com/xstatistics.asmx?WSDL</wsdl>
+    <name>xstatisticsTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+      <protocol>HttpGet</protocol>
+      <protocol>HttpPost</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.nickhodge.com/nhodge/finnwords/finnwords.wsdl</wsdl>
+    <name>finnwordsTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://terraservice.net/TerraService.asmx?WSDL</wsdl>
+    <name>TerraServiceTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+      <protocol>HttpGet</protocol>
+      <protocol>HttpPost</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.swanandmokashi.com/HomePage/WebServices/QuoteOfTheDay.asmx?WSDL</wsdl>
+    <name>QuoteOfTheDayTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+      <protocol>HttpGet</protocol>
+      <protocol>HttpPost</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://test.mapfrepr.net/Encryption/Encryption.asmx?WSDL</wsdl>
+    <name>EncryptionTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://digilander.libero.it/mamo78/KRSS_DAML_Service.wsdl</wsdl>
+    <name>KRSS_DAML_ServiceTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://glkev.webs.innerhost.com/glkev_ws/UPSTracking.asmx?WSDL</wsdl>
+    <name>UPSTrackingTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+      <protocol>HttpGet</protocol>
+      <protocol>HttpPost</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.webservicex.net/hcpcs.asmx?WSDL</wsdl>
+    <name>hcpcsTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+      <protocol>HttpGet</protocol>
+      <protocol>HttpPost</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.framewerks.com/WebServices/helpfulfunctions/helpfulfunctions.asmx?WSDL</wsdl>
+    <name>helpfulfunctionsTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.esynaps.com/WebServices/BusinessList.asmx?WSDL</wsdl>
+    <name>BusinessListTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://webservices.wolfram.com/services/SearchServices/WolframSearch.wsdl</wsdl>
+    <name>WolframSearchTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://webservices.matlus.com/scripts/emailwebservice.dll/wsdl/IEmailService</wsdl>
+    <name>IEmailServiceTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.seshakiran.com/QuoteService/QuotesService.asmx?wsdl</wsdl>
+    <name>QuotesServiceTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+      <protocol>HttpGet</protocol>
+      <protocol>HttpPost</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://ws2.serviceobjects.net/pa/phoneappend.asmx?wsdl</wsdl>
+    <name>phoneappendTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+      <protocol>HttpGet</protocol>
+      <protocol>HttpPost</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.webservicex.net/uklocation.asmx?WSDL</wsdl>
+    <name>uklocationTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+      <protocol>HttpGet</protocol>
+      <protocol>HttpPost</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.webservicex.net/icd9drug.asmx?WSDL</wsdl>
+    <name>icd9drugTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+      <protocol>HttpGet</protocol>
+      <protocol>HttpPost</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://docserv.aurigalogic.com/docserv.wsdl</wsdl>
+    <name>docservTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.barnaland.is/dev/phonebook.asmx?WSDL</wsdl>
+    <name>phonebookTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+      <protocol>HttpGet</protocol>
+      <protocol>HttpPost</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.xmlme.com/WSSportingGoods.asmx?WSDL</wsdl>
+    <name>WSSportingGoodsTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.saintlogin.com/SAINT_WS/SAINTlogin_service_mssoap.php?wsdl</wsdl>
+    <name>SAINTlogin_service_mssoapTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.wsindex.org/pages/wsindexLinks.wsdl</wsdl>
+    <name>wsindexLinksTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://soap.einsteinware.com/email/emailservices.asmx?WSDL</wsdl>
+    <name>emailservicesTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+      <protocol>HttpPost</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.ejse.com/WeatherService/Service.asmx?WSDL</wsdl>
+    <name>ServiceTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+      <protocol>HttpGet</protocol>
+      <protocol>HttpPost</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.indobiz.com/IndoEconoCator.asmx?WSDL</wsdl>
+    <name>IndoEconoCatorTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+      <protocol>HttpGet</protocol>
+      <protocol>HttpPost</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.winisp.net/cheeso/zips/ZipService.asmx?WSDL</wsdl>
+    <name>ZipServiceTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+      <protocol>HttpGet</protocol>
+      <protocol>HttpPost</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.abysal.com/soap/AbysalEmail.wsdl</wsdl>
+    <name>AbysalEmailTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://ws2.serviceobjects.net/gc/GeoCash.asmx?WSDL</wsdl>
+    <name>GeoCashTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+      <protocol>HttpGet</protocol>
+      <protocol>HttpPost</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.dotnetisp.com/webservices/dotnetisp/codepostal.asmx?WSDL</wsdl>
+    <name>codepostalTest</name>
+    <protocols />
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://soap.systinet.net/demos/FreeDB/wsdl</wsdl>
+    <name>FreeDBTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.webservicex.net/FinanceService.asmx?WSDL</wsdl>
+    <name>FinanceServiceTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+      <protocol>HttpGet</protocol>
+      <protocol>HttpPost</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://arcweb.esri.com/services/v2/PlaceFinderSample.wsdl</wsdl>
+    <name>PlaceFinderSampleTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.PerfectXML.NET/WebServices/SalesRankNPrice/BookService.asmx?WSDL</wsdl>
+    <name>BookServiceTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+      <protocol>HttpGet</protocol>
+      <protocol>HttpPost</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://ws.xara.com/graphicrender/render3d.wsdl</wsdl>
+    <name>render3dTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.bitwaste.com/xmethods/ATTPager/ATTPager.wsdl</wsdl>
+    <name>ATTPagerTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://webservices.empowered.com/statsws/stats.asmx?WSDL</wsdl>
+    <name>statsTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://samples.bowstreet.com/bowstreet5/webengine/xmethods/gcd/Action!getWSDL</wsdl>
+    <name>ActiongetWSDLTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.freshscore.com/service/FreshScoreLiveScores.asmx?WSDL</wsdl>
+    <name>FreshScoreLiveScoresTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+      <protocol>HttpGet</protocol>
+      <protocol>HttpPost</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.berneda.com/scripts/TeeChartSOAP.exe/wsdl/ITeeChart</wsdl>
+    <name>ITeeChartTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.discoverdance.co.uk/zipQuery/zipCodeService.asmx?wsdl</wsdl>
+    <name>zipCodeServiceTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.jusufdarmawan.com/wsprimegenerator.exe/wsdl/IPrimeGenerator</wsdl>
+    <name>IPrimeGeneratorTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.xeeinc.com/RateInformation/RateInfo.asmx?WSDL</wsdl>
+    <name>RateInfoTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+      <protocol>HttpGet</protocol>
+      <protocol>HttpPost</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.xmethods.net/sd/2001/TemperatureService.wsdl</wsdl>
+    <name>TemperatureServiceTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.xmethods.net/wsdl/query.wsdl</wsdl>
+    <name>queryTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://appserver.pepperzak.net/bankcode/BankCodeEJBHome/wsdl.jsp</wsdl>
+    <name>BankCodeEJBHomeTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>true</clientTest>
+  </service>
+  <service>
+    <wsdl>http://ws2.serviceobjects.net/pt/PackTrack.asmx?WSDL</wsdl>
+    <name>PackTrackTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+      <protocol>HttpGet</protocol>
+      <protocol>HttpPost</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.marotz.se/scripts/zipinfo.exe/wsdl/ISwedishZipInfo</wsdl>
+    <name>ISwedishZipInfoTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://wavendon.dsdata.co.uk/axis/services/WhoisData?wsdl</wsdl>
+    <name>WhoisDataTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.xignite.com/xrealtime.asmx?WSDL</wsdl>
+    <name>xrealtimeTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+      <protocol>HttpGet</protocol>
+      <protocol>HttpPost</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.extensio.com:8080/ExtensioInfoServer/mbsoap/MBWSSoapServices.wsdl</wsdl>
+    <name>MBWSSoapServicesTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.xignite.com/xSurvey.asmx?WSDL</wsdl>
+    <name>xSurveyTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+      <protocol>HttpGet</protocol>
+      <protocol>HttpPost</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.abundanttech.com/webservices/deadoralive/deadoralive.wsdl</wsdl>
+    <name>deadoraliveTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+      <protocol>HttpGet</protocol>
+      <protocol>HttpPost</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://services.xmethods.net/soap/urn:xmethods-delayed-quotes.wsdl</wsdl>
+    <name>urnxmethodsdelayedquotesTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.bindingpoint.com/ws/imalert/imalert.asmx?wsdl</wsdl>
+    <name>imalertTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+      <protocol>HttpGet</protocol>
+      <protocol>HttpPost</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.PerfectXML.net/WebServices/MusicTeachers/MusicTeachers.asmx?wsdl</wsdl>
+    <name>MusicTeachersTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+      <protocol>HttpGet</protocol>
+      <protocol>HttpPost</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.orbitarium.com/schemas/ows.wsdl</wsdl>
+    <name>owsTest</name>
+    <protocols />
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://adrianr.dyndns.org/Fortune/Fortune.wsdl</wsdl>
+    <name>FortuneTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.interpressfact.net/webservices/getAds.asmx?wsdl</wsdl>
+    <name>getAdsTest</name>
+    <protocols />
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.framewerks.com/WebServices/HTMLeMail/HTMLeMail.asmx?WSDL</wsdl>
+    <name>HTMLeMailTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.quisque.com/fr/techno/eqimage/eqimage.asmx?WSDL</wsdl>
+    <name>eqimageTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://xml.nig.ac.jp/wsdl/Fasta.wsdl</wsdl>
+    <name>FastaTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://reto.checkit.ch/Scripts/Lotto.dll/wsdl/IgetNumbers</wsdl>
+    <name>IgetNumbersTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.webservicex.net/SendSMS.asmx?WSDL</wsdl>
+    <name>SendSMSTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+      <protocol>HttpGet</protocol>
+      <protocol>HttpPost</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://wavendon.dsdata.co.uk/axis/services/SpamKiller?wsdl</wsdl>
+    <name>SpamKillerTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://webservices.imacination.com/distance/Distance.jws?wsdl</wsdl>
+    <name>DistanceTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.barnaland.is/dev/personlookup.asmx?WSDL</wsdl>
+    <name>personlookupTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+      <protocol>HttpGet</protocol>
+      <protocol>HttpPost</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.esynaps.com/WebServices/WhoIsService.asmx?WSDL</wsdl>
+    <name>WhoIsServiceTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.xmethods.net/sd/2001/EBayWatcherService.wsdl</wsdl>
+    <name>EBayWatcherServiceTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://api.google.com/GoogleSearch.wsdl</wsdl>
+    <name>GoogleSearchTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.esynaps.com/webservices/codegenerator.asmx?WSDL</wsdl>
+    <name>codegeneratorTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.flash-db.com/services/ws/barCodes.wsdl</wsdl>
+    <name>barCodesTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.webservicex.net/RssToHTML.asmx?WSDL</wsdl>
+    <name>RssToHTMLTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+      <protocol>HttpGet</protocol>
+      <protocol>HttpPost</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://server1.pointwsp.net/ws/finance/currency.asmx?WSDL</wsdl>
+    <name>currencyTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+      <protocol>HttpGet</protocol>
+      <protocol>HttpPost</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.ebob42.com/cgi-bin/NumberToWordsInDutch.exe/wsdl/IDutch</wsdl>
+    <name>IDutchTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.lixusnet.com/lixusnet/HPcatalog.jws?wsdl</wsdl>
+    <name>HPcatalogTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.oakleaf.ws/cfrsearchws/cfrsearchws.asmx?wsdl</wsdl>
+    <name>cfrsearchwsTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+      <protocol>HttpGet</protocol>
+      <protocol>HttpPost</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://glkev.webs.innerhost.com/glkev_ws/StockServices.asmx?WSDL</wsdl>
+    <name>StockServicesTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+      <protocol>HttpGet</protocol>
+      <protocol>HttpPost</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://ws.acrosscommunications.com/Fax.asmx?WSDL</wsdl>
+    <name>FaxTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.dl-me.com/etoaservice/engtoarabic.asmx?WSDL</wsdl>
+    <name>engtoarabicTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.webservicex.net/AustralianPostCode.asmx?WSDL</wsdl>
+    <name>AustralianPostCodeTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+      <protocol>HttpGet</protocol>
+      <protocol>HttpPost</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.webservicex.net/country.asmx?wsdl</wsdl>
+    <name>countryTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+      <protocol>HttpGet</protocol>
+      <protocol>HttpPost</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.esynaps.com/WebServices/SearchWS.asmx?WSDL</wsdl>
+    <name>SearchWSTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.flash-db.com/services/ws/flashBarChart.wsdl</wsdl>
+    <name>flashBarChartTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://ws.cdyne.com/SpellChecker/check.asmx?wsdl</wsdl>
+    <name>checkTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+      <protocol>HttpGet</protocol>
+      <protocol>HttpPost</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.xmethods.net/sd/2001/BabelFishService.wsdl</wsdl>
+    <name>BabelFishServiceTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://ws2.serviceobjects.net/sq/FastQuote.asmx?WSDL</wsdl>
+    <name>FastQuoteTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+      <protocol>HttpGet</protocol>
+      <protocol>HttpPost</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://glkev.webs.innerhost.com/glkev_ws/Currencyws.asmx?WSDL</wsdl>
+    <name>CurrencywsTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+      <protocol>HttpGet</protocol>
+      <protocol>HttpPost</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.swanandmokashi.com/HomePage/WebServices/Horoscope.asmx?WSDL</wsdl>
+    <name>HoroscopeTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+      <protocol>HttpGet</protocol>
+      <protocol>HttpPost</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.webservicex.net/UDDIBusinessFinder.asmx?WSDL</wsdl>
+    <name>UDDIBusinessFinderTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+      <protocol>HttpGet</protocol>
+      <protocol>HttpPost</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://ws2.serviceobjects.net/uspo/USPatentOffice.asmx?WSDL</wsdl>
+    <name>USPatentOfficeTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+      <protocol>HttpGet</protocol>
+      <protocol>HttpPost</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://ws.cdyne.com/ziptogeo/zip2geo.asmx?wsdl</wsdl>
+    <name>zip2geoTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+      <protocol>HttpGet</protocol>
+      <protocol>HttpPost</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.webservicex.net/icd9.asmx?WSDL</wsdl>
+    <name>icd9Test</name>
+    <protocols>
+      <protocol>Soap</protocol>
+      <protocol>HttpGet</protocol>
+      <protocol>HttpPost</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.xignite.com/xquotes.asmx?WSDL</wsdl>
+    <name>xquotesTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+      <protocol>HttpGet</protocol>
+      <protocol>HttpPost</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.webservicex.net/BibleWebservice.asmx?wsdl</wsdl>
+    <name>BibleWebserviceTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+      <protocol>HttpGet</protocol>
+      <protocol>HttpPost</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://ws.acrosscommunications.com/Phone.asmx?WSDL</wsdl>
+    <name>PhoneTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.esynaps.com/WebServices/NFLNews.asmx?WSDL</wsdl>
+    <name>NFLNewsTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.stgregorioschurchdc.org/wsdl/Calendar.wsdl</wsdl>
+    <name>CalendarTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.xignite.com/xEdgar.asmx?WSDL</wsdl>
+    <name>xEdgarTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+      <protocol>HttpGet</protocol>
+      <protocol>HttpPost</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.webservicex.net/globalweather.asmx?WSDL</wsdl>
+    <name>globalweatherTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+      <protocol>HttpGet</protocol>
+      <protocol>HttpPost</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.abundanttech.com/webservices/bnprice/bnprice.wsdl</wsdl>
+    <name>bnpriceTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+      <protocol>HttpGet</protocol>
+      <protocol>HttpPost</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://ws2.serviceobjects.net/upc/UPC.asmx?WSDL</wsdl>
+    <name>UPCTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+      <protocol>HttpGet</protocol>
+      <protocol>HttpPost</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.bitounis.com/IBAN/IBANFuncs.asmx?WSDL</wsdl>
+    <name>IBANFuncsTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+      <protocol>HttpGet</protocol>
+      <protocol>HttpPost</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.winisp.net/cheeso/books/books.asmx?WSDL</wsdl>
+    <name>booksTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+      <protocol>HttpGet</protocol>
+      <protocol>HttpPost</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://ws2.serviceobjects.net/ev/EmailValidate.asmx?WSDL</wsdl>
+    <name>EmailValidateTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+      <protocol>HttpGet</protocol>
+      <protocol>HttpPost</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.webservicex.net/ValidateEmail.asmx?WSDL</wsdl>
+    <name>ValidateEmailTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+      <protocol>HttpGet</protocol>
+      <protocol>HttpPost</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.xmethods.net/sd/2001/XMethodsFilesystemService.wsdl</wsdl>
+    <name>XMethodsFilesystemServiceTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://ws2.serviceobjects.net/whi/WhoIs.asmx?WSDL</wsdl>
+    <name>WhoIsTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+      <protocol>HttpGet</protocol>
+      <protocol>HttpPost</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.interpressfact.net/webservices/getJoke.asmx?wsdl</wsdl>
+    <name>getJokeTest</name>
+    <protocols />
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://arcweb.esri.com/services/v2/MapImage.wsdl</wsdl>
+    <name>MapImageTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://xml.nig.ac.jp/wsdl/DDBJ.wsdl</wsdl>
+    <name>DDBJTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://urljr.com/soap</wsdl>
+    <name>urljrTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://localhost:8080/ConvDocEncBar.asmx?wsdl</wsdl>
+    <name>ConvDocEncBarTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+      <protocol>HttpGet</protocol>
+      <protocol>HttpPost</protocol>
+    </protocols>
+    <clientTest>true</clientTest>
+  </service>
+  <service>
+    <wsdl>http://localhost:8080/ConvDocLitWra.asmx?wsdl</wsdl>
+    <name>ConvDocLitWraTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+      <protocol>HttpGet</protocol>
+      <protocol>HttpPost</protocol>
+    </protocols>
+    <clientTest>true</clientTest>
+  </service>
+  <service>
+    <wsdl>http://localhost:8080/ConvDocLitBar.asmx?wsdl</wsdl>
+    <name>ConvDocLitBarTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+      <protocol>HttpGet</protocol>
+      <protocol>HttpPost</protocol>
+    </protocols>
+    <clientTest>true</clientTest>
+  </service>
+  <service>
+    <wsdl>http://localhost:8080/ConvRpc.asmx?wsdl</wsdl>
+    <name>ConvRpcTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+      <protocol>HttpGet</protocol>
+      <protocol>HttpPost</protocol>
+    </protocols>
+    <clientTest>true</clientTest>
+  </service>
+  <service>
+    <wsdl>http://localhost:8080/ConvDocEncWra.asmx?wsdl</wsdl>
+    <name>ConvDocEncWraTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+      <protocol>HttpGet</protocol>
+      <protocol>HttpPost</protocol>
+    </protocols>
+    <clientTest>true</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.abctext.com/webservices/SMS.asmx?WSDL</wsdl>
+    <name>SMSTest2</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.barnaland.is/dev/names.asmx?WSDL</wsdl>
+    <name>namesTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+      <protocol>HttpGet</protocol>
+      <protocol>HttpPost</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.webservicex.net/isbn.asmx?WSDL</wsdl>
+    <name>isbnTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+      <protocol>HttpGet</protocol>
+      <protocol>HttpPost</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.drbob42.co.uk/cgi-bin/Euro42/wsdl/IEuro</wsdl>
+    <name>IEuroTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+  <service>
+    <wsdl>http://www.verbix.com/cgi-bin/soapx.exe/wsdl/IGetInflection</wsdl>
+    <name>IGetInflectionTest</name>
+    <protocols>
+      <protocol>Soap</protocol>
+    </protocols>
+    <clientTest>false</clientTest>
+  </service>
+</services>
\ No newline at end of file
diff --git a/mcs/class/System.Web.Services/Test/standalone/wsdl.ignore b/mcs/class/System.Web.Services/Test/standalone/wsdl.ignore
new file mode 100644 (file)
index 0000000..52d388c
--- /dev/null
@@ -0,0 +1,23 @@
+http://mysic.com/Webservices/MysicSearchEngine.asmx?WSDL       # Url is not a wsdl doc.
+http://www.w3.org/2001/XMLSchema:locatorSoapBinding                    # Not found
+http://www.transactionalweb.com/SOAP/globalskilocator.wsdl     # Wrong WSDL
+http://paracite.eprints.org/paracite.wsdl                                      # Wrong WSDL
+http://www.atlaz.net/webservices/GetCurrencyExchange.wsdl      # Wrong WSDL
+http://www.transactionalweb.com/SOAP/globalocator.wsdl         # Wrong WSDL
+http://soap.amazon.com/schemas/AmazonWebServices.wsdl          # Old schema version
+http://www.compkarori.com/wsdl/discordian.wsdl                         # Old schema version
+http://soap.systinet.net/demos/FTPService/wsdl                         # Wrong WSDL
+http://www.c6.hu/ws/huzip.wsdl                                                         # Uses rpc + literal
+http://www.wlug.org.nz/phpwiki/soap.wsdl                                       # Old schema version
+http://www.sid64.com/soap/sidrank.php?wsdl                                     # Wrong WSDL
+http://www.cosme.nu/services/smtpserver.php?wsdl                       # Wrong WSDL
+http://www.forthlink.gr/TakisLib/TakisActiveLib.WSDL           # Old schema version
+http://www.allesta.net:51110/webservices/wsdl/YahooUserPingService.xml # Old schema version
+http://www.siliconllama.com/services/wsdl/dConverterService.wsdl # Uses rpc + literal
+http://www.onepercentsoftware.com/axis/services/EvaluationService?wsdl # Wrong WSDL
+http://www.nims.nl/soap/oms.wsdl                                                       # Wrong WSDL
+http://webservices.matlus.com/scripts/whoiswebservice.dll/wsdl/IWhoIs  # Wrong WSDL
+http://soapclient.com/xml/certService.wsdl                                     # Wrong schema
+http://ws.xara.com/navbar/navbar.wsdl                                          # Wrong schema
+http://www.cs.fsu.edu/~engelen/magic.wsdl                                      # Wrong schema
+http://www.agnisoft.com/soap/mssoapmp3search.xml                       # Wrong schema
diff --git a/mcs/class/System.Web.Services/Test/standalone/wstest b/mcs/class/System.Web.Services/Test/standalone/wstest
new file mode 100755 (executable)
index 0000000..7a1747e
--- /dev/null
@@ -0,0 +1 @@
+mono --debug wstest.exe "$@"
diff --git a/mcs/class/System.Web.Services/Test/standalone/wstest.cs b/mcs/class/System.Web.Services/Test/standalone/wstest.cs
new file mode 100644 (file)
index 0000000..c184116
--- /dev/null
@@ -0,0 +1,507 @@
+using System;
+using System.IO;
+using System.Collections;
+using System.Text;
+using System.Xml;
+using System.Xml.Serialization;
+using System.ComponentModel;
+using System.Diagnostics;
+using System.Threading;
+using System.Web.Services.Discovery;
+using System.Web.Services.Description;
+
+public class Driver
+{
+       static bool foundErrors = false;
+       static string basePath;
+       static int runningCount;
+       
+       static ServiceCollection services;
+       
+       public static void Main (string[] args)
+       {
+               if (args.Length == 0)
+               {
+                       Console.WriteLine ();
+                       Console.WriteLine ("Usage: wstest [options]");
+                       Console.WriteLine ();
+                       Console.WriteLine ("Options:");
+                       Console.WriteLine ("  gp: Generate proxies");
+                       Console.WriteLine ("  gc <url>: Generate test client class");
+                       Console.WriteLine ("  ur <url>: Update service references from DISCO or WSDL document");
+                       Console.WriteLine ();
+                       return;
+               }
+               
+               basePath = ".";
+               
+               XmlSerializer ser = new XmlSerializer (typeof(ServiceCollection));
+               
+               string servicesFile = Path.Combine (basePath, "services.xml");
+               if (!File.Exists (servicesFile)) 
+                       services = new ServiceCollection ();
+               else
+               {
+                       StreamReader sr = new StreamReader (servicesFile);
+                       services = (ServiceCollection) ser.Deserialize (sr);
+                       sr.Close ();
+               }
+               
+               if (args[0] == "gp")
+               {
+                       BuildProxies (GetArg (args,1) == "all");
+               }
+               else if (args[0] == "gc")
+               {
+                       BuildClients (GetArg (args,1));
+               }
+               else if (args[0] == "ur")
+               {
+                       UpdateReferences (GetArg (args,1), GetArg (args,2));
+               }
+               else if (args[0] == "clean")
+               {
+                       Clean ();
+               }
+               
+               StreamWriter sw = new StreamWriter (servicesFile);
+               ser.Serialize (sw, services);
+               sw.Close ();
+               
+               if (foundErrors)
+                       Console.WriteLine ("Please check error log at " + Path.Combine (GetErrorPath(), "error.log"));
+       }
+       
+       static string GetArg (string[] args, int n)
+       {
+               if (n >= args.Length) return null;
+               else return args[n];
+       }
+       
+       static void Cleanup ()
+       {
+               string pp = GetProxyPath ();
+               DirectoryInfo di = new DirectoryInfo (pp);
+               if (di.Exists) di.Delete (true);
+               di.Create ();
+       }
+       
+       static void Clean ()
+       {
+               Hashtable clientHash = new Hashtable ();
+               
+               foreach (ServiceData sd in services.services)
+               {
+                       if (sd.ClientTest)
+                               clientHash [GetClientFile (sd)] = sd;
+                               
+                       foreach (string prot in sd.Protocols)
+                               clientHash [GetProxyFile (sd, prot)] = sd;
+               }
+                       
+               Clean (clientHash, GetClientPath ());
+               Clean (clientHash, GetProxyPath ());
+       }
+       
+       static void Clean (Hashtable clientHash, string path)
+       {
+               string[] files = Directory.GetFiles (path);
+
+               foreach (string file in files)
+               {
+                       ServiceData sd = clientHash [file] as ServiceData;
+                       if (sd != null) continue;
+                       
+                       File.Delete (file);
+                       Console.WriteLine ("Deleted file '" + file + "'");
+               }
+               
+               string [] dirs = Directory.GetDirectories (path);
+               foreach (string dir in dirs)
+                       Clean (clientHash, dir);
+                       
+               int count = Directory.GetFiles (path).Length + Directory.GetDirectories (path).Length;
+               if (count == 0 && path != GetClientPath () && path != GetProxyPath ())
+               {
+                       Directory.Delete (path);
+                       Console.WriteLine ("Deleted directory '" + path + "'");
+               }
+       }
+       
+       static void UpdateReferences (string url, string ignoreFile)
+       {       
+               Console.WriteLine ();
+               Console.WriteLine ("Updating service references");
+               Console.WriteLine ("---------------------------");
+               
+               ArrayList ignoreList = new ArrayList ();
+               
+               if (ignoreFile != null)
+               {
+                       StreamReader sr = new StreamReader (ignoreFile);
+                       string line;
+                       while ((line = sr.ReadLine ()) != null)
+                       {
+                               int i = line.IndexOfAny (new char[] {' ','\t'});
+                               if (i != -1) line = line.Substring (0,i);
+                               ignoreList.Add (line);
+                       }
+               }
+               
+               DiscoveryClientProtocol client = new DiscoveryClientProtocol ();
+               client.DiscoverAny (url);
+               
+               ArrayList list = new ArrayList (client.References.Values);
+               foreach (DiscoveryReference re in list)
+               {
+                       bool ignore = ignoreList.Contains (re.Url);
+                       ServiceData sd = FindService (re.Url);
+                       if (sd != null)
+                       {
+                               if (ignore) RemoveService (re.Url);
+                               continue;
+                       }
+                       
+                       if (ignore) continue;
+                       
+                       Console.Write ("Resolving " + re.Url + " ");
+                       try
+                       {
+                               re.Resolve ();
+                               Console.WriteLine ("OK");
+                               
+                               ServiceDescription doc = client.Documents [re.Url] as ServiceDescription;
+                               if (doc != null)
+                                       services.services.Add (CreateServiceData (re, doc));
+                       }
+                       catch (Exception ex)
+                       {
+                               Console.WriteLine ("FAILED");
+                               ReportError ("Error resolving: " + re.Url, ex.ToString ());
+                       }
+               }
+       }
+       
+       public static ServiceData CreateServiceData (DiscoveryReference dref, ServiceDescription doc)
+       {
+               ServiceData sd = new ServiceData ();
+               
+               string name = GetServiceName (dref);
+               sd.Name = name;
+               int nc = 2;
+               while (FindServiceByName (sd.Name) != null)
+               {
+                       sd.Name = name + nc;
+                       nc++;
+               }
+               
+               sd.Wsdl = dref.Url;
+               
+               ArrayList bins = GetBindingTypes (doc);
+               sd.Protocols = (string[]) bins.ToArray(typeof(string));
+               return sd;
+       }
+
+       static ArrayList GetBindingTypes (ServiceDescription doc)
+       {
+               ServiceDescriptionCollection col = new ServiceDescriptionCollection ();
+               col.Add (doc);
+               
+               ArrayList list = new ArrayList ();
+               foreach (Service s in doc.Services)
+               {
+                       foreach (Port p in s.Ports)
+                       {
+                               Binding bin = col.GetBinding (p.Binding);
+                               if (bin.Extensions.Find (typeof (System.Web.Services.Description.SoapBinding)) != null)
+                                       if (!list.Contains ("Soap")) list.Add ("Soap");
+                                       
+                               HttpBinding ext = (HttpBinding) bin.Extensions.Find (typeof (HttpBinding));
+                               if (ext != null)
+                               {
+                                       if (ext.Verb == "POST") list.Add ("HttpPost");
+                                       else list.Add ("HttpGet");
+                               }
+                       }
+               }
+               return list;
+       }
+       
+       static string GetServiceName (DiscoveryReference dref)
+       {
+               string name = dref.DefaultFilename;
+               
+               if (name.EndsWith (".wsdl")) name = name.Substring (0,name.Length-5);
+               if (name == "wsd")
+               {
+                       int i = dref.Url.IndexOf ("service=");
+                       if (i == -1) name = dref.Url.Substring (7);
+                       else name = dref.Url.Substring (i+8);
+               }
+               
+               name = name + "Test";
+               if (Char.IsDigit (name,0)) name = "Ws" + name;
+               return Normalize (name);
+       }
+       
+       static string Normalize (string s)
+       {
+               System.Text.StringBuilder sb = new System.Text.StringBuilder ();
+               for (int n=0; n<s.Length; n++)
+                       if (Char.IsLetterOrDigit (s[n]) || s[n] == '_') sb.Append (s[n]);
+                       
+               return sb.ToString ();
+       }
+       
+/*     static string GetFileName (DiscoveryReference dref)
+       {
+               return Path.Combine (classPath, GetServiceName (dref) + ".cs");
+       }
+*/
+
+       static ServiceData FindService (string url)
+       {
+               foreach (ServiceData sd in services.services)
+                       if (sd.Wsdl == url) return sd;
+
+               return null;
+       }
+
+       static void RemoveService (string url)
+       {
+               for (int n=0; n<services.services.Count; n++)
+               {
+                       ServiceData sd  = (ServiceData) services.services [n];
+                       if (sd.Wsdl == url) { services.services.RemoveAt (n); return; }
+               }
+       }
+
+       static ServiceData FindServiceByName (string name)
+       {
+               foreach (ServiceData sd in services.services)
+                       if (sd.Name == name) return sd;
+
+               return null;
+       }
+
+       static void BuildProxies (bool buildAll)
+       {
+               Console.WriteLine ();
+               Console.WriteLine ("Generating proxies");
+               Console.WriteLine ("------------------");
+               
+               ArrayList proxies = new ArrayList ();
+               
+               foreach (ServiceData fd in services.services)
+                       BuildProxy (fd, buildAll, proxies);
+               
+               StreamWriter sw = new StreamWriter (Path.Combine (basePath, "proxies.sources"));
+               foreach (string f in proxies)
+                       sw.WriteLine (f);
+               sw.Close ();
+       }
+       
+       static void BuildProxy (ServiceData fd, bool rebuild, ArrayList proxies)
+       {
+               string wsdl = fd.Wsdl;
+               if (wsdl == null) wsdl = fd.Location + "?wsdl";
+               
+               if (fd.Protocols == null)
+               {
+                       ReportError ("Client test '" + fd.Name + "': no protocols declared", null);
+                       return;
+               }
+               
+               foreach (string prot in fd.Protocols)
+               {
+                       string ns = fd.Namespace;
+                       ns = CodeIdentifier.MakeValid (ns) + "." + prot;
+               
+                       string pfile = GetProxyFile (fd, prot);
+                       if (File.Exists (pfile) && !rebuild) { proxies.Add (pfile); continue; }
+                       
+                       CreateFolderForFile     (pfile);
+
+                       Console.Write (prot + " proxy for " + wsdl + "... ");
+                       Process proc = new Process ();
+                       proc.StartInfo.RedirectStandardOutput = true;
+                       proc.StartInfo.RedirectStandardError = true;
+                       proc.StartInfo.FileName = "wsdl";
+                       proc.StartInfo.Arguments = "-out:" + pfile + " -nologo -namespace:" + ns + " -protocol:" + prot + " " + wsdl;
+                       proc.Start();
+                       proc.WaitForExit ();
+                       
+                       if (proc.ExitCode != 0)
+                       {
+                               Console.WriteLine ("FAIL");
+                               
+                               string err = proc.StandardOutput.ReadToEnd ();
+                               err += "\n" + proc.StandardError.ReadToEnd ();
+                               
+                               if (proc.ExitCode == 1) {
+                                       string fn = fd.Name + prot + "Proxy.cs";
+                                       fn = Path.Combine (GetErrorPath(), fn);
+                                       CreateFolderForFile (fn);
+                                       File.Move (pfile, fn);
+                                       
+                                       StreamWriter sw = new StreamWriter (fn, true);
+                                       sw.WriteLine ();
+                                       sw.WriteLine ("// " + fd.Wsdl);
+                                       sw.WriteLine ();
+                                       sw.Close ();
+                                       
+                               }
+                               else
+                                       File.Delete (pfile);
+                                       
+                               ReportError ("Errors found while generating " + prot + " proxy for WSDL: " + wsdl, err);
+                       }
+                       else
+                       {
+                               Console.WriteLine ("OK");
+                               proxies.Add (pfile);
+                       }
+               }
+       }
+       
+       static void BuildClients (string wsdl)
+       {
+               StreamWriter sw = new StreamWriter (Path.Combine (basePath, "client.sources"));
+               
+               foreach (ServiceData fd in services.services)
+               {
+                       if (wsdl != null && fd.Wsdl == wsdl) fd.ClientTest = true;
+                       
+                       if (!fd.ClientTest) continue;
+                       
+                       BuildClient (fd);
+                       sw.WriteLine (GetClientFile (fd));
+               }
+               
+               sw.Close ();
+       }
+       
+       public static void BuildClient (ServiceData sd)
+       {
+               string file = GetClientFile (sd);
+               
+               if (File.Exists (file)) return;
+
+               CreateFolderForFile (file);
+               
+               StreamWriter sw = new StreamWriter (file);
+               sw.WriteLine ("// Web service test for WSDL document:");
+               sw.WriteLine ("// " + sd.Wsdl);
+               
+               sw.WriteLine ();
+               sw.WriteLine ("using System;");
+               sw.WriteLine ("using NUnit.Framework;");
+               
+               foreach (string prot in sd.Protocols)
+                       sw.WriteLine ("using " + sd.Namespace + "." + prot + ";");
+               
+               sw.WriteLine ();
+               sw.WriteLine ("namespace " + sd.Namespace);
+               sw.WriteLine ("{");
+               sw.WriteLine ("\tpublic class " + sd.Name + ": WebServiceTest");
+               sw.WriteLine ("\t{");
+               sw.WriteLine ("\t\t[Test]");
+               sw.WriteLine ("\t\tpublic void TestService ()");
+               sw.WriteLine ("\t\t{");
+               sw.WriteLine ("\t\t}");
+               sw.WriteLine ("\t}");
+               sw.WriteLine ("}");
+               sw.Close ();
+               
+               Console.WriteLine ("Written file '" + file + "'");
+       }
+       
+       static string GetProxyFile (ServiceData fd, string protocol)
+       {
+               string fn = Path.Combine (new Uri (fd.Wsdl).Host, fd.Name + protocol + "Proxy.cs");
+               return Path.Combine (GetProxyPath(), fn);
+       }
+       
+       static string GetClientFile (ServiceData sd)
+       {
+               return Path.Combine (GetClientPath(), sd.TestFile);
+       }
+       
+       static void ReportError (string error, string detail)
+       {
+               string fn = Path.Combine (GetErrorPath(), "error.log");
+               CreateFolderForFile (fn);
+
+               StreamWriter sw = new StreamWriter (fn, true);
+               sw.WriteLine ("*** " + error);
+               sw.WriteLine ("   " + detail.Replace ("\n","\n   "));
+               sw.WriteLine ();
+               sw.Close ();
+               foundErrors = true;
+       }
+       
+       static string GetProxyPath ()
+       {
+               return Path.Combine (basePath, "proxies");
+       }
+       
+       static string GetClientPath ()
+       {
+               return Path.Combine (basePath, "client");
+       }
+       
+       static string GetErrorPath ()
+       {
+               return Path.Combine (basePath, "error");
+       }
+       
+       static void CreateFolderForFile (string file)
+       {
+               string dir = Path.GetDirectoryName (file);
+               DirectoryInfo di = new DirectoryInfo (dir);
+               if (!di.Exists) di.Create ();
+       }
+}
+
+[XmlType("services")]
+public class ServiceCollection
+{
+       [XmlElement("service", typeof(ServiceData))]
+       public ArrayList services = new ArrayList ();
+}
+
+[XmlType("service")]
+public class ServiceData
+{
+       [XmlElement("wsdl")]
+       public string Wsdl;
+       
+       [XmlElement("name")]
+       public string Name;
+       
+       [XmlElement("location")]
+       public string Location;
+       
+       [XmlArray("protocols")]
+       [XmlArrayItem("protocol")]
+       public string[] Protocols;
+       
+       [XmlElement("clientTest")]
+       public bool ClientTest;
+       
+       [XmlIgnore]
+       public string Namespace
+       {
+               get { return Name + "s"; }
+       }
+       
+       [XmlIgnore]
+       public string TestFile
+       {
+               get 
+               { 
+                       string dir = new Uri (Wsdl).Host;
+                       return Path.Combine (dir, Name + ".cs");
+               }
+       }
+}