You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by ru...@apache.org on 2007/09/27 17:23:35 UTC

svn commit: r580061 - in /incubator/qpid/branches/M2.1/java/integrationtests/src/main/java/org/apache/qpid: interop/clienttestcases/ interop/testcases/ test/framework/distributedtesting/

Author: rupertlssmith
Date: Thu Sep 27 08:23:33 2007
New Revision: 580061

URL: http://svn.apache.org/viewvc?rev=580061&view=rev
Log:
Added test cases 4 and 5, from the updated interop spec.

Added:
    incubator/qpid/branches/M2.1/java/integrationtests/src/main/java/org/apache/qpid/interop/clienttestcases/TestCase4P2PMessageSize.java
    incubator/qpid/branches/M2.1/java/integrationtests/src/main/java/org/apache/qpid/interop/clienttestcases/TestCase5PubSubMessageSize.java
    incubator/qpid/branches/M2.1/java/integrationtests/src/main/java/org/apache/qpid/interop/testcases/InteropTestCase4P2PMessageSize.java
    incubator/qpid/branches/M2.1/java/integrationtests/src/main/java/org/apache/qpid/interop/testcases/InteropTestCase5PubSubMessageSize.java
Modified:
    incubator/qpid/branches/M2.1/java/integrationtests/src/main/java/org/apache/qpid/test/framework/distributedtesting/TestClient.java

