[jboss-cvs] JBoss Messaging SVN: r4518 - in trunk: src/main/org/jboss/messaging/core/message/impl and 8 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Wed Jun 18 12:38:43 EDT 2008


Author: timfox
Date: 2008-06-18 12:38:43 -0400 (Wed, 18 Jun 2008)
New Revision: 4518

Added:
   trunk/tests/src/org/jboss/messaging/tests/unit/core/server/impl/MessagingServerImplTest.java
   trunk/tests/src/org/jboss/messaging/tests/unit/core/server/impl/ServerConnectionImplTest.java
Modified:
   trunk/src/main/org/jboss/messaging/core/client/impl/ClientConnectionFactoryImpl.java
   trunk/src/main/org/jboss/messaging/core/client/impl/ClientConnectionImpl.java
   trunk/src/main/org/jboss/messaging/core/client/impl/ClientSessionImpl.java
   trunk/src/main/org/jboss/messaging/core/message/impl/MessageImpl.java
   trunk/src/main/org/jboss/messaging/core/remoting/impl/wireformat/CreateConnectionRequest.java
   trunk/src/main/org/jboss/messaging/core/server/MessagingServer.java
   trunk/src/main/org/jboss/messaging/core/server/ServerConnection.java
   trunk/src/main/org/jboss/messaging/core/server/impl/MessagingServerImpl.java
   trunk/src/main/org/jboss/messaging/core/server/impl/MessagingServerPacketHandler.java
   trunk/src/main/org/jboss/messaging/core/server/impl/ServerConnectionImpl.java
   trunk/src/main/org/jboss/messaging/core/version/impl/VersionImpl.java
   trunk/tests/src/org/jboss/messaging/tests/unit/core/client/impl/ClientConnectionFactoryImplTest.java
   trunk/tests/src/org/jboss/messaging/tests/unit/core/client/impl/ClientConnectionImplTest.java
   trunk/tests/src/org/jboss/messaging/tests/unit/core/client/impl/ClientSessionImplTest.java
   trunk/tests/src/org/jboss/messaging/tests/unit/core/remoting/impl/MessagingCodecImplTest.java
   trunk/tests/src/org/jboss/messaging/tests/unit/core/remoting/impl/mina/MinaProtocolCodecFilterTest.java
Log:
More tests


Modified: trunk/src/main/org/jboss/messaging/core/client/impl/ClientConnectionFactoryImpl.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/client/impl/ClientConnectionFactoryImpl.java	2008-06-18 14:36:35 UTC (rev 4517)
+++ trunk/src/main/org/jboss/messaging/core/client/impl/ClientConnectionFactoryImpl.java	2008-06-18 16:38:43 UTC (rev 4518)
@@ -178,11 +178,9 @@
          remotingConnection = remotingConnectionFactory.createRemotingConnection(location, connectionParams);
        
          remotingConnection.start();
-         
-         long sessionID = remotingConnection.getSessionID();
-         
+            
          CreateConnectionRequest request =
-            new CreateConnectionRequest(clientVersion.getIncrementingVersion(), sessionID, username, password);
+            new CreateConnectionRequest(clientVersion.getIncrementingVersion(), username, password);
          
          CreateConnectionResponse response =
             (CreateConnectionResponse)remotingConnection.sendBlocking(0, 0, request);

Modified: trunk/src/main/org/jboss/messaging/core/client/impl/ClientConnectionImpl.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/client/impl/ClientConnectionImpl.java	2008-06-18 14:36:35 UTC (rev 4517)
+++ trunk/src/main/org/jboss/messaging/core/client/impl/ClientConnectionImpl.java	2008-06-18 16:38:43 UTC (rev 4518)
@@ -165,6 +165,7 @@
    public synchronized void cleanUp()
    {
       cleanUpChildren();
+      
       closed = true;
    }
 

Modified: trunk/src/main/org/jboss/messaging/core/client/impl/ClientSessionImpl.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/client/impl/ClientSessionImpl.java	2008-06-18 14:36:35 UTC (rev 4517)
+++ trunk/src/main/org/jboss/messaging/core/client/impl/ClientSessionImpl.java	2008-06-18 16:38:43 UTC (rev 4518)
@@ -482,18 +482,16 @@
       }
    }
 
-
    public synchronized void cleanUp()
    {
       cleanUpChildren();
+      
       executorService.shutdown();
 
       connection.removeSession(this);
 
       closed = true;
    }
-
-
   
    public boolean isClosed()
    {

Modified: trunk/src/main/org/jboss/messaging/core/message/impl/MessageImpl.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/message/impl/MessageImpl.java	2008-06-18 14:36:35 UTC (rev 4517)
+++ trunk/src/main/org/jboss/messaging/core/message/impl/MessageImpl.java	2008-06-18 16:38:43 UTC (rev 4518)
@@ -86,7 +86,7 @@
    }
    
    protected MessageImpl(final byte type, final boolean durable, final long expiration,
-                      final long timestamp, final byte priority)
+                         final long timestamp, final byte priority)
    {
       this();
       this.type = type;

Modified: trunk/src/main/org/jboss/messaging/core/remoting/impl/wireformat/CreateConnectionRequest.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/remoting/impl/wireformat/CreateConnectionRequest.java	2008-06-18 14:36:35 UTC (rev 4517)
+++ trunk/src/main/org/jboss/messaging/core/remoting/impl/wireformat/CreateConnectionRequest.java	2008-06-18 16:38:43 UTC (rev 4518)
@@ -42,7 +42,6 @@
    // Attributes ----------------------------------------------------
 
    private int version;
-   private long remotingSessionID;
    private String username;
    private String password;
 
@@ -50,13 +49,11 @@
 
    // Constructors --------------------------------------------------
 
-   public CreateConnectionRequest(final int version,
-         final long remotingSessionID, final String username, final String password)
+   public CreateConnectionRequest(final int version, final String username, final String password)
    {
       super(CREATECONNECTION);
 
       this.version = version;
-      this.remotingSessionID = remotingSessionID;
       this.username = username;
       this.password = password;
    }
@@ -73,11 +70,6 @@
       return version;
    }
 
