[hornetq-commits] JBoss hornetq SVN: r9805 - in branches/hornetq-416: src/main/org/hornetq/core/server/impl and 2 other directories.

do-not-reply at jboss.org do-not-reply at jboss.org
Thu Oct 21 10:40:43 EDT 2010


Author: gaohoward
Date: 2010-10-21 10:40:43 -0400 (Thu, 21 Oct 2010)
New Revision: 9805

Added:
   branches/hornetq-416/src/main/org/hornetq/api/jms/management/JMSSessionInfo.java
Modified:
   branches/hornetq-416/src/main/org/hornetq/api/jms/management/JMSConnectionInfo.java
   branches/hornetq-416/src/main/org/hornetq/api/jms/management/JMSServerControl.java
   branches/hornetq-416/src/main/org/hornetq/core/server/impl/ServerSessionImpl.java
   branches/hornetq-416/src/main/org/hornetq/jms/management/impl/JMSServerControlImpl.java
   branches/hornetq-416/tests/src/org/hornetq/tests/integration/jms/server/management/JMSServerControl2Test.java
   branches/hornetq-416/tests/src/org/hornetq/tests/integration/jms/server/management/JMSServerControlUsingJMSTest.java
Log:
some test


Modified: branches/hornetq-416/src/main/org/hornetq/api/jms/management/JMSConnectionInfo.java
===================================================================
--- branches/hornetq-416/src/main/org/hornetq/api/jms/management/JMSConnectionInfo.java	2010-10-20 22:45:48 UTC (rev 9804)
+++ branches/hornetq-416/src/main/org/hornetq/api/jms/management/JMSConnectionInfo.java	2010-10-21 14:40:43 UTC (rev 9805)
@@ -36,9 +36,10 @@
    
    private final long creationTime;
    
-   // TODO
-   // user name
-   // client ID
+   private final String clientID;
+   
+   private final String username;
+   
 
    // Static --------------------------------------------------------
    
@@ -49,9 +50,14 @@
       for (int i = 0; i < array.length(); i++)
       {
          JSONObject obj = array.getJSONObject(i);
+         String cid = obj.isNull("clientID") ? null : obj.getString("clientID");
+         String uname = obj.isNull("principal") ? null : obj.getString("principal");
+         
          JMSConnectionInfo info = new JMSConnectionInfo(obj.getString("connectionID"),
                                                         obj.getString("clientAddress"),
-                                                        obj.getLong("creationTime"));
+                                                        obj.getLong("creationTime"),
+                                                        cid,
+                                                        uname);
          infos[i] = info;
       }
       return infos;
@@ -61,11 +67,15 @@
 
    private JMSConnectionInfo(final String connectionID,
                              final String clientAddress,
-                             final long creationTime)
+                             final long creationTime,
+                             final String clientID,
+                             final String username)
    {
       this.connectionID = connectionID;
       this.clientAddress = clientAddress;
       this.creationTime = creationTime;
+      this.clientID = clientID;
+      this.username = username;
    }
    
    // Public --------------------------------------------------------
@@ -85,6 +95,16 @@
       return creationTime;
    }
    
+   public String getClientID()
+   {
+      return clientID;
+   }
+   
+   public String getUsername()
+   {
+      return username;
+   }
+   
    // Package protected ---------------------------------------------
 
    // Protected -----------------------------------------------------

Modified: branches/hornetq-416/src/main/org/hornetq/api/jms/management/JMSServerControl.java
===================================================================
--- branches/hornetq-416/src/main/org/hornetq/api/jms/management/JMSServerControl.java	2010-10-20 22:45:48 UTC (rev 9804)
+++ branches/hornetq-416/src/main/org/hornetq/api/jms/management/JMSServerControl.java	2010-10-21 14:40:43 UTC (rev 9805)
@@ -270,4 +270,10 @@
     */
    @Operation(desc = "Gets the sessions creation time", impact = MBeanOperationInfo.INFO)
    String getSessionCreationTime(@Parameter(desc = "session name", name = "sessionID") String sessionID) throws Exception;
+   
+   /**
+    * Lists all the sessions IDs for the specified connection ID.
+    */
+   @Operation(desc = "List the sessions for the given connectionID", impact = MBeanOperationInfo.INFO)
+   String listSessionsAsJSON(@Parameter(desc = "a connection ID", name = "connectionID") String connectionID) throws Exception;
 }

