/*******************************************************************************
* This file is part of OpenNMS(R).
*
* Copyright (C) 2010-2011 The OpenNMS Group, Inc.
* OpenNMS(R) is Copyright (C) 1999-2011 The OpenNMS Group, Inc.
*
* OpenNMS(R) is a registered trademark of The OpenNMS Group, Inc.
*
* OpenNMS(R) is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published
* by the Free Software Foundation, either version 3 of the License,
* or (at your option) any later version.
*
* OpenNMS(R) is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with OpenNMS(R). If not, see:
* http://www.gnu.org/licenses/
*
* For more information contact:
* OpenNMS(R) Licensing <license@opennms.org>
* http://www.opennms.org/
* http://www.opennms.com/
*******************************************************************************/
package org.opennms.util.ilr;
import static org.junit.Assert.*;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import org.junit.Ignore;
import org.junit.Test;
import org.opennms.util.ilr.Collector;
import org.opennms.util.ilr.Collector.SortColumn;
import org.opennms.util.ilr.Collector.SortOrder;
public class CollectorTest {
private Date getDate(String dateString) throws ParseException {
return new SimpleDateFormat ("yyyy-MM-dd HH:mm:ss,S").parse(dateString);
}
@Test
public void testStartNotSetEnd() throws ParseException {
Collector c = new Collector();
c.addLog("2010-05-26 12:12:38,027 DEBUG [CollectdScheduler-50 Pool-fiber11] Collectd: collector.collect: end:24/216.216.217.254/SNMP");
c.addLog("2010-05-26 12:12:40,883 DEBUG [CollectdScheduler-50 Pool-fiber11] Collectd: collector.collect: begin:24/216.216.217.254/SNMP");
c.addLog("2010-05-26 12:12:48,027 DEBUG [CollectdScheduler-50 Pool-fiber11] Collectd: collector.collect: end:24/216.216.217.254/SNMP");
c.addLog("2010-05-26 12:12:50,883 DEBUG [CollectdScheduler-50 Pool-fiber11] Collectd: collector.collect: begin:24/216.216.217.254/SNMP");
assertEquals(getDate("2010-05-26 12:12:40,883"), c.getStartTime());
assertEquals(getDate("2010-05-26 12:12:48,027"), c.getEndTime());
assertEquals(7144, c.getDuration());
}
@Test
public void testStartAndEndTime() throws ParseException {
Collector c = new Collector();
c.addLog("2010-05-26 12:12:40,883 DEBUG [CollectdScheduler-50 Pool-fiber11] Collectd: collector.collect: begin:24/216.216.217.254/SNMP");
c.addLog("2010-05-26 12:12:48,027 DEBUG [CollectdScheduler-50 Pool-fiber11] Collectd: collector.collect: end:24/216.216.217.254/SNMP");
assertEquals(getDate("2010-05-26 12:12:40,883"), c.getStartTime());
assertEquals(getDate("2010-05-26 12:12:48,027"), c.getEndTime());
assertEquals(7144, c.getDuration());
}
@Test
public void testServiceCount(){
Collector c = new Collector();
assertEquals(0, c.getServiceCount());
c.addLog("2010-05-26 12:12:40,883 DEBUG [CollectdScheduler-50 Pool-fiber11] Collectd: collector.collect: begin:24/216.216.217.254/SNMP");
c.addLog("2010-05-26 12:12:48,027 DEBUG [CollectdScheduler-50 Pool-fiber11] Collectd: collector.collect: end:24/216.216.217.254/SNMP");
assertEquals(1, c.getServiceCount());
c.addLog("2010-06-01 09:36:28,950 DEBUG [CollectdScheduler-50 Pool-fiber1] Collectd: collector.collect: persistDataQueueing: begin: 19/209.61.128.9/SNMP");
c.addLog("2010-06-01 09:36:28,995 DEBUG [CollectdScheduler-50 Pool-fiber1] Collectd: collector.collect: persistDataQueueing: end: 19/209.61.128.9/SNMP");
c.addLog("2010-05-26 12:12:40,883 DEBUG [CollectdScheduler-50 Pool-fiber11] Collectd: collector.collect: begin:24/216.216.217.254/SNMP");
c.addLog("2010-05-26 12:12:48,027 DEBUG [CollectdScheduler-50 Pool-fiber11] Collectd: collector.collect: end:24/216.216.217.254/SNMP");
c.addLog("2010-06-01 09:36:02,541 DEBUG [CollectdScheduler-50 Pool-fiber1] Collectd: collector.collect: end:7/172.20.1.12/SNMP");
c.addLog("2010-06-01 09:36:02,542 DEBUG [CollectdScheduler-50 Pool-fiber1] Collectd: collector.collect: begin:27/172.20.1.6/SNMP");
c.addLog("2010-06-01 09:36:02,544 DEBUG [CollectdScheduler-50 Pool-fiber1] Collectd: collector.collect: begin:27/172.20.1.6/SNMP");
c.addLog("2010-06-01 09:36:03,508 DEBUG [CollectdScheduler-50 Pool-fiber1] Collectd: collector.collect: end:27/172.20.1.6/SNMP");
c.addLog("2010-06-01 09:36:02,541 DEBUG [CollectdScheduler-50 Pool-fiber1] Collectd: collector.collect: error: 7/172.20.1.12/SNMP: org.opennms.netmgt.collectd.CollectionTimedOut: Timeout retrieving SnmpCollectors for 172.20.1.12 for kenny.internal.opennms.com/172.20.1.12: SnmpCollectors for 172.20.1.12: snmpTimeoutError for: kenny.internal.opennms.com/172.20.1.12");
c.addLog("2010-06-01 09:36:27,644 DEBUG [CollectdScheduler-50 Pool-fiber1] Collectd: collector.collect: begin:19/209.61.128.9/SNMP");
c.addLog("2010-06-01 09:36:28,950 DEBUG [CollectdScheduler-50 Pool-fiber1] Collectd: collector.collect: end:19/209.61.128.9/SNMP");
c.addLog("2010-06-01 09:33:56,292 DEBUG [CollectdScheduler-50 Pool-fiber1] Collectd: collector.collect: begin:83/172.20.1.15/SNMP");
c.addLog("2010-06-01 09:33:56,440 DEBUG [CollectdScheduler-50 Pool-fiber1] Collectd: collector.collect: end:83/172.20.1.15/SNMP");
assertEquals(5, c.getServiceCount());
}
@Test
public void testThreadcount(){
Collector c = new Collector();
assertEquals(0, c.getThreadCount());
c.addLog("2010-05-26 12:12:40,883 DEBUG [CollectdScheduler-50 Pool-fiber11] Collectd: collector.collect: begin:24/216.216.217.254/SNMP");
c.addLog("2010-05-26 12:12:48,027 DEBUG [CollectdScheduler-50 Pool-fiber11] Collectd: collector.collect: end:24/216.216.217.254/SNMP");
assertEquals(1, c.getThreadCount());
c.addLog("2010-06-01 09:36:28,950 DEBUG [CollectdScheduler-50 Pool-fiber1] Collectd: collector.collect: persistDataQueueing: begin: 19/209.61.128.9/SNMP");
c.addLog("2010-06-01 09:36:28,995 DEBUG [CollectdScheduler-50 Pool-fiber1] Collectd: collector.collect: persistDataQueueing: end: 19/209.61.128.9/SNMP");
c.addLog("2010-06-01 09:33:31,964 DEBUG [CollectdScheduler-50 Pool-fiber0] Collectd: collector.collect: begin:60/172.20.1.202/SNMP");
c.addLog("2010-06-01 09:33:32,477 DEBUG [CollectdScheduler-50 Pool-fiber0] Collectd: collector.collect: end:60/172.20.1.202/SNMP");
c.addLog("2010-06-01 08:45:12,104 DEBUG [CollectdScheduler-50 Pool-fiber2] Collectd: collector.collect: persistDataQueueing: begin: 86/172.20.1.25/WMI");
c.addLog("2010-06-01 08:45:12,104 DEBUG [CollectdScheduler-50 Pool-fiber2] Collectd: collector.collect: persistDataQueueing: end: 86/172.20.1.25/WMI");
c.addLog("2010-06-01 08:39:46,648 DEBUG [CollectdScheduler-50 Pool-fiber3] Collectd: collector.collect: begin:58/172.20.1.201/SNMP");
c.addLog("2010-06-01 08:39:46,650 DEBUG [CollectdScheduler-50 Pool-fiber3] Collectd: collector.collect: begin:58/172.20.1.201/SNMP");
assertEquals(5, c.getThreadCount());
}
@Test
public void testCollectionsPerService() {
Collector c = new Collector();
c.addLog("2010-05-26 12:12:40,883 DEBUG [CollectdScheduler-50 Pool-fiber11] Collectd: collector.collect: begin:24/216.216.217.254/SNMP");
c.addLog("2010-05-26 12:12:48,027 DEBUG [CollectdScheduler-50 Pool-fiber11] Collectd: collector.collect: end:24/216.216.217.254/SNMP");
c.addLog("2010-06-01 09:36:28,950 DEBUG [CollectdScheduler-50 Pool-fiber1] Collectd: collector.collect: persistDataQueueing: begin: 19/209.61.128.9/SNMP");
c.addLog("2010-06-01 09:36:28,995 DEBUG [CollectdScheduler-50 Pool-fiber1] Collectd: collector.collect: persistDataQueueing: end: 19/209.61.128.9/SNMP");
c.addLog("2010-06-01 09:33:31,964 DEBUG [CollectdScheduler-50 Pool-fiber0] Collectd: collector.collect: begin:60/172.20.1.202/SNMP");
c.addLog("2010-06-01 09:33:32,477 DEBUG [CollectdScheduler-50 Pool-fiber0] Collectd: collector.collect: end:60/172.20.1.202/SNMP");
c.addLog("2010-06-01 08:45:12,104 DEBUG [CollectdScheduler-50 Pool-fiber2] Collectd: collector.collect: persistDataQueueing: begin: 86/172.20.1.25/WMI");
c.addLog("2010-06-01 08:45:12,104 DEBUG [CollectdScheduler-50 Pool-fiber2] Collectd: collector.collect: persistDataQueueing: end: 86/172.20.1.25/WMI");
c.addLog("2010-06-01 08:39:46,648 DEBUG [CollectdScheduler-50 Pool-fiber3] Collectd: collector.collect: begin:58/172.20.1.201/SNMP");
c.addLog("2010-06-01 08:39:46,650 DEBUG [CollectdScheduler-50 Pool-fiber3] Collectd: collector.collect: begin:58/172.20.1.201/SNMP");
assertEquals(1,c.getCollectionsPerService("24/216.216.217.254/SNMP"));
assertEquals(0,c.getCollectionsPerService("19/209.61.128.9/SNMP"));
assertEquals(1,c.getCollectionsPerService("60/172.20.1.202/SNMP"));
assertEquals(0,c.getCollectionsPerService("86/172.20.1.25/WMI"));
assertEquals(0,c.getCollectionsPerService("58/172.20.1.201/SNMP"));
}
@Test
public void testAverageCollectionTimePerService() {
Collector c = new Collector();
c.addLog("2010-05-26 12:12:40,883 DEBUG [CollectdScheduler-50 Pool-fiber11] Collectd: collector.collect: begin:24/216.216.217.254/SNMP");
c.addLog("2010-05-26 12:12:48,027 DEBUG [CollectdScheduler-50 Pool-fiber11] Collectd: collector.collect: end:24/216.216.217.254/SNMP");
c.addLog("2010-06-01 09:36:28,950 DEBUG [CollectdScheduler-50 Pool-fiber1] Collectd: collector.collect: persistDataQueueing: begin: 19/209.61.128.9/SNMP");
c.addLog("2010-06-01 09:36:28,995 DEBUG [CollectdScheduler-50 Pool-fiber1] Collectd: collector.collect: persistDataQueueing: end: 19/209.61.128.9/SNMP");
c.addLog("2010-06-01 09:33:31,964 DEBUG [CollectdScheduler-50 Pool-fiber0] Collectd: collector.collect: begin:60/172.20.1.202/SNMP");
c.addLog("2010-06-01 09:33:32,477 DEBUG [CollectdScheduler-50 Pool-fiber0] Collectd: collector.collect: end:60/172.20.1.202/SNMP");
c.addLog("2010-06-01 08:45:12,104 DEBUG [CollectdScheduler-50 Pool-fiber2] Collectd: collector.collect: persistDataQueueing: begin: 86/172.20.1.25/WMI");
c.addLog("2010-06-01 08:45:12,104 DEBUG [CollectdScheduler-50 Pool-fiber2] Collectd: collector.collect: persistDataQueueing: end: 86/172.20.1.25/WMI");
c.addLog("2010-06-01 08:39:46,648 DEBUG [CollectdScheduler-50 Pool-fiber3] Collectd: collector.collect: begin:58/172.20.1.201/SNMP");
c.addLog("2010-06-01 08:39:46,650 DEBUG [CollectdScheduler-50 Pool-fiber3] Collectd: collector.collect: begin:58/172.20.1.201/SNMP");
assertEquals(7144,c.getAverageCollectionTimePerService("24/216.216.217.254/SNMP"));
assertEquals(0,c.getAverageCollectionTimePerService("19/209.61.128.9/SNMP"));
assertEquals(513,c.getAverageCollectionTimePerService("60/172.20.1.202/SNMP"));
assertEquals(0,c.getAverageCollectionTimePerService("86/172.20.1.25/WMI"));
assertEquals(0,c.getAverageCollectionTimePerService("58/172.20.1.201/SNMP"));
}
@Test
public void testTotalCollectionTimePerService() {
Collector c = new Collector();
c.addLog("2010-05-26 12:12:40,883 DEBUG [CollectdScheduler-50 Pool-fiber11] Collectd: collector.collect: begin:24/216.216.217.254/SNMP");
c.addLog("2010-05-26 12:12:48,027 DEBUG [CollectdScheduler-50 Pool-fiber11] Collectd: collector.collect: end:24/216.216.217.254/SNMP");
c.addLog("2010-06-01 09:36:28,950 DEBUG [CollectdScheduler-50 Pool-fiber1] Collectd: collector.collect: persistDataQueueing: begin: 19/209.61.128.9/SNMP");
c.addLog("2010-06-01 09:36:28,995 DEBUG [CollectdScheduler-50 Pool-fiber1] Collectd: collector.collect: persistDataQueueing: end: 19/209.61.128.9/SNMP");
c.addLog("2010-06-01 09:33:31,964 DEBUG [CollectdScheduler-50 Pool-fiber0] Collectd: collector.collect: begin:60/172.20.1.202/SNMP");
c.addLog("2010-06-01 09:33:32,477 DEBUG [CollectdScheduler-50 Pool-fiber0] Collectd: collector.collect: end:60/172.20.1.202/SNMP");
c.addLog("2010-06-01 08:45:12,104 DEBUG [CollectdScheduler-50 Pool-fiber2] Collectd: collector.collect: persistDataQueueing: begin: 86/172.20.1.25/WMI");
c.addLog("2010-06-01 08:45:12,104 DEBUG [CollectdScheduler-50 Pool-fiber2] Collectd: collector.collect: persistDataQueueing: end: 86/172.20.1.25/WMI");
c.addLog("2010-06-01 08:39:46,648 DEBUG [CollectdScheduler-50 Pool-fiber3] Collectd: collector.collect: begin:58/172.20.1.201/SNMP");
c.addLog("2010-06-01 08:39:46,650 DEBUG [CollectdScheduler-50 Pool-fiber3] Collectd: collector.collect: begin:58/172.20.1.201/SNMP");
assertEquals(7144,c.getAverageCollectionTimePerService("24/216.216.217.254/SNMP"));
assertEquals(0,c.getAverageCollectionTimePerService("19/209.61.128.9/SNMP"));
assertEquals(513,c.getAverageCollectionTimePerService("60/172.20.1.202/SNMP"));
assertEquals(0,c.getAverageCollectionTimePerService("86/172.20.1.25/WMI"));
assertEquals(0,c.getAverageCollectionTimePerService("58/172.20.1.201/SNMP"));
}
@Test
public void testTotalCollectionTime() {
Collector c = new Collector();
c.addLog("2010-03-13 02:20:30,525 DEBUG [CollectdScheduler-400 Pool-fiber51] Collectd: collector.collect: begin:32028/209.219.9.78/SNMP");
c.addLog("2010-03-13 02:21:09,976 DEBUG [CollectdScheduler-400 Pool-fiber51] Collectd: collector.collect: end:32028/209.219.9.78/SNMP");
c.addLog("2010-03-13 02:32:42,641 DEBUG [CollectdScheduler-400 Pool-fiber25] Collectd: collector.collect: begin:32028/209.219.9.78/SNMP");
c.addLog("2010-03-13 02:33:01,973 DEBUG [CollectdScheduler-400 Pool-fiber25] Collectd: collector.collect: end:32028/209.219.9.78/SNMP");
c.addLog("2010-03-13 02:43:27,749 DEBUG [CollectdScheduler-400 Pool-fiber112] Collectd: collector.collect: begin:32028/209.219.9.78/SNMP");
c.addLog("2010-03-13 02:43:31,517 DEBUG [CollectdScheduler-400 Pool-fiber112] Collectd: collector.collect: end:32028/209.219.9.78/SNMP");
c.addLog("2010-03-13 02:54:13,334 DEBUG [CollectdScheduler-400 Pool-fiber166] Collectd: collector.collect: begin:32028/209.219.9.78/SNMP");
c.addLog("2010-03-13 02:54:35,223 DEBUG [CollectdScheduler-400 Pool-fiber166] Collectd: collector.collect: end:32028/209.219.9.78/SNMP");
c.addLog("2010-03-13 03:05:47,554 DEBUG [CollectdScheduler-400 Pool-fiber307] Collectd: collector.collect: begin:32028/209.219.9.78/SNMP");
c.addLog("2010-03-13 03:06:28,926 DEBUG [CollectdScheduler-400 Pool-fiber307] Collectd: collector.collect: end:32028/209.219.9.78/SNMP");
c.addLog("2010-03-13 03:18:27,559 DEBUG [CollectdScheduler-400 Pool-fiber264] Collectd: collector.collect: begin:32028/209.219.9.78/SNMP");
c.addLog("2010-03-13 03:19:06,934 DEBUG [CollectdScheduler-400 Pool-fiber264] Collectd: collector.collect: end:32028/209.219.9.78/SNMP");
assertEquals(39451+19332+3768+21889+41372+39375,c.getTotalCollectionTimePerService("32028/209.219.9.78/SNMP"));
}
@Test
public void testReadLogMessagesFromFile () throws IOException {
Collector c = new Collector();
c.readLogMessagesFromFile("TestLogFile.log");
assertEquals(7144,c.getAverageCollectionTimePerService("24/216.216.217.254/SNMP"));
assertEquals(0,c.getAverageCollectionTimePerService("19/209.61.128.9/SNMP"));
assertEquals(513,c.getAverageCollectionTimePerService("60/172.20.1.202/SNMP"));
assertEquals(0,c.getAverageCollectionTimePerService("86/172.20.1.25/WMI"));
assertEquals(0,c.getAverageCollectionTimePerService("58/172.20.1.201/SNMP"));
}
@Test
public void testPrintGlobalStats () throws IOException {
Collector c = new Collector ();
c.readLogMessagesFromFile("TestLogFile.log");
String expectedOutput =
"Start Time: 2010-05-26 12:12:40,883\n" +
"End Time: 2010-06-01 08:45:12,104\n" +
"Duration: 5d20h32m31.221s\n" +
"Total Services: 5\n" +
"Threads Used: 5\n";
StringWriter out = new StringWriter();
c.printGlobalStats(new PrintWriter(out, true));
String actualOutput = out.toString();
assertEquals(expectedOutput,actualOutput);
}
@Test
public void testPrintServiceStats () throws IOException {
Collector c = new Collector ();
c.readLogMessagesFromFile("TestLogFile.log");
String expectedOutput = String.format(Collector.SERVICE_DATA_FORMAT,
"24/216.216.217.254/SNMP",
"7.144s",
1,
"7.144s",
100.0,
"0s",
0.0,
"0s",
"7.144s",
"0s",
"0s"
);
StringWriter out = new StringWriter();
c.printServiceStats("24/216.216.217.254/SNMP", new PrintWriter(out, true));
String actualOutput = out.toString();
assertEquals(expectedOutput,actualOutput);
}
@Test
public void testFormatDuration () {
assertEquals("0s",Collector.formatDuration(0));
assertEquals("3s",Collector.formatDuration(3000));
assertEquals("7s",Collector.formatDuration(7000));
assertEquals("2.345s",Collector.formatDuration(2345));
assertEquals("1m",Collector.formatDuration(60000));
assertEquals("2m",Collector.formatDuration(120000));
assertEquals("2m3.456s",Collector.formatDuration(123456));
assertEquals("2m0.456s",Collector.formatDuration(120456));
assertEquals("1h",Collector.formatDuration(3600*1000));
assertEquals("2h",Collector.formatDuration(2*3600*1000));
assertEquals("1h1m1s",Collector.formatDuration(3600*1000+60000+1000));
assertEquals("1h0m1s",Collector.formatDuration(3600*1000+1000));
assertEquals("1d",Collector.formatDuration(3600*1000*24));
assertEquals("1d0h0m0.001s",Collector.formatDuration(3600*1000*24+1));
}
@Ignore
@Test
public void testPrintReport() throws IOException{
Collector c = new Collector();
c.readLogMessagesFromFile("TestLogFile.log");
StringWriter out = new StringWriter ();
c.printReport(new PrintWriter(out,true));
String expectedOutput = fromFile("TestLogFile.out");
String actualOutput = out.toString();
assertEquals(expectedOutput,actualOutput);
}
@Test
public void testSortByAverageCollectionTime() {
Collector c = new Collector();
c.setSortColumn(SortColumn.AVGCOLLECTTIME);
c.addLog("2010-03-13 02:21:30,000 DEBUG [CollectdScheduler-400 Pool-fiber51] Collectd: collector.collect: begin:0/1.1.1.1/SNMP");
c.addLog("2010-03-13 02:21:40,000 DEBUG [CollectdScheduler-400 Pool-fiber51] Collectd: collector.collect: end:0/1.1.1.1/SNMP");
c.addLog("2010-03-13 02:22:20,976 DEBUG [CollectdScheduler-400 Pool-fiber51] Collectd: collector.collect: begin:0/2.2.2.2/SNMP");
c.addLog("2010-03-13 02:22:50,976 DEBUG [CollectdScheduler-400 Pool-fiber51] Collectd: collector.collect: end:0/2.2.2.2/SNMP");
c.addLog("2010-03-13 02:23:30,000 DEBUG [CollectdScheduler-400 Pool-fiber51] Collectd: collector.collect: begin:0/3.3.3.3/SNMP");
c.addLog("2010-03-13 02:23:50,000 DEBUG [CollectdScheduler-400 Pool-fiber51] Collectd: collector.collect: end:0/3.3.3.3/SNMP");
List<ServiceCollector> collectors = c.getServiceCollectors();
assertEquals(3, collectors.size());
assertEquals(new Duration(30000), collectors.get(0).getAverageCollectionDuration());
assertEquals(new Duration(20000), collectors.get(1).getAverageCollectionDuration());
assertEquals(new Duration(10000), collectors.get(2).getAverageCollectionDuration());
}
@Test
public void testSortByTotalCollectionTime() {
Collector c = new Collector();
c.setSortColumn(SortColumn.AVGCOLLECTTIME);
c.addLog("2010-03-13 02:21:10,000 DEBUG [CollectdScheduler-400 Pool-fiber51] Collectd: collector.collect: begin:0/1.1.1.1/SNMP");
c.addLog("2010-03-13 02:21:20,000 DEBUG [CollectdScheduler-400 Pool-fiber51] Collectd: collector.collect: end:0/1.1.1.1/SNMP");
c.addLog("2010-03-13 02:21:30,000 DEBUG [CollectdScheduler-400 Pool-fiber51] Collectd: collector.collect: begin:0/1.1.1.1/SNMP");
c.addLog("2010-03-13 02:21:50,000 DEBUG [CollectdScheduler-400 Pool-fiber51] Collectd: collector.collect: end:0/1.1.1.1/SNMP");
c.addLog("2010-03-13 02:22:20,976 DEBUG [CollectdScheduler-400 Pool-fiber51] Collectd: collector.collect: begin:0/2.2.2.2/SNMP");
c.addLog("2010-03-13 02:22:25,976 DEBUG [CollectdScheduler-400 Pool-fiber51] Collectd: collector.collect: end:0/2.2.2.2/SNMP");
c.addLog("2010-03-13 02:23:20,000 DEBUG [CollectdScheduler-400 Pool-fiber51] Collectd: collector.collect: begin:0/3.3.3.3/SNMP");
c.addLog("2010-03-13 02:23:30,000 DEBUG [CollectdScheduler-400 Pool-fiber51] Collectd: collector.collect: end:0/3.3.3.3/SNMP");
List<ServiceCollector> collectors = c.getServiceCollectors();
assertEquals(3, collectors.size());
assertEquals(new Duration(30000), collectors.get(0).getTotalCollectionDuration());
assertEquals(new Duration(10000), collectors.get(1).getTotalCollectionDuration());
assertEquals(new Duration(5000), collectors.get(2).getTotalCollectionDuration());
}
@Test
public void testSortByTotalCollections() {
Collector c = new Collector();
c.setSortColumn(SortColumn.TOTALCOLLECTS);
c.addLog("2010-03-13 02:21:30,000 DEBUG [CollectdScheduler-400 Pool-fiber51] Collectd: collector.collect: begin:0/1.1.1.1/SNMP");
c.addLog("2010-03-13 02:21:31,000 DEBUG [CollectdScheduler-400 Pool-fiber51] Collectd: collector.collect: end:0/1.1.1.1/SNMP");
c.addLog("2010-03-13 02:21:32,000 DEBUG [CollectdScheduler-400 Pool-fiber51] Collectd: collector.collect: begin:0/1.1.1.1/SNMP");
c.addLog("2010-03-13 02:21:33,000 DEBUG [CollectdScheduler-400 Pool-fiber51] Collectd: collector.collect: end:0/1.1.1.1/SNMP");
c.addLog("2010-03-13 02:22:33,976 DEBUG [CollectdScheduler-400 Pool-fiber51] Collectd: collector.collect: begin:0/2.2.2.2/SNMP");
c.addLog("2010-03-13 02:22:34,976 DEBUG [CollectdScheduler-400 Pool-fiber51] Collectd: collector.collect: end:0/2.2.2.2/SNMP");
c.addLog("2010-03-13 02:22:34,976 DEBUG [CollectdScheduler-400 Pool-fiber51] Collectd: collector.collect: begin:0/2.2.2.2/SNMP");
c.addLog("2010-03-13 02:22:35,976 DEBUG [CollectdScheduler-400 Pool-fiber51] Collectd: collector.collect: end:0/2.2.2.2/SNMP");
c.addLog("2010-03-13 02:22:35,976 DEBUG [CollectdScheduler-400 Pool-fiber51] Collectd: collector.collect: begin:0/2.2.2.2/SNMP");
c.addLog("2010-03-13 02:22:36,976 DEBUG [CollectdScheduler-400 Pool-fiber51] Collectd: collector.collect: end:0/2.2.2.2/SNMP");
c.addLog("2010-03-13 02:23:37,000 DEBUG [CollectdScheduler-400 Pool-fiber51] Collectd: collector.collect: begin:0/3.3.3.3/SNMP");
c.addLog("2010-03-13 02:23:38,000 DEBUG [CollectdScheduler-400 Pool-fiber51] Collectd: collector.collect: end:0/3.3.3.3/SNMP");
List<ServiceCollector> collectors = c.getServiceCollectors();
assertEquals(3, collectors.size());
assertEquals(3, collectors.get(0).getCollectionCount());
assertEquals(2, collectors.get(1).getCollectionCount());
assertEquals(1, collectors.get(2).getCollectionCount());
}
@Test
public void testSortByAverageTimeBetweenCollections() {
Collector c = new Collector();
c.setSortColumn(SortColumn.AVGTIMEBETWEENCOLLECTS);
c.addLog("2010-03-13 02:21:30,000 DEBUG [CollectdScheduler-400 Pool-fiber51] Collectd: collector.collect: begin:0/1.1.1.1/SNMP");
c.addLog("2010-03-13 02:21:32,000 DEBUG [CollectdScheduler-400 Pool-fiber51] Collectd: collector.collect: end:0/1.1.1.1/SNMP");
c.addLog("2010-03-13 02:21:35,000 DEBUG [CollectdScheduler-400 Pool-fiber51] Collectd: collector.collect: begin:0/1.1.1.1/SNMP");
c.addLog("2010-03-13 02:21:36,000 DEBUG [CollectdScheduler-400 Pool-fiber51] Collectd: collector.collect: end:0/1.1.1.1/SNMP");
c.addLog("2010-03-13 02:22:20,976 DEBUG [CollectdScheduler-400 Pool-fiber51] Collectd: collector.collect: begin:0/2.2.2.2/SNMP");
c.addLog("2010-03-13 02:22:22,976 DEBUG [CollectdScheduler-400 Pool-fiber51] Collectd: collector.collect: end:0/2.2.2.2/SNMP");
c.addLog("2010-03-13 02:22:23,976 DEBUG [CollectdScheduler-400 Pool-fiber51] Collectd: collector.collect: begin:0/2.2.2.2/SNMP");
c.addLog("2010-03-13 02:22:25,976 DEBUG [CollectdScheduler-400 Pool-fiber51] Collectd: collector.collect: end:0/2.2.2.2/SNMP");
c.addLog("2010-03-13 02:23:30,000 DEBUG [CollectdScheduler-400 Pool-fiber51] Collectd: collector.collect: begin:0/3.3.3.3/SNMP");
c.addLog("2010-03-13 02:23:32,000 DEBUG [CollectdScheduler-400 Pool-fiber51] Collectd: collector.collect: end:0/3.3.3.3/SNMP");
c.addLog("2010-03-13 02:23:37,000 DEBUG [CollectdScheduler-400 Pool-fiber51] Collectd: collector.collect: begin:0/3.3.3.3/SNMP");
c.addLog("2010-03-13 02:23:38,000 DEBUG [CollectdScheduler-400 Pool-fiber51] Collectd: collector.collect: end:0/3.3.3.3/SNMP");
List<ServiceCollector> collectors = c.getServiceCollectors();
assertEquals(3, collectors.size());
assertEquals(5000, collectors.get(0).getAverageTimeBetweenCollections());
assertEquals(3000, collectors.get(1).getAverageTimeBetweenCollections());
assertEquals(1000, collectors.get(2).getAverageTimeBetweenCollections());
}
@Test
public void testSortBySuccessPercentage() {
Collector c = new Collector();
c.setSortColumn(SortColumn.SUCCESSPERCENTAGE);
c.addLog("2010-03-13 02:21:30,000 DEBUG [CollectdScheduler-400 Pool-fiber51] Collectd: collector.collect: begin:0/1.1.1.1/SNMP");
c.addLog("2010-03-13 02:21:30,000 DEBUG [CollectdScheduler-400 Pool-fiber51] Collectd: collector.collect: error:0/1.1.1.1/SNMP");
c.addLog("2010-03-13 02:21:40,000 DEBUG [CollectdScheduler-400 Pool-fiber51] Collectd: collector.collect: end:0/1.1.1.1/SNMP");
c.addLog("2010-03-13 02:22:20,976 DEBUG [CollectdScheduler-400 Pool-fiber51] Collectd: collector.collect: begin:0/2.2.2.2/SNMP");
c.addLog("2010-03-13 02:22:30,976 DEBUG [CollectdScheduler-400 Pool-fiber51] Collectd: collector.collect: end:0/2.2.2.2/SNMP");
c.addLog("2010-03-13 02:22:31,976 DEBUG [CollectdScheduler-400 Pool-fiber51] Collectd: collector.collect: begin:0/2.2.2.2/SNMP");
c.addLog("2010-03-13 02:22:35,976 DEBUG [CollectdScheduler-400 Pool-fiber51] Collectd: collector.collect: error:0/2.2.2.2/SNMP");
c.addLog("2010-03-13 02:22:41,976 DEBUG [CollectdScheduler-400 Pool-fiber51] Collectd: collector.collect: end:0/2.2.2.2/SNMP");
c.addLog("2010-03-13 02:23:30,000 DEBUG [CollectdScheduler-400 Pool-fiber51] Collectd: collector.collect: begin:0/3.3.3.3/SNMP");
c.addLog("2010-03-13 02:23:50,000 DEBUG [CollectdScheduler-400 Pool-fiber51] Collectd: collector.collect: end:0/3.3.3.3/SNMP");
List<ServiceCollector> collectors = c.getServiceCollectors();
assertEquals(3, collectors.size());
assertEquals(100.0, collectors.get(0).getSuccessPercentage(),0);
assertEquals(50.0, collectors.get(1).getSuccessPercentage(),0);
assertEquals(0.0, collectors.get(2).getSuccessPercentage(),0);
}
@Test
public void testSortBySuccessfulCollections() {
Collector c = new Collector();
c.setSortColumn(SortColumn.TOTALSUCCESSCOLLECTS);
c.addLog("2010-03-13 02:21:30,000 DEBUG [CollectdScheduler-400 Pool-fiber51] Collectd: collector.collect: begin:0/1.1.1.1/SNMP");
c.addLog("2010-03-13 02:21:40,000 DEBUG [CollectdScheduler-400 Pool-fiber51] Collectd: collector.collect: end:0/1.1.1.1/SNMP");
c.addLog("2010-03-13 02:21:41,000 DEBUG [CollectdScheduler-400 Pool-fiber51] Collectd: collector.collect: begin:0/1.1.1.1/SNMP");
c.addLog("2010-03-13 02:21:42,000 DEBUG [CollectdScheduler-400 Pool-fiber51] Collectd: collector.collect: end:0/1.1.1.1/SNMP");
c.addLog("2010-03-13 02:22:20,976 DEBUG [CollectdScheduler-400 Pool-fiber51] Collectd: collector.collect: begin:0/2.2.2.2/SNMP");
c.addLog("2010-03-13 02:22:50,976 DEBUG [CollectdScheduler-400 Pool-fiber51] Collectd: collector.collect: end:0/2.2.2.2/SNMP");
c.addLog("2010-03-13 02:23:30,000 DEBUG [CollectdScheduler-400 Pool-fiber51] Collectd: collector.collect: begin:0/3.3.3.3/SNMP");
c.addLog("2010-03-13 02:23:31,000 DEBUG [CollectdScheduler-400 Pool-fiber51] Collectd: collector.collect: end:0/3.3.3.3/SNMP");
c.addLog("2010-03-13 02:23:32,000 DEBUG [CollectdScheduler-400 Pool-fiber51] Collectd: collector.collect: begin:0/3.3.3.3/SNMP");
c.addLog("2010-03-13 02:23:33,000 DEBUG [CollectdScheduler-400 Pool-fiber51] Collectd: collector.collect: end:0/3.3.3.3/SNMP");
c.addLog("2010-03-13 02:23:34,000 DEBUG [CollectdScheduler-400 Pool-fiber51] Collectd: collector.collect: begin:0/3.3.3.3/SNMP");
c.addLog("2010-03-13 02:23:35,000 DEBUG [CollectdScheduler-400 Pool-fiber51] Collectd: collector.collect: end:0/3.3.3.3/SNMP");
List<ServiceCollector> collectors = c.getServiceCollectors();
assertEquals(3, collectors.size());
assertEquals(3, collectors.get(0).getSuccessfulCollectionCount());
assertEquals(2, collectors.get(1).getSuccessfulCollectionCount());
assertEquals(1, collectors.get(2).getSuccessfulCollectionCount());
}
@Test
public void testSortByAverageSuccessfulCollectionTime() {
Collector c = new Collector();
c.setSortColumn(SortColumn.AVGSUCCESSCOLLECTTIME);
c.addLog("2010-03-13 02:21:30,000 DEBUG [CollectdScheduler-400 Pool-fiber51] Collectd: collector.collect: begin:0/1.1.1.1/SNMP");
c.addLog("2010-03-13 02:21:40,000 DEBUG [CollectdScheduler-400 Pool-fiber51] Collectd: collector.collect: end:0/1.1.1.1/SNMP");
c.addLog("2010-03-13 02:22:20,976 DEBUG [CollectdScheduler-400 Pool-fiber51] Collectd: collector.collect: begin:0/2.2.2.2/SNMP");
c.addLog("2010-03-13 02:22:50,976 DEBUG [CollectdScheduler-400 Pool-fiber51] Collectd: collector.collect: end:0/2.2.2.2/SNMP");
c.addLog("2010-03-13 02:23:30,000 DEBUG [CollectdScheduler-400 Pool-fiber51] Collectd: collector.collect: begin:0/3.3.3.3/SNMP");
c.addLog("2010-03-13 02:23:50,000 DEBUG [CollectdScheduler-400 Pool-fiber51] Collectd: collector.collect: end:0/3.3.3.3/SNMP");
List<ServiceCollector> collectors = c.getServiceCollectors();
assertEquals(3, collectors.size());
assertEquals(new Duration(30000), collectors.get(0).getAverageCollectionDuration());
assertEquals(new Duration(20000), collectors.get(1).getAverageCollectionDuration());
assertEquals(new Duration(10000), collectors.get(2).getAverageCollectionDuration());
}
@Test
public void testSortByUnsuccessfulCollections() {
Collector c = new Collector();
c.setSortColumn(SortColumn.TOTALUNSUCCESSCOLLECTS);
c.addLog("2010-03-13 02:21:30,000 DEBUG [CollectdScheduler-400 Pool-fiber51] Collectd: collector.collect: begin:0/1.1.1.1/SNMP");
c.addLog("2010-03-13 02:21:30,000 DEBUG [CollectdScheduler-400 Pool-fiber51] Collectd: collector.collect: error:0/1.1.1.1/SNMP");
c.addLog("2010-03-13 02:21:40,000 DEBUG [CollectdScheduler-400 Pool-fiber51] Collectd: collector.collect: end:0/1.1.1.1/SNMP");
c.addLog("2010-03-13 02:22:20,976 DEBUG [CollectdScheduler-400 Pool-fiber51] Collectd: collector.collect: begin:0/2.2.2.2/SNMP");
c.addLog("2010-03-13 02:22:25,976 DEBUG [CollectdScheduler-400 Pool-fiber51] Collectd: collector.collect: error:0/2.2.2.2/SNMP");
c.addLog("2010-03-13 02:22:30,976 DEBUG [CollectdScheduler-400 Pool-fiber51] Collectd: collector.collect: end:0/2.2.2.2/SNMP");
c.addLog("2010-03-13 02:22:31,976 DEBUG [CollectdScheduler-400 Pool-fiber51] Collectd: collector.collect: begin:0/2.2.2.2/SNMP");
c.addLog("2010-03-13 02:22:35,976 DEBUG [CollectdScheduler-400 Pool-fiber51] Collectd: collector.collect: error:0/2.2.2.2/SNMP");
c.addLog("2010-03-13 02:22:41,976 DEBUG [CollectdScheduler-400 Pool-fiber51] Collectd: collector.collect: end:0/2.2.2.2/SNMP");
c.addLog("2010-03-13 02:23:30,000 DEBUG [CollectdScheduler-400 Pool-fiber51] Collectd: collector.collect: begin:0/3.3.3.3/SNMP");
c.addLog("2010-03-13 02:23:50,000 DEBUG [CollectdScheduler-400 Pool-fiber51] Collectd: collector.collect: end:0/3.3.3.3/SNMP");
List<ServiceCollector> collectors = c.getServiceCollectors();
assertEquals(3, collectors.size());
assertEquals(2, collectors.get(0).getErrorCollectionCount());
assertEquals(1, collectors.get(1).getErrorCollectionCount());
assertEquals(0, collectors.get(2).getErrorCollectionCount());
}
@Test
public void testSortByTotalPersistTime() {
Collector c = new Collector();
c.setSortColumn(SortColumn.TOTALPERSISTTIME);
c.addLog("2011-02-19 13:09:45,000 DEBUG [CollectdScheduler-200 Pool-fiber115] Collectd: collector.collect: persistDataQueueing: begin:0/1.1.1.1/SNMP");
c.addLog("2011-02-19 13:09:46,000 DEBUG [CollectdScheduler-200 Pool-fiber175] Collectd: collector.collect: persistDataQueueing: end:0/1.1.1.1/SNMP");
c.addLog("2011-02-19 13:09:47,000 DEBUG [CollectdScheduler-200 Pool-fiber115] Collectd: collector.collect: persistDataQueueing: begin:0/2.2.2.2/SNMP");
c.addLog("2011-02-19 13:09:56,000 DEBUG [CollectdScheduler-200 Pool-fiber175] Collectd: collector.collect: persistDataQueueing: end:0/2.2.2.2/SNMP");
c.addLog("2011-02-19 13:10:01,000 DEBUG [CollectdScheduler-200 Pool-fiber115] Collectd: collector.collect: persistDataQueueing: begin:0/3.3.3.3/SNMP");
c.addLog("2011-02-19 13:10:03,000 DEBUG [CollectdScheduler-200 Pool-fiber175] Collectd: collector.collect: persistDataQueueing: end:0/3.3.3.3/SNMP");
List<ServiceCollector> collectors = c.getServiceCollectors();
assertEquals(3, collectors.size());
assertEquals(9000, collectors.get(0).getTotalPersistTime());
assertEquals(2000, collectors.get(1).getTotalPersistTime());
assertEquals(1000, collectors.get(2).getTotalPersistTime());
}
@Test
public void testSortByUnsuccessfulPercentage() {
Collector c = new Collector();
c.setSortColumn(SortColumn.UNSUCCESSPERCENTAGE);
c.addLog("2010-03-13 02:21:30,000 DEBUG [CollectdScheduler-400 Pool-fiber51] Collectd: collector.collect: begin:0/1.1.1.1/SNMP");
c.addLog("2010-03-13 02:21:30,000 DEBUG [CollectdScheduler-400 Pool-fiber51] Collectd: collector.collect: error:0/1.1.1.1/SNMP");
c.addLog("2010-03-13 02:21:40,000 DEBUG [CollectdScheduler-400 Pool-fiber51] Collectd: collector.collect: end:0/1.1.1.1/SNMP");
c.addLog("2010-03-13 02:22:20,976 DEBUG [CollectdScheduler-400 Pool-fiber51] Collectd: collector.collect: begin:0/2.2.2.2/SNMP");
c.addLog("2010-03-13 02:22:30,976 DEBUG [CollectdScheduler-400 Pool-fiber51] Collectd: collector.collect: end:0/2.2.2.2/SNMP");
c.addLog("2010-03-13 02:22:31,976 DEBUG [CollectdScheduler-400 Pool-fiber51] Collectd: collector.collect: begin:0/2.2.2.2/SNMP");
c.addLog("2010-03-13 02:22:35,976 DEBUG [CollectdScheduler-400 Pool-fiber51] Collectd: collector.collect: error:0/2.2.2.2/SNMP");
c.addLog("2010-03-13 02:22:41,976 DEBUG [CollectdScheduler-400 Pool-fiber51] Collectd: collector.collect: end:0/2.2.2.2/SNMP");
c.addLog("2010-03-13 02:23:30,000 DEBUG [CollectdScheduler-400 Pool-fiber51] Collectd: collector.collect: begin:0/3.3.3.3/SNMP");
c.addLog("2010-03-13 02:23:50,000 DEBUG [CollectdScheduler-400 Pool-fiber51] Collectd: collector.collect: end:0/3.3.3.3/SNMP");
List<ServiceCollector> collectors = c.getServiceCollectors();
assertEquals(3, collectors.size());
assertEquals(100.0, collectors.get(0).getErrorPercentage(),0);
assertEquals(50.0, collectors.get(1).getErrorPercentage(),0);
assertEquals(0.0, collectors.get(2).getErrorPercentage(),0);
}
@Test
public void testSortByAverageUnsuccessfulCollectionTime() {
Collector c = new Collector();
c.setSortColumn(SortColumn.AVGUNSUCCESSCOLLECTTIME);
c.addLog("2010-03-13 02:21:30,000 DEBUG [CollectdScheduler-400 Pool-fiber51] Collectd: collector.collect: begin:0/1.1.1.1/SNMP");
c.addLog("2010-03-13 02:21:35,000 DEBUG [CollectdScheduler-400 Pool-fiber51] Collectd: collector.collect: error:0/1.1.1.1/SNMP");
c.addLog("2010-03-13 02:21:40,000 DEBUG [CollectdScheduler-400 Pool-fiber51] Collectd: collector.collect: end:0/1.1.1.1/SNMP");
c.addLog("2010-03-13 02:22:20,976 DEBUG [CollectdScheduler-400 Pool-fiber51] Collectd: collector.collect: begin:0/2.2.2.2/SNMP");
c.addLog("2010-03-13 02:22:25,976 DEBUG [CollectdScheduler-400 Pool-fiber51] Collectd: collector.collect: error:0/2.2.2.2/SNMP");
c.addLog("2010-03-13 02:22:40,976 DEBUG [CollectdScheduler-400 Pool-fiber51] Collectd: collector.collect: end:0/2.2.2.2/SNMP");
c.addLog("2010-03-13 02:23:31,976 DEBUG [CollectdScheduler-400 Pool-fiber51] Collectd: collector.collect: begin:0/2.2.2.2/SNMP");
c.addLog("2010-03-13 02:23:35,976 DEBUG [CollectdScheduler-400 Pool-fiber51] Collectd: collector.collect: error:0/2.2.2.2/SNMP");
c.addLog("2010-03-13 02:23:46,976 DEBUG [CollectdScheduler-400 Pool-fiber51] Collectd: collector.collect: end:0/2.2.2.2/SNMP");
c.addLog("2010-03-13 02:24:30,000 DEBUG [CollectdScheduler-400 Pool-fiber51] Collectd: collector.collect: begin:0/3.3.3.3/SNMP");
c.addLog("2010-03-13 02:24:50,000 DEBUG [CollectdScheduler-400 Pool-fiber51] Collectd: collector.collect: end:0/3.3.3.3/SNMP");
List<ServiceCollector> collectors = c.getServiceCollectors();
assertEquals(3, collectors.size());
assertEquals(17500, collectors.get(0).getAverageErrorCollectionTime());
assertEquals(10000, collectors.get(1).getAverageErrorCollectionTime());
assertEquals(0, collectors.get(2).getAverageErrorCollectionTime());
}
@Test
public void testSortByAverageCollectionTimeReversed() {
Collector c = new Collector();
c.setSortColumn(SortColumn.AVGCOLLECTTIME);
c.setSortOrder(SortOrder.ASCENDING);
c.addLog("2010-03-13 02:21:30,000 DEBUG [CollectdScheduler-400 Pool-fiber51] Collectd: collector.collect: begin:0/1.1.1.1/SNMP");
c.addLog("2010-03-13 02:21:40,000 DEBUG [CollectdScheduler-400 Pool-fiber51] Collectd: collector.collect: end:0/1.1.1.1/SNMP");
c.addLog("2010-03-13 02:22:20,976 DEBUG [CollectdScheduler-400 Pool-fiber51] Collectd: collector.collect: begin:0/2.2.2.2/SNMP");
c.addLog("2010-03-13 02:22:50,976 DEBUG [CollectdScheduler-400 Pool-fiber51] Collectd: collector.collect: end:0/2.2.2.2/SNMP");
c.addLog("2010-03-13 02:23:30,000 DEBUG [CollectdScheduler-400 Pool-fiber51] Collectd: collector.collect: begin:0/3.3.3.3/SNMP");
c.addLog("2010-03-13 02:23:50,000 DEBUG [CollectdScheduler-400 Pool-fiber51] Collectd: collector.collect: end:0/3.3.3.3/SNMP");
List<ServiceCollector> collectors = c.getServiceCollectors();
assertEquals(3, collectors.size());
assertEquals(new Duration(10000), collectors.get(0).getAverageCollectionDuration());
assertEquals(new Duration(20000), collectors.get(1).getAverageCollectionDuration());
assertEquals(new Duration(30000), collectors.get(2).getAverageCollectionDuration());
}
private String fromFile(String fileName) throws IOException {
StringBuilder buf = new StringBuilder();
File logFile = new File(fileName);
BufferedReader r = new BufferedReader(new FileReader(logFile));
String line = r.readLine();
while(line != null){
buf.append(line);
buf.append("\n");
line = r.readLine();
}
r.close();
return buf.toString();
}
}