-   public long getRemotingSessionID()
-   {
-      return remotingSessionID;
-   }
-
    public String getUsername()
    {
       return username;
@@ -91,7 +83,6 @@
    public void encodeBody(final MessagingBuffer buffer)
    {
       buffer.putInt(version);
-      buffer.putLong(remotingSessionID);
       buffer.putNullableString(username);
       buffer.putNullableString(password);
    }
@@ -99,7 +90,6 @@
    public void decodeBody(final MessagingBuffer buffer)
    {
       version = buffer.getInt();
-      remotingSessionID = buffer.getLong();
       username = buffer.getNullableString();
       password = buffer.getNullableString();
    }
@@ -109,7 +99,6 @@
    {
       StringBuffer buf = new StringBuffer(getParentString());
       buf.append(", version=" + version);
-      buf.append(", remotingSessionID=" + remotingSessionID);
       buf.append(", username=" + username);
       buf.append(", password=" + password);
       buf.append("]");
@@ -125,8 +114,7 @@
             
       CreateConnectionRequest r = (CreateConnectionRequest)other;
       
-      boolean matches = this.version == r.version &&
-                        this.remotingSessionID == r.remotingSessionID &&
+      boolean matches = this.version == r.version &&                     
                         this.username == null ? r.username == null : this.username.equals(r.username) &&
                         this.password == null ? r.password == null : this.password.equals(r.password);
       

Modified: trunk/src/main/org/jboss/messaging/core/server/MessagingServer.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/server/MessagingServer.java	2008-06-18 14:36:35 UTC (rev 4517)
+++ trunk/src/main/org/jboss/messaging/core/server/MessagingServer.java	2008-06-18 16:38:43 UTC (rev 4518)
@@ -92,10 +92,9 @@
   
    //Operations
    
-   CreateConnectionResponse createConnection(String username, String password,
-                                             long remotingClientSessionID,
+   CreateConnectionResponse createConnection(String username, String password,                                          
                                              int incrementingVersion,
-                                             PacketReturner sender) throws Exception;
+                                             PacketReturner returner) throws Exception;
    
       
    boolean isStarted();

Modified: trunk/src/main/org/jboss/messaging/core/server/ServerConnection.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/server/ServerConnection.java	2008-06-18 14:36:35 UTC (rev 4517)
+++ trunk/src/main/org/jboss/messaging/core/server/ServerConnection.java	2008-06-18 16:38:43 UTC (rev 4518)
@@ -66,4 +66,6 @@
 	boolean isStarted();
 	
 	long getClientSessionID();
+	
+	boolean isClosed();
 }

Modified: trunk/src/main/org/jboss/messaging/core/server/impl/MessagingServerImpl.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/server/impl/MessagingServerImpl.java	2008-06-18 14:36:35 UTC (rev 4517)
+++ trunk/src/main/org/jboss/messaging/core/server/impl/MessagingServerImpl.java	2008-06-18 16:38:43 UTC (rev 4518)
@@ -179,8 +179,7 @@
       securityRepository = new HierarchicalObjectRepository<Set<Role>>();
       securityRepository.setDefault(new HashSet<Role>());
       securityStore.setSecurityRepository(securityRepository);
-      securityStore.setSecurityManager(securityManager);
-      
+      securityStore.setSecurityManager(securityManager);      
       scheduledExecutor = new ScheduledThreadPoolExecutor(configuration.getScheduledThreadPoolMaxSize(), new JBMThreadFactory("JBM-scheduled-threads"));            
       resourceManager = new ResourceManagerImpl(0);                           
       remotingService.addRemotingSessionListener(sessionListener);  
@@ -240,6 +239,11 @@
 
    public void setConfiguration(Configuration configuration)
    {
+      if (started)
+      {
+         throw new IllegalStateException("Cannot set configuration when started");
+      }
+      
       this.configuration = configuration;
    }
    
@@ -250,6 +254,10 @@
    
    public void setRemotingService(RemotingService remotingService)
    {
+      if (started)
+      {
+         throw new IllegalStateException("Cannot set remoting service when started");
+      }
       this.remotingService = remotingService;
    }
 
@@ -260,6 +268,10 @@
 
    public void setStorageManager(StorageManager storageManager)
    {
+      if (started)
+      {
+         throw new IllegalStateException("Cannot set storage manager when started");
+      }
       this.storageManager = storageManager;
    }
    
@@ -270,6 +282,11 @@
    
    public void setSecurityManager(JBMSecurityManager securityManager)
    {
+      if (started)
+      {
+         throw new IllegalStateException("Cannot set security Manager when started");
+      }
+      
       this.securityManager = securityManager;
    }
       
@@ -327,10 +344,9 @@
       return started;
    }
 
-   public CreateConnectionResponse createConnection(final String username, final String password,
-                                                    final long remotingClientSessionID,
+   public CreateConnectionResponse createConnection(final String username, final String password,                                  
                                                     final int incrementingVersion,
-                                                    final PacketReturner sender)
+                                                    final PacketReturner returner)
            throws Exception
    {
       if (version.getIncrementingVersion() < incrementingVersion)
@@ -345,11 +361,12 @@
 
       securityStore.authenticate(username, password);
 
+      long sessionID = returner.getSessionID();
+      
       final ServerConnection connection =
-              new ServerConnectionImpl(this, username, password,
-                                       sender.getSessionID());
+              new ServerConnectionImpl(this, username, password, sessionID);
       
-      connectionManager.registerConnection(sender.getSessionID(), connection);
+      connectionManager.registerConnection(sessionID, connection);
 
       remotingService.getDispatcher().register(new ServerConnectionPacketHandler(connection));
 

Modified: trunk/src/main/org/jboss/messaging/core/server/impl/MessagingServerPacketHandler.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/server/impl/MessagingServerPacketHandler.java	2008-06-18 14:36:35 UTC (rev 4517)
+++ trunk/src/main/org/jboss/messaging/core/server/impl/MessagingServerPacketHandler.java	2008-06-18 16:38:43 UTC (rev 4518)
@@ -74,10 +74,10 @@
       {
          CreateConnectionRequest request = (CreateConnectionRequest) packet;
 
-         CreateConnectionResponse createConnectionResponse = server.createConnection(request.getUsername(), request.getPassword(),
-                 request.getRemotingSessionID(),                
-                 request.getVersion(),
-                 sender);
+         CreateConnectionResponse createConnectionResponse =
+            server.createConnection(request.getUsername(), request.getPassword(),                             
+                                    request.getVersion(),
+                                    sender);
          response = createConnectionResponse;
 
       }

Modified: trunk/src/main/org/jboss/messaging/core/server/impl/ServerConnectionImpl.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/server/impl/ServerConnectionImpl.java	2008-06-18 14:36:35 UTC (rev 4517)
+++ trunk/src/main/org/jboss/messaging/core/server/impl/ServerConnectionImpl.java	2008-06-18 16:38:43 UTC (rev 4518)
@@ -84,6 +84,8 @@
    private final ConnectionManager connectionManager;
 
    private final PacketDispatcher dispatcher;
+   
+   private volatile boolean closed;
 
    // Constructors ---------------------------------------------------------------------------------
       
@@ -128,8 +130,7 @@
    		                                                      final boolean autoCommitAcks,
                                                                final PacketReturner returner) throws Exception
    {            
-      ServerSession session =
-         new ServerSessionImpl(this, autoCommitSends, autoCommitAcks, xa, returner);
+      ServerSession session = doCreateSession(autoCommitSends, autoCommitAcks, xa, returner);
 
       sessions.add(session);
       
@@ -138,6 +139,13 @@
       return new ConnectionCreateSessionResponseMessage(session.getID());
    }
    
