Package org.apache.oozie.sla

Source Code of org.apache.oozie.sla.TestSLAEmailEventListener

/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements.  See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership.  The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License.  You may obtain a copy of the License at
*
*      http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/


package org.apache.oozie.sla;

import java.util.Date;

import org.apache.hadoop.conf.Configuration;
import org.apache.oozie.AppType;
import org.apache.oozie.action.email.EmailActionExecutor;
import org.apache.oozie.client.event.JobEvent;
import org.apache.oozie.client.event.SLAEvent;
import org.apache.oozie.client.event.SLAEvent.EventStatus;
import org.apache.oozie.service.Services;
import org.apache.oozie.sla.SLACalcStatus;
import org.apache.oozie.sla.SLARegistrationBean;
import org.apache.oozie.test.XTestCase;
import org.apache.oozie.util.DateUtils;
import org.junit.After;
import org.junit.Before;

import com.icegreen.greenmail.util.GreenMail;
import com.icegreen.greenmail.util.ServerSetup;

import javax.mail.Message.RecipientType;
import javax.mail.internet.MimeMessage;

import org.apache.oozie.sla.listener.SLAEmailEventListener;
import org.apache.oozie.sla.listener.SLAEmailEventListener.EmailField;
import org.apache.oozie.sla.service.SLAService;

public class TestSLAEmailEventListener extends XTestCase {

    private Services services;
    private static final int SMTP_TEST_PORT = 3025;
    private GreenMail greenMail;
    private SLAEmailEventListener slaEmailListener;
    private Configuration conf = null;

    @Before
    @Override
    protected void setUp() throws Exception {
        super.setUp();
        services = new Services();
        conf = services.getConf();
        conf.set(EmailActionExecutor.EMAIL_SMTP_HOST, "localhost");
        conf.set(EmailActionExecutor.EMAIL_SMTP_PORT, String.valueOf(SMTP_TEST_PORT));
        conf.set(EmailActionExecutor.EMAIL_SMTP_AUTH, "false");
        conf.set(EmailActionExecutor.EMAIL_SMTP_USER, "");
        conf.set(EmailActionExecutor.EMAIL_SMTP_PASS, "");
        conf.set(EmailActionExecutor.EMAIL_SMTP_FROM, "oozie@localhost");
        conf.set(SLAEmailEventListener.BLACKLIST_CACHE_TIMEOUT, "1");
        conf.set(SLAEmailEventListener.BLACKLIST_FAIL_COUNT, "2");
        conf.set(SLAService.CONF_ALERT_EVENTS, SLAEvent.EventStatus.START_MISS.name() + ","
                + SLAEvent.EventStatus.END_MISS + "," + SLAEvent.EventStatus.DURATION_MISS);

        greenMail = new GreenMail(new ServerSetup(SMTP_TEST_PORT, null, "smtp"));
        greenMail.start();
        services.init();
        slaEmailListener = new SLAEmailEventListener();
        slaEmailListener.init(conf);
    }

    @After
    @Override
    protected void tearDown() throws Exception {
        if (null != greenMail) {
            greenMail.stop();
        }
        services.destroy();
        super.tearDown();
    }

