Skip to content
Snippets Groups Projects
Commit 52cf136c authored by Nikolaus Huber's avatar Nikolaus Huber
Browse files

git-svn-id: https://se1.informatik.uni-wuerzburg.de/usvn/svn/code/code/DMM/trunk@9556 9e42b895-fcda-4063-8a3b-11be15eb1bbd
parent c4641cf4
No related branches found
No related tags found
No related merge requests found
package edu.kit.ipd.descartes.adaptation.util;
import static org.junit.Assert.assertEquals;
import org.eclipse.emf.common.util.EList;
import org.eclipse.emf.common.util.URI;
import org.junit.Before;
import org.junit.Test;
import edu.kit.ipd.descartes.adaptation.model.PerformanceDataRepositoryHandler;
import edu.kit.ipd.descartes.mm.adaptation.AdaptationFactory;
import edu.kit.ipd.descartes.mm.adaptation.WeightedMetric;
import edu.kit.ipd.descartes.mm.adaptation.WeightingFunction;
import edu.kit.ipd.descartes.perfdatarepo.Impact;
import edu.kit.ipd.descartes.perfdatarepo.MetricType;
import edu.kit.ipd.descartes.perfdatarepo.PerfdatarepoFactory;
import edu.kit.ipd.descartes.perfdatarepo.PerformanceDataRepository;
import edu.kit.ipd.descartes.perfdatarepo.Result;
public class WeightingFunctionHelperTest {
private static final String PERF_DATA_REPO_XMI_FILE = "../ExampleModels/Adaptation/PerformanceDataRepositoryDummy.xmi";
private static final double UTIL_WEIGHT = 2.0d;
PerformanceDataRepositoryHandler perfDataHandler = PerformanceDataRepositoryHandler.getInstance();
PerformanceDataRepository perfDataRepo = null;
WeightingFunction function = null;
private enum METRIC_TYPES {
UTILIZATION,
RESPONSE_TIME;
}
private MetricType getTypeHelper(METRIC_TYPES mType) {
EList<MetricType> types = perfDataRepo.getMetricTypes();
switch (mType) {
case UTILIZATION:
return types.get(0);
case RESPONSE_TIME:
return types.get(1);
default:
return null;
}
}
@Before
public void setUp() throws Exception {
perfDataRepo = (PerformanceDataRepository) perfDataHandler.load(URI.createFileURI(PERF_DATA_REPO_XMI_FILE));
MetricType metricType = getTypeHelper(METRIC_TYPES.UTILIZATION);
function = AdaptationFactory.eINSTANCE.createWeightingFunction();
WeightedMetric wUtil = AdaptationFactory.eINSTANCE.createWeightedMetric();
wUtil.setId("1");
wUtil.setName("UtilizationMetricWeight");
wUtil.setWeight(UTIL_WEIGHT);
wUtil.setMetricType(metricType);
function.getWeightedMetrics().add(wUtil);
}
@Test
public void testGetWeightForMetricType() {
double weight = 0.0;
MetricType metricType = getTypeHelper(METRIC_TYPES.RESPONSE_TIME);
weight = WeightingFunctionHelper.getWeightForMetricType(function, metricType);
assertEquals(Double.NaN, weight, 0.0);
metricType = getTypeHelper(METRIC_TYPES.UTILIZATION);
weight = WeightingFunctionHelper.getWeightForMetricType(function, metricType);
assertEquals(UTIL_WEIGHT, weight, 0.0);
}
@Test
public void testGetValueForMetricType() {
double testValue = 0;
MetricType metricType = getTypeHelper(METRIC_TYPES.UTILIZATION);
Result emptyResult = PerfdatarepoFactory.eINSTANCE.createResult();
testValue = WeightingFunctionHelper.getValueForMetricType(metricType, emptyResult);
assertEquals(Double.NaN, testValue, 0);
Impact impact = perfDataRepo.getImpactHistory().get(0);
Result before = impact.getBefore();
testValue = WeightingFunctionHelper.getValueForMetricType(metricType, before);
assertEquals(0.4, testValue, 0);
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment