package org.stagemonitor.alerting.alerter;
import static org.junit.Assert.assertEquals;
import static org.stagemonitor.alerting.incident.IncidentRepositoryTest.createIncidentWithVersion;
import org.junit.Before;
import org.junit.Test;
import org.stagemonitor.alerting.incident.Incident;
public class AlertTemplateProcessorTest extends AbstractAlerterTest {
private AlertTemplateProcessor alertTemplateProcessor;
private Incident testIncident;
@Before
public void setUp() throws Exception {
alertTemplateProcessor = alertingPlugin.getAlertTemplateProcessor();
testIncident = createIncidentWithVersion("1", 1);
}
@Test
public void testProcessShortDescriptionTemplate() throws Exception {
assertEquals("[OK -> CRITICAL] Test Timer has 2 failing checks", alertTemplateProcessor.processShortDescriptionTemplate(createIncidentWithVersion("1", 1)));
// modify template
configurationSource.add("stagemonitor.alerts.template.shortDescription", "foo");
configuration.reloadDynamicConfigurationOptions();
assertEquals("foo", alertTemplateProcessor.processShortDescriptionTemplate(testIncident));
}
@Test
public void testProcessPlainTextTemplate() throws Exception {
assertEquals(String.format("Incident for check 'Test Timer':\n" +
"First failure: %s\n" +
"Old status: OK\n" +
"New status: CRITICAL\n" +
"Failing checks: 2\n" +
"Hosts: testHost2\n" +
"Instances: testInstance\n" +
"\n" +
"Details:" +
"\n" +
"Host: testHost2\n" +
"Instance: testInstance\n" +
"Status: CRITICAL\n" +
"Description: test\n" +
"Current value: 10\n" +
"\n" +
"Host: testHost2\n" +
"Instance: testInstance\n" +
"Status: ERROR\n" +
"Description: test\n" +
"Current value: 10\n\n", toFreemarkerIsoLocal(testIncident.getFirstFailureAt())),
alertTemplateProcessor.processPlainTextTemplate(testIncident));
}
@Test
public void testProcessHtmlTemplate() throws Exception {
assertEquals(String.format(
"<h3>Incident for check Test Timer</h3>\n" +
"First failure: %s<br>\n" +
"Old status: OK<br>\n" +
"New status: CRITICAL<br>\n" +
"Failing checks: 2<br>\n" +
"Hosts: testHost2<br>\n" +
"Instances: testInstance<br><br>\n" +
"\n" +
"<table>\n" +
"\t<thead>\n" +
"\t<tr>\n" +
"\t\t<th>Host</th>\n" +
"\t\t<th>Instance</th>\n" +
"\t\t<th>Status</th>\n" +
"\t\t<th>Description</th>\n" +
"\t\t<th>Current Value</th>\n" +
"\t</tr>\n" +
"\t</thead>\n" +
"\t<tbody>\n" +
"\t\t\t<tr>\n" +
"\t\t\t\t<td>testHost2</td>\n" +
"\t\t\t\t<td>testInstance</td>\n" +
"\t\t\t\t<td>CRITICAL</td>\n" +
"\t\t\t\t<td>test</td>\n" +
"\t\t\t\t<td>10</td>\n" +
"\t\t\t</tr>\n" +
"\t\t\t<tr>\n" +
"\t\t\t\t<td>testHost2</td>\n" +
"\t\t\t\t<td>testInstance</td>\n" +
"\t\t\t\t<td>ERROR</td>\n" +
"\t\t\t\t<td>test</td>\n" +
"\t\t\t\t<td>10</td>\n" +
"\t\t\t</tr>\n" +
"\t</tbody>\n" +
"</table>\n", toFreemarkerIsoLocal(testIncident.getFirstFailureAt())),
alertTemplateProcessor.processHtmlTemplate(testIncident));
}
}