+   protected ServerSession doCreateSession(final boolean autoCommitSends, final boolean autoCommitAcks,
+                                         final boolean xa, final PacketReturner returner)
+      throws Exception
+   {
+      return new ServerSessionImpl(this, autoCommitSends, autoCommitAcks, xa, returner);
+   }
+      
    public void start() throws Exception
    {
       setStarted(true);
@@ -150,6 +158,11 @@
 
    public void close() throws Exception
    {
+      if (closed)
+      {
+         return;
+      }
+      
       Set<ServerSession> sessionsClone = new HashSet<ServerSession>(sessions);
       
       for (ServerSession session: sessionsClone)
@@ -163,11 +176,13 @@
 
       for (Queue tempQueue: temporaryQueues)
       {                        
-         Binding binding = postOffice.getBinding(tempQueue.getName());
+         SimpleString name = tempQueue.getName();
          
+         Binding binding = postOffice.getBinding(name);
+         
          addresses.add(binding.getAddress());     
          
-         postOffice.removeBinding(tempQueue.getName());         
+         postOffice.removeBinding(name);         
       }
       
       for (SimpleString address: addresses)
@@ -187,8 +202,15 @@
       connectionManager.unregisterConnection(remotingClientSessionID, this);
 
       dispatcher.unregister(id);
+      
+      closed = true;
    }
    
+   public boolean isClosed()
+   {
+      return closed;
+   }
+   
    public String getUsername()
    {
       return username;
@@ -252,6 +274,13 @@
    {
       return remotingClientSessionID;
    }
+         
+   // Public ---------------------------------------------------------------------------------------
+    
+   public void addSession(final ServerSession session)
+   {
+      this.sessions.add(session);
+   }
    
    public Set<Queue> getTemporaryQueues()
    {
@@ -268,8 +297,6 @@
       return new HashSet<ServerSession>(sessions);
    }
    
-   // Public ---------------------------------------------------------------------------------------
-    
    public String toString()
    {
       return "ConnectionEndpoint[" + id + "]";

Modified: trunk/src/main/org/jboss/messaging/core/version/impl/VersionImpl.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/version/impl/VersionImpl.java	2008-06-18 14:36:35 UTC (rev 4517)
+++ trunk/src/main/org/jboss/messaging/core/version/impl/VersionImpl.java	2008-06-18 16:38:43 UTC (rev 4518)
@@ -112,6 +112,26 @@
    }
 
    // Public -------------------------------------------------------
+   
+   public boolean equals(Object other)
+   {
+      if (other == this)
+      {
+         return true;
+      }
+      if (other instanceof Version == false)
+      {
+         return false;
+      }
+      Version v = (Version)other;
+      
+      return this.versionName.equals(v.getVersionName()) &&
+             this.majorVersion == v.getMajorVersion() &&
+             this.minorVersion == v.getMinorVersion() &&
+             this.microVersion == v.getMicroVersion() &&
+             this.versionSuffix.equals(v.getVersionSuffix()) &&
+             this.incrementingVersion == v.getIncrementingVersion();
+   }
 
    // Package protected ---------------------------------------------
 

Modified: trunk/tests/src/org/jboss/messaging/tests/unit/core/client/impl/ClientConnectionFactoryImplTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/unit/core/client/impl/ClientConnectionFactoryImplTest.java	2008-06-18 14:36:35 UTC (rev 4517)
+++ trunk/tests/src/org/jboss/messaging/tests/unit/core/client/impl/ClientConnectionFactoryImplTest.java	2008-06-18 16:38:43 UTC (rev 4518)
@@ -230,14 +230,10 @@
       
       rc.start();
       
-      final long sessID = 65126152;
-      
-      EasyMock.expect(rc.getSessionID()).andReturn(sessID);
-      
       Version clientVersion = VersionLoader.load();
       
       CreateConnectionRequest request =
-         new CreateConnectionRequest(clientVersion.getIncrementingVersion(), sessID, username, password);
+         new CreateConnectionRequest(clientVersion.getIncrementingVersion(), username, password);
       
       final long connTargetID = 5425142;
       

Modified: trunk/tests/src/org/jboss/messaging/tests/unit/core/client/impl/ClientConnectionImplTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/unit/core/client/impl/ClientConnectionImplTest.java	2008-06-18 14:36:35 UTC (rev 4517)
+++ trunk/tests/src/org/jboss/messaging/tests/unit/core/client/impl/ClientConnectionImplTest.java	2008-06-18 16:38:43 UTC (rev 4518)
@@ -290,36 +290,22 @@
       sessions = conn.getSessions();
       assertEquals(0, sessions.size());   
    }
-               
-   // Private -----------------------------------------------------------------------------------------------------------
+   
+   public void testSessionCleanedUp() throws Exception
+   {
+      RemotingConnection rc = EasyMock.createStrictMock(RemotingConnection.class);
 
-
-   private void testCreateSession(final boolean xa, final boolean autoCommitSends, final boolean autoCommitAcks,
-         final int ackBatchSize, final boolean blockOnAcknowledge,
-         final boolean cacheProducers, final boolean useDefaults) throws Exception
-   {       
-      RemotingConnection rc = EasyMock.createStrictMock(RemotingConnection.class); 
-
       Location location = new LocationImpl(TransportType.TCP, "oranges");
 
       ClientConnectionFactory cf = new ClientConnectionFactoryImpl(location);
 
-      if (useDefaults)
-      {
-         cf.setDefaultBlockOnAcknowledge(blockOnAcknowledge); 
-      }
-      else
-      {
-         cf.setDefaultBlockOnAcknowledge(!blockOnAcknowledge); // Should be ignored
-      }
-
       final int connTargetID = 17267162;
 
       Version version = new VersionImpl("uqysuyqs", 1, 1, 1, 12, "uqysuays");
 
       ClientConnection conn = new ClientConnectionImpl(cf, connTargetID, rc, version);
 
-      ConnectionCreateSessionMessage request = new ConnectionCreateSessionMessage(xa, autoCommitSends, autoCommitAcks);
+      ConnectionCreateSessionMessage request = new ConnectionCreateSessionMessage(true, true, true);
 
       final int sessionTargetID = 12127162;
 
@@ -328,38 +314,22 @@
       EasyMock.expect(rc.sendBlocking(connTargetID, connTargetID, request)).andReturn(response);
 
       EasyMock.replay(rc);
-
-      ClientSession session;
-
-      if (useDefaults)
-      {
-         session = conn.createClientSession(xa, autoCommitSends, autoCommitAcks, ackBatchSize);
-      }
-      else
-      {
-         session = conn.createClientSession(xa, autoCommitSends, autoCommitAcks, ackBatchSize, blockOnAcknowledge,
-               cacheProducers);
-      }
-
-      assertEquals(ackBatchSize, session.getLazyAckBatchSize());
-      assertEquals(xa, session.isXA());
-      assertEquals(autoCommitSends, session.isAutoCommitSends());
-      assertEquals(autoCommitAcks, session.isAutoCommitAcks());
-      assertEquals(blockOnAcknowledge, session.isBlockOnAcknowledge());
-
+      ClientSession session = conn.createClientSession(true, true, true, 1);
+      conn.cleanUp();
+      assertTrue(session.isClosed());
+      assertTrue(conn.isClosed());
       EasyMock.verify(rc);
    }
 
-   public void testSessionCleanedUp() throws Exception
-      {
-         RemotingConnection rc = EasyMock.createStrictMock(RemotingConnection.class);
 
+   public void testSessionsCleanedUp() throws Exception
+   {
+      RemotingConnection rc = EasyMock.createStrictMock(RemotingConnection.class);
+
       Location location = new LocationImpl(TransportType.TCP, "oranges");
 
       ClientConnectionFactory cf = new ClientConnectionFactoryImpl(location);
 
-
-
       final int connTargetID = 17267162;
 
       Version version = new VersionImpl("uqysuyqs", 1, 1, 1, 12, "uqysuays");
@@ -372,52 +342,77 @@
 
       ConnectionCreateSessionResponseMessage response = new ConnectionCreateSessionResponseMessage(sessionTargetID);
 
-      EasyMock.expect(rc.sendBlocking(connTargetID, connTargetID, request)).andReturn(response);
+      EasyMock.expect(rc.sendBlocking(connTargetID, connTargetID, request)).andReturn(response).anyTimes();
 
       EasyMock.replay(rc);
       ClientSession session = conn.createClientSession(true, true, true, 1);
+      ClientSession session2 = conn.createClientSession(true, true, true, 2);
+      ClientSession session3 = conn.createClientSession(true, true, true, 3);
       conn.cleanUp();
       assertTrue(session.isClosed());
+      assertTrue(session2.isClosed());
+      assertTrue(session3.isClosed());
       assertTrue(conn.isClosed());
       EasyMock.verify(rc);
 
-      }
+   }
+               
+   // Private -----------------------------------------------------------------------------------------------------------
 
 
-   public void testSessionsCleanedUp() throws Exception
-      {
-         RemotingConnection rc = EasyMock.createStrictMock(RemotingConnection.class);
+   private void testCreateSession(final boolean xa, final boolean autoCommitSends, final boolean autoCommitAcks,
+         final int ackBatchSize, final boolean blockOnAcknowledge,
+         final boolean cacheProducers, final boolean useDefaults) throws Exception
+   {       
+      RemotingConnection rc = EasyMock.createStrictMock(RemotingConnection.class); 
 
       Location location = new LocationImpl(TransportType.TCP, "oranges");
 
       ClientConnectionFactory cf = new ClientConnectionFactoryImpl(location);
 
+      if (useDefaults)
+      {
+         cf.setDefaultBlockOnAcknowledge(blockOnAcknowledge); 
+      }
+      else
+      {
+         cf.setDefaultBlockOnAcknowledge(!blockOnAcknowledge); // Should be ignored
+      }
 
-
       final int connTargetID = 17267162;
 
       Version version = new VersionImpl("uqysuyqs", 1, 1, 1, 12, "uqysuays");
 
       ClientConnection conn = new ClientConnectionImpl(cf, connTargetID, rc, version);
 
-      ConnectionCreateSessionMessage request = new ConnectionCreateSessionMessage(true, true, true);
+      ConnectionCreateSessionMessage request = new ConnectionCreateSessionMessage(xa, autoCommitSends, autoCommitAcks);
 
       final int sessionTargetID = 12127162;
 
       ConnectionCreateSessionResponseMessage response = new ConnectionCreateSessionResponseMessage(sessionTargetID);
 
-      EasyMock.expect(rc.sendBlocking(connTargetID, connTargetID, request)).andReturn(response).anyTimes();
+      EasyMock.expect(rc.sendBlocking(connTargetID, connTargetID, request)).andReturn(response);
 
       EasyMock.replay(rc);
-      ClientSession session = conn.createClientSession(true, true, true, 1);
-      ClientSession session2 = conn.createClientSession(true, true, true, 2);
-      ClientSession session3 = conn.createClientSession(true, true, true, 3);
-      conn.cleanUp();
-      assertTrue(session.isClosed());
-      assertTrue(session2.isClosed());
-      assertTrue(session3.isClosed());
-      assertTrue(conn.isClosed());
-      EasyMock.verify(rc);
 
+      ClientSession session;
+
+      if (useDefaults)
+      {
+         session = conn.createClientSession(xa, autoCommitSends, autoCommitAcks, ackBatchSize);
       }
+      else
+      {
+         session = conn.createClientSession(xa, autoCommitSends, autoCommitAcks, ackBatchSize, blockOnAcknowledge,
+               cacheProducers);
+      }
+
+      assertEquals(ackBatchSize, session.getLazyAckBatchSize());
+      assertEquals(xa, session.isXA());
+      assertEquals(autoCommitSends, session.isAutoCommitSends());
+      assertEquals(autoCommitAcks, session.isAutoCommitAcks());
+      assertEquals(blockOnAcknowledge, session.isBlockOnAcknowledge());
+
+      EasyMock.verify(rc);
+   }
 }

Modified: trunk/tests/src/org/jboss/messaging/tests/unit/core/client/impl/ClientSessionImplTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/unit/core/client/impl/ClientSessionImplTest.java	2008-06-18 14:36:35 UTC (rev 4517)
+++ trunk/tests/src/org/jboss/messaging/tests/unit/core/client/impl/ClientSessionImplTest.java	2008-06-18 16:38:43 UTC (rev 4518)
@@ -560,9 +560,7 @@
       testCreateBrowser(true);
       testCreateBrowser(false);
    }
-   
-   
-   
+         
    public void testGetXAResource() throws Exception
    {
       ClientConnectionInternal conn = EasyMock.createStrictMock(ClientConnectionInternal.class);
@@ -751,9 +749,7 @@
       testClose(true);
       testClose(false);
    }
-   
-   
-    
+         
    public void testAddRemoveConsumer() throws Exception
    {
       testAddRemoveConsumer(true);

Modified: trunk/tests/src/org/jboss/messaging/tests/unit/core/remoting/impl/MessagingCodecImplTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/unit/core/remoting/impl/MessagingCodecImplTest.java	2008-06-18 14:36:35 UTC (rev 4517)
+++ trunk/tests/src/org/jboss/messaging/tests/unit/core/remoting/impl/MessagingCodecImplTest.java	2008-06-18 16:38:43 UTC (rev 4518)
@@ -817,7 +817,7 @@
 
    public void testCreateConnectionRequestPacket() throws Exception
    {
-      CreateConnectionRequest message = new CreateConnectionRequest(RandomUtil.randomInt(), RandomUtil.randomLong(), RandomUtil.randomString(), RandomUtil.randomString());
+      CreateConnectionRequest message = new CreateConnectionRequest(RandomUtil.randomInt(), RandomUtil.randomString(), RandomUtil.randomString());
       setHeaders(message);
       codec.encode(buff, message);
       buff.rewind();
@@ -825,8 +825,7 @@
       checkHeaders(message, copy);
       assertEquals(message.getUsername(), copy.getUsername());
       assertEquals(message.getVersion(), copy.getVersion());
-      assertEquals(message.getPassword(), copy.getPassword());
-      assertEquals(message.getRemotingSessionID(), copy.getRemotingSessionID());
+      assertEquals(message.getPassword(), copy.getPassword());      
    }
 
    public void testConsumerFlowCreditMessagePacket() throws Exception

Modified: trunk/tests/src/org/jboss/messaging/tests/unit/core/remoting/impl/mina/MinaProtocolCodecFilterTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/unit/core/remoting/impl/mina/MinaProtocolCodecFilterTest.java	2008-06-18 14:36:35 UTC (rev 4517)
+++ trunk/tests/src/org/jboss/messaging/tests/unit/core/remoting/impl/mina/MinaProtocolCodecFilterTest.java	2008-06-18 16:38:43 UTC (rev 4518)
@@ -350,22 +350,19 @@
    public void testCreateConnectionRequest() throws Exception
    {
       int version = randomInt();
-      long remotingSessionID = randomLong();
       String username = null;
       String password = null;
       CreateConnectionRequest request = new CreateConnectionRequest(version,
-            remotingSessionID, username, password);
+            username, password);
 
       Packet decodedPacket = encodeAndCheckBytesAndDecode(request, version,
-            remotingSessionID, username, password);
+            username, password);
 
       assertTrue(decodedPacket instanceof CreateConnectionRequest);
       CreateConnectionRequest decodedRequest = (CreateConnectionRequest) decodedPacket;
 
       assertEquals(CREATECONNECTION, decodedPacket.getType());
       assertEquals(request.getVersion(), decodedRequest.getVersion());
-      assertEquals(request.getRemotingSessionID(), decodedRequest
-            .getRemotingSessionID());
       assertEquals(request.getUsername(), decodedRequest.getUsername());
       assertEquals(request.getPassword(), decodedRequest.getPassword());
    }

