You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by jb...@apache.org on 2017/09/18 20:16:15 UTC

[1/2] activemq-artemis git commit: This closes #1541

Repository: activemq-artemis
Updated Branches:
  refs/heads/master df5462ad7 -> bdb198423


This closes #1541


Project: http://git-wip-us.apache.org/repos/asf/activemq-artemis/repo
Commit: http://git-wip-us.apache.org/repos/asf/activemq-artemis/commit/bdb19842
Tree: http://git-wip-us.apache.org/repos/asf/activemq-artemis/tree/bdb19842
Diff: http://git-wip-us.apache.org/repos/asf/activemq-artemis/diff/bdb19842

Branch: refs/heads/master
Commit: bdb19842392de4dad68dd9b44b7c3a4b7d7d83cf
Parents: df5462a 89a64ff
Author: Justin Bertram <jb...@apache.org>
Authored: Mon Sep 18 15:15:31 2017 -0500
Committer: Justin Bertram <jb...@apache.org>
Committed: Mon Sep 18 15:15:31 2017 -0500

----------------------------------------------------------------------
 .../apache/activemq/cli/test/ArtemisTest.java   |  15 +-
 .../view/predicate/ActiveMQFilterPredicate.java |  81 +++++-
 .../management/ActiveMQServerControlTest.java   | 265 ++++++++++++++++++-
 3 files changed, 344 insertions(+), 17 deletions(-)
----------------------------------------------------------------------



[2/2] activemq-artemis git commit: ARTEMIS-1423 adding numeric filtering for ActiveMQServerControl.listQueues()/listAddresses()/listSessions()

Posted by jb...@apache.org.
ARTEMIS-1423 adding numeric filtering for ActiveMQServerControl.listQueues()/listAddresses()/listSessions()


Project: http://git-wip-us.apache.org/repos/asf/activemq-artemis/repo
Commit: http://git-wip-us.apache.org/repos/asf/activemq-artemis/commit/89a64ff1
Tree: http://git-wip-us.apache.org/repos/asf/activemq-artemis/tree/89a64ff1
Diff: http://git-wip-us.apache.org/repos/asf/activemq-artemis/diff/89a64ff1

Branch: refs/heads/master
Commit: 89a64ff11c04a84bce65bf3c5d43a4724cf91b51
Parents: df5462a
Author: Pat Fox <pa...@gmail.com>
Authored: Fri Sep 15 19:49:01 2017 +0200
Committer: Justin Bertram <jb...@apache.org>
Committed: Mon Sep 18 15:15:31 2017 -0500

----------------------------------------------------------------------
 .../apache/activemq/cli/test/ArtemisTest.java   |  15 +-
 .../view/predicate/ActiveMQFilterPredicate.java |  81 +++++-
 .../management/ActiveMQServerControlTest.java   | 265 ++++++++++++++++++-
 3 files changed, 344 insertions(+), 17 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/89a64ff1/artemis-cli/src/test/java/org/apache/activemq/cli/test/ArtemisTest.java
