modules/enterprise/server/itests-2/pom.xml | 1 modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/authz/test/AuthorizationManagerBeanTest.java | 5 modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/bundle/BundleManagerBeanTest.java | 10 modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/configuration/ConfigurationManagerBeanTest.java | 17 modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/configuration/metadata/ConfigurationMetadataManagerBeanTest.java | 10 modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/content/test/ContentManagerBeanTest.java | 17 modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/content/test/ContentSourceManagerBeanTest.java | 46 -- modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/content/test/ContentUIManagerBeanEligiblePackagesTest.java | 15 modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/content/test/ContentUIManagerBeanTest.java | 5 modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/core/CoreServerServiceImplTest.java | 93 +++- modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/measurement/test/AvailabilityManagerTest.java | 210 ++++------ modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/plugin/pc/content/ContentProviderManagerSyncContentProviderTest.java | 10 modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/plugin/pc/content/ContentProviderManagerSyncRepoTest.java | 10 modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/resource/cluster/ClusterManagerBeanTest.java | 6 modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/test/AbstractEJB3Test.java | 108 ++++- 15 files changed, 330 insertions(+), 233 deletions(-)
New commits: commit 25f0f6f63f0de4176e8a8eaf0a4d6b61346ef832 Author: Jay Shaughnessy jshaughn@jshaughn.csb Date: Tue Nov 6 11:32:25 2012 -0500
More restructured tests now passing - Add utility in AbstractEJB3Test for persisting objects that need to be shared between tests. Since testng basically "new"s the test class on each test. - Add utility in AbstractEJB3Test for registering a custom service.
diff --git a/modules/enterprise/server/itests-2/pom.xml b/modules/enterprise/server/itests-2/pom.xml index e9c7f44..2d988d1 100644 --- a/modules/enterprise/server/itests-2/pom.xml +++ b/modules/enterprise/server/itests-2/pom.xml @@ -436,6 +436,7 @@ <!-- FOR RHQ TESTING --> <system-properties> <property name="project.version" value="${project.version}"/> + <property name="rhq.server.content.filesystem" value="${jboss.unzip.location}/standalone/data/packagebits" /> </system-properties>]]></replacevalue> </replacefilter>
diff --git a/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/authz/test/AuthorizationManagerBeanTest.java b/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/authz/test/AuthorizationManagerBeanTest.java index ccd8eec..5c2d60f 100644 --- a/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/authz/test/AuthorizationManagerBeanTest.java +++ b/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/authz/test/AuthorizationManagerBeanTest.java @@ -26,7 +26,6 @@ import java.util.Set;
import javax.persistence.EntityManager;
-import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test;
import org.rhq.core.domain.auth.Subject; @@ -44,9 +43,9 @@ import org.rhq.enterprise.server.util.SessionTestHelper; public class AuthorizationManagerBeanTest extends AbstractEJB3Test { private AuthorizationManagerLocal authorizationManager;
- @BeforeMethod + @Override @SuppressWarnings( { "unused" }) - private void init() { + protected void beforeMethod() { try { authorizationManager = LookupUtil.getAuthorizationManager(); } catch (Throwable t) { diff --git a/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/bundle/BundleManagerBeanTest.java b/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/bundle/BundleManagerBeanTest.java index 1621dac..028a713 100644 --- a/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/bundle/BundleManagerBeanTest.java +++ b/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/bundle/BundleManagerBeanTest.java @@ -37,8 +37,6 @@ import javax.persistence.Query; import javax.transaction.TransactionManager;
import org.hibernate.LazyInitializationException; -import org.testng.annotations.AfterMethod; -import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test;
import org.rhq.core.domain.auth.Subject; @@ -114,8 +112,8 @@ public class BundleManagerBeanTest extends AbstractEJB3Test { private Subject overlord; TestServerCommunicationsService agentServiceContainer;
- @BeforeMethod - public void beforeMethod() throws Exception { + @Override + protected void beforeMethod() throws Exception { agentServiceContainer = prepareForTestAgents(); agentServiceContainer.bundleService = new TestAgentClient(null, agentServiceContainer);
@@ -130,8 +128,8 @@ public class BundleManagerBeanTest extends AbstractEJB3Test { cleanupDatabase(); }
- @AfterMethod(alwaysRun = true) - public void afterMethod() throws Exception { + @Override + protected void afterMethod() throws Exception { unprepareForTestAgents();
try { diff --git a/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/configuration/ConfigurationManagerBeanTest.java b/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/configuration/ConfigurationManagerBeanTest.java index c666e34..d9d2d69 100644 --- a/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/configuration/ConfigurationManagerBeanTest.java +++ b/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/configuration/ConfigurationManagerBeanTest.java @@ -27,9 +27,6 @@ import java.util.Map; import javax.persistence.EntityManager;
import org.jetbrains.annotations.NotNull; -import org.testng.annotations.AfterMethod; -import org.testng.annotations.BeforeClass; -import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test;
import org.rhq.core.clientapi.agent.PluginContainerException; @@ -86,8 +83,8 @@ public class ConfigurationManagerBeanTest extends AbstractEJB3Test { /** * Prepares things for the entire test class. */ - @BeforeClass - public void beforeClass() { + //@BeforeClass don't use BeforeClass as Arquillian 1.0.2 invokes it on every test method + protected void beforeClass() { // Make sure page control sorts so the latest config update is last (the default is for the latest to be first). configUpdatesPageControl = PageControl.getUnlimitedInstance(); // (ips, 04/01/10): Use createdTime, rather than id, to order by, since the id's are not guaranteed to be @@ -100,8 +97,10 @@ public class ConfigurationManagerBeanTest extends AbstractEJB3Test { overlord = LookupUtil.getSubjectManager().getOverlord(); }
- @BeforeMethod - public void beforeMethod() throws Exception { + @Override + protected void beforeMethod() throws Exception { + beforeClass(); + prepareScheduler();
TestServerCommunicationsService agentServiceContainer = prepareForTestAgents(); @@ -141,8 +140,8 @@ public class ConfigurationManagerBeanTest extends AbstractEJB3Test { } }
- @AfterMethod(alwaysRun = true) - public void afterMethod() throws Exception { + @Override + protected void afterMethod() throws Exception { try { // perform in-band and out-of-band work in quick succession // only need to delete newResource1, which will delete his child newResource2 as well as the agent diff --git a/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/configuration/metadata/ConfigurationMetadataManagerBeanTest.java b/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/configuration/metadata/ConfigurationMetadataManagerBeanTest.java index cdb5359..8c74317 100644 --- a/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/configuration/metadata/ConfigurationMetadataManagerBeanTest.java +++ b/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/configuration/metadata/ConfigurationMetadataManagerBeanTest.java @@ -33,7 +33,6 @@ import java.util.Map; import javax.persistence.EntityManager; import javax.transaction.SystemException;
-import org.testng.annotations.BeforeClass; import org.testng.annotations.Test;
import org.rhq.core.clientapi.descriptor.plugin.PluginDescriptor; @@ -70,8 +69,8 @@ public class ConfigurationMetadataManagerBeanTest extends AbstractEJB3Test {
ConfigurationDefinition updatedConfigDef;
- @BeforeClass - public void setupClass() { + //@BeforeClass don't use BeforeClass as Arquillian 1.0.2 invokes it on every test method + protected void beforeClass() { String pluginFileBaseName = "configuration_metadata_manager_bean_test"; String version1 = pluginFileBaseName + "_v1.xml"; String version2 = pluginFileBaseName + "_v2.xml"; @@ -80,6 +79,11 @@ public class ConfigurationMetadataManagerBeanTest extends AbstractEJB3Test { updatedDescriptor = loadPluginDescriptor(getClass().getResource(version2)); }
+ @Override + protected void beforeMethod() { + beforeClass(); + } + @Test(enabled = ENABLED) public void addNewUngroupedSimplePropertyDef() { initConfigDefs("servers[name='MyServer1']", "test"); diff --git a/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/content/test/ContentManagerBeanTest.java b/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/content/test/ContentManagerBeanTest.java index e201328..0e31657 100644 --- a/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/content/test/ContentManagerBeanTest.java +++ b/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/content/test/ContentManagerBeanTest.java @@ -28,9 +28,6 @@ import java.util.Set; import javax.persistence.EntityManager; import javax.persistence.Query;
-import org.testng.annotations.AfterMethod; -import org.testng.annotations.BeforeClass; -import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test;
import org.rhq.core.clientapi.agent.PluginContainerException; @@ -141,21 +138,23 @@ public class ContentManagerBeanTest extends AbstractEJB3Test {
// Setup --------------------------------------------
- @BeforeClass - public void setupBeforeClass() throws Exception { + //@BeforeClass don't use BeforeClass as Arquillian 1.0.2 invokes it on every test method + protected void beforeClass() throws Exception { contentManager = LookupUtil.getContentManager(); subjectManager = LookupUtil.getSubjectManager();
populateResponseSteps(); }
- @BeforeMethod - public void setupBeforeMethod() throws Exception { + @Override + protected void beforeMethod() throws Exception { + beforeClass(); + setupTestEnvironment(); }
- @AfterMethod(alwaysRun = true) - public void tearDownAfterMethod() throws Exception { + @Override + protected void afterMethod() throws Exception { tearDownTestEnvironment(); }
diff --git a/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/content/test/ContentSourceManagerBeanTest.java b/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/content/test/ContentSourceManagerBeanTest.java index a3a561a..2d34766 100644 --- a/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/content/test/ContentSourceManagerBeanTest.java +++ b/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/content/test/ContentSourceManagerBeanTest.java @@ -30,10 +30,6 @@ import javax.persistence.EntityManager; import javax.persistence.Query;
import org.apache.commons.lang.RandomStringUtils; -import org.testng.annotations.AfterClass; -import org.testng.annotations.AfterMethod; -import org.testng.annotations.BeforeClass; -import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test;
import org.rhq.core.domain.auth.Subject; @@ -61,7 +57,6 @@ import org.rhq.core.domain.resource.ResourceType; import org.rhq.core.domain.util.PageControl; import org.rhq.core.domain.util.PageList; import org.rhq.core.util.MessageDigestGenerator; -import org.rhq.enterprise.server.content.ContentManagerLocal; import org.rhq.enterprise.server.content.ContentSourceManagerLocal; import org.rhq.enterprise.server.content.RepoManagerLocal; import org.rhq.enterprise.server.content.metadata.ContentSourceMetadataManagerLocal; @@ -77,7 +72,6 @@ public class ContentSourceManagerBeanTest extends AbstractEJB3Test {
private static final boolean TESTS_ENABLED = true;
- private ContentManagerLocal contentManager; private ContentSourceManagerLocal contentSourceManager; private ContentSourceMetadataManagerLocal contentSourceMetadataManager; private RepoManagerLocal repoManager; @@ -120,18 +114,11 @@ public class ContentSourceManagerBeanTest extends AbstractEJB3Test { */ private Architecture architecture1;
- /** - * Extra architecture used in tests. - */ - private Architecture architecture2; - private ResourceType resourceType1; private Resource resource1; - private TestContentServerPluginService pluginService;
- @BeforeClass - public void setupBeforeClass() throws Exception { - contentManager = LookupUtil.getContentManager(); + //@BeforeClass don't use BeforeClass as Arquillian 1.0.2 invokes it on every test method + protected void beforeClass() throws Exception { contentSourceManager = LookupUtil.getContentSourceManager(); contentSourceMetadataManager = LookupUtil.getContentSourceMetadataManager(); repoManager = LookupUtil.getRepoManagerLocal(); @@ -142,28 +129,32 @@ public class ContentSourceManagerBeanTest extends AbstractEJB3Test { cleanupPreviousTestRuns(); }
- @AfterClass - public void tearDownAfterClass() throws Exception { - // This delete is temporary. There are content sources left over from previous runs of this test - // that need to be deleted and this is the simplest way of clearing everyone's environment without - // requesting a dbsetup. - cleanupPreviousTestRuns(); - } + // @AfterClass + // public void tearDownAfterClass() throws Exception { + // // This delete is temporary. There are content sources left over from previous runs of this test + // // that need to be deleted and this is the simplest way of clearing everyone's environment without + // // requesting a dbsetup. + // cleanupPreviousTestRuns(); + // } + + @Override + protected void beforeMethod() throws Exception { + beforeClass();
- @BeforeMethod - public void setupBeforeMethod() throws Exception { setupTestEnvironment(); overlord = LookupUtil.getSubjectManager().getOverlord(); prepareScheduler(); + @SuppressWarnings("unused") TestContentServerPluginService pluginService = new TestContentServerPluginService(this); - cleanupPreviousTestRuns(); }
- @AfterMethod - public void tearDownAfterMethod() throws Exception { + @Override + protected void afterMethod() throws Exception { tearDownTestEnvironment(); unprepareServerPluginService(); unprepareScheduler(); + + cleanupPreviousTestRuns(); // TODO move to @AfterClass shen supported by Arquillian }
@Test(enabled = TESTS_ENABLED) @@ -947,7 +938,6 @@ public class ContentSourceManagerBeanTest extends AbstractEJB3Test { try { try { architecture1 = em.find(Architecture.class, 1); - architecture2 = em.find(Architecture.class, 2);
resourceType1 = new ResourceType("platform-" + System.currentTimeMillis(), "TestPlugin", ResourceCategory.PLATFORM, null); diff --git a/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/content/test/ContentUIManagerBeanEligiblePackagesTest.java b/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/content/test/ContentUIManagerBeanEligiblePackagesTest.java index b382347..c290faf 100644 --- a/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/content/test/ContentUIManagerBeanEligiblePackagesTest.java +++ b/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/content/test/ContentUIManagerBeanEligiblePackagesTest.java @@ -26,9 +26,6 @@ import javax.persistence.Query; import org.apache.commons.lang.RandomStringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.testng.annotations.AfterMethod; -import org.testng.annotations.BeforeClass; -import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test;
import org.rhq.core.domain.auth.Subject; @@ -98,19 +95,15 @@ public class ContentUIManagerBeanEligiblePackagesTest extends AbstractEJB3Test {
// Setup --------------------------------------------
- @BeforeClass - public void setupBeforeClass() throws Exception { + @Override + protected void beforeMethod() throws Exception { contentUIManager = LookupUtil.getContentUIManager(); subjectManager = LookupUtil.getSubjectManager(); - } - - @BeforeMethod - public void populateDatabase() throws Exception { setupTestEnvironment(); }
- @AfterMethod - public void cleanDatabase() throws Exception { + @Override + protected void afterMethod() throws Exception { tearDownTestEnvironment(); }
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 54cfb67..5ff5dbb 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 @@ -24,7 +24,6 @@ import java.io.FileOutputStream;
import javax.persistence.EntityManager;
-import org.testng.annotations.BeforeClass; import org.testng.annotations.Test;
import org.rhq.core.domain.content.Architecture; @@ -57,8 +56,8 @@ public class ContentUIManagerBeanTest extends AbstractEJB3Test {
// Setup --------------------------------------------
- @BeforeClass - public void setupBeforeClass() throws Exception { + @Override + protected void beforeMethod() throws Exception { contentUIManager = LookupUtil.getContentUIManager(); contentManager = LookupUtil.getContentManager(); } 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 04a68c5..645e35c 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 @@ -26,12 +26,8 @@ import java.util.Date; import java.util.List; import java.util.Properties;
-import javax.management.MBeanServer; -import javax.management.ObjectName; import javax.persistence.Query;
-import org.testng.annotations.AfterGroups; -import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test;
import org.rhq.core.clientapi.server.core.AgentRegistrationException; @@ -93,6 +89,7 @@ import org.rhq.enterprise.server.util.LookupUtil; // J. testAttemptToChangeAgentName // 1) register agent "newName" but with Z's host/port/token. In effect, this is trying to change the agent's name. (REJECT - you are not allowed to rename agents)
+@SuppressWarnings("unchecked") @Test(groups = { "core.agent.registration" }) public class CoreServerServiceImplTest extends AbstractEJB3Test { private static final String TEST_AGENT_NAME_PREFIX = "CoreServerServiceImplTest.Agent"; @@ -100,18 +97,31 @@ public class CoreServerServiceImplTest extends AbstractEJB3Test { private AgentVersion agentVersion; private Server server; private String oldServerNamePropertyValue = null; - private AgentRegistrationRequest aReq = null; - private AgentRegistrationResults aResults = null; - private AgentRegistrationRequest zReq = null; - private AgentRegistrationResults zResults = null;
private static final int A_PORT = 11111; private static final String A_HOST = "hostA"; private static final int B_PORT = 22222; private static final String B_HOST = "hostB";
- @AfterGroups(groups = { "core.agent.registration" }) - public void afterGroup() throws Exception { + // README + // Arquillian (1.0.2) does not honor Testng's lifecycle, Before/AfterClass are invoked on + // every test. We use stand-in tests to simulate BeforeClass and AfterClass, using priorities + // to make them run first and last. Testng (I believe) applies priority after dependencies, so it + // is important that afterClassStandIn() have a dependency such that it runs in the last test-set. + + @Test(priority = -10) + public void beforeClassStandIn() throws Exception { + // delete our instance var object files, if they exist + deleteObjects("a.obj"); + deleteObjects("b.obj"); + } + + @Test(priority = 10, dependsOnMethods = "testNormalAgentRegistration", alwaysRun = true) + public void afterClassStandIn() throws Exception { + // delete our instance var object files + deleteObjects("a.obj"); + deleteObjects("b.obj"); + // clean up any agents we might have created Query q = getEntityManager().createQuery( "select a from Agent a where name like '" + TEST_AGENT_NAME_PREFIX + "%'"); @@ -121,23 +131,22 @@ public class CoreServerServiceImplTest extends AbstractEJB3Test { } }
- @BeforeMethod - public void prepare() throws Exception { + @Override + protected void beforeMethod() throws Exception { // mock the name of our server via the sysprop (in production, this is normally set in rhq-server.properties) oldServerNamePropertyValue = System.getProperty(RHQ_SERVER_NAME_PROPERTY); String newServerNamePropertyValue = "CoreServerServiceImplTest.Server"; System.setProperty(RHQ_SERVER_NAME_PROPERTY, newServerNamePropertyValue);
// mock up our core server MBean that provides information about where the jboss home dir is - MBeanServer mbs = getPlatformMBeanServer(); DummyCoreServer mbean = new DummyCoreServer(); - mbs.registerMBean(mbean, new ObjectName(CoreServerMBean.OBJECT_NAME)); + prepareCustomServerService(mbean, CoreServerMBean.OBJECT_NAME);
// in order to register, we need to mock out the agent version file used by the server // to determine the agent version it supports. agentVersion = new AgentVersion("1.2.3", "12345"); File agentVersionFile = new File(mbean.getJBossServerHomeDir(), - "deploy/rhq.ear/rhq-downloads/rhq-agent/rhq-server-agent-versions.properties"); + "deployments/rhq.ear/rhq-downloads/rhq-agent/rhq-server-agent-versions.properties"); agentVersionFile.getParentFile().mkdirs(); agentVersionFile.delete(); Properties agentVersionProps = new Properties(); @@ -158,6 +167,7 @@ public class CoreServerServiceImplTest extends AbstractEJB3Test { server.setName(newServerNamePropertyValue); server.setAddress("CoreServerServiceImplTest.localhost"); server.setPort(12345); + server.setSecurePort(12346); server.setOperationMode(OperationMode.NORMAL); int serverId = LookupUtil.getServerManager().create(server); @@ -165,15 +175,14 @@ public class CoreServerServiceImplTest extends AbstractEJB3Test { }
@Override - public void afterMethod() throws Exception { + protected void afterMethod() throws Exception {
// cleanup our test server LookupUtil.getCloudManager().updateServerMode(new Integer[] { server.getId() }, OperationMode.DOWN); LookupUtil.getCloudManager().deleteServer(server.getId());
// shutdown our mock mbean server - MBeanServer mbs = getPlatformMBeanServer(); - mbs.unregisterMBean(new ObjectName(CoreServerMBean.OBJECT_NAME)); + unprepareCustomServerService(CoreServerMBean.OBJECT_NAME);
unprepareForTestAgents();
@@ -250,8 +259,10 @@ public class CoreServerServiceImplTest extends AbstractEJB3Test { assert agent.getPort() == 55552;
// remember this agent so our later tests can use it - zReq = request; - zResults = results; + AgentRegistrationRequest zReq = request; + AgentRegistrationResults zResults = results; + + writeObjects("b.obj", zReq, zResults);
// Try to re-register changes to host and/or port but do not send any token. // Because there is no token, these should fail. @@ -288,13 +299,17 @@ public class CoreServerServiceImplTest extends AbstractEJB3Test { @Test(dependsOnMethods = "testChangeAddressPort") public void testNormalAgentRegistration() throws Exception { CoreServerServiceImpl service = new CoreServerServiceImpl(); - aReq = createRequest(prefixName("A"), A_HOST, A_PORT, null); - aResults = service.registerAgent(aReq); + AgentRegistrationRequest aReq = createRequest(prefixName("A"), A_HOST, A_PORT, null); + AgentRegistrationResults aResults = service.registerAgent(aReq); assert aResults != null : "got null results"; + + writeObjects("a.obj", aReq, aResults); }
@Test(dependsOnMethods = "testNormalAgentRegistration") public void testHijackExistingAgentAddressPort() throws Exception { + List<Object> objs = readObjects("a.obj", 1); + AgentRegistrationRequest aReq = (AgentRegistrationRequest) objs.get(0); CoreServerServiceImpl service = new CoreServerServiceImpl(); AgentRegistrationRequest request; request = createRequest(prefixName("B"), aReq.getAddress(), aReq.getPort(), null); @@ -310,6 +325,10 @@ public class CoreServerServiceImplTest extends AbstractEJB3Test { public void testHijackExistingAgentName() throws Exception { CoreServerServiceImpl service = new CoreServerServiceImpl(); AgentRegistrationRequest request; + + List<Object> objs = readObjects("a.obj", 1); + AgentRegistrationRequest aReq = (AgentRegistrationRequest) objs.get(0); + request = createRequest(aReq.getName(), aReq.getAddress(), B_PORT, null); try { service.registerAgent(request); @@ -337,6 +356,10 @@ public class CoreServerServiceImplTest extends AbstractEJB3Test { public void testHijackExistingAgentAddressPortWithBogusToken() throws Exception { CoreServerServiceImpl service = new CoreServerServiceImpl(); AgentRegistrationRequest request; + + List<Object> objs = readObjects("a.obj", 1); + AgentRegistrationRequest aReq = (AgentRegistrationRequest) objs.get(0); + request = createRequest(prefixName("B"), aReq.getAddress(), aReq.getPort(), "badtoken"); try { service.registerAgent(request); @@ -350,6 +373,10 @@ public class CoreServerServiceImplTest extends AbstractEJB3Test { public void testHijackExistingAgentNameWithBogusToken() throws Exception { CoreServerServiceImpl service = new CoreServerServiceImpl(); AgentRegistrationRequest request; + + List<Object> objs = readObjects("a.obj", 1); + AgentRegistrationRequest aReq = (AgentRegistrationRequest) objs.get(0); + request = createRequest(aReq.getName(), aReq.getAddress(), aReq.getPort(), "badtoken"); try { service.registerAgent(request); @@ -357,6 +384,7 @@ public class CoreServerServiceImplTest extends AbstractEJB3Test { } catch (AgentRegistrationException ok) { debugPrintThrowable(ok); } + request = createRequest(aReq.getName(), aReq.getAddress(), B_PORT, "badtoken"); try { service.registerAgent(request); @@ -384,6 +412,15 @@ public class CoreServerServiceImplTest extends AbstractEJB3Test { public void testHijackExistingAgentNameWithAnotherAgentToken() throws Exception { CoreServerServiceImpl service = new CoreServerServiceImpl(); AgentRegistrationRequest request; + + List<Object> objs = readObjects("a.obj", 1); + AgentRegistrationRequest aReq = (AgentRegistrationRequest) objs.get(0); + + objs = readObjects("b.obj", 2); + @SuppressWarnings("unused") + AgentRegistrationRequest zReq = (AgentRegistrationRequest) objs.get(0); + AgentRegistrationResults zResults = (AgentRegistrationResults) objs.get(1); + request = createRequest(aReq.getName(), aReq.getAddress(), aReq.getPort(), zResults.getAgentToken()); try { service.registerAgent(request); @@ -418,6 +455,13 @@ public class CoreServerServiceImplTest extends AbstractEJB3Test { public void testAgentHijackingAnotherAgentAddressPort() throws Exception { CoreServerServiceImpl service = new CoreServerServiceImpl(); AgentRegistrationRequest request; + List<Object> objs = readObjects("a.obj", 2); + AgentRegistrationRequest aReq = (AgentRegistrationRequest) objs.get(0); + AgentRegistrationResults aResults = (AgentRegistrationResults) objs.get(1); + + objs = readObjects("b.obj", 1); + AgentRegistrationRequest zReq = (AgentRegistrationRequest) objs.get(0); + request = createRequest(aReq.getName(), zReq.getAddress(), zReq.getPort(), aResults.getAgentToken()); try { service.registerAgent(request); @@ -431,6 +475,11 @@ public class CoreServerServiceImplTest extends AbstractEJB3Test { public void testAttemptToChangeAgentName() throws Exception { CoreServerServiceImpl service = new CoreServerServiceImpl(); AgentRegistrationRequest request; + + List<Object> objs = readObjects("b.obj", 2); + AgentRegistrationRequest zReq = (AgentRegistrationRequest) objs.get(0); + AgentRegistrationResults zResults = (AgentRegistrationResults) objs.get(1); + request = createRequest(prefixName("newName"), zReq.getAddress(), zReq.getPort(), zResults.getAgentToken()); try { service.registerAgent(request); diff --git a/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/measurement/test/AvailabilityManagerTest.java b/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/measurement/test/AvailabilityManagerTest.java index 7298914..5ac610e 100644 --- a/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/measurement/test/AvailabilityManagerTest.java +++ b/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/measurement/test/AvailabilityManagerTest.java @@ -26,10 +26,8 @@ import java.util.Random;
import javax.persistence.EntityManager; import javax.persistence.Query; -import javax.transaction.TransactionManager; +import javax.transaction.Status;
-import org.testng.annotations.AfterMethod; -import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test;
import org.rhq.core.domain.auth.Subject; @@ -49,6 +47,7 @@ import org.rhq.enterprise.server.resource.ResourceAvailabilityManagerLocal; import org.rhq.enterprise.server.resource.ResourceManagerLocal; import org.rhq.enterprise.server.test.AbstractEJB3Test; import org.rhq.enterprise.server.test.TestServerPluginService; +import org.rhq.enterprise.server.test.TransactionCallbackReturnable; import org.rhq.enterprise.server.util.LookupUtil;
/** @@ -80,8 +79,8 @@ public class AvailabilityManagerTest extends AbstractEJB3Test {
private TestServerPluginService testServerPluginService;
- @BeforeMethod - public void beforeMethod() { + @Override + protected void beforeMethod() { try { prepareScheduler();
@@ -103,8 +102,8 @@ public class AvailabilityManagerTest extends AbstractEJB3Test { } }
- @AfterMethod - public void afterMethod() throws Exception { + @Override + protected void afterMethod() throws Exception { try { if (theResource != null) { // perform in-band and out-of-band work in quick succession @@ -155,11 +154,11 @@ public class AvailabilityManagerTest extends AbstractEJB3Test { Long middle = now - 30000; // 30s ago Long then = now - 60000; // 60s ago
- EntityManager em = beginTx(); + beginTx();
try { setupResource(em); - commitAndClose(em); + commitAndClose();
Availability aThen = new Availability(theResource, then, UP); aThen.setEndTime(middle); @@ -183,7 +182,7 @@ public class AvailabilityManagerTest extends AbstractEJB3Test { persistAvailability(aMiddle); // UNKNOWN(0) --> UP(-60000) --> DOWN(-30000)
- em = beginTx(); + beginTx(); Query q = em.createNamedQuery(Availability.FIND_BY_RESOURCE); q.setParameter("resourceId", theResource.getId()); List<Availability> avails = q.getResultList(); @@ -194,9 +193,8 @@ public class AvailabilityManagerTest extends AbstractEJB3Test { e.printStackTrace(); throw e; } finally { - if (em != null) { + if (Status.STATUS_ACTIVE == getTransactionManager().getStatus()) { getTransactionManager().rollback(); - em.close(); } } } @@ -208,11 +206,11 @@ public class AvailabilityManagerTest extends AbstractEJB3Test { Long middle = now - 30000; // 30s ago Long then = now - 60000; // 60s ago
- EntityManager em = beginTx(); + beginTx();
try { setupResource(em); - commitAndClose(em); + commitAndClose();
Availability aThen = new Availability(theResource, then, UP);
@@ -229,7 +227,7 @@ public class AvailabilityManagerTest extends AbstractEJB3Test { persistAvailability(aNow); // UNKNOWN(0) --> UP(-60000) --> DOWN(-30000) --> UP(NOW) -->
- em = beginTx(); + beginTx();
int purged = availabilityManager.purgeAvailabilities(now - 29999); // keeps aMiddle and aNow assert purged == 2 : "Didn't purge 2 --> " + purged; @@ -264,16 +262,15 @@ public class AvailabilityManagerTest extends AbstractEJB3Test { e.printStackTrace(); throw e; } finally { - if (em != null) { + if (Status.STATUS_ACTIVE == getTransactionManager().getStatus()) { getTransactionManager().rollback(); - em.close(); } } }
@Test(enabled = ENABLE_TESTS) public void testGetAvailabilities() throws Exception { - EntityManager em = beginTx(); + beginTx();
try { List<AvailabilityPoint> availPoints; @@ -281,8 +278,8 @@ public class AvailabilityManagerTest extends AbstractEJB3Test {
setupResource(em); // platform: UNKNOWN(0) --> - commitAndClose(em); - em = null; + commitAndClose(); +
AvailabilityReport report = new AvailabilityReport(false, theAgent.getName());
@@ -420,21 +417,20 @@ public class AvailabilityManagerTest extends AbstractEJB3Test { e.printStackTrace(); throw e; } finally { - if (em != null) { + if (Status.STATUS_ACTIVE == getTransactionManager().getStatus()) { getTransactionManager().rollback(); - em.close(); } } }
@Test(enabled = ENABLE_TESTS) public void testSetAllAgentResourceAvailabilities() throws Exception { - EntityManager em = beginTx(); + beginTx();
try { setupResource(em); - commitAndClose(em); - em = null; + commitAndClose(); +
// setAllAgentResourceAvails will only operate on those that have at least 1 avail row Availability avail = new Availability(theResource, UNKNOWN); @@ -451,27 +447,26 @@ public class AvailabilityManagerTest extends AbstractEJB3Test { e.printStackTrace(); throw e; } finally { - if (em != null) { + if (Status.STATUS_ACTIVE == getTransactionManager().getStatus()) { getTransactionManager().rollback(); - em.close(); } } }
@Test(enabled = ENABLE_TESTS) public void testAgentBackfillNewResource() throws Exception { - EntityManager em = beginTx(); + beginTx();
try { setupResource(em); - commitAndClose(em); - em = null; + commitAndClose(); +
// have never heard from the new agent yet - we do not backfill anything in this case LookupUtil.getAgentManager().checkForSuspectAgents(); assert availabilityManager.getCurrentAvailabilityTypeForResource(overlord, theResource.getId()) == UNKNOWN;
- em = beginTx(); + beginTx(); Resource resource = em.find(Resource.class, theResource.getId()); List<Availability> avails = resource.getAvailability(); assert avails != null; @@ -480,23 +475,22 @@ public class AvailabilityManagerTest extends AbstractEJB3Test { e.printStackTrace(); throw e; } finally { - if (em != null) { + if (Status.STATUS_ACTIVE == getTransactionManager().getStatus()) { getTransactionManager().rollback(); - em.close(); } } }
@Test(enabled = ENABLE_TESTS) public void testAgentBackfill() throws Exception { - EntityManager em = beginTx(); + beginTx();
try { prepareForTestAgents();
setupResource(em); - commitAndClose(em); - em = null; + commitAndClose(); +
// add a report that says the resource was up 20 minutes ago Availability avail = new Availability(theResource, (System.currentTimeMillis() - 12000000), UP); @@ -508,11 +502,11 @@ public class AvailabilityManagerTest extends AbstractEJB3Test { assert availabilityManager.getCurrentAvailabilityTypeForResource(overlord, theResource.getId()) == UP;
// let's pretend we haven't heard from the agent in a few minutes - em = beginTx(); + beginTx(); Agent agent = em.find(Agent.class, theAgent.getId()); agent.setLastAvailabilityPing(System.currentTimeMillis() - (1000 * 60 * 18)); // 18 mins - commitAndClose(em); - em = null; + commitAndClose(); +
// the agent should be suspect and will be considered down, the platform resource should be down // (although children should be UNKNOWN) @@ -523,12 +517,12 @@ public class AvailabilityManagerTest extends AbstractEJB3Test { assert curAvail == DOWN : curAvail;
// make sure our resource's new availabilities are consistent (first (UNKNOWN) , second (UP), third (DOWN)) - em = beginTx(); + beginTx(); Resource resource = em.find(Resource.class, theResource.getId()); List<Availability> allAvails = resource.getAvailability(); assert allAvails.size() == 3; - commitAndClose(em); - em = null; + commitAndClose(); +
Availability a1 = allAvails.get(0); Availability a2 = allAvails.get(1); @@ -550,9 +544,8 @@ public class AvailabilityManagerTest extends AbstractEJB3Test { } finally { unprepareForTestAgents();
- if (em != null) { + if (Status.STATUS_ACTIVE == getTransactionManager().getStatus()) { getTransactionManager().rollback(); - em.close(); } } } @@ -560,7 +553,7 @@ public class AvailabilityManagerTest extends AbstractEJB3Test { @Test(enabled = true) //ENABLE_TESTS) public void testAgentBackfillPerformance() throws Exception { - EntityManager em = beginTx(); + beginTx(); List<Resource> allResources = new ArrayList<Resource>();
try { @@ -576,8 +569,8 @@ public class AvailabilityManagerTest extends AbstractEJB3Test { } em.flush();
- commitAndClose(em); - em = null; + commitAndClose(); +
for (Resource res : allResources) { int resId = res.getId(); @@ -602,11 +595,11 @@ public class AvailabilityManagerTest extends AbstractEJB3Test { }
// let's pretend we haven't heard from the agent in a few minutes - em = beginTx(); + beginTx(); Agent agent = em.find(Agent.class, theAgent.getId()); agent.setLastAvailabilityPing(System.currentTimeMillis() - (1000 * 60 * 18)); // 18 mins - commitAndClose(em); - em = null; + commitAndClose(); +
// the agent should be suspect and will be considered down. the resources have their initial // UNKNOWN avails. The platform should get a new DOWN Availability row. The rest should remain @@ -643,11 +636,11 @@ public class AvailabilityManagerTest extends AbstractEJB3Test { assert availabilityManager.getCurrentAvailabilityTypeForResource(overlord, theResource.getId()) == UP;
// let's again pretend we haven't heard from the agent in a few minutes - em = beginTx(); + beginTx(); agent = em.find(Agent.class, theAgent.getId()); agent.setLastAvailabilityPing(System.currentTimeMillis() - (1000 * 60 * 18)); - commitAndClose(em); - em = null; + commitAndClose(); +
// the agent should be suspect and will be considered down // all of the resources have availabilities now, so another row will be added to them if they are not disabled @@ -671,12 +664,12 @@ public class AvailabilityManagerTest extends AbstractEJB3Test { // make sure our resources' new availabilities are consistent // the first time we backfilled everything was unknown, only the platform was updated. // later we went UP/DISABLED then DOWN so we'll have 2, 3 or 4 rows) - em = beginTx(); + beginTx(); resource = em.find(Resource.class, resource.getId()); List<Availability> allAvails = resource.getAvailability(); assert allAvails.size() == ((expected == DOWN) ? 4 : ((expected == DISABLED) ? 2 : 3)) : allAvails; - commitAndClose(em); - em = null; + commitAndClose(); +
Availability a0 = allAvails.get(0); Availability a1 = allAvails.get(1); @@ -723,28 +716,27 @@ public class AvailabilityManagerTest extends AbstractEJB3Test { System.out.println("testAgentBackfillPerformance: checking validity of data took " + (System.currentTimeMillis() - start) + "ms");
- em = null; + } catch (Exception e) { e.printStackTrace(); throw e; } finally { unprepareForTestAgents();
- if (em != null) { + if (Status.STATUS_ACTIVE == getTransactionManager().getStatus()) { getTransactionManager().rollback(); - em.close(); } } }
@Test(enabled = ENABLE_TESTS) public void testAgentOldReport() throws Exception { - EntityManager em = beginTx(); + beginTx();
try { setupResource(em); // inserts initial UNKNOWN Availability at epoch - commitAndClose(em); - em = null; + commitAndClose(); +
Availability avail; long now = System.currentTimeMillis(); @@ -818,21 +810,20 @@ public class AvailabilityManagerTest extends AbstractEJB3Test { e.printStackTrace(); throw e; } finally { - if (em != null) { + if (Status.STATUS_ACTIVE == getTransactionManager().getStatus()) { getTransactionManager().rollback(); - em.close(); } } }
@Test(enabled = ENABLE_TESTS) public void testAgentOldReport2() throws Exception { - EntityManager em = beginTx(); + beginTx();
try { setupResource(em); - commitAndClose(em); - em = null; + commitAndClose(); +
long now = System.currentTimeMillis();
@@ -878,23 +869,22 @@ public class AvailabilityManagerTest extends AbstractEJB3Test { e.printStackTrace(); throw e; } finally { - if (em != null) { + if (Status.STATUS_ACTIVE == getTransactionManager().getStatus()) { getTransactionManager().rollback(); - em.close(); } } }
@Test(enabled = ENABLE_TESTS) public void testGetAvailabilities2() throws Exception { - EntityManager em = beginTx(); + beginTx();
try { Availability avail;
setupResource(em); - commitAndClose(em); - em = null; + commitAndClose(); +
Calendar cal = Calendar.getInstance(); cal.set(Calendar.YEAR, 2000); @@ -961,9 +951,8 @@ public class AvailabilityManagerTest extends AbstractEJB3Test { e.printStackTrace(); throw e; } finally { - if (em != null) { + if (Status.STATUS_ACTIVE == getTransactionManager().getStatus()) { getTransactionManager().rollback(); - em.close(); } } } @@ -975,15 +964,15 @@ public class AvailabilityManagerTest extends AbstractEJB3Test { */ @Test(enabled = ENABLE_TESTS) public void testMergeReport() throws Exception { - EntityManager em = beginTx(); + beginTx();
try { Availability avail; AvailabilityReport report;
setupResource(em); - commitAndClose(em); - em = null; + commitAndClose(); +
long allAvailCount = setUpAvailabilities(em);
@@ -1005,7 +994,7 @@ public class AvailabilityManagerTest extends AbstractEJB3Test { Agent agent = LookupUtil.getAgentManager().getAgentByName(theAgent.getName()); Date lastReport = new Date(agent.getLastAvailabilityReport()); assert lastReport != null; - assert countAvailabilitiesInDB(null) == allAvailCount; + assert countAvailabilitiesInDB().equals(allAvailCount); avail = availabilityManager.getCurrentAvailabilityForResource(overlord, theResource.getId());
// should have returned availability3 @@ -1027,7 +1016,7 @@ public class AvailabilityManagerTest extends AbstractEJB3Test { // the agent should have been updated and a new row in availability was added (resource is now DOWN) agent = LookupUtil.getAgentManager().getAgentByName(theAgent.getName()); assert new Date(agent.getLastAvailabilityReport()).after(lastReport); - assert countAvailabilitiesInDB(null) == (allAvailCount + 1); + assert countAvailabilitiesInDB().equals(allAvailCount + 1); assert availabilityManager.getCurrentAvailabilityTypeForResource(overlord, theResource.getId()) == DOWN; Availability queriedAvail = availabilityManager.getCurrentAvailabilityForResource(overlord, theResource.getId()); @@ -1040,9 +1029,8 @@ public class AvailabilityManagerTest extends AbstractEJB3Test { e.printStackTrace(); throw e; } finally { - if (em != null) { + if (Status.STATUS_ACTIVE == getTransactionManager().getStatus()) { getTransactionManager().rollback(); - em.close(); } } } @@ -1054,15 +1042,15 @@ public class AvailabilityManagerTest extends AbstractEJB3Test { */ @Test(enabled = ENABLE_TESTS) public void testMergeReportWithStaleResource() throws Exception { - EntityManager em = beginTx(); + beginTx();
try { Availability avail; AvailabilityReport report;
setupResource(em); - commitAndClose(em); - em = null; + commitAndClose(); +
long allAvailCount = setUpAvailabilities(em);
@@ -1090,7 +1078,7 @@ public class AvailabilityManagerTest extends AbstractEJB3Test { Agent agent = LookupUtil.getAgentManager().getAgentByName(theAgent.getName()); Date lastReport = new Date(agent.getLastAvailabilityReport()); assert lastReport != null; - assert countAvailabilitiesInDB(null) == allAvailCount; + assert countAvailabilitiesInDB().equals(allAvailCount); avail = availabilityManager.getCurrentAvailabilityForResource(overlord, theResource.getId());
// should have returned availability3 @@ -1112,7 +1100,7 @@ public class AvailabilityManagerTest extends AbstractEJB3Test { // the agent should have been updated and a new row in availability was added (resource is now DOWN) agent = LookupUtil.getAgentManager().getAgentByName(theAgent.getName()); assert new Date(agent.getLastAvailabilityReport()).after(lastReport); - assert countAvailabilitiesInDB(null) == (allAvailCount + 1); + assert countAvailabilitiesInDB().equals(allAvailCount + 1); assert availabilityManager.getCurrentAvailabilityTypeForResource(overlord, theResource.getId()) == DOWN; Availability queriedAvail = availabilityManager.getCurrentAvailabilityForResource(overlord, theResource.getId()); @@ -1125,16 +1113,15 @@ public class AvailabilityManagerTest extends AbstractEJB3Test { e.printStackTrace(); throw e; } finally { - if (em != null) { + if (Status.STATUS_ACTIVE == getTransactionManager().getStatus()) { getTransactionManager().rollback(); - em.close(); } } }
@Test(enabled = ENABLE_TESTS) public void testMergeReportPerformance() throws Exception { - EntityManager em = beginTx(); + beginTx(); List<Resource> allResources = new ArrayList<Resource>();
try { @@ -1148,8 +1135,8 @@ public class AvailabilityManagerTest extends AbstractEJB3Test { } em.flush();
- commitAndClose(em); - em = null; + commitAndClose(); +
// add a report that says the resources are now up - the report will add one avail for each resource // at this point, the resources do not yet have a row in availability - after the merge they will have 1 @@ -1224,27 +1211,23 @@ public class AvailabilityManagerTest extends AbstractEJB3Test { System.out.println("testMergeReportPerformance: checking validity of data 3 took " + (System.currentTimeMillis() - start) + "ms");
- em = null; + } catch (Exception e) { e.printStackTrace(); throw e; } finally { - if (em != null) { + if (Status.STATUS_ACTIVE == getTransactionManager().getStatus()) { getTransactionManager().rollback(); - em.close(); } } }
- private EntityManager beginTx() throws Exception { + private void beginTx() throws Exception { getTransactionManager().begin(); - EntityManager em = getEntityManager(); - return em; }
- private void commitAndClose(EntityManager em) throws Exception { + private void commitAndClose() throws Exception { getTransactionManager().commit(); - em.close(); }
/** @@ -1281,25 +1264,14 @@ public class AvailabilityManagerTest extends AbstractEJB3Test { * * @throws Exception */ - private long countAvailabilitiesInDB(EntityManager em) throws Exception { - TransactionManager tx = null; - - if (em == null) { - tx = getTransactionManager(); - tx.begin(); - em = getEntityManager(); - } - - try { - Query q = em.createQuery("SELECT count(a) FROM Availability a"); - long count = (Long) q.getSingleResult(); - return count; - } finally { - if (tx != null) { - tx.rollback(); - em.close(); + private Long countAvailabilitiesInDB() throws Exception { + return executeInTransaction(new TransactionCallbackReturnable<Long>() { + public Long execute() throws Exception { + Query q = em.createQuery("SELECT count(a) FROM Availability a"); + Long count = (Long) q.getSingleResult(); + return count; } - } + }); }
/** @@ -1374,7 +1346,7 @@ public class AvailabilityManagerTest extends AbstractEJB3Test { cal.set(Calendar.MINUTE, 40); Date splitEnd = cal.getTime();
- long count = countAvailabilitiesInDB(em); + long count = countAvailabilitiesInDB();
availability1 = new Availability(theResource, start.getTime(), UP); availability1.setEndTime(splitStart.getTime()); @@ -1387,7 +1359,7 @@ public class AvailabilityManagerTest extends AbstractEJB3Test { availability3 = new Availability(theResource, splitEnd.getTime(), UP); persistAvailability(availability3);
- long countNow = countAvailabilitiesInDB(em); + long countNow = countAvailabilitiesInDB();
assert countNow == (count + 3) : "Did not find three availabilities - instead found: " + countNow;
diff --git a/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/plugin/pc/content/ContentProviderManagerSyncContentProviderTest.java b/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/plugin/pc/content/ContentProviderManagerSyncContentProviderTest.java index 9599bd1..d66725f 100644 --- a/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/plugin/pc/content/ContentProviderManagerSyncContentProviderTest.java +++ b/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/plugin/pc/content/ContentProviderManagerSyncContentProviderTest.java @@ -29,8 +29,6 @@ import java.util.Set; import javax.persistence.EntityManager; import javax.transaction.TransactionManager;
-import org.testng.annotations.AfterMethod; -import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test;
import org.rhq.core.domain.auth.Subject; @@ -75,8 +73,8 @@ public class ContentProviderManagerSyncContentProviderTest extends AbstractEJB3T private Integer repoId; private Integer relatedRepoId;
- @BeforeMethod - public void setupBeforeMethod() throws Exception { + @Override + protected void beforeMethod() throws Exception {
// Plugin service setup prepareScheduler(); @@ -126,8 +124,8 @@ public class ContentProviderManagerSyncContentProviderTest extends AbstractEJB3T tx.commit(); }
- @AfterMethod - public void tearDownAfterMethod() throws Exception { + @Override + protected void afterMethod() throws Exception {
try { // Transactional stuff diff --git a/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/plugin/pc/content/ContentProviderManagerSyncRepoTest.java b/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/plugin/pc/content/ContentProviderManagerSyncRepoTest.java index 65154bb..ba26cc2 100644 --- a/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/plugin/pc/content/ContentProviderManagerSyncRepoTest.java +++ b/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/plugin/pc/content/ContentProviderManagerSyncRepoTest.java @@ -29,8 +29,6 @@ import javax.persistence.EntityManager; import javax.persistence.Query; import javax.transaction.TransactionManager;
-import org.testng.annotations.AfterMethod; -import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test;
import org.rhq.core.domain.auth.Subject; @@ -76,8 +74,8 @@ public class ContentProviderManagerSyncRepoTest extends AbstractEJB3Test { private List<ContentSource> repoContentSources = new ArrayList<ContentSource>(); private Repo repoToSync;
- @BeforeMethod - public void setupBeforeMethod() throws Exception { + @Override + protected void beforeMethod() throws Exception {
// Plugin service setup prepareScheduler(); @@ -165,8 +163,8 @@ public class ContentProviderManagerSyncRepoTest extends AbstractEJB3Test { } }
- @AfterMethod - public void tearDownAfterMethod() throws Exception { + @Override + protected void afterMethod() throws Exception { try {
TransactionManager tx = getTransactionManager(); diff --git a/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/resource/cluster/ClusterManagerBeanTest.java b/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/resource/cluster/ClusterManagerBeanTest.java index cf5583d..9d0b836 100644 --- a/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/resource/cluster/ClusterManagerBeanTest.java +++ b/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/resource/cluster/ClusterManagerBeanTest.java @@ -23,7 +23,6 @@ import java.util.List;
import javax.persistence.EntityManager;
-import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test;
import org.rhq.core.domain.auth.Subject; @@ -54,9 +53,8 @@ public class ClusterManagerBeanTest extends AbstractEJB3Test { private ResourceGroupManagerLocal resourceGroupManager; private ResourceManagerLocal resourceManager;
- @BeforeMethod - @SuppressWarnings( { "unused" }) - private void init() { + @Override + protected void beforeMethod() { clusterManager = LookupUtil.getClusterManager(); resourceGroupManager = LookupUtil.getResourceGroupManager(); resourceManager = LookupUtil.getResourceManager(); 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 2b9000f..edd9867 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 @@ -1,17 +1,24 @@ package org.rhq.enterprise.server.test;
import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.ObjectInputStream; +import java.io.ObjectOutputStream; import java.lang.management.ManagementFactory; import java.lang.reflect.Method; import java.sql.Connection; import java.sql.SQLException; +import java.util.ArrayList; import java.util.Collection; import java.util.HashSet; import java.util.Iterator; +import java.util.List; import java.util.Properties; import java.util.regex.Pattern;
import javax.management.MBeanServer; +import javax.management.ObjectName; import javax.naming.Context; import javax.naming.InitialContext; import javax.persistence.EntityManager; @@ -288,7 +295,8 @@ public abstract class AbstractEJB3Test extends Arquillian {
} catch (Throwable t) { // Arquillian is eating these, make sure they show up in some way - System.out.println("BEFORE METHOD FAILURE, TEST DID NOT RUN!!! " + t.getMessage()); + System.out.println("BEFORE METHOD FAILURE, TEST DID NOT RUN!!! "); + t.printStackTrace(); throw t; } } @@ -540,6 +548,41 @@ public abstract class AbstractEJB3Test extends Arquillian { * * @throws RuntimeException */ + public void prepareCustomServerService(Object testServiceMBean, String objectNameStr) { + try { + ObjectName objectName = new ObjectName(objectNameStr); + + // first, unregister the real service... + MBeanServer mbs = getPlatformMBeanServer(); + if (mbs.isRegistered(objectName)) { + mbs.unregisterMBean(objectName); + } + + // Now replace with the test service... + mbs.registerMBean(testServiceMBean, objectName); + return; + } catch (Exception e) { + throw new RuntimeException(e); + } + } + + public void unprepareCustomServerService(String objectNameStr) throws Exception { + ObjectName objectName = new ObjectName(objectNameStr); + MBeanServer mbs = getPlatformMBeanServer(); + if (mbs.isRegistered(objectName)) { + mbs.unregisterMBean(objectName); + } + } + + /** + * 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 { // first, unregister the real service... @@ -750,7 +793,6 @@ public abstract class AbstractEJB3Test extends Arquillian { pluginScannerService = null; }
- public MBeanServer getPlatformMBeanServer() { return ManagementFactory.getPlatformMBeanServer(); } @@ -770,4 +812,62 @@ public abstract class AbstractEJB3Test extends Arquillian { return LookupUtil.getDataSource().getConnection(); }
+ /** + * A utility for writing out various objects that need to be persisted for use between + * tests. Arquillian (1.0.2) basically "new"s the testng test class on each test, so instance + * variables can not be used between tests. Instead, the db or this mechanism needs to be used. + * + * The file will be placed in the standard temp dir. If it already exists it will be replaced. + * + * @param filename Do not include the directory. The value will be prepended with the class name. + * @param objects + * @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.delete(); + ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(file)); + for (Object o : objects) { + oos.writeObject(o); + } + oos.close(); + } + + /** + * A utility for reading in objects written with {@link #writeObjects(String, Object...). They are + * placed in the result List in the same order they were written. + * + * @param filename The same filename used in the write. Do not include the directory. + * The value will be prepended with the class name. + * @param numObjects the number of objects to read out. Can be less than total written, not greater. + * @throws Exception + */ + protected List<Object> readObjects(String filename, int numObjects) throws Exception { + List<Object> result = new ArrayList<Object>(); + ObjectInputStream ois = null; + + try { + File file = new File(System.getProperty("java.io.tmpdir"), this.getClass().getName() + "-" + filename); + ois = new ObjectInputStream(new FileInputStream(file)); + for (int i = 0; i < numObjects; ++i) { + result.add(ois.readObject()); + } + } finally { + ois.close(); + } + + return result; + } + + /** + * A utility for cleaning up files created with {@link #writeObjects(String, Object...). + * + * @param filename The same filename used in the write. Do not include the directory. + * @return true if deleted, false otherwise. + */ + protected boolean deleteObjects(String filename) { + File file = new File(System.getProperty("java.io.tmpdir"), this.getClass().getName() + "-" + filename); + return file.delete(); + } + }
commit 9c5121eb239a9b91b7c9220e8c9752440e6041ac Author: Jay Shaughnessy jshaughn@jshaughn.csb Date: Mon Nov 5 12:33:36 2012 -0500
make sure @AfterMethod runs always
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 b68a517..2b9000f 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 @@ -300,7 +300,7 @@ public abstract class AbstractEJB3Test extends Arquillian { * * Instead, override {@link #afterMethod()}. */ - @AfterMethod + @AfterMethod(alwaysRun = true) protected void __afterMethod() throws Exception { if (inContainer()) { afterMethod(); @@ -327,7 +327,7 @@ public abstract class AbstractEJB3Test extends Arquillian { }
/** - * Override Point! Do not implement an @AfterMethod, instead override this method. + * Override Point! Do not implement an @AfterMethod, instead override this method. note: alwaysRun=true */ protected void afterMethod() throws Exception { // do nothing if we're not overridden
rhq-commits@lists.fedorahosted.org