    public void testOnStartMiss() throws Exception {
        String id = "0000000-000000000000001-oozie-wrkf-C@1";
        SLACalcStatus event = _createSLACalcStatus(id);
        SLARegistrationBean eventBean = event.getSLARegistrationBean();
        Date startDate = DateUtils.parseDateUTC("2013-01-01T00:00Z");
        Date actualstartDate = DateUtils.parseDateUTC("2013-01-01T01:00Z");
        event.setEventStatus(EventStatus.START_MISS);
        event.setJobStatus(JobEvent.EventStatus.STARTED.toString());
        event.setId(id);
        eventBean.setParentId("0000000-000000000000001-oozie-wrkf-C");
        eventBean.setAppName("Test-SLA-Start-Miss");
        eventBean.setUser("dummyuser");
        eventBean.setNominalTime(startDate);
        eventBean.setExpectedStart(startDate);
        eventBean.setNotificationMsg("Notification of Missing Expected Start Time");
        eventBean.setAlertContact("alert-receiver@oozie.com");
        event.setActualStart(actualstartDate);
        eventBean.setAppType(AppType.COORDINATOR_ACTION);

        slaEmailListener.onStartMiss(event);

        MimeMessage[] msgs = greenMail.getReceivedMessages();
        MimeMessage msg = msgs[0];
        // check message header
        assertEquals(msg.getFrom()[0].toString(), "oozie@localhost");
        assertEquals(msg.getRecipients(RecipientType.TO)[0].toString(), "alert-receiver@oozie.com");
        assertEquals(msg.getSubject(), "OOZIE - SLA " + EventStatus.START_MISS
                + " (AppName=Test-SLA-Start-Miss, JobID=0000000-000000000000001-oozie-wrkf-C@1)");
        // check message body
        String msgBody = msg.getContent().toString();
        String headerSep = SLAEmailEventListener.EMAIL_BODY_HEADER_SEPARATER;
        String sep = SLAEmailEventListener.EMAIL_BODY_FIELD_SEPARATER;
        String indent = SLAEmailEventListener.EMAIL_BODY_FIELD_INDENT;
        assertTrue(msgBody.indexOf("Status" + headerSep) > -1);
        assertTrue(msgBody.indexOf(indent + EmailField.EVENT_STATUS.toString() + sep
                + EventStatus.START_MISS.toString()) > -1);
        assertTrue(msgBody.indexOf(indent + EmailField.JOB_STATUS.toString() + sep
                + JobEvent.EventStatus.STARTED.toString()) > -1);
        assertTrue(msgBody.indexOf(indent + EmailField.NOTIFICATION_MESSAGE.toString() + sep
                + "Notification of Missing Expected Start Time") > -1);
        assertTrue(msgBody.indexOf("Job Details" + headerSep) > -1);
        assertTrue(msgBody.indexOf(indent + EmailField.APP_TYPE.toString() + sep + AppType.COORDINATOR_ACTION) > -1);
        assertTrue(msgBody.indexOf(indent + EmailField.APP_NAME.toString() + sep + "Test-SLA-Start-Miss") > -1);
        assertTrue(msgBody.indexOf(indent + EmailField.USER.toString() + sep + "dummyuser") > -1);
        assertTrue(msgBody.indexOf(indent + EmailField.JOBID.toString() + sep
                + "0000000-000000000000001-oozie-wrkf-C@1") > -1);
        assertTrue(msgBody.indexOf(indent + EmailField.PARENT_JOBID.toString() + sep
                + "0000000-000000000000001-oozie-wrkf-C") > -1);
        assertTrue(msgBody.indexOf(indent + EmailField.JOB_URL.toString() + sep
                + conf.get(SLAEmailEventListener.OOZIE_BASE_URL) + "/?job=" + "0000000-000000000000001-oozie-wrkf-C@1") > -1);
        assertTrue(msgBody.indexOf(indent + EmailField.PARENT_JOB_URL.toString() + sep
                + conf.get(SLAEmailEventListener.OOZIE_BASE_URL) + "/?job=" + "0000000-000000000000001-oozie-wrkf-C") > -1);
        assertTrue(msgBody.indexOf("SLA Details" + headerSep) > -1);
        assertTrue(msgBody.indexOf(indent + EmailField.NOMINAL_TIME.toString() + sep + startDate) > -1);
        assertTrue(msgBody.indexOf(indent + EmailField.EXPECTED_START_TIME.toString() + sep + startDate) > -1);
        assertTrue(msgBody.indexOf(indent + EmailField.ACTUAL_START_TIME.toString() + sep + actualstartDate) > -1);
    }

