Commit | Line | Data |
---|---|---|
d18dd09b | 1 | /******************************************************************************* |
ed902a2b | 2 | * Copyright (c) 2009, 2014 Ericsson |
54a7a54c | 3 | * |
d18dd09b ASL |
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 | |
54a7a54c | 8 | * |
d18dd09b ASL |
9 | * Contributors: |
10 | * Francois Chouinard - Initial API and implementation | |
6e1886bc | 11 | * Alexandre Montplaisir - Port to JUnit4 |
d18dd09b ASL |
12 | *******************************************************************************/ |
13 | ||
2bdf0193 | 14 | package org.eclipse.tracecompass.tmf.core.tests.component; |
d18dd09b | 15 | |
6e1886bc AM |
16 | import static org.junit.Assert.assertEquals; |
17 | import static org.junit.Assert.assertTrue; | |
d18dd09b | 18 | |
2bdf0193 AM |
19 | import org.eclipse.tracecompass.internal.tmf.core.component.TmfProviderManager; |
20 | import org.eclipse.tracecompass.tmf.core.component.TmfEventProvider; | |
21 | import org.eclipse.tracecompass.tmf.core.event.ITmfEvent; | |
22 | import org.eclipse.tracecompass.tmf.core.event.TmfEvent; | |
23 | import org.eclipse.tracecompass.tmf.core.request.ITmfEventRequest; | |
24 | import org.eclipse.tracecompass.tmf.core.trace.ITmfContext; | |
6e1886bc AM |
25 | import org.junit.Test; |
26 | ||
d18dd09b | 27 | /** |
ff4ed569 | 28 | * Test suite for the TmfProviderManager class. |
d18dd09b | 29 | */ |
6e1886bc AM |
30 | public class TmfProviderManagerTest { |
31 | ||
32 | // ------------------------------------------------------------------------ | |
33 | // Dummy Providers | |
34 | // ------------------------------------------------------------------------ | |
35 | ||
fd3f1eff | 36 | private class TestProvider1 extends TmfEventProvider { |
6e1886bc AM |
37 | public TestProvider1(Class<ITmfEvent> type) { |
38 | super("TestProvider1", type); | |
39 | } | |
40 | ||
41 | @Override | |
fd3f1eff | 42 | public ITmfContext armRequest(ITmfEventRequest request) { |
6e1886bc AM |
43 | return null; |
44 | } | |
45 | ||
46 | @Override | |
47 | public ITmfEvent getNext(ITmfContext context) { | |
48 | return null; | |
49 | } | |
50 | ||
51 | @Override | |
fd3f1eff | 52 | public boolean isCompleted(ITmfEventRequest request, ITmfEvent data, int nbRead) { |
6e1886bc AM |
53 | return false; |
54 | } | |
55 | } | |
56 | ||
fd3f1eff | 57 | private class TestProvider2 extends TmfEventProvider { |
6e1886bc AM |
58 | public TestProvider2(Class<ITmfEvent> type) { |
59 | super("TestProvider2", type); | |
60 | } | |
61 | ||
62 | @Override | |
fd3f1eff | 63 | public ITmfContext armRequest(ITmfEventRequest request) { |
6e1886bc AM |
64 | return null; |
65 | } | |
66 | ||
67 | @Override | |
68 | public ITmfEvent getNext(ITmfContext context) { | |
69 | return null; | |
70 | } | |
71 | ||
72 | @Override | |
fd3f1eff | 73 | public boolean isCompleted(ITmfEventRequest request, ITmfEvent data, int nbRead) { |
6e1886bc AM |
74 | return false; |
75 | } | |
76 | } | |
77 | ||
78 | private class TmfEvent3 extends TmfEvent { | |
0c7471fb | 79 | private TmfEvent3() { |
e1de2fd4 | 80 | super(null, ITmfContext.UNKNOWN_RANK, null, null, null); |
0c7471fb | 81 | } |
6e1886bc AM |
82 | } |
83 | ||
fd3f1eff | 84 | private class TestProvider3 extends TmfEventProvider { |
6e1886bc AM |
85 | public TestProvider3(Class<TmfEvent3> type) { |
86 | super("TestProvider3", type); | |
87 | } | |
88 | ||
89 | @Override | |
fd3f1eff | 90 | public ITmfContext armRequest(ITmfEventRequest request) { |
6e1886bc AM |
91 | return null; |
92 | } | |
93 | ||
94 | @Override | |
95 | public TmfEvent3 getNext(ITmfContext context) { | |
96 | return null; | |
97 | } | |
98 | ||
99 | @Override | |
fd3f1eff | 100 | public boolean isCompleted(ITmfEventRequest request, ITmfEvent data, int nbRead) { |
6e1886bc AM |
101 | return false; |
102 | } | |
103 | } | |
104 | ||
105 | // ------------------------------------------------------------------------ | |
106 | // register/dispose | |
107 | // ------------------------------------------------------------------------ | |
108 | ||
109 | /** | |
110 | * Test registering | |
111 | */ | |
112 | @Test | |
113 | public void testRegister_0() { | |
fd3f1eff | 114 | TmfEventProvider[] providers = TmfProviderManager.getProviders(ITmfEvent.class); |
6e1886bc AM |
115 | assertEquals("getProviders", 0, providers.length); |
116 | ||
117 | providers = TmfProviderManager.getProviders(ITmfEvent.class, TestProvider1.class); | |
118 | assertEquals("getProviders", 0, providers.length); | |
119 | } | |
120 | ||
121 | /** | |
122 | * Test unregistering | |
123 | */ | |
124 | @Test | |
125 | public void testRegister_Unregister_1() { | |
126 | ||
127 | // Register a single provider | |
128 | TestProvider1 testProvider1 = new TestProvider1(ITmfEvent.class); | |
129 | ||
fd3f1eff | 130 | TmfEventProvider[] providers = TmfProviderManager.getProviders(ITmfEvent.class); |
6e1886bc AM |
131 | assertEquals("getProviders", 1, providers.length); |
132 | assertEquals("getProviders", testProvider1, providers[0]); | |
133 | ||
134 | providers = TmfProviderManager.getProviders(ITmfEvent.class, TestProvider1.class); | |
135 | assertEquals("getProviders", 1, providers.length); | |
136 | assertEquals("getProviders", testProvider1, providers[0]); | |
137 | ||
138 | // Unregister it | |
139 | testProvider1.dispose(); | |
140 | ||
141 | providers = TmfProviderManager.getProviders(ITmfEvent.class); | |
142 | assertEquals("getProviders", 0, providers.length); | |
143 | ||
144 | providers = TmfProviderManager.getProviders(ITmfEvent.class, TestProvider1.class); | |
145 | assertEquals("getProviders", 0, providers.length); | |
146 | } | |
147 | ||
148 | /** | |
149 | * Test unregistering | |
150 | */ | |
151 | @Test | |
152 | public void testRegister_Unregister_2() { | |
153 | ||
154 | // Register 2 providers, same data type | |
155 | TestProvider1 testProvider1 = new TestProvider1(ITmfEvent.class); | |
156 | TestProvider2 testProvider2 = new TestProvider2(ITmfEvent.class); | |
157 | ||
fd3f1eff | 158 | TmfEventProvider[] providers = TmfProviderManager.getProviders(ITmfEvent.class); |
6e1886bc AM |
159 | assertEquals("getProviders", 2, providers.length); |
160 | assertTrue(providers.length == 2); | |
161 | if (providers[0] == testProvider1) { | |
162 | assertEquals("getProviders", testProvider2, providers[1]); | |
163 | } | |
164 | else { | |
165 | assertEquals("getProviders", testProvider2, providers[0]); | |
166 | assertEquals("getProviders", testProvider1, providers[1]); | |
167 | } | |
168 | ||
169 | providers = TmfProviderManager.getProviders(ITmfEvent.class, TestProvider1.class); | |
170 | assertEquals("getProviders", 1, providers.length); | |
171 | assertEquals("getProviders", testProvider1, providers[0]); | |
172 | ||
173 | providers = TmfProviderManager.getProviders(ITmfEvent.class, TestProvider2.class); | |
174 | assertEquals("getProviders", 1, providers.length); | |
175 | assertEquals("getProviders", testProvider2, providers[0]); | |
176 | ||
177 | // Remove one | |
178 | testProvider1.dispose(); | |
179 | ||
180 | providers = TmfProviderManager.getProviders(ITmfEvent.class); | |
181 | assertEquals("getProviders", 1, providers.length); | |
182 | assertEquals("getProviders", testProvider2, providers[0]); | |
183 | ||
184 | providers = TmfProviderManager.getProviders(ITmfEvent.class, TestProvider1.class); | |
185 | assertEquals("getProviders", 0, providers.length); | |
186 | ||
187 | providers = TmfProviderManager.getProviders(ITmfEvent.class, TestProvider2.class); | |
188 | assertEquals("getProviders", 1, providers.length); | |
189 | assertEquals("getProviders", testProvider2, providers[0]); | |
190 | ||
191 | // Remove the other | |
192 | testProvider2.dispose(); | |
193 | ||
194 | providers = TmfProviderManager.getProviders(ITmfEvent.class); | |
195 | assertEquals("getProviders", 0, providers.length); | |
196 | ||
197 | providers = TmfProviderManager.getProviders(ITmfEvent.class, TestProvider1.class); | |
198 | assertEquals("getProviders", 0, providers.length); | |
199 | ||
200 | providers = TmfProviderManager.getProviders(ITmfEvent.class, TestProvider2.class); | |
201 | assertEquals("getProviders", 0, providers.length); | |
202 | } | |
203 | ||
204 | /** | |
205 | * Test unregistering | |
206 | */ | |
207 | @Test | |
208 | public void testRegister_Unregister_3() { | |
209 | ||
210 | // Register 3 providers, mixed data types | |
211 | TestProvider1 testProvider1 = new TestProvider1(ITmfEvent.class); | |
212 | TestProvider2 testProvider2 = new TestProvider2(ITmfEvent.class); | |
213 | TestProvider3 testProvider3 = new TestProvider3(TmfEvent3.class); | |
214 | ||
fd3f1eff | 215 | TmfEventProvider[] providers = TmfProviderManager.getProviders(ITmfEvent.class); |
6e1886bc AM |
216 | assertEquals("getProviders", 2, providers.length); |
217 | if (providers[0] == testProvider1) { | |
218 | assertEquals("getProviders", testProvider2, providers[1]); | |
219 | } | |
220 | else { | |
221 | assertEquals("getProviders", testProvider2, providers[0]); | |
222 | assertEquals("getProviders", testProvider1, providers[1]); | |
223 | } | |
224 | ||
fd3f1eff | 225 | TmfEventProvider[] providers3 = TmfProviderManager.getProviders(TmfEvent3.class); |
6e1886bc AM |
226 | assertEquals("getProviders", 1, providers3.length); |
227 | assertEquals("getProviders", testProvider3, providers3[0]); | |
228 | ||
229 | providers = TmfProviderManager.getProviders(ITmfEvent.class, TestProvider1.class); | |
230 | assertEquals("getProviders", 1, providers.length); | |
231 | assertEquals("getProviders", testProvider1, providers[0]); | |
232 | ||
233 | providers = TmfProviderManager.getProviders(ITmfEvent.class, TestProvider2.class); | |
234 | assertEquals("getProviders", 1, providers.length); | |
235 | assertEquals("getProviders", testProvider2, providers[0]); | |
236 | ||
237 | providers3 = TmfProviderManager.getProviders(TmfEvent3.class, TestProvider3.class); | |
238 | assertEquals("getProviders", 1, providers3.length); | |
239 | assertEquals("getProviders", testProvider3, providers3[0]); | |
240 | ||
241 | // Remove one | |
242 | testProvider1.dispose(); | |
243 | ||
244 | providers = TmfProviderManager.getProviders(ITmfEvent.class); | |
245 | assertEquals("getProviders", 1, providers.length); | |
246 | assertEquals("getProviders", testProvider2, providers[0]); | |
247 | ||
248 | providers = TmfProviderManager.getProviders(ITmfEvent.class, TestProvider1.class); | |
249 | assertEquals("getProviders", 0, providers.length); | |
250 | ||
251 | providers = TmfProviderManager.getProviders(ITmfEvent.class, TestProvider2.class); | |
252 | assertEquals("getProviders", 1, providers.length); | |
253 | assertEquals("getProviders", testProvider2, providers[0]); | |
254 | ||
255 | providers3 = TmfProviderManager.getProviders(TmfEvent3.class); | |
256 | assertEquals("getProviders", 1, providers3.length); | |
257 | assertEquals("getProviders", testProvider3, providers3[0]); | |
258 | ||
259 | providers3 = TmfProviderManager.getProviders(TmfEvent3.class, TestProvider3.class); | |
260 | assertEquals("getProviders", 1, providers3.length); | |
261 | assertEquals("getProviders", testProvider3, providers3[0]); | |
262 | ||
263 | // Remove another one | |
264 | testProvider2.dispose(); | |
265 | ||
266 | providers = TmfProviderManager.getProviders(ITmfEvent.class); | |
267 | assertEquals("getProviders", 0, providers.length); | |
268 | ||
269 | providers = TmfProviderManager.getProviders(ITmfEvent.class, TestProvider1.class); | |
270 | assertEquals("getProviders", 0, providers.length); | |
271 | ||
272 | providers = TmfProviderManager.getProviders(ITmfEvent.class, TestProvider2.class); | |
273 | assertEquals("getProviders", 0, providers.length); | |
274 | ||
275 | providers3 = TmfProviderManager.getProviders(TmfEvent3.class); | |
276 | assertTrue(providers3.length == 1); | |
277 | assertTrue(providers3[0] == testProvider3); | |
278 | ||
279 | providers3 = TmfProviderManager.getProviders(TmfEvent3.class, TestProvider3.class); | |
280 | assertEquals("getProviders", 1, providers3.length); | |
281 | assertEquals("getProviders", testProvider3, providers3[0]); | |
282 | ||
283 | // Remove the last one | |
284 | testProvider3.dispose(); | |
285 | ||
286 | providers = TmfProviderManager.getProviders(ITmfEvent.class); | |
287 | assertEquals("getProviders", 0, providers.length); | |
288 | ||
289 | providers = TmfProviderManager.getProviders(ITmfEvent.class, TestProvider1.class); | |
290 | assertEquals("getProviders", 0, providers.length); | |
291 | ||
292 | providers = TmfProviderManager.getProviders(ITmfEvent.class, TestProvider2.class); | |
293 | assertEquals("getProviders", 0, providers.length); | |
294 | ||
295 | providers3 = TmfProviderManager.getProviders(TmfEvent3.class); | |
296 | assertEquals("getProviders", 0, providers.length); | |
297 | ||
298 | providers3 = TmfProviderManager.getProviders(TmfEvent3.class, TestProvider3.class); | |
299 | assertEquals("getProviders", 0, providers.length); | |
300 | } | |
301 | ||
302 | /** | |
303 | * Test getProviders method | |
304 | */ | |
305 | @Test | |
306 | public void testGetProvider() { | |
307 | ||
308 | // Register 3 providers, mixed data types | |
309 | TestProvider1 testProvider1 = new TestProvider1(ITmfEvent.class); | |
310 | TestProvider2 testProvider2 = new TestProvider2(ITmfEvent.class); | |
311 | TestProvider3 testProvider3 = new TestProvider3(TmfEvent3.class); | |
312 | ||
fd3f1eff | 313 | TmfEventProvider[] providers = TmfProviderManager.getProviders(ITmfEvent.class, null); |
6e1886bc AM |
314 | assertEquals("getProviders", 2, providers.length); |
315 | if (providers[0] == testProvider1) { | |
316 | assertEquals("getProviders", testProvider2, providers[1]); | |
317 | } | |
318 | else { | |
319 | assertEquals("getProviders", testProvider2, providers[0]); | |
320 | assertEquals("getProviders", testProvider1, providers[1]); | |
321 | } | |
ff4ed569 | 322 | |
6e1886bc AM |
323 | providers = TmfProviderManager.getProviders(TmfEvent3.class, null); |
324 | assertEquals("getProviders", 1, providers.length); | |
325 | assertEquals("getProviders", testProvider3, providers[0]); | |
ff4ed569 | 326 | |
6e1886bc AM |
327 | // Remove the providers |
328 | testProvider1.dispose(); | |
329 | testProvider2.dispose(); | |
330 | testProvider3.dispose(); | |
331 | } | |
d18dd09b | 332 | |
6256d8ad | 333 | } |