modules/core/plugin-test-util/src/main/java/org/rhq/core/plugin/testutil/AbstractAgentPluginTest.java
| 139 +++++++++-
modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/standalone/ResourcesStandaloneServerTest.java
| 106 +------
2 files changed, 155 insertions(+), 90 deletions(-)
New commits:
commit 5c2899d3522c7caa886c8355d88fc41a3076c4a8
Author: Stefan Negrea <snegrea(a)redhat.com>
Date: Mon Jun 18 08:40:35 2012 -0500
Updates for generic integration tests. Moved generic code to base classes and added
more ignored resources due to open JIRAs and BZs.
diff --git
a/modules/core/plugin-test-util/src/main/java/org/rhq/core/plugin/testutil/AbstractAgentPluginTest.java
b/modules/core/plugin-test-util/src/main/java/org/rhq/core/plugin/testutil/AbstractAgentPluginTest.java
index 97f3f9a..e60349c 100644
---
a/modules/core/plugin-test-util/src/main/java/org/rhq/core/plugin/testutil/AbstractAgentPluginTest.java
+++
b/modules/core/plugin-test-util/src/main/java/org/rhq/core/plugin/testutil/AbstractAgentPluginTest.java
@@ -18,19 +18,29 @@
*/
package org.rhq.core.plugin.testutil;
+import static org.testng.Assert.assertEquals;
+import static org.testng.Assert.assertNotNull;
+import static org.testng.Assert.assertNull;
+import static org.testng.Assert.assertTrue;
+
import java.io.File;
import java.io.FilenameFilter;
+import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.EnumSet;
import java.util.HashSet;
import java.util.Iterator;
import java.util.LinkedHashMap;
+import java.util.LinkedList;
import java.util.List;
import java.util.Map;
+import java.util.Queue;
import java.util.Set;
import java.util.TreeSet;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.mockito.Mockito;
@@ -44,7 +54,9 @@ import org.jboss.shrinkwrap.resolver.api.DependencyResolvers;
import org.jboss.shrinkwrap.resolver.api.maven.MavenDependencyResolver;
import org.rhq.core.clientapi.agent.PluginContainerException;
+import org.rhq.core.clientapi.agent.configuration.ConfigurationUpdateRequest;
import org.rhq.core.clientapi.agent.configuration.ConfigurationUtility;
+import org.rhq.core.clientapi.server.configuration.ConfigurationUpdateResponse;
import org.rhq.core.clientapi.server.discovery.InventoryReport;
import org.rhq.core.domain.configuration.Configuration;
import org.rhq.core.domain.configuration.definition.ConfigurationDefinition;
@@ -63,6 +75,7 @@ import org.rhq.core.domain.util.MeasurementDefinitionFilter;
import org.rhq.core.domain.util.ResourceTypeUtility;
import org.rhq.core.pc.PluginContainer;
import org.rhq.core.pc.PluginContainerConfiguration;
+import org.rhq.core.pc.configuration.ConfigurationManager;
import org.rhq.core.pc.inventory.ResourceContainer;
import org.rhq.core.pc.util.FacetLockType;
import org.rhq.core.pluginapi.availability.AvailabilityFacet;
@@ -79,11 +92,6 @@ import org.rhq.test.arquillian.FakeServerInventory;
import org.rhq.test.arquillian.MockingServerServices;
import org.rhq.test.shrinkwrap.RhqAgentPluginArchive;
-import static org.testng.Assert.assertEquals;
-import static org.testng.Assert.assertNotNull;
-import static org.testng.Assert.assertNull;
-import static org.testng.Assert.assertTrue;
-
/**
* The base class for an Agent plugin integration test class.
*
@@ -91,6 +99,8 @@ import static org.testng.Assert.assertTrue;
*/
public abstract class AbstractAgentPluginTest extends Arquillian {
+ private Log log = LogFactory.getLog(this.getClass());
+
@ArquillianResource
protected MockingServerServices serverServices;
@@ -589,4 +599,123 @@ public abstract class AbstractAgentPluginTest extends Arquillian {
return serverInventory;
}
+ /**
+ * Test that loads a resource configuration and then immediately updates the
resource
+ * with the exact same loaded settings.
+ *
+ * Notes:
+ * 1) load/update is not executed on the root resource provided.
+ * 2) if a resource is ignored then all of subresource of that resources are ignored
+ *
+ * @param rootResource root resource
+ * @param ignoredResources resources to be ignored
+ * @return number of errors
+ * @throws InterruptedException
+ * @throws PluginContainerException
+ */
+ protected int loadUpdateConfigChildResources(Resource rootResource,
List<String> ignoredResources)
+ throws InterruptedException, PluginContainerException {
+
+ ignoredResources = (ignoredResources == null) ? new ArrayList<String>() :
ignoredResources;
+
+ ConfigurationManager configManager =
this.pluginContainer.getConfigurationManager();
+ configManager.initialize();
+ Thread.sleep(10 * 1000L);
+
+ Queue<Resource> unparsedResources = new LinkedList<Resource>();
+ addCommitedChildrenToCollection(unparsedResources, rootResource,
ignoredResources);
+
+ int errorCount = 0;
+
+ while (!unparsedResources.isEmpty()) {
+ Resource resourceUnderTest = unparsedResources.poll();
+
+ addCommitedChildrenToCollection(unparsedResources, resourceUnderTest,
ignoredResources);
+
+ if (resourceUnderTest.getResourceType().getResourceConfigurationDefinition()
!= null) {
+ Configuration configUnderTest =
configManager.loadResourceConfiguration(resourceUnderTest.getId());
+
+ ConfigurationUpdateRequest updateRequest = new
ConfigurationUpdateRequest(1, configUnderTest,
+ resourceUnderTest.getId());
+ ConfigurationUpdateResponse updateResponse = configManager
+ .executeUpdateResourceConfigurationImmediately(updateRequest);
+
+ if (updateResponse == null) {
+ errorCount++;
+ log.error("------------------------------");
+ log.error(resourceUnderTest);
+ log.error("Update Response is NULL!!!!");
+ log.error("------------------------------\n");
+ }
+ if (updateResponse.getErrorMessage() != null) {
+ errorCount++;
+ log.error("------------------------------");
+ log.error(resourceUnderTest);
+ log.error(updateResponse.getErrorMessage());
+ log.error("------------------------------\n");
+ }
+ }
+ }
+
+ return errorCount;
+ }
+
+ /**
+ * Test that executes all the no arg operations for all the subresources of a
provided resource.
+ * Notes:
+ * 1) no operations are executed on the root resource provided.
+ * 2) if a resource is ignored then all of subresource of that resources are ignored
+ *
+ * @param rootResource root resource
+ * @param ignoredResources resources to be ignored
+ * @param ignoredOperations operations to be ignored
+ * @throws PluginContainerException
+ */
+ protected void executeNoArgOperations(Resource rootResource, List<String>
ignoredResources,
+ List<String> ignoredOperations) throws PluginContainerException {
+
+ ignoredResources = (ignoredResources == null) ? new ArrayList<String>() :
ignoredResources;
+ ignoredOperations = (ignoredOperations == null) ? new ArrayList<String>() :
ignoredOperations;
+
+ Queue<Resource> unparsedResources = new LinkedList<Resource>();
+ addCommitedChildrenToCollection(unparsedResources, rootResource,
ignoredResources);
+
+ while (!unparsedResources.isEmpty()) {
+ Resource resourceUnderTest = unparsedResources.poll();
+
+ addCommitedChildrenToCollection(unparsedResources, resourceUnderTest,
ignoredResources);
+
+ for (OperationDefinition operationUnderTest :
resourceUnderTest.getResourceType().getOperationDefinitions()) {
+ if (!ignoredOperations.contains(operationUnderTest.getName())) {
+ if (operationUnderTest.getParametersConfigurationDefinition() ==
null
+ ||
operationUnderTest.getParametersConfigurationDefinition().getPropertyDefinitions().isEmpty())
{
+ this.invokeOperationAndAssertSuccess(resourceUnderTest,
operationUnderTest.getName(),
+ new Configuration());
+ }
+ }
+ }
+ }
+ }
+
+ /**
+ * Adds direct subresources of resources to a collection.
+ *
+ * @param accumulatorCollection accumulator collection
+ * @param rootResource root resource
+ * @param ignoredResources resources to be ignored
+ */
+ private void addCommitedChildrenToCollection(Collection<Resource>
accumulatorCollection, Resource rootResource,
+ List<String> ignoredResources) {
+ for (Resource childResource : rootResource.getChildResources()) {
+ if (childResource.getInventoryStatus().equals(InventoryStatus.COMMITTED)) {
+ if(
!ignoredResources.contains(childResource.getResourceType().getName())) {
+ accumulatorCollection.add(childResource);
+ }
+ } else {
+ log.info("Resource NOT COMMITTED --> not added to collection!! -
" + childResource + " - "
+ + childResource.getInventoryStatus());
+ }
+ }
+ }
+
}
diff --git
a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/standalone/ResourcesStandaloneServerTest.java
b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/standalone/ResourcesStandaloneServerTest.java
index d11e7ab..f2d601c 100644
---
a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/standalone/ResourcesStandaloneServerTest.java
+++
b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/standalone/ResourcesStandaloneServerTest.java
@@ -24,22 +24,15 @@ import static org.testng.Assert.assertEquals;
import static org.testng.Assert.assertNotNull;
import java.util.ArrayList;
-import java.util.LinkedList;
import java.util.List;
-import java.util.Queue;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.testng.Assert;
import org.testng.annotations.Test;
-import org.rhq.core.clientapi.agent.configuration.ConfigurationUpdateRequest;
-import org.rhq.core.clientapi.server.configuration.ConfigurationUpdateResponse;
-import org.rhq.core.domain.configuration.Configuration;
-import org.rhq.core.domain.operation.OperationDefinition;
import org.rhq.core.domain.resource.InventoryStatus;
import org.rhq.core.domain.resource.Resource;
-import org.rhq.core.pc.configuration.ConfigurationManager;
import org.rhq.core.pc.inventory.InventoryManager;
import org.rhq.core.pc.inventory.ResourceContainer;
import org.rhq.modules.plugins.jbossas7.itest.AbstractJBossAS7PluginTest;
@@ -69,7 +62,7 @@ public class ResourcesStandaloneServerTest extends
AbstractJBossAS7PluginTest {
StandaloneServerComponentTest.RESOURCE_KEY);
inventoryManager.activateResource(server, platformContainer, false);
- Thread.sleep(20 * 1000L);
+ Thread.sleep(40 * 1000L);
}
@@ -81,103 +74,46 @@ public class ResourcesStandaloneServerTest extends
AbstractJBossAS7PluginTest {
//works well with real agent
ignoredResources.add("VHost");
- //ignored because the settings different when started with arquillian,
inet-address is not set correctly
- //works well with real agent
+ //created JIRA AS7-5011
+ //server is started with the configuration but unable to write it back as is
+ //due to marshaling error
ignoredResources.add("Network Interface");
+ //created JIRA AS7-5012
+ //default value for is float but the resource only accepts integers
+ ignoredResources.add("Load Metric");
+
+ //will revisit after BZ 826542 is resolved
+ ignoredResources.add("Authentication (Classic)");
+
Resource platform = this.pluginContainer.getInventoryManager().getPlatform();
Resource server = getResourceByTypeAndKey(platform,
StandaloneServerComponentTest.RESOURCE_TYPE,
StandaloneServerComponentTest.RESOURCE_KEY);
- ConfigurationManager configurationManager =
this.pluginContainer.getConfigurationManager();
- configurationManager.initialize();
- Thread.sleep(40 * 1000L);
-
- Queue<Resource> unparsedResources = new LinkedList<Resource>();
- for (Resource topLevelResource : server.getChildResources()) {
- if (topLevelResource.getInventoryStatus().equals(InventoryStatus.COMMITTED))
{
- unparsedResources.add(topLevelResource);
- } else {
- log.info("Subsystem not COMMITTED " + topLevelResource + "
- " + topLevelResource.getInventoryStatus());
- }
- }
-
- int errorCount = 0;
-
- while (!unparsedResources.isEmpty()) {
- Resource resourceUnderTest = unparsedResources.poll();
-
- for (Resource childResource : resourceUnderTest.getChildResources()) {
- if (childResource.getInventoryStatus().equals(InventoryStatus.COMMITTED))
{
- unparsedResources.add(childResource);
- } else {
- log.info("Subsystem not COMMITTED " + childResource +
" - " + childResource.getInventoryStatus());
- }
- }
-
- if (resourceUnderTest.getResourceType().getResourceConfigurationDefinition()
!= null
- &&
!ignoredResources.contains(resourceUnderTest.getResourceType().getName())) {
- Configuration configUnderTest = configurationManager
- .loadResourceConfiguration(resourceUnderTest.getId());
-
- ConfigurationUpdateRequest updateRequest = new
ConfigurationUpdateRequest(1, configUnderTest,
- resourceUnderTest.getId());
- ConfigurationUpdateResponse updateResponse = configurationManager
- .executeUpdateResourceConfigurationImmediately(updateRequest);
-
- Assert.assertNotNull(updateResponse);
- if (updateResponse.getErrorMessage() != null) {
- errorCount++;
- log.error("------------------------------");
- log.error(resourceUnderTest);
- log.error(updateResponse.getErrorMessage());
- log.error("------------------------------");
- }
- }
- }
-
+ int errorCount = loadUpdateConfigChildResources(server, ignoredResources);
Assert.assertEquals(errorCount, 0);
}
@Test(priority = 11)
- public void executeNoArgOperations() throws Exception {
+ public void standaloneExecuteNoArgOperations() throws Exception {
List<String> ignoredSubsystems = new ArrayList<String>();
+
+ //ignored because mod_cluster is not setup in default server configuration
+ //to be more specific, there is no server to fail-over to
ignoredSubsystems.add("ModCluster Standalone Service");
List<String> ignoredOperations = new ArrayList<String>();
+ //ignored because there is no other server to fail-over to
ignoredOperations.add("subsystem:force-failover");
+ //ignored because this is not a true operation, it is handled
+ //internally by a configuration property change
ignoredOperations.add("enable");
Resource platform = this.pluginContainer.getInventoryManager().getPlatform();
Resource server = getResourceByTypeAndKey(platform,
StandaloneServerComponentTest.RESOURCE_TYPE,
StandaloneServerComponentTest.RESOURCE_KEY);
- Queue<Resource> unparsedResources = new LinkedList<Resource>();
- for (Resource topLevelResource : server.getChildResources()) {
- if (topLevelResource.getInventoryStatus().equals(InventoryStatus.COMMITTED)
- &&
!ignoredSubsystems.contains(topLevelResource.getResourceType().getName())) {
- unparsedResources.add(topLevelResource);
- }
- }
-
- while (!unparsedResources.isEmpty()) {
- Resource resourceUnderTest = unparsedResources.poll();
-
- for (Resource childResource : resourceUnderTest.getChildResources()) {
- if (childResource.getInventoryStatus().equals(InventoryStatus.COMMITTED))
{
- unparsedResources.add(childResource);
- }
- }
-
- for (OperationDefinition operationUnderTest :
resourceUnderTest.getResourceType().getOperationDefinitions()) {
- if (!ignoredOperations.contains(operationUnderTest.getName())) {
- if (operationUnderTest.getParametersConfigurationDefinition() ==
null
- ||
operationUnderTest.getParametersConfigurationDefinition().getPropertyDefinitions().isEmpty())
{
- this.invokeOperationAndAssertSuccess(resourceUnderTest,
operationUnderTest.getName(),
- new Configuration());
- }
- }
- }
- }
+ executeNoArgOperations(server, ignoredSubsystems, ignoredOperations);
}
+
}