modules/enterprise/server/jar/src/test/groovy/org/rhq/enterprise/server/resource/metadata/ResourceMetadataManagerBeanTest.groovy | 183 +++++----- 1 file changed, 93 insertions(+), 90 deletions(-)
New commits: commit f773e4907c08d62fc485c00b92209ad887955897 Author: John Sanda jsanda@redhat.com Date: Thu Oct 28 12:21:19 2010 -0400
Clean up database after tests have run
The tests in ResourceMetadataManagerBeanTest have to commit changes to the db and leaving plugins in the database in the RHQ_PLUGINS table is causing subsequent failures in DatabaseAndFilePluginDeploymentTest. I have added logic to remove all plugins added to the database during test runs in ResourceMetadataManagerBeanTest.
Also adding some more tests for verifying behavior when resource types are removed.
diff --git a/modules/enterprise/server/jar/src/test/groovy/org/rhq/enterprise/server/resource/metadata/ResourceMetadataManagerBeanTest.groovy b/modules/enterprise/server/jar/src/test/groovy/org/rhq/enterprise/server/resource/metadata/ResourceMetadataManagerBeanTest.groovy index dd0ef01..fec1ef4 100644 --- a/modules/enterprise/server/jar/src/test/groovy/org/rhq/enterprise/server/resource/metadata/ResourceMetadataManagerBeanTest.groovy +++ b/modules/enterprise/server/jar/src/test/groovy/org/rhq/enterprise/server/resource/metadata/ResourceMetadataManagerBeanTest.groovy @@ -14,9 +14,25 @@ import org.rhq.core.domain.resource.ResourceType import org.rhq.test.AssertUtils import org.rhq.core.domain.criteria.ResourceTypeCriteria import org.rhq.core.domain.criteria.OperationDefinitionCriteria +import org.testng.annotations.AfterClass +import org.hibernate.Session
class ResourceMetadataManagerBeanTest extends AbstractEJB3Test {
+ def plugins = [] + + @AfterClass + void removePluginsFromDB() { + transactionManager.begin() + // using direct hibernate query here because JPA 1.0 lacks support for the IN clause + // where you can directly specify a collection for the parameter value used in an IN + // clause + Session session = entityManager.getDelegate() + session.createQuery("delete from Plugin p where p.name in (:plugins)").setParameterList("plugins", plugins) + .executeUpdate() + transactionManager.commit() + } + @Test(groups = ['NewPlugin']) void registerPlugin() { def pluginDescriptor = @@ -25,11 +41,7 @@ class ResourceMetadataManagerBeanTest extends AbstractEJB3Test { xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:xmlns:rhq-plugin" xmlns:c="urn:xmlns:rhq-configuration"> - <server name="ServerA" - description="Server A description" - class="org.rhq.plugins.test.ServerA" - discovery="org.rhq.plugins.test.ServerADiscoveryComponent"> - + <server name="ServerA" description="Server A description"> <subcategories> <subcategory name="Resources" description="Resources subcategory"/> <subcategory name="Applications" description="Applications subcategory"/> @@ -66,55 +78,15 @@ class ResourceMetadataManagerBeanTest extends AbstractEJB3Test { <event name="logAEntry" description="an entry was appended to a log file"/> <event name="logBEntry" description="an entry was appended to a log file"/>
- <service name="Child1" - description="Child 1 description" - class="org.rhq.plugins.test.Child1" - discovery="org.rhq.plugins.test.Child1ServiceDiscoveryComponent"/> - <service name="Child2" - description="Child 2 description" - class="org.rhq.plugins.test.Child2" - discovery="org.rhq.plugins.test.Child2ServiceDiscoveryComponent"/> - </server> - - <server name="ServerB" - description="Server B description" - class="org.rhq.plugins.test.ServerB" - discovery="org.rhq.plugins.test.ServerBDiscoveryComponent"/> - - <server name="ServerC" - description="Server C description" - class="org.rhq.plugins.test.ServerC" - discovery="org.rhq.plugins.test.ServerCDiscoveryComponent"> - - <operation name="run"> - <parameters> - <c:simple-property name="script"/> - </parameters> - <results> - <c:simple-property name="errors"/> - </results> - </operation> - - <event name="serverCEvent" description="an entry was appended to a log file"/> + <service name="Child1" description="Child 1 description"/> + <service name="Child2" description="Child 2 description"/> </server>
- <server name="ServerD"> - <service name="ServerD.Child1"> - <service name="ServerD.GrandChild1"/> - </service> - </server> + <server name="ServerB" description="Server B description"/> </plugin> """
- def args = createPlugin("test-plugin", pluginDescriptor, "1.0") - Assert.assertNotNull args.plugin - Assert.assertNotNull args.pluginFile - Assert.assertNotNull args.pluginDescriptor - - def subjectMgr = LookupUtil.subjectManager - def resourceMetadataMgr = LookupUtil.resourceMetadataManager - - resourceMetadataMgr.registerPlugin(subjectMgr.overlord, args.plugin, args.pluginDescriptor, args.pluginFile, false) + createPlugin("test-plugin", "1.0", pluginDescriptor) }
@Test(dependsOnMethods = ['registerPlugin'], groups = ['NewPlugin']) @@ -189,10 +161,7 @@ class ResourceMetadataManagerBeanTest extends AbstractEJB3Test { xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:xmlns:rhq-plugin" xmlns:c="urn:xmlns:rhq-configuration"> - <server name="ServerA" - description="Server A description" - class="org.rhq.plugins.test.ServerA" - discovery="org.rhq.plugins.test.ServerADiscoveryComponent"> + <server name="ServerA" description="Server A description">
<subcategories> <subcategory name="Resources" description="Resources subcategory"/> @@ -240,41 +209,17 @@ class ResourceMetadataManagerBeanTest extends AbstractEJB3Test { <event name="logAEntry" description="an entry was appended to a log file"/> <event name="logCEntry" description="an entry was appended to a log file"/>
- <service name="Child1" - description="Child 1 description" - class="org.rhq.plugins.test.Child1" - discovery="org.rhq.plugins.test.Child1ServiceDiscoveryComponent"/> - - <service name="Child3" - description="Child 3 description" - class="org.rhq.plugins.test.Child3" - discovery="org.rhq.plugins.test.Child3ServiceDiscoveryComponent"/> - </server> - <server name="ServerB" - description="Server B description" - class="org.rhq.plugins.test.ServerB" - discovery="org.rhq.plugins.test.ServerBDiscoveryComponent"> - <service name="Child2" - description="Child 2 description" - class="org.rhq.plugins.test.Child2" - discovery="org.rhq.plugins.test.Child2ServiceDiscoveryComponent"/> + <service name="Child1"/> + <service name="Child3"/> </server>
- <server name="ServerD"> - <service name="ServerD.GrandChild1"/> + <server name="ServerB" description="Server B description"> + <service name="Child2"/> </server> </plugin> """
- def args = createPlugin("test-plugin", pluginDescriptor, "2.0") - Assert.assertNotNull args.plugin - Assert.assertNotNull args.pluginFile - Assert.assertNotNull args.pluginDescriptor - - def subjectMgr = LookupUtil.subjectManager - def resourceMetadataMgr = LookupUtil.resourceMetadataManager - - resourceMetadataMgr.registerPlugin(subjectMgr.overlord, args.plugin, args.pluginDescriptor, args.pluginFile, true) + createPlugin("test-plugin", "2.0", pluginDescriptor) }
@Test(dependsOnMethods = ['upgradePlugin'], groups = ['UpgradePlugin']) @@ -296,7 +241,7 @@ class ResourceMetadataManagerBeanTest extends AbstractEJB3Test { }
@Test(dependsOnMethods = ['upgradePlugin'], groups = ['UpgradePlugin']) - void upgradeParentTypeWhenTypeChangesParents() { + void upgradeParentTypeOfChild() { assertAssociationEquals( 'ServerB', 'childResourceTypes', @@ -322,7 +267,51 @@ class ResourceMetadataManagerBeanTest extends AbstractEJB3Test { ) }
- @Test(dependsOnMethods = ['upgradePlugin'], groups = ['UpgradePlugin']) + @Test(groups = ['RemoveTypes'], dependsOnGroups = ['UpgradePlugin']) + void upgradePluginWithTypesRemoved() { + def originalDescriptor = """ + <plugin name="RemoveTypesPlugin" displayName="Remove Types Plugin" package="org.rhq.plugins.test" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xmlns="urn:xmlns:rhq-plugin" + xmlns:c="urn:xmlns:rhq-configuration"> + <server name="ServerC" description="Server C description"> + <operation name="run"> + <parameters> + <c:simple-property name="script"/> + </parameters> + <results> + <c:simple-property name="errors"/> + </results> + </operation> + + <event name="serverCEvent" description="an entry was appended to a log file"/> + </server> + + <server name="ServerD"> + <service name="ServerD.Child1"> + <service name="ServerD.GrandChild1"/> + </service> + </server> + </plugin> + """ + + createPlugin 'remove-types-plugin', '1.0', originalDescriptor + + def updatedDescriptor = """ + <plugin name="RemoveTypesPlugin" displayName="Remove Types Plugin" package="org.rhq.plugins.test" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xmlns="urn:xmlns:rhq-plugin" + xmlns:c="urn:xmlns:rhq-configuration"> + <server name="ServerD"> + <service name="ServerD.GrandChild1"/> + </server> + </plugin> + """ + + createPlugin 'remove-types-plugin', '2.0', updatedDescriptor + } + + @Test(dependsOnMethods = ['upgradePluginWithTypesRemoved'], groups = ['RemoveTypes']) void deleteOperationDefsForRemovedType() { def operationMgr = LookupUtil.operationManager def subjectMgr = LookupUtil.subjectManager @@ -336,7 +325,7 @@ class ResourceMetadataManagerBeanTest extends AbstractEJB3Test { assertEquals "The operation definition should have been deleted", 0, operationDefs.size() }
- @Test(dependsOnMethods = ['upgradePlugin'], groups = ['UpgradePlugin']) + @Test(dependsOnMethods = ['upgradePluginWithTypesRemoved'], groups = ['RemoveTypes']) void deleteEventDefsForRemovedType() { def results = entityManager.createQuery( "from EventDefinition e where e.name = :ename and e.resourceType.name = :rname") @@ -347,14 +336,14 @@ class ResourceMetadataManagerBeanTest extends AbstractEJB3Test { assertEquals "The event definition(s) should have been deleted", 0, results.size() }
- @Test(dependsOnMethods = ['upgradePlugin'], groups = ['UpgradePlugin']) + @Test(dependsOnMethods = ['upgradePluginWithTypesRemoved'], groups = ['RemoveTypes']) void deleteParent() { def subjectMgr = LookupUtil.subjectManager def resourceTypeMgr = LookupUtil.resourceTypeManager
def criteria = new ResourceTypeCriteria() - criteria.addFilterName "GrandChild1" - criteria.addFilterPluginName "TestPlugin" + criteria.addFilterName "ServerD.GrandChild1" + criteria.addFilterPluginName "RemoveTypesPlugin" criteria.fetchParentResourceTypes true
def types = resourceTypeMgr.findResourceTypesByCriteria(subjectMgr.overlord, criteria) @@ -370,6 +359,11 @@ class ResourceMetadataManagerBeanTest extends AbstractEJB3Test { assertNotNull "Expected to find 'ServerD' as the parent, but found, $type.parentResourceTypes", parentType }
+ @Test(dependsOnMethods = ['upgradePluginWithTypesRemoved'], groups = ['RemoveTypes']) + void deleteProcessScans() { + + } + /** * This method creates the plugin-related artifacts that are need to call * ResourceMetadataManager.registerPlugin. It creates the PluginDescriptor object, and @@ -387,7 +381,7 @@ class ResourceMetadataManagerBeanTest extends AbstractEJB3Test { * @return A map containing the generated artifacts. The maps keys are pluginDescriptor, * pluginFile, and plugin */ - def createPlugin(String pluginFileName, String descriptor, String version) { + def createPlugin(String pluginFileName, String version, String descriptor) { def pluginDescriptor = toPluginDescriptor(descriptor) def pluginFilePath = "$currentWorkingDir/${pluginFileName}.jar"
@@ -414,7 +408,16 @@ class ResourceMetadataManagerBeanTest extends AbstractEJB3Test { plugin.version = pluginDescriptor.version plugin.MD5 = MessageDigestGenerator.getDigestString(pluginFile)
- return [pluginDescriptor: pluginDescriptor, pluginFile: pluginFile, plugin: plugin] + Assert.assertNotNull plugin + Assert.assertTrue pluginFile.exists() + Assert.assertNotNull pluginDescriptor + + def subjectMgr = LookupUtil.subjectManager + def resourceMetadataMgr = LookupUtil.resourceMetadataManager + + resourceMetadataMgr.registerPlugin(subjectMgr.overlord, plugin, pluginDescriptor, pluginFile, true) + + plugins << plugin.name }
String getPluginWorkDir() {