public void testOnSLADurationMetEvent() throws Exception { JMSSLAEventListener slaListener = new JMSSLAEventListener(); slaListener.init(conf); SLACalcStatus durationMet = new SLACalcStatus(new SLARegistrationBean()); SLARegistrationBean durationMetBean = durationMet.getSLARegistrationBean(); Date expectedStartDate = DateUtils.parseDateUTC("2013-01-01T00:00Z"); Date actualStartDate = DateUtils.parseDateUTC("2013-01-01T01:00Z"); Date expectedEndDate = DateUtils.parseDateUTC("2013-01-01T12:00Z"); Date actualEndDate = DateUtils.parseDateUTC("2013-01-01T14:00Z"); long expectedDuration = (expectedEndDate.getTime() - actualStartDate.getTime()) / (1000 * 60); durationMet.setId("0000000-000000000000001-oozie-wrkf-C@1"); durationMetBean.setParentId("0000000-000000000000001-oozie-wrkf-C"); durationMetBean.setAppName("Test-SLA-Duration-Met"); durationMet.setEventStatus(EventStatus.DURATION_MET); durationMet.setSLAStatus(SLAStatus.MET); durationMetBean.setAppType(AppType.COORDINATOR_ACTION); durationMetBean.setUser("dummyuser"); durationMetBean.setNotificationMsg("notification of duration met"); durationMetBean.setExpectedStart(expectedStartDate); durationMet.setActualStart(actualStartDate); durationMetBean.setExpectedEnd(expectedEndDate); durationMet.setActualEnd(actualEndDate); durationMetBean.setExpectedDuration(expectedDuration); long actualDuration = actualEndDate.getTime() - actualStartDate.getTime(); durationMet.setActualDuration(actualDuration); ConnectionContext jmsContext = getConnectionContext(); Session session = jmsContext.createSession(Session.AUTO_ACKNOWLEDGE); MessageConsumer consumer = jmsContext.createConsumer(session, slaListener.getTopic(durationMet)); slaListener.onDurationMet(durationMet); TextMessage message = (TextMessage) consumer.receive(5000); SLAMessage durationMissMsg = (SLAMessage) JMSMessagingUtils.getEventMessage(message); // check msg header assertEquals(EventStatus.DURATION_MET, durationMissMsg.getEventStatus()); assertEquals(SLAStatus.MET, durationMissMsg.getSLAStatus()); assertEquals(AppType.COORDINATOR_ACTION, durationMissMsg.getAppType()); assertEquals(MessageType.SLA, durationMissMsg.getMessageType()); assertEquals("Test-SLA-Duration-Met", durationMissMsg.getAppName()); assertEquals("dummyuser", durationMissMsg.getUser()); // check msg body assertEquals("0000000-000000000000001-oozie-wrkf-C@1", durationMissMsg.getId()); assertEquals("0000000-000000000000001-oozie-wrkf-C", durationMissMsg.getParentId()); assertEquals(expectedStartDate, durationMissMsg.getExpectedStartTime()); assertEquals(actualStartDate, durationMissMsg.getActualStartTime()); assertEquals(expectedEndDate, durationMissMsg.getExpectedEndTime()); assertEquals(actualEndDate, durationMissMsg.getActualEndTime()); assertEquals(expectedDuration, durationMissMsg.getExpectedDuration()); assertEquals(actualDuration, durationMissMsg.getActualDuration()); assertEquals("notification of duration met", durationMissMsg.getNotificationMessage()); }
public void testOnSLAEndMissEvent() throws Exception { JMSSLAEventListener slaListener = new JMSSLAEventListener(); slaListener.init(conf); SLACalcStatus endMiss = new SLACalcStatus(new SLARegistrationBean()); SLARegistrationBean endMissBean = endMiss.getSLARegistrationBean(); Date expectedEndDate = DateUtils.parseDateUTC("2013-01-01T00:00Z"); Date actualEndDate = DateUtils.parseDateUTC("2013-01-01T01:00Z"); endMiss.setId("0000000-000000000000001-oozie-wrkf-C@1"); endMissBean.setParentId("0000000-000000000000001-oozie-wrkf-C"); endMissBean.setAppName("Test-SLA-End-Miss"); endMiss.setEventStatus(EventStatus.END_MISS); endMiss.setSLAStatus(SLAStatus.IN_PROCESS); endMissBean.setAppType(AppType.COORDINATOR_ACTION); endMissBean.setUser("dummyuser"); endMissBean.setNotificationMsg("notification of end miss"); endMissBean.setExpectedEnd(expectedEndDate); endMiss.setActualEnd(actualEndDate); ConnectionContext jmsContext = getConnectionContext(); Session session = jmsContext.createSession(Session.AUTO_ACKNOWLEDGE); MessageConsumer consumer = jmsContext.createConsumer(session, slaListener.getTopic(endMiss)); slaListener.onEndMiss(endMiss); TextMessage message = (TextMessage) consumer.receive(5000); SLAMessage slaEndMissMsg = (SLAMessage) JMSMessagingUtils.getEventMessage(message); // check msg header assertEquals(EventStatus.END_MISS, slaEndMissMsg.getEventStatus()); assertEquals(SLAStatus.IN_PROCESS, slaEndMissMsg.getSLAStatus()); assertEquals(AppType.COORDINATOR_ACTION, slaEndMissMsg.getAppType()); assertEquals(MessageType.SLA, slaEndMissMsg.getMessageType()); assertEquals("Test-SLA-End-Miss", slaEndMissMsg.getAppName()); assertEquals("dummyuser", slaEndMissMsg.getUser()); // check msg body assertEquals("0000000-000000000000001-oozie-wrkf-C@1", slaEndMissMsg.getId()); assertEquals("0000000-000000000000001-oozie-wrkf-C", slaEndMissMsg.getParentId()); assertEquals(expectedEndDate, slaEndMissMsg.getExpectedEndTime()); assertEquals(actualEndDate, slaEndMissMsg.getActualEndTime()); assertEquals("notification of end miss", slaEndMissMsg.getNotificationMessage()); }