From 6fbe12fddd1dfa46ab2cac48a94eac8a4b6ce999 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Genevi=C3=A8ve=20Bastien?= Date: Tue, 17 May 2016 17:16:18 -0400 Subject: [PATCH] tmf: bug 493661 Return analyses who apply to experiment MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit When the requested traceclass is TmfExperiment, the analysis who have appliesExperiment set to true will be returned. Change-Id: Icfc3201029d8b04237287c693f8cbe1708827b56 Signed-off-by: Geneviève Bastien Reviewed-on: https://git.eclipse.org/r/72984 Reviewed-by: Hudson CI Reviewed-by: Matthew Khouzam --- .../analysis/AnalysisModuleHelperTest.java | 2 +- .../core/tests/trace/TmfExperimentTest.java | 40 +++++++++++++++++++ .../TmfAnalysisModuleHelperConfigElement.java | 18 +++++++-- 3 files changed, 55 insertions(+), 5 deletions(-) diff --git a/tmf/org.eclipse.tracecompass.tmf.core.tests/src/org/eclipse/tracecompass/tmf/core/tests/analysis/AnalysisModuleHelperTest.java b/tmf/org.eclipse.tracecompass.tmf.core.tests/src/org/eclipse/tracecompass/tmf/core/tests/analysis/AnalysisModuleHelperTest.java index d4a0d90381..2c50444888 100644 --- a/tmf/org.eclipse.tracecompass.tmf.core.tests/src/org/eclipse/tracecompass/tmf/core/tests/analysis/AnalysisModuleHelperTest.java +++ b/tmf/org.eclipse.tracecompass.tmf.core.tests/src/org/eclipse/tracecompass/tmf/core/tests/analysis/AnalysisModuleHelperTest.java @@ -132,7 +132,7 @@ public class AnalysisModuleHelperTest { assertFalse(fModuleOther.appliesToTraceType(TmfTraceStub.class)); assertTrue(fModuleOther.appliesToTraceType(TmfTraceStub2.class)); assertTrue(fModuleOther.appliesToTraceType(TmfTraceStub3.class)); - assertFalse(fModuleOther.appliesToTraceType(TmfExperiment.class)); + assertTrue(fModuleOther.appliesToTraceType(TmfExperiment.class)); } /** diff --git a/tmf/org.eclipse.tracecompass.tmf.core.tests/src/org/eclipse/tracecompass/tmf/core/tests/trace/TmfExperimentTest.java b/tmf/org.eclipse.tracecompass.tmf.core.tests/src/org/eclipse/tracecompass/tmf/core/tests/trace/TmfExperimentTest.java index 1649a39655..da34b4fa1c 100644 --- a/tmf/org.eclipse.tracecompass.tmf.core.tests/src/org/eclipse/tracecompass/tmf/core/tests/trace/TmfExperimentTest.java +++ b/tmf/org.eclipse.tracecompass.tmf.core.tests/src/org/eclipse/tracecompass/tmf/core/tests/trace/TmfExperimentTest.java @@ -40,6 +40,7 @@ import org.eclipse.tracecompass.tmf.core.request.ITmfEventRequest.ExecutionType; import org.eclipse.tracecompass.tmf.core.request.TmfEventRequest; import org.eclipse.tracecompass.tmf.core.signal.TmfTraceOpenedSignal; import org.eclipse.tracecompass.tmf.core.tests.TmfCoreTestPlugin; +import org.eclipse.tracecompass.tmf.core.tests.analysis.AnalysisManagerTest; import org.eclipse.tracecompass.tmf.core.tests.shared.TmfTestTrace; import org.eclipse.tracecompass.tmf.core.timestamp.TmfTimeRange; import org.eclipse.tracecompass.tmf.core.timestamp.TmfTimestamp; @@ -220,6 +221,45 @@ public class TmfExperimentTest { Iterable testModules = TmfTraceUtils.getAnalysisModulesOfClass(experiment, TestExperimentAnalysis.class); assertTrue(modules.iterator().hasNext()); assertTrue(testModules.iterator().hasNext()); + + /* + * Test that a module that applies to one of its trace is present in an + * experiment + */ + ITmfTrace trace1 = TmfTestTrace.A_TEST_10K.getTrace(); + ITmfTrace trace2 = TmfTestTrace.A_TEST_10K2.getTrace(); + ITmfTrace trace3 = TmfTestTrace.A_TEST_10K2.getTraceAsStub2(); + + /* + * Create an experiment with TmfTraceStub, the module other should not + * be there + */ + ITmfTrace[] tracesExp1 = { trace1, trace2 }; + TmfExperiment exp1 = new TmfExperiment(tracesExp1[0].getEventType(), "Experiment 1", tracesExp1, TmfExperiment.DEFAULT_INDEX_PAGE_SIZE, null); + + /* + * Create an experiment containing some TmfTraceStub2, the module other + * should be present + */ + ITmfTrace[] tracesExp2 = { trace1, trace3 }; + TmfExperiment exp2 = new TmfExperiment(tracesExp2[0].getEventType(), "Experiment 1", tracesExp2, TmfExperiment.DEFAULT_INDEX_PAGE_SIZE, null); + + try { + /* Open the experiment, the modules should be populated */ + exp1.traceOpened(new TmfTraceOpenedSignal(this, exp1, null)); + assertNull(exp1.getAnalysisModule(AnalysisManagerTest.MODULE_SECOND)); + + /* Open the experiment, the modules should be populated */ + exp2.traceOpened(new TmfTraceOpenedSignal(this, exp2, null)); + assertNotNull(exp2.getAnalysisModule(AnalysisManagerTest.MODULE_SECOND)); + } finally { + trace1.dispose(); + trace2.dispose(); + trace3.dispose(); + exp1.dispose(); + exp2.dispose(); + } + } // ------------------------------------------------------------------------ diff --git a/tmf/org.eclipse.tracecompass.tmf.core/src/org/eclipse/tracecompass/tmf/core/analysis/TmfAnalysisModuleHelperConfigElement.java b/tmf/org.eclipse.tracecompass.tmf.core/src/org/eclipse/tracecompass/tmf/core/analysis/TmfAnalysisModuleHelperConfigElement.java index 9a710a5bff..8cce5b15b9 100644 --- a/tmf/org.eclipse.tracecompass.tmf.core/src/org/eclipse/tracecompass/tmf/core/analysis/TmfAnalysisModuleHelperConfigElement.java +++ b/tmf/org.eclipse.tracecompass.tmf.core/src/org/eclipse/tracecompass/tmf/core/analysis/TmfAnalysisModuleHelperConfigElement.java @@ -107,8 +107,7 @@ public class TmfAnalysisModuleHelperConfigElement implements IAnalysisModuleHelp return ContributorFactoryOSGi.resolve(fCe.getContributor()); } - @Override - public boolean appliesToTraceType(Class traceclass) { + private boolean appliesToTraceClass(Class traceclass) { boolean applies = false; /* Get the module's applying tracetypes */ @@ -140,6 +139,17 @@ public class TmfAnalysisModuleHelperConfigElement implements IAnalysisModuleHelp return applies; } + @Override + public boolean appliesToTraceType(Class traceclass) { + boolean applies = appliesToTraceClass(traceclass); + + /* Check if it applies to an experiment */ + if (!applies && TmfExperiment.class.isAssignableFrom(traceclass)) { + applies = appliesToExperiment(); + } + return applies; + } + @Override public Iterable> getValidTraceTypes() { Set> traceTypes = new HashSet<>(); @@ -183,14 +193,14 @@ public class TmfAnalysisModuleHelperConfigElement implements IAnalysisModuleHelp public IAnalysisModule newModule(ITmfTrace trace) throws TmfAnalysisException { /* Check if it applies to trace itself */ - boolean applies = appliesToTraceType(trace.getClass()); + boolean applies = appliesToTraceClass(trace.getClass()); /* * If the trace is an experiment, check if this module would apply to an * experiment should it apply to one of its traces. */ if (!applies && (trace instanceof TmfExperiment) && appliesToExperiment()) { for (ITmfTrace expTrace : TmfTraceManager.getTraceSet(trace)) { - if (appliesToTraceType(expTrace.getClass())) { + if (appliesToTraceClass(expTrace.getClass())) { applies = true; break; } -- 2.34.1