    public void testOnEndMiss() throws Exception {
        String id = "0000000-000000000000001-oozie-wrkf-C@1";
        SLACalcStatus event = _createSLACalcStatus(id);
        SLARegistrationBean eventBean = event.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-01T13:00Z");
        event.setId(id);
        eventBean.setParentId("0000000-000000000000001-oozie-wrkf-C");
        event.setEventStatus(EventStatus.END_MISS);
        event.setJobStatus(JobEvent.EventStatus.SUCCESS.toString());
        eventBean.setAppName("Test-SLA-End-Miss");
        eventBean.setUser("dummyuser");
        eventBean.setNominalTime(expectedStartDate);
        eventBean.setExpectedStart(expectedStartDate);
        eventBean.setExpectedEnd(expectedEndDate);
        eventBean.setNotificationMsg("notification of end miss");
        eventBean.setAlertContact("alert-receiver-endmiss@oozie.com");
        eventBean.setAppType(AppType.COORDINATOR_ACTION);
        eventBean.setExpectedStart(expectedStartDate);
        eventBean.setExpectedEnd(expectedEndDate);
        event.setActualStart(actualStartDate);
        event.setActualEnd(actualEndDate);

        slaEmailListener.onEndMiss(event);

        MimeMessage[] msgs = greenMail.getReceivedMessages();
        MimeMessage msg = msgs[0];
        // check message header
        assertEquals(msg.getFrom()[0].toString(), "oozie@localhost");
        assertEquals(msg.getRecipients(RecipientType.TO)[0].toString(), "alert-receiver-endmiss@oozie.com");
        assertEquals(msg.getSubject(), "OOZIE - SLA " + EventStatus.END_MISS
                + " (AppName=Test-SLA-End-Miss, JobID=0000000-000000000000001-oozie-wrkf-C@1)");
        // check message body
        String msgBody = msg.getContent().toString();
        String headerSep = SLAEmailEventListener.EMAIL_BODY_HEADER_SEPARATER;
        String sep = SLAEmailEventListener.EMAIL_BODY_FIELD_SEPARATER;
        String indent = SLAEmailEventListener.EMAIL_BODY_FIELD_INDENT;
        assertTrue(msgBody.indexOf("Status" + headerSep) > -1);
        assertTrue(msgBody.indexOf(indent + EmailField.EVENT_STATUS.toString() + sep + EventStatus.END_MISS.toString()) > -1);
        assertTrue(msgBody.indexOf(indent + EmailField.JOB_STATUS.toString() + sep
                + JobEvent.EventStatus.SUCCESS.toString()) > -1);
        assertTrue(msgBody.indexOf(indent + EmailField.NOTIFICATION_MESSAGE.toString() + sep
                + "notification of end miss") > -1);

        assertTrue(msgBody.indexOf("Job Details" + headerSep) > -1);
        assertTrue(msgBody.indexOf(indent + EmailField.APP_TYPE.toString() + sep + AppType.COORDINATOR_ACTION) > -1);
        assertTrue(msgBody.indexOf(indent + EmailField.APP_NAME.toString() + sep + "Test-SLA-End-Miss") > -1);
        assertTrue(msgBody.indexOf(indent + EmailField.USER.toString() + sep + "dummyuser") > -1);
        assertTrue(msgBody.indexOf(indent + EmailField.JOBID.toString() + sep
                + "0000000-000000000000001-oozie-wrkf-C@1") > -1);
        assertTrue(msgBody.indexOf(indent + EmailField.PARENT_JOBID.toString() + sep
                + "0000000-000000000000001-oozie-wrkf-C") > -1);
        assertTrue(msgBody.indexOf(indent + EmailField.JOB_URL.toString() + sep
                + conf.get(SLAEmailEventListener.OOZIE_BASE_URL) + "/?job=" + "0000000-000000000000001-oozie-wrkf-C@1") > -1);
        assertTrue(msgBody.indexOf(indent + EmailField.PARENT_JOB_URL.toString() + sep
                + conf.get(SLAEmailEventListener.OOZIE_BASE_URL) + "/?job=" + "0000000-000000000000001-oozie-wrkf-C") > -1);

        assertTrue(msgBody.indexOf("SLA Details" + headerSep) > -1);
        assertTrue(msgBody.indexOf(indent + EmailField.NOMINAL_TIME.toString() + sep + expectedStartDate) > -1);
        assertTrue(msgBody.indexOf(indent + EmailField.EXPECTED_START_TIME.toString() + sep + expectedStartDate) > -1);
        assertTrue(msgBody.indexOf(indent + EmailField.ACTUAL_START_TIME.toString() + sep + actualStartDate) > -1);
        assertTrue(msgBody.indexOf(indent + EmailField.EXPECTED_END_TIME.toString() + sep + expectedEndDate) > -1);
        assertTrue(msgBody.indexOf(indent + EmailField.ACTUAL_END_TIME.toString() + sep + actualEndDate) > -1);

    }

