Author: veithen
Date: Thu Sep  4 15:33:28 2008
New Revision: 692284

URL: http://svn.apache.org/viewvc?rev=692284&view=rev
Log:
Transport tests: Introduced TransportTestSuiteBuilder to automatically build a 
test suite based on a set of environments, clients, channels and endpoints.

Added:
    
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/jms/JMSTransportTest.java
    
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/TransportTestSuiteBuilder.java
    
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/vfs/VFSTransportTest.java
      - copied, changed from r692195, 
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/vfs/VFSTransportListenerTest.java
Removed:
    
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/jms/JMSListenerTest.java
    
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/vfs/VFSTransportListenerTest.java
    
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/vfs/VFSTransportSenderTest.java
Modified:
    
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/MailTransportListenerTest.java
    
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/nhttp/HttpCoreNIOListenerTest.java

Added: 
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/jms/JMSTransportTest.java
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/jms/JMSTransportTest.java?rev=692284&view=auto
==============================================================================
--- 
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/jms/JMSTransportTest.java
 (added)
+++ 
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/jms/JMSTransportTest.java
 Thu Sep  4 15:33:28 2008
@@ -0,0 +1,84 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+
+package org.apache.synapse.transport.jms;
+
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+import org.apache.synapse.transport.testkit.TransportDescriptionFactory;
+import org.apache.synapse.transport.testkit.TransportTestSuite;
+import org.apache.synapse.transport.testkit.TransportTestSuiteBuilder;
+import org.apache.synapse.transport.testkit.client.axis2.AxisAsyncTestClient;
+import 
org.apache.synapse.transport.testkit.client.axis2.AxisRequestResponseTestClient;
+import org.apache.synapse.transport.testkit.listener.AsyncChannel;
+import org.apache.synapse.transport.testkit.server.axis2.AxisAsyncEndpoint;
+import org.apache.synapse.transport.testkit.server.axis2.AxisEchoEndpoint;
+import org.apache.synapse.transport.testkit.server.axis2.AxisServer;
+import org.apache.synapse.transport.testkit.tests.misc.MinConcurrencyTest;
+
+public class JMSTransportTest extends TestCase {
+    public static TestSuite suite() throws Exception {
+        TransportTestSuite suite = new 
TransportTestSuite(JMSTransportTest.class);
+        
+        // SwA doesn't make sense with text messages
+        suite.addExclude("(&(test=AsyncSwA)(client=TextMessage))");
+        // SYNAPSE-304:
+        suite.addExclude("(&(test=AsyncTextPlain)(client=BytesMessage))");
+        
+        TransportTestSuiteBuilder builder = new 
TransportTestSuiteBuilder(suite);
+
+        TransportDescriptionFactory tdf = new JMSTransportDescriptionFactory();
+        JMSTestEnvironment[] environments = new JMSTestEnvironment[] { new 
QpidTestEnvironment(), new ActiveMQTestEnvironment() };
+        
+        for (JMSTestEnvironment env : environments) {
+            builder.addEnvironment(env, tdf);
+        }
+        
+        builder.addAsyncChannel(new 
JMSAsyncChannel(JMSConstants.DESTINATION_TYPE_QUEUE, 
ContentTypeMode.TRANSPORT));
+        builder.addAsyncChannel(new 
JMSAsyncChannel(JMSConstants.DESTINATION_TYPE_TOPIC, 
ContentTypeMode.TRANSPORT));
+        
+        builder.addAxisAsyncTestClient(new AxisAsyncTestClient());
+        builder.addAxisAsyncTestClient(new AxisAsyncTestClient(new 
JMSAxisTestClientSetup(JMSConstants.JMS_BYTE_MESSAGE)));
+        builder.addAxisAsyncTestClient(new AxisAsyncTestClient(new 
JMSAxisTestClientSetup(JMSConstants.JMS_TEXT_MESSAGE)));
+        builder.addByteArrayAsyncTestClient(new JMSBytesMessageClient());
+        builder.addStringAsyncTestClient(new JMSTextMessageClient());
+        
+        builder.addAxisAsyncEndpoint(new AxisAsyncEndpoint());
+        
+        builder.addRequestResponseChannel(new 
JMSRequestResponseChannel(JMSConstants.DESTINATION_TYPE_QUEUE, 
JMSConstants.DESTINATION_TYPE_QUEUE, ContentTypeMode.TRANSPORT));
+        
+        builder.addAxisRequestResponseTestClient(new 
AxisRequestResponseTestClient());
+        
+        builder.addEchoEndpoint(new MockEchoEndpoint());
+        builder.addEchoEndpoint(new AxisEchoEndpoint());
+        
+        for (JMSTestEnvironment env : new JMSTestEnvironment[] { new 
QpidTestEnvironment(), new ActiveMQTestEnvironment() }) {
+            suite.addTest(new MinConcurrencyTest(AxisServer.INSTANCE, new 
AsyncChannel[] {
+                    new JMSAsyncChannel("endpoint1", 
JMSConstants.DESTINATION_TYPE_QUEUE, ContentTypeMode.TRANSPORT),
+                    new JMSAsyncChannel("endpoint2", 
JMSConstants.DESTINATION_TYPE_QUEUE, ContentTypeMode.TRANSPORT) },
+                    2, false, env, tdf));
+        }
+        
+        
+        builder.build();
+        
+        return suite;
+    }
+}

