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 --------------------------------------------------------