Author: gnodet
Date: Fri Sep 22 10:24:46 2006
New Revision: 449015
URL: http://svn.apache.org/viewvc?view=rev&rev=449015
Log:
Improve junit tests
Added:
incubator/servicemix/trunk/servicemix-http/src/test/resources/org/apache/servicemix/http/bound-wsdl.wsdl
Modified:
incubator/servicemix/trunk/servicemix-http/src/test/java/org/apache/servicemix/http/HttpManagedTest.java
incubator/servicemix/trunk/servicemix-http/src/test/java/org/apache/servicemix/http/HttpProviderTest.java
incubator/servicemix/trunk/servicemix-http/src/test/java/org/apache/servicemix/http/HttpWsdlTest.java
Modified:
incubator/servicemix/trunk/servicemix-http/src/test/java/org/apache/servicemix/http/HttpManagedTest.java
URL:
http://svn.apache.org/viewvc/incubator/servicemix/trunk/servicemix-http/src/test/java/org/apache/servicemix/http/HttpManagedTest.java?view=diff&rev=449015&r1=449014&r2=449015
==============================================================================
---
incubator/servicemix/trunk/servicemix-http/src/test/java/org/apache/servicemix/http/HttpManagedTest.java
(original)
+++
incubator/servicemix/trunk/servicemix-http/src/test/java/org/apache/servicemix/http/HttpManagedTest.java
Fri Sep 22 10:24:46 2006
@@ -41,6 +41,14 @@
public class HttpManagedTest extends TestCase {
+ private Server server;
+
+ protected void shutDown() throws Exception {
+ if (server != null) {
+ server.stop();
+ }
+ }
+
public void test() throws Exception {
ContextHandler context = new ContextHandler();
context.setContextPath("/test");
@@ -67,16 +75,16 @@
SelectChannelConnector connector = new SelectChannelConnector();
connector.setHost("localhost");
- connector.setPort(8080);
+ connector.setPort(8190);
- Server server = new Server();
+ server = new Server();
server.setConnectors(new Connector[] { connector });
server.setHandler(handlers);
server.start();
System.err.println("Started");
- PostMethod post = new
PostMethod("http://localhost:8080/test/jbi/Service/");
+ PostMethod post = new
PostMethod("http://localhost:8190/test/jbi/Service/");
post.setRequestEntity(new StringRequestEntity("<soap:Envelope
xmlns:soap='http://www.w3.org/2003/05/soap-envelope'><soap:Body><hello>world</hello></soap:Body></soap:Envelope>"));
new HttpClient().executeMethod(post);
if (post.getStatusCode() != 200) {
Modified:
incubator/servicemix/trunk/servicemix-http/src/test/java/org/apache/servicemix/http/HttpProviderTest.java
URL:
http://svn.apache.org/viewvc/incubator/servicemix/trunk/servicemix-http/src/test/java/org/apache/servicemix/http/HttpProviderTest.java?view=diff&rev=449015&r1=449014&r2=449015
==============================================================================
---
incubator/servicemix/trunk/servicemix-http/src/test/java/org/apache/servicemix/http/HttpProviderTest.java
(original)
+++
incubator/servicemix/trunk/servicemix-http/src/test/java/org/apache/servicemix/http/HttpProviderTest.java
Fri Sep 22 10:24:46 2006
@@ -24,17 +24,18 @@
import javax.jbi.messaging.ExchangeStatus;
import javax.jbi.messaging.InOut;
import javax.jbi.messaging.RobustInOnly;
+import javax.jbi.messaging.MessageExchange.Role;
import javax.xml.namespace.QName;
import javax.xml.transform.stream.StreamSource;
import junit.framework.TestCase;
import org.apache.servicemix.client.DefaultServiceMixClient;
-import org.apache.servicemix.components.http.HttpConnector;
import org.apache.servicemix.components.util.EchoComponent;
import org.apache.servicemix.jbi.container.ActivationSpec;
import org.apache.servicemix.jbi.container.JBIContainer;
import org.apache.servicemix.jbi.jaxp.SourceTransformer;
+import org.apache.servicemix.soap.SoapHelper;
import org.apache.servicemix.tck.Receiver;
import org.apache.servicemix.tck.ReceiverComponent;
@@ -70,10 +71,16 @@
container.activateComponent(asReceiver);
// Add the http receiver
- HttpConnector connector = new HttpConnector("localhost", 8192);
- connector.setDefaultInOut(false);
+ HttpSpringComponent connector = new HttpSpringComponent();
+ HttpEndpoint endpoint = new HttpEndpoint();
+ endpoint.setRole(Role.CONSUMER);
+ endpoint.setLocationURI("http://localhost:8192/");
+ endpoint.setSoap(false);
+ endpoint.setDefaultMep(SoapHelper.IN_ONLY);
+ endpoint.setService(new QName("test", "receiver"));
+ endpoint.setEndpoint("BC");
+ connector.setEndpoints(new HttpEndpoint[] { endpoint });
ActivationSpec asConnector = new ActivationSpec("connector",
connector);
- asConnector.setDestinationService(new QName("test",
"receiver"));
container.activateComponent(asConnector);
// Start container
@@ -125,11 +132,17 @@
container.activateComponent(asReceiver);
// Add the http receiver
- HttpConnector connector = new HttpConnector("localhost", 8192);
- connector.setDefaultInOut(true);
- ActivationSpec asConnector = new ActivationSpec("connector",
connector);
- asConnector.setDestinationService(new QName("test", "echo"));
- container.activateComponent(asConnector);
+ HttpSpringComponent connector = new HttpSpringComponent();
+ HttpEndpoint endpoint = new HttpEndpoint();
+ endpoint.setRole(Role.CONSUMER);
+ endpoint.setLocationURI("http://localhost:8192/");
+ endpoint.setSoap(false);
+ endpoint.setDefaultMep(SoapHelper.IN_OUT);
+ endpoint.setService(new QName("test", "echo"));
+ endpoint.setEndpoint("BC");
+ connector.setEndpoints(new HttpEndpoint[] { endpoint });
+ ActivationSpec asConnector = new ActivationSpec("connector",
connector);
+ container.activateComponent(asConnector);
// Start container
container.start();
Modified:
incubator/servicemix/trunk/servicemix-http/src/test/java/org/apache/servicemix/http/HttpWsdlTest.java
URL:
http://svn.apache.org/viewvc/incubator/servicemix/trunk/servicemix-http/src/test/java/org/apache/servicemix/http/HttpWsdlTest.java?view=diff&rev=449015&r1=449014&r2=449015
==============================================================================
---
incubator/servicemix/trunk/servicemix-http/src/test/java/org/apache/servicemix/http/HttpWsdlTest.java
(original)
+++
incubator/servicemix/trunk/servicemix-http/src/test/java/org/apache/servicemix/http/HttpWsdlTest.java
Fri Sep 22 10:24:46 2006
@@ -19,7 +19,15 @@
import javax.jbi.servicedesc.ServiceEndpoint;
import javax.servlet.http.HttpServletResponse;
import javax.wsdl.Definition;
+import javax.wsdl.Input;
+import javax.wsdl.Message;
+import javax.wsdl.Operation;
+import javax.wsdl.Output;
+import javax.wsdl.Part;
+import javax.wsdl.Port;
import javax.wsdl.PortType;
+import javax.wsdl.Service;
+import javax.wsdl.WSDLException;
import javax.wsdl.factory.WSDLFactory;
import javax.wsdl.xml.WSDLReader;
import javax.xml.namespace.QName;
@@ -54,18 +62,11 @@
}
}
- public void testWithNonStandaloneWsdl() throws Exception {
+ protected void testWSDL(final Definition def, int portNumber) throws
Exception {
// Add a receiver component
ActivationSpec asEcho = new ActivationSpec("echo", new EchoComponent()
{
public Document getServiceDescription(ServiceEndpoint endpoint) {
try {
- Definition def = WSDLFactory.newInstance().newDefinition();
- PortType type = def.createPortType();
- type.setUndefined(false);
- type.setQName(new QName("http://porttype.test",
"MyConsumerInterface"));
- def.setTargetNamespace("http://porttype.test");
- def.addNamespace("tns", "http://porttype.test");
- def.addPortType(type);
Document doc =
WSDLFactory.newInstance().newWSDLWriter().getDocument(def);
return doc;
} catch (Exception e) {
@@ -82,7 +83,8 @@
ep.setService(new QName("http://test", "MyConsumerService"));
ep.setEndpoint("myConsumer");
ep.setRoleAsString("consumer");
- ep.setLocationURI("http://localhost:8195/Service");
+ ep.setLocationURI("http://localhost:" + portNumber + "/Service");
+ ep.setSoap(true);
HttpSpringComponent http = new HttpSpringComponent();
http.setEndpoints(new HttpEndpoint[] { ep });
container.activateComponent(http, "HttpWsdlTest");
@@ -90,19 +92,85 @@
// Start container
container.start();
- GetMethod get = new GetMethod("http://localhost:8195/Service/?wsdl");
+ GetMethod get = new GetMethod("http://localhost:" + portNumber +
"/Service/?wsdl");
int state = new HttpClient().executeMethod(get);
assertEquals(HttpServletResponse.SC_OK, state);
Document doc = (Document) new SourceTransformer().toDOMNode(new
StringSource(get.getResponseBodyAsString()));
+ get.releaseConnection();
// Test WSDL
WSDLFactory factory = WSDLFactory.newInstance();
WSDLReader reader = factory.newWSDLReader();
- Definition def;
- def = reader.readWSDL("http://localhost:8195/Service/?wsdl", doc);
- assertNotNull(def);
- assertNotNull(def.getImports());
- assertEquals(1, def.getImports().size());
+ Definition definition;
+ definition = reader.readWSDL("http://localhost:" + portNumber +
"/Service/?wsdl", doc);
+ assertNotNull(definition);
+ assertNotNull(definition.getImports());
+ assertEquals(1, definition.getImports().size());
+ WSDLFactory.newInstance().newWSDLWriter().writeWSDL(definition,
System.err);
+ Service svc = (Service)
definition.getServices().values().iterator().next();
+ Port port = (Port) svc.getPorts().values().iterator().next();
+ }
+
+ protected Definition createDefinition(boolean rpc) throws WSDLException {
+ Definition def = WSDLFactory.newInstance().newDefinition();
+ def.setTargetNamespace("http://porttype.test");
+ def.addNamespace("tns", "http://porttype.test");
+ def.addNamespace("xsd", "http://www.w3.org/2000/10/XMLSchema");
+ def.addNamespace("w", "uri:hello");
+ Message inMsg = def.createMessage();
+ inMsg.setQName(new QName("http://porttype.test", "InMessage"));
+ inMsg.setUndefined(false);
+ Part part1 = def.createPart();
+ part1.setName("part1");
+ if (rpc) {
+ part1.setTypeName(new QName("http://www.w3.org/2000/10/XMLSchema",
"int"));
+ } else {
+ part1.setElementName(new QName("uri:hello", "world"));
+ }
+ inMsg.addPart(part1);
+ Part part2 = def.createPart();
+ part2.setName("part2");
+ part2.setElementName(new QName("uri:hello", "world"));
+ inMsg.addPart(part2);
+ def.addMessage(inMsg);
+ Message outMsg = def.createMessage();
+ outMsg.setQName(new QName("http://porttype.test", "OutMessage"));
+ outMsg.setUndefined(false);
+ Part part3 = def.createPart();
+ part3.setName("part3");
+ part3.setElementName(new QName("uri:hello", "world"));
+ outMsg.addPart(part3);
+ def.addMessage(outMsg);
+ PortType type = def.createPortType();
+ type.setUndefined(false);
+ type.setQName(new QName("http://porttype.test",
"MyConsumerInterface"));
+ Operation op = def.createOperation();
+ op.setName("Hello");
+ Input in = def.createInput();
+ in.setMessage(inMsg);
+ op.setInput(in);
+ op.setUndefined(false);
+ Output out = def.createOutput();
+ out.setMessage(outMsg);
+ op.setOutput(out);
+ type.addOperation(op);
+ def.addPortType(type);
+ WSDLFactory.newInstance().newWSDLWriter().writeWSDL(def, System.err);
+ return def;
+ }
+
+ public void testWithNonStandaloneWsdlDoc() throws Exception {
+ testWSDL(createDefinition(false), 8192);
+ }
+
+ public void testWithNonStandaloneWsdlRpc() throws Exception {
+ testWSDL(createDefinition(true), 8193);
+ }
+
+ public void testWithExistingBinding() throws Exception {
+ String uri = getClass().getResource("bound-wsdl.wsdl").toString();
+ Definition def =
WSDLFactory.newInstance().newWSDLReader().readWSDL(uri);
+ testWSDL(def, 8194);
}
public void testExternalNonStandaloneWsdl() throws Exception {
@@ -124,6 +192,7 @@
int state = new HttpClient().executeMethod(get);
assertEquals(HttpServletResponse.SC_OK, state);
Document doc = (Document) new SourceTransformer().toDOMNode(new
StringSource(get.getResponseBodyAsString()));
+ get.releaseConnection();
// Test WSDL
WSDLFactory factory = WSDLFactory.newInstance();
Added:
incubator/servicemix/trunk/servicemix-http/src/test/resources/org/apache/servicemix/http/bound-wsdl.wsdl
URL:
http://svn.apache.org/viewvc/incubator/servicemix/trunk/servicemix-http/src/test/resources/org/apache/servicemix/http/bound-wsdl.wsdl?view=auto&rev=449015
==============================================================================
---
incubator/servicemix/trunk/servicemix-http/src/test/resources/org/apache/servicemix/http/bound-wsdl.wsdl
(added)
+++
incubator/servicemix/trunk/servicemix-http/src/test/resources/org/apache/servicemix/http/bound-wsdl.wsdl
Fri Sep 22 10:24:46 2006
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<wsdl:definitions targetNamespace="http://porttype.test"
xmlns:tns="http://porttype.test" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+ xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/">
+ <wsdl:types>
+ <schema targetNamespace="http://porttype.test"
+ xmlns="http://www.w3.org/2000/10/XMLSchema">
+ <element name="HelloRequest">
+ <complexType>
+ <all>
+ <element name="text" type="string"/>
+ </all>
+ </complexType>
+ </element>
+ <element name="HelloResponse">
+ <complexType>
+ <all>
+ <element name="text" type="string"/>
+ </all>
+ </complexType>
+ </element>
+ <element name="HelloHeader">
+ <complexType>
+ <all>
+ <element name="id" type="string"/>
+ </all>
+ </complexType>
+ </element>
+ </schema>
+ </wsdl:types>
+
+ <wsdl:message name="InMessage">
+ <wsdl:part name="body" element="tns:HelloRequest"/>
+ <wsdl:part name="header1" element="tns:HelloHeader"/>
+ </wsdl:message>
+ <wsdl:message name="OutMessage">
+ <wsdl:part name="body" element="tns:HelloResponse"/>
+ </wsdl:message>
+ <wsdl:portType name="MyConsumerInterface">
+ <wsdl:operation name="Hello">
+ <wsdl:input message="tns:InMessage"/>
+ <wsdl:output message="tns:OutMessage"/>
+ </wsdl:operation>
+ </wsdl:portType>
+ <wsdl:binding name="myConsumerBinding" type="tns:MyConsumerInterface">
+ <wsdlsoap:binding transport="http://schemas.xmlsoap.org/soap/http"/>
+ <wsdl:operation name="Hello">
+ <wsdlsoap:operation soapAction=""/>
+ <wsdl:input>
+ <wsdlsoap:body use="literal" parts="body"/>
+ <wsdlsoap:header use="literal" message="tns:HelloRequest"
part="header1"/>
+ </wsdl:input>
+ <wsdl:output>
+ <wsdlsoap:body use="literal"/>
+ </wsdl:output>
+ </wsdl:operation>
+ </wsdl:binding>
+</wsdl:definitions>