Added: incubator/qpid/branches/M2.1/java/integrationtests/src/main/java/org/apache/qpid/interop/clienttestcases/TestCase4P2PMessageSize.java
URL: http://svn.apache.org/viewvc/incubator/qpid/branches/M2.1/java/integrationtests/src/main/java/org/apache/qpid/interop/clienttestcases/TestCase4P2PMessageSize.java?rev=580061&view=auto
==============================================================================
--- incubator/qpid/branches/M2.1/java/integrationtests/src/main/java/org/apache/qpid/interop/clienttestcases/TestCase4P2PMessageSize.java (added)
+++ incubator/qpid/branches/M2.1/java/integrationtests/src/main/java/org/apache/qpid/interop/clienttestcases/TestCase4P2PMessageSize.java Thu Sep 27 08:23:33 2007
@@ -0,0 +1,214 @@
+/*
+ *
+ * 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.qpid.interop.clienttestcases;
+
+import org.apache.log4j.Logger;
+
+import org.apache.qpid.test.framework.TestUtils;
+import org.apache.qpid.test.framework.distributedtesting.TestClient;
+import org.apache.qpid.test.framework.distributedtesting.TestClientControlledTest;
+
+import javax.jms.*;
+
+/**
+ * Implements test case 4, P2P messages with message size. Sends/received a specified number of messages to a specified
+ * route on the default direct exchange, of a specified size. Produces reports on the actual number of messages
+ * sent/received.
+ *
+ * <p><table id="crc"><caption>CRC Card</caption>
+ * <tr><th> Responsibilities <th> Collaborations
+ * <tr><td> Supply the name of the test case that this implements.
+ * <tr><td> Accept/Reject invites based on test parameters.
+ * <tr><td> Adapt to assigned roles.
+ * <tr><td> Send required number of test messages.
+ * <tr><td> Generate test reports.
+ * </table>
+ */
+public class TestCase4P2PMessageSize implements TestClientControlledTest, MessageListener
+{
+    /** Used for debugging. */
+    private static final Logger log = Logger.getLogger(TestCase4P2PMessageSize.class);
+
+    /** Holds the count of test messages received. */
+    private int messageCount;
+
+    /** The role to be played by the test. */
+    private Roles role;
+
+    /** The number of test messages to send. */
+    private int numMessages;
+
+    /** The size of the test messages to send. */
+    private int messageSize;
+
+    /** The connection to send the test messages on. */
+    private Connection connection;
+
+    /** The controlSession to send the test messages on. */
+    private Session session;
+
+    /** The producer to send the test messages with. */
+    MessageProducer producer;
+
+    /**
+     * Should provide the name of the test case that this class implements. The exact names are defined in the
+     * interop testing spec.
+     *
+     * @return The name of the test case that this implements.
+     */
+    public String getName()
+    {
+        log.debug("public String getName(): called");
+
+        return "TC4_P2PMessageSize";
+    }
+
+    /**
+     * Determines whether the test invite that matched this test case is acceptable.
+     *
+     * @param inviteMessage The invitation to accept or reject.
+     *
+     * @return <tt>true</tt> to accept the invitation, <tt>false</tt> to reject it.
+     *
+     * @throws JMSException Any JMSException resulting from reading the message are allowed to fall through.
+     */
+    public boolean acceptInvite(Message inviteMessage) throws JMSException
+    {
+        log.debug("public boolean acceptInvite(Message inviteMessage = " + inviteMessage + "): called");
+
+        // All invites are acceptable.
+        return true;
+    }
+
+    /**
+     * Assigns the role to be played by this test case. The test parameters are fully specified in the
+     * assignment message. When this method return the test case will be ready to execute.
+     *
+     * @param role              The role to be played; sender or receivers.
+     *
+     * @param assignRoleMessage The role assingment message, contains the full test parameters.
+     *
+     * @throws JMSException Any JMSException resulting from reading the message are allowed to fall through.
+     */
+    public void assignRole(Roles role, Message assignRoleMessage) throws JMSException
+    {
+        log.debug("public void assignRole(Roles role = " + role + ", Message assignRoleMessage = " + assignRoleMessage
+            + "): called");
+
+        // Reset the message count for a new test.
+        messageCount = 0;
+
+        // Take note of the role to be played.
+        this.role = role;
+
+        // Create a new connection to pass the test messages on.
+        connection = TestUtils.createConnection(TestClient.testContextProperties);
+        session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
+
+        // Extract and retain the test parameters.
+        numMessages = assignRoleMessage.getIntProperty("P2P_NUM_MESSAGES");
+        messageSize = assignRoleMessage.getIntProperty("messageSize");
+        Destination sendDestination = session.createQueue(assignRoleMessage.getStringProperty("P2P_QUEUE_AND_KEY_NAME"));
+
+        log.debug("numMessages = " + numMessages);
+        log.debug("sendDestination = " + sendDestination);
+        log.debug("role = " + role);
+
+        switch (role)
+        {
+        // Check if the sender role is being assigned, and set up a message producer if so.
+        case SENDER:
+            producer = session.createProducer(sendDestination);
+            break;
+
+        // Otherwise the receivers role is being assigned, so set this up to listen for messages.
+        case RECEIVER:
+            MessageConsumer consumer = session.createConsumer(sendDestination);
+            consumer.setMessageListener(this);
+            break;
+        }
+
+        connection.start();
+    }
+
+    /**
+     * Performs the test case actions. Returning from here, indicates that the sending role has completed its test.
+     *
+     * @param numMessages The number of test messages to send.
+     *
+     * @throws JMSException Any JMSException resulting from reading the message are allowed to fall through.
+     */
+    public void start(int numMessages) throws JMSException
+    {
+        log.debug("public void start(): called");
+
+        // Check that the sender role is being performed.
+        if (role.equals(Roles.SENDER))
+        {
+            Message testMessage = TestUtils.createTestMessageOfSize(session, messageSize);
+
+            for (int i = 0; i < this.numMessages; i++)
+            {
+                producer.send(testMessage);
+
+                // Increment the message count.
+                messageCount++;
+            }
+        }
+    }
+
+    /**
+     * Gets a report on the actions performed by the test case in its assigned role.
+     *
+     * @param session The controlSession to create the report message in.
+     *
+     * @return The report message.
+     *
+     * @throws JMSException Any JMSExceptions resulting from creating the report are allowed to fall through.
+     */
+    public Message getReport(Session session) throws JMSException
+    {
+        log.debug("public Message getReport(Session controlSession): called");
+
+        // Close the test connection.
+        connection.close();
+
+        // Generate a report message containing the count of the number of messages passed.
+        Message report = session.createMessage();
+        report.setStringProperty("CONTROL_TYPE", "REPORT");
+        report.setIntProperty("MESSAGE_COUNT", messageCount);
+
+        return report;
+    }
+
+    /**
+     * Counts incoming test messages.
+     *
+     * @param message The incoming test message.
+     */
+    public void onMessage(Message message)
+    {
+        log.debug("public void onMessage(Message message = " + message + "): called");
+
+        // Increment the message count.
+        messageCount++;
+    }
+}

Added: incubator/qpid/branches/M2.1/java/integrationtests/src/main/java/org/apache/qpid/interop/clienttestcases/TestCase5PubSubMessageSize.java
URL: http://svn.apache.org/viewvc/incubator/qpid/branches/M2.1/java/integrationtests/src/main/java/org/apache/qpid/interop/clienttestcases/TestCase5PubSubMessageSize.java?rev=580061&view=auto
==============================================================================
--- incubator/qpid/branches/M2.1/java/integrationtests/src/main/java/org/apache/qpid/interop/clienttestcases/TestCase5PubSubMessageSize.java (added)
+++ incubator/qpid/branches/M2.1/java/integrationtests/src/main/java/org/apache/qpid/interop/clienttestcases/TestCase5PubSubMessageSize.java Thu Sep 27 08:23:33 2007
@@ -0,0 +1,243 @@
+/*
+ *
+ * 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.qpid.interop.clienttestcases;
+
+import org.apache.log4j.Logger;
+
+import org.apache.qpid.test.framework.TestUtils;
+import org.apache.qpid.test.framework.distributedtesting.TestClient;
+import org.apache.qpid.test.framework.distributedtesting.TestClientControlledTest;
+
+import javax.jms.*;
+
+/**
+ * Implements test case 5, pub/sub with message size. Sends/received a specified number of messages to a specified route
+ * on the default topic exchange, using the specified number of receivers connections, and the specified message size.
+ * Produces reports on the actual number of messages sent/received.
+ *
+ * <p><table id="crc"><caption>CRC Card</caption>
+ * <tr><th> Responsibilities <th> Collaborations
+ * <tr><td> Supply the name of the test case that this implements.
+ * <tr><td> Accept/Reject invites based on test parameters.
+ * <tr><td> Adapt to assigned roles.
+ * <tr><td> Send required number of test messages using pub/sub.
+ * <tr><td> Generate test reports.
+ * </table>
+ */
+public class TestCase5PubSubMessageSize implements TestClientControlledTest, MessageListener
+{
+    /** Used for debugging. */
+    private static final Logger log = Logger.getLogger(TestCase5PubSubMessageSize.class);
+
+    /** Holds the count of test messages received. */
+    private int messageCount;
+
+    /** The role to be played by the test. */
+    private Roles role;
+
+    /** The number of test messages to send. */
+    private int numMessages;
+
+    /** The size of the test messages to send. */
+    private int messageSize;
+
+    /** The connections to send/receive the test messages on. */
+    private Connection[] connection;
+
+    /** The sessions to send/receive the test messages on. */
+    private Session[] session;
+
+    /** The producer to send the test messages with. */
+    MessageProducer producer;
+
+    /**
+     * Should provide the name of the test case that this class implements. The exact names are defined in the
+     * interop testing spec.
+     *
+     * @return The name of the test case that this implements.
+     */
+    public String getName()
+    {
+        log.debug("public String getName(): called");
+
+        return "TC5_BasicPubSub";
+    }
+
+    /**
+     * Determines whether the test invite that matched this test case is acceptable.
+     *
+     * @param inviteMessage The invitation to accept or reject.
+     *
+     * @return <tt>true</tt> to accept the invitation, <tt>false</tt> to reject it.
+     *
+     * @throws javax.jms.JMSException Any JMSException resulting from reading the message are allowed to fall through.
+     */
+    public boolean acceptInvite(Message inviteMessage) throws JMSException
+    {
+        log.debug("public boolean acceptInvite(Message inviteMessage = " + inviteMessage + "): called");
+
+        // All invites are acceptable.
+        return true;
+    }
+
+    /**
+     * Assigns the role to be played by this test case. The test parameters are fully specified in the
+     * assignment message. When this method return the test case will be ready to execute.
+     *
+     * @param role              The role to be played; sender or receivers.
+     *
+     * @param assignRoleMessage The role assingment message, contains the full test parameters.
+     *
+     * @throws javax.jms.JMSException Any JMSException resulting from reading the message are allowed to fall through.
+     */
+    public void assignRole(Roles role, Message assignRoleMessage) throws JMSException
+    {
+        log.debug("public void assignRole(Roles role = " + role + ", Message assignRoleMessage = " + assignRoleMessage
+            + "): called");
+
+        // Reset the message count for a new test.
+        messageCount = 0;
+
+        // Take note of the role to be played.
+        this.role = role;
+
+        // Extract and retain the test parameters.
+        numMessages = assignRoleMessage.getIntProperty("PUBSUB_NUM_MESSAGES");
+        messageSize = assignRoleMessage.getIntProperty("messageSize");
+        int numReceivers = assignRoleMessage.getIntProperty("PUBSUB_NUM_RECEIVERS");
+        String sendKey = assignRoleMessage.getStringProperty("PUBSUB_KEY");
+
+        log.debug("numMessages = " + numMessages);
+        log.debug("numReceivers = " + numReceivers);
+        log.debug("sendKey = " + sendKey);
+        log.debug("role = " + role);
+
+        switch (role)
+        {
+        // Check if the sender role is being assigned, and set up a single message producer if so.
+        case SENDER:
+            // Create a new connection to pass the test messages on.
+            connection = new Connection[1];
+            session = new Session[1];
+
+            connection[0] = TestUtils.createConnection(TestClient.testContextProperties);
+            session[0] = connection[0].createSession(false, Session.AUTO_ACKNOWLEDGE);
+
+            // Extract and retain the test parameters.
+            Destination sendDestination = session[0].createTopic(sendKey);
+
+            producer = session[0].createProducer(sendDestination);
+            break;
+
+        // Otherwise the receivers role is being assigned, so set this up to listen for messages on the required number
+        // of receivers connections.
+        case RECEIVER:
+            // Create the required number of receivers connections.
+            connection = new Connection[numReceivers];
+            session = new Session[numReceivers];
+
+            for (int i = 0; i < numReceivers; i++)
+            {
+                connection[i] = TestUtils.createConnection(TestClient.testContextProperties);
+                session[i] = connection[i].createSession(false, Session.AUTO_ACKNOWLEDGE);
+
+                sendDestination = session[i].createTopic(sendKey);
+
+                MessageConsumer consumer = session[i].createConsumer(sendDestination);
+                consumer.setMessageListener(this);
+            }
+
+            break;
+        }
+
+        // Start all the connection dispatcher threads running.
+        for (Connection conn : connection)
+        {
+            conn.start();
+        }
+    }
+
+    /**
+     * Performs the test case actions. Returning from here, indicates that the sending role has completed its test.
+     *
+     * @param numMessages The number of test messages to send.
+     *
+     * @throws JMSException Any JMSException resulting from reading the message are allowed to fall through.
+     */
+    public void start(int numMessages) throws JMSException
+    {
+        log.debug("public void start(): called");
+
+        // Check that the sender role is being performed.
+        if (role.equals(Roles.SENDER))
+        {
+            Message testMessage = TestUtils.createTestMessageOfSize(session[0], messageSize);
+
+            for (int i = 0; i < this.numMessages; i++)
+            {
+                producer.send(testMessage);
+
+                // Increment the message count.
+                messageCount++;
+            }
+        }
+    }
+
+    /**
+     * Gets a report on the actions performed by the test case in its assigned role.
+     *
+     * @param session The controlSession to create the report message in.
+     *
+     * @return The report message.
+     *
+     * @throws javax.jms.JMSException Any JMSExceptions resulting from creating the report are allowed to fall through.
+     */
+    public Message getReport(Session session) throws JMSException
+    {
+        log.debug("public Message getReport(Session controlSession): called");
+
+        // Close the test connections.
+        for (Connection conn : connection)
+        {
+            conn.close();
+        }
+
+        // Generate a report message containing the count of the number of messages passed.
+        Message report = session.createMessage();
+        report.setStringProperty("CONTROL_TYPE", "REPORT");
+        report.setIntProperty("MESSAGE_COUNT", messageCount);
+
+        return report;
+    }
+
+    /**
+     * Counts incoming test messages.
+     *
+     * @param message The incoming test message.
+     */
+    public void onMessage(Message message)
+    {
+        log.debug("public void onMessage(Message message = " + message + "): called");
+
+        // Increment the message count.
+        messageCount++;
+    }
+}

