You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by kw...@apache.org on 2017/11/03 15:29:13 UTC

[2/2] qpid-broker-j git commit: NO-JIRA: [Broker-J Tools] Update memory consumption test scripts to no longer assume availability of JMX and work with Qpid JMS Client.

NO-JIRA: [Broker-J Tools] Update memory consumption test scripts to no longer assume availability of JMX and work with Qpid JMS Client.


Project: http://git-wip-us.apache.org/repos/asf/qpid-broker-j/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-broker-j/commit/8721d329
Tree: http://git-wip-us.apache.org/repos/asf/qpid-broker-j/tree/8721d329
Diff: http://git-wip-us.apache.org/repos/asf/qpid-broker-j/diff/8721d329

Branch: refs/heads/master
Commit: 8721d3292d1c5c8be29b8165b017a383a432f4e7
Parents: 1444257
Author: Keith Wall <kw...@apache.org>
Authored: Fri Nov 3 15:24:32 2017 +0000
Committer: Keith Wall <kw...@apache.org>
Committed: Fri Nov 3 15:29:05 2017 +0000

----------------------------------------------------------------------
 tools/bin/memory-test                           |  45 +++--
 tools/pom.xml                                   | 120 +++++++++++-
 .../qpid/tools/MemoryConsumptionTestClient.java | 196 ++++++++++---------
 3 files changed, 244 insertions(+), 117 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/8721d329/tools/bin/memory-test
----------------------------------------------------------------------
diff --git a/tools/bin/memory-test b/tools/bin/memory-test
index 4a7df83..52b38e8 100755
--- a/tools/bin/memory-test
+++ b/tools/bin/memory-test
@@ -43,7 +43,8 @@ function awaitBroker()
 function startBroker()
 {
   echo "Starting broker"
-  ${QPID_HOME}/bin/qpid-server -prop qpid.rmi_port=$RMI_PORT 2>${QPID_WORK}/log/qpid.stderr > ${QPID_WORK}/log/qpid.stdout &
+  export QPID_OPTS="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=${RMI_PORT} -Dcom.sun.management.jmxremote.local.only=false -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false"
+  ${QPID_HOME}/bin/qpid-server 2>${QPID_WORK}/log/qpid.stderr > ${QPID_WORK}/log/qpid.stdout &
   brokerpid=$!
   echo "Broker started: PID $brokerpid"
 }
@@ -60,7 +61,7 @@ function stopBroker()
   (kill -9 $brokerpid 2>&1) > /dev/null
   grep BRK-1014 ${QPID_WORK}/log/qpid.log | sed 's/,/ /g' | sed 's/^/# /' >> $resultFile
   mv  ${QPID_WORK}/log/qpid.log  ${QPID_WORK}/log/qpid.log.$messageSize_$messageCount
-  rm -fr  $QPID_WORK/default/messages
+  rm -fr ${QPID_WORK}/default/messages
 }
 
 function performTest()
@@ -75,9 +76,13 @@ function performTest()
   startBroker
   awaitBroker
   echo "Running test: messageSize=$messageSize messageNumber=$messageCount connections=${connections} sessions=${sessions}"
-  java -cp "${TOOLS_DIR}/target/qpid-tools-6.0.0-SNAPSHOT.jar:${TOOLS_DIR}/target/dependency/*" -Dqpid.amqp.version=${PROTOCOL} org.apache.qpid.tools.MemoryConsumptionTestClient \
-     connections=${connections} sessions=${sessions} producers=${producers} \
-     messagecount=${messageCount} size=${messageSize} jmxuser=admin jmxpassword=admin jmxhost=${BROKER_HOSTNAME} jmxport=${RMI_PORT} >> $resultFile
+
+  tmp=$(mktemp)
+  mvn -f ${TOOLS_DIR}/pom.xml \
+       exec:java \
+       -Dmemorytest=${PROFILE} \
+       -Dexec.args="jndiProperties=${JNDI_PROPERTIES} jmxhost=${BROKER_HOSTNAME} jmxport=${RMI_PORT} jmxuser=guest jmxpassword=guest jndiConnectionFactory=qpidConnectionFactoryTls connections=${connections} sessions=${sessions} producers=${producers} messagecount=${messageCount} size=${messageSize} resultsFile=${tmp}"
+  cat ${tmp} >> $resultFile
   stopBroker $messageSize $messageCount $resultFile
 }
 
