/* * RHQ Management Platform * Copyright (C) 2005-2008 Red Hat, Inc. * All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation version 2 of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ package org.rhq.plugins.perftest; import java.util.Calendar; import java.util.Set; import java.util.SimpleTimeZone; import org.testng.annotations.BeforeSuite; import org.testng.annotations.Test; import org.rhq.core.domain.content.PackageCategory; import org.rhq.core.domain.content.PackageType; import org.rhq.core.domain.content.transfer.ResourcePackageDetails; import org.rhq.core.domain.measurement.DataType; import org.rhq.core.domain.measurement.MeasurementData; import org.rhq.core.domain.measurement.MeasurementScheduleRequest; import org.rhq.core.domain.resource.ResourceCategory; import org.rhq.core.domain.resource.ResourceType; import org.rhq.core.pluginapi.inventory.DiscoveredResourceDetails; import org.rhq.core.pluginapi.inventory.PluginContainerDeployment; import org.rhq.core.pluginapi.inventory.ResourceDiscoveryContext; import org.rhq.plugins.perftest.content.ContentFactory; import org.rhq.plugins.perftest.measurement.MeasurementFactory; import org.rhq.plugins.perftest.resource.ResourceFactory; /** * @author Jason Dobies */ public class ScenarioManagerTest { @BeforeSuite public void setScenario() { System.setProperty(ScenarioManager.SCENARIO_PROPERTY, "unit-test-scenario"); } @Test public void discoverResources() { // Setup ResourceType resourceType = new ResourceType("server-a", "plugin", ResourceCategory.SERVER, null); ResourceDiscoveryContext context = new ResourceDiscoveryContext(resourceType, null, null, null, null, null, "test", PluginContainerDeployment.AGENT); // Test ScenarioManager manager = ScenarioManager.getInstance(); ResourceFactory resourceFactory = manager.getResourceFactory("server-a"); Set<DiscoveredResourceDetails> resources = resourceFactory.discoverResources(context); // Verify assert resources != null : "Null set of resources returned from resource factory"; assert resources.size() == 10 : "Incorrect number of resources returned from resource factory. Expected: 10, Found: " + resources.size(); } @Test public void discoverNoResources() { // Setup ResourceType resourceType = new ResourceType("server-c", "plugin", ResourceCategory.SERVER, null); ResourceDiscoveryContext context = new ResourceDiscoveryContext(resourceType, null, null, null, null, null, "test", PluginContainerDeployment.AGENT); // Test ScenarioManager manager = ScenarioManager.getInstance(); ResourceFactory resourceFactory = manager.getResourceFactory("server-c"); Set<DiscoveredResourceDetails> resources = resourceFactory.discoverResources(context); // Verify assert resources != null : "Null set of resources returned from resource factory"; assert resources.size() == 0 : "Incorrect number of resources returned from resource factory. Expected: 0, Found: " + resources.size(); } @Test public void configurableResources() { // Setup System.setProperty("rhq.perftest.server-b-test", "20"); ResourceType resourceType = new ResourceType("server-b", "plugin", ResourceCategory.SERVER, null); ResourceDiscoveryContext context = new ResourceDiscoveryContext(resourceType, null, null, null, null, null, "test", PluginContainerDeployment.AGENT); // Test ScenarioManager manager = ScenarioManager.getInstance(); ResourceFactory resourceFactory = manager.getResourceFactory("server-b"); Set<DiscoveredResourceDetails> resources = resourceFactory.discoverResources(context); // Verify assert resources != null : "Null set of resources returned from resource factory"; assert resources.size() == 20 : "Incorrect number of resources returned from resource factory. Expected: 20, Found: " + resources.size(); } @Test public void OOBMetrics() { // Setup System.setProperty("rhq.perftest.server-e-count", "3"); System.setProperty("rhq.perftest.service-e-metrics-count", "10"); // Test ScenarioManager manager = ScenarioManager.getInstance(); MeasurementFactory measurementFactory = manager.getMeasurementFactory("service-e-metrics"); MeasurementScheduleRequest request = new MeasurementScheduleRequest(1000, "name", 30000, true, DataType.MEASUREMENT); MeasurementData data = measurementFactory.nextValue(request); Double value = (Double) data.getValue(); // the OOBNumericMeasurementFactory algorithm uses millis from midnight GMT/UTC when calculating day of week, // so do the same here Calendar cal = Calendar.getInstance(new SimpleTimeZone(0, "UTC")); int javaDay = cal.get(Calendar.DAY_OF_WEEK); //sunday is one, but for our OOB calculator its really three int metricDay = (javaDay + 2) % 7; double expectedValue = (metricDay * 0.1 * 1000) + 1000; assert value == expectedValue : "Value was [" + value + "], expected [" + expectedValue + "]."; } @Test public void content() { // Setup PackageType artifactType1 = new PackageType(); artifactType1.setName("artifact1"); artifactType1.setDescription(""); artifactType1.setCategory(PackageCategory.CONFIGURATION); PackageType artifactType2 = new PackageType(); artifactType2.setName("artifact2"); artifactType2.setDescription(""); artifactType2.setCategory(PackageCategory.CONFIGURATION); // Test ScenarioManager manager = ScenarioManager.getInstance(); ContentFactory artifactFactory; // Type: artifact1 artifactFactory = manager.getContentFactory("server-a", "artifact1"); assert artifactFactory != null : "Null artifact factory for artifact1"; Set<ResourcePackageDetails> artifacts = artifactFactory.discoverContent(artifactType1); assert artifacts != null : "Null set of artifacts returned from factory for artifact1"; assert artifacts.size() == 5 : "Incorrect number of artifacts returned from factory for artifact1. Expected: 5, Found: " + artifacts.size(); ResourcePackageDetails packageDetails = artifacts.iterator().next(); // Type: artifact2 artifactFactory = manager.getContentFactory("server-a", "artifact2"); assert artifactFactory != null : "Null artifact factory for artifact2"; artifacts = artifactFactory.discoverContent(artifactType2); assert artifacts != null : "Null set of artifacts returned from factory for artifact2"; assert artifacts.size() == 1 : "Incorrect number of artifacts returned from factory for artifact2. Expected: 1, Found: " + artifacts.size(); packageDetails = artifacts.iterator().next(); // Type: artifact3 artifactFactory = manager.getContentFactory("server-a", "artifact3"); assert artifactFactory == null : "Incorrect artifact factory returned for artifact3"; } }