Author: ritchiem
Date: Mon Aug  3 13:20:20 2009
New Revision: 800359

URL: http://svn.apache.org/viewvc?rev=800359&view=rev
Log:
QPID-2002 : Addition of ConnectionLoggingTest

Added:
    
qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/server/logging/AbstractTestLogging.java
    
qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/server/logging/ConnectionLoggingTest.java

Added: 
qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/server/logging/AbstractTestLogging.java
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/server/logging/AbstractTestLogging.java?rev=800359&view=auto
==============================================================================
--- 
qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/server/logging/AbstractTestLogging.java
 (added)
+++ 
qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/server/logging/AbstractTestLogging.java
 Mon Aug  3 13:20:20 2009
@@ -0,0 +1,61 @@
+/*
+ *
+ * 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.server.logging;
+
+import org.apache.qpid.test.utils.QpidTestCase;
+import org.apache.qpid.util.LogMonitor;
+import org.apache.qpid.server.virtualhost.VirtualHost;
+import org.apache.qpid.server.logging.subjects.AbstractTestLogSubject;
+
+import java.io.IOException;
+
+public class AbstractTestLogging extends QpidTestCase
+{
+    protected LogMonitor _monitor;
+
+
+    @Override
+    public void setUp() throws Exception
+    {
+        super.setUp();
+        _monitor = new LogMonitor(_outputFile);
+    }
+
+    /**
+     * assert that the requested log message has not occured
+     * @param log
+     * @throws IOException
+     */
+    public void assertLoggingNotYetOccured(String log) throws IOException
+    {
+        // Ensure the alert has not occured yet
+        assertEquals("Message has already occured:"+log, 0,
+                     _monitor.findMatches(log).size());
+    }
+
+    protected int extractConnectionID(String log)
+    {
+        int conIDStart = log.indexOf("con:") + 4;
+        int conIDEnd = log.indexOf("(", conIDStart);
+        return Integer.parseInt(log.substring(conIDStart, conIDEnd));
+    }
+    
+}

Added: 
qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/server/logging/ConnectionLoggingTest.java
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/server/logging/ConnectionLoggingTest.java?rev=800359&view=auto
==============================================================================
--- 
qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/server/logging/ConnectionLoggingTest.java
 (added)
+++ 
qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/server/logging/ConnectionLoggingTest.java
 Mon Aug  3 13:20:20 2009