    public void testOnDurationMiss() throws Exception {
        String id = "0000000-000000000000001-oozie-wrkf-C@1";
        SLACalcStatus event = _createSLACalcStatus(id);
        SLARegistrationBean eventBean = event.getSLARegistrationBean();
        Date expectedStartDate = DateUtils.parseDateUTC("2013-01-01T00:00Z");
        Date actualStartDate = DateUtils.parseDateUTC("2013-01-01T00:10Z");
        Date expectedEndDate = DateUtils.parseDateUTC("2013-01-01T00:20Z");
        Date actualEndDate = DateUtils.parseDateUTC("2013-01-01T00:40Z");
        long expectedDuration = expectedEndDate.getTime() - expectedStartDate.getTime();
        long actualDuration = actualEndDate.getTime() - actualStartDate.getTime();
        long expectedDurationInMins = expectedDuration / 60000;
        long actualDurationInMins = actualDuration / 60000;
        event.setId(id);
        eventBean.setParentId("0000000-000000000000001-oozie-wrkf-C");
        event.setEventStatus(EventStatus.DURATION_MISS);
        event.setJobStatus(JobEvent.EventStatus.SUCCESS.toString());
        eventBean.setAppName("Test-SLA-Duration-Miss");
        eventBean.setUser("dummyuser");
        eventBean.setNominalTime(expectedStartDate);
        eventBean.setExpectedStart(expectedStartDate);
        eventBean.setExpectedEnd(expectedEndDate);
        eventBean.setNotificationMsg("notification of duration miss");
        eventBean.setAlertContact("alert-receiver-durationmiss@oozie.com");
        eventBean.setAppType(AppType.COORDINATOR_ACTION);
        eventBean.setExpectedStart(expectedStartDate);
        eventBean.setExpectedEnd(expectedEndDate);
        event.setActualStart(actualStartDate);
        event.setActualEnd(actualEndDate);
        eventBean.setExpectedDuration(expectedDuration);
        event.setActualDuration(actualDuration);

        slaEmailListener.onEndMiss(event);

        MimeMessage[] msgs = greenMail.getReceivedMessages();
        MimeMessage msg = msgs[0];
        // check message header
        assertEquals(msg.getFrom()[0].toString(), "oozie@localhost");
        assertEquals(msg.getRecipients(RecipientType.TO)[0].toString(), "alert-receiver-durationmiss@oozie.com");
        assertEquals(msg.getSubject(), "OOZIE - SLA " + EventStatus.DURATION_MISS
                + " (AppName=Test-SLA-Duration-Miss, JobID=0000000-000000000000001-oozie-wrkf-C@1)");
        // check message body
        String msgBody = msg.getContent().toString();
        String headerSep = SLAEmailEventListener.EMAIL_BODY_HEADER_SEPARATER;
        String sep = SLAEmailEventListener.EMAIL_BODY_FIELD_SEPARATER;
        String indent = SLAEmailEventListener.EMAIL_BODY_FIELD_INDENT;
        assertTrue(msgBody.indexOf("Status" + headerSep) > -1);
        assertTrue(msgBody.indexOf(indent + EmailField.EVENT_STATUS.toString() + sep
                + EventStatus.DURATION_MISS.toString()) > -1);
        assertTrue(msgBody.indexOf(indent + EmailField.JOB_STATUS.toString() + sep
                + JobEvent.EventStatus.SUCCESS.toString()) > -1);
        assertTrue(msgBody.indexOf(indent + EmailField.NOTIFICATION_MESSAGE.toString() + sep
                + "notification of duration miss") > -1);

        assertTrue(msgBody.indexOf("Job Details" + headerSep) > -1);
        assertTrue(msgBody.indexOf(indent + EmailField.APP_TYPE.toString() + sep + AppType.COORDINATOR_ACTION) > -1);
        assertTrue(msgBody.indexOf(indent + EmailField.APP_NAME.toString() + sep + "Test-SLA-Duration-Miss") > -1);
        assertTrue(msgBody.indexOf(indent + EmailField.USER.toString() + sep + "dummyuser") > -1);
        assertTrue(msgBody.indexOf(indent + EmailField.JOBID.toString() + sep
                + "0000000-000000000000001-oozie-wrkf-C@1") > -1);
        assertTrue(msgBody.indexOf(indent + EmailField.PARENT_JOBID.toString() + sep
                + "0000000-000000000000001-oozie-wrkf-C") > -1);
        assertTrue(msgBody.indexOf(indent + EmailField.JOB_URL.toString() + sep
                + conf.get(SLAEmailEventListener.OOZIE_BASE_URL) + "/?job=" + "0000000-000000000000001-oozie-wrkf-C@1") > -1);
        assertTrue(msgBody.indexOf(indent + EmailField.PARENT_JOB_URL.toString() + sep
                + conf.get(SLAEmailEventListener.OOZIE_BASE_URL) + "/?job=" + "0000000-000000000000001-oozie-wrkf-C") > -1);

        assertTrue(msgBody.indexOf("SLA Details" + headerSep) > -1);
        assertTrue(msgBody.indexOf(indent + EmailField.NOMINAL_TIME.toString() + sep + expectedStartDate) > -1);
        assertTrue(msgBody.indexOf(indent + EmailField.EXPECTED_START_TIME.toString() + sep + expectedStartDate) > -1);
        assertTrue(msgBody.indexOf(indent + EmailField.ACTUAL_START_TIME.toString() + sep + actualStartDate) > -1);
        assertTrue(msgBody.indexOf(indent + EmailField.EXPECTED_END_TIME.toString() + sep + expectedEndDate) > -1);
        assertTrue(msgBody.indexOf(indent + EmailField.ACTUAL_END_TIME.toString() + sep + actualEndDate) > -1);
        assertTrue(msgBody.indexOf(indent + EmailField.EXPECTED_DURATION.toString() + sep + expectedDurationInMins) > -1);
        assertTrue(msgBody.indexOf(indent + EmailField.ACTUAL_DURATION.toString() + sep + actualDurationInMins) > -1);
    }

