ctf: Use new location for the test traces
[deliverable/tracecompass.git] / org.eclipse.tracecompass.tmf.core.tests / src / org / eclipse / tracecompass / tmf / core / tests / analysis / AnalysisModuleHelperTest.java
CommitLineData
c068a752 1/*******************************************************************************
60ae41e1 2 * Copyright (c) 2013, 2014 École Polytechnique de Montréal
c068a752
GB
3 *
4 * All rights reserved. This program and the accompanying materials are
5 * made available under the terms of the Eclipse Public License v1.0 which
6 * accompanies this distribution, and is available at
7 * http://www.eclipse.org/legal/epl-v10.html
8 *
9 * Contributors:
10 * Geneviève Bastien - Initial API and implementation
8c736b3c 11 * Mathieu Rail - Added tests for getting a module's requirements
c068a752
GB
12 *******************************************************************************/
13
2bdf0193 14package org.eclipse.tracecompass.tmf.core.tests.analysis;
c068a752
GB
15
16import static org.junit.Assert.assertEquals;
17import static org.junit.Assert.assertFalse;
18import static org.junit.Assert.assertNotNull;
19import static org.junit.Assert.assertNull;
20import static org.junit.Assert.assertTrue;
21import static org.junit.Assert.fail;
c068a752 22
8c736b3c
MR
23import java.util.HashMap;
24import java.util.Map;
25import java.util.Set;
26
c068a752 27import org.eclipse.core.runtime.Platform;
c068a752 28import org.eclipse.osgi.util.NLS;
2bdf0193
AM
29import org.eclipse.tracecompass.tmf.core.analysis.IAnalysisModule;
30import org.eclipse.tracecompass.tmf.core.analysis.IAnalysisModuleHelper;
31import org.eclipse.tracecompass.tmf.core.analysis.Messages;
32import org.eclipse.tracecompass.tmf.core.analysis.TmfAnalysisManager;
33import org.eclipse.tracecompass.tmf.core.analysis.TmfAnalysisModuleHelperConfigElement;
34import org.eclipse.tracecompass.tmf.core.analysis.TmfAnalysisRequirement;
35import org.eclipse.tracecompass.tmf.core.exceptions.TmfAnalysisException;
36import org.eclipse.tracecompass.tmf.core.tests.shared.TmfTestTrace;
37import org.eclipse.tracecompass.tmf.core.trace.ITmfTrace;
38import org.eclipse.tracecompass.tmf.core.trace.TmfTrace;
39import org.eclipse.tracecompass.tmf.tests.stubs.analysis.TestAnalysis;
40import org.eclipse.tracecompass.tmf.tests.stubs.analysis.TestAnalysis2;
41import org.eclipse.tracecompass.tmf.tests.stubs.analysis.TestRequirementAnalysis;
42import org.eclipse.tracecompass.tmf.tests.stubs.trace.TmfTraceStub;
43import org.eclipse.tracecompass.tmf.tests.stubs.trace.TmfTraceStub2;
44import org.eclipse.tracecompass.tmf.tests.stubs.trace.TmfTraceStub3;
c068a752
GB
45import org.junit.After;
46import org.junit.Before;
47import org.junit.Test;
48import org.osgi.framework.Bundle;
49
04da5385
GB
50import com.google.common.collect.ImmutableSet;
51
c068a752 52/**
b3b03da0 53 * Test suite for the {@link TmfAnalysisModuleHelperConfigElement} class
c068a752
GB
54 *
55 * @author Geneviève Bastien
56 */
57public class AnalysisModuleHelperTest {
58
59 private IAnalysisModuleHelper fModule;
4d2857be 60 private IAnalysisModuleHelper fModuleOther;
8c736b3c 61 private IAnalysisModuleHelper fReqModule;
4d2857be 62 private ITmfTrace fTrace;
c068a752
GB
63
64 /**
65 * Gets the module helpers for 2 test modules
66 */
67 @Before
68 public void getModules() {
69 fModule = TmfAnalysisManager.getAnalysisModule(AnalysisManagerTest.MODULE_PARAM);
70 assertNotNull(fModule);
b3b03da0 71 assertTrue(fModule instanceof TmfAnalysisModuleHelperConfigElement);
4d2857be
GB
72 fModuleOther = TmfAnalysisManager.getAnalysisModule(AnalysisManagerTest.MODULE_SECOND);
73 assertNotNull(fModuleOther);
74 assertTrue(fModuleOther instanceof TmfAnalysisModuleHelperConfigElement);
8c736b3c
MR
75 fReqModule = TmfAnalysisManager.getAnalysisModule(AnalysisManagerTest.MODULE_REQ);
76 assertNotNull(fReqModule);
77 assertTrue(fReqModule instanceof TmfAnalysisModuleHelperConfigElement);
4d2857be 78 fTrace = TmfTestTrace.A_TEST_10K2.getTraceAsStub2();
c068a752
GB
79 }
80
81 /**
82 * Some tests use traces, let's clean them here
83 */
84 @After
85 public void cleanupTraces() {
86 TmfTestTrace.A_TEST_10K.dispose();
4d2857be 87 fTrace.dispose();
c068a752
GB
88 }
89
90 /**
91 * Test the helper's getters and setters
92 */
93 @Test
94 public void testHelperGetters() {
95 /* With first module */
96 assertEquals(AnalysisManagerTest.MODULE_PARAM, fModule.getId());
97 assertEquals("Test analysis", fModule.getName());
98 assertFalse(fModule.isAutomatic());
99
100 Bundle helperbundle = fModule.getBundle();
c77a695a 101 Bundle thisbundle = Platform.getBundle("org.eclipse.tracecompass.tmf.core.tests");
c068a752
GB
102 assertNotNull(helperbundle);
103 assertEquals(thisbundle, helperbundle);
104
4d2857be
GB
105 /* With other module */
106 assertEquals(AnalysisManagerTest.MODULE_SECOND, fModuleOther.getId());
107 assertEquals("Test other analysis", fModuleOther.getName());
108 assertTrue(fModuleOther.isAutomatic());
c068a752
GB
109 }
110
111 /**
8c736b3c
MR
112 * Test the
113 * {@link TmfAnalysisModuleHelperConfigElement#appliesToTraceType(Class)}
c068a752
GB
114 * method for the 2 modules
115 */
116 @Test
117 public void testAppliesToTrace() {
4d2857be 118 /* stub module */
c068a752
GB
119 assertFalse(fModule.appliesToTraceType(TmfTrace.class));
120 assertTrue(fModule.appliesToTraceType(TmfTraceStub.class));
4d2857be 121 assertTrue(fModule.appliesToTraceType(TmfTraceStub2.class));
04da5385 122 assertFalse(fModule.appliesToTraceType(TmfTraceStub3.class));
c068a752 123
4d2857be
GB
124 /* stub module 2 */
125 assertFalse(fModuleOther.appliesToTraceType(TmfTrace.class));
126 assertFalse(fModuleOther.appliesToTraceType(TmfTraceStub.class));
127 assertTrue(fModuleOther.appliesToTraceType(TmfTraceStub2.class));
04da5385 128 assertTrue(fModuleOther.appliesToTraceType(TmfTraceStub3.class));
c068a752
GB
129 }
130
131 /**
8c736b3c
MR
132 * Test the
133 * {@link TmfAnalysisModuleHelperConfigElement#newModule(ITmfTrace)} method
c068a752
GB
134 * for the 2 modules
135 */
136 @Test
137 public void testNewModule() {
138 /* Test analysis module with traceStub */
139 Exception exception = null;
03f0b0b1
AM
140 IAnalysisModule module = null;
141 try {
142 module = fModule.newModule(TmfTestTrace.A_TEST_10K.getTrace());
7b3eb8c0
AM
143 assertNotNull(module);
144 assertTrue(module instanceof TestAnalysis);
c068a752
GB
145 } catch (TmfAnalysisException e) {
146 exception = e;
03f0b0b1
AM
147 } finally {
148 if (module != null) {
149 module.dispose();
150 }
c068a752
GB
151 }
152 assertNull(exception);
c068a752 153
4d2857be 154 /* TestAnalysis2 module with trace, should return an exception */
03f0b0b1
AM
155 try {
156 module = fModuleOther.newModule(TmfTestTrace.A_TEST_10K.getTrace());
c068a752
GB
157 } catch (TmfAnalysisException e) {
158 exception = e;
03f0b0b1
AM
159 } finally {
160 if (module != null) {
161 module.dispose();
162 }
c068a752
GB
163 }
164 assertNotNull(exception);
4d2857be 165 assertEquals(NLS.bind(Messages.TmfAnalysisModuleHelper_AnalysisDoesNotApply, fModuleOther.getName()), exception.getMessage());
c068a752 166
4d2857be 167 /* TestAnalysis2 module with a TraceStub2 */
c068a752 168 exception = null;
03f0b0b1
AM
169 try {
170 module = fModuleOther.newModule(fTrace);
7b3eb8c0
AM
171 assertNotNull(module);
172 assertTrue(module instanceof TestAnalysis2);
c068a752
GB
173 } catch (TmfAnalysisException e) {
174 exception = e;
03f0b0b1
AM
175 } finally {
176 if (module != null) {
177 module.dispose();
178 }
c068a752
GB
179 }
180 assertNull(exception);
c068a752
GB
181 }
182
183 /**
184 * Test for the initialization of parameters from the extension points
185 */
186 @Test
187 public void testParameters() {
c068a752
GB
188 ITmfTrace trace = TmfTestTrace.A_TEST_10K.getTrace();
189
190 /*
191 * This analysis has a parameter, but no default value. we should be
192 * able to set the parameter
193 */
194 IAnalysisModuleHelper helper = TmfAnalysisManager.getAnalysisModule(AnalysisManagerTest.MODULE_PARAM);
03f0b0b1
AM
195 IAnalysisModule module = null;
196 try {
197 module = helper.newModule(trace);
7b3eb8c0
AM
198 assertNull(module.getParameter(TestAnalysis.PARAM_TEST));
199 module.setParameter(TestAnalysis.PARAM_TEST, 1);
200 assertEquals(1, module.getParameter(TestAnalysis.PARAM_TEST));
201
c068a752
GB
202 } catch (TmfAnalysisException e1) {
203 fail(e1.getMessage());
204 return;
03f0b0b1
AM
205 } finally {
206 if (module != null) {
207 module.dispose();
208 }
c068a752
GB
209 }
210
c068a752
GB
211 /* This module has a parameter with default value */
212 helper = TmfAnalysisManager.getAnalysisModule(AnalysisManagerTest.MODULE_PARAM_DEFAULT);
03f0b0b1
AM
213 try {
214 module = helper.newModule(trace);
7b3eb8c0
AM
215 assertEquals(3, module.getParameter(TestAnalysis.PARAM_TEST));
216 module.setParameter(TestAnalysis.PARAM_TEST, 1);
217 assertEquals(1, module.getParameter(TestAnalysis.PARAM_TEST));
218
c068a752
GB
219 } catch (TmfAnalysisException e1) {
220 fail(e1.getMessage());
221 return;
03f0b0b1
AM
222 } finally {
223 if (module != null) {
224 module.dispose();
225 }
c068a752 226 }
c068a752
GB
227
228 /*
229 * This module does not have a parameter so setting it should throw an
230 * error
231 */
4d2857be 232 helper = TmfAnalysisManager.getAnalysisModule(AnalysisManagerTest.MODULE_SECOND);
7b3eb8c0 233 Exception exception = null;
03f0b0b1
AM
234 try {
235 module = helper.newModule(fTrace);
7b3eb8c0
AM
236 assertNull(module.getParameter(TestAnalysis.PARAM_TEST));
237
238 try {
239 module.setParameter(TestAnalysis.PARAM_TEST, 1);
240 } catch (RuntimeException e) {
241 exception = e;
242 }
c068a752
GB
243 } catch (TmfAnalysisException e1) {
244 fail(e1.getMessage());
245 return;
03f0b0b1
AM
246 } finally {
247 if (module != null) {
248 module.dispose();
249 }
c068a752 250 }
c068a752
GB
251 assertNotNull(exception);
252 }
8c736b3c
MR
253
254 /**
255 * Test for the
256 * {@link TmfAnalysisModuleHelperConfigElement#getValidTraceTypes} method
257 */
258 @Test
259 public void testGetValidTraceTypes() {
04da5385 260 Set<Class<? extends ITmfTrace>> expected = ImmutableSet.of((Class<? extends ITmfTrace>) TmfTraceStub.class, TmfTraceStub2.class, TmfTraceStub3.class);
8c736b3c 261 Iterable<Class<? extends ITmfTrace>> traceTypes = fReqModule.getValidTraceTypes();
04da5385 262 assertEquals(expected, traceTypes);
8c736b3c
MR
263 }
264
265 /**
266 * Test for the
267 * {@link TmfAnalysisModuleHelperConfigElement#getAnalysisRequirements}
268 * method
269 */
270 @Test
271 public void testGetRequirements() {
272 Iterable<TmfAnalysisRequirement> requirements = fReqModule.getAnalysisRequirements();
273 assertNotNull(requirements);
274
275 Map<String, TmfAnalysisRequirement> rMap = new HashMap<>();
276
277 for (TmfAnalysisRequirement req : requirements) {
278 assertFalse(rMap.containsKey(req.getType()));
279 rMap.put(req.getType(), req);
280 }
281 assertEquals(2, rMap.size());
282
283 /* Test if all types and values have been obtained */
284 TmfAnalysisRequirement req = rMap.get(TestRequirementAnalysis.EVENT_TYPE);
285 assertNotNull(req);
286
287 Set<String> values = req.getValues();
288 assertEquals(3, values.size());
289 assertTrue(values.contains(TestRequirementAnalysis.EXIT_SYSCALL));
290 assertTrue(values.contains(TestRequirementAnalysis.SCHED_SWITCH));
291 assertTrue(values.contains(TestRequirementAnalysis.SCHED_WAKEUP));
292
293 req = rMap.get(TestRequirementAnalysis.FIELD_TYPE);
294 assertNotNull(req);
295
296 values = req.getValues();
297 assertEquals(2, values.size());
298 assertTrue(values.contains(TestRequirementAnalysis.PID));
299 assertTrue(values.contains(TestRequirementAnalysis.TID));
300 }
c068a752 301}
This page took 0.060463 seconds and 5 git commands to generate.