@@ -130,22 +135,26 @@ else
 fi
 echo "Tools module folder ${TOOLS_DIR}"
 
-if [ ! -d ${TOOLS_DIR}/target ]
-then
-  echo "target directory does not exists run: mvn package"
-  exit 1
-fi
-
-if [ ! -d ${TOOLS_DIR}/target/dependency ]
-then
-  echo "target dependencies directory does not exists run: mvn dependency:copy-dependencies"
-  exit 1
-fi
-
 PROTOCOL=${1:-0-9}
 BROKER_HOSTNAME=${2:-"localhost"}
 RMI_PORT=${3:-8999}
 
+case ${PROTOCOL} in
+0-9|0-10)
+  JNDI_PROPERTIES=stress-test-client-qpid-jms-client-0-x.properties
+  PROFILE=jms-client-${PROTOCOL}
+  ;;
+1-0)
+  JNDI_PROPERTIES=stress-test-client-qpid-jms-client.properties
+  PROFILE=qpid-jms-client
+  ;;
+*)
+  echo "Unrecognised protocol ${PROTOCOL}"
+  exit 1
+  ;;
+esac
+
+
 brokerVersion=`$QPID_HOME/bin/qpid-server -v | grep "qpid -" | awk '{print $3 " rev" $5}'`
 javaVersion=`java -version 2>&1 | grep "java version" | awk '{print $3}' | sed -e "s/\"//g"`
 startTime=`date "+%Y-%m-%d %H:%M:%S"`
@@ -154,7 +163,7 @@ resultFile="${TOOLS_DIR}/target/results-${PROTOCOL}-${javaVersion}-${startTimeFi
 
 echo "Results will be written into ${resultFile}"
 
-rm -fr $QPID_WORK
+rm -fr  ${QPID_WORK}/default/messages
 mkdir -p ${QPID_WORK}/log
 
 echo "# $startTime" > ${resultFile}

http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/8721d329/tools/pom.xml
----------------------------------------------------------------------
diff --git a/tools/pom.xml b/tools/pom.xml
index a6c92cb..30c8f29 100644
--- a/tools/pom.xml
+++ b/tools/pom.xml
@@ -74,13 +74,24 @@
 
   <profiles>
     <profile>
-      <id>qpid-jms-client</id>
+      <id>stresstest_qpid-jms-client</id>
       <activation>
         <property>
             <name>stresstest</name>
             <value>qpid-jms-client</value>
         </property>
       </activation>
+      <build>
+        <plugins>
+          <plugin>
+            <groupId>org.codehaus.mojo</groupId>
+            <artifactId>exec-maven-plugin</artifactId>
+            <configuration>
+              <mainClass>org.apache.qpid.tools.StressTestClient</mainClass>
+            </configuration>
+          </plugin>
+        </plugins>
+      </build>
       <dependencies>
         <dependency>
           <groupId>org.apache.qpid</groupId>
@@ -90,7 +101,7 @@
       </dependencies>
     </profile>
     <profile>
-      <id>jms-client-0-9</id>
+      <id>stresstest_jms-client-0-9</id>
       <activation>
         <property>
             <name>stresstest</name>
@@ -103,6 +114,7 @@
             <groupId>org.codehaus.mojo</groupId>
             <artifactId>exec-maven-plugin</artifactId>
             <configuration>
+              <mainClass>org.apache.qpid.tools.StressTestClient</mainClass>
               <systemProperties>
                 <systemProperty>
                   <key>qpid.amqp.version</key><value>0-9</value>
@@ -126,7 +138,7 @@
       </dependencies>
     </profile>
     <profile>
