diff --git a/src/test/java/kieker/analysis/plugin/filter/sink/CPUUtilizationDisplayFilterTest.java b/src/test/java/kieker/analysis/plugin/filter/sink/CPUUtilizationDisplayFilterTest.java new file mode 100644 index 0000000000000000000000000000000000000000..6d21b328271def912a1424a06f0c6e1728da83e5 --- /dev/null +++ b/src/test/java/kieker/analysis/plugin/filter/sink/CPUUtilizationDisplayFilterTest.java @@ -0,0 +1,78 @@ +package kieker.analysis.plugin.filter.sink; + +import static org.hamcrest.core.Is.is; +import static org.junit.Assert.assertThat; +import static teetime.framework.test.StageTester.test; + +import java.util.Date; +import java.util.concurrent.TimeUnit; + +import org.junit.Before; +import org.junit.Test; + +import kieker.common.record.system.CPUUtilizationRecord; + +/** + * Test cases for CPUUtilizationDisplayFilter + * + * @author Lars Erik Bluemke + */ +public class CPUUtilizationDisplayFilterTest { + + private CPUUtilizationRecord record; + private CPUUtilizationDisplayFilter cpuUtilFilter; + private String id; + + // Constructor arguments for filter + private final int numberOfEntries = 3; + private final TimeUnit recordsTimeUnit = TimeUnit.MILLISECONDS; + private final Number[] warningIntervals = { 1, 2, 3 }; + + // Record data + private final long timestamp = 1L; + private final String hostname = "hostname"; + private final String cpuID = "cpu_1"; + private final double user = 2.0; + private final double system = 3.0; + private final double wait = 4.0; + private final double nice = 5.0; + private final double irq = 6.0; + private final double totalUtilisation = 7.0; + private final double idle = 8.0; + + @Before + public void initializeCPUUtilizationDisplayFilter() { + record = new CPUUtilizationRecord(timestamp, hostname, cpuID, user, system, wait, nice, irq, totalUtilisation, idle); + cpuUtilFilter = new CPUUtilizationDisplayFilter(numberOfEntries, warningIntervals, recordsTimeUnit); + id = record.getHostname() + " - " + record.getCpuID(); + } + + @Test + public void meterGaugeValueShouldBeCorrect() { + test(cpuUtilFilter).and().send(record).to(cpuUtilFilter.getInputPort()).start(); + + assertThat((double) cpuUtilFilter.getMeterGauge().getValue(id) / 100, is(totalUtilisation)); + } + + @Test + public void xyPlotEntriesShouldBeCorrect() { + test(cpuUtilFilter).and().send(record).to(cpuUtilFilter.getInputPort()).start(); + + final Date date = new Date(TimeUnit.MILLISECONDS.convert(record.getLoggingTimestamp(), recordsTimeUnit)); + final String minutesAndSeconds = date.toString().substring(14, 19); + + double actualUser = (double) cpuUtilFilter.getXYPlot().getEntries(id + " - " + "user").get(minutesAndSeconds); + double actualSystem = (double) cpuUtilFilter.getXYPlot().getEntries(id + " - " + "system").get(minutesAndSeconds); + double actualNice = (double) cpuUtilFilter.getXYPlot().getEntries(id + " - " + "nice").get(minutesAndSeconds); + double actualIrq = (double) cpuUtilFilter.getXYPlot().getEntries(id + " - " + "irq").get(minutesAndSeconds); + double actualTotalUtilization = (double) cpuUtilFilter.getXYPlot().getEntries(id + " - " + "totalUtilization").get(minutesAndSeconds); + double actualIdle = (double) cpuUtilFilter.getXYPlot().getEntries(id + " - " + "idle").get(minutesAndSeconds); + + assertThat(actualUser / 100, is(user)); + assertThat(actualSystem / 100, is(system)); + assertThat(actualNice / 100, is(nice)); + assertThat(actualIrq / 100, is(irq)); + assertThat(actualTotalUtilization / 100, is(totalUtilisation)); + assertThat(actualIdle / 100, is(idle)); + } +}