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