Added: trunk/tests/src/org/jboss/messaging/tests/unit/core/server/impl/MessagingServerImplTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/unit/core/server/impl/MessagingServerImplTest.java	                        (rev 0)
+++ trunk/tests/src/org/jboss/messaging/tests/unit/core/server/impl/MessagingServerImplTest.java	2008-06-18 16:38:43 UTC (rev 4518)
@@ -0,0 +1,446 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.messaging.tests.unit.core.server.impl;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import org.easymock.EasyMock;
+import org.jboss.messaging.core.config.Configuration;
+import org.jboss.messaging.core.config.impl.ConfigurationImpl;
+import org.jboss.messaging.core.exception.MessagingException;
+import org.jboss.messaging.core.logging.Logger;
+import org.jboss.messaging.core.persistence.StorageManager;
+import org.jboss.messaging.core.postoffice.impl.PostOfficeImpl;
+import org.jboss.messaging.core.remoting.PacketDispatcher;
+import org.jboss.messaging.core.remoting.PacketReturner;
+import org.jboss.messaging.core.remoting.RemotingService;
+import org.jboss.messaging.core.remoting.impl.wireformat.CreateConnectionResponse;
+import org.jboss.messaging.core.security.CheckType;
+import org.jboss.messaging.core.security.JBMSecurityManager;
+import org.jboss.messaging.core.security.Role;
+import org.jboss.messaging.core.server.ConnectionManager;
+import org.jboss.messaging.core.server.MessagingServer;
+import org.jboss.messaging.core.server.ServerConnection;
+import org.jboss.messaging.core.server.impl.ConnectionManagerImpl;
+import org.jboss.messaging.core.server.impl.MessagingServerImpl;
+import org.jboss.messaging.core.server.impl.MessagingServerPacketHandler;
+import org.jboss.messaging.core.server.impl.QueueFactoryImpl;
+import org.jboss.messaging.core.server.impl.ServerConnectionPacketHandler;
+import org.jboss.messaging.core.version.Version;
+import org.jboss.messaging.tests.util.UnitTestCase;
+import org.jboss.messaging.util.VersionLoader;
+
+/**
+ * 
+ * A MessagingServerImplTest
+ * 
+ * @author <a href="mailto:tim.fox at jboss.com">Tim Fox</a>
+ *
+ */
+public class MessagingServerImplTest extends UnitTestCase
+{
+   private static final Logger log = Logger.getLogger(MessagingServerImplTest.class);
+
+   
+   // Private -----------------------------------------------------------------------------------------------------------
+   
+   public void testConstructor()
+   {
+      MessagingServer server = new MessagingServerImpl();
+      
+      Version version = VersionLoader.load();
+      
+      assertEquals(version, server.getVersion());
+      
+      assertNull(server.getConfiguration());
+      assertNull(server.getConnectionManager());
+      assertNull(server.getExecutorFactory());
+      assertNull(server.getPostOffice());
+      assertNull(server.getQueueSettingsRepository());
+      assertNull(server.getRemotingService());
+      assertNull(server.getResourceManager());
+      assertNull(server.getSecurityManager());
+      assertNull(server.getSecurityRepository());
+      assertNull(server.getSecurityStore());
+      assertNull(server.getStorageManager());      
+   }
+   
+   public void testSetGetPlugins() throws Exception
+   {
+      MessagingServer server = new MessagingServerImpl();
+      
+      Configuration config = EasyMock.createMock(Configuration.class);
+      server.setConfiguration(config);
+      assertTrue(config == server.getConfiguration());
+      
+      StorageManager sm = EasyMock.createMock(StorageManager.class);
+      server.setStorageManager(sm);
+      assertTrue(sm == server.getStorageManager());
+      
+      RemotingService rs = EasyMock.createMock(RemotingService.class);
+      server.setRemotingService(rs);
+      assertTrue(rs == server.getRemotingService());
+      
+      JBMSecurityManager jsm = EasyMock.createMock(JBMSecurityManager.class);
+      server.setSecurityManager(jsm);
+      assertTrue(jsm == server.getSecurityManager());
+   }
+   
+   public void testStartStop() throws Exception
+   {
+      MessagingServer server = new MessagingServerImpl();
+      
+      try
+      {
+         server.start();
+         fail("Should throw exception");
+      }
+      catch (IllegalStateException e)
+      {
+         //Ok
+      }
+      
+      server.setConfiguration(new ConfigurationImpl());
+      
+      try
+      {
+         server.start();
+         fail("Should throw exception");
+      }
+      catch (IllegalStateException e)
+      {
+         //Ok
+      }
+      
+      StorageManager sm = EasyMock.createMock(StorageManager.class);
+      
+      server.setStorageManager(sm);
+      
+      try
+      {
+         server.start();
+         fail("Should throw exception");
+      }
+      catch (IllegalStateException e)
+      {
+         //Ok
+      }
+      
+      RemotingService rs = EasyMock.createMock(RemotingService.class);
+      
+      server.setRemotingService(rs);
+      
+      try
+      {
+         server.start();
+         fail("Should throw exception");
+      }
+      catch (IllegalStateException e)
+      {
+         //Ok
+      }
+      
+      JBMSecurityManager sem = EasyMock.createMock(JBMSecurityManager.class);
+                 
+      server.setSecurityManager(sem);
+      
+      try
+      {
+         server.start();
+         fail("Should throw exception");
+      }
+      catch (IllegalStateException e)
+      {
+         //Ok
+      }
+      
+      EasyMock.reset(sm, rs);
+      
+      EasyMock.expect(sm.isStarted()).andStubReturn(true);
+      EasyMock.expect(rs.isStarted()).andStubReturn(false);
+      
+      EasyMock.replay(sm, rs);
+      
+      try
+      {
+         server.start();
+         fail("Should throw exception");
+      }
+      catch (IllegalStateException e)
+      {
+         //Ok
+      }
+      
+      EasyMock.reset(sm, rs);
+      
+      EasyMock.expect(sm.isStarted()).andStubReturn(true);
+      EasyMock.expect(rs.isStarted()).andStubReturn(true);
+      rs.addRemotingSessionListener(EasyMock.isA(ConnectionManagerImpl.class));
+      sm.loadBindings(EasyMock.isA(QueueFactoryImpl.class), EasyMock.isA(ArrayList.class), EasyMock.isA(ArrayList.class));
+      sm.loadMessages(EasyMock.isA(PostOfficeImpl.class), EasyMock.isA(Map.class));
+      PacketDispatcher pd = EasyMock.createMock(PacketDispatcher.class);
+      EasyMock.expect(rs.getDispatcher()).andReturn(pd);
+      pd.register(EasyMock.isA(MessagingServerPacketHandler.class));
+      
+      EasyMock.replay(sm, rs, pd);
+      
+      assertFalse(server.isStarted());
+      
+      server.start();
+      
+      assertTrue(server.isStarted());
+      
+      EasyMock.verify(sm, rs, pd);
+      
+      EasyMock.reset(sm, rs, pd);
+      
+      //Starting again should do nothing
+      
+      EasyMock.replay(sm, rs, pd);
+      
+      server.start();
+      
+      assertTrue(server.isStarted());
+      
+      EasyMock.verify(sm, rs, pd);
+      
+      EasyMock.reset(sm, rs, pd);
+      
+      //Can't set the plugins when server is started
+      
+      try
+      {
+         server.setConfiguration(new ConfigurationImpl());
+         fail("Should throw exception");
+      }
+      catch (IllegalStateException e)
+      {
+         //Ok
+      }
+      
+      try
+      {
+         server.setStorageManager(sm);
+         fail("Should throw exception");
+      }
+      catch (IllegalStateException e)
+      {
+         //Ok
+      }
+      
+      try
+      {
+         server.setRemotingService(rs);
+         fail("Should throw exception");
+      }
+      catch (IllegalStateException e)
+      {
+         //Ok
+      }
+      
+      try
+      {
+         server.setSecurityManager(sem);
+         fail("Should throw exception");
+      }
+      catch (IllegalStateException e)
+      {
+         //Ok
+      }
+      
+      EasyMock.expect(rs.getDispatcher()).andReturn(pd);
+      pd.unregister(0);
+      rs.removeRemotingSessionListener(EasyMock.isA(ConnectionManagerImpl.class));
+      
+      EasyMock.replay(sm, rs, pd);
+      
+      server.stop();
+      
+      assertFalse(server.isStarted());
+      
+      EasyMock.verify(sm, rs, pd);
+      
+      EasyMock.reset(sm, rs, pd);
+      
+      //Stopping again should do nothing
+      
+      EasyMock.replay(sm, rs, pd);
+      
+      server.stop();
+      
+      assertFalse(server.isStarted());
+      
+      EasyMock.verify(sm, rs, pd);
+   }
+   
+   public void testCreateConnectionIncompatibleVersion() throws Exception
+   {
+      Version version = VersionLoader.load();
+      
+      MessagingServer server = new MessagingServerImpl();
+                  
+      try
+      {
+         server.createConnection("hghgh", "hghggh", version.getIncrementingVersion() + 1, null);
+         fail("Should throw exception");
+      }
+      catch (MessagingException e)
+      {
+         assertEquals(MessagingException.INCOMPATIBLE_CLIENT_SERVER_VERSIONS, e.getCode());
+      }            
+   }
+   
+   public void testCreateConnectionFailAuthentication() throws Exception
+   {      
+      MessagingServer server = new MessagingServerImpl();
+          
+      server.setConfiguration(new ConfigurationImpl());
+            
+      StorageManager sm = EasyMock.createMock(StorageManager.class);
+      
+      server.setStorageManager(sm);
+      
+      RemotingService rs = EasyMock.createMock(RemotingService.class);
+      
+      server.setRemotingService(rs);
+      
+      JBMSecurityManager sem = new JBMSecurityManager()
+      {
+         public boolean validateUser(String user, String password)
+         {
+            return false;
+         }
+
+         public boolean validateUserAndRole(String user, String password, Set<Role> roles, CheckType checkType)
+         {
+            return false;
+         }
+      };
+      
+      server.setSecurityManager(sem);
+      
+      rs.addRemotingSessionListener(EasyMock.isA(ConnectionManagerImpl.class));
+      sm.loadBindings(EasyMock.isA(QueueFactoryImpl.class), EasyMock.isA(ArrayList.class), EasyMock.isA(ArrayList.class));
+      sm.loadMessages(EasyMock.isA(PostOfficeImpl.class), EasyMock.isA(Map.class));
+      PacketDispatcher pd = EasyMock.createMock(PacketDispatcher.class);
+      EasyMock.expect(rs.getDispatcher()).andReturn(pd);
+      pd.register(EasyMock.isA(MessagingServerPacketHandler.class));      
+      EasyMock.expect(sm.isStarted()).andStubReturn(true);
+      EasyMock.expect(rs.isStarted()).andStubReturn(true);
+      
+      EasyMock.replay(rs, sm, pd);
+      
+      server.start();
+      
+      EasyMock.verify(rs, sm, pd);
+      
+      
+      try
+      {
+         server.createConnection("hjhjhj", "jkkjj", 43, null);
+         fail("Should throw exception");
+      }
+      catch (MessagingException e)
+      {
+         assertEquals(MessagingException.SECURITY_EXCEPTION, e.getCode());
+      }
+   }
+   
+   public void testCreateConnectionOK() throws Exception
+   {      
+      MessagingServer server = new MessagingServerImpl();
+          
+      server.setConfiguration(new ConfigurationImpl());
+            
+      StorageManager sm = EasyMock.createMock(StorageManager.class);
+      
+      server.setStorageManager(sm);
+      
+      RemotingService rs = EasyMock.createMock(RemotingService.class);
+      
+      server.setRemotingService(rs);
+      
+      JBMSecurityManager sem = new JBMSecurityManager()
+      {
+         public boolean validateUser(String user, String password)
+         {
+            return true;
+         }
+
+         public boolean validateUserAndRole(String user, String password, Set<Role> roles, CheckType checkType)
+         {
+            return true;
+         }
+      };
+      
+      server.setSecurityManager(sem);
+      
+      rs.addRemotingSessionListener(EasyMock.isA(ConnectionManagerImpl.class));
+      sm.loadBindings(EasyMock.isA(QueueFactoryImpl.class), EasyMock.isA(ArrayList.class), EasyMock.isA(ArrayList.class));
+      sm.loadMessages(EasyMock.isA(PostOfficeImpl.class), EasyMock.isA(Map.class));
+      PacketDispatcher pd = EasyMock.createMock(PacketDispatcher.class);
+      EasyMock.expect(rs.getDispatcher()).andReturn(pd);
+      pd.register(EasyMock.isA(MessagingServerPacketHandler.class));      
+      EasyMock.expect(sm.isStarted()).andStubReturn(true);
+      EasyMock.expect(rs.isStarted()).andStubReturn(true);
+      
+      
+      EasyMock.expect(rs.getDispatcher()).andReturn(pd);
+      final long id = 129812;
+      EasyMock.expect(pd.generateID()).andReturn(id);
+      EasyMock.expect(rs.getDispatcher()).andReturn(pd);
+      pd.register(EasyMock.isA(ServerConnectionPacketHandler.class));
+      
+      PacketReturner returner = EasyMock.createStrictMock(PacketReturner.class);
+      final long sessionID = 1092812;
+      EasyMock.expect(returner.getSessionID()).andReturn(sessionID);
+      
+      EasyMock.replay(rs, sm, pd, returner);
+      
+      server.start();
+      final String username = "okasokas";
+      final String password = "oksokasws";
+ 
+      CreateConnectionResponse resp = server.createConnection(username, password, 43, returner);
+      
+      EasyMock.verify(rs, sm, pd, returner);
+      
+      assertEquals(VersionLoader.load(), resp.getServerVersion());
+      assertEquals(id, resp.getConnectionTargetID());     
+      
+      ConnectionManager cm = server.getConnectionManager();
+      
+      List<ServerConnection> conns = cm.getActiveConnections();
+      assertEquals(1, conns.size());
+      ServerConnection conn = conns.get(0);
+      assertEquals(id, conn.getID());
+      assertTrue(server == conn.getServer());
+      assertEquals(username, conn.getUsername());
+      assertEquals(password, conn.getPassword());
+      assertEquals(sessionID, conn.getClientSessionID());
+   }
+   
+  
+}