Modified: 
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/MailTransportListenerTest.java
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/MailTransportListenerTest.java?rev=692284&r1=692283&r2=692284&view=diff
==============================================================================
--- 
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/MailTransportListenerTest.java
 (original)
+++ 
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/MailTransportListenerTest.java
 Thu Sep  4 15:33:28 2008
@@ -19,21 +19,12 @@
 
 package org.apache.synapse.transport.mail;
 
-import static org.apache.synapse.transport.testkit.AdapterUtils.adapt;
-
-import java.util.LinkedList;
-import java.util.List;
-
 import junit.framework.TestCase;
 import junit.framework.TestSuite;
 
-import org.apache.synapse.transport.testkit.AdapterUtils;
 import org.apache.synapse.transport.testkit.TransportTestSuite;
-import org.apache.synapse.transport.testkit.client.AsyncTestClient;
+import org.apache.synapse.transport.testkit.TransportTestSuiteBuilder;
 import org.apache.synapse.transport.testkit.client.axis2.AxisAsyncTestClient;
-import org.apache.synapse.transport.testkit.message.MessageDecoder;
-import org.apache.synapse.transport.testkit.message.MessageEncoder;
-import org.apache.synapse.transport.testkit.message.XMLMessage;
 import org.apache.synapse.transport.testkit.server.axis2.AxisAsyncEndpoint;
 import org.apache.synapse.transport.testkit.server.axis2.AxisEchoEndpoint;
 import org.apache.synapse.transport.testkit.server.axis2.AxisServer;
@@ -54,27 +45,31 @@
         // SYNAPSE-434
         suite.addExclude("(test=MinConcurrency)");
         
-        MailTestEnvironment env = new GreenMailTestEnvironment();
+        TransportTestSuiteBuilder builder = new 
TransportTestSuiteBuilder(suite);
+        
+        GreenMailTestEnvironment env = new GreenMailTestEnvironment();
+        
+        builder.addEnvironment(env);
         
-        AxisAsyncEndpoint asyncEndpoint = new AxisAsyncEndpoint();
         MailChannel channel = new MailChannel();