----------------------------------------------------------------------
diff --git a/artemis-cli/src/test/java/org/apache/activemq/cli/test/ArtemisTest.java b/artemis-cli/src/test/java/org/apache/activemq/cli/test/ArtemisTest.java
index bb2ab5a..fde05a7 100644
--- a/artemis-cli/src/test/java/org/apache/activemq/cli/test/ArtemisTest.java
+++ b/artemis-cli/src/test/java/org/apache/activemq/cli/test/ArtemisTest.java
@@ -745,10 +745,8 @@ public class ArtemisTest extends CliTestBase {
          statQueue.execute(context);
          lines = getOutputLines(context, false);
 
-         // Header line + 1 queues
-         Assert.assertEquals("rows returned filtering by MESSAGE_COUNT", 2, lines.size());
-         String[] columns = lines.get(1).split("\\|");
-         Assert.assertEquals("queue name filtering by MESSAGE_COUNT ", "Test1", columns[2].trim());
+         // Header line + 0 queues
+         Assert.assertEquals("rows returned filtering by MESSAGE_COUNT", 1, lines.size());
 
          //check all queues containing address "Test1" are displayed using Filter field MESSAGE_ADDED
          context = new TestActionContext();
@@ -760,10 +758,8 @@ public class ArtemisTest extends CliTestBase {
          statQueue.setValue("20");
          statQueue.execute(context);
          lines = getOutputLines(context, false);
-         // Header line + 1 queues
-         Assert.assertEquals("rows returned filtering by MESSAGES_ADDED", 2, lines.size());
-         columns = lines.get(1).split("\\|");
-         Assert.assertEquals("queue name filtered by MESSAGE_ADDED", "Test20", columns[2].trim());
+         // Header line + 0 queues
+         Assert.assertEquals("rows returned filtering by MESSAGES_ADDED", 1, lines.size());
 
          //check all queues containing address "Test1" are displayed using Filter field DELIVERING_COUNT
          context = new TestActionContext();
@@ -775,7 +771,7 @@ public class ArtemisTest extends CliTestBase {
          statQueue.setValue("10");
          statQueue.execute(context);
          lines = getOutputLines(context, false);
-         columns = lines.get(1).split("\\|");
+         String[] columns = lines.get(1).split("\\|");
          // Header line + 1 queues
          Assert.assertEquals("rows returned filtering by DELIVERING_COUNT", 2, lines.size());
          Assert.assertEquals("queue name filtered by DELIVERING_COUNT ", "Test1", columns[2].trim());
@@ -880,7 +876,6 @@ public class ArtemisTest extends CliTestBase {
          lines = getOutputLines(context, false);
          // Header line + 0 queue
          Assert.assertEquals("No stdout for wrong OPERATION", 0, lines.size());
-
          lines = getOutputLines(context, true);
          // 1 error line
          Assert.assertEquals("stderr for wrong OPERATION", 1, lines.size());

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/89a64ff1/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/predicate/ActiveMQFilterPredicate.java
----------------------------------------------------------------------
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/predicate/ActiveMQFilterPredicate.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/predicate/ActiveMQFilterPredicate.java
index b693c4a..595b3bf 100644
--- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/predicate/ActiveMQFilterPredicate.java
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/predicate/ActiveMQFilterPredicate.java
@@ -23,7 +23,7 @@ import com.google.common.base.Predicate;
 public class ActiveMQFilterPredicate<T> implements Predicate<T> {
 
    enum Operation {
-      CONTAINS, EQUALS;
+      CONTAINS, EQUALS, GREATER_THAN, LESS_THAN;
    }
 
    protected String field;
@@ -77,6 +77,10 @@ public class ActiveMQFilterPredicate<T> implements Predicate<T> {
                return equals(field, value);
             case CONTAINS:
                return contains(field, value);
+            case GREATER_THAN:
+               return false;
+            case LESS_THAN:
+               return false;
          }
       }
       return true;
@@ -90,6 +94,81 @@ public class ActiveMQFilterPredicate<T> implements Predicate<T> {
       return false;
    }
 
+   public boolean matches(long field) {
+      long longValue;
+      if (operation != null) {
+
+         try {
+            longValue = Long.parseLong(value);
+         } catch (NumberFormatException ex) {
+            //cannot compare
+            return false;
+         }
+
+         switch (operation) {
+            case EQUALS:
+               return field == longValue;
+            case CONTAINS:
+               return false;
+            case LESS_THAN:
+               return field < longValue;
+            case GREATER_THAN:
+               return field > longValue;
+         }
+      }
+      return true;
+   }
+
+   public boolean matches(int field) {
+      int intValue;
+      if (operation != null) {
+
+         try {
+            intValue = Integer.parseInt(value);
+         } catch (NumberFormatException ex) {
+            //cannot compare
+            return false;
+         }
+
+         switch (operation) {
+            case EQUALS:
+               return field == intValue;
+            case CONTAINS:
+               return false;
+            case LESS_THAN:
+               return field < intValue;
+            case GREATER_THAN:
+               return field > intValue;
+         }
+      }
+      return true;
+   }
+
+   public boolean matches(float field) {
+      float floatValue;
+      if (operation != null) {
+
+         try {
+            floatValue = Float.parseFloat(value);
+         } catch (NumberFormatException ex) {
+            //cannot compare
+            return false;
+         }
+
+         switch (operation) {
+            case EQUALS:
+               return field == floatValue;
+            case CONTAINS:
+               return false;
+            case LESS_THAN:
+               return field < floatValue;
+            case GREATER_THAN:
+               return field > floatValue;
+         }
+      }
+      return true;
+   }
+
    private boolean equals(Object field, Object value) {
       if (field == null) {
          return (value == null || value.equals(""));

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/89a64ff1/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/ActiveMQServerControlTest.java
----------------------------------------------------------------------
diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/ActiveMQServerControlTest.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/ActiveMQServerControlTest.java
index 7d5976d..dd67d89 100644
--- a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/ActiveMQServerControlTest.java
+++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/ActiveMQServerControlTest.java
@@ -215,7 +215,7 @@ public class ActiveMQServerControlTest extends ManagementTestBase {
 
       checkNoResource(ObjectNameBuilder.DEFAULT.getQueueObjectName(address, name, RoutingType.ANYCAST));
       serverControl.createAddress(address.toString(), "ANYCAST");
-      serverControl.createQueue(address.toString(),  "ANYCAST", name.toString(), filter, durable, -1, false, false);
+      serverControl.createQueue(address.toString(), "ANYCAST", name.toString(), filter, durable, -1, false, false);
 
       checkResource(ObjectNameBuilder.DEFAULT.getQueueObjectName(address, name, RoutingType.ANYCAST));
       QueueControl queueControl = ManagementControlHelper.createQueueControl(address, name, RoutingType.ANYCAST, mbeanServer);
@@ -634,7 +634,7 @@ public class ActiveMQServerControlTest extends ManagementTestBase {
       assertEquals(slowConsumerPolicy, info.getSlowConsumerPolicy());
       assertEquals(autoCreateJmsQueues, info.isAutoCreateJmsQueues());
       assertEquals(autoDeleteJmsQueues, info.isAutoDeleteJmsQueues());
-//      assertEquals(autoCreateJmsTopics, info.isAutoCreateAddresses());
+      //      assertEquals(autoCreateJmsTopics, info.isAutoCreateAddresses());
       assertEquals(autoDeleteJmsTopics, info.isAutoDeleteJmsTopics());
 
       serverControl.addAddressSettings(addressMatch, DLA, expiryAddress, expiryDelay, lastValueQueue, deliveryAttempts, -1, 1000, pageMaxCacheSize, redeliveryDelay, redeliveryMultiplier, maxRedeliveryDelay, redistributionDelay, sendToDLAOnNoRoute, addressFullMessagePolicy, slowConsumerThreshold, slowConsumerCheckPeriod, slowConsumerPolicy, autoCreateJmsQueues, autoDeleteJmsQueues, autoCreateJmsTopics, autoDeleteJmsTopics);
@@ -660,7 +660,7 @@ public class ActiveMQServerControlTest extends ManagementTestBase {
       assertEquals(slowConsumerPolicy, info.getSlowConsumerPolicy());
       assertEquals(autoCreateJmsQueues, info.isAutoCreateJmsQueues());
       assertEquals(autoDeleteJmsQueues, info.isAutoDeleteJmsQueues());
-//      assertEquals(autoCreateJmsTopics, info.isAutoCreateAddresses());
+      //      assertEquals(autoCreateJmsTopics, info.isAutoCreateAddresses());
       assertEquals(autoDeleteJmsTopics, info.isAutoDeleteJmsTopics());
 
       ex = false;
@@ -1485,10 +1485,245 @@ public class ActiveMQServerControlTest extends ManagementTestBase {
    }
 
    @Test
+   public void testListQueuesNumericFilter() throws Exception {
+      SimpleString queueName1 = new SimpleString("my_queue_one");
+      SimpleString queueName2 = new SimpleString("my_queue_two");
+      SimpleString queueName3 = new SimpleString("one_consumer_queue_three");
+      SimpleString queueName4 = new SimpleString("my_queue_four");
+
+      ActiveMQServerControl serverControl = createManagementControl();
+
+      server.addAddressInfo(new AddressInfo(queueName1, RoutingType.ANYCAST));
+      server.createQueue(queueName1, RoutingType.ANYCAST, queueName1, null, false, false);
+
+      server.addAddressInfo(new AddressInfo(queueName2, RoutingType.ANYCAST));
+      server.createQueue(queueName2, RoutingType.ANYCAST, queueName2, null, false, false);
+
+      server.addAddressInfo(new AddressInfo(queueName3, RoutingType.ANYCAST));
+      server.createQueue(queueName3, RoutingType.ANYCAST, queueName3, null, false, false, 10, false, false);
+
+      server.addAddressInfo(new AddressInfo(queueName4, RoutingType.ANYCAST));
+      server.createQueue(queueName4, RoutingType.ANYCAST, queueName4, null, false, false);
+
+      // create some consumers
+      try (ServerLocator locator = createInVMNonHALocator(); ClientSessionFactory csf = createSessionFactory(locator); ClientSession session = csf.createSession()) {
+
+         session.start();
+         ClientConsumer consumer1_q1 = session.createConsumer(queueName1);
+         ClientConsumer consumer2_q1 = session.createConsumer(queueName1);
+         ClientConsumer consumer1_q2 = session.createConsumer(queueName2);
+         ClientConsumer consumer2_q2 = session.createConsumer(queueName2);
+         ClientConsumer consumer3_q2 = session.createConsumer(queueName2);
+         ClientConsumer consumer1_q3 = session.createConsumer(queueName3);
+
+         ClientProducer clientProducer = session.createProducer(queueName1);
+         ClientMessage message = session.createMessage(false);
+         for (int i = 0; i < 10; i++) {
+            clientProducer.send(message);
+         }
+
+         //consume one message
+         ClientMessage messageReceived = consumer1_q1.receive(100);
+         if (messageReceived == null) {
+            fail("should have received a message");
+         }
+         messageReceived.acknowledge();
+         session.commit();
+
+         //test with CONTAINS returns nothing for numeric field
+         String filterString = createJsonFilter("CONSUMER_COUNT", "CONTAINS", "0");
+         String queuesAsJsonString = serverControl.listQueues(filterString, 1, 50);
+
+         JsonObject queuesAsJsonObject = JsonUtil.readJsonObject(queuesAsJsonString);
+         JsonArray array = (JsonArray) queuesAsJsonObject.get("data");
+         Assert.assertEquals("number of queues returned from query", 0, array.size());
+
+         //test with LESS_THAN returns 1 queue
+         filterString = createJsonFilter("CONSUMER_COUNT", "LESS_THAN", "1");
+         queuesAsJsonString = serverControl.listQueues(filterString, 1, 50);
+
+         queuesAsJsonObject = JsonUtil.readJsonObject(queuesAsJsonString);
+         array = (JsonArray) queuesAsJsonObject.get("data");
+         Assert.assertEquals("number of queues returned from LESS_THAN query", 1, array.size());
+         Assert.assertEquals("correct queue returned from query", queueName4.toString(), array.getJsonObject(0).getString("name"));
+
+         //test with GREATER_THAN returns 2 queue
+         filterString = createJsonFilter("CONSUMER_COUNT", "GREATER_THAN", "2");
+         queuesAsJsonString = serverControl.listQueues(filterString, 1, 50);
+
+         queuesAsJsonObject = JsonUtil.readJsonObject(queuesAsJsonString);
+         array = (JsonArray) queuesAsJsonObject.get("data");
+         Assert.assertEquals("number of queues returned from GREATER_THAN query", 1, array.size());
+         Assert.assertEquals("correct queue returned from query", queueName2.toString(), array.getJsonObject(0).getString("name"));
+
+         //test with GREATER_THAN returns 2 queue
+         filterString = createJsonFilter("CONSUMER_COUNT", "EQUALS", "3");
+         queuesAsJsonString = serverControl.listQueues(filterString, 1, 50);
+
+         queuesAsJsonObject = JsonUtil.readJsonObject(queuesAsJsonString);
+         array = (JsonArray) queuesAsJsonObject.get("data");
+         Assert.assertEquals("number of queues returned from EQUALS query", 1, array.size());
+         Assert.assertEquals("correct queue returned from query", queueName2.toString(), array.getJsonObject(0).getString("name"));
+
+         //test with MESSAGE_COUNT returns 2 queue
+         filterString = createJsonFilter("MESSAGE_COUNT", "GREATER_THAN", "5");
+         queuesAsJsonString = serverControl.listQueues(filterString, 1, 50);
+
+         queuesAsJsonObject = JsonUtil.readJsonObject(queuesAsJsonString);
+         array = (JsonArray) queuesAsJsonObject.get("data");
+         Assert.assertEquals("number of queues returned from MESSAGE_COUNT query", 1, array.size());
+         Assert.assertEquals("correct queue returned from query", queueName1.toString(), array.getJsonObject(0).getString("name"));
+
+         //test with MESSAGE_ADDED returns 1 queue
+         filterString = createJsonFilter("MESSAGES_ADDED", "GREATER_THAN", "5");
+         queuesAsJsonString = serverControl.listQueues(filterString, 1, 50);
+
+         queuesAsJsonObject = JsonUtil.readJsonObject(queuesAsJsonString);
+         array = (JsonArray) queuesAsJsonObject.get("data");
+         Assert.assertEquals("number of queues returned from MESSAGE_COUNT query", 1, array.size());
+         Assert.assertEquals("correct queue returned from query", queueName1.toString(), array.getJsonObject(0).getString("name"));
+
+         //test with DELIVERING_COUNT returns 1 queue
+         filterString = createJsonFilter("DELIVERING_COUNT", "GREATER_THAN", "5");
+         queuesAsJsonString = serverControl.listQueues(filterString, 1, 50);
+
+         queuesAsJsonObject = JsonUtil.readJsonObject(queuesAsJsonString);
+         array = (JsonArray) queuesAsJsonObject.get("data");
+         Assert.assertEquals("number of queues returned from DELIVERING_COUNT query", 1, array.size());
+         Assert.assertEquals("correct queue returned from query", queueName1.toString(), array.getJsonObject(0).getString("name"));
+
+         //test with MESSAGE_ACKED returns 1 queue
+         filterString = createJsonFilter("MESSAGES_ACKED", "GREATER_THAN", "0");
+         queuesAsJsonString = serverControl.listQueues(filterString, 1, 50);
+
+         queuesAsJsonObject = JsonUtil.readJsonObject(queuesAsJsonString);
+         array = (JsonArray) queuesAsJsonObject.get("data");
+         Assert.assertEquals("number of queues returned from MESSAGES_ACKED query", 1, array.size());
+         Assert.assertEquals("correct queue returned from query", queueName1.toString(), array.getJsonObject(0).getString("name"));
+
+         //test with MAX_CONSUMERS returns 1 queue
+         filterString = createJsonFilter("MAX_CONSUMERS", "GREATER_THAN", "9");
+         queuesAsJsonString = serverControl.listQueues(filterString, 1, 50);
+
+         queuesAsJsonObject = JsonUtil.readJsonObject(queuesAsJsonString);
+         array = (JsonArray) queuesAsJsonObject.get("data");
+         Assert.assertEquals("number of queues returned from MAX_CONSUMERS query", 1, array.size());
+         Assert.assertEquals("correct queue returned from query", queueName3.toString(), array.getJsonObject(0).getString("name"));
+
+         //test with MESSAGES_KILLED returns 0 queue
+         filterString = createJsonFilter("MESSAGES_KILLED", "GREATER_THAN", "0");
+         queuesAsJsonString = serverControl.listQueues(filterString, 1, 50);
+
+         queuesAsJsonObject = JsonUtil.readJsonObject(queuesAsJsonString);
+         array = (JsonArray) queuesAsJsonObject.get("data");
+         Assert.assertEquals("number of queues returned from MESSAGES_KILLED query", 0, array.size());
+
+      }
+
+   }
+
+   @Test
+   public void testListQueuesNumericFilterInvalid() throws Exception {
+      SimpleString queueName1 = new SimpleString("my_queue_one");
+      SimpleString queueName2 = new SimpleString("one_consumer_queue_two");
+      SimpleString queueName3 = new SimpleString("one_consumer_queue_three");
+      SimpleString queueName4 = new SimpleString("my_queue_four");
+
+      ActiveMQServerControl serverControl = createManagementControl();
+
+      server.addAddressInfo(new AddressInfo(queueName1, RoutingType.ANYCAST));
+      server.createQueue(queueName1, RoutingType.ANYCAST, queueName1, null, false, false);
+
+      server.addAddressInfo(new AddressInfo(queueName2, RoutingType.ANYCAST));
+      server.createQueue(queueName2, RoutingType.ANYCAST, queueName2, null, false, false);
+
+      server.addAddressInfo(new AddressInfo(queueName3, RoutingType.ANYCAST));
+      server.createQueue(queueName3, RoutingType.ANYCAST, queueName3, null, false, false, 10, false, false);
+
+      server.addAddressInfo(new AddressInfo(queueName4, RoutingType.ANYCAST));
+      server.createQueue(queueName4, RoutingType.ANYCAST, queueName4, null, false, false);
+
+      // create some consumers
+      try (ServerLocator locator = createInVMNonHALocator(); ClientSessionFactory csf = createSessionFactory(locator); ClientSession session = csf.createSession()) {
+
+         session.start();
+         ClientConsumer consumer1_q1 = session.createConsumer(queueName1);
+         ClientConsumer consumer2_q1 = session.createConsumer(queueName1);
+
+         //test with CONTAINS returns nothing for numeric field
+         String filterString = createJsonFilter("CONSUMER_COUNT", "CONTAINS", "NOT_NUMBER");
+         String queuesAsJsonString = serverControl.listQueues(filterString, 1, 50);
+
+         JsonObject queuesAsJsonObject = JsonUtil.readJsonObject(queuesAsJsonString);
+         JsonArray array = (JsonArray) queuesAsJsonObject.get("data");
+         Assert.assertEquals("number of queues returned from query", 0, array.size());
+
+         //test with LESS_THAN and not a number
+         filterString = createJsonFilter("CONSUMER_COUNT", "LESS_THAN", "NOT_NUMBER");
+         queuesAsJsonString = serverControl.listQueues(filterString, 1, 50);
+
+         queuesAsJsonObject = JsonUtil.readJsonObject(queuesAsJsonString);
+         array = (JsonArray) queuesAsJsonObject.get("data");
+         Assert.assertEquals("number of queues returned from LESS_THAN query", 0, array.size());
+
+         //test with GREATER_THAN and not a number
+         filterString = createJsonFilter("CONSUMER_COUNT", "GREATER_THAN", "NOT_NUMBER");
+         queuesAsJsonString = serverControl.listQueues(filterString, 1, 50);
+
+         queuesAsJsonObject = JsonUtil.readJsonObject(queuesAsJsonString);
+         array = (JsonArray) queuesAsJsonObject.get("data");
+         Assert.assertEquals("number of queues returned from GREATER_THAN query", 0, array.size());
+
+         //test with EQUALS and not number
+         filterString = createJsonFilter("CONSUMER_COUNT", "EQUALS", "NOT_NUMBER");
+         queuesAsJsonString = serverControl.listQueues(filterString, 1, 50);
+
+         queuesAsJsonObject = JsonUtil.readJsonObject(queuesAsJsonString);
+         array = (JsonArray) queuesAsJsonObject.get("data");
+         Assert.assertEquals("number of queues returned from EQUALS query", 0, array.size());
+
+         //test with LESS_THAN on string value returns no queue
+         filterString = createJsonFilter("name", "LESS_THAN", "my_queue");
+         queuesAsJsonString = serverControl.listQueues(filterString, 1, 50);
+
+         queuesAsJsonObject = JsonUtil.readJsonObject(queuesAsJsonString);
+         array = (JsonArray) queuesAsJsonObject.get("data");
+         Assert.assertEquals("number of queues returned from LESS_THAN on non numeric field", 0, array.size());
+
+         //test with GREATER_THAN on string value returns no queue
+         filterString = createJsonFilter("name", "GREATER_THAN", "my_queue");
+         queuesAsJsonString = serverControl.listQueues(filterString, 1, 50);
+
+         queuesAsJsonObject = JsonUtil.readJsonObject(queuesAsJsonString);
+         array = (JsonArray) queuesAsJsonObject.get("data");
+         Assert.assertEquals("number of queues returned from GREATER_THAN on non numeric field", 0, array.size());
+
+         //test with GREATER_THAN and empty string
+         filterString = createJsonFilter("CONSUMER_COUNT", "GREATER_THAN", " ");
+         queuesAsJsonString = serverControl.listQueues(filterString, 1, 50);
+
+         queuesAsJsonObject = JsonUtil.readJsonObject(queuesAsJsonString);
+         array = (JsonArray) queuesAsJsonObject.get("data");
+         Assert.assertEquals("number of queues returned from GREATER_THAN query", 0, array.size());
+
+         //test with CONSUMER_COUNT against a float value
+         filterString = createJsonFilter("CONSUMER_COUNT", "GREATER_THAN", "0.12");
+         queuesAsJsonString = serverControl.listQueues(filterString, 1, 50);
+
+         queuesAsJsonObject = JsonUtil.readJsonObject(queuesAsJsonString);
+         array = (JsonArray) queuesAsJsonObject.get("data");
+         Assert.assertEquals("number of queues returned from GREATER_THAN query", 0, array.size());
+
+      }
+
+   }
+
+   @Test
    public void testListAddresses() throws Exception {
       SimpleString queueName1 = new SimpleString("my_queue_one");
       SimpleString queueName2 = new SimpleString("my_queue_two");
       SimpleString queueName3 = new SimpleString("other_queue_three");
+      SimpleString queueName4 = new SimpleString("other_queue_four");
 
       SimpleString addressName1 = new SimpleString("my_address_one");
       SimpleString addressName2 = new SimpleString("my_address_two");
@@ -1497,11 +1732,12 @@ public class ActiveMQServerControlTest extends ManagementTestBase {
       ActiveMQServerControl serverControl = createManagementControl();
 
       server.addAddressInfo(new AddressInfo(addressName1, RoutingType.ANYCAST));
-      server.createQueue(queueName1, RoutingType.ANYCAST, queueName1, null, false, false);
+      server.createQueue(addressName1, RoutingType.ANYCAST, queueName1, null, false, false);
       server.addAddressInfo(new AddressInfo(addressName2, RoutingType.ANYCAST));
-      server.createQueue(queueName2, RoutingType.ANYCAST, queueName2, null, false, false);
+      server.createQueue(addressName2, RoutingType.ANYCAST, queueName2, null, false, false);
       server.addAddressInfo(new AddressInfo(addressName3, RoutingType.ANYCAST));
-      server.createQueue(queueName3, RoutingType.ANYCAST, queueName3, null, false, false);
+      server.createQueue(addressName3, RoutingType.ANYCAST, queueName3, null, false, false);
+      server.createQueue(addressName3, RoutingType.ANYCAST, queueName4, null, false, false);
 
       //test with CONTAINS filter
       String filterString = createJsonFilter("name", "CONTAINS", "my_address");
@@ -1537,6 +1773,23 @@ public class ActiveMQServerControlTest extends ManagementTestBase {
 
       Assert.assertEquals("number of queues returned from query", 1, array.size());
 
+      //test with QUEUE_COUNT with GREATER_THAN filter
+      filterString = createJsonFilter("QUEUE_COUNT", "GREATER_THAN", "1");
+      addressesAsJsonString = serverControl.listAddresses(filterString, 1, 50);
+      addressesAsJsonObject = JsonUtil.readJsonObject(addressesAsJsonString);
+      array = (JsonArray) addressesAsJsonObject.get("data");
+
+      Assert.assertEquals("number of addresses returned from query", 1, array.size());
+      Assert.assertEquals("address name check", addressName3.toString(), array.getJsonObject(0).getString("name"));
+
+      //test with QUEUE_COUNT with LESS_THAN filter
+      filterString = createJsonFilter("QUEUE_COUNT", "LESS_THAN", "0");
+      addressesAsJsonString = serverControl.listAddresses(filterString, 1, 50);
+      addressesAsJsonObject = JsonUtil.readJsonObject(addressesAsJsonString);
+      array = (JsonArray) addressesAsJsonObject.get("data");
+
+      Assert.assertEquals("number of addresses returned from query", 0, array.size());
+
    }
 
    @Test