From d2e02fd6b095695ef9fd4e6484f558a5505f04d3 Mon Sep 17 00:00:00 2001 From: Alex Rudyy Date: Tue, 29 Jan 2013 13:08:48 +0000 Subject: QPID-4390: Fix StatisticsReportingTest git-svn-id: https://svn.apache.org/repos/asf/qpid/branches/java-broker-config-qpid-4390@1439880 13f79535-47bb-0310-9956-ffa450edef68 --- .../qpid/server/stats/StatisticsReportingTest.java | 37 +++++++++++++++------- .../main/java/org/apache/qpid/util/LogMonitor.java | 35 ++++++++++++++++++++ 2 files changed, 61 insertions(+), 11 deletions(-) diff --git a/qpid/java/systests/src/main/java/org/apache/qpid/server/stats/StatisticsReportingTest.java b/qpid/java/systests/src/main/java/org/apache/qpid/server/stats/StatisticsReportingTest.java index 0feec67459..6d53896371 100644 --- a/qpid/java/systests/src/main/java/org/apache/qpid/server/stats/StatisticsReportingTest.java +++ b/qpid/java/systests/src/main/java/org/apache/qpid/server/stats/StatisticsReportingTest.java @@ -33,6 +33,7 @@ import org.apache.qpid.test.utils.TestBrokerConfiguration; import org.apache.qpid.util.LogMonitor; import java.util.List; +import java.util.Map; import javax.jms.Connection; import javax.jms.Destination; @@ -50,6 +51,7 @@ public class StatisticsReportingTest extends QpidBrokerTestCase private static final String VHOST_NAME1 = "vhost1"; private static final String VHOST_NAME2 = "vhost2"; private static final String VHOST_NAME3 = "vhost3"; + private static long STATISTICS_REPORTING_PERIOD_IN_SECONDS = 10l; protected LogMonitor _monitor; protected static final String USER = "admin"; @@ -58,6 +60,7 @@ public class StatisticsReportingTest extends QpidBrokerTestCase protected String _queueName = "statistics"; protected Destination _queue; protected String _brokerUrl; + private long _startTestTime; @Override public void setUp() throws Exception @@ -70,10 +73,11 @@ public class StatisticsReportingTest extends QpidBrokerTestCase { TestBrokerConfiguration config = getBrokerConfiguration(); config.removeObjectConfiguration(TestBrokerConfiguration.ENTRY_NAME_VIRTUAL_HOST); - config.setBrokerAttribute(Broker.STATISTICS_REPORTING_PERIOD, 10); + config.setBrokerAttribute(Broker.STATISTICS_REPORTING_PERIOD, STATISTICS_REPORTING_PERIOD_IN_SECONDS); } _monitor = new LogMonitor(_outputFile); + _startTestTime = System.currentTimeMillis(); super.setUp(); @@ -106,17 +110,26 @@ public class StatisticsReportingTest extends QpidBrokerTestCase sendUsing(_conToVhost2, 20, 100); sendUsing(_conToVhost3, 15, 100); - Thread.sleep(10 * 1000); // 15s + Thread.sleep(STATISTICS_REPORTING_PERIOD_IN_SECONDS * 1000); - List brokerStatsData = _monitor.findMatches("BRK-1008"); - List brokerStatsMessages = _monitor.findMatches("BRK-1009"); - List vhostStatsData = _monitor.findMatches("VHT-1003"); - List vhostStatsMessages = _monitor.findMatches("VHT-1004"); + Map> brokerStatsData = _monitor.findMatches("BRK-1008", "BRK-1009", "VHT-1003", "VHT-1004"); + long endTestTime = System.currentTimeMillis(); + + int maxNumberOfReports = (int)((endTestTime - _startTestTime)/STATISTICS_REPORTING_PERIOD_IN_SECONDS); + + int brk1008LinesNumber = brokerStatsData.get("BRK-1008").size(); + int brk1009LinesNumber = brokerStatsData.get("BRK-1009").size(); + int vht1003LinesNumber = brokerStatsData.get("VHT-1003").size(); + int vht1004LinesNumber = brokerStatsData.get("VHT-1004").size(); - assertEquals("Incorrect number of broker data stats log messages", 2, brokerStatsData.size()); - assertEquals("Incorrect number of broker message stats log messages", 2, brokerStatsMessages.size()); - assertEquals("Incorrect number of virtualhost data stats log messages", 6, vhostStatsData.size()); - assertEquals("Incorrect number of virtualhost message stats log messages", 6, vhostStatsMessages.size()); + assertTrue("Incorrect number of broker data stats log messages:" + brk1008LinesNumber, 2 <= brk1008LinesNumber + && brk1008LinesNumber <= maxNumberOfReports * 2); + assertTrue("Incorrect number of broker message stats log messages:" + brk1009LinesNumber, 2 <= brk1009LinesNumber + && brk1009LinesNumber <= maxNumberOfReports * 2); + assertTrue("Incorrect number of virtualhost data stats log messages:" + vht1003LinesNumber, 6 <= vht1003LinesNumber + && vht1003LinesNumber <= maxNumberOfReports * 6); + assertTrue("Incorrect number of virtualhost message stats log messages: " + vht1004LinesNumber, 6 <= vht1004LinesNumber + && vht1004LinesNumber <= maxNumberOfReports * 6); } /** @@ -143,7 +156,7 @@ public class StatisticsReportingTest extends QpidBrokerTestCase private void sendUsing(Connection con, int number, int size) throws Exception { - Session session = con.createSession(false, Session.AUTO_ACKNOWLEDGE); + Session session = con.createSession(true, Session.SESSION_TRANSACTED); createQueue(session); MessageProducer producer = session.createProducer(_queue); String content = new String(new byte[size]); @@ -152,6 +165,8 @@ public class StatisticsReportingTest extends QpidBrokerTestCase { producer.send(msg); } + session.commit(); + session.close(); } private void createQueue(Session session) throws AMQException, JMSException diff --git a/qpid/java/systests/src/main/java/org/apache/qpid/util/LogMonitor.java b/qpid/java/systests/src/main/java/org/apache/qpid/util/LogMonitor.java index d6b8a8400c..d77731d09f 100644 --- a/qpid/java/systests/src/main/java/org/apache/qpid/util/LogMonitor.java +++ b/qpid/java/systests/src/main/java/org/apache/qpid/util/LogMonitor.java @@ -30,8 +30,10 @@ import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; import java.io.LineNumberReader; +import java.util.HashMap; import java.util.LinkedList; import java.util.List; +import java.util.Map; /** * Utility to simplify the monitoring of Log4j file output @@ -160,6 +162,39 @@ public class LogMonitor return results; } + public Map> findMatches(String... pattern) throws IOException + { + + Map> results= new HashMap>(); + for (String p : pattern) + { + results.put(p, new LinkedList()); + } + LineNumberReader reader = new LineNumberReader(new FileReader(_logfile)); + try + { + while (reader.ready()) + { + String line = reader.readLine(); + if (reader.getLineNumber() > _linesToSkip) + { + for (String p : pattern) + { + if (line.contains(p)) + { + results.get(p).add(line); + } + } + } + } + } + finally + { + reader.close(); + } + + return results; + } /** * Checks the log file for a given message to appear. If the caller * has previously called {@link #markDiscardPoint()}, lines up until the discard -- cgit v1.2.1