-        suite.addPOXTests(channel, adapt(new MailRequestResponseClient(new 
FlatLayout()), MessageEncoder.XML_TO_BYTE, MessageDecoder.BYTE_TO_XML), new 
AxisEchoEndpoint(), env);
-        List<MailAsyncClient> clients = new LinkedList<MailAsyncClient>();
-        clients.add(new MailAsyncClient(new FlatLayout()));
-        clients.add(new MailAsyncClient(new MultipartLayout()));
-        for (MailAsyncClient client : clients) {
-            AsyncTestClient<XMLMessage> xmlClient = adapt(client, 
MessageEncoder.XML_TO_BYTE);
-            suite.addSOAPTests(channel, xmlClient, adapt(new 
AxisAsyncEndpoint(), MessageDecoder.AXIS_TO_XML), env);
-            suite.addPOXTests(channel, xmlClient, adapt(new 
AxisAsyncEndpoint(), MessageDecoder.AXIS_TO_XML), env);
-            suite.addSwATests(channel, xmlClient, adapt(asyncEndpoint, 
MessageDecoder.AXIS_TO_XML), env);
-            suite.addTextPlainTests(channel, adapt(client, 
MessageEncoder.STRING_TO_BYTE), AdapterUtils.adapt(asyncEndpoint, 
MessageDecoder.AXIS_TO_STRING), env);
-            suite.addBinaryTest(channel, client, adapt(asyncEndpoint, 
MessageDecoder.AXIS_TO_BYTE), env);
-        }
-        AxisAsyncTestClient axisClient = new AxisAsyncTestClient();
-        suite.addSOAPTests(channel, adapt(axisClient, 
MessageEncoder.XML_TO_AXIS), adapt(new AxisAsyncEndpoint(), 
MessageDecoder.AXIS_TO_XML), env);
-        suite.addPOXTests(channel, adapt(axisClient, 
MessageEncoder.XML_TO_AXIS), adapt(new AxisAsyncEndpoint(), 
MessageDecoder.AXIS_TO_XML), env);
-        suite.addTextPlainTests(channel, adapt(axisClient, 
MessageEncoder.TEXT_WRAPPER), AdapterUtils.adapt(asyncEndpoint, 
MessageDecoder.AXIS_TO_STRING), env);
-        suite.addBinaryTest(channel, adapt(axisClient, 
MessageEncoder.BINARY_WRAPPER), adapt(asyncEndpoint, 
MessageDecoder.AXIS_TO_BYTE), env);
+        
+        builder.addAsyncChannel(channel);
+        
+        builder.addAxisAsyncTestClient(new AxisAsyncTestClient());
+        builder.addByteArrayAsyncTestClient(new MailAsyncClient(new 
FlatLayout()));
+        builder.addByteArrayAsyncTestClient(new MailAsyncClient(new 
MultipartLayout()));
+        
+        builder.addAxisAsyncEndpoint(new AxisAsyncEndpoint());
+        
+        builder.addRequestResponseChannel(channel);
+        
+        builder.addByteArrayRequestResponseTestClient(new 
MailRequestResponseClient(new FlatLayout()));
+        builder.addByteArrayRequestResponseTestClient(new 
MailRequestResponseClient(new MultipartLayout()));
+        
+        builder.addEchoEndpoint(new AxisEchoEndpoint());
+        
+        builder.build();
+        
         suite.addTest(new MinConcurrencyTest(AxisServer.INSTANCE, new 
MailChannel[] { new MailChannel(), new MailChannel() }, 2, true, env));
         return suite;
     }

Modified: 
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/nhttp/HttpCoreNIOListenerTest.java
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/nhttp/HttpCoreNIOListenerTest.java?rev=692284&r1=692283&r2=692284&view=diff
==============================================================================
--- 
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/nhttp/HttpCoreNIOListenerTest.java
 (original)
+++ 
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/nhttp/HttpCoreNIOListenerTest.java
 Thu Sep  4 15:33:28 2008
@@ -19,11 +19,6 @@
 
 package org.apache.synapse.transport.nhttp;
 
-import static org.apache.synapse.transport.testkit.AdapterUtils.adapt;
-
-import java.util.LinkedList;
-import java.util.List;
-
 import junit.framework.TestCase;
 import junit.framework.TestSuite;
 
@@ -34,13 +29,12 @@
 import org.apache.synapse.transport.testkit.SimpleTransportDescriptionFactory;
 import org.apache.synapse.transport.testkit.TransportDescriptionFactory;
 import org.apache.synapse.transport.testkit.TransportTestSuite;
-import org.apache.synapse.transport.testkit.client.AsyncTestClient;
+import org.apache.synapse.transport.testkit.TransportTestSuiteBuilder;
 import org.apache.synapse.transport.testkit.client.axis2.AxisAsyncTestClient;
+import 
org.apache.synapse.transport.testkit.client.axis2.AxisRequestResponseTestClient;
 import org.apache.synapse.transport.testkit.listener.AsyncChannel;
-import org.apache.synapse.transport.testkit.message.MessageDecoder;
-import org.apache.synapse.transport.testkit.message.MessageEncoder;
-import org.apache.synapse.transport.testkit.message.XMLMessage;
 import org.apache.synapse.transport.testkit.server.axis2.AxisAsyncEndpoint;
+import org.apache.synapse.transport.testkit.server.axis2.AxisEchoEndpoint;
 import org.apache.synapse.transport.testkit.server.axis2.AxisServer;
 import org.apache.synapse.transport.testkit.tests.misc.MinConcurrencyTest;
 
