modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/TestServerPluginService.java | 2 modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/bundle/TestBundleServerPluginService.java | 2 modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/content/test/ContentUIManagerBeanTest.java | 11 modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/core/CoreServerServiceImplTest.java | 2 modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/core/plugin/DatabaseAndFilePluginDeploymentTest.java | 7 modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/drift/DriftManagerBeanTest.java | 2 modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/plugin/pc/content/TestContentServerPluginService.java | 2 modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/plugin/pc/generic/TestGenericServerPluginService.java | 2 modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/resource/metadata/MetadataBeanTest.java | 35 modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/resource/metadata/PluginManagerBeanTest.java | 6 modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/resource/metadata/PluginScanningExtensionMetadataTest.java | 12 modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/resource/metadata/test/UpdatePluginMetadataTestBase.java | 2 modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/test/AbstractEJB3Test.java | 46 - modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/test/OldAbstractEJB3Test.java | 445 ---------- modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/test/StandardServerPluginService.java | 2 modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/test/TestServerPluginService.java | 2 16 files changed, 68 insertions(+), 512 deletions(-)
New commits: commit a8d94d9619c760f372499502be72db3384487154 Author: Jay Shaughnessy jshaughn@redhat.com Date: Sat Dec 1 19:29:10 2012 -0500
Server i-test work to address many test interaction issues ( ** There are still some test failures ** ) - thin rhq.ear by removing the services SAR. The standard services actually just get in the way, tests are responsible for prepare/unprepare of any services they need and should not depend on the production services, which may perform undesired work anyway. - Add AbstractEJB3Test.preparePluginScannerService(), which will prepare a default test deployment scanner, and make use of it in more classes that need that service deployed, and were previously depending on the production deployment scanner. - Apply more consistent temp directory usage by settling on java.io.tmpdir/rhq/<class.simplename> as the convention. Add AbstractEJB3Test.getTempDir() and use it ubiquitously. This consolidates the test files under and "rhq" root dir and also identofies them by creating class name. - DatabaseAndFilePluginDeploymentTest - make a non-test method private, not public so it doesn't execute as a test - remove the obsolete OldAbstractEJB3Test class
diff --git a/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/TestServerPluginService.java b/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/TestServerPluginService.java index be9b752..796a562 100644 --- a/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/TestServerPluginService.java +++ b/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/TestServerPluginService.java @@ -53,7 +53,7 @@ public abstract class TestServerPluginService extends ServerPluginService implem
protected TestServerPluginService() { // build the config at constructor time so tests have it even before the PC is initialized - File dir = new File(System.getProperty("java.io.tmpdir"), "test-server-plugins"); + File dir = new File(System.getProperty("java.io.tmpdir") + "/rhq", this.getClass().getSimpleName()); this.masterConfig = new MasterServerPluginContainerConfiguration(dir, dir, dir, null); }
diff --git a/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/bundle/TestBundleServerPluginService.java b/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/bundle/TestBundleServerPluginService.java index 61c53d3..45f210c 100644 --- a/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/bundle/TestBundleServerPluginService.java +++ b/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/bundle/TestBundleServerPluginService.java @@ -68,7 +68,7 @@ public class TestBundleServerPluginService extends ServerPluginService implement
public TestBundleServerPluginService() { // build the config at constructor time so tests have it even before the PC is initialized - File dir = new File(System.getProperty("java.io.tmpdir"), "test-server-plugins"); + File dir = new File(System.getProperty("java.io.tmpdir") + "/rhq", this.getClass().getSimpleName()); this.masterConfig = new MasterServerPluginContainerConfiguration(dir, dir, dir, null); }
diff --git a/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/content/test/ContentUIManagerBeanTest.java b/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/content/test/ContentUIManagerBeanTest.java index 311d521..51bd984 100644 --- a/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/content/test/ContentUIManagerBeanTest.java +++ b/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/content/test/ContentUIManagerBeanTest.java @@ -268,12 +268,13 @@ public class ContentUIManagerBeanTest extends AbstractEJB3Test { // contents into memory every time.
// destination once pulled from db - String pulledFilename = System.getProperty("java.io.tmpdir") + "/" - + this.getClass().getSimpleName() - + "/pulled.jar"; - File retrieved = new File(pulledFilename); + File tempDir = getTempDir(); + if (!tempDir.exists()) { + assertTrue("Unable to mkdirs " + tempDir + " for test.", tempDir.mkdirs()); + } + File retrieved = new File(tempDir, "pulled.jar"); if (retrieved.exists()) { - assertTrue("Unable to delete " + pulledFilename + " for test cleanup.", retrieved.delete()); + assertTrue("Unable to delete " + retrieved.getPath() + " for test cleanup.", retrieved.delete()); }
//any jar should be fine. Use canned jar diff --git a/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/core/CoreServerServiceImplTest.java b/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/core/CoreServerServiceImplTest.java index 645e35c..02a2fbc 100644 --- a/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/core/CoreServerServiceImplTest.java +++ b/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/core/CoreServerServiceImplTest.java @@ -531,7 +531,7 @@ public class CoreServerServiceImplTest extends AbstractEJB3Test {
@Override public File getJBossServerHomeDir() { - return new File(System.getProperty("java.io.tmpdir"), "CoreServerServiceImplTest"); + return getTempDir(); }
@Override diff --git a/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/core/plugin/DatabaseAndFilePluginDeploymentTest.java b/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/core/plugin/DatabaseAndFilePluginDeploymentTest.java index 6d649f5..d031926 100644 --- a/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/core/plugin/DatabaseAndFilePluginDeploymentTest.java +++ b/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/core/plugin/DatabaseAndFilePluginDeploymentTest.java @@ -48,13 +48,12 @@ import org.rhq.enterprise.server.util.LookupUtil;
//make sure we run this after the plugins.metadata tests are done so that //the db contents don't interfere -@Test -//(dependsOnGroups = "plugin.metadata") +//@Test(dependsOnGroups = "plugin.metadata") public class DatabaseAndFilePluginDeploymentTest extends AbstractEJB3Test {
private static final String PLUGIN_NAME = "DeployTest"; // as defined in our test descriptors private static final String DESCRIPTORS_LOCATION = "test/deployment/"; - private static final String TEST_DIR = System.getProperty("java.io.tmpdir") + "/" + private static final String TEST_DIR = System.getProperty("java.io.tmpdir") + "/rhq/" + DatabaseAndFilePluginDeploymentTest.class.getName() + "/"; private static final String JARS_LOCATION = TEST_DIR + "jars"; private static final String DEPLOY_LOCATION = TEST_DIR + "deploy"; @@ -116,7 +115,7 @@ public class DatabaseAndFilePluginDeploymentTest extends AbstractEJB3Test { // is important that afterClassStandIn() have a dependency such that it runs in the last test-set.
//@BeforeClass - public void beforeClass() throws Exception { + private void beforeClass() throws Exception { Calendar cal = Calendar.getInstance(); cal.set(2009, Calendar.FEBRUARY, 1, 1, 0, 0); cal.set(Calendar.MILLISECOND, 0); diff --git a/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/drift/DriftManagerBeanTest.java b/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/drift/DriftManagerBeanTest.java index 8389f17..03cffdc 100644 --- a/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/drift/DriftManagerBeanTest.java +++ b/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/drift/DriftManagerBeanTest.java @@ -111,7 +111,7 @@ public class DriftManagerBeanTest extends AbstractEJB3Test {
@Test public void testStoreChangeSet() throws Exception { - File rootDir = new File(System.getProperty("java.io.tmpdir")); + File rootDir = getTempDir(); File changeSetsDir = new File(rootDir, "changesets"); deleteDirectory(changeSetsDir); changeSetsDir.mkdirs(); diff --git a/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/plugin/pc/content/TestContentServerPluginService.java b/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/plugin/pc/content/TestContentServerPluginService.java index da94c58..5850985 100644 --- a/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/plugin/pc/content/TestContentServerPluginService.java +++ b/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/plugin/pc/content/TestContentServerPluginService.java @@ -86,7 +86,7 @@ public class TestContentServerPluginService extends ServerPluginService implemen
protected MasterServerPluginContainer createMasterPluginContainer() { MasterServerPluginContainer master = new TestMasterServerPluginContainer(); - File dir = new File(System.getProperty("java.io.tmpdir"), "test-server-plugins"); + File dir = new File(System.getProperty("java.io.tmpdir") + "/rhq", this.getClass().getSimpleName()); MasterServerPluginContainerConfiguration config = new MasterServerPluginContainerConfiguration(dir, dir, dir, null); master.initialize(config); diff --git a/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/plugin/pc/generic/TestGenericServerPluginService.java b/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/plugin/pc/generic/TestGenericServerPluginService.java index e8cdb51..85f45d0 100644 --- a/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/plugin/pc/generic/TestGenericServerPluginService.java +++ b/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/plugin/pc/generic/TestGenericServerPluginService.java @@ -57,7 +57,7 @@ public class TestGenericServerPluginService extends ServerPluginService implemen
public TestGenericServerPluginService() { // build the config at constructor time so tests have it even before the PC is initialized - File dir = new File(System.getProperty("java.io.tmpdir"), "test-server-plugins"); + File dir = new File(System.getProperty("java.io.tmpdir" + "/rhq"), this.getClass().getSimpleName()); this.masterConfig = new MasterServerPluginContainerConfiguration(dir, dir, dir, null); }
diff --git a/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/resource/metadata/MetadataBeanTest.java b/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/resource/metadata/MetadataBeanTest.java index dbdb765..38b1216 100644 --- a/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/resource/metadata/MetadataBeanTest.java +++ b/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/resource/metadata/MetadataBeanTest.java @@ -39,7 +39,6 @@ import org.rhq.core.util.MessageDigestGenerator; import org.rhq.core.util.stream.StreamUtil; import org.rhq.enterprise.server.auth.SubjectManagerLocal; import org.rhq.enterprise.server.bundle.TestBundleServerPluginService; -import org.rhq.enterprise.server.core.plugin.PluginDeploymentScanner; import org.rhq.enterprise.server.resource.ResourceTypeManagerLocal; import org.rhq.enterprise.server.scheduler.jobs.PurgePluginsJob; import org.rhq.enterprise.server.scheduler.jobs.PurgeResourceTypesJob; @@ -48,8 +47,6 @@ import org.rhq.enterprise.server.util.LookupUtil;
public class MetadataBeanTest extends AbstractEJB3Test {
- protected PluginDeploymentScanner pluginScanner; - private List<Integer> pluginIds = new ArrayList<Integer>();
/** @@ -81,6 +78,7 @@ public class MetadataBeanTest extends AbstractEJB3Test { prepareCustomServerPluginService(bundleService); bundleService.startMasterPluginContainerWithoutSchedulingJobs(); prepareScheduler(); + preparePluginScannerService(); }
/** @@ -91,6 +89,7 @@ public class MetadataBeanTest extends AbstractEJB3Test { @Override protected void afterMethod() throws Exception {
+ unpreparePluginScannerService(); unprepareServerPluginService(); unprepareScheduler(); } @@ -145,7 +144,7 @@ public class MetadataBeanTest extends AbstractEJB3Test { protected void createPlugin(String pluginFileName, String version, String descriptorFileName) throws Exception { URL descriptorURL = getDescriptorURL(descriptorFileName); PluginDescriptor pluginDescriptor = loadPluginDescriptor(descriptorURL); - String pluginFilePath = getPluginWorkDir() + "/" + pluginFileName + ".jar"; + String pluginFilePath = getPluginScannerService().getAgentPluginDir() + "/" + pluginFileName + ".jar";
Plugin plugin = new Plugin(pluginDescriptor.getName(), pluginFilePath); plugin.setDisplayName(pluginDescriptor.getName()); @@ -162,37 +161,11 @@ public class MetadataBeanTest extends AbstractEJB3Test { pluginIds.add(plugin.getId()); }
- protected void preparePluginScannerService() { - if (this.pluginScanner == null) { - this.pluginScanner = new PluginDeploymentScanner(); - - String pluginDirPath = null; - try { - pluginDirPath = getPluginWorkDir(); - } catch (Exception e) { - throw new RuntimeException("Cannot determine where to put the plugin jar files", e); - } - this.pluginScanner.setAgentPluginDir(pluginDirPath); // we don't want to scan for these - this.pluginScanner.setServerPluginDir(null); // we don't want to scan for these - this.pluginScanner.setScanPeriod("9999999"); // we want to manually scan - don't allow for auto-scan to happen - } - - preparePluginScannerService(this.pluginScanner); - } - private URL getDescriptorURL(String descriptor) { String dir = getClass().getSimpleName(); return getClass().getResource(dir + "/" + descriptor); }
- protected String getPluginWorkDir() throws Exception { - return getCurrentWorkingDir() + "/" + this.getClass().getSimpleName() + "/" + "plugins"; - } - - protected String getCurrentWorkingDir() throws Exception { - return System.getProperty("java.io.tmpdir"); - } - String getAmpsVersion(PluginDescriptor pluginDescriptor) { if (pluginDescriptor.getAmpsVersion() == null) { return "2.0"; @@ -283,7 +256,7 @@ public class MetadataBeanTest extends AbstractEJB3Test { InputStream in = null;
try { - String pluginDirPath = getPluginWorkDir(); + String pluginDirPath = getPluginScannerService().getAgentPluginDir(); File pluginDir = new File(pluginDirPath); pluginDir.mkdirs(); File jarFile = new File(pluginDir, jarName); diff --git a/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/resource/metadata/PluginManagerBeanTest.java b/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/resource/metadata/PluginManagerBeanTest.java index 36b0821..befaa1a 100644 --- a/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/resource/metadata/PluginManagerBeanTest.java +++ b/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/resource/metadata/PluginManagerBeanTest.java @@ -55,9 +55,7 @@ public class PluginManagerBeanTest extends MetadataBeanTest { subjectMgr = LookupUtil.getSubjectManager(); pluginMgr = LookupUtil.getPluginManager();
- FileUtil.purge(new File(getPluginWorkDir()), true); - - preparePluginScannerService(); + FileUtil.purge(new File(getPluginScannerService().getAgentPluginDir()), true); }
@Override @@ -88,7 +86,7 @@ public class PluginManagerBeanTest extends MetadataBeanTest { createPluginJarFile("test-plugin3.jar", "plugin_3.xml"); createPluginJarFile("test-plugin3.1.jar", "plugin_3.1.xml");
- pluginScanner.startDeployment(); + getPluginScannerService().startDeployment(); }
@Test(dependsOnMethods = { "registerPlugins" }) diff --git a/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/resource/metadata/PluginScanningExtensionMetadataTest.java b/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/resource/metadata/PluginScanningExtensionMetadataTest.java index 5417305..1667dee 100644 --- a/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/resource/metadata/PluginScanningExtensionMetadataTest.java +++ b/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/resource/metadata/PluginScanningExtensionMetadataTest.java @@ -56,8 +56,6 @@ public class PluginScanningExtensionMetadataTest extends MetadataBeanTest { protected void beforeMethod() throws Exception { super.beforeMethod();
- preparePluginScannerService(); - subjectMgr = LookupUtil.getSubjectManager(); resourceTypeMgr = LookupUtil.getResourceTypeManager();
@@ -80,8 +78,6 @@ public class PluginScanningExtensionMetadataTest extends MetadataBeanTest { } createdJarFiles.clear();
- unpreparePluginScannerService(); - super.afterMethod(); }
@@ -110,7 +106,7 @@ public class PluginScanningExtensionMetadataTest extends MetadataBeanTest { private void registerParentPluginV1() throws Exception { // register the plugin, load the new type and test to make sure its what we expect createdJarFiles.add(createPluginJarFile("parent-plugin.jar", "parent_plugin_v1.xml")); - this.pluginScanner.startDeployment(); // first time we need to scan so call startDeployment which will call scanAndRegister + getPluginScannerService().startDeployment(); // first time we need to scan so call startDeployment which will call scanAndRegister ResourceType resourceType = loadResourceTypeFully(TYPE_NAME_PARENT, PLUGIN_NAME_PARENT); assert resourceType.getName().equals(TYPE_NAME_PARENT); assert resourceType.getPlugin().equals(PLUGIN_NAME_PARENT); @@ -120,7 +116,7 @@ public class PluginScanningExtensionMetadataTest extends MetadataBeanTest { private void registerChild1PluginV1() throws Exception { // register the plugin, load the new type and test to make sure its what we expect createdJarFiles.add(createPluginJarFile("child1-plugin.jar", "child1_plugin_v1.xml")); - this.pluginScanner.scanAndRegister(); + getPluginScannerService().scanAndRegister(); ResourceType resourceType = loadResourceTypeFully(TYPE_NAME_CHILD1, PLUGIN_NAME_CHILD1); assert resourceType.getName().equals(TYPE_NAME_CHILD1); assert resourceType.getPlugin().equals(PLUGIN_NAME_CHILD1); @@ -137,7 +133,7 @@ public class PluginScanningExtensionMetadataTest extends MetadataBeanTest { private void registerChild2PluginV1() throws Exception { // register the plugin, load the new type and test to make sure its what we expect createdJarFiles.add(createPluginJarFile("child2-plugin.jar", "child2_plugin_v1.xml")); - this.pluginScanner.scanAndRegister(); + getPluginScannerService().scanAndRegister(); ResourceType resourceType = loadResourceTypeFully(TYPE_NAME_CHILD2, PLUGIN_NAME_CHILD2); assert resourceType.getName().equals(TYPE_NAME_CHILD2); assert resourceType.getPlugin().equals(PLUGIN_NAME_CHILD2); @@ -147,7 +143,7 @@ public class PluginScanningExtensionMetadataTest extends MetadataBeanTest { private void registerParentPluginV2() throws Exception { // register the plugin, load the new type and test to make sure its what we expect createdJarFiles.add(createPluginJarFile("parent-plugin.jar", "parent_plugin_v2.xml")); - this.pluginScanner.scanAndRegister(); + getPluginScannerService().scanAndRegister(); ResourceType resourceType = loadResourceTypeFully(TYPE_NAME_PARENT, PLUGIN_NAME_PARENT); assert resourceType.getName().equals(TYPE_NAME_PARENT); assert resourceType.getPlugin().equals(PLUGIN_NAME_PARENT); diff --git a/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/resource/metadata/test/UpdatePluginMetadataTestBase.java b/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/resource/metadata/test/UpdatePluginMetadataTestBase.java index ddf59f0..7c4fa43 100644 --- a/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/resource/metadata/test/UpdatePluginMetadataTestBase.java +++ b/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/resource/metadata/test/UpdatePluginMetadataTestBase.java @@ -75,6 +75,7 @@ public class UpdatePluginMetadataTestBase extends AbstractEJB3Test { agentServiceContainer = prepareForTestAgents(); prepareMockAgentServiceContainer(); prepareScheduler(); + preparePluginScannerService();
pluginMgr = LookupUtil.getPluginManager(); resourceTypeManager = LookupUtil.getResourceTypeManager(); @@ -85,6 +86,7 @@ public class UpdatePluginMetadataTestBase extends AbstractEJB3Test { protected void afterMethod() throws Exception { cleanupTest();
+ unpreparePluginScannerService(); unprepareScheduler(); unprepareForTestAgents(); } diff --git a/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/test/AbstractEJB3Test.java b/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/test/AbstractEJB3Test.java index 975efb8..d8db4b9 100644 --- a/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/test/AbstractEJB3Test.java +++ b/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/test/AbstractEJB3Test.java @@ -58,6 +58,7 @@ import org.rhq.core.util.stream.StreamUtil; import org.rhq.enterprise.server.RHQConstants; import org.rhq.enterprise.server.auth.SessionManager; import org.rhq.enterprise.server.core.comm.ServerCommunicationsServiceMBean; +import org.rhq.enterprise.server.core.plugin.PluginDeploymentScanner; import org.rhq.enterprise.server.core.plugin.PluginDeploymentScannerMBean; import org.rhq.enterprise.server.plugin.pc.ServerPluginService; import org.rhq.enterprise.server.plugin.pc.ServerPluginServiceMBean; @@ -292,9 +293,10 @@ public abstract class AbstractEJB3Test extends Arquillian { EnterpriseArchive testEar = ShrinkWrap.create(EnterpriseArchive.class, "rhq.ear"); EnterpriseArchive rhqEar = earResolver.artifact("org.rhq:rhq-enterprise-server-ear:ear:4.6.0-SNAPSHOT") .resolveAs(EnterpriseArchive.class).iterator().next(); - // merge rhq.ear into testEar but include only the EJB jars, the SAR, and the supporting libraries - testEar = testEar.merge(rhqEar, - Filters.include("/lib.*|/rhq.*ejb3\.jar.*|/rhq-enterprise-server-services-sar.*")); + // merge rhq.ear into testEar but include only the EJB jars and the supporting libraries. Note that we + // don't include the services sar because tests are responsible for prepare/unprepare of all required services, + // we don't want the production services performig any unexpected work. + testEar = testEar.merge(rhqEar, Filters.include("/lib.*|/rhq.*ejb3\.jar.*")); // remove startup beans and shutdown listeners, we don't want this to be a full server deployment. The tests // start/stop what they need, typically with test services or mocks. testEar.delete(ArchivePaths @@ -932,12 +934,33 @@ public abstract class AbstractEJB3Test extends Arquillian { }
/** + * Prepares a test deployment scanner with the following characteristics<br/>. + * - start() is called but startDeployment() is not called.<br/> + * - agentPluginDir is set to getTempDir() + "/plugins"<br/> + * - serverPluginDir is set to null (no scanning for server plugins)<br/> + * - scanPeriod is set to 9999999 (basically prevent autoscan)<br/> + */ + protected PluginDeploymentScannerMBean preparePluginScannerService() { + if (null != pluginScannerService) { + return pluginScannerService; + } + + PluginDeploymentScanner scanner = new PluginDeploymentScanner(); + String pluginDirPath = getTempDir() + "/plugins"; + scanner.setAgentPluginDir(pluginDirPath); // we don't want to scan for these + scanner.setServerPluginDir(null); // we don't want to scan for these + scanner.setScanPeriod("9999999"); // we want to manually scan - don't allow for auto-scan to happen + + return preparePluginScannerService(scanner); + } + + /** * Note that the standard plugin scanner service is deployed automatically with the test rhq ear, * this is only necessary if you want a custom service. * * @param scannerService */ - public void preparePluginScannerService(PluginDeploymentScannerMBean scannerService) { + public PluginDeploymentScannerMBean preparePluginScannerService(PluginDeploymentScannerMBean scannerService) { try { MBeanServer mbs = getPlatformMBeanServer(); if (mbs.isRegistered(PluginDeploymentScannerMBean.OBJECT_NAME)) { @@ -949,6 +972,8 @@ public abstract class AbstractEJB3Test extends Arquillian { pluginScannerService = scannerService; pluginScannerService.start();
+ return pluginScannerService; + } catch (Exception e) { e.printStackTrace(); throw new RuntimeException(e); @@ -998,7 +1023,7 @@ public abstract class AbstractEJB3Test extends Arquillian { * @throws Exception */ protected void writeObjects(String filename, Object... objects) throws Exception { - File file = new File(System.getProperty("java.io.tmpdir"), this.getClass().getName() + "-" + filename); + File file = new File(getTempDir(), "-" + filename); file.delete(); ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(file)); for (Object o : objects) { @@ -1021,7 +1046,7 @@ public abstract class AbstractEJB3Test extends Arquillian { ObjectInputStream ois = null;
try { - File file = new File(System.getProperty("java.io.tmpdir"), this.getClass().getName() + "-" + filename); + File file = new File(getTempDir(), "-" + filename); ois = new ObjectInputStream(new FileInputStream(file)); for (int i = 0; i < numObjects; ++i) { result.add(ois.readObject()); @@ -1040,8 +1065,15 @@ public abstract class AbstractEJB3Test extends Arquillian { * @return true if deleted, false otherwise. */ protected boolean deleteObjects(String filename) { - File file = new File(System.getProperty("java.io.tmpdir"), this.getClass().getName() + "-" + filename); + File file = new File(getTempDir(), "-" + filename); return file.delete(); }
+ /** + * @return a temp directory for testing that is specific to this test class. + */ + protected File getTempDir() { + return new File(System.getProperty("java.io.tmpdir") + "/rhq", this.getClass().getSimpleName()); + } + } diff --git a/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/test/OldAbstractEJB3Test.java b/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/test/OldAbstractEJB3Test.java deleted file mode 100644 index a8337b7..0000000 --- a/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/test/OldAbstractEJB3Test.java +++ /dev/null @@ -1,445 +0,0 @@ -///* -// * RHQ Management Platform -// * Copyright (C) 2005-2008 Red Hat, Inc. -// * All rights reserved. -// * -// * This program is free software; you can redistribute it and/or modify -// * it under the terms of the GNU General Public License as published by -// * the Free Software Foundation version 2 of the License. -// * -// * This program is distributed in the hope that it will be useful, -// * but WITHOUT ANY WARRANTY; without even the implied warranty of -// * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// * GNU General Public License for more details. -// * -// * You should have received a copy of the GNU General Public License -// * along with this program; if not, write to the Free Software -// * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -// */ -package org.rhq.enterprise.server.test; - -import org.testng.AssertJUnit; - - -//import static org.rhq.test.JPAUtils.lookupEntityManager; -//import static org.rhq.test.JPAUtils.lookupTransactionManager; -// -//import java.sql.Connection; -//import java.sql.SQLException; -//import java.util.Hashtable; -//import java.util.Properties; -// -//import javax.management.MBeanServer; -//import javax.management.MBeanServerFactory; -//import javax.naming.InitialContext; -//import javax.naming.NamingException; -//import javax.persistence.EntityManager; -//import javax.transaction.TransactionManager; -// -//import org.hibernate.SessionFactory; -//import org.hibernate.stat.Statistics; -//import org.testng.AssertJUnit; -//import org.testng.annotations.AfterMethod; -//import org.testng.annotations.AfterSuite; -//import org.testng.annotations.BeforeMethod; -//import org.testng.annotations.BeforeSuite; -// -//import org.jboss.ejb3.embedded.EJB3StandaloneBootstrap; -//import org.jboss.ejb3.embedded.EJB3StandaloneDeployer; -//import org.jboss.mx.util.MBeanServerLocator; -// -//import org.rhq.core.db.DatabaseTypeFactory; -//import org.rhq.core.db.PostgresqlDatabaseType; -//import org.rhq.core.domain.auth.Subject; -//import org.rhq.core.domain.server.PersistenceUtility; -//import org.rhq.enterprise.server.RHQConstants; -//import org.rhq.enterprise.server.auth.SessionManager; -//import org.rhq.enterprise.server.content.ContentSourceManagerBean; -//import org.rhq.enterprise.server.core.comm.ServerCommunicationsServiceMBean; -//import org.rhq.enterprise.server.core.plugin.PluginDeploymentScanner; -//import org.rhq.enterprise.server.core.plugin.PluginDeploymentScannerMBean; -//import org.rhq.enterprise.server.plugin.pc.ServerPluginService; -//import org.rhq.enterprise.server.plugin.pc.ServerPluginServiceMBean; -//import org.rhq.enterprise.server.scheduler.SchedulerService; -//import org.rhq.enterprise.server.scheduler.SchedulerServiceMBean; -//import org.rhq.enterprise.server.util.LookupUtil; -// -//// -/////** -//// * This is the abstract test base for server jar tests. -//// * -//// * @author Greg Hinkle -//// */ -public abstract class OldAbstractEJB3Test extends AssertJUnit { - // - // private static EJB3StandaloneDeployer deployer; - // private static Statistics stats; - // @SuppressWarnings("unused") - // private static long start; // see endTest() if you want to output this - // private SchedulerService schedulerService; - // private ServerPluginService serverPluginService; - // private MBeanServer dummyJBossMBeanServer; - // private PluginDeploymentScannerMBean pluginScannerService; - // - // - // //@BeforeSuite(groups = {"integration.ejb3","PERF"}) // TODO investigate again - // @BeforeSuite(alwaysRun = true) - // public static void startupEmbeddedJboss() throws Exception { - // // The embeddedDeployment property needs to be set for running tests - // // with the embedded container. It is set in the surefire configuration - // // in pom.xml but setting here makes it easier to run tests directly - // // from your IDE. - // // - // // jsanda - // System.setProperty("embeddedDeployment", "true"); - // - // // Setting content location to the tmp dir - // System.setProperty(ContentSourceManagerBean.FILESYSTEM_PROPERTY, System.getProperty("java.io.tmpdir")); - // - // System.out.println("Starting JBoss EJB3 Embedded Container..."); - // String deployDir = System.getProperty("deploymentDirectory", "target/classes"); - // System.out.println("Loading EJB3 deployments from directory: " + deployDir); - // try { - // EJB3StandaloneBootstrap.boot(null); - // // EJB3StandaloneBootstrap.scanClasspath(); - // - // System.err.println("...... embedded container booted...."); - // - // deployer = EJB3StandaloneBootstrap.createDeployer(); - // - // deployer.setClassLoader(AbstractEJB3Test.class.getClassLoader()); - // System.err.println("...... embedded container classloader set...."); - // - // deployer.getArchivesByResource().add("META-INF/persistence.xml"); - // System.err.println("...... embedded container persistence xml deployed...."); - // - // deployer.getArchivesByResource().add("META-INF/ejb-jar.xml"); - // System.err.println("...... embedded container ejb-jar xml deployed...."); - // - // EJB3StandaloneBootstrap.deployXmlResource("jboss-jms-beans.xml"); - // System.err.println("...... embedded container jboss-jms-beans xml deployed...."); - // - // EJB3StandaloneBootstrap.deployXmlResource("rhq-mdb-beans.xml"); - // System.err.println("...... embedded container rhq-mdb-beans xml deployed...."); - // - // /* - // * File core = new File(deployDir, "on-core-domain-ejb.ejb3"); if (!core.exists()) - // * System.err.println("Deployment directory does not exist: " + core.getAbsolutePath()); - // * deployer.getArchives().add(core.toURI().toURL()); - // * - // * File server = new File(deployDir, "on-enterprise-server-ejb.ejb3"); if (!server.exists()) - // * System.err.println("Deployment directory does not exist: " + server.getAbsolutePath()); - // * deployer.getArchives().add(server.toURI().toURL()); - // * - // */ - // - // //deployer.setKernel(EJB3StandaloneBootstrap.getKernel()); - // deployer.create(); - // System.err.println("...... deployer created...."); - // - // deployer.start(); - // System.err.println("...... deployer started...."); - // - // System.err.println("...... start statistics"); - // SessionFactory sessionFactory = PersistenceUtility.getHibernateSession(getEntityManager()) - // .getSessionFactory(); - // stats = sessionFactory.getStatistics(); - // stats.setStatisticsEnabled(true); - // - // System.err.println("...... embedded container initialized and ready for testing...."); - // - // } catch (Throwable t) { - // // Catch RuntimeExceptions and Errors and dump their stack trace, because Surefire will completely swallow them - // // and throw a cryptic NPE (see http://jira.codehaus.org/browse/SUREFIRE-157)! - // t.printStackTrace(); - // throw new RuntimeException(t); - // } - // } - // - // //@Configuration(groups = "integration.ejb3", afterSuite = true) - // @AfterSuite(alwaysRun = true) - // public static void shutdownEmbeddedJboss() { - // System.out.println("Stopping JBoss EJB3 Embedded Container..."); - // - // System.err.println("!!! Any errors occurring after this point !!!"); - // System.err.println("!!! occurred during embedded server shutdown !!!"); - // System.err.println("!!! and are probably not a real problem. !!!"); - // if (deployer != null) { - // try { - // deployer.stop(); - // deployer.destroy(); - // deployer = null; - // } catch (Throwable t) { - // System.err.println("Failed to stop embedded deployer"); - // t.printStackTrace(System.err); - // } - // } - // EJB3StandaloneBootstrap.shutdown(); - // } - // - // @BeforeMethod - // public static void startTest() { - // if (DatabaseTypeFactory.getDefaultDatabaseType() == null) { - // try { - // Connection conn = getConnection(); - // DatabaseTypeFactory.setDefaultDatabaseType(DatabaseTypeFactory.getDatabaseType(conn)); - // } catch (Exception e) { - // System.err.println("!!! WARNING !!! cannot set default database type, some tests may fail"); - // e.printStackTrace(); - // } - // } - // - // if (stats != null) - // start = stats.getQueryExecutionCount(); - // else - // start = 0; - // } - // - // public static Connection getConnection() throws SQLException { - // return LookupUtil.getDataSource().getConnection(); - // } - // - // @AfterMethod - // public static void endTest() { - // //System.out.println("Connections used: " + (stats.getQueryExecutionCount() - start)); - // } - // - // public TransactionManager getTransactionManager() { - // return lookupTransactionManager(); - // } - // - // public static EntityManager getEntityManager() { - // return lookupEntityManager(); - // } - // - // public static InitialContext getInitialContext() { - // Hashtable<String, String> env = new Hashtable<String, String>(); - // env.put("java.naming.factory.initial", "org.jnp.interfaces.LocalOnlyContextFactory"); - // env.put("java.naming.factory.url.pkgs", "org.jboss.naming:org.jnp.interfaces"); - // try { - // return new InitialContext(env); - // } catch (NamingException e) { - // e.printStackTrace(); - // throw new RuntimeException("Failed to load initial context", e); - // } - // } - // - // public boolean isPostgres() throws Exception { - // return DatabaseTypeFactory.getDatabaseType(getInitialContext(), RHQConstants.DATASOURCE_JNDI_NAME) instanceof PostgresqlDatabaseType; - // } - // - // /** - // * This creates a session for the given user and associates that session with the subject. You can test the security - // * annotations by creating sessions for different users with different permissions. - // * - // * @param subject a JON subject - // * @return the session activated subject, a copy of the subject passed in. - // */ - // public Subject createSession(Subject subject) { - // return SessionManager.getInstance().put(subject); - // } - // - // /** - // * Returns an MBeanServer that simulates the JBossAS MBeanServer. - // * - // * @return MBeanServer instance - // */ - // public MBeanServer getJBossMBeanServer() { - // if (dummyJBossMBeanServer == null) { - // dummyJBossMBeanServer = MBeanServerFactory.createMBeanServer("jboss"); - // MBeanServerLocator.setJBoss(dummyJBossMBeanServer); - // } - // - // return dummyJBossMBeanServer; - // } - // - // public void releaseJBossMBeanServer() { - // if (dummyJBossMBeanServer != null) { - // MBeanServerFactory.releaseMBeanServer(dummyJBossMBeanServer); - // dummyJBossMBeanServer = null; - // } - // } - // - // /** - // * If you need to test round trips from server to agent and back, you first must install the server communications - // * service that houses all the agent clients. Call this method and add your test agent services to the public fields - // * in the returned object. - // * - // * @return the object that will house your test agent service impls and the agent clients. - // * - // * @throws RuntimeException - // */ - // public TestServerCommunicationsService prepareForTestAgents() { - // try { - // MBeanServer mbs = getJBossMBeanServer(); - // if (mbs.isRegistered(ServerCommunicationsServiceMBean.OBJECT_NAME)) { - // mbs.unregisterMBean(ServerCommunicationsServiceMBean.OBJECT_NAME); - // } - // TestServerCommunicationsService testAgentContainer = new TestServerCommunicationsService(); - // mbs.registerMBean(testAgentContainer, ServerCommunicationsServiceMBean.OBJECT_NAME); - // return testAgentContainer; - // } catch (Exception e) { - // throw new RuntimeException(e); - // } - // } - // - // /** - // * Call this after your tests have finished. You only need to call this if your test previously called - // * {@link #prepareForTestAgents()}. - // */ - // public void unprepareForTestAgents() { - // unprepareForTestAgents(false); - // } - // - // public void unprepareForTestAgents(boolean beanOnly) { - // try { - // if (beanOnly) { - // MBeanServer mbs = getJBossMBeanServer(); - // if (mbs.isRegistered(ServerCommunicationsServiceMBean.OBJECT_NAME)) { - // mbs.unregisterMBean(ServerCommunicationsServiceMBean.OBJECT_NAME); - // } - // } else { - // releaseJBossMBeanServer(); - // } - // } catch (Exception e) { - // throw new RuntimeException(e); - // } - // } - // - // /** - // * If you need to test server plugins, you must first prepare the server plugin service. - // * After this returns, the caller must explicitly start the PC by using the appropriate API - // * on the given mbean; this method will only start the service, it will NOT start the master PC. - // * - // * @param testServiceMBean the object that will house your test server plugins - // * - // * @throws RuntimeException - // */ - // public void prepareCustomServerPluginService(ServerPluginService testServiceMBean) { - // try { - // MBeanServer mbs = getJBossMBeanServer(); - // testServiceMBean.start(); - // mbs.registerMBean(testServiceMBean, ServerPluginServiceMBean.OBJECT_NAME); - // serverPluginService = testServiceMBean; - // return; - // } catch (Exception e) { - // throw new RuntimeException(e); - // } - // } - // - // public void unprepareServerPluginService() throws Exception { - // unprepareServerPluginService(false); - // } - // - // public void unprepareServerPluginService(boolean beanOnly) throws Exception { - // if (serverPluginService != null) { - // serverPluginService.stopMasterPluginContainer(); - // serverPluginService.stop(); - // if (beanOnly) { - // MBeanServer mbs = getJBossMBeanServer(); - // if (mbs.isRegistered(ServerPluginService.OBJECT_NAME)) { - // getJBossMBeanServer().unregisterMBean(ServerPluginService.OBJECT_NAME); - // } - // if (mbs.isRegistered(ServerPluginServiceMBean.OBJECT_NAME)) { - // getJBossMBeanServer().unregisterMBean(ServerPluginServiceMBean.OBJECT_NAME); - // } - // - // } else { - // releaseJBossMBeanServer(); - // } - // serverPluginService = null; - // } - // } - // - // public SchedulerService getSchedulerService() { - // return schedulerService; - // } - // - // public void prepareScheduler() { - // try { - // if (schedulerService != null) { - // return; - // } - // - // Properties quartzProps = new Properties(); - // quartzProps.load(this.getClass().getClassLoader().getResourceAsStream("test-scheduler.properties")); - // - // schedulerService = new SchedulerService(); - // schedulerService.setQuartzProperties(quartzProps); - // schedulerService.start(); - // getJBossMBeanServer().registerMBean(schedulerService, SchedulerServiceMBean.SCHEDULER_MBEAN_NAME); - // schedulerService.startQuartzScheduler(); - // return; - // } catch (Exception e) { - // e.printStackTrace(); - // throw new RuntimeException(e); - // } - // } - // - // public void unprepareScheduler() throws Exception { - // unprepareScheduler(false); - // } - // - // public void unprepareScheduler(boolean beanOnly) throws Exception { - // if (schedulerService != null) { - // schedulerService.stop(); - // if (beanOnly) { - // MBeanServer mbs = getJBossMBeanServer(); - // if (mbs.isRegistered(SchedulerServiceMBean.SCHEDULER_MBEAN_NAME)) { - // getJBossMBeanServer().unregisterMBean(SchedulerServiceMBean.SCHEDULER_MBEAN_NAME); - // } - // } else { - // releaseJBossMBeanServer(); - // } - // - // schedulerService = null; - // } - // } - // - // public PluginDeploymentScannerMBean getPluginScannerService() { - // return pluginScannerService; - // } - // - // protected void preparePluginScannerService() { - // preparePluginScannerService(null); - // } - // - // public void preparePluginScannerService(PluginDeploymentScannerMBean scannerService) { - // try { - // if (scannerService == null) { - // scannerService = new PluginDeploymentScanner(); - // } - // MBeanServer mbs = getJBossMBeanServer(); - // mbs.registerMBean(scannerService, PluginDeploymentScannerMBean.OBJECT_NAME); - // pluginScannerService = scannerService; - // return; - // } catch (Exception e) { - // e.printStackTrace(); - // throw new RuntimeException(e); - // } - // } - // - // public void unpreparePluginScannerService() throws Exception { - // unpreparePluginScannerService(false); - // } - // - // public void unpreparePluginScannerService(boolean beanOnly) throws Exception { - // if (pluginScannerService != null) { - // pluginScannerService.stop(); - // if (beanOnly) { - // MBeanServer mbs = getJBossMBeanServer(); - // if (mbs.isRegistered(PluginDeploymentScannerMBean.OBJECT_NAME)) { - // getJBossMBeanServer().unregisterMBean(PluginDeploymentScannerMBean.OBJECT_NAME); - // } - // } else { - // releaseJBossMBeanServer(); - // } - // - // pluginScannerService = null; - // } - // } - // - // protected void executeInTransaction(TransactionCallback callback) { - // executeInTransaction(callback); - // } -} diff --git a/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/test/StandardServerPluginService.java b/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/test/StandardServerPluginService.java index 5f5692f..adcde42 100644 --- a/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/test/StandardServerPluginService.java +++ b/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/test/StandardServerPluginService.java @@ -84,7 +84,7 @@ public class StandardServerPluginService extends ServerPluginService implements public List<Class<? extends AbstractTypeServerPluginContainer>> pluginContainerClasses;
public StandardServerPluginService() { - File dir = new File(System.getProperty("java.io.tmpdir"), "test-server-plugins"); + File dir = new File(System.getProperty("java.io.tmpdir") + "/rhq", this.getClass().getSimpleName()); this.masterConfig = new MasterServerPluginContainerConfiguration(dir, dir, dir, null); pluginContainerClasses = new ArrayList<Class<? extends AbstractTypeServerPluginContainer>>(); pluginContainerClasses.add(AlertServerPluginContainer.class); diff --git a/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/test/TestServerPluginService.java b/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/test/TestServerPluginService.java index c28256b..a8b134e 100644 --- a/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/test/TestServerPluginService.java +++ b/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/test/TestServerPluginService.java @@ -46,7 +46,7 @@ public class TestServerPluginService extends ServerPluginService implements Test
public TestServerPluginService() { // build the config at constructor time so tests have it even before the PC is initialized - File dir = new File(System.getProperty("java.io.tmpdir"), "test-server-plugins"); + File dir = new File(System.getProperty("java.io.tmpdir") + "/rhq", this.getClass().getSimpleName()); this.masterConfig = new MasterServerPluginContainerConfiguration(dir, dir, dir, null); }
rhq-commits@lists.fedorahosted.org