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

Fix: BlueYonder specific DataRepo

git-svn-id: https://se1.informatik.uni-wuerzburg.de/usvn/svn/code/code/DMM/trunk@13143 9e42b895-fcda-4063-8a3b-11be15eb1bbd
parent 327a49c4
No related branches found
No related tags found
No related merge requests found
......@@ -15,17 +15,25 @@ import edu.kit.ipd.descartes.adaptation.analysis.IModelAnalyzer;
import edu.kit.ipd.descartes.adaptation.evaluation.performance.IEvaluator;
import edu.kit.ipd.descartes.adaptation.evaluation.performance.WeightingFunctionEvaluator;
import edu.kit.ipd.descartes.adaptation.event.EventTypeEnum;
import edu.kit.ipd.descartes.adaptation.model.adaptation.dmm.BlueYonderExperimentTracker;
import edu.kit.ipd.descartes.adaptation.model.adaptation.dmm.DmmModelActionHandler;
import edu.kit.ipd.descartes.adaptation.model.adaptation.dmm.TacticsHistory;
import edu.kit.ipd.descartes.adaptation.model.adaptation.dmm.util.ObjectivesHelper;
import edu.kit.ipd.descartes.adaptation.analysis.pcm.PcmModelAnalyzer;
import edu.kit.ipd.descartes.adaptation.model.repository.dmm.AdaptationProcessModelLoader;
import edu.kit.ipd.descartes.adaptation.model.repository.perfdatarepo.IPerformanceDataRepositoryHandler;
import edu.kit.ipd.descartes.adaptation.model.repository.perfdatarepo.ObservationRepositoryHelper;
import edu.kit.ipd.descartes.adaptation.model.repository.perfdatarepo.PerfDataRepoConverter;
import edu.kit.ipd.descartes.adaptation.model.repository.perfdatarepo.PerformanceDataRepositoryHandler;
import edu.kit.ipd.descartes.adaptation.model.repository.perfdatarepo.PerformanceDataRepositoryHandlerFactory;
import edu.kit.ipd.descartes.mm.adaptation.AdaptationProcess;
import edu.kit.ipd.descartes.mm.adaptation.Event;
import edu.kit.ipd.descartes.mm.adaptation.Strategy;
import edu.kit.ipd.descartes.mm.adaptation.WeightedTactic;
import edu.kit.ipd.descartes.perfdatarepo.Impact;
import edu.kit.ipd.descartes.perfdatarepo.Result;
import edu.kit.ipd.descartes.ql.models.repository.Observation;
import edu.kit.ipd.descartes.ql.models.repository.ObservationRepository;
public class AdaptationControl {
......@@ -94,7 +102,7 @@ public class AdaptationControl {
// set handlers
dmmModelActionHandler = new DmmModelActionHandler();
executor = new TacticExecutor(dmmModelActionHandler);
modelAnalyzer = new PcmModelAnalyzer();
modelAnalyzer = new PcmModelAnalyzer(perfDataRepoHandler);
evaluator = new WeightingFunctionEvaluator();
} catch (IOException e) {
logger.error("Error while initializinig controller.", e);
......@@ -147,7 +155,17 @@ public class AdaptationControl {
*/
public boolean isObjectiveFulfilled() {
logger.debug("Checking if objective <<" + cause.getTriggers().getObjective().getName() + ">> is fulfilled...");
boolean flag = ObjectivesHelper.isObjectiveFulfilled(cause, perfDataRepoHandler.getCurrentSystemState());
Result currentSystemState = perfDataRepoHandler.getCurrentSystemState();
// TODO: Blue Yonder specific, introduce abstraction layer
WeightedTactic latestTactic = TacticsHistory.getInstance().getLatestAppliedTactic();
if (latestTactic != null && !(perfDataRepoHandler instanceof PerformanceDataRepositoryHandler)) {
String expName = BlueYonderExperimentTracker.getInstance()
.getExperimentNameForDistributedDataCenter(AdaptationProcessModelLoader.getDistributedDataCenter());
logger.debug("Searching for result of " + expName);
Observation o = ObservationRepositoryHelper.getResultEndingWith(expName, (ObservationRepository) perfDataRepoHandler.getRepository());
currentSystemState = PerfDataRepoConverter.convertResult(o);
}
boolean flag = ObjectivesHelper.isObjectiveFulfilled(cause, currentSystemState);
if (flag)
logger.info("Problem that caused event " + cause.getName() + " has been solved, Objective is fulfilled.");
else
......@@ -170,12 +188,11 @@ public class AdaptationControl {
* repository.
*/
public void analyzeModel() {
modelAnalyzer.analyze();
WeightedTactic tactic = TacticsHistory.getInstance().getLatestAppliedTactic();
if (TacticsHistory.getInstance().wasLatestTacticSuccessful()) {
// TODO Call model analysis
Impact latestImpact = perfDataRepoHandler.getLatestImpact(tactic);
modelAnalyzer.analyze();
Impact latestImpact = modelAnalyzer.getLatestImpact();
if (latestImpact != null)
tactic.setLastImpact(latestImpact);
} else {
......
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