Added: incubator/qpid/branches/M2.1/java/integrationtests/src/main/java/org/apache/qpid/interop/testcases/InteropTestCase4P2PMessageSize.java
URL: http://svn.apache.org/viewvc/incubator/qpid/branches/M2.1/java/integrationtests/src/main/java/org/apache/qpid/interop/testcases/InteropTestCase4P2PMessageSize.java?rev=580061&view=auto
==============================================================================
--- incubator/qpid/branches/M2.1/java/integrationtests/src/main/java/org/apache/qpid/interop/testcases/InteropTestCase4P2PMessageSize.java (added)
+++ incubator/qpid/branches/M2.1/java/integrationtests/src/main/java/org/apache/qpid/interop/testcases/InteropTestCase4P2PMessageSize.java Thu Sep 27 08:23:33 2007
@@ -0,0 +1,193 @@
+/*
+ *
+ * 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.qpid.interop.testcases;
+
+import org.apache.log4j.Logger;
+
+import org.apache.qpid.test.framework.FrameworkBaseCase;
+
+import java.util.Properties;
+
+/**
+ * Implements test case 4, from the interop test specification. This test sets up the TC2_P2PMessageSize test for 50
+ * messages, and a variety of message sizes. It checks that the sender and receivers reports both indicate that all
+ * the test messages were transmitted successfully.
+ *
+ * <p><table id="crc"><caption>CRC Card</caption>
+ * <tr><th> Responsibilities <th> Collaborations
+ * <tr><td> Setup p2p test parameters and compare with test output. <td> {@link FrameworkBaseCase}
+ * </table>
+ */
+public class InteropTestCase4P2PMessageSize extends FrameworkBaseCase
+{
+    /** Used for debugging. */
+    private static final Logger log = Logger.getLogger(InteropTestCase4P2PMessageSize.class);
+
+    /**
+     * Creates a new coordinating test case with the specified name.
+     *
+     * @param name The test case name.
+     */
+    public InteropTestCase4P2PMessageSize(String name)
+    {
+        super(name);
+    }
+
+    /**
+     * Performs the P2P message test case, "Test Case 4" in the specification, for messages 0K in size.
+     *
+     * @throws Exception Any exceptions are allowed to fall through and fail the test.
+     */
+    public void testP2PMessageSize0K() throws Exception
+    {
+        runTestForMessagesOfSize(0);
+    }
+
+    /**
+     * Performs the P2P message test case, "Test Case 4" in the specification, for messages 63K in size.
+     *
+     * @throws Exception Any exceptions are allowed to fall through and fail the test.
+     */
+    public void testP2PMessageSize63K() throws Exception
+    {
+        runTestForMessagesOfSize(63 * 1024);
+    }
+
+    /**
+     * Performs the P2P message test case, "Test Case 4" in the specification, for messages 64K in size.
+     *
+     * @throws Exception Any exceptions are allowed to fall through and fail the test.
+     */
+    public void testP2PMessageSize64K() throws Exception
+    {
+        runTestForMessagesOfSize(64 * 1024);
+    }
+
+    /**
+     * Performs the P2P message test case, "Test Case 4" in the specification, for messages 65K in size.
+     *
+     * @throws Exception Any exceptions are allowed to fall through and fail the test.
+     */
+    public void testP2PMessageSize65K() throws Exception
+    {
+        runTestForMessagesOfSize(65 * 1024);
+    }
+
+    /**
+     * Performs the P2P message test case, "Test Case 4" in the specification, for messages 127K in size.
+     *
+     * @throws Exception Any exceptions are allowed to fall through and fail the test.
+     */
+    public void testP2PMessageSize127K() throws Exception
+    {
+        runTestForMessagesOfSize(127 * 1024);
+    }
+
+    /**
+     * Performs the P2P message test case, "Test Case 4" in the specification, for messages 128K in size.
+     *
+     * @throws Exception Any exceptions are allowed to fall through and fail the test.
+     */
+    public void testP2PMessageSize128K() throws Exception
+    {
+        runTestForMessagesOfSize(128 * 1024);
+    }
+
+    /**
+     * Performs the P2P message test case, "Test Case 4" in the specification, for messages 129K in size.
+     *
+     * @throws Exception Any exceptions are allowed to fall through and fail the test.
+     */
+    public void testP2PMessageSize129K() throws Exception
+    {
+        runTestForMessagesOfSize(129 * 1024);
+    }
+
+    /**
+     * Performs the P2P message test case, "Test Case 4" in the specification, for messages 255K in size.
+     *
+     * @throws Exception Any exceptions are allowed to fall through and fail the test.
+     */
+    public void testP2PMessageSize255K() throws Exception
+    {
+        runTestForMessagesOfSize(255 * 1024);
+    }
+
+    /**
+     * Performs the P2P message test case, "Test Case 4" in the specification, for messages 256K in size.
+     *
+     * @throws Exception Any exceptions are allowed to fall through and fail the test.
+     */
+    public void testP2PMessageSize256K() throws Exception
+    {
+        runTestForMessagesOfSize(256 * 1024);
+    }
+
+    /**
+     * Performs the P2P message test case, "Test Case 4" in the specification, for messages 257K in size.
+     *
+     * @throws Exception Any exceptions are allowed to fall through and fail the test.
+     */
+    public void testP2PMessageSize257K() throws Exception
+    {
+        runTestForMessagesOfSize(257 * 1024);
+    }
+
+    /**
+     * Sends 50 test messages of the specified size, and asserts that all were received.
+     *
+     * @param size The size of the messages to send in bytes.
+     */
+    private void runTestForMessagesOfSize(int size)
+    {
+        Properties testConfig = new Properties();
+        testConfig.setProperty("TEST_NAME", "TC4_P2PMessageSize");
+        testConfig.setProperty("P2P_QUEUE_AND_KEY_NAME", "tc2queue");
+        testConfig.put("P2P_NUM_MESSAGES", 50);
+        testConfig.put("messageSize", size);
+
+        /*Message[] reports =*/
+        getCircuitFactory().sequenceTest(null, null, testConfig);
+
+        // Compare sender and receivers reports.
+        /*
+        int messagesSent = reports[0].getIntProperty("MESSAGE_COUNT");
+        int messagesReceived = reports[1].getIntProperty("MESSAGE_COUNT");
+
+        Assert.assertEquals("The requested number of messages were not sent.", 50, messagesSent);
+        Assert.assertEquals("Sender and receivers messages sent did not match up.", messagesSent, messagesReceived);
+         */
+    }
+
+    /**
+     * Should provide a translation from the junit method name of a test to its test case name as defined in the
+     * interop testing specification. For example the method "testP2P" might map onto the interop test case name
+     * "TC2_BasicP2P".
+     *
+     * @param methodName The name of the JUnit test method.
+     *
+     * @return The name of the corresponding interop test case.
+     */
+    public String getTestCaseNameForTestMethod(String methodName)
+    {
+        return "TC4_P2PMessageSize";
+    }
+}