Added: branches/hornetq-416/src/main/org/hornetq/api/jms/management/JMSSessionInfo.java
===================================================================
--- branches/hornetq-416/src/main/org/hornetq/api/jms/management/JMSSessionInfo.java	                        (rev 0)
+++ branches/hornetq-416/src/main/org/hornetq/api/jms/management/JMSSessionInfo.java	2010-10-21 14:40:43 UTC (rev 9805)
@@ -0,0 +1,63 @@
+/*
+ * Copyright 2010 Red Hat, Inc.
+ * Red Hat 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.hornetq.api.jms.management;
+
+import org.hornetq.utils.json.JSONArray;
+import org.hornetq.utils.json.JSONException;
+import org.hornetq.utils.json.JSONObject;
+
+/**
+ * A JMSSessionInfo
+ *
+ * @author howard
+ *
+ *
+ */
+public class JMSSessionInfo
+{
+   private final String sessionID;
+   
+   private final long creationTime;
+   
+   public JMSSessionInfo(String sessionID, long creationTime)
+   {
+      this.sessionID = sessionID;
+      this.creationTime = creationTime;
+   }
+
+   public static JMSSessionInfo[] from(final String jsonString) throws JSONException
+   {
+      JSONArray array = new JSONArray(jsonString);
+      JMSSessionInfo[] infos = new JMSSessionInfo[array.length()];
+      for (int i = 0; i < array.length(); i++)
+      {
+         JSONObject obj = array.getJSONObject(i);
+
+         JMSSessionInfo info = new JMSSessionInfo(obj.getString("sessionID"),
+                                                        obj.getLong("creationTime"));
+         infos[i] = info;
+      }
+      return infos;
+   }
+   
+   public String getSessionID()
+   {
+      return sessionID;
+   }
+
+   public long getCreationTime()
+   {
+      return creationTime;
+   }
+}

Modified: branches/hornetq-416/src/main/org/hornetq/core/server/impl/ServerSessionImpl.java
===================================================================
--- branches/hornetq-416/src/main/org/hornetq/core/server/impl/ServerSessionImpl.java	2010-10-20 22:45:48 UTC (rev 9804)
+++ branches/hornetq-416/src/main/org/hornetq/core/server/impl/ServerSessionImpl.java	2010-10-21 14:40:43 UTC (rev 9805)
@@ -1229,7 +1229,12 @@
 
    public String getLastSentMessageID(String address)
    {
-      return targetAddressInfos.get(SimpleString.toSimpleString(address)).toString();
+      UUID id = targetAddressInfos.get(SimpleString.toSimpleString(address));
+      if (id != null)
+      {
+         return id.toString();
+      }
+      return null;
    }
 
    public long getCreationTime()

Modified: branches/hornetq-416/src/main/org/hornetq/jms/management/impl/JMSServerControlImpl.java
===================================================================
--- branches/hornetq-416/src/main/org/hornetq/jms/management/impl/JMSServerControlImpl.java	2010-10-20 22:45:48 UTC (rev 9804)
+++ branches/hornetq-416/src/main/org/hornetq/jms/management/impl/JMSServerControlImpl.java	2010-10-21 14:40:43 UTC (rev 9805)
@@ -987,4 +987,30 @@
       }
       return null;
    }
+
+   public String listSessionsAsJSON(final String connectionID) throws Exception
+   {
+      checkStarted();
+
+      clearIO();
+      
+      JSONArray array = new JSONArray();
+      try
+      {
+         List<ServerSession> sessions = server.getHornetQServer().getSessions(connectionID);
+         for (ServerSession sess : sessions)
+         {
+            JSONObject obj = new JSONObject();
+            obj.put("sessionID", sess.getName());
+            obj.put("creationTime", sess.getCreationTime());
+            array.put(obj);
+         }
+      }
+      finally
+      {
+         blockOnIO();
+      }
+      return array.toString();
+   }
+
 }

Modified: branches/hornetq-416/tests/src/org/hornetq/tests/integration/jms/server/management/JMSServerControl2Test.java
===================================================================
--- branches/hornetq-416/tests/src/org/hornetq/tests/integration/jms/server/management/JMSServerControl2Test.java	2010-10-20 22:45:48 UTC (rev 9804)
+++ branches/hornetq-416/tests/src/org/hornetq/tests/integration/jms/server/management/JMSServerControl2Test.java	2010-10-21 14:40:43 UTC (rev 9805)
@@ -22,10 +22,12 @@
 import javax.jms.ExceptionListener;
 import javax.jms.JMSException;
 import javax.jms.MessageConsumer;
+import javax.jms.MessageProducer;
 import javax.jms.Queue;
 import javax.jms.QueueBrowser;
 import javax.jms.Session;
 import javax.jms.TemporaryTopic;
+import javax.jms.TextMessage;
 import javax.jms.Topic;
 
 import junit.framework.Assert;
@@ -35,6 +37,7 @@
 import org.hornetq.api.jms.management.JMSConnectionInfo;
 import org.hornetq.api.jms.management.JMSConsumerInfo;
 import org.hornetq.api.jms.management.JMSServerControl;
+import org.hornetq.api.jms.management.JMSSessionInfo;
 import org.hornetq.core.config.Configuration;
 import org.hornetq.core.config.impl.ConfigurationImpl;
 import org.hornetq.core.logging.Logger;
@@ -348,6 +351,101 @@
          }
       }
    }
