/** * Sends a single email about failed updates. */ private void sendFailedUpdateEmail(final Executor executor, final ExecutorManagerException exception, final MailCreator mailCreator, final ImmutableList<ExecutableFlow> flows) { final EmailMessage message = this.messageCreator.createMessage(); final boolean mailCreated = mailCreator .createFailedUpdateMessage(flows, executor, exception, message, this.azkabanName, this.scheme, this.clientHostname, this.clientPortNumber); final List<Integer> executionIds = Lists.transform(flows, ExecutableFlow::getExecutionId); sendEmail(message, mailCreated, "failed update email message for executions " + executionIds); }
@Before public void setUp() throws Exception { this.creator = mock(EmailMessageCreator.class); this.mailSender = mock(JavaxMailSender.class); this.mimeMessage = mock(Message.class); this.addresses = new Address[]{new InternetAddress(this.toAddr, false)}; when(this.creator.createSender(any())).thenReturn(this.mailSender); when(this.mailSender.createMessage()).thenReturn(this.mimeMessage); when(this.mimeMessage.getRecipients(Message.RecipientType.TO)).thenReturn(this.addresses); this.em = new EmailMessage(this.host, this.port, this.user, this.password, this.creator); }
@Test public void createMessage() { final Props props = new Props(); props.put("mail.user", USER); props.put("mail.password", PASSWORD); props.put("mail.sender", SENDER); props.put("mail.host", HOST); props.put("mail.port", MAIL_PORT); final EmailMessageCreator creator = new EmailMessageCreator(props); final EmailMessage message = creator.createMessage(); assertThat(message.getMailPort()).isEqualTo(MAIL_PORT); assertThat(message.getBody()).isEmpty(); assertThat(message.getSubject()).isNull(); }
public static EmailMessageCreator mockMessageCreator(final EmailMessage message) { final EmailMessageCreator mock = mock(EmailMessageCreator.class); when(mock.createMessage()).thenReturn(message); return mock; }
props.put("mail.smtp.ssl.trust", this._mailHost); final JavaxMailSender sender = this.creator.createSender(props); final Message message = sender.createMessage();
public EmailMessage createEmailMessage(final String subject, final String mimetype, final Collection<String> emailList) { final EmailMessage message = this.messageCreator.createMessage(); message.addAllToAddress(emailList); message.setMimeType(mimetype); message.setSubject(subject); return message; }
props.put("mail.smtp.ssl.trust", this._mailHost); final JavaxMailSender sender = this.creator.createSender(props); final Message message = sender.createMessage();
@Override public void alertOnFirstError(final ExecutableFlow flow) { final EmailMessage message = this.messageCreator.createMessage(); final MailCreator mailCreator = getMailCreator(flow); final boolean mailCreated = mailCreator.createFirstErrorMessage(flow, message, this.azkabanName, this.scheme, this.clientHostname, this.clientPortNumber); sendEmail(message, mailCreated, "first error email message for execution " + flow.getExecutionId()); }
@Override public void alertOnSuccess(final ExecutableFlow flow) { final EmailMessage message = this.messageCreator.createMessage(); final MailCreator mailCreator = getMailCreator(flow); final boolean mailCreated = mailCreator.createSuccessEmail(flow, message, this.azkabanName, this.scheme, this.clientHostname, this.clientPortNumber); sendEmail(message, mailCreated, "success email message for execution " + flow.getExecutionId()); }
@Test public void testCreateEmailMessage() { final AbstractMailer mailer = new AbstractMailer(this.props, this.messageCreator); final EmailMessage em = mailer.createEmailMessage("subject", "text/html", this.senderList); verify(this.messageCreator).createMessage(); assertThat(this.message).isEqualTo(em); verify(this.message).setSubject("subject"); }
@Test public void testCreateEmailMessage() { final CommonMetrics commonMetrics = new CommonMetrics(new MetricsManager(new MetricRegistry())); final Emailer emailer = new Emailer(this.props, commonMetrics, this.messageCreator, this.executorLoader); final EmailMessage em = emailer .createEmailMessage("subject", "text/html", this.receiveAddrList); verify(this.messageCreator).createMessage(); assertThat(this.messageCreator.createMessage()).isEqualTo(em); verify(this.message).addAllToAddress(this.receiveAddrList); verify(this.message).setSubject("subject"); verify(this.message).setMimeType("text/html"); }
@Override public void alertOnError(final ExecutableFlow flow, final String... extraReasons) { final EmailMessage message = this.messageCreator.createMessage(); final MailCreator mailCreator = getMailCreator(flow); List<ExecutableFlow> last72hoursExecutions = new ArrayList<>(); if (flow.getStartTime() > 0) { final long startTime = flow.getStartTime() - Duration.ofHours(72).toMillis(); try { last72hoursExecutions = this.executorLoader.fetchFlowHistory(flow.getProjectId(), flow .getFlowId(), startTime); } catch (final ExecutorManagerException e) { logger.error("unable to fetch past executions", e); } } final boolean mailCreated = mailCreator.createErrorEmail(flow, last72hoursExecutions, message, this.azkabanName, this.scheme, this.clientHostname, this.clientPortNumber, extraReasons); sendEmail(message, mailCreated, "error email message for execution " + flow.getExecutionId()); }
/** * Sends a single email about failed updates. */ private void sendFailedUpdateEmail(final Executor executor, final ExecutorManagerException exception, final MailCreator mailCreator, final ImmutableList<ExecutableFlow> flows) { final EmailMessage message = this.messageCreator.createMessage(); final boolean mailCreated = mailCreator .createFailedUpdateMessage(flows, executor, exception, message, this.azkabanName, this.scheme, this.clientHostname, this.clientPortNumber); final List<Integer> executionIds = Lists.transform(flows, ExecutableFlow::getExecutionId); sendEmail(message, mailCreated, "failed update email message for executions " + executionIds); }
public EmailMessage createEmailMessage(final String subject, final String mimetype, final Collection<String> emailList) { final EmailMessage message = this.messageCreator.createMessage(); message.addAllToAddress(emailList); message.setMimeType(mimetype); message.setSubject(subject); return message; }
@Override public void alertOnFirstError(final ExecutableFlow flow) { final EmailMessage message = this.messageCreator.createMessage(); final MailCreator mailCreator = getMailCreator(flow); final boolean mailCreated = mailCreator.createFirstErrorMessage(flow, message, this.azkabanName, this.scheme, this.clientHostname, this.clientPortNumber); sendEmail(message, mailCreated, "first error email message for execution " + flow.getExecutionId()); }
@Override public void alertOnSuccess(final ExecutableFlow flow) { final EmailMessage message = this.messageCreator.createMessage(); final MailCreator mailCreator = getMailCreator(flow); final boolean mailCreated = mailCreator.createSuccessEmail(flow, message, this.azkabanName, this.scheme, this.clientHostname, this.clientPortNumber); sendEmail(message, mailCreated, "success email message for execution" + flow.getExecutionId()); }
@Override public void alertOnError(final ExecutableFlow flow, final String... extraReasons) { final EmailMessage message = this.messageCreator.createMessage(); final MailCreator mailCreator = getMailCreator(flow); List<ExecutableFlow> last72hoursExecutions = new ArrayList<>(); if (flow.getStartTime() > 0) { final long startTime = flow.getStartTime() - Duration.ofHours(72).toMillis(); try { last72hoursExecutions = this.executorLoader.fetchFlowHistory(flow.getProjectId(), flow .getFlowId(), startTime); } catch (final ExecutorManagerException e) { logger.error("unable to fetch past executions", e); } } final boolean mailCreated = mailCreator.createErrorEmail(flow, last72hoursExecutions, message, this.azkabanName, this.scheme, this.clientHostname, this.clientPortNumber, extraReasons); sendEmail(message, mailCreated, "error email message for execution " + flow.getExecutionId()); }