*
* Contributors:
* Geneviève Bastien - Initial API and implementation
+ * Mathieu Rail - Added tests for getting a module's requirements
*******************************************************************************/
package org.eclipse.linuxtools.tmf.core.tests.analysis;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Set;
+
import org.eclipse.core.runtime.Platform;
import org.eclipse.linuxtools.tmf.core.analysis.IAnalysisModule;
import org.eclipse.linuxtools.tmf.core.analysis.IAnalysisModuleHelper;
import org.eclipse.linuxtools.tmf.core.analysis.Messages;
import org.eclipse.linuxtools.tmf.core.analysis.TmfAnalysisManager;
import org.eclipse.linuxtools.tmf.core.analysis.TmfAnalysisModuleHelperConfigElement;
+import org.eclipse.linuxtools.tmf.core.analysis.TmfAnalysisRequirement;
import org.eclipse.linuxtools.tmf.core.exceptions.TmfAnalysisException;
import org.eclipse.linuxtools.tmf.core.tests.shared.TmfTestTrace;
import org.eclipse.linuxtools.tmf.core.trace.ITmfTrace;
import org.eclipse.linuxtools.tmf.core.trace.TmfTrace;
import org.eclipse.linuxtools.tmf.tests.stubs.analysis.TestAnalysis;
import org.eclipse.linuxtools.tmf.tests.stubs.analysis.TestAnalysis2;
+import org.eclipse.linuxtools.tmf.tests.stubs.analysis.TestRequirementAnalysis;
import org.eclipse.linuxtools.tmf.tests.stubs.trace.TmfTraceStub;
import org.eclipse.linuxtools.tmf.tests.stubs.trace.TmfTraceStub2;
+import org.eclipse.linuxtools.tmf.tests.stubs.trace.TmfTraceStub3;
import org.eclipse.osgi.util.NLS;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.osgi.framework.Bundle;
+import com.google.common.collect.ImmutableSet;
+
/**
* Test suite for the {@link TmfAnalysisModuleHelperConfigElement} class
*
private IAnalysisModuleHelper fModule;
private IAnalysisModuleHelper fModuleOther;
+ private IAnalysisModuleHelper fReqModule;
private ITmfTrace fTrace;
/**
fModuleOther = TmfAnalysisManager.getAnalysisModule(AnalysisManagerTest.MODULE_SECOND);
assertNotNull(fModuleOther);
assertTrue(fModuleOther instanceof TmfAnalysisModuleHelperConfigElement);
+ fReqModule = TmfAnalysisManager.getAnalysisModule(AnalysisManagerTest.MODULE_REQ);
+ assertNotNull(fReqModule);
+ assertTrue(fReqModule instanceof TmfAnalysisModuleHelperConfigElement);
fTrace = TmfTestTrace.A_TEST_10K2.getTraceAsStub2();
}
}
/**
- * Test the {@link TmfAnalysisModuleHelperConfigElement#appliesToTraceType(Class)}
+ * Test the
+ * {@link TmfAnalysisModuleHelperConfigElement#appliesToTraceType(Class)}
* method for the 2 modules
*/
@Test
assertFalse(fModule.appliesToTraceType(TmfTrace.class));
assertTrue(fModule.appliesToTraceType(TmfTraceStub.class));
assertTrue(fModule.appliesToTraceType(TmfTraceStub2.class));
+ assertFalse(fModule.appliesToTraceType(TmfTraceStub3.class));
/* stub module 2 */
assertFalse(fModuleOther.appliesToTraceType(TmfTrace.class));
assertFalse(fModuleOther.appliesToTraceType(TmfTraceStub.class));
assertTrue(fModuleOther.appliesToTraceType(TmfTraceStub2.class));
+ assertTrue(fModuleOther.appliesToTraceType(TmfTraceStub3.class));
}
/**
- * Test the {@link TmfAnalysisModuleHelperConfigElement#newModule(ITmfTrace)} method
+ * Test the
+ * {@link TmfAnalysisModuleHelperConfigElement#newModule(ITmfTrace)} method
* for the 2 modules
*/
@Test
public void testNewModule() {
/* Test analysis module with traceStub */
Exception exception = null;
- IAnalysisModule module = null;
- try {
- module = fModule.newModule(TmfTestTrace.A_TEST_10K.getTrace());
+ try (IAnalysisModule module = fModule.newModule(TmfTestTrace.A_TEST_10K.getTrace());) {
+ assertNotNull(module);
+ assertTrue(module instanceof TestAnalysis);
} catch (TmfAnalysisException e) {
exception = e;
}
assertNull(exception);
- assertNotNull(module);
- assertTrue(module instanceof TestAnalysis);
/* TestAnalysis2 module with trace, should return an exception */
- module = null;
- try {
- module = fModuleOther.newModule(TmfTestTrace.A_TEST_10K.getTrace());
+ try (IAnalysisModule module = fModuleOther.newModule(TmfTestTrace.A_TEST_10K.getTrace());) {
} catch (TmfAnalysisException e) {
exception = e;
}
/* TestAnalysis2 module with a TraceStub2 */
exception = null;
- module = null;
- try {
- module = fModuleOther.newModule(fTrace);
+ try (IAnalysisModule module = fModuleOther.newModule(fTrace);) {
+ assertNotNull(module);
+ assertTrue(module instanceof TestAnalysis2);
} catch (TmfAnalysisException e) {
exception = e;
}
assertNull(exception);
- assertNotNull(module);
- assertTrue(module instanceof TestAnalysis2);
}
/**
* able to set the parameter
*/
IAnalysisModuleHelper helper = TmfAnalysisManager.getAnalysisModule(AnalysisManagerTest.MODULE_PARAM);
- IAnalysisModule module;
- try {
- module = helper.newModule(trace);
+ try (IAnalysisModule module = helper.newModule(trace);) {
+ assertNull(module.getParameter(TestAnalysis.PARAM_TEST));
+ module.setParameter(TestAnalysis.PARAM_TEST, 1);
+ assertEquals(1, module.getParameter(TestAnalysis.PARAM_TEST));
+
} catch (TmfAnalysisException e1) {
fail(e1.getMessage());
return;
}
- assertNull(module.getParameter(TestAnalysis.PARAM_TEST));
- module.setParameter(TestAnalysis.PARAM_TEST, 1);
- assertEquals(1, module.getParameter(TestAnalysis.PARAM_TEST));
-
/* This module has a parameter with default value */
helper = TmfAnalysisManager.getAnalysisModule(AnalysisManagerTest.MODULE_PARAM_DEFAULT);
- try {
- module = helper.newModule(trace);
+ try (IAnalysisModule module = helper.newModule(trace);) {
+ assertEquals(3, module.getParameter(TestAnalysis.PARAM_TEST));
+ module.setParameter(TestAnalysis.PARAM_TEST, 1);
+ assertEquals(1, module.getParameter(TestAnalysis.PARAM_TEST));
+
} catch (TmfAnalysisException e1) {
fail(e1.getMessage());
return;
}
- assertEquals(3, module.getParameter(TestAnalysis.PARAM_TEST));
- module.setParameter(TestAnalysis.PARAM_TEST, 1);
- assertEquals(1, module.getParameter(TestAnalysis.PARAM_TEST));
/*
* This module does not have a parameter so setting it should throw an
* error
*/
helper = TmfAnalysisManager.getAnalysisModule(AnalysisManagerTest.MODULE_SECOND);
- try {
- module = helper.newModule(fTrace);
+ Exception exception = null;
+ try (IAnalysisModule module = helper.newModule(fTrace);) {
+
+ assertNull(module.getParameter(TestAnalysis.PARAM_TEST));
+
+ try {
+ module.setParameter(TestAnalysis.PARAM_TEST, 1);
+ } catch (RuntimeException e) {
+ exception = e;
+ }
} catch (TmfAnalysisException e1) {
fail(e1.getMessage());
return;
}
- assertNull(module.getParameter(TestAnalysis.PARAM_TEST));
- Exception exception = null;
- try {
- module.setParameter(TestAnalysis.PARAM_TEST, 1);
- } catch (RuntimeException e) {
- exception = e;
- }
assertNotNull(exception);
}
+
+ /**
+ * Test for the
+ * {@link TmfAnalysisModuleHelperConfigElement#getValidTraceTypes} method
+ */
+ @Test
+ public void testGetValidTraceTypes() {
+ Set<Class<? extends ITmfTrace>> expected = ImmutableSet.of((Class<? extends ITmfTrace>) TmfTraceStub.class, TmfTraceStub2.class, TmfTraceStub3.class);
+ Iterable<Class<? extends ITmfTrace>> traceTypes = fReqModule.getValidTraceTypes();
+ assertEquals(expected, traceTypes);
+ }
+
+ /**
+ * Test for the
+ * {@link TmfAnalysisModuleHelperConfigElement#getAnalysisRequirements}
+ * method
+ */
+ @Test
+ public void testGetRequirements() {
+ Iterable<TmfAnalysisRequirement> requirements = fReqModule.getAnalysisRequirements();
+ assertNotNull(requirements);
+
+ Map<String, TmfAnalysisRequirement> rMap = new HashMap<>();
+
+ for (TmfAnalysisRequirement req : requirements) {
+ assertFalse(rMap.containsKey(req.getType()));
+ rMap.put(req.getType(), req);
+ }
+ assertEquals(2, rMap.size());
+
+ /* Test if all types and values have been obtained */
+ TmfAnalysisRequirement req = rMap.get(TestRequirementAnalysis.EVENT_TYPE);
+ assertNotNull(req);
+
+ Set<String> values = req.getValues();
+ assertEquals(3, values.size());
+ assertTrue(values.contains(TestRequirementAnalysis.EXIT_SYSCALL));
+ assertTrue(values.contains(TestRequirementAnalysis.SCHED_SWITCH));
+ assertTrue(values.contains(TestRequirementAnalysis.SCHED_WAKEUP));
+
+ req = rMap.get(TestRequirementAnalysis.FIELD_TYPE);
+ assertNotNull(req);
+
+ values = req.getValues();
+ assertEquals(2, values.size());
+ assertTrue(values.contains(TestRequirementAnalysis.PID));
+ assertTrue(values.contains(TestRequirementAnalysis.TID));
+ }
}