    public void testUserAlertEventSetting() throws Exception {
        String id = "0000000-000000000000001-oozie-wrkf-C@1";
        SLACalcStatus event = _createSLACalcStatus(id);
        SLARegistrationBean eventBean = event.getSLARegistrationBean();
        // user choose only END MISS, thus, START_MISS email should not be sent
        eventBean.setAlertEvents(EventStatus.END_MISS.name());

        Date startDate = DateUtils.parseDateUTC("2013-01-01T00:00Z");
        Date actualstartDate = DateUtils.parseDateUTC("2013-01-01T01:00Z");
        event.setEventStatus(EventStatus.START_MISS);
        event.setId(id);
        eventBean.setAppName("Test-SLA-Start-Miss");
        eventBean.setUser("dummyuser");
        eventBean.setNominalTime(startDate);
        eventBean.setExpectedStart(startDate);
        eventBean.setAlertContact("alert-receiver@oozie.com");
        event.setActualStart(actualstartDate);
        eventBean.setAppType(AppType.COORDINATOR_ACTION);

        slaEmailListener.onStartMiss(event);

        // START_MISS should not be sent
        MimeMessage[] msgs = greenMail.getReceivedMessages();
        assertEquals(msgs.length, 0);

        // DURATION_MISS should not be sent
        event.setEventStatus(EventStatus.DURATION_MISS);
        slaEmailListener.onDurationMiss(event);
        msgs = greenMail.getReceivedMessages();
        assertEquals(msgs.length, 0);

        // END_MISS should be sent
        event.setEventStatus(EventStatus.END_MISS);
        slaEmailListener.onEndMiss(event);
        msgs = greenMail.getReceivedMessages();
        assertNotNull(msgs[0]);
    }

    public void testInvalidDestAddress() throws Exception {
        String id = "0000000-000000000000001-oozie-wrkf-C@1";
        SLACalcStatus event = _createSLACalcStatus(id);
        SLARegistrationBean eventBean = event.getSLARegistrationBean();
        Date startDate = DateUtils.parseDateUTC("2013-01-01T00:00Z");
        // set invalid address as alert contact
        eventBean.setAlertContact("invalidAddress");
        event.setEventStatus(EventStatus.START_MISS);
        event.setId(id);
        eventBean.setAppType(AppType.COORDINATOR_ACTION);
        eventBean.setAppName("Test-SLA-Start-Miss");
        eventBean.setUser("dummyuser");
        eventBean.setExpectedStart(startDate);
        eventBean.setNotificationMsg("notification of start miss");
        eventBean.setAppType(AppType.COORDINATOR_ACTION);
        event.setActualStart(DateUtils.parseDateUTC("2013-01-01T01:00Z"));

        slaEmailListener.onStartMiss(event);

        MimeMessage[] msgs = greenMail.getReceivedMessages();
        assertEquals(msgs.length, 0);
    }

