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