package org.rhq.enterprise.server.resource.metadata; import static java.util.Arrays.asList; import static java.util.Collections.EMPTY_LIST; import org.testng.annotations.Test; import org.rhq.core.domain.event.EventDefinition; public class EventMetadataManagerBeanTest extends MetadataBeanTest { @Test(groups = { "plugin.metadata", "Events.NewPlugin" }) public void registerEventsPlugin() throws Exception { createPlugin("event-test-plugin", "1.0", "plugin_v1.xml"); } @Test(groups = { "plugin.metadata", "Events.NewPlugin" }, dependsOnMethods = { "registerEventsPlugin" }) public void persistNewEventDefs() throws Exception { assertResourceTypeAssociationEquals("EventServer1", "EventMetadataManagerBeanTestPlugin", "eventDefinitions", asList("event1", "event2")); } @Test(groups = { "plugin.metadata", "Events.NewPlugin" }, dependsOnMethods = { "persistNewEventDefs" }) public void persistNewEventDefProperties() { EventDefinition eventDef = loadEventDef("event1", "EventServer1"); assertEquals("Failed to set EventDefinition.name", "event1", eventDef.getName()); assertEquals("Failed to set EventDefinition.description", "Event 1", eventDef.getDescription()); } @Test(groups = { "plugin.metadata", "Events.UpgradePlugin" }, dependsOnGroups = { "Events.NewPlugin" }) public void upgradeEventsPlugin() throws Exception { createPlugin("event-test-plugin", "2.0", "plugin_v2.xml"); } @Test(groups = { "plugin.metadata", "Events.UpgradePlugin" }, dependsOnMethods = { "upgradeEventsPlugin" }) public void retainEventDefsOfTypeThatIsNotChangedDuringUpgrade() throws Exception { assertResourceTypeAssociationEquals("EventServer1", "EventMetadataManagerBeanTestPlugin", "eventDefinitions", asList("event1", "event2")); } @Test(groups = { "plugin.metadata", "Events.UpgradePlugin" }, dependsOnMethods = { "upgradeEventsPlugin" }) public void addNewEventDefs() throws Exception { assertResourceTypeAssociationEquals("EventServer2", "EventMetadataManagerBeanTestPlugin", "eventDefinitions", asList("event1", "event2")); } @Test(groups = { "plugin.metadata", "Events.UpgradePlugin" }, dependsOnMethods = { "upgradeEventsPlugin" }) public void deleteEventDefsThatHaveBeenRemovedInUpgradedType() throws Exception { assertResourceTypeAssociationEquals("EventServer3", "EventMetadataManagerBeanTestPlugin", "eventDefinitions", EMPTY_LIST); } @Test(groups = { "plugin.metadata", "Events.UpgradePlugin" }, dependsOnMethods = { "upgradeEventsPlugin" }) public void updateExistingEventDefs() throws Exception { assertResourceTypeAssociationEquals("EventServer4", "EventMetadataManagerBeanTestPlugin", "eventDefinitions", asList("event1", "event3")); EventDefinition eventDef = loadEventDef("event1", "EventServer4"); assertEquals("The description property should have been updated", "EVENT ONE", eventDef.getDescription()); } // this needs to be the last test executed in the class, it does cleanup @Test(priority = 10, alwaysRun = true, dependsOnGroups = { "Events.UpgradePlugin" }) public void afterClassWorkTest() throws Exception { afterClassWork(); } EventDefinition loadEventDef(String name, String resourceType) { return (EventDefinition) getEntityManager() .createQuery("from EventDefinition e where e.name = :name and e.resourceType.name = :resourceType") .setParameter("name", name).setParameter("resourceType", resourceType).getSingleResult(); } }