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

implemented a weighting function counting delta of active resources

git-svn-id: https://se1.informatik.uni-wuerzburg.de/usvn/svn/code/code/DMM/trunk@11957 9e42b895-fcda-4063-8a3b-11be15eb1bbd
parent 4db5290f
No related branches found
No related tags found
No related merge requests found
...@@ -3,6 +3,5 @@ ...@@ -3,6 +3,5 @@
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/> <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/> <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/> <classpathentry kind="src" path="src"/>
<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/log4j"/>
<classpathentry kind="output" path="bin"/> <classpathentry kind="output" path="bin"/>
</classpath> </classpath>
...@@ -4,12 +4,14 @@ Bundle-Name: Adaptation ...@@ -4,12 +4,14 @@ Bundle-Name: Adaptation
Bundle-SymbolicName: edu.kit.ipd.descartes.adaptation;singleton:=true Bundle-SymbolicName: edu.kit.ipd.descartes.adaptation;singleton:=true
Bundle-Version: 1.0.0.qualifier Bundle-Version: 1.0.0.qualifier
Bundle-Activator: edu.kit.ipd.descartes.adaptation.Activator Bundle-Activator: edu.kit.ipd.descartes.adaptation.Activator
Require-Bundle: org.eclipse.ui, Require-Bundle: org.eclipse.osgi;bundle-version="3.8.2",
org.eclipse.ui,
org.eclipse.core.runtime, org.eclipse.core.runtime,
org.eclipse.ocl, org.eclipse.ocl,
edu.kit.ipd.descartes.mm.resourcelandscape;bundle-version="1.0.0", edu.kit.ipd.descartes.mm.resourcelandscape;bundle-version="1.0.0",
edu.kit.ipd.descartes.mm.adaptation;bundle-version="1.0.0", edu.kit.ipd.descartes.mm.adaptation;bundle-version="1.0.0",
edu.kit.ipd.descartes.ql.core.engine;bundle-version="1.0.0" edu.kit.ipd.descartes.ql.core.engine;bundle-version="1.0.0",
org.apache.log4j;bundle-version="1.2.15"
Bundle-ActivationPolicy: lazy Bundle-ActivationPolicy: lazy
Bundle-RequiredExecutionEnvironment: JavaSE-1.6 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
Import-Package: edu.kit.ipd.descartes.ql.lang.descartesQL, Import-Package: edu.kit.ipd.descartes.ql.lang.descartesQL,
......
...@@ -34,10 +34,7 @@ public class StartAdaptationAction implements IWorkbenchWindowActionDelegate { ...@@ -34,10 +34,7 @@ public class StartAdaptationAction implements IWorkbenchWindowActionDelegate {
MessageDialog.openInformation( MessageDialog.openInformation(
window.getShell(), window.getShell(),
"External", "External",
"Watch the console to see messages about the Adaptation Process"); "CURRENTLY NOT IMPLEMENTED!");
QueryEngineAdapter qea = new QueryEngineAdapter("/by_dmm-model/optimizationTest.pdr");
System.out.println(qea.queryActiveServers());
} }
/** /**
......
package edu.kit.ipd.descartes.adaptation.evaluation.weightingfunction;
import org.apache.log4j.Logger;
import org.eclipse.emf.common.util.EList;
import edu.kit.ipd.descartes.adaptation.model.AbstractEcoreModelLoader;
import edu.kit.ipd.descartes.adaptation.model.perfdatarepo.IPerformanceDataRepositoryHandler;
import edu.kit.ipd.descartes.adaptation.model.perfdatarepo.PerformanceDataRepositoryHandler;
import edu.kit.ipd.descartes.adaptation.model.perfdatarepo.PerformanceDataRepositoryModelLoader;
import edu.kit.ipd.descartes.adaptation.ql.QueryEngineAdapter;
import edu.kit.ipd.descartes.mm.adaptation.WeightedMetric;
import edu.kit.ipd.descartes.mm.adaptation.WeightedTactic;
import edu.kit.ipd.descartes.mm.adaptation.WeightingFunction;
import edu.kit.ipd.descartes.perfdatarepo.Impact;
import edu.kit.ipd.descartes.perfdatarepo.MetricValue;
import edu.kit.ipd.descartes.perfdatarepo.Result;
public class ResourceEfficiency implements IWeightingFunction {
private static final String UTIL_IDENTIFIER = "Util";
private static final double THRESHOLD = 0.05;
private WeightingFunction function = null;
private static Logger logger = Logger.getLogger(ResourceEfficiency.class);
// public ResourceEfficiency() {
// AbstractEcoreModelLoader loader = PerformanceDataRepositoryModelLoader.getInstance();
// String pdrLocation = loader.getCurrentModelUri().toFileString();
// logger.debug("Initializing query engine adaptor for performance data repository " + pdrLocation);
// qea = new QueryEngineAdapter(pdrLocation);
// }
@Override
public void setWeightingFunction(WeightingFunction function) {
this.function = function;
}
@Override
/*
* (non-Javadoc)
*
* @see
* edu.kit.ipd.descartes.adaptation.evaluation.weightingfunction.IWeightingFunction#calculateWeight
* (edu.kit.ipd.descartes.mm.adaptation.WeightedTactic)
*/
public double calculateWeight(WeightedTactic weightedTactic) {
double newWeight = 0.0;
Impact impact = weightedTactic.getLastImpact();
Result before = impact.getBefore();
Result after = impact.getAfter();
for (WeightedMetric wm : function.getWeightedMetrics()) {
double afterValue = WeightedSumWeightingFunctionHelper.getValueForMetricType(wm.getMetricType(), after);
double beforeValue = WeightedSumWeightingFunctionHelper.getValueForMetricType(wm.getMetricType(), before);
double delta = afterValue - beforeValue;
newWeight += delta * wm.getWeight();
}
int activeResourceDelta = calcActiveResourceDelta(impact);
logger.debug("Delta of active resources: " + activeResourceDelta);
return activeResourceDelta;
}
private int calcActiveResourceDelta(Impact impact) {
Result before = impact.getBefore();
Result after = impact.getAfter();
int activeResourcesBefore = getActiveResources(before);
int activeResourcesAfter = getActiveResources(after);
return activeResourcesAfter - activeResourcesBefore;
}
private int getActiveResources(Result result) {
int counter = 0;
for (MetricValue v : result.getMetricValues()) {
// TODO parse with regexp or something more clever
if (v.getMetricType().getName().contains(UTIL_IDENTIFIER) && v.getValue() > THRESHOLD)
counter++;
}
return counter;
}
}
package edu.kit.ipd.descartes.adaptation.ql;
import java.util.List;
import org.apache.log4j.Logger;
import edu.kit.ipd.descartes.perfdatarepo.MetricType;
import edu.kit.ipd.descartes.ql.core.engine.query.QueryExecutionEngine;
import edu.kit.ipd.descartes.ql.core.engine.query.QueryExecutionEngineImpl;
import edu.kit.ipd.descartes.ql.models.mapping.mapping.EntityMapping;
public class QueryEngineAdapter {
private static Logger logger = Logger.getLogger(QueryEngineAdapter.class);
private QueryExecutionEngine qee = new QueryExecutionEngineImpl();
private String pdrLocation = null;
public QueryEngineAdapter(String pdrLocation) {
this.pdrLocation = pdrLocation;
}
public int queryActiveServers() {
String query = "LIST RESOURCES USING pdr@'" + pdrLocation + "';";
List<EntityMapping> results = qee.execute(query);
return results.size();
}
public Double getValueForMetricType(MetricType metricType) {
// String pdrLocation = "/edu.kit.ipd.descartes.ql.lang.examples/PDR/optimizationTest.pdr";
// String pdrLocation = "/by_dmm-model/optimizationTest.pdr";
String query = "SELECT desc1." + metricType.getName() + " FOR RESOURCE '_uZslUK8HEeGqG9wdcmTqrg' AS desc1 "
+ "USING pdr@'" + pdrLocation + "';";
logger.debug("Query: " + query);
List<EntityMapping> results = qee.execute(query);
if (!qee.isValidQuery()) {
return Double.NaN;
}
for (EntityMapping result : results) {
}
return null;
}
}
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