package org.rhq.enterprise.server.resource.metadata;
import java.util.List;
import org.testng.annotations.Test;
import org.rhq.core.domain.alert.AlertDampening;
import org.rhq.core.domain.alert.AlertDefinition;
import org.rhq.core.domain.alert.AlertPriority;
import org.rhq.core.domain.alert.BooleanExpression;
import org.rhq.core.domain.resource.ResourceType;
import org.rhq.enterprise.server.alert.AlertTemplateManagerLocal;
import org.rhq.enterprise.server.auth.SubjectManagerLocal;
import org.rhq.enterprise.server.resource.ResourceTypeManagerLocal;
import org.rhq.enterprise.server.util.LookupUtil;
public class AlertMetadataManagerBeanTest extends MetadataBeanTest {
@Test(groups = {"plugin.metadata", "Alerts.NewPlugin"})
public void registerAlertsPlugin() throws Exception {
createPlugin("alert-test-plugin", "1.0", "plugin_v1.xml");
}
@Test(groups = {"plugin.metadata", "Alerts.NewPlugin"}, dependsOnMethods = {"registerAlertsPlugin"})
public void createAlertTemplates() throws Exception {
createAlertTemplate("AlertServer Template 1", "AlertServer", "AlertMetadataManagerBeanTestPlugin");
createAlertTemplate("AlertServer Template 2", "AlertServer", "AlertMetadataManagerBeanTestPlugin");
}
@Test(groups = {"plugin.metadata", "UpgradePlugin"}, dependsOnGroups = {"Alerts.NewPlugin"})
public void upgradeAlertsPlugin() throws Exception {
createPlugin("alert-test-plugin", "2.0", "plugin_v2.xml");
}
@Test(groups = {"plugin.metadata", "Alerts.UpgradePlugin"}, dependsOnMethods = {"upgradeAlertsPlugin"})
public void deleteAlertTemplates() {
List templates = getEntityManager().createQuery("from AlertDefinition a where a.resourceType.name = :type")
.setParameter("type", "AlertServer")
.getResultList();
assertEquals("Alert templates should have been deleted.", 0, templates.size());
}
// this needs to be the last test executed in the class, it does cleanup
@Test(priority = 10, alwaysRun = true, dependsOnGroups = { "Alerts.UpgradePlugin" })
public void afterClassWorkTest() throws Exception {
afterClassWork();
}
void createAlertTemplate(String name, String resourceTypeName, String pluginName) throws Exception {
SubjectManagerLocal subjectMgr = LookupUtil.getSubjectManager();
ResourceTypeManagerLocal resourceTypeMgr = LookupUtil.getResourceTypeManager();
AlertTemplateManagerLocal alertTemplateMgr = LookupUtil.getAlertTemplateManager();
ResourceType resourceType = resourceTypeMgr.getResourceTypeByNameAndPlugin(resourceTypeName, pluginName);
assertNotNull("Cannot create alert template. Unable to find resource type for [name: " + resourceTypeName +
", plugin: " + pluginName + "]", resourceType);
AlertDefinition alertDef = new AlertDefinition();
alertDef.setName(name);
alertDef.setPriority(AlertPriority.MEDIUM);
alertDef.setResourceType(resourceType);
alertDef.setConditionExpression(BooleanExpression.ALL);
alertDef.setAlertDampening(new AlertDampening(AlertDampening.Category.NONE));
alertDef.setRecoveryId(0);
alertTemplateMgr.createAlertTemplate(subjectMgr.getOverlord(), alertDef, resourceType.getId());
}
}