package com.anjlab.ping.entities; import static org.junit.Assert.assertEquals; import java.io.FileInputStream; import java.io.IOException; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.List; import java.util.TimeZone; import org.junit.Assert; import org.junit.Test; import com.anjlab.ping.services.Application; import com.anjlab.ping.services.JobResultCSVImporter; import com.anjlab.ping.services.JobResultsAnalyzer; import com.anjlab.ping.services.Utils; public class TestJob { @Test public void testJobResult() { Job job = new Job(); job.setLastPingTimestamp(new Date(0)); job.setLastPingResult(Job.PING_RESULT_NOT_AVAILABLE); TimeZone timeZone = TimeZone.getTimeZone("Europe/Moscow"); StringBuilder sb = new StringBuilder(); String formattedDate = Application.formatDate(Application.DATETIME_FORMAT, timeZone, job.getLastPingTimestamp()); Job.buildPingResultSummary(job.getLastPingResult(), sb); Assert.assertEquals("1970-01-01 03:00:00", formattedDate); Assert.assertEquals("N/A", sb.toString()); job.setLastPingResult(Job.PING_RESULT_OK); sb = new StringBuilder(); formattedDate = Application.formatDate(Application.DATETIME_FORMAT, timeZone, job.getLastPingTimestamp()); Job.buildPingResultSummary(job.getLastPingResult(), sb); Assert.assertEquals("1970-01-01 03:00:00", formattedDate); Assert.assertEquals("Okay", sb.toString()); } @Test public void testSerializeJobResults() throws Exception { Job job = new Job(); job.beginUpdateJobResults(); for (int i = 0; i < 10000; i += 1) { if (i % 1000 == 0) { long startTime = System.currentTimeMillis(); job.packJobResults(); long endTime = System.currentTimeMillis(); System.out.println(job.getRecentJobResults(100000).size() + " items = " + job.getPackedJobResultsLength() + " bytes " + (endTime - startTime)); } job.addJobResult(new JobResult()); } } @Test public void testReadRecentJobResults() { Job job = new Job(); job.beginUpdateJobResults(); Calendar cal = Calendar.getInstance(); List<JobResult> results = new ArrayList<JobResult>(); for (int i = 0; i < 5000; i++) { JobResult result = new JobResult(); result.setTimestamp(cal.getTime()); cal.add(Calendar.MINUTE, -15); results.add(result); } for (int i = results.size() - 1; i >= 0; i--) { job.addJobResult(results.get(i)); } job.endUpdateJobResults(); JobResult firstResult = job.getFirstResult(); JobResult lastResult = job.getLastResult(); long timeframe = lastResult.getTimestamp().getTime() - firstResult.getTimestamp().getTime(); System.out.println(Utils.formatMillisecondsToWordsUpToMinutes(timeframe)); } @Test public void testReadJobResults() throws IOException { Job job = new Job(); List<JobResult> results = job.getRecentJobResults(10); assertEquals(0, results.size()); JobResult result = new JobResult(); result.setResponseTime(1); job.addJobResult(result); result = new JobResult(); result.setResponseTime(2); job.addJobResult(result); result = new JobResult(); result.setResponseTime(3); job.addJobResult(result); results = job.getRecentJobResults(2); assertEquals(2, results.size()); assertEquals(2, results.get(0).getResponseTime()); assertEquals(3, results.get(1).getResponseTime()); results = job.getRecentJobResults(1); assertEquals(1, results.size()); assertEquals(3, results.get(0).getResponseTime()); results = job.getRecentJobResults(3); assertEquals(3, results.size()); results = job.getRecentJobResults(10); assertEquals(3, results.size()); job.packJobResults(); } @Test public void testJobResultCSVImporter() throws Exception { JobResultCSVImporter importer = new JobResultCSVImporter(null); List<JobResult> results = importer.fromStream( new FileInputStream("test/job-1026-6-results-20100429211642-20100615120457.txt")); assertEquals(1000, results.size()); JobResult result = results.get(0); assertEquals(Job.PING_RESULT_OK, result.getPingResult().intValue()); assertEquals("2010-04-29 21:16:42", Application.DATETIME_FORMAT.format(result.getTimestamp())); assertEquals(684, result.getResponseTime()); } @Test public void testJobResultsAnalyzerPlainTextReport() throws Exception { TimeZone timeZone = TimeZone.getTimeZone("UTC"); JobResultCSVImporter importer = new JobResultCSVImporter(timeZone); List<JobResult> results = importer.fromStream( new FileInputStream("test/job-1026-6-results-20100429211642-20100615120457.txt")); JobResultsAnalyzer analyzer = new JobResultsAnalyzer(results, true); StringBuilder sb = analyzer.buildPlainTextReport(timeZone); System.out.println(sb); } @Test public void testJobResultsAnalyzerHtmlReport() throws Exception { TimeZone timeZone = TimeZone.getTimeZone("UTC"); JobResultCSVImporter importer = new JobResultCSVImporter(timeZone); List<JobResult> results = importer.fromStream( new FileInputStream("test/job-1026-6-results-20100429211642-20100615120457.txt")); JobResultsAnalyzer analyzer = new JobResultsAnalyzer(results, true); StringBuilder sb = analyzer.buildHtmlReport(timeZone); System.out.println(sb); } @Test public void testJobResultsAnalyzerAvailabilitySummary() throws Exception { TimeZone timeZone = TimeZone.getTimeZone("UTC"); JobResultCSVImporter importer = new JobResultCSVImporter(timeZone); List<JobResult> results = importer.fromStream( new FileInputStream("test/job-1026-6-results-20100429211642-20100615120457.txt")); JobResultsAnalyzer analyzer = new JobResultsAnalyzer(results, true); String summary = analyzer.getAvailabilitySummary(); System.out.println(summary); }}