package hudson.plugins.performance.parsers;
import hudson.plugins.performance.reports.PerformanceReport;
import hudson.plugins.performance.reports.UriReport;
import org.junit.Test;
import java.io.File;
import java.util.Map;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.fail;
public class TaurusParserTest {
public static final double DELTA = 0.000001;
@Test
public void testReadXML() throws Exception {
TaurusParser parser = new TaurusParser("xml report");
PerformanceReport report = parser.parse(new File(getClass().getResource("/TaurusXMLReport.xml").toURI()));
PerformanceReport prevReport = parser.parse(new File(getClass().getResource("/TaurusPreviousBuildReport.xml").toURI()));
assertNotNull(report);
checkPerformanceReport(report);
assertNotNull(prevReport);
report.setLastBuildReport(prevReport);
checkReportDiff(report);
Map<String, UriReport> uriReportMap = report.getUriReportMap();
assertEquals(2, uriReportMap.size());
for (String key : uriReportMap.keySet()) {
if ("__test_url1.org_".equals(key)) {
checkUriReport1(uriReportMap.get(key));
} else if ("__test_url2.com_".equals(key)) {
checkUriReport2(uriReportMap.get(key));
} else {
fail("There is not such key in test file: TaurusXMLReport.xml");
}
}
}
private void checkUriReport1(UriReport report) {
// Check values for __test_url1.org_
assertEquals("Check min", 0.15600 * 1000, report.getMin(), DELTA);
assertEquals("Check median", 0.84300 * 1000, report.getMedian(), DELTA);
assertEquals("Check line 90", 1.29300 * 1000, report.get90Line(), DELTA);
assertEquals("Check max", 1.71800 * 1000, report.getMax(), DELTA);
assertEquals("Check average", (long) (0.80638 * 1000), report.getAverage());
assertEquals("Check samples count", 326 + 11, report.samplesCount(), DELTA);
assertEquals("Check throughput", new Long(337), report.getThroughput());
assertEquals("Check errors", 3.264, report.errorPercent(), DELTA);
}
private void checkUriReport2(UriReport report) {
// Check values for __test_url2.com_
assertEquals("Check min", 0.06400 * 1000, report.getMin(), DELTA);
assertEquals("Check median", 0.07200 * 1000, report.getMedian(), DELTA);
assertEquals("Check line 90", 0.18900 * 1000, report.get90Line(), DELTA);
assertEquals("Check max", 0.52200 * 1000, report.getMax(), DELTA);
assertEquals("Check average", (long) (0.11568 * 1000), report.getAverage());
assertEquals("Check samples count", 340, report.samplesCount(), DELTA);
assertEquals("Check throughput", new Long(340), report.getThroughput());
assertEquals("Check errors", 0.0, report.errorPercent(), DELTA);
}
private void checkPerformanceReport(PerformanceReport report) {
// Check summary values
assertEquals("Check min", 0.06400 * 1000, report.getMin(), DELTA);
assertEquals("Check median", 0.18700 * 1000, report.getMedian(), DELTA);
assertEquals("Check line 90", 1.15800 * 1000, report.get90Line(), DELTA);
assertEquals("Check max", 1.71800 * 1000, report.getMax(), DELTA);
assertEquals("Check average", (long) (0.45950 * 1000), report.getAverage());
assertEquals("Check samples count", 666 + 11, report.samplesCount(), DELTA);
assertEquals("Check total KB", 6946463, report.getTotalTrafficInKb(), DELTA);
}
private void checkReportDiff(PerformanceReport report) {
// Check summary values
assertEquals("Check diff median", -14.0, report.getMedianDiff(), DELTA);
assertEquals("Check diff average", -400, report.getAverageDiff());
assertEquals("Check diff samples count", 232, report.getSamplesCountDiff());
}
@Test
public void testGlobPattern() throws Exception {
assertEquals("**/*.xml", new TaurusParser("").getDefaultGlobPattern());
}
}