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;
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();
+ }
+
}
// ------------------------------------------------------------------------
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 */
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<>();
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;
}