@@ -48,7 +42,8 @@
     public static TestSuite suite() throws Exception {
         TransportTestSuite suite = new 
TransportTestSuite(HttpCoreNIOListenerTest.class);
         
-        
suite.addExclude("(&(client=*)(endpoint=*)(!(|(client=axis)(endpoint=axis))))");
+        // These tests don't work because of a problem similar to SYNAPSE-418
+        suite.addExclude("(test=EchoXML)");
         
         TransportDescriptionFactory tdfNIO =
             new SimpleTransportDescriptionFactory("http", 
HttpCoreNIOListener.class, 
@@ -68,26 +63,30 @@
         // Change to tdfSimple if you want to check the behavior of Axis' 
blocking HTTP transport 
         TransportDescriptionFactory tdf = tdfNIO;
         
-        AxisAsyncEndpoint asyncEndpoint = new AxisAsyncEndpoint();
-        JettyAsyncEndpoint jettyAsyncEndpoint = new JettyAsyncEndpoint();
-//        AxisEchoEndpointFactory echoEndpointFactory = new 
AxisEchoEndpointFactory();
+        TransportTestSuiteBuilder builder = new 
TransportTestSuiteBuilder(suite);
+        
+        builder.addEnvironment(tdf);
+        
         HttpChannel channel = new HttpChannel();
-        JavaNetClient javaNetClient = new JavaNetClient();
-        List<AsyncTestClient<XMLMessage>> clients = new 
LinkedList<AsyncTestClient<XMLMessage>>();
-        clients.add(adapt(javaNetClient, MessageEncoder.XML_TO_BYTE));
-        clients.add(adapt(new AxisAsyncTestClient(new 
HttpAxisTestClientSetup(false)), MessageEncoder.XML_TO_AXIS));
-        clients.add(adapt(new AxisAsyncTestClient(new 
HttpAxisTestClientSetup(true)), MessageEncoder.XML_TO_AXIS));
-        for (AsyncTestClient<XMLMessage> client : clients) {
-            suite.addSOAPTests(channel, client, adapt(asyncEndpoint, 
MessageDecoder.AXIS_TO_XML), tdf);
-            suite.addPOXTests(channel, client, adapt(asyncEndpoint, 
MessageDecoder.AXIS_TO_XML), tdf);
-            suite.addSOAPTests(channel, client, adapt(jettyAsyncEndpoint, 
MessageDecoder.BYTE_TO_XML), tdf);
-            suite.addPOXTests(channel, client, adapt(jettyAsyncEndpoint, 
MessageDecoder.BYTE_TO_XML), tdf);
-        }
-//        suite.addPOXTests(channel, adapt(new 
AxisRequestResponseTestClient(), MessageConverter.XML_TO_AXIS, 
MessageConverter.AXIS_TO_XML), echoEndpointFactory, env, axisServer, tdf);
-        suite.addSwATests(channel, adapt(javaNetClient, 
MessageEncoder.XML_TO_BYTE), adapt(asyncEndpoint, MessageDecoder.AXIS_TO_XML), 
tdf);
-        suite.addTextPlainTests(channel, adapt(javaNetClient, 
MessageEncoder.STRING_TO_BYTE), adapt(asyncEndpoint, 
MessageDecoder.AXIS_TO_STRING), tdf);
-        suite.addBinaryTest(channel, javaNetClient, adapt(asyncEndpoint, 
MessageDecoder.AXIS_TO_BYTE), tdf);
-        suite.addRESTTests(channel, new JavaNetRESTClient(), asyncEndpoint, 
tdf);
+        
+        builder.addAsyncChannel(channel);
+        
+        builder.addByteArrayAsyncTestClient(new JavaNetClient());
+        builder.addAxisAsyncTestClient(new AxisAsyncTestClient(new 
HttpAxisTestClientSetup(false)));
+        builder.addAxisAsyncTestClient(new AxisAsyncTestClient(new 
HttpAxisTestClientSetup(true)));
+        builder.addRESTAsyncTestClient(new JavaNetRESTClient());
+        
+        builder.addAxisAsyncEndpoint(new AxisAsyncEndpoint());
+        builder.addByteArrayAsyncEndpoint(new JettyAsyncEndpoint());
+        
+        builder.addRequestResponseChannel(channel);
+        
+        builder.addAxisRequestResponseTestClient(new 
AxisRequestResponseTestClient());
+        
+        builder.addEchoEndpoint(new AxisEchoEndpoint());
+        
+        builder.build();
+        
         suite.addTest(new MinConcurrencyTest(AxisServer.INSTANCE, new 
AsyncChannel[] { new HttpChannel(), new HttpChannel() }, 2, false, tdf));
         return suite;
     }

Added: 
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/TransportTestSuiteBuilder.java
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/TransportTestSuiteBuilder.java?rev=692284&view=auto
==============================================================================
--- 
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/TransportTestSuiteBuilder.java
 (added)
+++ 
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/TransportTestSuiteBuilder.java
 Thu Sep  4 15:33:28 2008