+   
+   //https://jira.jboss.org/browse/HORNETQ-416
+   public void testProducerInfo() throws Exception
+   {
+      String queueName = RandomUtil.randomString();
+
+      System.out.println("queueName is: " + queueName);
+      
+      try
+      {
+         startHornetQServer(NettyAcceptorFactory.class.getName());
+         serverManager.createQueue(false, queueName, null, true, queueName);
+         Queue queue = HornetQJMSClient.createQueue(queueName);
+
+         JMSServerControl control = createManagementControl();
+
+         long startTime = System.currentTimeMillis();
+
+         ConnectionFactory cf1 = JMSUtil.createFactory(NettyConnectorFactory.class.getName(),
+                                                       JMSServerControl2Test.CONNECTION_TTL,
+                                                       JMSServerControl2Test.PING_PERIOD);
+         Connection connection = cf1.createConnection();
+         Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
+         
+         MessageProducer producer = session.createProducer(queue);
+         
+         for (int i = 0; i < 10; i++)
+         {
+            TextMessage msg = session.createTextMessage("mymessage-" + i);
+            producer.send(msg);
+         }
+
+         connection.start();
+         
+         // create a regular message consumer
+         MessageConsumer consumer = session.createConsumer(queue);
+
+         TextMessage receivedMsg = null;
+         for (int i = 0; i < 10; i++)
+         {
+            receivedMsg = (TextMessage)consumer.receive(3000);
+            System.out.println("receiveMsg: " + receivedMsg);
+         }
+         
+         String lastMsgID = receivedMsg.getJMSMessageID();
+         System.out.println("Last mid: " + lastMsgID);
+         
+         String jsonStr = control.listConnectionsAsJSON();
+         JMSConnectionInfo[] infos = JMSConnectionInfo.from(jsonStr);
+         
+         JMSConnectionInfo connInfo = infos[0];
+         
+         String sessionsStr = control.listSessionsAsJSON(connInfo.getConnectionID());
+         JMSSessionInfo[] sessInfos = JMSSessionInfo.from(sessionsStr);
+         
+         assertTrue(sessInfos.length > 0);
+         boolean lastMsgFound = false;
+         for (JMSSessionInfo sInfo : sessInfos)
+         {
+            System.out.println("Session name: " + sInfo.getSessionID());
+            assertNotNull(sInfo.getSessionID());
+            long createTime = sInfo.getCreationTime();
+            assertTrue(startTime <= createTime && createTime <= System.currentTimeMillis());
+            String lastID = control.getLastSentMessageID(sInfo.getSessionID(), "jms.queue." + queueName);
+            if (lastID != null)
+            {
+               assertEquals(lastMsgID, lastID);
+               lastMsgFound = true;
+            }
+         }
+         assertTrue(lastMsgFound);
+
+         consumer.close();
+
+         connection.close();
+      }
+      catch (Exception e)
+      {
+         e.printStackTrace();
+         throw e;
+      }
+      finally
+      {
+         if (serverManager != null)
+         {
+            serverManager.destroyQueue(queueName);
+            serverManager.stop();
+         }
+
+         if (server != null)
+         {
+            server.stop();
+         }
+      }
+   }
    // Package protected ---------------------------------------------
 
    // Protected -----------------------------------------------------
@@ -460,6 +558,8 @@
             assertNotNull(info.getConnectionID());
             assertNotNull(info.getClientAddress());
             assertTrue(startTime <= info.getCreationTime() && info.getCreationTime() <= System.currentTimeMillis());
+            assertNull(info.getClientID());
+            assertNull(info.getUsername());
          }
 
          connection.close();
@@ -470,9 +570,22 @@
 
          waitForConnectionIDs(0, control);
          
+         Connection connection3 = cf2.createConnection("guest", "guest");
+         connection3.setClientID("MyClient");
+         
          jsonStr = control.listConnectionsAsJSON();
          assertNotNull(jsonStr);
+         
          infos = JMSConnectionInfo.from(jsonStr);
+         JMSConnectionInfo info = infos[0];
+         assertEquals("MyClient", info.getClientID());
+         assertEquals("guest", info.getUsername());
+         
+         connection3.close();
+         
+         jsonStr = control.listConnectionsAsJSON();
+         assertNotNull(jsonStr);
+         infos = JMSConnectionInfo.from(jsonStr);
          assertEquals(0, infos.length);
       }
       finally

Modified: branches/hornetq-416/tests/src/org/hornetq/tests/integration/jms/server/management/JMSServerControlUsingJMSTest.java
===================================================================
--- branches/hornetq-416/tests/src/org/hornetq/tests/integration/jms/server/management/JMSServerControlUsingJMSTest.java	2010-10-20 22:45:48 UTC (rev 9804)
+++ branches/hornetq-416/tests/src/org/hornetq/tests/integration/jms/server/management/JMSServerControlUsingJMSTest.java	2010-10-21 14:40:43 UTC (rev 9805)
@@ -298,6 +298,12 @@
             return null;
          }
 
+         public String listSessionsAsJSON(String connectionID) throws Exception
+         {
+            // TODO Auto-generated method stub
+            return null;
+         }
+
       };
    }
    // Public --------------------------------------------------------



More information about the hornetq-commits mailing list