You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by ri...@apache.org on 2008/11/24 15:16:31 UTC

svn commit: r720200 - in /incubator/qpid/trunk/qpid/java/common/src: main/java/org/apache/qpid/transport/Connection.java test/java/org/apache/qpid/transport/ConnectionTest.java

Author: ritchiem
Date: Mon Nov 24 06:16:30 2008
New Revision: 720200

URL: http://svn.apache.org/viewvc?rev=720200&view=rev
Log:
QPID-1251 : Applied patch from JIRA (With correct code style). Augemented ConnectionTest to correctly test for the special os.name = windows case.

Modified:
    incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpid/transport/Connection.java
    incubator/qpid/trunk/qpid/java/common/src/test/java/org/apache/qpid/transport/ConnectionTest.java

Modified: incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpid/transport/Connection.java
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpid/transport/Connection.java?rev=720200&r1=720199&r2=720200&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpid/transport/Connection.java (original)
+++ incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpid/transport/Connection.java Mon Nov 24 06:16:30 2008
@@ -181,7 +181,17 @@
             {
                 ConnectionException t = error;
                 error = null;
-                close();
+                try
+                {
+                    close();
+                }
+                catch (ConnectionException ce)
+                {
+                    if (!(t instanceof ProtocolVersionException))
+                    {
+                        throw ce;
+                    }
+                }
                 t.rethrow();
             }
 

Modified: incubator/qpid/trunk/qpid/java/common/src/test/java/org/apache/qpid/transport/ConnectionTest.java
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/common/src/test/java/org/apache/qpid/transport/ConnectionTest.java?rev=720200&r1=720199&r2=720200&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/java/common/src/test/java/org/apache/qpid/transport/ConnectionTest.java (original)
+++ incubator/qpid/trunk/qpid/java/common/src/test/java/org/apache/qpid/transport/ConnectionTest.java Mon Nov 24 06:16:30 2008
@@ -35,6 +35,8 @@
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Random;
+import java.util.Collections;
+import java.io.IOException;
 
 /**
  * ConnectionTest
@@ -56,18 +58,6 @@
 
         port = AvailablePortFinder.getNextAvailable(12000);
 
-        ConnectionDelegate server = new ServerDelegate() {
-            @Override public Session getSession(Connection conn, SessionAttach atc)
-            {
-                Session ssn = super.getSession(conn, atc);
-                ssn.setSessionListener(ConnectionTest.this);
-                return ssn;
-            }
-        };
-
-        IoAcceptor ioa = new IoAcceptor
-            ("localhost", port, ConnectionBinding.get(server));
-        ioa.start();
     }
 
     public void opened(Session ssn) {}
@@ -163,8 +153,78 @@
         return conn;
     }
 
+    public void testProtocolNegotiationExceptionOverridesCloseException() throws Exception
+    {
+        // Force os.name to be windows to exercise code in IoReceiver
+        // that looks for the value of os.name
+        System.setProperty("os.name","windows");
+
+        // Start server as 0-9 to froce a ProtocolVersionException
+        startServer(new ProtocolHeader(1, 0, 9));
+        
+        Condition closed = new Condition();
+
+        try
+        {
+            connect(closed);
+            fail("ProtocolVersionException expected");
+        }
+        catch (ProtocolVersionException pve)
+        {
+            //Expected code path
+        }
+        catch (Exception e)
+        {
+            fail("ProtocolVersionException expected. Got:" + e.getMessage());
+        }
+    }
+
+    private void startServer()
+    {
+        startServer(new ProtocolHeader(1, 0, 10));
+    }
+
+    private void startServer(final ProtocolHeader protocolHeader)
+    {
+        ConnectionDelegate server = new ServerDelegate()
+        {
+            @Override
+            public void init(Connection conn, ProtocolHeader hdr)
+            {
+                conn.send(protocolHeader);
+                List<Object> utf8 = new ArrayList<Object>();
+                utf8.add("utf8");
+                conn.connectionStart(null, Collections.EMPTY_LIST, utf8);
+            }
+
+            @Override
+            public Session getSession(Connection conn, SessionAttach atc)
+            {
+                Session ssn = super.getSession(conn, atc);
+                ssn.setSessionListener(ConnectionTest.this);
+                return ssn;
+            }
+        };
+
+        IoAcceptor ioa = null;
+        try
+        {
+            ioa = new IoAcceptor
+                    ("localhost", port, ConnectionBinding.get(server));
+        }
+        catch (IOException e)
+        {
+            e.printStackTrace();
+            fail("Unable to start Server for test due to:" + e.getMessage());
+        }
+
+        ioa.start();
+    }
+
     public void testClosedNotificationAndWriteToClosed() throws Exception
     {
+        startServer();
+
         Condition closed = new Condition();
         Connection conn = connect(closed);
 
@@ -223,6 +283,8 @@
 
     public void testResumeNonemptyReplayBuffer() throws Exception
     {
+        startServer();
+
         Connection conn = new Connection();
         conn.setConnectionListener(new FailoverConnectionListener());
         conn.connect("localhost", port, null, "guest", "guest");
@@ -276,6 +338,8 @@
 
     public void testResumeEmptyReplayBuffer() throws InterruptedException
     {
+        startServer();
+
         Connection conn = new Connection();
         conn.setConnectionListener(new FailoverConnectionListener());
         conn.connect("localhost", port, null, "guest", "guest");