@@ -0,0 +1,225 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+
+package org.apache.synapse.transport.testkit;
+
+import static org.apache.synapse.transport.testkit.AdapterUtils.adapt;
+
+import java.text.ParseException;
+import java.util.Arrays;
+import java.util.Iterator;
+import java.util.LinkedHashSet;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Set;
+
+import org.apache.synapse.transport.testkit.client.AsyncTestClient;
+import org.apache.synapse.transport.testkit.client.RequestResponseTestClient;
+import org.apache.synapse.transport.testkit.listener.AsyncChannel;
+import org.apache.synapse.transport.testkit.listener.RequestResponseChannel;
+import org.apache.synapse.transport.testkit.message.AxisMessage;
+import org.apache.synapse.transport.testkit.message.MessageDecoder;
+import org.apache.synapse.transport.testkit.message.MessageEncoder;
+import org.apache.synapse.transport.testkit.message.RESTMessage;
+import org.apache.synapse.transport.testkit.message.XMLMessage;
+import org.apache.synapse.transport.testkit.server.AsyncEndpoint;
+import org.apache.synapse.transport.testkit.server.Endpoint;
+import 
org.apache.synapse.transport.testkit.tests.async.LargeSOAPAsyncMessageTestCase;
+
+public class TransportTestSuiteBuilder {
+    static class ResourceRelation<T> {
+        private final T primaryResource;
+        private final Object[] relatedResources;
+        
+        public ResourceRelation(T primaryResource, Object... relatedResources) 
{
+            this.primaryResource = primaryResource;
+            this.relatedResources = relatedResources;
+        }
+
+        public T getPrimaryResource() {
+            return primaryResource;
+        }
+
+        public Object[] getRelatedResources() {
+            return relatedResources;
+        }
+    }
+    
+    static class ResourceList<T> implements Iterable<ResourceRelation<T>> {
+        private final List<ResourceRelation<T>> list = new 
LinkedList<ResourceRelation<T>>();
+        
+        public void add(T primaryResource, Object... relatedResources) {
+            list.add(new ResourceRelation<T>(primaryResource, 
relatedResources));
+        }
+
+        public Iterator<ResourceRelation<T>> iterator() {
+            return list.iterator();
+        }
+    }
+    
+    private final TransportTestSuite suite;
+    
+    private final List<Object[]> environments = new LinkedList<Object[]>();
+    
+    private final ResourceList<AsyncChannel> asyncChannels = new 
ResourceList<AsyncChannel>();
+    
+    private final ResourceList<AsyncTestClient<byte[]>> byteAsyncClients = new 
ResourceList<AsyncTestClient<byte[]>>();
+    private final ResourceList<AsyncTestClient<XMLMessage>> xmlAsyncClients = 
new ResourceList<AsyncTestClient<XMLMessage>>();
+    private final ResourceList<AsyncTestClient<RESTMessage>> restAsyncClients 
= new ResourceList<AsyncTestClient<RESTMessage>>();
+    private final ResourceList<AsyncTestClient<String>> stringAsyncClients = 
new ResourceList<AsyncTestClient<String>>();
+    
+    private final ResourceList<AsyncEndpoint<AxisMessage>> axisAsyncEndpoints 
= new ResourceList<AsyncEndpoint<AxisMessage>>();
+    private final ResourceList<AsyncEndpoint<byte[]>> byteAsyncEndpoints = new 
ResourceList<AsyncEndpoint<byte[]>>();
+    private final ResourceList<AsyncEndpoint<XMLMessage>> xmlAsyncEndpoints = 
new ResourceList<AsyncEndpoint<XMLMessage>>();
+    private final ResourceList<AsyncEndpoint<String>> stringAsyncEndpoints = 
new ResourceList<AsyncEndpoint<String>>();
+    
+    private final ResourceList<RequestResponseChannel> requestResponseChannels 
= new ResourceList<RequestResponseChannel>();
+    
+    private final 
ResourceList<RequestResponseTestClient<XMLMessage,XMLMessage>> 
xmlRequestResponseClients = new 
ResourceList<RequestResponseTestClient<XMLMessage,XMLMessage>>();
+    
+    private final ResourceList<Endpoint> echoEndpoints = new 
ResourceList<Endpoint>();
+    
+    public TransportTestSuiteBuilder(TransportTestSuite suite) {
+        this.suite = suite;
+        try {
+            // We only want tests with client and/or endpoint based on Axis
+            
suite.addExclude("(&(client=*)(endpoint=*)(!(|(client=axis)(endpoint=axis))))");
+        } catch (ParseException ex) {
+            throw new Error(ex);
+        }
+    }
+    
+    public void addEnvironment(Object... resources) {
+        environments.add(resources);
+    }
+    
+    public void addAsyncChannel(AsyncChannel channel, Object... 
relatedResources) {
+        asyncChannels.add(channel, relatedResources);
+    }
+    
+    public void addAxisAsyncTestClient(AsyncTestClient<AxisMessage> client, 
Object... relatedResources) {
+        byteAsyncClients.add(adapt(client, MessageEncoder.BINARY_WRAPPER), 
relatedResources);
+        xmlAsyncClients.add(adapt(client, MessageEncoder.XML_TO_AXIS), 
relatedResources);
+        stringAsyncClients.add(adapt(client, MessageEncoder.TEXT_WRAPPER), 
relatedResources);
+    }
+    
+    public void addByteArrayAsyncTestClient(AsyncTestClient<byte[]> client, 
Object... relatedResources) {
+        byteAsyncClients.add(client, relatedResources);
+        xmlAsyncClients.add(adapt(client, MessageEncoder.XML_TO_BYTE), 
relatedResources);
+        stringAsyncClients.add(adapt(client, MessageEncoder.STRING_TO_BYTE), 
relatedResources);
+    }
+    
+    public void addRESTAsyncTestClient(AsyncTestClient<RESTMessage> client, 
Object... relatedResources) {
+        restAsyncClients.add(client, relatedResources);
+    }
+    
+    public void addStringAsyncTestClient(AsyncTestClient<String> client, 
Object... relatedResources) {
+        xmlAsyncClients.add(adapt(client, MessageEncoder.XML_TO_STRING), 
relatedResources);
+        stringAsyncClients.add(client, relatedResources);
+    }
+    
+    public void addAxisAsyncEndpoint(AsyncEndpoint<AxisMessage> endpoint, 
Object... relatedResources) {
+        axisAsyncEndpoints.add(endpoint, relatedResources);
+        byteAsyncEndpoints.add(adapt(endpoint, MessageDecoder.AXIS_TO_BYTE), 
relatedResources);
+        xmlAsyncEndpoints.add(adapt(endpoint, MessageDecoder.AXIS_TO_XML), 
relatedResources);
+        stringAsyncEndpoints.add(adapt(endpoint, 
MessageDecoder.AXIS_TO_STRING), relatedResources);
+    }
+    
+    public void addByteArrayAsyncEndpoint(AsyncEndpoint<byte[]> endpoint, 
Object... relatedResources) {
+        byteAsyncEndpoints.add(endpoint, relatedResources);
+        xmlAsyncEndpoints.add(adapt(endpoint, MessageDecoder.BYTE_TO_XML), 
relatedResources);
+        stringAsyncEndpoints.add(adapt(endpoint, 
MessageDecoder.BYTE_TO_STRING), relatedResources);
+    }
+    
+    public void addRequestResponseChannel(RequestResponseChannel channel, 
Object... relatedResources) {
+        requestResponseChannels.add(channel, relatedResources);
+    }
+    
+    public void 
addAxisRequestResponseTestClient(RequestResponseTestClient<AxisMessage,AxisMessage>
 client, Object... relatedResources) {
+        xmlRequestResponseClients.add(adapt(client, 
MessageEncoder.XML_TO_AXIS, MessageDecoder.AXIS_TO_XML), relatedResources);
+    }
+    
+    public void 
addByteArrayRequestResponseTestClient(RequestResponseTestClient<byte[],byte[]> 
client, Object... relatedResources) {
+        xmlRequestResponseClients.add(adapt(client, 
MessageEncoder.XML_TO_BYTE, MessageDecoder.BYTE_TO_XML), relatedResources);
+    }
+    
+    public void addEchoEndpoint(Endpoint endpoint, Object... relatedResources) 
{
+        echoEndpoints.add(endpoint, relatedResources);
+    }
+    
+    private Object[] merge(Object[] environment, ResourceRelation<?>... 
resourceRelations) {
+        Set<Object> resources = new LinkedHashSet<Object>();
+        resources.addAll(Arrays.asList(environment));
+        for (ResourceRelation<?> resourceRelation : resourceRelations) {
+            
resources.addAll(Arrays.asList(resourceRelation.getRelatedResources()));
+        }
+        return resources.toArray();
+    }
+    
+    private void build(Object[] env) {
+        for (ResourceRelation<AsyncChannel> channel : asyncChannels) {
+            for (ResourceRelation<AsyncTestClient<XMLMessage>> client : 
xmlAsyncClients) {
+                for (ResourceRelation<AsyncEndpoint<XMLMessage>> endpoint : 
xmlAsyncEndpoints) {
+                    Object[] resources = merge(env, channel, client, endpoint);
+                    suite.addSOAPTests(channel.getPrimaryResource(), 
client.getPrimaryResource(), endpoint.getPrimaryResource(), resources);
+                    suite.addPOXTests(channel.getPrimaryResource(), 
client.getPrimaryResource(), endpoint.getPrimaryResource(), resources);
+                    suite.addSwATests(channel.getPrimaryResource(), 
client.getPrimaryResource(), endpoint.getPrimaryResource(), resources);
+                    // Regression test for SYNAPSE-423:
+                    suite.addTest(new 
LargeSOAPAsyncMessageTestCase(channel.getPrimaryResource(), 
client.getPrimaryResource(), endpoint.getPrimaryResource(), resources));
+                }
+            }
+            for (ResourceRelation<AsyncTestClient<String>> client : 
stringAsyncClients) {
+                for (ResourceRelation<AsyncEndpoint<String>> endpoint : 
stringAsyncEndpoints) {
+                    Object[] resources = merge(env, channel, client, endpoint);
+                    suite.addTextPlainTests(channel.getPrimaryResource(), 
client.getPrimaryResource(), endpoint.getPrimaryResource(), resources);
+                }
+            }
+            for (ResourceRelation<AsyncTestClient<byte[]>> client : 
byteAsyncClients) {
+                for (ResourceRelation<AsyncEndpoint<byte[]>> endpoint : 
byteAsyncEndpoints) {
+                    Object[] resources = merge(env, channel, client, endpoint);
+                    suite.addBinaryTest(channel.getPrimaryResource(), 
client.getPrimaryResource(), endpoint.getPrimaryResource(), resources);
+                }
+            }
+            for (ResourceRelation<AsyncTestClient<RESTMessage>> client : 
restAsyncClients) {
+                for (ResourceRelation<AsyncEndpoint<AxisMessage>> endpoint : 
axisAsyncEndpoints) {
+                    Object[] resources = merge(env, channel, client, endpoint);
+                    suite.addRESTTests(channel.getPrimaryResource(), 
client.getPrimaryResource(), endpoint.getPrimaryResource(), resources);
+                }
+            }
+        }
+        for (ResourceRelation<RequestResponseChannel> channel : 
requestResponseChannels) {
+            for 
(ResourceRelation<RequestResponseTestClient<XMLMessage,XMLMessage>> client : 
xmlRequestResponseClients) {
+                for (ResourceRelation<Endpoint> endpoint : echoEndpoints) {
+                    Object[] resources = merge(env, channel, client, endpoint);
+                    suite.addPOXTests(channel.getPrimaryResource(), 
client.getPrimaryResource(), endpoint.getPrimaryResource(), resources);
+                }
+            }
+        }
+    }
+    
+    public void build() {
+        if (environments.isEmpty()) {
+            build(new Object[0]);
+        } else {
+            for (Object[] env : environments) {
+                build(env);
+            }
+        }
+    }
+}

