diff --git a/edu.kit.ipd.descartes.adaptation.test/src/edu/kit/ipd/descartes/adaptation/model/dmm/util/OclEvaluationHelperTest.java b/edu.kit.ipd.descartes.adaptation.test/src/edu/kit/ipd/descartes/adaptation/model/dmm/util/OclEvaluationHelperTest.java new file mode 100644 index 0000000000000000000000000000000000000000..1ea176d9c0e9c46c023e07537923eb512ea1e312 --- /dev/null +++ b/edu.kit.ipd.descartes.adaptation.test/src/edu/kit/ipd/descartes/adaptation/model/dmm/util/OclEvaluationHelperTest.java @@ -0,0 +1,49 @@ +package edu.kit.ipd.descartes.adaptation.model.dmm.util; + +import static org.junit.Assert.assertTrue; + +import java.util.Set; + +import org.eclipse.emf.ecore.EObject; +import org.junit.Before; +import org.junit.Test; + +import edu.kit.ipd.descartes.adaptation.AbstractTest; +import edu.kit.ipd.descartes.adaptation.model.dmm.util.OclEvaluationHelper; +import edu.kit.ipd.descartes.mm.resourcelandscape.ComputingInfrastructure; +import edu.kit.ipd.descartes.mm.resourcelandscape.DataCenter; +import edu.kit.ipd.descartes.mm.resourcelandscape.DistributedDataCenter; +import edu.kit.ipd.descartes.mm.resourcelandscape.ResourcelandscapeFactory; +import edu.kit.ipd.descartes.mm.resourcelandscape.ResourcelandscapePackage; +import edu.kit.ipd.descartes.mm.resourcelandscape.RuntimeEnvironment; + +public class OclEvaluationHelperTest extends AbstractTest { + + @Before + public void setUp() throws Exception { + super.setUp(); + } + + @Test + public void testQueryForRuntimeEnvironments() { + DistributedDataCenter testDdc = ResourcelandscapeFactory.eINSTANCE.createDistributedDataCenter(); + + String queryExpression = "RuntimeEnvironment.allInstances()"; + Set<EObject> res = OclEvaluationHelper.query(testDdc, queryExpression, testDdc.eClass()); + assertTrue(res.size() == 0); + + DataCenter dc1 = ResourcelandscapeFactory.eINSTANCE.createDataCenter(); + testDdc.getConsistsOf().add(dc1); + + ComputingInfrastructure ci1 = ResourcelandscapeFactory.eINSTANCE.createComputingInfrastructure(); + dc1.getContains().add(ci1); + + RuntimeEnvironment re1 = ResourcelandscapeFactory.eINSTANCE.createRuntimeEnvironment(); + RuntimeEnvironment re2 = ResourcelandscapeFactory.eINSTANCE.createRuntimeEnvironment(); + ci1.getContains().add(re1); + ci1.getContains().add(re2); + + res = OclEvaluationHelper.query(testDdc, queryExpression, ResourcelandscapePackage.eINSTANCE.getDistributedDataCenter()); + assertTrue(res.size() == 2); + } +} diff --git a/edu.kit.ipd.descartes.adaptation.test/src/edu/kit/ipd/descartes/adaptation/model/dmm/util/PerfDataRepoHelperTest.java b/edu.kit.ipd.descartes.adaptation.test/src/edu/kit/ipd/descartes/adaptation/model/dmm/util/PerfDataRepoHelperTest.java new file mode 100644 index 0000000000000000000000000000000000000000..29b5c85e7f945b9d2ad85c7a3d41d5f43fe1f982 --- /dev/null +++ b/edu.kit.ipd.descartes.adaptation.test/src/edu/kit/ipd/descartes/adaptation/model/dmm/util/PerfDataRepoHelperTest.java @@ -0,0 +1,34 @@ +package edu.kit.ipd.descartes.adaptation.model.dmm.util; + +import static org.junit.Assert.*; + +import org.eclipse.emf.common.util.URI; +import org.junit.Before; +import org.junit.Test; + +import edu.kit.ipd.descartes.adaptation.model.dmm.PerformanceDataRepositoryModelManager; +import edu.kit.ipd.descartes.adaptation.model.dmm.util.PerfDataRepoHelper; +import edu.kit.ipd.descartes.perfdatarepo.Impact; +import edu.kit.ipd.descartes.perfdatarepo.PerformanceDataRepository; + +public class PerfDataRepoHelperTest { + + private static final String PERF_DATA_REPO_XMI_FILE = "./test_models/PerformanceDataRepositoryDummy.xmi"; + PerformanceDataRepository perfDataRepo; + + @Before + public void setUp() throws Exception { + + PerformanceDataRepositoryModelManager repoManager = PerformanceDataRepositoryModelManager.getInstance(); + perfDataRepo = (PerformanceDataRepository) repoManager.load(URI + .createFileURI(PERF_DATA_REPO_XMI_FILE)); + } + + @Test + public void testGetLatestImpact() { + int historySize = perfDataRepo.getImpactHistory().size(); + Impact mostRecent = perfDataRepo.getImpactHistory().get(historySize - 1); + assertEquals(mostRecent, PerfDataRepoHelper.getLatestImpact(perfDataRepo)); + } + +} diff --git a/edu.kit.ipd.descartes.adaptation.test/src/edu/kit/ipd/descartes/adaptation/model/dmm/util/WeightingFunctionHelperTest.java b/edu.kit.ipd.descartes.adaptation.test/src/edu/kit/ipd/descartes/adaptation/model/dmm/util/WeightingFunctionHelperTest.java new file mode 100644 index 0000000000000000000000000000000000000000..ff20d1cb824b0f59ef9c22ef08b0549ec57dd202 --- /dev/null +++ b/edu.kit.ipd.descartes.adaptation.test/src/edu/kit/ipd/descartes/adaptation/model/dmm/util/WeightingFunctionHelperTest.java @@ -0,0 +1,87 @@ +package edu.kit.ipd.descartes.adaptation.model.dmm.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.dmm.PerformanceDataRepositoryModelManager; +import edu.kit.ipd.descartes.adaptation.model.dmm.util.WeightingFunctionHelper; +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 = "./test_models/PerformanceDataRepositoryDummy.xmi"; + private static final double UTIL_WEIGHT = 2.0d; + + private PerformanceDataRepositoryModelManager perfDataModelManager = PerformanceDataRepositoryModelManager.getInstance(); + private PerformanceDataRepository perfDataRepo = null; + private 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) perfDataModelManager.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); + } + +}