Added: incubator/qpid/branches/M2.1/java/integrationtests/src/main/java/org/apache/qpid/interop/testcases/InteropTestCase5PubSubMessageSize.java
URL: http://svn.apache.org/viewvc/incubator/qpid/branches/M2.1/java/integrationtests/src/main/java/org/apache/qpid/interop/testcases/InteropTestCase5PubSubMessageSize.java?rev=580061&view=auto
==============================================================================
--- incubator/qpid/branches/M2.1/java/integrationtests/src/main/java/org/apache/qpid/interop/testcases/InteropTestCase5PubSubMessageSize.java (added)
+++ incubator/qpid/branches/M2.1/java/integrationtests/src/main/java/org/apache/qpid/interop/testcases/InteropTestCase5PubSubMessageSize.java Thu Sep 27 08:23:33 2007
@@ -0,0 +1,193 @@
+/*
+ *
+ * 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.qpid.interop.testcases;
+
+import org.apache.log4j.Logger;
+
+import org.apache.qpid.test.framework.FrameworkBaseCase;
+
+import java.util.Properties;
+
+/**
+ * Implements test case 5, from the interop test specification. This test sets up the TC2_PubSubMessageSize test for 10
+ * messages, sent to 5 consumers, and a variety of message sizes. It checks that the sender and receivers reports both
+ * indicate that all the test messages were transmitted successfully.
+ *
+ * <p><table id="crc"><caption>CRC Card</caption>
+ * <tr><th> Responsibilities <th> Collaborations
+ * <tr><td> Setup pub/sub test parameters and compare with test output. <td> {@link FrameworkBaseCase}
+ * </table>
+ */
+public class InteropTestCase5PubSubMessageSize extends FrameworkBaseCase
+{
+    /** Used for debugging. */
+    private static final Logger log = Logger.getLogger(InteropTestCase5PubSubMessageSize.class);
+
+    /**
+     * Creates a new coordinating test case with the specified name.
+     *
+     * @param name The test case name.
+     */
+    public InteropTestCase5PubSubMessageSize(String name)
+    {
+        super(name);
+    }
+
+    /**
+     * Performs the P2P message test case, "Test Case 4" in the specification, for messages 0K in size.
+     *
+     * @throws Exception Any exceptions are allowed to fall through and fail the test.
+     */
+    public void testPubSubMessageSize0K() throws Exception
+    {
+        runTestForMessagesOfSize(0);
+    }
+
+    /**
+     * Performs the P2P message test case, "Test Case 4" in the specification, for messages 63K in size.
+     *
+     * @throws Exception Any exceptions are allowed to fall through and fail the test.
+     */
+    public void testPubSubMessageSize63K() throws Exception
+    {
+        runTestForMessagesOfSize(63 * 1024);
+    }
+
+    /**
+     * Performs the P2P message test case, "Test Case 4" in the specification, for messages 64K in size.
+     *
+     * @throws Exception Any exceptions are allowed to fall through and fail the test.
+     */
+    public void testPubSubMessageSize64K() throws Exception
+    {
+        runTestForMessagesOfSize(64 * 1024);
+    }
+
+    /**
+     * Performs the P2P message test case, "Test Case 4" in the specification, for messages 65K in size.
+     *
+     * @throws Exception Any exceptions are allowed to fall through and fail the test.
+     */
+    public void testPubSubMessageSize65K() throws Exception
+    {
+        runTestForMessagesOfSize(65 * 1024);
+    }
+
+    /**
+     * Performs the P2P message test case, "Test Case 4" in the specification, for messages 127K in size.
+     *
+     * @throws Exception Any exceptions are allowed to fall through and fail the test.
+     */
+    public void testPubSubMessageSize127K() throws Exception
+    {
+        runTestForMessagesOfSize(127 * 1024);
+    }
+
+    /**
+     * Performs the P2P message test case, "Test Case 4" in the specification, for messages 128K in size.
+     *
+     * @throws Exception Any exceptions are allowed to fall through and fail the test.
+     */
+    public void testPubSubMessageSize128K() throws Exception
+    {
+        runTestForMessagesOfSize(128 * 1024);
+    }
+
+    /**
+     * Performs the P2P message test case, "Test Case 4" in the specification, for messages 129K in size.
+     *
+     * @throws Exception Any exceptions are allowed to fall through and fail the test.
+     */
+    public void testPubSubMessageSize129K() throws Exception
+    {
+        runTestForMessagesOfSize(129 * 1024);
+    }
+
+    /**
+     * Performs the P2P message test case, "Test Case 4" in the specification, for messages 255K in size.
+     *
+     * @throws Exception Any exceptions are allowed to fall through and fail the test.
+     */
+    public void testPubSubMessageSize255K() throws Exception
+    {
+        runTestForMessagesOfSize(255 * 1024);
+    }
+
+    /**
+     * Performs the P2P message test case, "Test Case 4" in the specification, for messages 256K in size.
+     *
+     * @throws Exception Any exceptions are allowed to fall through and fail the test.
+     */
+    public void testPubSubMessageSize256K() throws Exception
+    {
+        runTestForMessagesOfSize(256 * 1024);
+    }
+
+    /**
+     * Performs the P2P message test case, "Test Case 4" in the specification, for messages 257K in size.
+     *
+     * @throws Exception Any exceptions are allowed to fall through and fail the test.
+     */
+    public void testPubSubMessageSize257K() throws Exception
+    {
+        runTestForMessagesOfSize(257 * 1024);
+    }
+
+    /**
+     * Sends 50 test messages of the specified size, and asserts that all were received.
+     *
+     * @param size The size of the messages to send in bytes.
+     */
+    private void runTestForMessagesOfSize(int size)
+    {
+        Properties testConfig = new Properties();
+        testConfig.put("TEST_NAME", "TC5_PubSubMessageSize");
+        testConfig.put("PUBSUB_KEY", "tc3route");
+        testConfig.put("PUBSUB_NUM_MESSAGES", 10);
+        testConfig.put("PUBSUB_NUM_RECEIVERS", 5);
+        testConfig.put("messageSize", size);
+
+        /*Message[] reports =*/
+        getCircuitFactory().sequenceTest(null, null, testConfig);
+
+        // Compare sender and receivers reports.
+        /*
+        int messagesSent = reports[0].getIntProperty("MESSAGE_COUNT");
+        int messagesReceived = reports[1].getIntProperty("MESSAGE_COUNT");
+
+        Assert.assertEquals("The requested number of messages were not sent.", 50, messagesSent);
+        Assert.assertEquals("Sender and receivers messages sent did not match up.", messagesSent, messagesReceived);
+         */
+    }
+
+    /**
+     * Should provide a translation from the junit method name of a test to its test case name as defined in the
+     * interop testing specification. For example the method "testP2P" might map onto the interop test case name
+     * "TC2_BasicP2P".
+     *
+     * @param methodName The name of the JUnit test method.
+     * @return The name of the corresponding interop test case.
+     */
+    public String getTestCaseNameForTestMethod(String methodName)
+    {
+        return "TC5_PubSubMessageSize";
+    }
+}