Copied: 
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/vfs/VFSTransportTest.java
 (from r692195, 
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/vfs/VFSTransportListenerTest.java)
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/vfs/VFSTransportTest.java?p2=synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/vfs/VFSTransportTest.java&p1=synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/vfs/VFSTransportListenerTest.java&r1=692195&r2=692284&rev=692284&view=diff
==============================================================================
--- 
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/vfs/VFSTransportListenerTest.java
 (original)
+++ 
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/vfs/VFSTransportTest.java
 Thu Sep  4 15:33:28 2008
@@ -19,11 +19,7 @@
 
 package org.apache.synapse.transport.vfs;
 
-import static org.apache.synapse.transport.testkit.AdapterUtils.adapt;
-
 import java.io.File;
-import java.util.LinkedList;
-import java.util.List;
 
 import junit.framework.TestCase;
 import junit.framework.TestSuite;
@@ -31,42 +27,40 @@
 import org.apache.synapse.transport.testkit.SimpleTransportDescriptionFactory;
 import org.apache.synapse.transport.testkit.TransportDescriptionFactory;
 import org.apache.synapse.transport.testkit.TransportTestSuite;
-import org.apache.synapse.transport.testkit.client.AsyncTestClient;
+import org.apache.synapse.transport.testkit.TransportTestSuiteBuilder;
 import org.apache.synapse.transport.testkit.client.axis2.AxisAsyncTestClient;