@@ -0,0 +1,164 @@
+/*
+*
+* 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.server.logging;
+
+import javax.jms.Connection;
+import java.io.File;
+import java.util.List;
+
+public class ConnectionLoggingTest extends AbstractTestLogging
+{
+    private static final String CONNECTION_PREFIX = "CON-";
+
+    public void setUp() throws Exception
+    {
+        // set QPID_WORK to be [QPID_WORK|io.tmpdir]/<testName>
+        setSystemProperty("QPID_WORK",
+                          System.getProperty("QPID_WORK",
+                                             
System.getProperty("java.io.tmpdir"))
+                          + File.separator + getName());
+
+        //Start the broker
+        super.setUp();
+    }
+
+    /**
+     * Description:
+     * When a new connection is made to the broker this must be logged.
+     *
+     * Input:
+     * 1. Running Broker
+     * 2. Connecting client
+     * Output:
+     * <date> CON-1001 : Open : Client ID {0}[ : Protocol Version : {1}] 
<version>
+     *
+     * Validation Steps:
+     * 1. The CON ID is correct
+     * 2. This is the first CON message for that Connection
+     *
+     * @throws Exception - if an error occurs
+     */
+    public void testConnectionOpen() throws Exception
+    {
+        assertLoggingNotYetOccured(CONNECTION_PREFIX);
+
+        Connection connection = getConnection();
+
+        List<String> results = _monitor.findMatches(CONNECTION_PREFIX);
+
+        // Validation
+
+        // We should have at least three messages
+        //  MESSAGE [con:1(/127.0.0.1:52540)] CON-1001 : Open
+        //  MESSAGE [con:1(/127.0.0.1:52540)] CON-1001 : Open : Protocol 
Version : 0-9
+        //  MESSAGE [con:1(/127.0.0.1:52540)] CON-1001 : Open : Client ID : 
clientid : Protocol Version : 0-9
+        // If we are running inVM we will get three open messagse, if running 
externally weN will also have
+        // open and close messages from the failed 0-10 negotiation 
+        assertTrue("CON messages not logged:" + results.size(), results.size() 
>= 3);
+
+        String log = results.get(0);
+        //  MESSAGE [con:1(/127.0.0.1:52540)] CON-1001 : Open
+        //1 & 2
+        assertTrue("CON-1001 is not the first CON message",
+                   log.contains("CON-1001"));
+
+        //We get the size so that we can validate the last three CON- messages
+        int resultsSize = results.size();
+        // This is because when running externally we will also have logged 
the failed
+        // 0-10 negotiation messages
+
+        // 3 - Assert the options are correct
+        log = results.get(resultsSize - 1);
+        //  MESSAGE [con:1(/127.0.0.1:52540)] CON-1001 : Open : Client ID : 
clientid : Protocol Version : 0-9
+        assertTrue("Incorrect CON message, not CON-1001", 
log.contains("CON-1001"));
+        assertTrue("Client ID option is not present", log.contains("Client ID 
:"));
+        assertTrue("Client ID value is not present", 
log.contains(connection.getClientID()));
+
+        assertTrue("Protocol Version option is not present", 
log.contains("Protocol Version :"));
+        //fixme there is no way currently to find out the negotiated protocol 
version
+        // The delegate is the versioned class 
((AMQConnection)connection)._delegate
+
+        log = results.get(resultsSize - 2);
+        //  MESSAGE [con:1(/127.0.0.1:52540)] CON-1001 : Open : Protocol 
Version : 0-9
+        assertTrue("Incorrect CON message, not CON-1001", 
log.contains("CON-1001"));
+        assertTrue("Protocol Version option is not present", 
log.contains("Protocol Version :"));
+        //fixme agani we should check the version
+        // Check that client ID is not present in log
+        assertTrue("Client ID option is present", !log.contains("Client ID 
:"));
+
+        log = results.get(resultsSize - 3);
+        assertTrue("Incorrect CON message, not CON-1001", 
log.contains("CON-1001"));
+        // Check that PV is not present in log
+        assertTrue("Protocol Version option is present", 
!log.contains("Protocol Version :"));
+        // Check that client ID is not present in log
+        assertTrue("Client ID option is present", !log.contains("Client ID 
:"));
+
+        connection.close();
+    }
+
+    /**
+     * Description:
+     * When a connected client closes the connection this will be logged as a 
CON-1002 message.
+     * Input:
+     *
+     * 1. Running Broker
+     * 2. Connected Client
+     * Output:
+     *
+     * <date> CON-1002 : Close
+     *
+     * Validation Steps:
+     * 3. The CON ID is correct
+     * 4. This must be the last CON message for the Connection
+     * 5. It must be preceded by a CON-1001 for this Connection
+     */
+    public void testConnectionClose() throws Exception
+    {
+        assertLoggingNotYetOccured(CONNECTION_PREFIX);
+
+        // Open and then close the conneciton
+        getConnection().close();
+
+        List<String> results = _monitor.findMatches(CONNECTION_PREFIX);
+
+        // Validation
+
+        // We should have at least four messages
+        assertTrue("CON messages not logged:" + results.size(), results.size() 
>= 4);
+
+        //We get the size so that we can validate the last set of CON- messages
+        int resultsSize = results.size();
+
+        // Validate Close message occurs
+        String log = results.get(resultsSize - 1);
+        assertTrue("Incorrect CON message, not CON-1002", 
log.contains("CON-1002"));
+        assertTrue("Message does not end with close:" + log, 
log.endsWith("Close"));
+
+        // Extract connection ID to validate there is a CON-1001 messasge for 
it
+        int connectionID = extractConnectionID(log);
+
+        //Previous log message should be the open
+        log = results.get(resultsSize - 2);
+        //  MESSAGE [con:1(/127.0.0.1:52540)] CON-1001 : Open : Client ID : 
clientid : Protocol Version : 0-9
+        assertTrue("Incorrect CON message, not CON-1001", 
log.contains("CON-1001"));
+        assertEquals("Connection IDs do not match", connectionID, 
extractConnectionID(log));
+    }
+}



---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:commits-subscr...@qpid.apache.org

Reply via email to