-      <id>jms-client-0-10</id>
+      <id>stresstest_jms-client-0-10</id>
       <activation>
         <property>
             <name>stresstest</name>
@@ -139,6 +151,108 @@
             <groupId>org.codehaus.mojo</groupId>
             <artifactId>exec-maven-plugin</artifactId>
             <configuration>
+              <mainClass>org.apache.qpid.tools.StressTestClient</mainClass>
+              <systemProperties>
+                <systemProperty>
+                  <key>qpid.amqp.version</key><value>0-10</value>
+                </systemProperty>
+              </systemProperties>
+            </configuration>
+          </plugin>
+        </plugins>
+      </build>
+      <dependencies>
+        <dependency>
+          <groupId>org.apache.qpid</groupId>
+          <artifactId>qpid-client</artifactId>
+          <scope>compile</scope>
+        </dependency>
+        <dependency>
+          <groupId>org.apache.geronimo.specs</groupId>
+          <artifactId>geronimo-jms_1.1_spec</artifactId>
+          <scope>compile</scope>
+        </dependency>
+      </dependencies>
+    </profile>
+    <profile>
+      <id>memorytest_qpid-jms-client</id>
+      <activation>
+        <property>
+          <name>memorytest</name>
+          <value>qpid-jms-client</value>
+        </property>
+      </activation>
+      <build>
+        <plugins>
+          <plugin>
+            <groupId>org.codehaus.mojo</groupId>
+            <artifactId>exec-maven-plugin</artifactId>
+            <configuration>
+              <mainClass>org.apache.qpid.tools.MemoryConsumptionTestClient</mainClass>
+            </configuration>
+          </plugin>
+        </plugins>
+      </build>
+      <dependencies>
+        <dependency>
+          <groupId>org.apache.qpid</groupId>
+          <artifactId>qpid-jms-client</artifactId>
+          <scope>runtime</scope>
+        </dependency>
+      </dependencies>
+    </profile>
+    <profile>
+      <id>memorytest_jms-client-0-9</id>
+      <activation>
+        <property>
+          <name>memorytest</name>
+          <value>jms-client-0-9</value>
+        </property>
+      </activation>
+      <build>
+        <plugins>
+          <plugin>
+            <groupId>org.codehaus.mojo</groupId>
+            <artifactId>exec-maven-plugin</artifactId>
+            <configuration>
+              <mainClass>org.apache.qpid.tools.MemoryConsumptionTestClient</mainClass>
+              <systemProperties>
+                <systemProperty>
+                  <key>qpid.amqp.version</key><value>0-9</value>
+                </systemProperty>
+              </systemProperties>
+            </configuration>
+          </plugin>
+        </plugins>
+      </build>
+      <dependencies>
+        <dependency>
+          <groupId>org.apache.qpid</groupId>
+          <artifactId>qpid-client</artifactId>
+          <scope>compile</scope>
+        </dependency>
+        <dependency>
+          <groupId>org.apache.geronimo.specs</groupId>
+          <artifactId>geronimo-jms_1.1_spec</artifactId>
+          <scope>compile</scope>
+        </dependency>
+      </dependencies>
+    </profile>
+    <profile>
+      <id>memorytest_jms-client-0-10</id>
+      <activation>
+        <property>
+          <name>memorytest</name>
+          <value>jms-client-0-10</value>
+        </property>
+      </activation>
+      <build>
+        <plugins>
+          <plugin>
+            <groupId>org.codehaus.mojo</groupId>
+            <artifactId>exec-maven-plugin</artifactId>
+            <configuration>
+              <mainClass>org.apache.qpid.tools.MemoryConsumptionTestClient</mainClass>
               <systemProperties>
                 <systemProperty>
                   <key>qpid.amqp.version</key><value>0-10</value>