Added: trunk/tests/src/org/jboss/messaging/tests/unit/core/server/impl/ServerConnectionImplTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/unit/core/server/impl/ServerConnectionImplTest.java	                        (rev 0)
+++ trunk/tests/src/org/jboss/messaging/tests/unit/core/server/impl/ServerConnectionImplTest.java	2008-06-18 16:38:43 UTC (rev 4518)
@@ -0,0 +1,457 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.messaging.tests.unit.core.server.impl;
+
+import org.easymock.EasyMock;
+import org.jboss.messaging.core.logging.Logger;
+import org.jboss.messaging.core.postoffice.Binding;
+import org.jboss.messaging.core.postoffice.PostOffice;
+import org.jboss.messaging.core.remoting.PacketDispatcher;
+import org.jboss.messaging.core.remoting.PacketReturner;
+import org.jboss.messaging.core.remoting.RemotingService;
+import org.jboss.messaging.core.remoting.impl.wireformat.ConnectionCreateSessionResponseMessage;
+import org.jboss.messaging.core.server.ConnectionManager;
+import org.jboss.messaging.core.server.MessagingServer;
+import org.jboss.messaging.core.server.Queue;
+import org.jboss.messaging.core.server.ServerSession;
+import org.jboss.messaging.core.server.impl.ServerConnectionImpl;
+import org.jboss.messaging.core.server.impl.ServerSessionPacketHandler;
+import org.jboss.messaging.tests.util.UnitTestCase;
+import org.jboss.messaging.util.SimpleString;
+
+/**
+ * 
+ * A ServerConnectionImplTest
+ * 
+ * @author <a href="mailto:tim.fox at jboss.com">Tim Fox</a>
+ *
+ */
+public class ServerConnectionImplTest extends UnitTestCase
+{
+   private static final Logger log = Logger.getLogger(ServerConnectionImplTest.class);
+   
+   public void testConstructor() throws Exception
+   {
+      createConnection(91821982, "oaksaoks", "asokdasod", 9120912);                  
+   }
+         
+   public void testAddRemoveTemporaryDestinations() throws Exception
+   {
+      ServerConnectionImpl conn = createConnection(8172817, "okooko", "oaksaoks", 812981);   
+      
+      final SimpleString address1 = new SimpleString("ashaijsaisj");
+      final SimpleString address2 = new SimpleString("iuhasiasa");
+      final SimpleString address3 = new SimpleString("owqdqwoijd");
+      
+      assertEquals(0, conn.getTemporaryDestinations().size());
+      conn.addTemporaryDestination(address1);
+      assertEquals(1, conn.getTemporaryDestinations().size());
+      assertTrue(conn.getTemporaryDestinations().contains(address1));
+      conn.addTemporaryDestination(address2);
+      assertEquals(2, conn.getTemporaryDestinations().size());
+      assertTrue(conn.getTemporaryDestinations().contains(address1));
+      assertTrue(conn.getTemporaryDestinations().contains(address2));
+      conn.addTemporaryDestination(address3);
+      assertEquals(3, conn.getTemporaryDestinations().size());
+      assertTrue(conn.getTemporaryDestinations().contains(address1));
+      assertTrue(conn.getTemporaryDestinations().contains(address2));
+      assertTrue(conn.getTemporaryDestinations().contains(address3));
+      try
+      {
+         conn.addTemporaryDestination(address3);
+         fail("Should throw exception");
+      }
+      catch (IllegalStateException e)
+      {
+         //Ok
+      }
+      assertEquals(3, conn.getTemporaryDestinations().size());
+      
+      conn.removeTemporaryDestination(address3);
+      assertEquals(2, conn.getTemporaryDestinations().size());
+      assertTrue(conn.getTemporaryDestinations().contains(address1));
+      assertTrue(conn.getTemporaryDestinations().contains(address2));
+      conn.removeTemporaryDestination(address2);
+      assertEquals(1, conn.getTemporaryDestinations().size());
+      assertTrue(conn.getTemporaryDestinations().contains(address1));
+      conn.removeTemporaryDestination(address1);
+      assertEquals(0, conn.getTemporaryDestinations().size());
+      
+      try
+      {
+         conn.removeTemporaryDestination(address1);
+         fail("Should throw exeception");
+      }
+      catch (IllegalStateException e)
+      {
+         //Ok
+      }
+      
+      try
+      {
+         conn.removeTemporaryDestination(new SimpleString("iwjwiojjoiqwdjqw"));
+         fail("Should throw exeception");
+      }
+      catch (IllegalStateException e)
+      {
+         //Ok
+      }        
+   }
+   
+   public void testAddRemoveTemporaryQueues() throws Exception
+   {
+      ServerConnectionImpl conn = createConnection(8172178, "ijijji", "aoksoaks", 99182);   
+      
+      final Queue queue1 = EasyMock.createStrictMock(Queue.class);
+      final Queue queue2 = EasyMock.createStrictMock(Queue.class);
+      final Queue queue3 = EasyMock.createStrictMock(Queue.class);
+      
+      assertEquals(0, conn.getTemporaryQueues().size());
+      conn.addTemporaryQueue(queue1);
+      assertEquals(1, conn.getTemporaryQueues().size());
+      assertTrue(conn.getTemporaryQueues().contains(queue1));
+      conn.addTemporaryQueue(queue2);
+      assertEquals(2, conn.getTemporaryQueues().size());
+      assertTrue(conn.getTemporaryQueues().contains(queue1));
+      assertTrue(conn.getTemporaryQueues().contains(queue2));
+      conn.addTemporaryQueue(queue3);
+      assertEquals(3, conn.getTemporaryQueues().size());
+      assertTrue(conn.getTemporaryQueues().contains(queue1));
+      assertTrue(conn.getTemporaryQueues().contains(queue2));
+      assertTrue(conn.getTemporaryQueues().contains(queue3));
+      try
+      {
+         conn.addTemporaryQueue(queue3);
+         fail("Should throw exception");
+      }
+      catch (IllegalStateException e)
+      {
+         //Ok
+      }
+      assertEquals(3, conn.getTemporaryQueues().size());
+      
+      conn.removeTemporaryQueue(queue3);
+      assertEquals(2, conn.getTemporaryQueues().size());
+      assertTrue(conn.getTemporaryQueues().contains(queue1));
+      assertTrue(conn.getTemporaryQueues().contains(queue2));
+      conn.removeTemporaryQueue(queue2);
+      assertEquals(1, conn.getTemporaryQueues().size());
+      assertTrue(conn.getTemporaryQueues().contains(queue1));
+      conn.removeTemporaryQueue(queue1);
+      assertEquals(0, conn.getTemporaryQueues().size());
+      
+      try
+      {
+         conn.removeTemporaryQueue(queue1);
+         fail("Should throw exeception");
+      }
+      catch (IllegalStateException e)
+      {
+         //Ok
+      }
+      
+      try
+      {
+         conn.removeTemporaryQueue(EasyMock.createStrictMock(Queue.class));
+         fail("Should throw exeception");
+      }
+      catch (IllegalStateException e)
+      {
+         //Ok
+      }
+        
+   }
+   
+   public void testCreateSession() throws Exception
+   {
+      testCreateSession(false, false, false);
+      testCreateSession(true, true, true);
+   }
+   
+   public void testStartStop() throws Exception
+   {
+      MessagingServer server = EasyMock.createStrictMock(MessagingServer.class);
+      
+      ServerSession session1 = EasyMock.createStrictMock(ServerSession.class);
+      ServerSession session2 = EasyMock.createStrictMock(ServerSession.class);
+      ServerSession session3 = EasyMock.createStrictMock(ServerSession.class);
+      
+      RemotingService remoting = EasyMock.createStrictMock(RemotingService.class);
+      PacketDispatcher pd = EasyMock.createStrictMock(PacketDispatcher.class);
+      PostOffice po = EasyMock.createStrictMock(PostOffice.class);
+      ConnectionManager cm = EasyMock.createStrictMock(ConnectionManager.class);
+      
+      EasyMock.expect(server.getRemotingService()).andReturn(remoting);
+      EasyMock.expect(remoting.getDispatcher()).andReturn(pd);
+      final long id = 91829182;
+      EasyMock.expect(pd.generateID()).andReturn(id);
+      EasyMock.expect(server.getPostOffice()).andReturn(po);
+      EasyMock.expect(server.getConnectionManager()).andReturn(cm);
+      
+      EasyMock.replay(server, remoting, pd, po, cm);
+      
+      ServerConnectionImpl conn = new ServerConnectionImpl(server, "uyuiiu", "iuiui", 87788778);
+      
+      EasyMock.verify(server, remoting, pd, po, cm);
+      
+      conn.addSession(session1);
+      conn.addSession(session2);
+      conn.addSession(session3);
+      
+      assertEquals(3, conn.getSessions().size());
+      
+      assertFalse(conn.isStarted());
+      
+      EasyMock.reset(server, remoting, pd, po, cm);
+      
+      session1.setStarted(true);
+      session2.setStarted(true);
+      session3.setStarted(true);
+      
+      EasyMock.replay(server, remoting, pd, po, cm, session1, session2, session3);
+      
+      conn.start();
+      
+      assertTrue(conn.isStarted());
+      
+      EasyMock.verify(server, remoting, pd, po, cm, session1, session2, session3);
+      
+      EasyMock.reset(server, remoting, pd, po, cm, session1, session2, session3);
+      
+      session1.setStarted(false);
+      session2.setStarted(false);
+      session3.setStarted(false);
+      
+      EasyMock.replay(server, remoting, pd, po, cm, session1, session2, session3);
+            
+      conn.stop();
+      
+      EasyMock.verify(server, remoting, pd, po, cm, session1, session2, session3);
+      
+      assertFalse(conn.isStarted());      
+   }
+   
+   public void testClose() throws Exception
+   {
+      MessagingServer server = EasyMock.createStrictMock(MessagingServer.class);
+      
+      ServerSession session1 = EasyMock.createStrictMock(ServerSession.class);
+      ServerSession session2 = EasyMock.createStrictMock(ServerSession.class);
+      ServerSession session3 = EasyMock.createStrictMock(ServerSession.class);
+      
+      RemotingService remoting = EasyMock.createStrictMock(RemotingService.class);
+      PacketDispatcher pd = EasyMock.createStrictMock(PacketDispatcher.class);
+      PostOffice po = EasyMock.createStrictMock(PostOffice.class);
+      ConnectionManager cm = EasyMock.createStrictMock(ConnectionManager.class);
+      
+      EasyMock.expect(server.getRemotingService()).andReturn(remoting);
+      EasyMock.expect(remoting.getDispatcher()).andReturn(pd);
+      final long id = 91829182;
+      EasyMock.expect(pd.generateID()).andReturn(id);
+      EasyMock.expect(server.getPostOffice()).andReturn(po);
+      EasyMock.expect(server.getConnectionManager()).andReturn(cm);
+      
+      EasyMock.replay(server, remoting, pd, po, cm);
+      
+      final long remotingClientSessionID = 81728172;
+      
+      ServerConnectionImpl conn = new ServerConnectionImpl(server, "uyuiiu", "iuiui", remotingClientSessionID);
+      
+      EasyMock.verify(server, remoting, pd, po, cm);
+      
+      conn.addSession(session1);
+      conn.addSession(session2);
+      conn.addSession(session3);
+      
+      SimpleString address1 = new SimpleString("uyuyyu");
+      SimpleString address2 = new SimpleString("ioajiojad");
+      SimpleString address3 = new SimpleString("isjqijs");
+      conn.addTemporaryDestination(address1);
+      conn.addTemporaryDestination(address2);
+      conn.addTemporaryDestination(address3);
+      
+      Queue queue1 = EasyMock.createMock(Queue.class);
+      Queue queue2 = EasyMock.createMock(Queue.class);
+      Queue queue3 = EasyMock.createMock(Queue.class);
+      conn.addTemporaryQueue(queue1);
+      conn.addTemporaryQueue(queue2);
+      conn.addTemporaryQueue(queue3);
+      
+      assertEquals(3, conn.getSessions().size());
+      assertEquals(3, conn.getTemporaryDestinations().size());
+      assertEquals(3, conn.getTemporaryQueues().size());
+      
+      assertFalse(conn.isClosed());
+      
+      EasyMock.reset(server, remoting, pd, po, cm);
+      
+      session1.close();
+      session2.close();
+      session3.close();
+      
+      EasyMock.expect(queue1.getName()).andReturn(new SimpleString("uyuyh1"));
+      EasyMock.expect(queue2.getName()).andReturn(new SimpleString("uyuyh2"));
+      EasyMock.expect(queue3.getName()).andReturn(new SimpleString("uyuyh3"));
+      
+      EasyMock.checkOrder(po, false);
+      
+      Binding binding1 = EasyMock.createStrictMock(Binding.class);
+      Binding binding2 = EasyMock.createStrictMock(Binding.class);
+      Binding binding3 = EasyMock.createStrictMock(Binding.class);
+      
+      EasyMock.expect(po.getBinding(new SimpleString("uyuyh1"))).andReturn(binding1);
+      EasyMock.expect(po.getBinding(new SimpleString("uyuyh2"))).andReturn(binding2);
+      EasyMock.expect(po.getBinding(new SimpleString("uyuyh3"))).andReturn(binding3);
+      
+      EasyMock.expect(binding1.getAddress()).andReturn(new SimpleString("ahshs1"));
+      EasyMock.expect(binding2.getAddress()).andReturn(new SimpleString("ahshs2"));
+      EasyMock.expect(binding3.getAddress()).andReturn(new SimpleString("ahshs3"));
+            
+      EasyMock.expect(po.removeBinding(new SimpleString("uyuyh1"))).andReturn(null);
+      EasyMock.expect(po.removeBinding(new SimpleString("uyuyh2"))).andReturn(null);
+      EasyMock.expect(po.removeBinding(new SimpleString("uyuyh3"))).andReturn(null);
+      
+      EasyMock.expect(po.removeDestination(new SimpleString("ahshs1"), true)).andReturn(true);
+      EasyMock.expect(po.removeDestination(new SimpleString("ahshs2"), true)).andReturn(true);
+      EasyMock.expect(po.removeDestination(new SimpleString("ahshs3"), true)).andReturn(true);
+      
+      EasyMock.expect(po.removeDestination(address1, true)).andReturn(true);
+      EasyMock.expect(po.removeDestination(address2, true)).andReturn(true);
+      EasyMock.expect(po.removeDestination(address3, true)).andReturn(true);
+      
+      EasyMock.expect(cm.unregisterConnection(remotingClientSessionID, conn)).andReturn(null);
+      
+      pd.unregister(id);
+      
+      EasyMock.replay(server, remoting, pd, po, cm, session1, session2, session3, queue1, queue2, queue3,
+                      binding1, binding2, binding3);
+      
+      conn.close();
+      
+      assertTrue(conn.isClosed());
+      
+      EasyMock.verify(server, remoting, pd, po, cm, session1, session2, session3, queue1, queue2, queue3,
+            binding1, binding2, binding3);
+      
+      EasyMock.reset(server, remoting, pd, po, cm, session1, session2, session3, queue1, queue2, queue3,
+            binding1, binding2, binding3);   
+      
+      //Closing again should do nothing
+      
+      EasyMock.replay(server, remoting, pd, po, cm, session1, session2, session3, queue1, queue2, queue3,
+            binding1, binding2, binding3);
+      
+      conn.close();
+      
+      assertTrue(conn.isClosed());
+      
+      EasyMock.verify(server, remoting, pd, po, cm, session1, session2, session3, queue1, queue2, queue3,
+            binding1, binding2, binding3);   
+   }
+   
+   // Private ----------------------------------------------------------------------------------------
+   
+   private void testCreateSession(final boolean xa, final boolean autoCommitSends, final boolean autoCommitAcks) throws Exception
+   {
+      MessagingServer server = EasyMock.createStrictMock(MessagingServer.class);
+                  
+      final ServerSession session = EasyMock.createStrictMock(ServerSession.class);
+                  
+      RemotingService remoting = EasyMock.createStrictMock(RemotingService.class);
+      PacketDispatcher pd = EasyMock.createStrictMock(PacketDispatcher.class);
+      PostOffice po = EasyMock.createStrictMock(PostOffice.class);
+      ConnectionManager cm = EasyMock.createStrictMock(ConnectionManager.class);
+      
+      EasyMock.expect(server.getRemotingService()).andReturn(remoting);
+      EasyMock.expect(remoting.getDispatcher()).andReturn(pd);
+      final long id = 91829182;
+      EasyMock.expect(pd.generateID()).andReturn(id);
+      EasyMock.expect(server.getPostOffice()).andReturn(po);
+      EasyMock.expect(server.getConnectionManager()).andReturn(cm);
+      
+      pd.register(EasyMock.isA(ServerSessionPacketHandler.class));
+      
+      final long sessionID = 18927;
+      EasyMock.expect(session.getID()).andReturn(sessionID);
+      
+      EasyMock.replay(server, remoting, pd, po, cm, session);
+    
+      ServerConnectionImpl conn = new ServerConnectionImpl(server, "uyuiiu", "iuiui", 87788778)
+      {
+         protected ServerSession doCreateSession(final boolean p_autoCommitSends, final boolean p_autoCommitAcks,
+               final boolean p_xa, final PacketReturner p_returner)
+         throws Exception
+         {            
+            assertEquals(autoCommitSends, p_autoCommitSends);
+            assertEquals(autoCommitAcks, p_autoCommitAcks);
+            assertEquals(xa, p_xa);
+            return session;
+         }
+      };
+      
+      PacketReturner returner = EasyMock.createStrictMock(PacketReturner.class);
+    
+      ConnectionCreateSessionResponseMessage resp = conn.createSession(xa, autoCommitSends, autoCommitAcks, returner);
+      
+      EasyMock.verify(server, remoting, pd, po, cm, session);      
+      
+      assertEquals(sessionID, resp.getSessionID());
+      
+      assertEquals(1, conn.getSessions().size());
+      assertTrue(session == conn.getSessions().iterator().next());
+   }
+   
+   private ServerConnectionImpl createConnection(final long id, final String username, final String password,
+         final long clientSessionID)
+   {
+      MessagingServer server = EasyMock.createStrictMock(MessagingServer.class);
+      RemotingService remoting = EasyMock.createStrictMock(RemotingService.class);
+      PacketDispatcher pd = EasyMock.createStrictMock(PacketDispatcher.class);
+      PostOffice po = EasyMock.createStrictMock(PostOffice.class);
+      ConnectionManager cm = EasyMock.createStrictMock(ConnectionManager.class);
+      
+      EasyMock.expect(server.getRemotingService()).andReturn(remoting);
+      EasyMock.expect(remoting.getDispatcher()).andReturn(pd);
+      EasyMock.expect(pd.generateID()).andReturn(id);
+      EasyMock.expect(server.getPostOffice()).andReturn(po);
+      EasyMock.expect(server.getConnectionManager()).andReturn(cm);
+      
+      EasyMock.replay(server, remoting, pd, po, cm);
+      
+      ServerConnectionImpl conn = new ServerConnectionImpl(server, username, password,
+                     clientSessionID);
+      
+      EasyMock.verify(server, remoting, pd, po, cm);
+      
+      assertTrue(server == conn.getServer());
+      assertEquals(username, conn.getUsername());
+      assertEquals(password, conn.getPassword());
+      assertEquals(clientSessionID, conn.getClientSessionID());
+      assertEquals(id, conn.getID());
+      
+      assertTrue(conn.getSessions().isEmpty());
+      assertTrue(conn.getTemporaryDestinations().isEmpty());
+      assertTrue(conn.getTemporaryQueues().isEmpty());
+      
+      return conn;
+   }
+}




More information about the jboss-cvs-commits mailing list