lttng: Port unit tests to JUnit4
[deliverable/tracecompass.git] / org.eclipse.linuxtools.lttng2.ui.tests / src / org / eclipse / linuxtools / lttng2 / ui / tests / control / service / LTTngControlServiceTest.java
CommitLineData
eb1bab5b 1/**********************************************************************
2ba3d0a1 2 * Copyright (c) 2012, 2013 Ericsson
cfdb727a 3 *
eb1bab5b
BH
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
cfdb727a
AM
8 *
9 * Contributors:
eb1bab5b 10 * Bernd Hufmann - Initial API and implementation
2ba3d0a1 11 * Alexandre Montplaisir - Port to JUnit4
eb1bab5b 12 **********************************************************************/
2ba3d0a1 13
115b4a01 14package org.eclipse.linuxtools.lttng2.ui.tests.control.service;
eb1bab5b 15
2ba3d0a1
AM
16import static org.junit.Assert.*;
17
d132bcc7
BH
18import java.io.File;
19import java.net.URL;
20import java.util.ArrayList;
4ea599a5 21import java.util.HashSet;
eb1bab5b 22import java.util.List;
4ea599a5 23import java.util.Set;
eb1bab5b 24
eb1bab5b 25import org.eclipse.core.commands.ExecutionException;
d132bcc7 26import org.eclipse.core.runtime.FileLocator;
bbb3538a 27import org.eclipse.core.runtime.NullProgressMonitor;
d132bcc7 28import org.eclipse.core.runtime.Path;
9315aeee
BH
29import org.eclipse.linuxtools.internal.lttng2.core.control.model.IBaseEventInfo;
30import org.eclipse.linuxtools.internal.lttng2.core.control.model.IChannelInfo;
31import org.eclipse.linuxtools.internal.lttng2.core.control.model.IDomainInfo;
32import org.eclipse.linuxtools.internal.lttng2.core.control.model.IEventInfo;
d4514365 33import org.eclipse.linuxtools.internal.lttng2.core.control.model.IFieldInfo;
9315aeee
BH
34import org.eclipse.linuxtools.internal.lttng2.core.control.model.ISessionInfo;
35import org.eclipse.linuxtools.internal.lttng2.core.control.model.IUstProviderInfo;
36import org.eclipse.linuxtools.internal.lttng2.core.control.model.LogLevelType;
37import org.eclipse.linuxtools.internal.lttng2.core.control.model.TraceEnablement;
38import org.eclipse.linuxtools.internal.lttng2.core.control.model.TraceEventType;
39import org.eclipse.linuxtools.internal.lttng2.core.control.model.TraceLogLevel;
40import org.eclipse.linuxtools.internal.lttng2.core.control.model.TraceSessionState;
41import org.eclipse.linuxtools.internal.lttng2.core.control.model.impl.ChannelInfo;
115b4a01
BH
42import org.eclipse.linuxtools.internal.lttng2.stubs.service.CommandShellFactory;
43import org.eclipse.linuxtools.internal.lttng2.stubs.shells.LTTngToolsFileShell;
115b4a01
BH
44import org.eclipse.linuxtools.internal.lttng2.ui.views.control.service.ILttngControlService;
45import org.eclipse.linuxtools.internal.lttng2.ui.views.control.service.LTTngControlService;
276c17e7 46import org.eclipse.linuxtools.internal.lttng2.ui.views.control.service.LTTngControlServiceFactory;
2ba3d0a1
AM
47import org.junit.Before;
48import org.junit.Test;
9269df72 49import org.osgi.framework.FrameworkUtil;
2ba3d0a1 50
eb1bab5b 51/**
2ba3d0a1
AM
52 * The class <code>LTTngControlServiceTest</code> contains test for the class
53 * <code>{@link LTTngControlService}</code>.
eb1bab5b 54 */
cfdb727a 55@SuppressWarnings({"nls", "javadoc"})
2ba3d0a1 56public class LTTngControlServiceTest {
d132bcc7
BH
57
58 private static final String DIRECTORY = "testfiles";
59 private static final String TEST_STREAM = "LTTngServiceTest.cfg";
cfdb727a 60
d132bcc7 61 private static final String SCEN_LTTNG_NOT_INSTALLED = "LttngNotInstalled";
276c17e7 62 private static final String SCEN_LTTNG_VERSION = "LttngVersion";
d6fc6e1b 63 private static final String SCEN_LTTNG_VERSION_WITH_PROMPT = "LttngVersionWithPrompt";
276c17e7
BH
64 private static final String SCEN_LTTNG_UNSUPPORTED_VERSION = "LttngUnsupportedVersion";
65 private static final String SCEN_LTTNG_NO_VERSION = "LttngNoVersion";
d132bcc7
BH
66 private static final String SCEN_NO_SESSION_AVAILABLE = "NoSessionAvailable";
67 private static final String SCEN_GET_SESSION_NAMES1 = "GetSessionNames1";
68 private static final String SCEN_GET_SESSION_NAME_NOT_EXIST = "GetSessionNameNotExist";
69 private static final String SCEN_GET_SESSION_GARBAGE_OUT = "GetSessionGarbageOut";
70 private static final String SCEN_GET_SESSION1 = "GetSession1";
71 private static final String SCEN_GET_KERNEL_PROVIDER1 = "GetKernelProvider1";
a07c7629
BH
72 private static final String SCEN_LIST_WITH_NO_KERNEL1 = "ListWithNoKernel1";
73 private static final String SCEN_LIST_WITH_NO_KERNEL2 = "ListWithNoKernel2";
d132bcc7
BH
74 private static final String SCEN_GET_UST_PROVIDER1 = "GetUstProvider1";
75 private static final String SCEN_GET_UST_PROVIDER2 = "GetUstProvider2";
d4514365 76 private static final String SCEN_GET_UST_PROVIDER3 = "GetUstProvider3";
d132bcc7 77 private static final String SCEN_CREATE_SESSION1 = "CreateSession1";
d6fc6e1b 78 private static final String SCEN_CREATE_SESSION_WITH_PROMPT = "CreateSessionWithPrompt";
d132bcc7
BH
79 private static final String SCEN_CREATE_SESSION_VARIANTS = "CreateSessionVariants";
80 private static final String SCEN_DESTROY_SESSION1 = "DestroySession1";
81 private static final String SCEN_CHANNEL_HANDLING = "ChannelHandling";
82 private static final String SCEN_EVENT_HANDLING = "EventHandling";
4ea599a5
BH
83 private static final String SCEN_CONTEXT_HANDLING = "ContextHandling";
84 private static final String SCEN_CONTEXT_ERROR_HANDLING = "ContextErrorHandling";
85 private static final String SCEN_CALIBRATE_HANDLING = "CalibrateHandling";
d132bcc7 86
eb1bab5b
BH
87 // ------------------------------------------------------------------------
88 // Test data
89 // ------------------------------------------------------------------------
2ba3d0a1 90
d132bcc7
BH
91 private CommandShellFactory fShellFactory;
92 private String fTestfile;
93 private LTTngToolsFileShell fShell;
94 private ILttngControlService fService;
95
eb1bab5b
BH
96 // ------------------------------------------------------------------------
97 // Housekeeping
98 // ------------------------------------------------------------------------
2ba3d0a1 99
eb1bab5b
BH
100 /**
101 * Perform pre-test initialization.
102 *
2ba3d0a1
AM
103 * @throws Exception
104 * if the initialization fails for some reason
eb1bab5b 105 */
2ba3d0a1 106 @Before
eb1bab5b 107 public void setUp() throws Exception {
eb1bab5b 108 fShellFactory = CommandShellFactory.getInstance();
d132bcc7 109
9269df72 110 URL location = FileLocator.find(FrameworkUtil.getBundle(this.getClass()), new Path(DIRECTORY + File.separator + TEST_STREAM), null);
d132bcc7
BH
111 File testfile = new File(FileLocator.toFileURL(location).toURI());
112 fTestfile = testfile.getAbsolutePath();
cfdb727a 113
d132bcc7
BH
114 fShell = fShellFactory.getFileShell();
115 fShell.loadScenarioFile(fTestfile);
116 fService = new LTTngControlService(fShell);
eb1bab5b
BH
117 }
118
eb1bab5b
BH
119 // ------------------------------------------------------------------------
120 // Test Cases
121 // ------------------------------------------------------------------------
cfdb727a 122
2ba3d0a1 123 @Test
276c17e7
BH
124 public void testVersion() {
125 try {
126 fShell.setScenario(SCEN_LTTNG_VERSION);
cfdb727a 127 ILttngControlService service = LTTngControlServiceFactory.getInstance().getLttngControlService(fShell);
276c17e7 128 assertNotNull(service);
cfe737e4 129 assertEquals("2.1.0", service.getVersion());
276c17e7
BH
130 } catch (ExecutionException e) {
131 fail("Exeption thrown " + e);
132 }
133 }
cfdb727a 134
2ba3d0a1 135 @Test
d6fc6e1b
BH
136 public void testVersionWithPrompt() {
137 try {
138 fShell.setScenario(SCEN_LTTNG_VERSION_WITH_PROMPT);
139 ILttngControlService service = LTTngControlServiceFactory.getInstance().getLttngControlService(fShell);
140 assertNotNull(service);
141 assertEquals("2.0.0", service.getVersion());
142 } catch (ExecutionException e) {
143 fail("Exeption thrown " + e);
144 }
145 }
a07c7629 146
2ba3d0a1 147 @Test
276c17e7
BH
148 public void testUnsupportedVersion() {
149 try {
150 fShell.setScenario(SCEN_LTTNG_UNSUPPORTED_VERSION);
cfdb727a 151 LTTngControlServiceFactory.getInstance().getLttngControlService(fShell);
276c17e7
BH
152 fail("No exeption thrown");
153 } catch (ExecutionException e) {
154 // success
155 }
156 }
157
2ba3d0a1 158 @Test
276c17e7
BH
159 public void testNoVersion() {
160 try {
161 fShell.setScenario(SCEN_LTTNG_NO_VERSION);
cfdb727a 162 LTTngControlServiceFactory.getInstance().getLttngControlService(fShell);
276c17e7
BH
163 fail("No exeption thrown");
164 } catch (ExecutionException e) {
165 // success
166 }
167 }
168
2ba3d0a1 169 @Test
276c17e7 170 public void testLttngNotInstalled() {
eb1bab5b 171 try {
d132bcc7
BH
172 fShell.setScenario(SCEN_LTTNG_NOT_INSTALLED);
173 fService.getSessionNames(new NullProgressMonitor());
eb1bab5b 174 fail("No exeption thrown");
eb1bab5b
BH
175 } catch (ExecutionException e) {
176 // success
177 }
178 }
cfdb727a 179
2ba3d0a1 180 @Test
eb1bab5b
BH
181 public void testGetSessionNames1() {
182 try {
d132bcc7
BH
183 fShell.setScenario(SCEN_NO_SESSION_AVAILABLE);
184 String[] result = fService.getSessionNames(new NullProgressMonitor());
eb1bab5b
BH
185
186 assertNotNull(result);
187 assertEquals(0, result.length);
cfdb727a 188
eb1bab5b
BH
189 } catch (ExecutionException e) {
190 fail(e.toString());
191 }
192 }
d132bcc7 193
2ba3d0a1 194 @Test
eb1bab5b
BH
195 public void testGetSessionNames2() {
196 try {
d132bcc7
BH
197 fShell.setScenario(SCEN_GET_SESSION_NAMES1);
198 String[] result = fService.getSessionNames(new NullProgressMonitor());
eb1bab5b
BH
199
200 assertNotNull(result);
201 assertEquals(2, result.length);
202 assertEquals("mysession1", result[0]);
203 assertEquals("mysession", result[1]);
cfdb727a 204
eb1bab5b
BH
205 } catch (ExecutionException e) {
206 fail(e.toString());
207 }
208 }
d132bcc7 209
2ba3d0a1 210 @Test
eb1bab5b
BH
211 public void testGetSessionNotExist() {
212 try {
d132bcc7
BH
213 fShell.setScenario(SCEN_GET_SESSION_NAME_NOT_EXIST);
214 fService.getSessionNames(new NullProgressMonitor());
eb1bab5b 215 fail("No exeption thrown");
cfdb727a 216
eb1bab5b
BH
217 } catch (ExecutionException e) {
218 // success
219 }
220 }
cfdb727a 221
2ba3d0a1 222 @Test
eb1bab5b
BH
223 public void testGetSessionNameGarbage() {
224 try {
d132bcc7
BH
225 fShell.setScenario(SCEN_GET_SESSION_GARBAGE_OUT);
226 String[] result = fService.getSessionNames(new NullProgressMonitor());
eb1bab5b
BH
227
228 assertNotNull(result);
229 assertEquals(0, result.length);
cfdb727a 230
eb1bab5b
BH
231 } catch (ExecutionException e) {
232 fail(e.toString());
233 }
234 }
cfdb727a 235
2ba3d0a1 236 @Test
eb1bab5b
BH
237 public void testGetSession1() {
238 try {
d132bcc7
BH
239 fShell.setScenario(SCEN_GET_SESSION1);
240 ISessionInfo session = fService.getSession("mysession", new NullProgressMonitor());
eb1bab5b
BH
241
242 // Verify Session
243 assertNotNull(session);
244 assertEquals("mysession", session.getName());
245 assertEquals("/home/user/lttng-traces/mysession-20120129-084256", session.getSessionPath());
246 assertEquals(TraceSessionState.ACTIVE, session.getSessionState());
cfdb727a 247
eb1bab5b
BH
248 IDomainInfo[] domains = session.getDomains();
249 assertNotNull(domains);
250 assertEquals(2, domains.length);
cfdb727a 251
eb1bab5b
BH
252 // Verify Kernel domain
253 assertEquals("Kernel", domains[0].getName());
254 IChannelInfo[] channels = domains[0].getChannels();
255 assertNotNull(channels);
256 assertEquals(2, channels.length);
257
cfdb727a 258 // Verify Kernel's channel0
eb1bab5b
BH
259 assertEquals("channel0", channels[0].getName());
260 assertEquals(4, channels[0].getNumberOfSubBuffers());
261 assertEquals("splice()", channels[0].getOutputType());
262 assertEquals(false, channels[0].isOverwriteMode());
263 assertEquals(200, channels[0].getReadTimer());
264 assertEquals(TraceEnablement.ENABLED, channels[0].getState());
265 assertEquals(262144, channels[0].getSubBufferSize());
266 assertEquals(0, channels[0].getSwitchTimer());
cfdb727a 267
eb1bab5b
BH
268 // Verify event info
269 IEventInfo[] channel0Events = channels[0].getEvents();
270 assertNotNull(channel0Events);
271 assertEquals(2, channel0Events.length);
272 assertEquals("block_rq_remap", channel0Events[0].getName());
273 assertEquals(TraceLogLevel.TRACE_EMERG, channel0Events[0].getLogLevel());
274 assertEquals(TraceEventType.TRACEPOINT, channel0Events[0].getEventType());
275 assertEquals(TraceEnablement.ENABLED, channel0Events[0].getState());
cfdb727a 276
eb1bab5b
BH
277 assertEquals("block_bio_remap", channel0Events[1].getName());
278 assertEquals(TraceLogLevel.TRACE_EMERG, channel0Events[1].getLogLevel());
279 assertEquals(TraceEventType.TRACEPOINT, channel0Events[1].getEventType());
280 assertEquals(TraceEnablement.DISABLED, channel0Events[1].getState());
cfdb727a
AM
281
282 // Verify Kernel's channel1
eb1bab5b
BH
283 assertEquals("channel1", channels[1].getName());
284 assertEquals(4, channels[1].getNumberOfSubBuffers());
285 assertEquals("splice()", channels[1].getOutputType());
286 assertEquals(true, channels[1].isOverwriteMode());
287 assertEquals(400, channels[1].getReadTimer());
288 assertEquals(TraceEnablement.DISABLED, channels[1].getState());
289 assertEquals(524288, channels[1].getSubBufferSize());
290 assertEquals(100, channels[1].getSwitchTimer());
cfdb727a 291
eb1bab5b
BH
292 // Verify event info
293 IEventInfo[] channel1Events = channels[1].getEvents();
294 assertEquals(0, channel1Events.length);
cfdb727a 295
eb1bab5b
BH
296 // Verify domain UST global
297 assertEquals("UST global", domains[1].getName());
cfdb727a 298
eb1bab5b 299 IChannelInfo[] ustChannels = domains[1].getChannels();
cfdb727a
AM
300
301 // Verify UST global's mychannel1
eb1bab5b
BH
302 assertEquals("mychannel1", ustChannels[0].getName());
303 assertEquals(8, ustChannels[0].getNumberOfSubBuffers());
304 assertEquals("mmap()", ustChannels[0].getOutputType());
305 assertEquals(true, ustChannels[0].isOverwriteMode());
306 assertEquals(100, ustChannels[0].getReadTimer());
307 assertEquals(TraceEnablement.DISABLED, ustChannels[0].getState());
308 assertEquals(8192, ustChannels[0].getSubBufferSize());
309 assertEquals(200, ustChannels[0].getSwitchTimer());
cfdb727a 310
eb1bab5b
BH
311 // Verify event info
312 IEventInfo[] ustEvents = ustChannels[0].getEvents();
313 assertEquals(0, ustEvents.length);
314
cfdb727a 315 // Verify UST global's channel0
eb1bab5b
BH
316 assertEquals("channel0", ustChannels[1].getName());
317 assertEquals(4, ustChannels[1].getNumberOfSubBuffers());
318 assertEquals("mmap()", ustChannels[1].getOutputType());
319 assertEquals(false, ustChannels[1].isOverwriteMode());
320 assertEquals(200, ustChannels[1].getReadTimer());
321 assertEquals(TraceEnablement.ENABLED, ustChannels[1].getState());
322 assertEquals(4096, ustChannels[1].getSubBufferSize());
323 assertEquals(0, ustChannels[1].getSwitchTimer());
cfdb727a 324
eb1bab5b
BH
325 // Verify event info
326 ustEvents = ustChannels[1].getEvents();
327 assertEquals(2, ustEvents.length);
cfdb727a 328
eb1bab5b 329 assertEquals("ust_tests_hello:tptest_sighandler", ustEvents[0].getName());
4775bcbf 330 assertEquals(TraceLogLevel.TRACE_DEBUG_LINE, ustEvents[0].getLogLevel());
eb1bab5b
BH
331 assertEquals(TraceEventType.TRACEPOINT, ustEvents[0].getEventType());
332 assertEquals(TraceEnablement.DISABLED, ustEvents[0].getState());
cfdb727a 333
eb1bab5b 334 assertEquals("*", ustEvents[1].getName());
4775bcbf 335 assertEquals(TraceLogLevel.LEVEL_UNKNOWN, ustEvents[1].getLogLevel());
eb1bab5b
BH
336 assertEquals(TraceEventType.TRACEPOINT, ustEvents[1].getEventType());
337 assertEquals(TraceEnablement.ENABLED, ustEvents[1].getState());
cfdb727a 338
eb1bab5b 339 // next session (no detailed information available)
d132bcc7 340 session = fService.getSession("mysession1", new NullProgressMonitor());
eb1bab5b
BH
341 assertNotNull(session);
342 assertEquals("mysession1", session.getName());
343 assertEquals("/home/user/lttng-traces/mysession1-20120203-133225", session.getSessionPath());
344 assertEquals(TraceSessionState.INACTIVE, session.getSessionState());
cfdb727a 345
eb1bab5b
BH
346 domains = session.getDomains();
347 assertNotNull(domains);
348 assertEquals(0, domains.length);
349 } catch (ExecutionException e) {
350 fail(e.toString());
351 }
352 }
353
354 public void testGetKernelProvider() {
355 try {
d132bcc7
BH
356 fShell.setScenario(SCEN_GET_KERNEL_PROVIDER1);
357 List<IBaseEventInfo> events = fService.getKernelProvider(new NullProgressMonitor());
eb1bab5b
BH
358
359 // Verify event info
360 assertNotNull(events);
361 assertEquals(3, events.size());
cfdb727a
AM
362
363 IBaseEventInfo baseEventInfo = events.get(0);
eb1bab5b
BH
364 assertNotNull(baseEventInfo);
365 assertEquals("sched_kthread_stop", baseEventInfo.getName());
366 assertEquals(TraceLogLevel.TRACE_EMERG, baseEventInfo.getLogLevel());
367 assertEquals(TraceEventType.TRACEPOINT, baseEventInfo.getEventType());
cfdb727a
AM
368
369 baseEventInfo = events.get(1);
eb1bab5b
BH
370 assertEquals("sched_kthread_stop_ret", baseEventInfo.getName());
371 assertEquals(TraceLogLevel.TRACE_EMERG, baseEventInfo.getLogLevel());
372 assertEquals(TraceEventType.TRACEPOINT, baseEventInfo.getEventType());
cfdb727a
AM
373
374 baseEventInfo = events.get(2);
eb1bab5b
BH
375 assertEquals("sched_wakeup_new", baseEventInfo.getName());
376 assertEquals(TraceLogLevel.TRACE_EMERG, baseEventInfo.getLogLevel());
377 assertEquals(TraceEventType.TRACEPOINT, baseEventInfo.getEventType());
378
379 } catch (ExecutionException e) {
380 fail(e.toString());
381 }
382 }
383
2ba3d0a1 384 @Test
a07c7629
BH
385 public void testGetKernelProviderNoKernel1() {
386 try {
387 fShell.setScenario(SCEN_LIST_WITH_NO_KERNEL1);
388 List<IBaseEventInfo> events = fService.getKernelProvider(new NullProgressMonitor());
389
390 // Verify event info
391 assertNotNull(events);
392 assertEquals(0, events.size());
393
394 } catch (ExecutionException e) {
395 fail(e.toString());
396 }
397 }
398
2ba3d0a1 399 @Test
a07c7629
BH
400 public void testGetKernelProviderNoKernel2() {
401 try {
402 fShell.setScenario(SCEN_LIST_WITH_NO_KERNEL2);
403 List<IBaseEventInfo> events = fService.getKernelProvider(new NullProgressMonitor());
404
405 // Verify event info
406 assertNotNull(events);
407 assertEquals(0, events.size());
408
409 } catch (ExecutionException e) {
410 fail(e.toString());
411 }
412 }
413
2ba3d0a1 414 @Test
eb1bab5b
BH
415 public void testGetUstProvider() {
416 try {
d132bcc7
BH
417 fShell.setScenario(SCEN_GET_UST_PROVIDER1);
418 List<IUstProviderInfo> providers = fService.getUstProvider();
eb1bab5b
BH
419
420 // Check all providers
421 assertNotNull(providers);
422 assertEquals(2, providers.size());
cfdb727a 423
eb1bab5b
BH
424 //Verify first provider
425 assertEquals("/home/user/git/lttng-ust/tests/hello.cxx/.libs/lt-hello", providers.get(0).getName());
426 assertEquals(9379, providers.get(0).getPid());
cfdb727a 427
eb1bab5b
BH
428 // Verify event info
429 IBaseEventInfo[] events = providers.get(0).getEvents();
430 assertNotNull(events);
431 assertEquals(2, events.length);
432
cfdb727a 433 IBaseEventInfo baseEventInfo = events[0];
eb1bab5b
BH
434 assertNotNull(baseEventInfo);
435 assertEquals("ust_tests_hello:tptest_sighandler", baseEventInfo.getName());
4775bcbf 436 assertEquals(TraceLogLevel.TRACE_DEBUG_MODULE, baseEventInfo.getLogLevel());
eb1bab5b 437 assertEquals(TraceEventType.TRACEPOINT, baseEventInfo.getEventType());
cfdb727a
AM
438
439 baseEventInfo = events[1];
eb1bab5b
BH
440 assertEquals("ust_tests_hello:tptest", baseEventInfo.getName());
441 assertEquals(TraceLogLevel.TRACE_INFO, baseEventInfo.getLogLevel());
442 assertEquals(TraceEventType.TRACEPOINT, baseEventInfo.getEventType());
443
444 //Verify second provider
445 assertEquals("/home/user/git/lttng-ust/tests/hello.cxx/.libs/lt-hello", providers.get(1).getName());
446 assertEquals(4852, providers.get(1).getPid());
cfdb727a 447
eb1bab5b
BH
448 // Verify event info
449 events = providers.get(1).getEvents();
450 assertNotNull(events);
451 assertEquals(2, events.length);
452
cfdb727a 453 baseEventInfo = events[0];
eb1bab5b
BH
454 assertNotNull(baseEventInfo);
455 assertEquals("ust_tests_hello:tptest_sighandler", baseEventInfo.getName());
456 assertEquals(TraceLogLevel.TRACE_WARNING, baseEventInfo.getLogLevel());
457 assertEquals(TraceEventType.TRACEPOINT, baseEventInfo.getEventType());
cfdb727a
AM
458
459 baseEventInfo = events[1];
eb1bab5b 460 assertEquals("ust_tests_hello:tptest", baseEventInfo.getName());
4775bcbf 461 assertEquals(TraceLogLevel.TRACE_DEBUG_FUNCTION, baseEventInfo.getLogLevel());
eb1bab5b
BH
462 assertEquals(TraceEventType.TRACEPOINT, baseEventInfo.getEventType());
463
464 } catch (ExecutionException e) {
465 fail(e.toString());
466 }
467 }
d132bcc7 468
2ba3d0a1 469 @Test
eb1bab5b
BH
470 public void testUstProvider2() {
471 try {
d132bcc7
BH
472 fShell.setScenario(SCEN_GET_UST_PROVIDER2);
473 List<IUstProviderInfo> providers = fService.getUstProvider();
eb1bab5b
BH
474
475 assertNotNull(providers);
476 assertEquals(0, providers.size());
cfdb727a 477
eb1bab5b
BH
478 } catch (ExecutionException e) {
479 fail(e.toString());
480 }
481 }
d132bcc7 482
2ba3d0a1 483 @Test
d4514365
BH
484 public void testGetUstProvider3() {
485 try {
486 fShell.setScenario(SCEN_GET_UST_PROVIDER3);
487 // Set version
488 ((LTTngControlService)fService).setVersion("2.1.0");
489 List<IUstProviderInfo> providers = fService.getUstProvider();
490
491 // Check all providers
492 assertNotNull(providers);
493 assertEquals(2, providers.size());
494
495 //Verify first provider
496 assertEquals("/home/user/git/lttng-ust/tests/hello.cxx/.libs/lt-hello", providers.get(0).getName());
497 assertEquals(9379, providers.get(0).getPid());
498
499 // Verify event info
500 IBaseEventInfo[] events = providers.get(0).getEvents();
501 assertNotNull(events);
502 assertEquals(2, events.length);
503
504 IBaseEventInfo baseEventInfo = events[0];
505 assertNotNull(baseEventInfo);
506 IFieldInfo[] fields = baseEventInfo.getFields();
507 assertNotNull(fields);
508 assertEquals(0, fields.length);
509
510 baseEventInfo = events[1];
511 fields = baseEventInfo.getFields();
512 assertNotNull(fields);
513 assertEquals(3, fields.length);
514 assertEquals("doublefield", fields[0].getName());
515 assertEquals("float", fields[0].getFieldType());
516
517 assertEquals("floatfield", fields[1].getName());
518 assertEquals("float", fields[1].getFieldType());
519
520 assertEquals("stringfield", fields[2].getName());
521 assertEquals("string", fields[2].getFieldType());
522
523 //Verify second provider
524 assertEquals("/home/user/git/lttng-ust/tests/hello.cxx/.libs/lt-hello", providers.get(1).getName());
525 assertEquals(4852, providers.get(1).getPid());
526
527 // Verify event info
528 events = providers.get(1).getEvents();
529 assertNotNull(events);
530 assertEquals(2, events.length);
531
532 baseEventInfo = events[0];
533 assertNotNull(baseEventInfo);
534 fields = baseEventInfo.getFields();
535 assertNotNull(fields);
536 assertEquals(0, fields.length);
537
538 baseEventInfo = events[1];
539 fields = baseEventInfo.getFields();
540 assertNotNull(fields);
541 assertEquals(3, fields.length);
542
543 assertEquals("doublefield", fields[0].getName());
544 assertEquals("float", fields[0].getFieldType());
545
546 assertEquals("floatfield", fields[1].getName());
547 assertEquals("float", fields[1].getFieldType());
548
549 assertEquals("stringfield", fields[2].getName());
550 assertEquals("string", fields[2].getFieldType());
551
552 // Reset version
553 ((LTTngControlService)fService).setVersion("2.0.0");
554
555 } catch (ExecutionException e) {
556 fail(e.toString());
557 }
558 }
559
2ba3d0a1 560 @Test
bbb3538a
BH
561 public void testCreateSession() {
562 try {
d132bcc7
BH
563 fShell.setScenario(SCEN_CREATE_SESSION1);
564
565 ISessionInfo info = fService.createSession("mysession2", null, new NullProgressMonitor());
bbb3538a
BH
566 assertNotNull(info);
567 assertEquals("mysession2", info.getName());
568 assertNotNull(info.getSessionPath());
569 assertTrue(info.getSessionPath().contains("mysession2"));
570 assertEquals(TraceSessionState.INACTIVE, info.getSessionState());
571 } catch (ExecutionException e) {
572 fail(e.toString());
573 }
574 }
d132bcc7 575
2ba3d0a1 576 @Test
d6fc6e1b
BH
577 public void testCreateSessionWithPrompt() {
578 try {
a07c7629 579 // First line has the shell prompt before the command output
d6fc6e1b
BH
580 // This can happen in a real application if the command line is not echoed by the shell.
581 fShell.setScenario(SCEN_CREATE_SESSION_WITH_PROMPT);
582
583 // First line has no shell prompt before the output
584 ISessionInfo info = fService.createSession("mysession2", null, new NullProgressMonitor());
585 assertNotNull(info);
586 assertEquals("mysession2", info.getName());
587 assertNotNull(info.getSessionPath());
588 assertTrue(info.getSessionPath().contains("mysession2"));
589 assertEquals(TraceSessionState.INACTIVE, info.getSessionState());
590 } catch (ExecutionException e) {
591 fail(e.toString());
592 }
593 }
594
2ba3d0a1 595 @Test
d132bcc7
BH
596 public void testCreateSessionVariants() {
597
598 fShell.setScenario(SCEN_CREATE_SESSION_VARIANTS);
599
bbb3538a 600 try {
d132bcc7 601 fService.createSession("alreadyExist", null, new NullProgressMonitor());
bbb3538a
BH
602 fail("No exeption thrown");
603 } catch (ExecutionException e) {
604 // success
605 }
cfdb727a 606
bbb3538a 607 try {
d132bcc7 608 fService.createSession("wrongName", null, new NullProgressMonitor());
bbb3538a
BH
609 fail("No exeption thrown");
610 } catch (ExecutionException e) {
611 // success
cfdb727a 612 }
bbb3538a
BH
613
614 try {
d132bcc7 615 fService.createSession("withPath", "/home/user/hallo", new NullProgressMonitor());
bbb3538a
BH
616 fail("No exeption thrown");
617 } catch (ExecutionException e) {
618 // success
cfdb727a 619 }
bbb3538a
BH
620
621 try {
d132bcc7 622 ISessionInfo info = fService.createSession("session with spaces", null, new NullProgressMonitor());
bbb3538a
BH
623 assertNotNull(info);
624 assertEquals("session with spaces", info.getName());
625 assertNotNull(info.getSessionPath());
626 assertTrue(info.getSessionPath().contains("session with spaces"));
627 assertEquals(TraceSessionState.INACTIVE, info.getSessionState());
cfdb727a 628
bbb3538a
BH
629 } catch (ExecutionException e) {
630 fail(e.toString());
cfdb727a 631 }
bbb3538a
BH
632
633 try {
d132bcc7 634 ISessionInfo info = fService.createSession("pathWithSpaces", "/home/user/hallo user/here", new NullProgressMonitor());
bbb3538a
BH
635 assertNotNull(info);
636 assertEquals("pathWithSpaces", info.getName());
637 assertNotNull(info.getSessionPath());
638 assertTrue(info.getSessionPath().contains("/home/user/hallo user/here"));
639 assertEquals(TraceSessionState.INACTIVE, info.getSessionState());
cfdb727a 640
bbb3538a
BH
641 } catch (ExecutionException e) {
642 fail(e.toString());
cfdb727a 643 }
bbb3538a
BH
644 }
645
2ba3d0a1 646 @Test
9d8a90ad 647 public void testDestroySession() {
bbb3538a 648 try {
d132bcc7
BH
649 fShell.setScenario(SCEN_DESTROY_SESSION1);
650 fService.destroySession("mysession2", new NullProgressMonitor());
bbb3538a
BH
651 } catch (ExecutionException e) {
652 fail(e.toString());
cfdb727a 653 }
bbb3538a 654 }
d132bcc7 655
2ba3d0a1 656 @Test
d132bcc7
BH
657 public void testCreateChannel() {
658 try {
659
660 String sessionName = "mysession2";
661 List<String> list = new ArrayList<String>();
662 String kernelChannel0 = "mychannel0";
663 String kernelChannel1 = "mychannel1";
664 list.add(kernelChannel0);
665 list.add(kernelChannel1);
cfdb727a 666
d132bcc7 667 fShell.setScenario(SCEN_CHANNEL_HANDLING);
cfdb727a 668
d132bcc7
BH
669 // Create/enable/configure 2 kernel channels
670 ChannelInfo chanInfo = new ChannelInfo("");
671 chanInfo.setOverwriteMode(true);
672 chanInfo.setSubBufferSize(16384);
673 chanInfo.setReadTimer(100);
674 chanInfo.setSwitchTimer(200);
675 chanInfo.setNumberOfSubBuffers(2);
676 fService.enableChannels(sessionName, list, true, chanInfo, new NullProgressMonitor());
cfdb727a 677
d132bcc7
BH
678 // Create/enable/configure 1 UST channel
679 list.clear();
680 list.add("ustChannel");
cfdb727a 681
d132bcc7
BH
682 chanInfo = new ChannelInfo("");
683 chanInfo.setOverwriteMode(true);
684 chanInfo.setSubBufferSize(32768);
685 chanInfo.setReadTimer(200);
686 chanInfo.setSwitchTimer(100);
687 chanInfo.setNumberOfSubBuffers(1);
688 fService.enableChannels(sessionName, list, false, chanInfo, new NullProgressMonitor());
689
690 } catch (ExecutionException e) {
691 fail(e.toString());
692 }
693 }
694
2ba3d0a1 695 @Test
d132bcc7
BH
696 public void testDisableChannel() {
697 try {
698
699 String sessionName = "mysession2";
700 List<String> list = new ArrayList<String>();
701 String kernelChannel0 = "mychannel0";
702 String kernelChannel1 = "mychannel1";
703 list.add(kernelChannel0);
704 list.add(kernelChannel1);
cfdb727a 705
d132bcc7
BH
706 fShell.setScenario(SCEN_CHANNEL_HANDLING);
707 fService.disableChannels(sessionName, list, true, new NullProgressMonitor());
cfdb727a 708
d132bcc7
BH
709 list.clear();
710 list.add("ustChannel");
711 fService.disableChannels(sessionName, list, false, new NullProgressMonitor());
712
713 } catch (ExecutionException e) {
714 fail(e.toString());
715 }
716 }
cfdb727a 717
2ba3d0a1 718 @Test
d132bcc7
BH
719 public void testEnableChannel() {
720 try {
721
722 String sessionName = "mysession2";
723 List<String> list = new ArrayList<String>();
724 String kernelChannel0 = "mychannel0";
725 String kernelChannel1 = "mychannel1";
726 list.add(kernelChannel0);
727 list.add(kernelChannel1);
cfdb727a 728
d132bcc7
BH
729 fShell.setScenario(SCEN_CHANNEL_HANDLING);
730 fService.enableChannels(sessionName, list, true, null, new NullProgressMonitor());
cfdb727a 731
d132bcc7
BH
732 // Create/enable/configure 1 UST channel
733 list.clear();
734 list.add("ustChannel");
cfdb727a 735
d132bcc7
BH
736 fService.enableChannels(sessionName, list, false, null, new NullProgressMonitor());
737
738 } catch (ExecutionException e) {
739 fail(e.toString());
740 }
741 }
cfdb727a 742
d132bcc7 743// public void tesEnableChannelNoTracer() {
bbb3538a 744// try {
d132bcc7
BH
745// ILttngControlService service = new LTTngControlService(fShellFactory.getShellForChannelNoTracer());
746// service.getSessionNames(new NullProgressMonitor());
747// fail("No exeption thrown");
cfdb727a 748//
bbb3538a 749// } catch (ExecutionException e) {
d132bcc7 750// // success
bbb3538a 751// }
cfdb727a
AM
752// }
753
2ba3d0a1 754 @Test
d132bcc7
BH
755 public void testEnableEvents() {
756 try {
757 // 1) session name, channel = null, 3 event names, kernel
758 String sessionName = "mysession2";
759 List<String> list = new ArrayList<String>();
760 String eventName0 = "block_rq_remap";
761 String eventName1 = "block_bio_remap";
762 String eventName2 = "softirq_entry";
763 list.add(eventName0);
764 list.add(eventName1);
765 list.add(eventName2);
766 fShell.setScenario(SCEN_EVENT_HANDLING);
d4514365 767 fService.enableEvents(sessionName, null, list, true, null, new NullProgressMonitor());
cfdb727a 768
d132bcc7
BH
769 // 2) session name, channel=mychannel, event name= null, kernel
770 String channelName = "mychannel";
d4514365 771 fService.enableEvents(sessionName, channelName, null, true, null, new NullProgressMonitor());
bbb3538a 772
d4514365 773 // 3) session name, channel=mychannel, 1 event name, ust, no filter
d132bcc7
BH
774 String ustEventName = "ust_tests_hello:tptest_sighandler";
775 list.clear();
776 list.add(ustEventName);
d4514365 777 fService.enableEvents(sessionName, channelName, list, false, null, new NullProgressMonitor());
cfdb727a 778
d4514365
BH
779 // 4) session name, channel = mychannel, no event name, ust, with filter
780 fService.enableEvents(sessionName, channelName, list, false, "intfield==10", new NullProgressMonitor());
781
782 // 5) session name, channel = mychannel, no event name, ust, no filter
d132bcc7 783 list.clear();
d4514365
BH
784 fService.enableEvents(sessionName, channelName, list, false, null, new NullProgressMonitor());
785
786 // TODO add test with filters
cfdb727a 787
d132bcc7
BH
788 } catch (ExecutionException e) {
789 fail(e.toString());
790 }
791 }
cfdb727a 792
2ba3d0a1 793 @Test
d132bcc7
BH
794 public void testEnableSyscalls() {
795 try {
796 // 1) session name, channel = null, 3 event names, kernel
797 String sessionName = "mysession2";
798 String channelName = "mychannel";
cfdb727a 799
d132bcc7
BH
800 fShell.setScenario(SCEN_EVENT_HANDLING);
801
cfdb727a 802 // 1) session name, channel = null
d132bcc7
BH
803 fService.enableSyscalls(sessionName, null, new NullProgressMonitor());
804
805 // 2) session name, channel = mychannel
806 fService.enableSyscalls(sessionName, channelName, new NullProgressMonitor());
cfdb727a 807
d132bcc7
BH
808 } catch (ExecutionException e) {
809 fail(e.toString());
810 }
811 }
812
2ba3d0a1 813 @Test
d132bcc7
BH
814 public void testDynamicProbe() {
815 try {
816 // 1) session name, channel = null, 3 event names, kernel
817 String sessionName = "mysession2";
818 String channelName = "mychannel";
819 String eventName0 = "myevent0";
820 String eventName1 = "myevent1";
821 String functionProbe = "0xc0101340";
822 String dynProbe = "init_post";
cfdb727a 823
d132bcc7
BH
824 fShell.setScenario(SCEN_EVENT_HANDLING);
825
cfdb727a 826 // 1) session name, channel = null, event name, function probe, probe
d132bcc7
BH
827 fService.enableProbe(sessionName, null, eventName0, true, functionProbe, new NullProgressMonitor());
828
829 // 2) session name, channel = mychannel
830 fService.enableProbe(sessionName, channelName, eventName1, false, dynProbe, new NullProgressMonitor());
cfdb727a 831
d132bcc7
BH
832 } catch (ExecutionException e) {
833 fail(e.toString());
834 }
835 }
836
2ba3d0a1 837 @Test
d132bcc7
BH
838 public void testEnableLogLevel() {
839 try {
840 // 1) session name, channel = null, 3 event names, kernel
841 String sessionName = "mysession2";
842 String channelName = "mychannel";
843 String eventName4 = "myevent4";
844 String eventName5 = "myevent5";
cfdb727a 845
d132bcc7 846 fShell.setScenario(SCEN_EVENT_HANDLING);
cfdb727a 847
d132bcc7 848 // 1) session name, channel = null, event name, loglevel-only, TRACE_DEBUG
d4514365 849 fService.enableLogLevel(sessionName, null, eventName4, LogLevelType.LOGLEVEL_ONLY, TraceLogLevel.TRACE_DEBUG, null, new NullProgressMonitor());
d132bcc7
BH
850
851 // 2) session name, channel = mychannel, null, loglevel, TRACE_DEBUG_FUNCTION
d4514365
BH
852 fService.enableLogLevel(sessionName, channelName, eventName5, LogLevelType.LOGLEVEL, TraceLogLevel.TRACE_DEBUG_FUNCTION, null, new NullProgressMonitor());
853
854 // TODO add test with filters
d132bcc7
BH
855
856 } catch (ExecutionException e) {
857 fail(e.toString());
858 }
859 }
cfdb727a 860
2ba3d0a1 861 @Test
4ea599a5
BH
862 public void testAddContext() {
863 try {
864 // 1) session name, channel = null, 3 event names, kernel
865 String sessionName = "mysession2";
866 String channelName = "mychannel";
867 String eventName = "ust_tests_hello:tptest_sighandler";
868 List<String> contexts = new ArrayList<String>();
869 contexts.add("prio");
870 contexts.add("pid");
871
872 fShell.setScenario(SCEN_CONTEXT_HANDLING);
873
874 List<String> availContexts = fService.getContextList(new NullProgressMonitor());
875 assertNotNull(availContexts);
876 assertEquals(12, availContexts.size());
877
cfdb727a 878 // A very "hard-coded" way to verify but it works ...
4ea599a5
BH
879 Set<String> expectedContexts = new HashSet<String>();
880 expectedContexts.add("pid");
881 expectedContexts.add("procname");
882 expectedContexts.add("prio");
883 expectedContexts.add("nice");
884 expectedContexts.add("vpid");
885 expectedContexts.add("tid");
886 expectedContexts.add("pthread_id");
887 expectedContexts.add("vtid");
888 expectedContexts.add("ppid");
889 expectedContexts.add("vppid");
890 expectedContexts.add("perf:cpu-cycles");
891 expectedContexts.add("perf:cycles");
cfdb727a 892
4ea599a5 893 assertTrue(expectedContexts.containsAll(availContexts));
cfdb727a 894
4ea599a5
BH
895 // 1) session name, channel = null, event name, loglevel-only, TRACE_DEBUG
896 fService.addContexts(sessionName, channelName, eventName, false, contexts, new NullProgressMonitor());
897
898 } catch (ExecutionException e) {
899 fail(e.toString());
900 }
901 }
902
2ba3d0a1 903 @Test
4ea599a5
BH
904 public void testAddContextFailure() {
905
906 // 1) session name, channel = null, 3 event names, kernel
907 String sessionName = "mysession2";
908 String channelName = "mychannel";
909 String eventName = "ust_tests_hello:tptest_sighandler";
910 List<String> contexts = new ArrayList<String>();
911 contexts.add("prio");
912 contexts.add("pid");
913 fShell.setScenario(SCEN_CONTEXT_ERROR_HANDLING);
914 try {
915 fService.getContextList(new NullProgressMonitor());
916 fail("No exeption generated");
917 } catch (ExecutionException e) {
918 // success
cfdb727a 919 }
4ea599a5
BH
920 try {
921 // 1) session name, channel = null, event name, loglevel-only, TRACE_DEBUG
922 fService.addContexts(sessionName, channelName, eventName, false, contexts, new NullProgressMonitor());
923 fail("No exeption generated");
924 } catch (ExecutionException e) {
925 // success
cfdb727a 926 }
4ea599a5
BH
927 }
928
2ba3d0a1 929 @Test
4ea599a5
BH
930 public void testCalibrate() {
931 try {
932 fShell.setScenario(SCEN_CALIBRATE_HANDLING);
933 fService.calibrate(true, new NullProgressMonitor());
934
935 } catch (ExecutionException e) {
936 fail(e.toString());
937 }
938 }
939
2ba3d0a1 940 @Test
4ea599a5 941 public void testCalibrateFailure() {
4ea599a5
BH
942 try {
943 fShell.setScenario(SCEN_CALIBRATE_HANDLING);
944 fService.calibrate(false, new NullProgressMonitor());
945 fail("No exeption generated");
946 } catch (ExecutionException e) {
947 // success
cfdb727a 948 }
4ea599a5 949 }
cfdb727a 950
eb1bab5b 951}
This page took 0.084453 seconds and 5 git commands to generate.