AbsenceDailyRule rule = new AbsenceDailyRule(); SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss"); sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
@Test public void testWindowInToday() throws Exception { AbsenceDailyRule rule = new AbsenceDailyRule(); // from 2PM to 3PM each day rule.startOffset = 14 * 3600 * 1000; rule.endOffset = 15 * 3600 * 1000; AbsenceWindowGenerator generator = new AbsenceWindowGenerator(rule); // get current time String date = "2016-07-08 00:00:00"; DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); df.setTimeZone(TimeZone.getTimeZone("UTC")); Date d = df.parse(date); long startTimeOfDay = d.getTime(); String currDate = "2016-07-08 11:30:29"; df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); df.setTimeZone(TimeZone.getTimeZone("UTC")); d = df.parse(currDate); AbsenceWindow window = generator.nextWindow(d.getTime()); Assert.assertEquals(startTimeOfDay + rule.startOffset, window.startTime); }
@Test public void testWindowInTomorrow() throws Exception { AbsenceDailyRule rule = new AbsenceDailyRule(); // from 2PM to 3PM each day rule.startOffset = 14 * 3600 * 1000; rule.endOffset = 15 * 3600 * 1000; AbsenceWindowGenerator generator = new AbsenceWindowGenerator(rule); // get current time String date = "2016-07-08 00:00:00"; DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); df.setTimeZone(TimeZone.getTimeZone("UTC")); Date d = df.parse(date); long startTimeOfDay = d.getTime(); String currDate = "2016-07-08 18:20:19"; df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); df.setTimeZone(TimeZone.getTimeZone("UTC")); d = df.parse(currDate); AbsenceWindow window = generator.nextWindow(d.getTime()); // this needs adjustment for one day Assert.assertEquals(startTimeOfDay + rule.startOffset + AbsenceDailyRule.DAY_MILLI_SECONDS, window.startTime); } }
@Test public void testAbsence() throws Exception { // from 2PM to 3PM each day AbsenceDailyRule rule = new AbsenceDailyRule(); rule.startOffset = 14 * 3600 * 1000; rule.endOffset = 15 * 3600 * 1000; AbsenceWindowGenerator generator = new AbsenceWindowGenerator(rule); List<Object> expectAttrs = Arrays.asList("host1"); AbsenceAlertDriver driver = new AbsenceAlertDriver(expectAttrs, generator); // first event came in 2016-07-08 11:20:00 String date = "2016-07-08 11:20:00"; DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); df.setTimeZone(TimeZone.getTimeZone("UTC")); Date d = df.parse(date); long baseOccurTime = d.getTime(); // first event driver.process(Arrays.asList("host2"), baseOccurTime); // event after 1 hour driver.process(Arrays.asList("host2"), baseOccurTime + 3600 * 1000); // event after 2 hour driver.process(Arrays.asList("host2"), baseOccurTime + 2 * 3600 * 1000); // event after 3 hour, enter this window driver.process(Arrays.asList("host2"), baseOccurTime + 3 * 3600 * 1000); // event after 3.5 hour, still in this window driver.process(Arrays.asList("host2"), baseOccurTime + 3 * 3600 * 1000 + 1800 * 1000); // event after 4 hour, exit this window driver.process(Arrays.asList("host2"), baseOccurTime + 4 * 3600 * 1000); }
@Test public void testOccurrence() throws Exception { AbsenceDailyRule rule = new AbsenceDailyRule(); rule.startOffset = 14 * 3600 * 1000; rule.endOffset = 15 * 3600 * 1000;