Modified: incubator/qpid/branches/M2.1/java/integrationtests/src/main/java/org/apache/qpid/test/framework/distributedtesting/TestClient.java
URL: http://svn.apache.org/viewvc/incubator/qpid/branches/M2.1/java/integrationtests/src/main/java/org/apache/qpid/test/framework/distributedtesting/TestClient.java?rev=580061&r1=580060&r2=580061&view=diff
==============================================================================
--- incubator/qpid/branches/M2.1/java/integrationtests/src/main/java/org/apache/qpid/test/framework/distributedtesting/TestClient.java (original)
+++ incubator/qpid/branches/M2.1/java/integrationtests/src/main/java/org/apache/qpid/test/framework/distributedtesting/TestClient.java Thu Sep 27 08:23:33 2007
@@ -23,9 +23,7 @@
 import org.apache.log4j.Logger;
 import org.apache.log4j.NDC;
 
-import org.apache.qpid.interop.clienttestcases.TestCase1DummyRun;
-import org.apache.qpid.interop.clienttestcases.TestCase2BasicP2P;
-import org.apache.qpid.interop.clienttestcases.TestCase3BasicPubSub;
+import org.apache.qpid.interop.clienttestcases.*;
 import org.apache.qpid.sustained.SustainedClientTestCase;
 import org.apache.qpid.test.framework.MessagingTestConfigProperties;
 import org.apache.qpid.test.framework.TestUtils;
@@ -189,7 +187,8 @@
             new ArrayList<Class<? extends TestClientControlledTest>>();
         // ClasspathScanner.getMatches(TestClientControlledTest.class, "^TestCase.*", true);
         Collections.addAll(testCaseClasses, TestCase1DummyRun.class, TestCase2BasicP2P.class, TestCase3BasicPubSub.class,
-            SustainedClientTestCase.class, TestClientCircuitEnd.class);
+            TestCase4P2PMessageSize.class, TestCase5PubSubMessageSize.class, SustainedClientTestCase.class,
+            TestClientCircuitEnd.class);
 
         try
         {