tmf: bug 493661 Return analyses who apply to experiment
authorGeneviève Bastien <gbastien+lttng@versatic.net>
Tue, 17 May 2016 21:16:18 +0000 (17:16 -0400)
committerGenevieve Bastien <gbastien+lttng@versatic.net>
Fri, 27 May 2016 13:15:48 +0000 (09:15 -0400)
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 <gbastien+lttng@versatic.net>
Reviewed-on: https://git.eclipse.org/r/72984
Reviewed-by: Hudson CI
Reviewed-by: Matthew Khouzam <matthew.khouzam@ericsson.com>
tmf/org.eclipse.tracecompass.tmf.core.tests/src/org/eclipse/tracecompass/tmf/core/tests/analysis/AnalysisModuleHelperTest.java
tmf/org.eclipse.tracecompass.tmf.core.tests/src/org/eclipse/tracecompass/tmf/core/tests/trace/TmfExperimentTest.java
tmf/org.eclipse.tracecompass.tmf.core/src/org/eclipse/tracecompass/tmf/core/analysis/TmfAnalysisModuleHelperConfigElement.java

index d4a0d903813c9419e060c30b6c9ec95ed160febe..2c50444888e82e36af587d929014ec4999d08592 100644 (file)
@@ -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));
     }
 
     /**
index 1649a39655b9a071b4c9fd8b9b9f4712ffdb88d6..da34b4fa1c2d553d83e6c5881a6cbbc9c546e475 100644 (file)
@@ -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<TestExperimentAnalysis> 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();
+        }
+
     }
 
     // ------------------------------------------------------------------------
index 9a710a5bff3aa8c959897c76451360b535771aac..8cce5b15b9f8b093d45ad3dd60f5ce4345b29866 100644 (file)
@@ -107,8 +107,7 @@ public class TmfAnalysisModuleHelperConfigElement implements IAnalysisModuleHelp
         return ContributorFactoryOSGi.resolve(fCe.getContributor());
     }
 
-    @Override
-    public boolean appliesToTraceType(Class<? extends ITmfTrace> traceclass) {
+    private boolean appliesToTraceClass(Class<? extends ITmfTrace> 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<? extends ITmfTrace> 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<Class<? extends ITmfTrace>> getValidTraceTypes() {
         Set<Class<? extends ITmfTrace>> 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;
                 }
This page took 0.028081 seconds and 5 git commands to generate.