This commit is contained in:
Michael Andre Pearce 2019-04-15 16:46:44 +01:00
commit 65796c9a6b
2 changed files with 37 additions and 14 deletions

View File

@ -18,9 +18,9 @@ package org.apache.activemq.artemis.core.management.impl.view;
import javax.json.JsonObjectBuilder;
import java.util.Date;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.TreeSet;
import org.apache.activemq.artemis.api.core.client.ClientSession;
import org.apache.activemq.artemis.core.management.impl.view.predicate.ConnectionFilterPredicate;
@ -51,7 +51,7 @@ public class ConnectionView extends ActiveMQAbstractView<RemotingConnection> {
public JsonObjectBuilder toJson(RemotingConnection connection) {
List<ServerSession> sessions = server.getSessions(connection.getID().toString());
Set<String> users = new HashSet<>();
Set<String> users = new TreeSet<>();
String jmsSessionClientID = null;
for (ServerSession session : sessions) {
String username = session.getUsername() == null ? "" : session.getUsername();
@ -83,12 +83,12 @@ public class ConnectionView extends ActiveMQAbstractView<RemotingConnection> {
case "remoteAddress":
return connection.getRemoteAddress();
case "users":
Set<String> users = new HashSet<>();
Set<String> users = new TreeSet<>();
for (ServerSession session : sessions) {
String username = session.getUsername() == null ? "" : session.getUsername();
users.add(username);
}
return users;
return StringUtil.joinStringList(users, ",");
case "creationTime":
return new Date(connection.getCreationTime());
case "implementation":

View File

@ -2455,20 +2455,21 @@ public class ActiveMQServerControlTest extends ManagementTestBase {
Thread.sleep(500);
csf3 = (ClientSessionFactoryImpl) createSessionFactory(locator);
ClientSession session1_c1 = csf.createSession();
ClientSession session2_c1 = csf.createSession();
ClientSession session1_c1 = csf.createSession("guest", "guest", false, true, true, locator.isPreAcknowledge(), locator.getAckBatchSize());
ClientSession session2_c1 = csf.createSession("guest", "guest", false, true, true, locator.isPreAcknowledge(), locator.getAckBatchSize());
ClientSession session1_c2 = csf2.createSession();
ClientSession session2_c2 = csf2.createSession();
ClientSession session3_c2 = csf2.createSession();
ClientSession session4_c2 = csf2.createSession();
ClientSession session1_c2 = csf2.createSession("myUser", "myPass", false, true, true, locator.isPreAcknowledge(), locator.getAckBatchSize());
ClientSession session2_c2 = csf2.createSession("myUser", "myPass", false, true, true, locator.isPreAcknowledge(), locator.getAckBatchSize());
ClientSession session3_c2 = csf2.createSession("myUser", "myPass", false, true, true, locator.isPreAcknowledge(), locator.getAckBatchSize());
ClientSession session4_c2 = csf2.createSession("myUser", "myPass", false, true, true, locator.isPreAcknowledge(), locator.getAckBatchSize());
ClientSession session1_c4 = csf3.createSession();
ClientSession session2_c4 = csf3.createSession();
ClientSession session3_c4 = csf3.createSession();
ClientSession session1_c4 = csf3.createSession("myUser", "myPass", false, true, true, locator.isPreAcknowledge(), locator.getAckBatchSize());
ClientSession session2_c4 = csf3.createSession("guest", "guest", false, true, true, locator.isPreAcknowledge(), locator.getAckBatchSize());
ClientSession session3_c4 = csf3.createSession("guest", "guest", false, true, true, locator.isPreAcknowledge(), locator.getAckBatchSize());
String filterString = createJsonFilter("SESSION_COUNT", "GREATER_THAN", "1");
String connectionsAsJsonString = serverControl.listConnections(filterString, 1, 50);
System.err.println(connectionsAsJsonString);
JsonObject connectionsAsJsonObject = JsonUtil.readJsonObject(connectionsAsJsonString);
JsonArray array = (JsonArray) connectionsAsJsonObject.get("data");
@ -2478,7 +2479,7 @@ public class ActiveMQServerControlTest extends ManagementTestBase {
//check all fields
Assert.assertNotEquals("connectionID", "", jsonConnection.getString("connectionID"));
Assert.assertNotEquals("remoteAddress", "", jsonConnection.getString("remoteAddress"));
Assert.assertEquals("users", "", jsonConnection.getString("users"));
Assert.assertEquals("users", "guest", jsonConnection.getString("users"));
Assert.assertNotEquals("creationTime", "", jsonConnection.getString("creationTime"));
Assert.assertNotEquals("implementation", "", jsonConnection.getString("implementation"));
Assert.assertNotEquals("protocol", "", jsonConnection.getString("protocol"));
@ -2491,6 +2492,28 @@ public class ActiveMQServerControlTest extends ManagementTestBase {
Assert.assertEquals("connection2 default Order", csf2.getConnection().getID(), array.getJsonObject(1).getString("connectionID"));
Assert.assertEquals("connection3 session Order", csf3.getConnection().getID(), array.getJsonObject(2).getString("connectionID"));
//check order by users asc
filterString = createJsonFilter("SESSION_COUNT", "GREATER_THAN", "1", "users", "asc");
connectionsAsJsonString = serverControl.listConnections(filterString, 1, 50);
connectionsAsJsonObject = JsonUtil.readJsonObject(connectionsAsJsonString);
array = (JsonArray) connectionsAsJsonObject.get("data");
Assert.assertEquals("number of connections returned from query", 3, array.size());
Assert.assertEquals("connection1 users Order", "guest", array.getJsonObject(0).getString("users"));
Assert.assertEquals("connection3 users Order", "guest,myUser", array.getJsonObject(1).getString("users"));
Assert.assertEquals("connection2 users Order", "myUser", array.getJsonObject(2).getString("users"));
//check order by users desc
filterString = createJsonFilter("SESSION_COUNT", "GREATER_THAN", "1", "users", "desc");
connectionsAsJsonString = serverControl.listConnections(filterString, 1, 50);
connectionsAsJsonObject = JsonUtil.readJsonObject(connectionsAsJsonString);
array = (JsonArray) connectionsAsJsonObject.get("data");
Assert.assertEquals("number of connections returned from query", 3, array.size());
Assert.assertEquals("connection2 users Order", "myUser", array.getJsonObject(0).getString("users"));
Assert.assertEquals("connection3 users Order", "guest,myUser", array.getJsonObject(1).getString("users"));
Assert.assertEquals("connection1 users Order", "guest", array.getJsonObject(2).getString("users"));
//check order by session count desc
filterString = createJsonFilter("SESSION_COUNT", "GREATER_THAN", "1", "sessionCount", "desc");
connectionsAsJsonString = serverControl.listConnections(filterString, 1, 50);