/*
* Embedded Jopr Project
* Copyright (C) 2006-2009 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 Lesser General Public License as
* published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* 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
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser 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.jboss.on.embedded.test;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.rhq.core.domain.measurement.Availability;
import org.rhq.core.domain.measurement.AvailabilityType;
import org.rhq.core.domain.measurement.DataType;
import org.rhq.core.domain.measurement.DisplayType;
import org.rhq.core.domain.measurement.MeasurementData;
import org.rhq.core.domain.measurement.MeasurementDefinition;
import org.rhq.core.domain.resource.Resource;
import org.jboss.on.embedded.ResourceTypes;
import org.jboss.on.embedded.bean.MeasurementDisplay;
import org.jboss.on.embedded.bean.MeasurementUtils;
import org.jboss.on.embedded.bean.ResourceListItem;
import org.jboss.on.embedded.util.EmbeddedPluginContainerHelper;
/**
* Tests that the MeasurementUtil class correctly loads the needed measurements and formats the data correctly
*
* @author Jessica Sant
*/
public class MeasurementUtilTest extends EmbeddedPluginContainerHelper {
// @Override
// protected String getScenario()
// {
// return "scenario1.xml";
// }
//@Test
public void testLoadMeasurementDataAll() throws Exception
{
final Resource resource = getResourceInstance(ResourceTypes.RESOURCE_TYPE_JMS_TOPIC, "FakeMetricsTopic");
assert resource != null : "FakeMetricsTopic was not found and it should have been.";
ResourceListItem resourceListItem = new ResourceListItem(resource, new Availability(resource, new Date(), AvailabilityType.UP));
MeasurementUtils measurementUtils = new MeasurementUtils(resourceListItem);
List<MeasurementData> measurementDataList = measurementUtils.loadMeasurementData(null, DataType.MEASUREMENT);
assert measurementDataList != null : "measurements were null";
assert measurementDataList.size() == 6 : "6 measurements were expected, but " + measurementDataList.size() + " were found.";
for (MeasurementData md : measurementDataList)
{
if (md.getName().equals("FakeByteMetricSummary"))
{
assert md.getValue().equals((double)123456789) : "incorrect value for FakeByteMetricSummary " + md.getValue();
}
else if (md.getName().equals("FakeBitMetricSummary"))
{
assert md.getValue().equals((double)987654321) : "incorrect value for FakeBitMetricSummary " + md.getValue();
}
else if (md.getName().equals("FakeTimeMetricSummary"))
{
assert md.getValue().equals((double)1234567) : "incorrect value for FakeTimeMetricSummary " + md.getValue();
}
else if (md.getName().equals("FakeByteMetricDetail"))
{
assert md.getValue().equals((double)98765) : "incorrect value for FakeByteMetricDetail " + md.getValue();
}
else if (md.getName().equals("FakeBitMetricDetail"))
{
assert md.getValue().equals((double)12345) : "incorrect value for FakeBitMetricDetail " + md.getValue();
}
else if (md.getName().equals("FakeTimeMetricDetail"))
{
assert md.getValue().equals((double)9876) : "incorrect value for FakeTimeMetricDetail " + md.getValue();
}
else
{
assert false : "failed to find a matching metric name: " + md.getName();
}
}
}
//@Test
public void testLoadMeasurementDataSummary() throws Exception
{
final Resource resource = getResourceInstance(ResourceTypes.RESOURCE_TYPE_JMS_TOPIC, "FakeMetricsTopic");
assert resource != null : "FakeMetricsTopic was not found and it should have been.";
ResourceListItem resourceListItem = new ResourceListItem(resource, new Availability(resource, new Date(), AvailabilityType.UP));
MeasurementUtils measurementUtils = new MeasurementUtils(resourceListItem);
List<MeasurementData> measurementDataList = measurementUtils.loadMeasurementData(DisplayType.SUMMARY, DataType.MEASUREMENT);
assert measurementDataList != null : "measurements were null";
assert measurementDataList.size() == 3 : "3 measurements were expected, but " + measurementDataList.size() + " were found.";
for (MeasurementData md : measurementDataList)
{
if (md.getName().equals("FakeByteMetricSummary"))
{
assert md.getValue().equals((double)123456789) : "incorrect value for FakeByteMetricSummary " + md.getValue();
}
else if (md.getName().equals("FakeBitMetricSummary"))
{
assert md.getValue().equals((double)987654321) : "incorrect value for FakeBitMetricSummary " + md.getValue();
}
else if (md.getName().equals("FakeTimeMetricSummary"))
{
assert md.getValue().equals((double)1234567) : "incorrect value for FakeTimeMetricSummary " + md.getValue();
}
else
{
assert false : "failed to find a matching metric name: " + md.getName();
}
}
}
//@Test( dependsOnMethods = "testLoadMeasurementDataSummary" )
public void testLoadCategory() throws Exception
{
final Resource resource = getResourceInstance(ResourceTypes.RESOURCE_TYPE_JMS_TOPIC, "FakeMetricsTopic");
assert resource != null : "FakeMetricsTopic was not found and it should have been.";
ResourceListItem resourceListItem = new ResourceListItem(resource, new Availability(resource, new Date(), AvailabilityType.UP));
HashMap<String, MeasurementDefinition> measurementDefinitionMap = new HashMap<String, MeasurementDefinition>();
HashMap<String, List<MeasurementDisplay>> measurementDisplayMap = new HashMap<String, List<MeasurementDisplay>>();
MeasurementUtils measurementUtils = new MeasurementUtils(resourceListItem);
List<MeasurementData> measurementDataList = measurementUtils.loadMeasurementData(DisplayType.SUMMARY, DataType.MEASUREMENT);
List<String> measurementCategoryList = measurementUtils.loadCategoryList(measurementDefinitionMap,
measurementDataList, measurementDisplayMap);
assert measurementCategoryList.contains("utilization") : "utilization category missing";
assert measurementCategoryList.contains("throughput") : "throughput category missing";
assert measurementCategoryList.contains("performance") : "performance category missing";
}
//@Test( dependsOnMethods = "testLoadMeasurementDataAll" )
public void testFormattedMetrics() throws Exception
{
final Resource resource = getResourceInstance(ResourceTypes.RESOURCE_TYPE_JMS_TOPIC, "FakeMetricsTopic");
assert resource != null : "FakeMetricsTopic was not found and it should have been.";
ResourceListItem resourceListItem = new ResourceListItem(resource, new Availability(resource, new Date(), AvailabilityType.UP));
List<MeasurementDisplay> measurementDisplayList = new ArrayList<MeasurementDisplay>();
MeasurementUtils measurementUtils = new MeasurementUtils(resourceListItem);
Map<String, MeasurementDefinition> measurementDefinitionMap = measurementUtils.getMeasurementDefinitionMap();
List<MeasurementData> measurementDataList = measurementUtils.loadMeasurementData(null, DataType.MEASUREMENT);
assert measurementDataList != null : "measurements were null";
for (MeasurementData measurementData : measurementDataList)
{
MeasurementDefinition measurementDefinition = measurementDefinitionMap.get(measurementData.getName());
measurementDisplayList.add(measurementUtils.createMeasurementDisplay(measurementData, measurementDefinition));
}
assert measurementDisplayList.size() == 6 : "6 measurements were expected, but " + measurementDisplayList.size() + " were found.";
for (MeasurementDisplay md : measurementDisplayList)
{
if (md.getMeasurementData().getName().equals("FakeByteMetricSummary"))
{
assert md.getMeasurementValueAndUnits().toString().equals("117.7MB") : "incorrect value for FakeByteMetricSummary " + md.getMeasurementValueAndUnits();
}
else if (md.getMeasurementData().getName().equals("FakeBitMetricSummary"))
{
assert md.getMeasurementValueAndUnits().toString().equals("941.9Mb") : "incorrect value for FakeBitMetricSummary " + md.getMeasurementValueAndUnits();
}
else if (md.getMeasurementData().getName().equals("FakeTimeMetricSummary"))
{
assert md.getMeasurementValueAndUnits().toString().equals("14.3d") : "incorrect value for FakeTimeMetricSummary " + md.getMeasurementValueAndUnits();
}
else if (md.getMeasurementData().getName().equals("FakeByteMetricDetail"))
{
assert md.getMeasurementValueAndUnits().toString().equals("96.5KB") : "incorrect value for FakeByteMetricDetail " + md.getMeasurementValueAndUnits();
}
else if (md.getMeasurementData().getName().equals("FakeBitMetricDetail"))
{
assert md.getMeasurementValueAndUnits().toString().equals("12.1Kb") : "incorrect value for FakeBitMetricDetail " + md.getMeasurementValueAndUnits();
}
else if (md.getMeasurementData().getName().equals("FakeTimeMetricDetail"))
{
assert md.getMeasurementValueAndUnits().toString().equals("2.7h") : "incorrect value for FakeTimeMetricDetail " + md.getMeasurementValueAndUnits();
}
else
{
assert false : "failed to find a matching metric name: " + md.getMeasurementData().getName();
}
}
}
//@Test
public void testMeasurementTraitAll()
{
final Resource resource = getResourceInstance(ResourceTypes.RESOURCE_TYPE_JMS_TOPIC, "FakeMetricsTopic");
assert resource != null : "FakeMetricsTopic was not found and it should have been.";
ResourceListItem resourceListItem = new ResourceListItem(resource, new Availability(resource, new Date(), AvailabilityType.UP));
MeasurementUtils measurementUtils = new MeasurementUtils(resourceListItem);
List<MeasurementData> measurementDataList = measurementUtils.loadMeasurementData(null, DataType.TRAIT);
assert measurementDataList != null : "measurements were null";
assert measurementDataList.size() == 2 : "2 measurement(s) were expected, but " + measurementDataList.size() + " were found.";
for (MeasurementData md : measurementDataList)
{
if (md.getName().equals("FakeTraitNumericSummary"))
{
assert md.getValue().toString().equals("333.0") : "incorrect value for FakeTraitNumericSummary " + md.getValue();
}
else if (md.getName().equals("FakeTraitNumericDetail"))
{
assert md.getValue().toString().equals("555.0") : "incorrect value for FakeTraitNumericDetail " + md.getValue();
}
else
{
assert false : "failed to find a matching metric name: " + md.getName();
}
}
}
//@Test
public void testMeasurementTraitSummary()
{
final Resource resource = getResourceInstance(ResourceTypes.RESOURCE_TYPE_JMS_TOPIC, "FakeMetricsTopic");
assert resource != null : "FakeMetricsTopic was not found and it should have been.";
ResourceListItem resourceListItem = new ResourceListItem(resource, new Availability(resource, new Date(), AvailabilityType.UP));
MeasurementUtils measurementUtils = new MeasurementUtils(resourceListItem);
List<MeasurementData> measurementDataList = measurementUtils.loadMeasurementData(DisplayType.SUMMARY, DataType.TRAIT);
assert measurementDataList != null : "measurements were null";
assert measurementDataList.size() == 1 : "1 measurement(s) were expected, but " + measurementDataList.size() + " were found.";
for (MeasurementData md : measurementDataList)
{
if (md.getName().equals("FakeTraitNumericSummary"))
{
assert md.getValue().toString().equals("333.0") : "incorrect value for FakeTraitNumericSummary " + md.getValue();
}
else
{
assert false : "failed to find a matching metric name: " + md.getName();
}
}
}
//@Test
public void testMeasurementTraitDetail()
{
final Resource resource = getResourceInstance(ResourceTypes.RESOURCE_TYPE_JMS_TOPIC, "FakeMetricsTopic");
assert resource != null : "FakeMetricsTopic was not found and it should have been.";
ResourceListItem resourceListItem = new ResourceListItem(resource, new Availability(resource, new Date(), AvailabilityType.UP));
MeasurementUtils measurementUtils = new MeasurementUtils(resourceListItem);
List<MeasurementData> measurementDataList = measurementUtils.loadMeasurementData(DisplayType.DETAIL, DataType.TRAIT);
assert measurementDataList != null : "measurements were null";
assert measurementDataList.size() == 1 : "1 measurement(s) were expected, but " + measurementDataList.size() + " were found.";
for (MeasurementData md : measurementDataList)
{
if (md.getName().equals("FakeTraitNumericDetail"))
{
assert md.getValue().toString().equals("555.0") : "incorrect value for FakeTraitNumericDetail " + md.getValue();
}
else
{
assert false : "failed to find a matching metric name: " + md.getName();
}
}
}
}