modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/core/CoreServerServiceImplTest.java | 198 +++++++++- modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/measurement/test/AvailabilityManagerTest.java | 114 +++++ modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/resource/test/ResourceStorageTest.java | 4 modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/ResourceManagerBean.java | 1 4 files changed, 303 insertions(+), 14 deletions(-)
New commits: commit 2174d4cc1d9e8915dc9b88ddb2e5f2a55eb9e221 Author: Simeon Pinder spinder@fulliautomatix.conchfritter.com Date: Fri Mar 8 12:53:42 2013 -0500
i)Reverted AgentManagerBean processing of contents from jar. ii)Modified CoreServerServiceImplTest to create fake agent.jar before test run. iii)Some cleanup/javadoc/refactor. iv)Fix issue with fake jar file creation that prepended /.
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 e42fe46..6283cdc 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 @@ -29,6 +29,7 @@ import java.io.IOException; import java.util.Date; import java.util.List; import java.util.Properties; +import java.util.Random; import java.util.jar.Attributes; import java.util.jar.JarEntry; import java.util.jar.JarOutputStream; @@ -113,6 +114,14 @@ public class CoreServerServiceImplTest extends AbstractEJB3Test { private static final String B_HOST = "hostB"; private static final String VERSION = "1.2.3"; private static final String BUILD = "12345"; + private static final String AGENT_VERSION = "rhq-agent.latest.version"; + private static final String AGENT_BUILD = "rhq-agent.latest.build-number"; + private static final String AGENT_MD5 = "rhq-agent.latest.md5"; + //lives on the server/gui in agent/downloads folder + private static final String SERVER_AGENT_PROPERTIES = "rhq-server-agent-versions.properties"; + //lives in the agent jar root + private static final String AGENT_UPDATE_PROPERTIES = "rhq-agent-update-version.properties"; + private static final String DOWNLOADS_AGENT = "rhq-downloads/rhq-agent";
// README // Arquillian (1.0.2) does not honor Testng's lifecycle, Before/AfterClass are invoked on @@ -156,13 +165,12 @@ public class CoreServerServiceImplTest extends AbstractEJB3Test { // 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(VERSION, BUILD); - File agentVersionFile = new File(mbean.getJBossServerDataDir(), - "rhq-downloads/rhq-agent/rhq-server-agent-versions.properties"); + File agentVersionFile = new File(mbean.getJBossServerDataDir(), DOWNLOADS_AGENT + "/" + SERVER_AGENT_PROPERTIES); agentVersionFile.getParentFile().mkdirs(); agentVersionFile.delete(); Properties agentVersionProps = new Properties(); - agentVersionProps.put("rhq-agent.latest.version", agentVersion.getVersion()); - agentVersionProps.put("rhq-agent.latest.build-number", agentVersion.getBuild()); + agentVersionProps.put(AGENT_VERSION, agentVersion.getVersion()); + agentVersionProps.put(AGENT_BUILD, agentVersion.getBuild()); FileOutputStream fos = new FileOutputStream(agentVersionFile); try { agentVersionProps.store(fos, "This file was created by " + CoreServerServiceImplTest.class.getName()); @@ -170,6 +178,19 @@ public class CoreServerServiceImplTest extends AbstractEJB3Test { fos.close(); }
+ //#now build a fake agent.jar file as well for the tests. + File testLocation = new File(getTempDir(), this.getClass().getSimpleName()); + File serverVersionFile = new File(testLocation, DOWNLOADS_AGENT + "/" + SERVER_AGENT_PROPERTIES); + File agentPropertiesFile = new File(testLocation, DOWNLOADS_AGENT + "/" + AGENT_UPDATE_PROPERTIES); + FileInputStream fin = new FileInputStream(serverVersionFile); + FileOutputStream fout = new FileOutputStream(agentPropertiesFile); + //build out the version for the agent jar + StreamUtil.copy(fin, fout, false); + + //generate fake agent file. + File agentBinaryFile = new File(testLocation, DOWNLOADS_AGENT + "/agent.jar"); + buildFakeAgentJar(agentVersionFile, agentBinaryFile); + // this mocks out the endpoint ping - the server will think the agent that is registering is up and pingable prepareForTestAgents();
@@ -227,7 +248,9 @@ public class CoreServerServiceImplTest extends AbstractEJB3Test { AgentRegistrationRequest request; AgentRegistrationResults results;
- String zName = prefixName("Z"); + String tuid = "" + new Random().nextInt(); + //let's make this unique per run to support repeated individual runs. + String zName = prefixName("Z" + "-" + tuid);
// create a new agent Z with host/port of hostZ/55550 request = createRequest(zName, "hostZ", 55550, null); @@ -253,21 +276,21 @@ public class CoreServerServiceImplTest extends AbstractEJB3Test { assert agent.getPort() == 55551;
// now change Z's host/port to hostZdoubleprime/55552 - request = createRequest(zName, "hostZdoubleprime", 55552, results.getAgentToken()); + request = createRequest(zName, "hostZdoubleprime" + tuid, 55552, results.getAgentToken()); results = service.registerAgent(request); assert results != null; agent = LookupUtil.getAgentManager().getAgentByAgentToken(results.getAgentToken()); assert agent.getName().equals(zName); - assert agent.getAddress().equals("hostZdoubleprime"); + assert agent.getAddress().equals("hostZdoubleprime" + tuid); assert agent.getPort() == 55552;
// now don't change Z's host/port but re-register everything the same with its token - request = createRequest(zName, "hostZdoubleprime", 55552, results.getAgentToken()); + request = createRequest(zName, "hostZdoubleprime" + tuid, 55552, results.getAgentToken()); results = service.registerAgent(request); assert results != null; agent = LookupUtil.getAgentManager().getAgentByAgentToken(results.getAgentToken()); assert agent.getName().equals(zName); - assert agent.getAddress().equals("hostZdoubleprime"); + assert agent.getAddress().equals("hostZdoubleprime" + tuid); assert agent.getPort() == 55552;
// remember this agent so our later tests can use it @@ -507,14 +530,15 @@ public class CoreServerServiceImplTest extends AbstractEJB3Test { @Test public void testAgentUpateVersionFile() { AgentManagerLocal agentManager = LookupUtil.getAgentManager(); - String AGENT_VERSION = "rhq-agent.latest.version"; - String AGENT_BUILD = "rhq-agent.latest.build-number"; - String RHQ_AGENT_LATEST_MD5 = "rhq-agent.latest.md5"; + String AGENT_VERSION = CoreServerServiceImplTest.AGENT_VERSION; + String AGENT_BUILD = CoreServerServiceImplTest.AGENT_BUILD; + String RHQ_AGENT_LATEST_MD5 = CoreServerServiceImplTest.AGENT_MD5; String version = VERSION; String build = BUILD;
try { File updateFile = agentManager.getAgentUpdateVersionFile(); + assert updateFile != null : "GetAgentUpdateVersionFile returned null."; Properties props = new Properties(); FileInputStream inStream = new FileInputStream(updateFile); try { @@ -538,9 +562,9 @@ public class CoreServerServiceImplTest extends AbstractEJB3Test { //Now delete the file and test that it's recreated properly File testLocation = new File(getTempDir(), "CoreServerServiceImplTest"); File serverVersionFile = new File(testLocation, - "rhq-downloads/rhq-agent/rhq-server-agent-versions.properties"); + DOWNLOADS_AGENT + "/" + SERVER_AGENT_PROPERTIES); File agentVersionFile = new File(testLocation, - "rhq-downloads/rhq-agent/rhq-agent-update-version.properties"); + DOWNLOADS_AGENT + "/" + AGENT_UPDATE_PROPERTIES); FileInputStream fin = new FileInputStream(serverVersionFile); FileOutputStream fout = new FileOutputStream(agentVersionFile); StreamUtil.copy(fin, fout, false); @@ -551,8 +575,11 @@ public class CoreServerServiceImplTest extends AbstractEJB3Test { //update the mocked components necessary for regeneration DummyCoreServerTweaked mbean = new DummyCoreServerTweaked(version, build); prepareCustomServerService(mbean, CoreServerMBean.OBJECT_NAME); + //generate fake agent file. - File agentBinaryFile = new File(testLocation, "rhq-downloads/rhq-agent/agent.jar"); + File agentBinaryFile = new File(testLocation, DOWNLOADS_AGENT + "/agent.jar"); + assert agentBinaryFile.exists() : "A fake agent binary file should already exist."; + assert agentBinaryFile.delete() : "Unable to delete default binary file."; buildFakeAgentJar(agentVersionFile, agentBinaryFile); assert agentBinaryFile.exists() : "Failed to build fake agent file:" + agentBinaryFile.getCanonicalPath();
@@ -600,7 +627,7 @@ public class CoreServerServiceImplTest extends AbstractEJB3Test { //include the file passed in as contents of the jar. BufferedInputStream in = null; try { - JarEntry entry = new JarEntry("/" + binaryContents.getName()); + JarEntry entry = new JarEntry(binaryContents.getName());
entry.setTime(binaryContents.lastModified()); target.putNextEntry(entry); diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/core/AgentManagerBean.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/core/AgentManagerBean.java index 4ea8583..c0bec93 100644 --- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/core/AgentManagerBean.java +++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/core/AgentManagerBean.java @@ -519,7 +519,7 @@ public class AgentManagerBean implements AgentManagerLocal { // second, get the agent version info (by peeking into the agent update binary jar) JarFile binaryJarFile = new JarFile(binaryFile); try { - JarEntry binaryJarFileEntry = binaryJarFile.getJarEntry("/rhq-agent-update-version.properties"); + JarEntry binaryJarFileEntry = binaryJarFile.getJarEntry("rhq-agent-update-version.properties"); InputStream binaryJarFileEntryStream = binaryJarFile.getInputStream(binaryJarFileEntry);
// now write the server and agent version info in our internal version file our servlet will use
commit 1505406f9eb4b05a04508ff760645923925df4e9 Author: Simeon Pinder spinder@fulliautomatix.conchfritter.com Date: Thu Mar 7 12:59:27 2013 -0500
i)fix issue with agent manager retrieving properties from agent jar ii)added itest to increment coverage and exercise getAgentUpdateVersionFile.
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 b32ad30..e42fe46 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 @@ -20,11 +20,19 @@
package org.rhq.enterprise.server.core;
+import java.io.BufferedInputStream; import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; import java.io.FileOutputStream; +import java.io.IOException; import java.util.Date; import java.util.List; import java.util.Properties; +import java.util.jar.Attributes; +import java.util.jar.JarEntry; +import java.util.jar.JarOutputStream; +import java.util.jar.Manifest;
import javax.persistence.Query;
@@ -39,6 +47,7 @@ import org.rhq.core.domain.cloud.Server.OperationMode; import org.rhq.core.domain.common.ProductInfo; import org.rhq.core.domain.resource.Agent; import org.rhq.core.util.exception.ThrowableUtil; +import org.rhq.core.util.stream.StreamUtil; import org.rhq.enterprise.server.test.AbstractEJB3Test; import org.rhq.enterprise.server.util.LookupUtil;
@@ -102,6 +111,8 @@ public class CoreServerServiceImplTest extends AbstractEJB3Test { private static final String A_HOST = "hostA"; private static final int B_PORT = 22222; private static final String B_HOST = "hostB"; + private static final String VERSION = "1.2.3"; + private static final String BUILD = "12345";
// README // Arquillian (1.0.2) does not honor Testng's lifecycle, Before/AfterClass are invoked on @@ -144,7 +155,7 @@ public class CoreServerServiceImplTest extends AbstractEJB3Test {
// 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"); + agentVersion = new AgentVersion(VERSION, BUILD); File agentVersionFile = new File(mbean.getJBossServerDataDir(), "rhq-downloads/rhq-agent/rhq-server-agent-versions.properties"); agentVersionFile.getParentFile().mkdirs(); @@ -490,6 +501,146 @@ public class CoreServerServiceImplTest extends AbstractEJB3Test { } }
+ /** Exercises the agentUpdateVersionFile mechanism. + * verify that one is created if none exists before. + */ + @Test + public void testAgentUpateVersionFile() { + AgentManagerLocal agentManager = LookupUtil.getAgentManager(); + String AGENT_VERSION = "rhq-agent.latest.version"; + String AGENT_BUILD = "rhq-agent.latest.build-number"; + String RHQ_AGENT_LATEST_MD5 = "rhq-agent.latest.md5"; + String version = VERSION; + String build = BUILD; + + try { + File updateFile = agentManager.getAgentUpdateVersionFile(); + Properties props = new Properties(); + FileInputStream inStream = new FileInputStream(updateFile); + try { + props.load(inStream); + } finally { + inStream.close(); + } + //check that properties present + boolean locatedAgentVersion = false; + boolean locatedAgentBuild = false; + for (Object property : props.keySet()) { + if (property.toString().equals(AGENT_VERSION)) { + locatedAgentVersion = true; + } else if (property.toString().equals(AGENT_BUILD)) { + locatedAgentBuild = true; + } + } + assert locatedAgentVersion : AGENT_VERSION + " was not found."; + assert locatedAgentBuild : AGENT_BUILD + " was not found."; + + //Now delete the file and test that it's recreated properly + File testLocation = new File(getTempDir(), "CoreServerServiceImplTest"); + File serverVersionFile = new File(testLocation, + "rhq-downloads/rhq-agent/rhq-server-agent-versions.properties"); + File agentVersionFile = new File(testLocation, + "rhq-downloads/rhq-agent/rhq-agent-update-version.properties"); + FileInputStream fin = new FileInputStream(serverVersionFile); + FileOutputStream fout = new FileOutputStream(agentVersionFile); + StreamUtil.copy(fin, fout, false); + serverVersionFile.delete(); + assert !serverVersionFile.exists() : "The default test file location still exists. Unable to proceed."; + assert agentVersionFile.exists() : "The agent properties file was not created. Unable to proceed."; + + //update the mocked components necessary for regeneration + DummyCoreServerTweaked mbean = new DummyCoreServerTweaked(version, build); + prepareCustomServerService(mbean, CoreServerMBean.OBJECT_NAME); + //generate fake agent file. + File agentBinaryFile = new File(testLocation, "rhq-downloads/rhq-agent/agent.jar"); + buildFakeAgentJar(agentVersionFile, agentBinaryFile); + assert agentBinaryFile.exists() : "Failed to build fake agent file:" + agentBinaryFile.getCanonicalPath(); + + //trigger the file regeneration + updateFile = agentManager.getAgentUpdateVersionFile(); + + //check values + props = new Properties(); + inStream = new FileInputStream(updateFile); + try { + props.load(inStream); + } finally { + inStream.close(); + } + + locatedAgentVersion = false; + locatedAgentBuild = false; + for (Object property : props.keySet()) { + if (property.toString().equals(AGENT_VERSION)) { + locatedAgentVersion = true; + } else if (property.toString().equals(AGENT_BUILD)) { + locatedAgentBuild = true; + } + } + //Verify regenerated bits. It's more than we deliver with a release + assert locatedAgentVersion : AGENT_VERSION + " was not found."; + assert props.getProperty(AGENT_VERSION).equals(version) : "Version field did not match. Expected '" + + version + "' but got '" + props.getProperty(AGENT_VERSION) + "'."; + assert locatedAgentBuild : AGENT_BUILD + " was not found."; + assert props.getProperty(AGENT_BUILD).equals(build) : "Version field did not match. Expected '" + version + + "' but got '" + props.getProperty(AGENT_BUILD) + "'."; + assert props.getProperty(RHQ_AGENT_LATEST_MD5) != null : "MD5 value not located."; + assert props.getProperty(RHQ_AGENT_LATEST_MD5).trim().length() > 0 : "No checksum value was located."; + + } catch (Exception e) { + e.printStackTrace(); + } + } + + private void buildFakeAgentJar(File binaryContents, File agentBinaryFile) throws FileNotFoundException, IOException { + Manifest manifest = new Manifest(); + manifest.getMainAttributes().put(Attributes.Name.MANIFEST_VERSION, "54321"); + JarOutputStream target = new JarOutputStream(new FileOutputStream(agentBinaryFile), manifest); + + //include the file passed in as contents of the jar. + BufferedInputStream in = null; + try { + JarEntry entry = new JarEntry("/" + binaryContents.getName()); + + entry.setTime(binaryContents.lastModified()); + target.putNextEntry(entry); + in = new BufferedInputStream(new FileInputStream(binaryContents)); + + byte[] buffer = new byte[1024]; + while (true) { + int count = in.read(buffer); + if (count == -1) + break; + target.write(buffer, 0, count); + } + target.closeEntry(); + } finally { + if (in != null) + in.close(); + } + target.close(); + } + + private class DummyCoreServerTweaked extends DummyCoreServer { + private String version; + private String build; + + @Override + public String getVersion() { + return this.version; + } + + @Override + public String getBuildNumber() { + return this.build; + } + + public DummyCoreServerTweaked(String version, String build) { + this.version = version; + this.build = build; + } + } + private AgentRegistrationRequest createRequest(String name, String address, int port, String token) { return new AgentRegistrationRequest(name, address, port, "socket://" + address + ":" + port + "/?rhq.communications.connector.rhqtype=agent", true, token, agentVersion); diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/core/AgentManagerBean.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/core/AgentManagerBean.java index c0bec93..4ea8583 100644 --- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/core/AgentManagerBean.java +++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/core/AgentManagerBean.java @@ -519,7 +519,7 @@ public class AgentManagerBean implements AgentManagerLocal { // second, get the agent version info (by peeking into the agent update binary jar) JarFile binaryJarFile = new JarFile(binaryFile); try { - JarEntry binaryJarFileEntry = binaryJarFile.getJarEntry("rhq-agent-update-version.properties"); + JarEntry binaryJarFileEntry = binaryJarFile.getJarEntry("/rhq-agent-update-version.properties"); InputStream binaryJarFileEntryStream = binaryJarFile.getInputStream(binaryJarFileEntry);
// now write the server and agent version info in our internal version file our servlet will use
commit c3b3fbb18f1e1aed678ed6f3159f064a949ae3df Author: Simeon Pinder spinder@fulliautomatix.conchfritter.com Date: Thu Mar 7 04:20:32 2013 -0500
Fix incorrect disable.
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 07d806a..6826162 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 @@ -847,7 +847,7 @@ public class AvailabilityManagerTest extends AbstractEJB3Test { } }
- @Test(enabled = FALSE) + @Test(enabled = false) public void testAgentCurrentGroupAvailability() throws Exception { beginTx();
commit 18676c886c0ccded2aedc89c7f520dd5fe6d8358 Author: Simeon Pinder spinder@fulliautomatix.conchfritter.com Date: Thu Mar 7 04:10:55 2013 -0500
Add new test to exercise group availability but currently disabled.
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 9906cac..07d806a 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 @@ -24,12 +24,15 @@ import java.util.Date; import java.util.List; import java.util.Random;
+import javax.persistence.EntityManager; import javax.persistence.Query; import javax.transaction.Status;
import org.testng.annotations.Test;
import org.rhq.core.domain.auth.Subject; +import org.rhq.core.domain.authz.Permission; +import org.rhq.core.domain.authz.Role; import org.rhq.core.domain.criteria.AvailabilityCriteria; import org.rhq.core.domain.discovery.AvailabilityReport; import org.rhq.core.domain.measurement.Availability; @@ -40,6 +43,7 @@ import org.rhq.core.domain.resource.InventoryStatus; import org.rhq.core.domain.resource.Resource; import org.rhq.core.domain.resource.ResourceCategory; import org.rhq.core.domain.resource.ResourceType; +import org.rhq.core.domain.resource.group.ResourceGroup; import org.rhq.core.domain.util.PageOrdering; import org.rhq.enterprise.server.measurement.AvailabilityManagerLocal; import org.rhq.enterprise.server.measurement.AvailabilityPoint; @@ -49,6 +53,7 @@ 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; +import org.rhq.enterprise.server.util.SessionTestHelper;
/** * Test the functionality of the AvailabilityManager @@ -832,7 +837,68 @@ public class AvailabilityManagerTest extends AbstractEJB3Test { AvailabilityType returnedAvail = list.get(0).getAvailabilityType(); assert returnedAvail == DOWN : "Expected current avail to be '" + DOWN + "' but was '" + returnedAvail + "'."; + } catch (Exception e) { + e.printStackTrace(); + throw e; + } finally { + if (Status.STATUS_ACTIVE == getTransactionManager().getStatus()) { + getTransactionManager().rollback(); + } + } + } + + @Test(enabled = FALSE) + public void testAgentCurrentGroupAvailability() throws Exception { + beginTx(); + + try { + setupResource(); // inserts initial UNKNOWN Availability at epoch + commitAndClose(); + + Availability avail; + long now = System.currentTimeMillis(); + + //initialize availabilty to up + avail = new Availability(theResource, UP); + AvailabilityReport report = new AvailabilityReport(false, theAgent.getName()); + report.addAvailability(avail); + availabilityManager.mergeAvailabilityReport(report); + + //verify resource's availabilty is up. + List<AvailabilityPoint> list = availabilityManager.findAvailabilitiesForResource(overlord, + theResource.getId(), 0, now, 1, true); + AvailabilityType returnedAvail = list.get(0).getAvailabilityType(); + assert returnedAvail == UP : "Expected current avail to be '" + UP + "' but was '" + returnedAvail + "'."; + + //add this resource to a group + getTransactionManager().begin(); + EntityManager entityMgr = getEntityManager(); + final Subject subject = SessionTestHelper.createNewSubject(entityMgr, "testSubject"); + + Role roleWithSubject = SessionTestHelper.createNewRoleForSubject(entityMgr, subject, "role with subject"); + roleWithSubject.addPermission(Permission.VIEW_RESOURCE); + + ResourceGroup theGroup = SessionTestHelper.createNewCompatibleGroupForRole(entityMgr, roleWithSubject, + "accessible group"); + + //explicitly add resource to group + theGroup.addExplicitResource(theResource); + entityMgr.merge(theGroup); + + //test that group member size is one + int groupSize = theGroup.getExplicitResources().size(); + assert groupSize == 1 : "Group membership count incorrect. Expected '1' but was '" + groupSize + "'"; + Resource theGroupMember = null; + for (Resource r : theGroup.getExplicitResources()) { + theGroupMember = r; + }
+ //test group avail + long rightNow = System.currentTimeMillis(); + list = availabilityManager.findAvailabilitiesForResourceGroup(overlord, theGroup.getId(), 0, rightNow, 1, + true); + returnedAvail = list.get(0).getAvailabilityType(); + assert returnedAvail == UP : "Expected current avail to be '" + UP + "' but was '" + returnedAvail + "'."; } catch (Exception e) { e.printStackTrace(); throw e;
commit c718b0297567d37719c19252fe5e10dc73643e67 Author: Simeon Pinder spinder@fulliautomatix.conchfritter.com Date: Wed Mar 6 12:42:01 2013 -0500
i)Add more coverage/tests around AvailabilityManagerBean.getAvailabilitiesForContext ii)Modified test to uniquely generate agents/resources/groups for repeated runs.
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 213d75d..9906cac 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 @@ -801,6 +801,49 @@ public class AvailabilityManagerTest extends AbstractEJB3Test { }
@Test(enabled = ENABLE_TESTS) + public void testAgentCurrentAvailability() throws Exception { + beginTx(); + + try { + setupResource(); // inserts initial UNKNOWN Availability at epoch + commitAndClose(); + + Availability avail; + long now = System.currentTimeMillis(); + + // add a report that says the resource is down + avail = new Availability(theResource, DOWN); + AvailabilityReport report = new AvailabilityReport(false, theAgent.getName()); + report.addAvailability(avail); + availabilityManager.mergeAvailabilityReport(report); + + // now pretend the agent sent us a report from a previous time period - should insert this in the past + avail = new Availability(theResource, (now - 600000), UP); + report = new AvailabilityReport(false, theAgent.getName()); + report.addAvailability(avail); + availabilityManager.mergeAvailabilityReport(report); + assert getPointInTime(new Date(avail.getStartTime() - 2)) == UNKNOWN; + + //check for current availability. + Date unknownTime = new Date(avail.getStartTime() - 2); + //make request for avail again but this time requesting most up to date status: should be DOWN + List<AvailabilityPoint> list = availabilityManager.findAvailabilitiesForResource(overlord, + theResource.getId(), unknownTime.getTime(), unknownTime.getTime() + 1, 1, true); + AvailabilityType returnedAvail = list.get(0).getAvailabilityType(); + assert returnedAvail == DOWN : "Expected current avail to be '" + DOWN + "' but was '" + returnedAvail + + "'."; + + } catch (Exception e) { + e.printStackTrace(); + throw e; + } finally { + if (Status.STATUS_ACTIVE == getTransactionManager().getStatus()) { + getTransactionManager().rollback(); + } + } + } + + @Test(enabled = ENABLE_TESTS) public void testAgentOldReport2() throws Exception { beginTx();
@@ -1431,8 +1474,9 @@ public class AvailabilityManagerTest extends AbstractEJB3Test { * @return A Resource ready to use */ private Resource setupResource() { - String prefix = this.getClass().getSimpleName() + "_"; - theAgent = new Agent(prefix + "agent", "localhost", 1234, "", "randomToken"); + String tuid = "" + new Random().nextInt(); + String prefix = this.getClass().getSimpleName() + "_" + tuid + "_"; + theAgent = new Agent(prefix + "agent", "localhost" + tuid, 1234, "", "randomToken" + tuid); em.persist(theAgent);
theResourceType = new ResourceType(prefix + "type", prefix + "plugin", ResourceCategory.PLATFORM, null);
commit 5c1e1c8a048b69a7554a4690a2bc8d8ed7ac83e3 Author: Simeon Pinder spinder@fulliautomatix.conchfritter.com Date: Fri Mar 1 13:10:57 2013 -0500
remove unnecessary system.out messages.
diff --git a/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/resource/test/ResourceStorageTest.java b/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/resource/test/ResourceStorageTest.java index 40b0623..b3b0385 100644 --- a/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/resource/test/ResourceStorageTest.java +++ b/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/resource/test/ResourceStorageTest.java @@ -459,8 +459,8 @@ public class ResourceStorageTest extends AbstractEJB3Test { ArrayList<String> alreadySeen = new ArrayList<String>(); int actualCount = 0; for (Resource r : resources) { - System.out.println(actualCount + " @@@ " + r.getId() + ":" - + ((resourceNames.containsKey(String.valueOf(r.getId()))) ? "NEW" : "DIRTY") + ":" + r.getName()); + // System.out.println(actualCount + " @@@ " + r.getId() + ":" + // + ((resourceNames.containsKey(String.valueOf(r.getId()))) ? "NEW" : "DIRTY") + ":" + r.getName()); assert r.getId() > prevId : "Results should be sorted by ID ASC, something is out of order"; prevId = r.getId(); actualCount++;
commit 7f8ee8dfb2c02044f344d7871261f7387aa1ff3e Author: Simeon Pinder spinder@fulliautomatix.conchfritter.com Date: Thu Feb 28 14:32:40 2013 -0500
Add call to clear paging to clear up how we're using the results.
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/ResourceManagerBean.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/ResourceManagerBean.java index 0a2108e..d332161 100644 --- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/ResourceManagerBean.java +++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/ResourceManagerBean.java @@ -899,6 +899,7 @@ public class ResourceManagerBean implements ResourceManagerLocal, ResourceManage ResourceCriteria resourceCriteria = new ResourceCriteria(); resourceCriteria.addFilterIds(resourceIds); resourceCriteria.fetchResourceType(true); + resourceCriteria.clearPaging();//disable paging as the code assumes all the results will be returned. List<Resource> resources = findResourcesByCriteria(subject, resourceCriteria);
if (ResourceAncestryFormat.RAW == format) {
rhq-commits@lists.fedorahosted.org