-import org.apache.synapse.transport.testkit.message.MessageDecoder;
-import org.apache.synapse.transport.testkit.message.MessageEncoder;
-import org.apache.synapse.transport.testkit.message.XMLMessage;
 import org.apache.synapse.transport.testkit.server.axis2.AxisAsyncEndpoint;
 import 
org.apache.synapse.transport.testkit.server.axis2.ContentTypeServiceConfigurator;
-import 
org.apache.synapse.transport.testkit.tests.async.LargeSOAPAsyncMessageTestCase;
 
 /**
  * TransportListenerTestTemplate implementation for the VFS transport.
  */
-public class VFSTransportListenerTest extends TestCase {
-    public static TestSuite suite() {
-        // TODO: the VFS listener doesn't like reuseServer == true...
-        TransportTestSuite suite = new 
TransportTestSuite(VFSTransportListenerTest.class, false);
+public class VFSTransportTest extends TestCase {
+    public static TestSuite suite() throws Exception {
+        // TODO: the VFS listener doesn't like reuseResources == true...
+        TransportTestSuite suite = new 
TransportTestSuite(VFSTransportTest.class, false);
+        
+        // Since VFS has no Content-Type header, SwA is not supported.
+        suite.addExclude("(test=AsyncSwA)");
+        
         TransportDescriptionFactory tdf =
             new SimpleTransportDescriptionFactory("vfs", 
VFSTransportListener.class,
                     VFSTransportSender.class);
-        VFSTestEnvironment env = new VFSTestEnvironment(new 
File("target/vfs3"));
-        AxisAsyncEndpoint asyncEndpoint = new AxisAsyncEndpoint();
-        VFSFileChannel channel = new VFSFileChannel("req/in");
-        VFSClient vfsClient = new VFSClient();
-        List<AsyncTestClient<XMLMessage>> clients = new 
LinkedList<AsyncTestClient<XMLMessage>>();
-        clients.add(adapt(vfsClient, MessageEncoder.XML_TO_BYTE));
-        clients.add(adapt(new AxisAsyncTestClient(), 
MessageEncoder.XML_TO_AXIS));
-        ContentTypeServiceConfigurator cfgtr = new 
ContentTypeServiceConfigurator("transport.vfs.ContentType");
-        for (AsyncTestClient<XMLMessage> client : clients) {
-            suite.addSOAPTests(channel, client, adapt(new AxisAsyncEndpoint(), 
MessageDecoder.AXIS_TO_XML), env, tdf, cfgtr);
-            suite.addPOXTests(channel, client, adapt(new AxisAsyncEndpoint(), 
MessageDecoder.AXIS_TO_XML), env, tdf, cfgtr);
-            // Since VFS has no Content-Type header, SwA is not supported.
-        }
-        suite.addTextPlainTests(channel, adapt(vfsClient, 
MessageEncoder.STRING_TO_BYTE), adapt(asyncEndpoint, 
MessageDecoder.AXIS_TO_STRING), env, tdf, cfgtr);
-        suite.addBinaryTest(channel, vfsClient, adapt(asyncEndpoint, 
MessageDecoder.AXIS_TO_BYTE), env, tdf, cfgtr);
-        // Regression test for SYNAPSE-423:
-        suite.addTest(new LargeSOAPAsyncMessageTestCase(channel, 
adapt(vfsClient, MessageEncoder.XML_TO_BYTE), adapt(new AxisAsyncEndpoint(), 
MessageDecoder.AXIS_TO_XML), env, tdf, cfgtr));
+        
+        TransportTestSuiteBuilder builder = new 
TransportTestSuiteBuilder(suite);
+        
+        builder.addEnvironment(new VFSTestEnvironment(new 
File("target/vfs3")), tdf);
+        
+        builder.addAsyncChannel(new VFSFileChannel("req/in"));
+        
+        builder.addAxisAsyncTestClient(new AxisAsyncTestClient());
+        builder.addByteArrayAsyncTestClient(new VFSClient());
+        
+        builder.addAxisAsyncEndpoint(new AxisAsyncEndpoint(), new 
ContentTypeServiceConfigurator("transport.vfs.ContentType"));
+        builder.addByteArrayAsyncEndpoint(new VFSMockAsyncEndpoint());
+        
+        builder.build();
+        
 //        suite.addTest(new MinConcurrencyTest(server, new AsyncChannel[] { 
new VFSFileChannel("req/in1"), new VFSFileChannel("req/in2") }, 1, true, env, 
tdf));
         return suite;
     }


Reply via email to