http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/8721d329/tools/src/main/java/org/apache/qpid/tools/MemoryConsumptionTestClient.java
----------------------------------------------------------------------
diff --git a/tools/src/main/java/org/apache/qpid/tools/MemoryConsumptionTestClient.java b/tools/src/main/java/org/apache/qpid/tools/MemoryConsumptionTestClient.java
index c1c3b68..d73b578 100644
--- a/tools/src/main/java/org/apache/qpid/tools/MemoryConsumptionTestClient.java
+++ b/tools/src/main/java/org/apache/qpid/tools/MemoryConsumptionTestClient.java
@@ -20,6 +20,7 @@
  */
 package org.apache.qpid.tools;
 
+import java.io.FileWriter;
 import java.io.IOException;
 import java.io.InputStream;
 import java.util.ArrayList;
@@ -32,12 +33,12 @@ import java.util.Properties;
 import java.util.Set;
 import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.TimeUnit;
+
 import javax.jms.BytesMessage;
 import javax.jms.Connection;
 import javax.jms.ConnectionFactory;
 import javax.jms.DeliveryMode;
 import javax.jms.Destination;
-import javax.jms.ExceptionListener;
 import javax.jms.JMSException;
 import javax.jms.Message;
 import javax.jms.MessageConsumer;
@@ -48,8 +49,6 @@ import javax.management.InstanceNotFoundException;
 import javax.management.MBeanException;
 import javax.management.MBeanServerConnection;
 import javax.management.MalformedObjectNameException;
-import javax.management.Notification;
-import javax.management.NotificationListener;
 import javax.management.ObjectName;
 import javax.management.ReflectionException;
 import javax.management.openmbean.CompositeData;