    public void testNoDestAddress() throws Exception {
        String id = "0000000-000000000000001-oozie-wrkf-C@1";
        SLACalcStatus event = _createSLACalcStatus(id);
        SLARegistrationBean eventBean = event.getSLARegistrationBean();
        Date startDate = DateUtils.parseDateUTC("2013-01-01T00:00Z");
        // set empty address as alert contact
        eventBean.setAlertContact("");
        event.setEventStatus(EventStatus.START_MISS);
        event.setId(id);
        eventBean.setAppType(AppType.COORDINATOR_ACTION);
        eventBean.setAppName("Test-SLA-Start-Miss");
        eventBean.setUser("dummyuser");
        eventBean.setExpectedStart(startDate);
        eventBean.setNotificationMsg("notification of start miss");
        eventBean.setAppType(AppType.COORDINATOR_ACTION);
        event.setActualStart(DateUtils.parseDateUTC("2013-01-01T01:00Z"));

        slaEmailListener.onStartMiss(event);

        MimeMessage[] msgs = greenMail.getReceivedMessages();
        assertEquals(msgs.length, 0);
    }

    public void testMultipleDestAddress() throws Exception {
        String id = "0000000-000000000000001-oozie-wrkf-C@1";
        SLACalcStatus event = _createSLACalcStatus(id);
        SLARegistrationBean eventBean = event.getSLARegistrationBean();
        Date startDate = DateUtils.parseDateUTC("2013-01-01T00:00Z");
        // set multiple addresses as alert contact
        eventBean.setAlertContact("alert-receiver1@oozie.com, alert-receiver2@oozie.com");
        event.setEventStatus(EventStatus.START_MISS);
        event.setId(id);
        eventBean.setAppType(AppType.COORDINATOR_ACTION);
        eventBean.setAppName("Test-SLA-Start-Miss");
        eventBean.setUser("dummyuser");
        eventBean.setExpectedStart(startDate);
        eventBean.setNotificationMsg("notification of start miss");
        eventBean.setAppType(AppType.COORDINATOR_ACTION);
        event.setActualStart(DateUtils.parseDateUTC("2013-01-01T01:00Z"));

        slaEmailListener.onStartMiss(event);

        MimeMessage[] msgs = greenMail.getReceivedMessages();
        MimeMessage msg = msgs[0];
        assertEquals(msg.getFrom()[0].toString(), "oozie@localhost");
        assertEquals(msg.getRecipients(RecipientType.TO)[0].toString(), "alert-receiver1@oozie.com");
        assertEquals(msg.getRecipients(RecipientType.TO)[1].toString(), "alert-receiver2@oozie.com");
    }

    public void testBlackList() throws Exception {
        String blackListedEmail = "alert-receiver@oozie.com";
        // add email to blacklist
        slaEmailListener.addBlackList(blackListedEmail);
        String id = "0000000-000000000000001-oozie-wrkf-C@1";
        SLACalcStatus event = _createSLACalcStatus(id);
        SLARegistrationBean eventBean = event.getSLARegistrationBean();
        event.setEventStatus(EventStatus.START_MISS);
        eventBean.setAlertContact(blackListedEmail);
        eventBean.setAppType(AppType.COORDINATOR_ACTION);
        eventBean.setAppName("Test-SLA-Start-Miss");
        eventBean.setUser("dummyuser");
        eventBean.setAlertContact("alert-receiver@oozie.com");
        event.setActualStart(DateUtils.parseDateUTC("2013-01-01T01:00Z"));

        // blacklist blocks email from being sent out
        slaEmailListener.onStartMiss(event);
        MimeMessage[] msgs = greenMail.getReceivedMessages();
        assertEquals(msgs.length, 0);

        // wait 1.5 sec (cache timeout set to 1sec in test's setup)
        Thread.sleep(1500);

        // cache is evicted
        slaEmailListener.onStartMiss(event);
        msgs = greenMail.getReceivedMessages();
        assertEquals(msgs.length, 1);
    }

    private SLACalcStatus _createSLACalcStatus(String actionId) {
        SLARegistrationBean reg = new SLARegistrationBean();
        reg.setId(actionId);
        reg.setAppType(AppType.COORDINATOR_ACTION);
        return new SLACalcStatus(reg);
    }
}
TOP

Related Classes of org.apache.oozie.sla.TestSLAEmailEventListener

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.