Move alltests plugin to the Trace Compass namespace
[deliverable/tracecompass.git] / org.eclipse.tracecompass.tmf.core.tests / src / org / eclipse / linuxtools / 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
14package org.eclipse.linuxtools.tmf.core.tests.analysis;
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
GB
27import org.eclipse.core.runtime.Platform;
28import org.eclipse.linuxtools.tmf.core.analysis.IAnalysisModule;
29import org.eclipse.linuxtools.tmf.core.analysis.IAnalysisModuleHelper;
30import org.eclipse.linuxtools.tmf.core.analysis.Messages;
31import org.eclipse.linuxtools.tmf.core.analysis.TmfAnalysisManager;
b3b03da0 32import org.eclipse.linuxtools.tmf.core.analysis.TmfAnalysisModuleHelperConfigElement;
8c736b3c 33import org.eclipse.linuxtools.tmf.core.analysis.TmfAnalysisRequirement;
c068a752 34import org.eclipse.linuxtools.tmf.core.exceptions.TmfAnalysisException;
c068a752
GB
35import org.eclipse.linuxtools.tmf.core.tests.shared.TmfTestTrace;
36import org.eclipse.linuxtools.tmf.core.trace.ITmfTrace;
37import org.eclipse.linuxtools.tmf.core.trace.TmfTrace;
38import org.eclipse.linuxtools.tmf.tests.stubs.analysis.TestAnalysis;
4d2857be 39import org.eclipse.linuxtools.tmf.tests.stubs.analysis.TestAnalysis2;
8c736b3c 40import org.eclipse.linuxtools.tmf.tests.stubs.analysis.TestRequirementAnalysis;
c068a752 41import org.eclipse.linuxtools.tmf.tests.stubs.trace.TmfTraceStub;
4d2857be 42import org.eclipse.linuxtools.tmf.tests.stubs.trace.TmfTraceStub2;
04da5385 43import org.eclipse.linuxtools.tmf.tests.stubs.trace.TmfTraceStub3;
c068a752
GB
44import org.eclipse.osgi.util.NLS;
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;
7b3eb8c0
AM
140 try (IAnalysisModule module = fModule.newModule(TmfTestTrace.A_TEST_10K.getTrace());) {
141 assertNotNull(module);
142 assertTrue(module instanceof TestAnalysis);
c068a752
GB
143 } catch (TmfAnalysisException e) {
144 exception = e;
145 }
146 assertNull(exception);
c068a752 147
4d2857be 148 /* TestAnalysis2 module with trace, should return an exception */
7b3eb8c0 149 try (IAnalysisModule module = fModuleOther.newModule(TmfTestTrace.A_TEST_10K.getTrace());) {
c068a752
GB
150 } catch (TmfAnalysisException e) {
151 exception = e;
152 }
153 assertNotNull(exception);
4d2857be 154 assertEquals(NLS.bind(Messages.TmfAnalysisModuleHelper_AnalysisDoesNotApply, fModuleOther.getName()), exception.getMessage());
c068a752 155
4d2857be 156 /* TestAnalysis2 module with a TraceStub2 */
c068a752 157 exception = null;
7b3eb8c0
AM
158 try (IAnalysisModule module = fModuleOther.newModule(fTrace);) {
159 assertNotNull(module);
160 assertTrue(module instanceof TestAnalysis2);
c068a752
GB
161 } catch (TmfAnalysisException e) {
162 exception = e;
163 }
164 assertNull(exception);
c068a752
GB
165 }
166
167 /**
168 * Test for the initialization of parameters from the extension points
169 */
170 @Test
171 public void testParameters() {
c068a752
GB
172 ITmfTrace trace = TmfTestTrace.A_TEST_10K.getTrace();
173
174 /*
175 * This analysis has a parameter, but no default value. we should be
176 * able to set the parameter
177 */
178 IAnalysisModuleHelper helper = TmfAnalysisManager.getAnalysisModule(AnalysisManagerTest.MODULE_PARAM);
7b3eb8c0
AM
179 try (IAnalysisModule module = helper.newModule(trace);) {
180 assertNull(module.getParameter(TestAnalysis.PARAM_TEST));
181 module.setParameter(TestAnalysis.PARAM_TEST, 1);
182 assertEquals(1, module.getParameter(TestAnalysis.PARAM_TEST));
183
c068a752
GB
184 } catch (TmfAnalysisException e1) {
185 fail(e1.getMessage());
186 return;
187 }
188
c068a752
GB
189 /* This module has a parameter with default value */
190 helper = TmfAnalysisManager.getAnalysisModule(AnalysisManagerTest.MODULE_PARAM_DEFAULT);
7b3eb8c0
AM
191 try (IAnalysisModule module = helper.newModule(trace);) {
192 assertEquals(3, module.getParameter(TestAnalysis.PARAM_TEST));
193 module.setParameter(TestAnalysis.PARAM_TEST, 1);
194 assertEquals(1, module.getParameter(TestAnalysis.PARAM_TEST));
195
c068a752
GB
196 } catch (TmfAnalysisException e1) {
197 fail(e1.getMessage());
198 return;
199 }
c068a752
GB
200
201 /*
202 * This module does not have a parameter so setting it should throw an
203 * error
204 */
4d2857be 205 helper = TmfAnalysisManager.getAnalysisModule(AnalysisManagerTest.MODULE_SECOND);
7b3eb8c0
AM
206 Exception exception = null;
207 try (IAnalysisModule module = helper.newModule(fTrace);) {
208
209 assertNull(module.getParameter(TestAnalysis.PARAM_TEST));
210
211 try {
212 module.setParameter(TestAnalysis.PARAM_TEST, 1);
213 } catch (RuntimeException e) {
214 exception = e;
215 }
c068a752
GB
216 } catch (TmfAnalysisException e1) {
217 fail(e1.getMessage());
218 return;
219 }
c068a752
GB
220 assertNotNull(exception);
221 }
8c736b3c
MR
222
223 /**
224 * Test for the
225 * {@link TmfAnalysisModuleHelperConfigElement#getValidTraceTypes} method
226 */
227 @Test
228 public void testGetValidTraceTypes() {
04da5385 229 Set<Class<? extends ITmfTrace>> expected = ImmutableSet.of((Class<? extends ITmfTrace>) TmfTraceStub.class, TmfTraceStub2.class, TmfTraceStub3.class);
8c736b3c 230 Iterable<Class<? extends ITmfTrace>> traceTypes = fReqModule.getValidTraceTypes();
04da5385 231 assertEquals(expected, traceTypes);
8c736b3c
MR
232 }
233
234 /**
235 * Test for the
236 * {@link TmfAnalysisModuleHelperConfigElement#getAnalysisRequirements}
237 * method
238 */
239 @Test
240 public void testGetRequirements() {
241 Iterable<TmfAnalysisRequirement> requirements = fReqModule.getAnalysisRequirements();
242 assertNotNull(requirements);
243
244 Map<String, TmfAnalysisRequirement> rMap = new HashMap<>();
245
246 for (TmfAnalysisRequirement req : requirements) {
247 assertFalse(rMap.containsKey(req.getType()));
248 rMap.put(req.getType(), req);
249 }
250 assertEquals(2, rMap.size());
251
252 /* Test if all types and values have been obtained */
253 TmfAnalysisRequirement req = rMap.get(TestRequirementAnalysis.EVENT_TYPE);
254 assertNotNull(req);
255
256 Set<String> values = req.getValues();
257 assertEquals(3, values.size());
258 assertTrue(values.contains(TestRequirementAnalysis.EXIT_SYSCALL));
259 assertTrue(values.contains(TestRequirementAnalysis.SCHED_SWITCH));
260 assertTrue(values.contains(TestRequirementAnalysis.SCHED_WAKEUP));
261
262 req = rMap.get(TestRequirementAnalysis.FIELD_TYPE);
263 assertNotNull(req);
264
265 values = req.getValues();
266 assertEquals(2, values.size());
267 assertTrue(values.contains(TestRequirementAnalysis.PID));
268 assertTrue(values.contains(TestRequirementAnalysis.TID));
269 }
c068a752 270}
This page took 0.084589 seconds and 5 git commands to generate.