@@ -68,34 +67,37 @@ public class MemoryConsumptionTestClient
 {
     private static final Logger LOGGER = LoggerFactory.getLogger(MemoryConsumptionTestClient.class);
 
+    private static final String RESULTS_FILE_ARG = "resultsFile";
+
     private static final String JNDI_PROPERTIES_ARG = "jndiProperties";
     private static final String JNDI_CONNECTION_FACTORY_ARG = "jndiConnectionFactory";
     private static final String JNDI_DESTINATION_ARG = "jndiDestination";
 
-    public static final String CONNECTIONS_ARG = "connections";
-    public static final String SESSIONS_ARG = "sessions";
-    public static final String PRODUCERS_ARG = "producers";
-    public static final String MESSAGE_COUNT_ARG = "messagecount";
-    public static final String MESSAGE_SIZE_ARG = "size";
-    public static final String PERSISTENT_ARG = "persistent";
-    public static final String TIMEOUT_ARG = "timeout";
-    public static final String TRANSACTED_ARG = "transacted";
-    public static final String JMX_HOST_ARG = "jmxhost";
-    public static final String JMX_PORT_ARG = "jmxport";
-    public static final String JMX_USER_ARG = "jmxuser";
-    public static final String JMX_USER_PASSWORD_ARG = "jmxpassword";
-
+    private static final String CONNECTIONS_ARG = "connections";
+    private static final String SESSIONS_ARG = "sessions";
+    private static final String PRODUCERS_ARG = "producers";
+    private static final String MESSAGE_COUNT_ARG = "messagecount";
+    private static final String MESSAGE_SIZE_ARG = "size";
+    private static final String PERSISTENT_ARG = "persistent";
+    private static final String TIMEOUT_ARG = "timeout";
+    private static final String TRANSACTED_ARG = "transacted";
+    private static final String JMX_HOST_ARG = "jmxhost";
+    private static final String JMX_PORT_ARG = "jmxport";
+    private static final String JMX_USER_ARG = "jmxuser";
+    private static final String JMX_USER_PASSWORD_ARG = "jmxpassword";
+
+    private static final String RESULTS_FILE_DEFAULT = "results.csv";
     private static final String JNDI_PROPERTIES_DEFAULT = "stress-test-client-qpid-jms-client-0-x.properties";
     private static final String JNDI_CONNECTION_FACTORY_DEFAULT = "qpidConnectionFactory";
     private static final String JNDI_DESTINATION_DEFAULT = "stressTestQueue";
-    public static final String CONNECTIONS_DEFAULT = "1";
-    public static final String SESSIONS_DEFAULT = "1";
-    public static final String PRODUCERS_DEFAULT = "1";
-    public static final String MESSAGE_COUNT_DEFAULT = "1";
-    public static final String MESSAGE_SIZE_DEFAULT = "256";
-    public static final String PERSISTENT_DEFAULT = "false";
-    public static final String TIMEOUT_DEFAULT = "1000";
-    public static final String TRANSACTED_DEFAULT = "false";
+    private static final String CONNECTIONS_DEFAULT = "1";
+    private static final String SESSIONS_DEFAULT = "1";
+    private static final String PRODUCERS_DEFAULT = "1";
+    private static final String MESSAGE_COUNT_DEFAULT = "1";
+    private static final String MESSAGE_SIZE_DEFAULT = "256";
+    private static final String PERSISTENT_DEFAULT = "false";
+    private static final String TIMEOUT_DEFAULT = "1000";
+    private static final String TRANSACTED_DEFAULT = "false";
 
     private static final String JMX_HOST_DEFAULT = "localhost";
     private static final String JMX_PORT_DEFAULT = "8999";
@@ -104,6 +106,7 @@ public class MemoryConsumptionTestClient
     public static void main(String[] args) throws Exception
     {
         Map<String,String> options = new HashMap<>();
+        options.put(RESULTS_FILE_ARG, RESULTS_FILE_DEFAULT);
         options.put(JNDI_PROPERTIES_ARG, JNDI_PROPERTIES_DEFAULT);
         options.put(JNDI_CONNECTION_FACTORY_ARG, JNDI_CONNECTION_FACTORY_DEFAULT);
         options.put(JNDI_DESTINATION_ARG, JNDI_DESTINATION_DEFAULT);
@@ -134,7 +137,7 @@ public class MemoryConsumptionTestClient
         testClient.runTest(options);
     }
 
-    public static void parseArgumentsIntoConfig(Map<String, String> initialValues, String[] args)
+    private static void parseArgumentsIntoConfig(Map<String, String> initialValues, String[] args)
     {
         for(String arg: args)
         {
@@ -154,6 +157,7 @@ public class MemoryConsumptionTestClient
 
     private void runTest(Map<String,String> options) throws Exception
     {
+        String resultsFile = options.get(RESULTS_FILE_ARG);
         String jndiProperties = options.get(JNDI_PROPERTIES_ARG);
         String connectionFactoryString = options.get(JNDI_CONNECTION_FACTORY_ARG);
         int numConnections = Integer.parseInt(options.get(CONNECTIONS_ARG));
@@ -177,17 +181,47 @@ public class MemoryConsumptionTestClient
         Map<Connection, List<Session>> connectionsAndSessions = openConnectionsAndSessions(numConnections, numSessions, transacted, conFac);
         publish(numMessage, messageSize, numProducers, deliveryMode, destination, connectionsAndSessions);
         MemoryStatistic memoryStatistics = collectMemoryStatistics(options);
-        generateCSV(memoryStatistics, numConnections, numSessions, transacted, numMessage, messageSize, numProducers, deliveryMode);
+        generateCSV(memoryStatistics, numConnections, numSessions, transacted, numMessage, messageSize, numProducers, deliveryMode, resultsFile);
         purgeQueue(conFac, queueString, receiveTimeout);
         closeConnections(connectionsAndSessions.keySet());
+        System.exit(0);
     }
 
-    private void generateCSV(MemoryStatistic memoryStatistics, int numConnections, int numSessions, boolean transacted, int numMessage, int messageSize, int numProducers, int deliveryMode)
+    private void generateCSV(MemoryStatistic memoryStatistics,
+                             int numConnections,
+                             int numSessions,
+                             boolean transacted,
+                             int numMessage,
+                             int messageSize,
+                             int numProducers,
+                             int deliveryMode,
+                             final String resultsFile) throws IOException
     {
-        System.out.println(memoryStatistics.getHeapUsage() + "," + memoryStatistics.getDirectMemoryUsage()
-                + "," + numConnections  + "," + numSessions  + "," + numProducers + "," + transacted + "," + numMessage
-                + "," + messageSize + "," + deliveryMode + "," + toUserFriendlyName(memoryStatistics.getHeapUsage())
-                + "," + toUserFriendlyName(memoryStatistics.getDirectMemoryUsage()));
+        try (FileWriter writer = new FileWriter(resultsFile))
+        {
+            writer.write(memoryStatistics.getHeapUsage()
+                         + ","
+                         + memoryStatistics.getDirectMemoryUsage()
+                         + ","
+                         + numConnections
+                         + ","
+                         + numSessions
+                         + ","
+                         + numProducers
+                         + ","
+                         + transacted
+                         + ","
+                         + numMessage
+                         + ","
+                         + messageSize
+                         + ","
+                         + deliveryMode
+                         + ","
+                         + toUserFriendlyName(memoryStatistics.getHeapUsage())
+                         + ","
+                         + toUserFriendlyName(memoryStatistics.getDirectMemoryUsage())
+                         + System.lineSeparator());
+        }
     }
 
     private void publish(int numberOfMessages, int messageSize, int numberOfProducers, int deliveryMode,
@@ -227,14 +261,9 @@ public class MemoryConsumptionTestClient
         for (int i= 0; i < numConnections ; i++)
         {
             Connection connection = conFac.createConnection();
-            connection.setExceptionListener(new ExceptionListener()
-            {
-                @Override
-                public void onException(JMSException jmse)
-                {
-                    LOGGER.error("The sample received an exception through the ExceptionListener", jmse);
-                    System.exit(1);
-                }
+            connection.setExceptionListener(jmse -> {
+                LOGGER.error("The sample received an exception through the ExceptionListener", jmse);
+                System.exit(1);
             });
 
             List<Session> sessions = new ArrayList<>();
@@ -268,7 +297,7 @@ public class MemoryConsumptionTestClient
     private Destination ensureQueueCreated(String queueURL, ConnectionFactory connectionFactory) throws JMSException
     {
         Connection connection = connectionFactory.createConnection();
-        Destination destination = null;
+        Destination destination;
         try
         {
             Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
@@ -284,21 +313,6 @@ public class MemoryConsumptionTestClient
         return destination;
     }
 
-    private ConnectionFactory createConnectionFactory(Properties properties) throws NamingException
-    {
-        ConnectionFactory connectionFactory = null;
-        Context ctx = new InitialContext(properties);
-        try
-        {
-            connectionFactory = (ConnectionFactory) ctx.lookup("qpidConnectionfactory");
-        }
-        finally
-        {
-            ctx.close();
-        }
-        return connectionFactory;
-    }
-
     private void closeConnections(Collection<Connection> connections) throws JMSException, NamingException
     {
         for (Connection c: connections)
@@ -318,13 +332,13 @@ public class MemoryConsumptionTestClient
         connection.start();
 
         int count = 0;
-        while(true)
+        while (true)
         {
             BytesMessage msg = (BytesMessage) consumer.receive(receiveTimeout);
 
             if(msg == null)
             {
-                LOGGER.debug("Received {} message(s)", connection);
+                LOGGER.debug("Received {} message(s)", count);
                 break;
             }
             else
@@ -348,10 +362,10 @@ public class MemoryConsumptionTestClient
         if (!"".equals(host) && !"".equals(port) && !"".equals(user) && !"".equals(password))
         {
             Map<String, Object> environment = Collections.<String, Object>singletonMap(JMXConnector.CREDENTIALS, new String[]{user, password});
-            JMXConnector jmxConnector = JMXConnectorFactory.newJMXConnector(new JMXServiceURL("rmi", "", 0, "/jndi/rmi://" + host + ":" + port + "/jmxrmi"), environment);
-            jmxConnector.connect();
-            try
+
+            try(JMXConnector jmxConnector = JMXConnectorFactory.newJMXConnector(new JMXServiceURL("rmi", "", 0, "/jndi/rmi://" + host + ":" + port + "/jmxrmi"), environment))
             {
+                jmxConnector.connect();
                 final MBeanServerConnection mBeanServerConnection = jmxConnector.getMBeanServerConnection();
                 final ObjectName memoryMBean = new ObjectName("java.lang:type=Memory");
                 String gcCollectorMBeanName = options.get(JMX_GARBAGE_COLLECTOR_MBEAN);
@@ -376,11 +390,6 @@ public class MemoryConsumptionTestClient
                     }
                 }
             }
-            finally
-            {
-                jmxConnector.close();
-            }
-
         }
         return null;
     }
@@ -391,36 +400,31 @@ public class MemoryConsumptionTestClient
         final MemoryStatistic memoryStatistics = new MemoryStatistic();
         final CountDownLatch notificationReceived = new CountDownLatch(1);
         final ObjectName memoryMBean = new ObjectName("java.lang:type=Memory");
-        mBeanServerConnection.addNotificationListener(gcMBean, new NotificationListener()
-        {
-            @Override
-            public void handleNotification(Notification notification, Object handback)
+        mBeanServerConnection.addNotificationListener(gcMBean, (notification, handback) -> {
+            if (notification.getType().equals("com.sun.management.gc.notification"))
             {
-                if (notification.getType().equals("com.sun.management.gc.notification"))
+                CompositeData userData = (CompositeData) notification.getUserData();
+                try
                 {
-                    CompositeData userData = (CompositeData) notification.getUserData();
-                    try
+                    Object gcAction = userData.get("gcAction");
+                    Object gcCause = userData.get("gcCause");
+                    if ("System.gc()".equals(gcCause) && String.valueOf(gcAction).contains("end of major GC"))
                     {
-                        Object gcAction = userData.get("gcAction");
-                        Object gcCause = userData.get("gcCause");
-                        if ("System.gc()".equals(gcCause) && String.valueOf(gcAction).contains("end of major GC"))
+                        try
                         {
-                            try
-                            {
-                                collectMemoryStatistics(memoryStatistics, mBeanServerConnection, memoryMBean);
-                            }
-                            finally
-                            {
-                                notificationReceived.countDown();
-                            }
-
+                            collectMemoryStatistics(memoryStatistics, mBeanServerConnection, memoryMBean);
                         }
+                        finally
+                        {
+                            notificationReceived.countDown();
+                        }
+
                     }
-                    catch (Exception e)
-                    {
-                        e.printStackTrace();
-                        notificationReceived.countDown();
-                    }
+                }
+                catch (Exception e)
+                {
+                    e.printStackTrace();
+                    notificationReceived.countDown();
                 }
             }
         }, null, null);
@@ -453,13 +457,13 @@ public class MemoryConsumptionTestClient
         {
             return String.valueOf(value/1024) + "kB";
         }
-        else if (value <= 1024l * 1024l * 1024l)
+        else if (value <= 1024L * 1024L * 1024L)
         {
-            return String.valueOf(value/1024l/1024l) + "MB";
+            return String.valueOf(value/1024L/1024L) + "MB";
         }
         else
         {
-            return String.valueOf(value/1024l/1024l/1024l) + "GB";
+            return String.valueOf(value/1024L/1024L/1024L) + "GB";
         }
     }
 
@@ -479,22 +483,22 @@ public class MemoryConsumptionTestClient
         private long heapUsage;
         private long directMemoryUsage;
 
-        public long getHeapUsage()
+        long getHeapUsage()
         {
             return heapUsage;
         }
 
-        public void setHeapUsage(long heapUsage)
+        void setHeapUsage(long heapUsage)
         {
             this.heapUsage = heapUsage;
         }
 
-        public long getDirectMemoryUsage()
+        long getDirectMemoryUsage()
         {
             return directMemoryUsage;
         }
 
-        public void setDirectMemoryUsage(long directMemoryUsage)
+        void setDirectMemoryUsage(long directMemoryUsage)
         {
             this.directMemoryUsage = directMemoryUsage;
         }


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org