Copyright header update, 2015 edition
[deliverable/tracecompass.git] / org.eclipse.tracecompass.tmf.core.tests / src / org / eclipse / tracecompass / tmf / core / tests / component / TmfProviderManagerTest.java
CommitLineData
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 14package org.eclipse.tracecompass.tmf.core.tests.component;
d18dd09b 15
6e1886bc
AM
16import static org.junit.Assert.assertEquals;
17import static org.junit.Assert.assertTrue;
d18dd09b 18
2bdf0193
AM
19import org.eclipse.tracecompass.internal.tmf.core.component.TmfProviderManager;
20import org.eclipse.tracecompass.tmf.core.component.TmfEventProvider;
21import org.eclipse.tracecompass.tmf.core.event.ITmfEvent;
22import org.eclipse.tracecompass.tmf.core.event.TmfEvent;
23import org.eclipse.tracecompass.tmf.core.request.ITmfEventRequest;
24import org.eclipse.tracecompass.tmf.core.trace.ITmfContext;
6e1886bc
AM
25import org.junit.Test;
26
d18dd09b 27/**
ff4ed569 28 * Test suite for the TmfProviderManager class.
d18dd09b 29 */
6e1886bc
AM
30public 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}
This page took 0.079297 seconds and 5 git commands to generate.