modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/core/plugin/DatabaseAndFilePluginDeploymentTest.java | 4 modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/test/StandardServerPluginService.java | 74 ++++++++++ 2 files changed, 77 insertions(+), 1 deletion(-)
New commits: commit ce289f2f7798a1f1244aef73c56a5572206ce63a Author: Lukas Krejci lkrejci@redhat.com Date: Fri Mar 4 15:24:01 2011 +0100
execute the DatabaseAndFilePluginDeploymentTest only after all the tests from plugin.metadata group have been executed, so that the rhq_plugin table is cleaned up.
diff --git a/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/core/plugin/DatabaseAndFilePluginDeploymentTest.java b/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/core/plugin/DatabaseAndFilePluginDeploymentTest.java index 3dc168a..75ed400 100644 --- a/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/core/plugin/DatabaseAndFilePluginDeploymentTest.java +++ b/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/core/plugin/DatabaseAndFilePluginDeploymentTest.java @@ -41,7 +41,9 @@ import java.util.*; import java.util.zip.ZipEntry; import java.util.zip.ZipOutputStream;
-@Test +//make sure we run this after the plugins.metadata tests are done so that +//the db contents don't interfere +@Test(dependsOnGroups = "plugins.metadata") public class DatabaseAndFilePluginDeploymentTest extends AbstractEJB3Test {
private static final String PLUGIN_NAME = "DeployTest"; // as defined in our test descriptors
commit 71803539f68d9ea97680f325aec38391645fce96 Author: Lukas Krejci lkrejci@redhat.com Date: Fri Mar 4 15:22:58 2011 +0100
ok, now the ResourceFactoryManagerTest *really* works.. ;)
diff --git a/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/test/StandardServerPluginService.java b/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/test/StandardServerPluginService.java index a5ac8df..d17981c 100644 --- a/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/test/StandardServerPluginService.java +++ b/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/test/StandardServerPluginService.java @@ -19,7 +19,25 @@
package org.rhq.enterprise.server.test;
+import java.io.File; +import java.lang.reflect.Constructor; +import java.util.ArrayList; +import java.util.List; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +import org.rhq.enterprise.server.plugin.pc.AbstractTypeServerPluginContainer; +import org.rhq.enterprise.server.plugin.pc.MasterServerPluginContainer; +import org.rhq.enterprise.server.plugin.pc.MasterServerPluginContainerConfiguration; import org.rhq.enterprise.server.plugin.pc.ServerPluginService; +import org.rhq.enterprise.server.plugin.pc.alert.AlertServerPluginContainer; +import org.rhq.enterprise.server.plugin.pc.bundle.BundleServerPluginContainer; +import org.rhq.enterprise.server.plugin.pc.content.ContentServerPluginContainer; +import org.rhq.enterprise.server.plugin.pc.content.PackageTypeServerPluginContainer; +import org.rhq.enterprise.server.plugin.pc.entitlement.EntitlementServerPluginContainer; +import org.rhq.enterprise.server.plugin.pc.generic.GenericServerPluginContainer; +import org.rhq.enterprise.server.plugin.pc.perspective.PerspectiveServerPluginContainer;
/** * An MBean to use as a ServerPluginService for tests that actually don't care @@ -30,4 +48,60 @@ import org.rhq.enterprise.server.plugin.pc.ServerPluginService; */ public class StandardServerPluginService extends ServerPluginService implements StandardServerPluginServiceMBean {
+ private static final Log LOG = LogFactory.getLog(StandardServerPluginService.class); + + public static class TestMasterServerPluginContainer extends MasterServerPluginContainer { + private List<AbstractTypeServerPluginContainer> serverPluginContainers = new ArrayList<AbstractTypeServerPluginContainer>(); + + public TestMasterServerPluginContainer( + List<Class<? extends AbstractTypeServerPluginContainer>> pluginContainerClasses) { + + for (Class<? extends AbstractTypeServerPluginContainer> cls : pluginContainerClasses) { + try { + Constructor<? extends AbstractTypeServerPluginContainer> ctor = cls + .getConstructor(MasterServerPluginContainer.class); + AbstractTypeServerPluginContainer container = ctor.newInstance(this); + serverPluginContainers.add(container); + } catch (Exception e) { + LOG.error("Failed to instantiate server plugin container class: " + cls.getName(), e); + } + } + } + + @Override + protected List<AbstractTypeServerPluginContainer> createPluginContainers() { + return serverPluginContainers; + } + } + + // public so tests can directly set these + public TestMasterServerPluginContainer master; + public MasterServerPluginContainerConfiguration masterConfig; + + /** + * This list contains all the standard server plugin container classes by default. + * Modify it before the master plugin container is started, if you don't want + * some of these deployed or if you want to supply a custom one tailored for your test. + */ + public List<Class<? extends AbstractTypeServerPluginContainer>> pluginContainerClasses; + + public StandardServerPluginService() { + File dir = new File(System.getProperty("java.io.tmpdir"), "test-server-plugins"); + this.masterConfig = new MasterServerPluginContainerConfiguration(dir, dir, dir, null); + pluginContainerClasses = new ArrayList<Class<? extends AbstractTypeServerPluginContainer>>(); + pluginContainerClasses.add(AlertServerPluginContainer.class); + pluginContainerClasses.add(BundleServerPluginContainer.class); + pluginContainerClasses.add(ContentServerPluginContainer.class); + pluginContainerClasses.add(EntitlementServerPluginContainer.class); + pluginContainerClasses.add(GenericServerPluginContainer.class); + pluginContainerClasses.add(PackageTypeServerPluginContainer.class); + pluginContainerClasses.add(PerspectiveServerPluginContainer.class); + } + + @Override + protected MasterServerPluginContainer createMasterPluginContainer() { + this.master = new TestMasterServerPluginContainer(pluginContainerClasses); + this.master.initialize(this.masterConfig); + return this.master; + } }