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