public boolean process(List<Object> appearAttrs, long occurTime) { // initialize window if (processor == null) { processor = nextProcessor(occurTime); LOG.info("initialized a new window {}", processor); } processor.process(appearAttrs, occurTime); AbsenceWindowProcessor.OccurStatus status = processor.checkStatus(); boolean expired = processor.checkExpired(); boolean isAbsenceAlert = false; if (expired) { if (status == AbsenceWindowProcessor.OccurStatus.absent) { // send alert LOG.info("==================="); LOG.info("|| Absence Alert ||"); LOG.info("==================="); isAbsenceAlert = true; // figure out next window and set the new window } processor = nextProcessor(occurTime); LOG.info("created a new window {}", processor); } return isAbsenceAlert; }
@Test public void testDataMissing() { List<Object> expectedHosts = Arrays.asList("host1"); AbsenceWindow window = new AbsenceWindow(); window.startTime = 100L; window.endTime = 200L; AbsenceWindowProcessor processor = new AbsenceWindowProcessor(expectedHosts, window); processor.process(Arrays.asList("host2"), 90); Assert.assertEquals(processor.checkStatus(), AbsenceWindowProcessor.OccurStatus.not_sure); processor.process(Arrays.asList("host3"), 101); Assert.assertEquals(processor.checkStatus(), AbsenceWindowProcessor.OccurStatus.not_sure); processor.process(Arrays.asList("host3"), 138); Assert.assertEquals(processor.checkStatus(), AbsenceWindowProcessor.OccurStatus.not_sure); processor.process(Arrays.asList("host2"), 189); Assert.assertEquals(processor.checkStatus(), AbsenceWindowProcessor.OccurStatus.not_sure); processor.process(Arrays.asList("host2"), 201); Assert.assertEquals(processor.checkStatus(), AbsenceWindowProcessor.OccurStatus.absent); }
@Test(expected = IllegalStateException.class) public void testDataExists() { List<Object> expectedHosts = Arrays.asList("host1"); AbsenceWindow window = new AbsenceWindow(); window.startTime = 100L; window.endTime = 200L; AbsenceWindowProcessor processor = new AbsenceWindowProcessor(expectedHosts, window); processor.process(Arrays.asList("host2"), 90); Assert.assertEquals(processor.checkStatus(), AbsenceWindowProcessor.OccurStatus.not_sure); processor.process(Arrays.asList("host3"), 101); Assert.assertEquals(processor.checkStatus(), AbsenceWindowProcessor.OccurStatus.not_sure); processor.process(Arrays.asList("host1"), 138); Assert.assertEquals(processor.checkStatus(), AbsenceWindowProcessor.OccurStatus.occured); processor.process(Arrays.asList("host2"), 189); Assert.assertEquals(processor.checkStatus(), AbsenceWindowProcessor.OccurStatus.occured); processor.process(Arrays.asList("host2"), 201); Assert.assertEquals(processor.checkStatus(), AbsenceWindowProcessor.OccurStatus.occured); Assert.assertEquals(processor.checkExpired(), true); processor.process(Arrays.asList("host2"), 225); } }