1 /**********************************************************************
2 * Copyright (c) 2012, 2015 Ericsson
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
10 * Bernd Hufmann - Initial API and implementation
11 * Alexandre Montplaisir - Port to JUnit4
12 * Marc-Andre Laperle - Support for creating a live session
13 **********************************************************************/
15 package org
.eclipse
.tracecompass
.lttng2
.control
.ui
.tests
.service
;
17 import static org
.junit
.Assert
.assertEquals
;
18 import static org
.junit
.Assert
.assertFalse
;
19 import static org
.junit
.Assert
.assertNotNull
;
20 import static org
.junit
.Assert
.assertTrue
;
21 import static org
.junit
.Assert
.fail
;
25 import java
.util
.ArrayList
;
26 import java
.util
.HashSet
;
27 import java
.util
.List
;
30 import org
.eclipse
.core
.commands
.ExecutionException
;
31 import org
.eclipse
.core
.runtime
.FileLocator
;
32 import org
.eclipse
.core
.runtime
.NullProgressMonitor
;
33 import org
.eclipse
.core
.runtime
.Path
;
34 import org
.eclipse
.jdt
.annotation
.NonNull
;
35 import org
.eclipse
.tracecompass
.internal
.lttng2
.control
.core
.model
.IBaseEventInfo
;
36 import org
.eclipse
.tracecompass
.internal
.lttng2
.control
.core
.model
.IChannelInfo
;
37 import org
.eclipse
.tracecompass
.internal
.lttng2
.control
.core
.model
.IDomainInfo
;
38 import org
.eclipse
.tracecompass
.internal
.lttng2
.control
.core
.model
.IEventInfo
;
39 import org
.eclipse
.tracecompass
.internal
.lttng2
.control
.core
.model
.IFieldInfo
;
40 import org
.eclipse
.tracecompass
.internal
.lttng2
.control
.core
.model
.ISessionInfo
;
41 import org
.eclipse
.tracecompass
.internal
.lttng2
.control
.core
.model
.ISnapshotInfo
;
42 import org
.eclipse
.tracecompass
.internal
.lttng2
.control
.core
.model
.IUstProviderInfo
;
43 import org
.eclipse
.tracecompass
.internal
.lttng2
.control
.core
.model
.LogLevelType
;
44 import org
.eclipse
.tracecompass
.internal
.lttng2
.control
.core
.model
.TraceChannelOutputType
;
45 import org
.eclipse
.tracecompass
.internal
.lttng2
.control
.core
.model
.TraceEnablement
;
46 import org
.eclipse
.tracecompass
.internal
.lttng2
.control
.core
.model
.TraceEventType
;
47 import org
.eclipse
.tracecompass
.internal
.lttng2
.control
.core
.model
.TraceLogLevel
;
48 import org
.eclipse
.tracecompass
.internal
.lttng2
.control
.core
.model
.TraceSessionState
;
49 import org
.eclipse
.tracecompass
.internal
.lttng2
.control
.core
.model
.impl
.BufferType
;
50 import org
.eclipse
.tracecompass
.internal
.lttng2
.control
.core
.model
.impl
.ChannelInfo
;
51 import org
.eclipse
.tracecompass
.internal
.lttng2
.control
.core
.model
.impl
.SessionInfo
;
52 import org
.eclipse
.tracecompass
.internal
.lttng2
.control
.stubs
.shells
.LTTngToolsFileShell
;
53 import org
.eclipse
.tracecompass
.internal
.lttng2
.control
.ui
.Activator
;
54 import org
.eclipse
.tracecompass
.internal
.lttng2
.control
.ui
.views
.logging
.ControlCommandLogger
;
55 import org
.eclipse
.tracecompass
.internal
.lttng2
.control
.ui
.views
.preferences
.ControlPreferences
;
56 import org
.eclipse
.tracecompass
.internal
.lttng2
.control
.ui
.views
.service
.ILttngControlService
;
57 import org
.eclipse
.tracecompass
.internal
.lttng2
.control
.ui
.views
.service
.LTTngControlService
;
58 import org
.eclipse
.tracecompass
.internal
.lttng2
.control
.ui
.views
.service
.LTTngControlServiceFactory
;
59 import org
.junit
.After
;
60 import org
.junit
.Before
;
61 import org
.junit
.Test
;
62 import org
.osgi
.framework
.FrameworkUtil
;
65 * The class <code>LTTngControlServiceTest</code> contains test for the class
66 * <code>{@link LTTngControlService}</code>.
68 @SuppressWarnings("javadoc")
69 public class LTTngControlServiceTest
{
71 private static final String DIRECTORY
= "testfiles";
72 private static final String TEST_STREAM
= "LTTngServiceTest.cfg";
74 private static final String SCEN_LTTNG_NOT_INSTALLED
= "LttngNotInstalled";
75 private static final String SCEN_LTTNG_VERSION
= "LttngVersion";
76 private static final String SCEN_LTTNG_VERSION_WITH_PROMPT
= "LttngVersionWithPrompt";
77 private static final String SCEN_LTTNG_UNSUPPORTED_VERSION
= "LttngUnsupportedVersion";
78 private static final String SCEN_LTTNG_NO_VERSION
= "LttngNoVersion";
79 private static final String SCEN_LTTNG_COMPILED_VERSION
= "LttngVersionCompiled";
80 private static final String SCEN_NO_SESSION_AVAILABLE
= "NoSessionAvailable";
81 private static final String SCEN_GET_SESSION_NAMES1
= "GetSessionNames1";
82 private static final String SCEN_GET_SESSION_WITH_GROUP
= "GetSessionWithTracingGroup";
83 private static final String SCEN_GET_SESSION_NAME_NOT_EXIST
= "GetSessionNameNotExist";
84 private static final String SCEN_GET_SESSION_NAME_NOT_EXIST_VERBOSE
= "GetSessionNameNotExistVerbose";
85 protected static final String SCEN_GET_SESSION_GARBAGE_OUT
= "GetSessionGarbageOut";
86 private static final String SCEN_GET_SESSION1
= "GetSession1";
87 private static final String SCEN_GET_SESSION_WITH_LIVE
= "GetSessionWithLiveInterval";
88 private static final String SCEN_GET_KERNEL_PROVIDER1
= "GetKernelProvider1";
89 private static final String SCEN_LIST_WITH_NO_KERNEL1
= "ListWithNoKernel1";
90 private static final String SCEN_LIST_WITH_NO_KERNEL2
= "ListWithNoKernel2";
91 private static final String SCEN_LIST_WITH_NO_KERNEL_VERBOSE
= "ListWithNoKernelVerbose";
92 private static final String SCEN_GET_UST_PROVIDER1
= "GetUstProvider1";
93 private static final String SCEN_GET_UST_PROVIDER2
= "GetUstProvider2";
94 private static final String SCEN_GET_UST_PROVIDER3
= "GetUstProvider3";
95 private static final String SCEN_LIST_WITH_NO_UST1
= "ListWithNoUst1";
96 private static final String SCEN_LIST_WITH_NO_UST2
= "ListWithNoUst2";
97 private static final String SCEN_LIST_WITH_NO_UST3
= "ListWithNoUst3";
98 private static final String SCEN_LIST_WITH_NO_UST_VERBOSE
= "ListWithNoUstVerbose";
99 private static final String SCEN_CREATE_SESSION1
= "CreateSession1";
100 private static final String SCEN_CREATE_SESSION_WITH_PROMPT
= "CreateSessionWithPrompt";
101 private static final String SCEN_CREATE_SESSION_VARIANTS
= "CreateSessionVariants";
102 private static final String SCEN_DESTROY_SESSION1
= "DestroySession1";
103 private static final String SCEN_DESTROY_SESSION_VERBOSE
= "DestroySessionVerbose";
104 private static final String SCEN_CHANNEL_HANDLING
= "ChannelHandling";
105 private static final String SCEN_EVENT_HANDLING
= "EventHandling";
106 private static final String SCEN_CONTEXT_HANDLING
= "ContextHandling";
107 private static final String SCEN_CONTEXT_ERROR_HANDLING
= "ContextErrorHandling";
108 private static final String SCEN_CALIBRATE_HANDLING
= "CalibrateHandling";
109 private static final String SCEN_CREATE_SESSION_2_1
= "CreateSessionLttng2.1";
110 private static final String SCEN_CREATE_SESSION_VERBOSE_2_1
= "CreateSessionLttngVerbose2.1";
111 private static final String SCEN_CREATE_SNAPSHOT_SESSION
= "CreateSessionSnapshot";
112 private static final String SCEN_CREATE_SNAPSHOT_SESSION_2_5
= "CreateSessionSnapshot2.5";
113 private static final String SCEN_CREATE_STREAMED_SNAPSHOT_SESSION
= "CreateSessionStreamedSnapshot";
114 private static final String SCEN_CREATE_SNAPSHOT_SESSION_ERRORS
= "CreateSessionSnapshotErrors";
115 protected static final String SCEN_CREATE_LIVE_SESSION
= "CreateSessionLive";
116 private static final String SCEN_CREATE_LIVE_SESSION_ERRORS
= "CreateSessionLiveErrors";
117 private static final String SCEN_SESSION_PROFILES
= "SessionProfile";
121 // ------------------------------------------------------------------------
123 // ------------------------------------------------------------------------
124 private String fTestfile
;
125 protected final @NonNull LTTngToolsFileShell fShell
= new LTTngToolsFileShell();
126 protected ILttngControlService fService
;
128 // ------------------------------------------------------------------------
130 // ------------------------------------------------------------------------
133 * Perform pre-test initialization.
136 * if the initialization fails for some reason
139 public void setUp() throws Exception
{
140 URL location
= FileLocator
.find(FrameworkUtil
.getBundle(this.getClass()), new Path(getTestDirectory() + File
.separator
+ getTestStream()), null);
141 File testfile
= new File(FileLocator
.toFileURL(location
).toURI());
142 fTestfile
= testfile
.getAbsolutePath();
143 fShell
.loadScenarioFile(fTestfile
);
144 fService
= getControlService();
145 if (fService
== null) {
146 throw new Exception("Unable to obtain a valid ControlService");
149 ControlPreferences
.getInstance().init(Activator
.getDefault().getPreferenceStore());
153 * @return the string of the test directory to use
155 protected String
getTestDirectory() {
160 * @return the LttngCon
162 protected ILttngControlService
getControlService() {
163 return new LTTngControlService(fShell
);
167 * @return the shell implementation
169 public @NonNull LTTngToolsFileShell
getShell() {
176 protected String
getTestStream() {
181 public void tearDown() {
183 ControlPreferences
.getInstance().dispose();
186 // ------------------------------------------------------------------------
188 // ------------------------------------------------------------------------
191 public void testVersion() {
193 fShell
.setScenario(SCEN_LTTNG_VERSION
);
194 ILttngControlService service
= LTTngControlServiceFactory
.getLttngControlService(fShell
);
195 assertNotNull(service
);
196 assertEquals("2.1.0", service
.getVersionString());
197 } catch (ExecutionException e
) {
198 fail("Exeption thrown " + e
);
203 public void testVersionWithPrompt() {
205 fShell
.setScenario(SCEN_LTTNG_VERSION_WITH_PROMPT
);
206 ILttngControlService service
= LTTngControlServiceFactory
.getLttngControlService(fShell
);
207 assertNotNull(service
);
208 assertEquals("2.0.0", service
.getVersionString());
209 } catch (ExecutionException e
) {
210 fail("Exeption thrown " + e
);
214 @Test(expected
=ExecutionException
.class)
215 public void testUnsupportedVersion() throws ExecutionException
{
216 fShell
.setScenario(SCEN_LTTNG_UNSUPPORTED_VERSION
);
217 LTTngControlServiceFactory
.getLttngControlService(fShell
);
221 public void testNoVersion() {
223 fShell
.setScenario(SCEN_LTTNG_NO_VERSION
);
224 LTTngControlServiceFactory
.getLttngControlService(fShell
);
225 fail("No exeption thrown");
226 } catch (ExecutionException e
) {
232 public void testVersionCompiled() {
234 fShell
.setScenario(SCEN_LTTNG_COMPILED_VERSION
);
235 ILttngControlService service
= LTTngControlServiceFactory
.getLttngControlService(fShell
);
236 assertNotNull(service
);
237 assertEquals("2.5.0", service
.getVersionString());
238 } catch (ExecutionException e
) {
239 fail("Exeption thrown " + e
);
245 public void testLttngNotInstalled() {
247 fShell
.setScenario(SCEN_LTTNG_NOT_INSTALLED
);
248 fService
.getSessionNames(new NullProgressMonitor());
249 fail("No exeption thrown");
250 } catch (ExecutionException e
) {
256 public void testGetSessionNames1() {
258 fShell
.setScenario(SCEN_NO_SESSION_AVAILABLE
);
259 List
<String
> result
= fService
.getSessionNames(new NullProgressMonitor());
261 assertNotNull(result
);
262 assertEquals(0, result
.size());
264 } catch (ExecutionException e
) {
270 public void testGetSessionNames2() {
272 fShell
.setScenario(SCEN_GET_SESSION_NAMES1
);
273 List
<String
> result
= fService
.getSessionNames(new NullProgressMonitor());
275 assertNotNull(result
);
276 assertEquals(2, result
.size());
277 assertEquals("mysession1", result
.get(0));
278 assertEquals("mysession", result
.get(1));
280 } catch (ExecutionException e
) {
286 public void testGetSessionNamesWithTracingGroup() {
288 fShell
.setScenario(SCEN_GET_SESSION_WITH_GROUP
);
289 ControlPreferences
.getInstance().getPreferenceStore().setValue(
290 ControlPreferences
.TRACE_CONTROL_TRACING_GROUP_PREF
, "group");
292 List
<String
> result
= fService
.getSessionNames(new NullProgressMonitor());
294 assertNotNull(result
);
295 assertEquals(2, result
.size());
296 assertEquals("mysession1", result
.get(0));
297 assertEquals("mysession", result
.get(1));
299 ControlCommandLogger
.init(ControlPreferences
.getInstance().getLogfilePath(), false);
300 ControlPreferences
.getInstance().getPreferenceStore().setValue(
301 ControlPreferences
.TRACE_CONTROL_TRACING_GROUP_PREF
, ControlPreferences
.TRACE_CONTROL_DEFAULT_TRACING_GROUP
);
304 } catch (ExecutionException e
) {
311 public void testGetSessionNotExist() {
313 fShell
.setScenario(SCEN_GET_SESSION_NAME_NOT_EXIST
);
314 fService
.getSessionNames(new NullProgressMonitor());
315 fail("No exeption thrown");
317 } catch (ExecutionException e
) {
323 public void testGetSessionNotExistVerbose() {
326 fShell
.setScenario(SCEN_GET_SESSION_NAME_NOT_EXIST_VERBOSE
);
327 fService
.getSessionNames(new NullProgressMonitor());
328 fail("No exeption thrown");
330 } catch (ExecutionException e
) {
338 public void testGetSessionNameGarbage() {
340 fShell
.setScenario(SCEN_GET_SESSION_GARBAGE_OUT
);
341 List
<String
> result
= fService
.getSessionNames(new NullProgressMonitor());
343 assertNotNull(result
);
344 assertEquals(0, result
.size());
346 } catch (ExecutionException e
) {
352 public void testGetSession1() {
354 fShell
.setScenario(SCEN_GET_SESSION1
);
355 ISessionInfo session
= fService
.getSession("mysession", new NullProgressMonitor());
358 assertNotNull(session
);
359 assertEquals("mysession", session
.getName());
360 assertEquals("/home/user/lttng-traces/mysession-20120129-084256", session
.getSessionPath());
361 assertEquals(TraceSessionState
.ACTIVE
, session
.getSessionState());
363 IDomainInfo
[] domains
= session
.getDomains();
364 assertNotNull(domains
);
365 assertEquals(2, domains
.length
);
367 // Verify Kernel domain
368 assertEquals("Kernel", domains
[0].getName());
369 IChannelInfo
[] channels
= domains
[0].getChannels();
370 assertNotNull(channels
);
371 assertEquals(2, channels
.length
);
373 // Verify Kernel's channel0
374 assertEquals("channel0", channels
[0].getName());
375 assertEquals(4, channels
[0].getNumberOfSubBuffers());
376 assertEquals("splice()", channels
[0].getOutputType().getInName());
377 assertEquals(TraceChannelOutputType
.SPLICE
, channels
[0].getOutputType());
378 assertEquals(false, channels
[0].isOverwriteMode());
379 assertEquals(200, channels
[0].getReadTimer());
380 assertEquals(TraceEnablement
.ENABLED
, channels
[0].getState());
381 assertEquals(262144, channels
[0].getSubBufferSize());
382 assertEquals(0, channels
[0].getSwitchTimer());
385 IEventInfo
[] channel0Events
= channels
[0].getEvents();
386 assertNotNull(channel0Events
);
387 assertEquals(2, channel0Events
.length
);
388 assertEquals("block_rq_remap", channel0Events
[0].getName());
389 assertEquals(TraceLogLevel
.TRACE_EMERG
, channel0Events
[0].getLogLevel());
390 assertEquals(TraceEventType
.TRACEPOINT
, channel0Events
[0].getEventType());
391 assertEquals(TraceEnablement
.ENABLED
, channel0Events
[0].getState());
393 assertEquals("block_bio_remap", channel0Events
[1].getName());
394 assertEquals(TraceLogLevel
.TRACE_EMERG
, channel0Events
[1].getLogLevel());
395 assertEquals(TraceEventType
.TRACEPOINT
, channel0Events
[1].getEventType());
396 assertEquals(TraceEnablement
.DISABLED
, channel0Events
[1].getState());
398 // Verify Kernel's channel1
399 assertEquals("channel1", channels
[1].getName());
400 assertEquals(4, channels
[1].getNumberOfSubBuffers());
401 assertEquals("splice()", channels
[1].getOutputType().getInName());
402 assertEquals(TraceChannelOutputType
.SPLICE
, channels
[1].getOutputType());
403 assertEquals(true, channels
[1].isOverwriteMode());
404 assertEquals(400, channels
[1].getReadTimer());
405 assertEquals(TraceEnablement
.DISABLED
, channels
[1].getState());
406 assertEquals(524288, channels
[1].getSubBufferSize());
407 assertEquals(100, channels
[1].getSwitchTimer());
410 IEventInfo
[] channel1Events
= channels
[1].getEvents();
411 assertEquals(0, channel1Events
.length
);
413 // Verify domain UST global
414 assertEquals("UST global", domains
[1].getName());
416 IChannelInfo
[] ustChannels
= domains
[1].getChannels();
418 // Verify UST global's mychannel1
419 assertEquals("mychannel1", ustChannels
[0].getName());
420 assertEquals(8, ustChannels
[0].getNumberOfSubBuffers());
421 assertEquals("mmap()", ustChannels
[0].getOutputType().getInName());
422 assertEquals(TraceChannelOutputType
.MMAP
, ustChannels
[0].getOutputType());
423 assertEquals(true, ustChannels
[0].isOverwriteMode());
424 assertEquals(100, ustChannels
[0].getReadTimer());
425 assertEquals(TraceEnablement
.DISABLED
, ustChannels
[0].getState());
426 assertEquals(8192, ustChannels
[0].getSubBufferSize());
427 assertEquals(200, ustChannels
[0].getSwitchTimer());
430 IEventInfo
[] ustEvents
= ustChannels
[0].getEvents();
431 assertEquals(0, ustEvents
.length
);
433 // Verify UST global's channel0
434 assertEquals("channel0", ustChannels
[1].getName());
435 assertEquals(4, ustChannels
[1].getNumberOfSubBuffers());
436 assertEquals("mmap()", ustChannels
[1].getOutputType().getInName());
437 assertEquals(TraceChannelOutputType
.MMAP
, ustChannels
[1].getOutputType());
438 assertEquals(false, ustChannels
[1].isOverwriteMode());
439 assertEquals(200, ustChannels
[1].getReadTimer());
440 assertEquals(TraceEnablement
.ENABLED
, ustChannels
[1].getState());
441 assertEquals(4096, ustChannels
[1].getSubBufferSize());
442 assertEquals(0, ustChannels
[1].getSwitchTimer());
445 ustEvents
= ustChannels
[1].getEvents();
446 assertEquals(2, ustEvents
.length
);
448 assertEquals("ust_tests_hello:tptest_sighandler", ustEvents
[0].getName());
449 assertEquals(TraceLogLevel
.TRACE_DEBUG_LINE
, ustEvents
[0].getLogLevel());
450 assertEquals(TraceEventType
.TRACEPOINT
, ustEvents
[0].getEventType());
451 assertEquals(TraceEnablement
.DISABLED
, ustEvents
[0].getState());
453 assertEquals("*", ustEvents
[1].getName());
454 assertEquals(getAllEventTraceLogLevel(), ustEvents
[1].getLogLevel());
455 assertEquals(TraceEventType
.TRACEPOINT
, ustEvents
[1].getEventType());
456 assertEquals(TraceEnablement
.ENABLED
, ustEvents
[1].getState());
458 // next session (no detailed information available)
459 session
= fService
.getSession("mysession1", new NullProgressMonitor());
460 assertNotNull(session
);
461 assertEquals("mysession1", session
.getName());
462 assertEquals("/home/user/lttng-traces/mysession1-20120203-133225", session
.getSessionPath());
463 assertEquals(TraceSessionState
.INACTIVE
, session
.getSessionState());
465 domains
= session
.getDomains();
466 assertNotNull(domains
);
467 assertEquals(0, domains
.length
);
468 } catch (ExecutionException e
) {
474 public void testGetSessionWithLive() {
476 fShell
.setScenario(SCEN_GET_SESSION_WITH_LIVE
);
478 // Verify Session (snapshot session, non-live)
479 ISessionInfo session
= fService
.getSession("mysession", new NullProgressMonitor());
480 assertNotNull(session
);
481 assertEquals("mysession", session
.getName());
482 assertEquals("/home/user/lttng-traces/mysession-20120129-084256", session
.getSessionPath());
483 assertEquals(TraceSessionState
.INACTIVE
, session
.getSessionState());
484 assertFalse(session
.isLive());
486 // Verify Session (regular session, non-live)
487 session
= fService
.getSession("mysession1", new NullProgressMonitor());
488 assertNotNull(session
);
489 assertEquals("mysession1", session
.getName());
490 assertEquals("/home/user/lttng-traces/mysession1-20120129-084256", session
.getSessionPath());
491 assertEquals(TraceSessionState
.ACTIVE
, session
.getSessionState());
492 assertFalse(session
.isLive());
494 // Verify Session (regular session, live)
495 session
= fService
.getSession("mysession2", new NullProgressMonitor());
496 assertNotNull(session
);
497 assertEquals("mysession2", session
.getName());
498 assertEquals("tcp4://172.0.0.1:5342/ [data: 5343]", session
.getSessionPath());
499 assertEquals("net://127.0.0.1", session
.getLiveUrl());
500 assertEquals(Integer
.valueOf(5344), session
.getLivePort());
501 assertEquals(1000000, session
.getLiveDelay());
502 assertEquals(TraceSessionState
.INACTIVE
, session
.getSessionState());
503 assertTrue(session
.isLive());
505 } catch (ExecutionException e
) {
513 protected TraceLogLevel
getAllEventTraceLogLevel() {
514 return TraceLogLevel
.LEVEL_UNKNOWN
;
517 public void testGetKernelProvider() {
519 fShell
.setScenario(SCEN_GET_KERNEL_PROVIDER1
);
520 List
<IBaseEventInfo
> events
= fService
.getKernelProvider(new NullProgressMonitor());
523 assertNotNull(events
);
524 assertEquals(3, events
.size());
526 IBaseEventInfo baseEventInfo
= events
.get(0);
527 assertNotNull(baseEventInfo
);
528 assertEquals("sched_kthread_stop", baseEventInfo
.getName());
529 assertEquals(TraceLogLevel
.TRACE_EMERG
, baseEventInfo
.getLogLevel());
530 assertEquals(TraceEventType
.TRACEPOINT
, baseEventInfo
.getEventType());
532 baseEventInfo
= events
.get(1);
533 assertEquals("sched_kthread_stop_ret", baseEventInfo
.getName());
534 assertEquals(TraceLogLevel
.TRACE_EMERG
, baseEventInfo
.getLogLevel());
535 assertEquals(TraceEventType
.TRACEPOINT
, baseEventInfo
.getEventType());
537 baseEventInfo
= events
.get(2);
538 assertEquals("sched_wakeup_new", baseEventInfo
.getName());
539 assertEquals(TraceLogLevel
.TRACE_EMERG
, baseEventInfo
.getLogLevel());
540 assertEquals(TraceEventType
.TRACEPOINT
, baseEventInfo
.getEventType());
542 } catch (ExecutionException e
) {
548 public void testGetKernelProviderNoKernel1() {
550 fShell
.setScenario(SCEN_LIST_WITH_NO_KERNEL1
);
551 List
<IBaseEventInfo
> events
= fService
.getKernelProvider(new NullProgressMonitor());
554 assertNotNull(events
);
555 assertEquals(0, events
.size());
557 } catch (ExecutionException e
) {
563 public void testGetKernelProviderNoKernel2() {
565 fShell
.setScenario(SCEN_LIST_WITH_NO_KERNEL2
);
566 List
<IBaseEventInfo
> events
= fService
.getKernelProvider(new NullProgressMonitor());
569 assertNotNull(events
);
570 assertEquals(0, events
.size());
572 } catch (ExecutionException e
) {
578 public void testGetKernelProviderNoKernelVerbose() {
581 fShell
.setScenario(SCEN_LIST_WITH_NO_KERNEL_VERBOSE
);
582 List
<IBaseEventInfo
> events
= fService
.getKernelProvider(new NullProgressMonitor());
585 assertNotNull(events
);
586 assertEquals(0, events
.size());
588 } catch (ExecutionException e
) {
596 public void testGetUstProvider() {
598 fShell
.setScenario(SCEN_GET_UST_PROVIDER1
);
599 List
<IUstProviderInfo
> providers
= fService
.getUstProvider();
601 // Check all providers
602 assertNotNull(providers
);
603 assertEquals(2, providers
.size());
605 //Verify first provider
606 assertEquals("/home/user/git/lttng-ust/tests/hello.cxx/.libs/lt-hello", providers
.get(0).getName());
607 assertEquals(9379, providers
.get(0).getPid());
610 IBaseEventInfo
[] events
= providers
.get(0).getEvents();
611 assertNotNull(events
);
612 assertEquals(2, events
.length
);
614 IBaseEventInfo baseEventInfo
= events
[0];
615 assertNotNull(baseEventInfo
);
616 assertEquals("ust_tests_hello:tptest_sighandler", baseEventInfo
.getName());
617 assertEquals(TraceLogLevel
.TRACE_DEBUG_MODULE
, baseEventInfo
.getLogLevel());
618 assertEquals(TraceEventType
.TRACEPOINT
, baseEventInfo
.getEventType());
620 baseEventInfo
= events
[1];
621 assertEquals("ust_tests_hello:tptest", baseEventInfo
.getName());
622 assertEquals(TraceLogLevel
.TRACE_INFO
, baseEventInfo
.getLogLevel());
623 assertEquals(TraceEventType
.TRACEPOINT
, baseEventInfo
.getEventType());
625 //Verify second provider
626 assertEquals("/home/user/git/lttng-ust/tests/hello.cxx/.libs/lt-hello", providers
.get(1).getName());
627 assertEquals(4852, providers
.get(1).getPid());
630 events
= providers
.get(1).getEvents();
631 assertNotNull(events
);
632 assertEquals(2, events
.length
);
634 baseEventInfo
= events
[0];
635 assertNotNull(baseEventInfo
);
636 assertEquals("ust_tests_hello:tptest_sighandler", baseEventInfo
.getName());
637 assertEquals(TraceLogLevel
.TRACE_WARNING
, baseEventInfo
.getLogLevel());
638 assertEquals(TraceEventType
.TRACEPOINT
, baseEventInfo
.getEventType());
640 baseEventInfo
= events
[1];
641 assertEquals("ust_tests_hello:tptest", baseEventInfo
.getName());
642 assertEquals(TraceLogLevel
.TRACE_DEBUG_FUNCTION
, baseEventInfo
.getLogLevel());
643 assertEquals(TraceEventType
.TRACEPOINT
, baseEventInfo
.getEventType());
645 } catch (ExecutionException e
) {
651 public void testUstProvider2() {
653 fShell
.setScenario(SCEN_GET_UST_PROVIDER2
);
654 List
<IUstProviderInfo
> providers
= fService
.getUstProvider();
656 assertNotNull(providers
);
657 assertEquals(0, providers
.size());
659 } catch (ExecutionException e
) {
665 public void testGetUstProvider3() {
667 fShell
.setScenario(SCEN_GET_UST_PROVIDER3
);
669 ((LTTngControlService
)fService
).setVersion("2.1.0");
670 List
<IUstProviderInfo
> providers
= fService
.getUstProvider();
672 // Check all providers
673 assertNotNull(providers
);
674 assertEquals(2, providers
.size());
676 //Verify first provider
677 assertEquals("/home/user/git/lttng-ust/tests/hello.cxx/.libs/lt-hello", providers
.get(0).getName());
678 assertEquals(9379, providers
.get(0).getPid());
681 IBaseEventInfo
[] events
= providers
.get(0).getEvents();
682 assertNotNull(events
);
683 assertEquals(2, events
.length
);
685 IBaseEventInfo baseEventInfo
= events
[0];
686 assertNotNull(baseEventInfo
);
687 IFieldInfo
[] fields
= baseEventInfo
.getFields();
688 assertNotNull(fields
);
689 assertEquals(0, fields
.length
);
691 baseEventInfo
= events
[1];
692 fields
= baseEventInfo
.getFields();
693 assertNotNull(fields
);
694 assertEquals(3, fields
.length
);
695 assertEquals("doublefield", fields
[0].getName());
696 assertEquals("float", fields
[0].getFieldType());
698 assertEquals("floatfield", fields
[1].getName());
699 assertEquals("float", fields
[1].getFieldType());
701 assertEquals("stringfield", fields
[2].getName());
702 assertEquals("string", fields
[2].getFieldType());
704 //Verify second provider
705 assertEquals("/home/user/git/lttng-ust/tests/hello.cxx/.libs/lt-hello", providers
.get(1).getName());
706 assertEquals(4852, providers
.get(1).getPid());
709 events
= providers
.get(1).getEvents();
710 assertNotNull(events
);
711 assertEquals(2, events
.length
);
713 baseEventInfo
= events
[0];
714 assertNotNull(baseEventInfo
);
715 fields
= baseEventInfo
.getFields();
716 assertNotNull(fields
);
717 assertEquals(0, fields
.length
);
719 baseEventInfo
= events
[1];
720 fields
= baseEventInfo
.getFields();
721 assertNotNull(fields
);
722 assertEquals(3, fields
.length
);
724 assertEquals("doublefield", fields
[0].getName());
725 assertEquals("float", fields
[0].getFieldType());
727 assertEquals("floatfield", fields
[1].getName());
728 assertEquals("float", fields
[1].getFieldType());
730 assertEquals("stringfield", fields
[2].getName());
731 assertEquals("string", fields
[2].getFieldType());
734 ((LTTngControlService
)fService
).setVersion("2.0.0");
736 } catch (ExecutionException e
) {
743 public void testGetKernelProviderNoUst1() {
745 fShell
.setScenario(SCEN_LIST_WITH_NO_UST1
);
746 List
<IUstProviderInfo
> providerList
= fService
.getUstProvider(new NullProgressMonitor());
748 // Verify Provider info
749 assertNotNull(providerList
);
750 assertEquals(0, providerList
.size());
752 } catch (ExecutionException e
) {
759 public void testGetKernelProviderNoUst2() {
762 ((LTTngControlService
)fService
).setVersion("2.1.0");
764 fShell
.setScenario(SCEN_LIST_WITH_NO_UST2
);
765 List
<IUstProviderInfo
> providerList
= fService
.getUstProvider(new NullProgressMonitor());
767 // Verify Provider info
768 assertNotNull(providerList
);
769 assertEquals(0, providerList
.size());
772 ((LTTngControlService
)fService
).setVersion("2.0.0");
774 } catch (ExecutionException e
) {
780 public void testGetKernelProviderNoUst3() {
784 ((LTTngControlService
)fService
).setVersion("2.1.0");
786 fShell
.setScenario(SCEN_LIST_WITH_NO_UST3
);
787 List
<IUstProviderInfo
> providerList
= fService
.getUstProvider(new NullProgressMonitor());
789 // Verify provider info
790 assertNotNull(providerList
);
791 assertEquals(0, providerList
.size());
794 ((LTTngControlService
)fService
).setVersion("2.0.0");
796 } catch (ExecutionException e
) {
802 public void testGetKernelProviderNoUstVerbose() {
807 ((LTTngControlService
)fService
).setVersion("2.1.0");
809 fShell
.setScenario(SCEN_LIST_WITH_NO_UST_VERBOSE
);
810 List
<IUstProviderInfo
> providerList
= fService
.getUstProvider(new NullProgressMonitor());
812 // Verify provider info
813 assertNotNull(providerList
);
814 assertEquals(0, providerList
.size());
817 ((LTTngControlService
)fService
).setVersion("2.0.0");
819 } catch (ExecutionException e
) {
829 public void testCreateSession() {
831 fShell
.setScenario(SCEN_CREATE_SESSION1
);
833 ISessionInfo info
= fService
.createSession(new SessionInfo("mysession2"), new NullProgressMonitor());
835 assertEquals("mysession2", info
.getName());
836 assertNotNull(info
.getSessionPath());
837 assertTrue(info
.getSessionPath().contains("mysession2"));
838 assertEquals(TraceSessionState
.INACTIVE
, info
.getSessionState());
839 } catch (ExecutionException e
) {
845 public void testCreateSessionWithPrompt() {
847 // First line has the shell prompt before the command output
848 // This can happen in a real application if the command line is not echoed by the shell.
849 fShell
.setScenario(SCEN_CREATE_SESSION_WITH_PROMPT
);
851 // First line has no shell prompt before the output
852 ISessionInfo info
= fService
.createSession(new SessionInfo("mysession2"), new NullProgressMonitor());
854 assertEquals("mysession2", info
.getName());
855 assertNotNull(info
.getSessionPath());
856 assertTrue(info
.getSessionPath().contains("mysession2"));
857 assertEquals(TraceSessionState
.INACTIVE
, info
.getSessionState());
858 } catch (ExecutionException e
) {
864 public void testCreateSessionVariants() {
866 fShell
.setScenario(SCEN_CREATE_SESSION_VARIANTS
);
869 fService
.createSession(new SessionInfo("alreadyExist"), new NullProgressMonitor());
870 fail("No exeption thrown");
871 } catch (ExecutionException e
) {
876 fService
.createSession(new SessionInfo("wrongName"), new NullProgressMonitor());
877 fail("No exeption thrown");
878 } catch (ExecutionException e
) {
883 ISessionInfo sessionInfo
= new SessionInfo("withPath");
884 sessionInfo
.setSessionPath("/home/user/hallo");
885 fService
.createSession(sessionInfo
, new NullProgressMonitor());
886 fail("No exeption thrown");
887 } catch (ExecutionException e
) {
892 ISessionInfo info
= fService
.createSession(new SessionInfo("session with spaces"), new NullProgressMonitor());
894 assertEquals("session with spaces", info
.getName());
895 assertNotNull(info
.getSessionPath());
896 assertTrue(info
.getSessionPath().contains("session with spaces"));
897 assertEquals(TraceSessionState
.INACTIVE
, info
.getSessionState());
899 } catch (ExecutionException e
) {
904 ISessionInfo sessionInfo
= new SessionInfo("pathWithSpaces");
905 sessionInfo
.setSessionPath("/home/user/hallo user/here");
906 ISessionInfo info
= fService
.createSession(sessionInfo
, new NullProgressMonitor());
908 assertEquals("pathWithSpaces", info
.getName());
909 assertNotNull(info
.getSessionPath());
910 assertTrue(info
.getSessionPath().contains("/home/user/hallo user/here"));
911 assertEquals(TraceSessionState
.INACTIVE
, info
.getSessionState());
913 } catch (ExecutionException e
) {
919 public void testDestroySession() {
921 fShell
.setScenario(SCEN_DESTROY_SESSION1
);
922 fService
.destroySession("mysession2", new NullProgressMonitor());
923 } catch (ExecutionException e
) {
929 public void testDestroySessionVerbose() {
932 fShell
.setScenario(SCEN_DESTROY_SESSION_VERBOSE
);
933 fService
.destroySession("mysession2", new NullProgressMonitor());
934 } catch (ExecutionException e
) {
942 public void testCreateChannel() {
944 ((LTTngControlService
)fService
).setVersion("2.2.0");
945 String sessionName
= "mysession2";
946 List
<String
> list
= new ArrayList
<>();
947 String kernelChannel0
= "mychannel0";
948 String kernelChannel1
= "mychannel1";
949 list
.add(kernelChannel0
);
950 list
.add(kernelChannel1
);
952 fShell
.setScenario(SCEN_CHANNEL_HANDLING
);
954 // Create/enable/configure 2 kernel channels
955 ChannelInfo chanInfo
= new ChannelInfo("");
956 chanInfo
.setOverwriteMode(true);
957 chanInfo
.setSubBufferSize(16384);
958 chanInfo
.setReadTimer(100);
959 chanInfo
.setSwitchTimer(200);
960 chanInfo
.setNumberOfSubBuffers(2);
961 chanInfo
.setMaxNumberTraceFiles(10);
962 chanInfo
.setMaxSizeTraceFiles(0);
963 fService
.enableChannels(sessionName
, list
, true, chanInfo
, new NullProgressMonitor());
965 // Create/enable/configure 1 UST channel
967 list
.add("ustChannel");
969 chanInfo
= new ChannelInfo("");
970 chanInfo
.setOverwriteMode(true);
971 chanInfo
.setSubBufferSize(32768);
972 chanInfo
.setReadTimer(200);
973 chanInfo
.setSwitchTimer(100);
974 chanInfo
.setNumberOfSubBuffers(1);
975 chanInfo
.setMaxNumberTraceFiles(20);
976 chanInfo
.setMaxSizeTraceFiles(0);
977 fService
.enableChannels(sessionName
, list
, false, chanInfo
, new NullProgressMonitor());
978 ((LTTngControlService
)fService
).setVersion("2.0.0");
980 } catch (ExecutionException e
) {
986 public void testCreateChannelUIDBuffer() {
988 ((LTTngControlService
)fService
).setVersion("2.2.0");
989 String sessionName
= "mysession2";
990 List
<String
> list
= new ArrayList
<>();
991 String USTChannel
= "ustChannel";
992 list
.add(USTChannel
);
993 fShell
.setScenario(SCEN_CHANNEL_HANDLING
);
995 ChannelInfo chanInfo
= new ChannelInfo("");
996 chanInfo
.setOverwriteMode(true);
997 chanInfo
.setSubBufferSize(32768);
998 chanInfo
.setReadTimer(200);
999 chanInfo
.setSwitchTimer(100);
1000 chanInfo
.setNumberOfSubBuffers(1);
1001 chanInfo
.setMaxNumberTraceFiles(20);
1002 chanInfo
.setMaxSizeTraceFiles(0);
1003 chanInfo
.setBufferType(BufferType
.BUFFER_PER_UID
);
1004 fService
.enableChannels(sessionName
, list
, false, chanInfo
, new NullProgressMonitor());
1005 ((LTTngControlService
)fService
).setVersion("2.0.0");
1007 } catch (ExecutionException e
) {
1013 public void testCreateChannelPIDBuffer() {
1015 ((LTTngControlService
)fService
).setVersion("2.2.0");
1016 String sessionName
= "mysession2";
1017 List
<String
> list
= new ArrayList
<>();
1018 String USTChannel
= "ustChannel";
1019 list
.add(USTChannel
);
1020 fShell
.setScenario(SCEN_CHANNEL_HANDLING
);
1023 ChannelInfo chanInfo
= new ChannelInfo("");
1024 chanInfo
.setOverwriteMode(true);
1025 chanInfo
.setSubBufferSize(-1);
1026 chanInfo
.setReadTimer(-1);
1027 chanInfo
.setSwitchTimer(-1);
1028 chanInfo
.setNumberOfSubBuffers(-1);
1029 chanInfo
.setMaxNumberTraceFiles(-1);
1030 chanInfo
.setMaxSizeTraceFiles(-1);
1031 chanInfo
.setBufferType(BufferType
.BUFFER_PER_PID
);
1033 fService
.enableChannels(sessionName
, list
, false, chanInfo
, new NullProgressMonitor());
1034 ((LTTngControlService
)fService
).setVersion("2.0.0");
1036 } catch (ExecutionException e
) {
1042 public void testDisableChannel() {
1045 String sessionName
= "mysession2";
1046 List
<String
> list
= new ArrayList
<>();
1047 String kernelChannel0
= "mychannel0";
1048 String kernelChannel1
= "mychannel1";
1049 list
.add(kernelChannel0
);
1050 list
.add(kernelChannel1
);
1052 fShell
.setScenario(SCEN_CHANNEL_HANDLING
);
1053 fService
.disableChannels(sessionName
, list
, true, new NullProgressMonitor());
1056 list
.add("ustChannel");
1057 fService
.disableChannels(sessionName
, list
, false, new NullProgressMonitor());
1059 } catch (ExecutionException e
) {
1065 public void testEnableChannel() {
1068 String sessionName
= "mysession2";
1069 List
<String
> list
= new ArrayList
<>();
1070 String kernelChannel0
= "mychannel0";
1071 String kernelChannel1
= "mychannel1";
1072 list
.add(kernelChannel0
);
1073 list
.add(kernelChannel1
);
1075 fShell
.setScenario(SCEN_CHANNEL_HANDLING
);
1076 fService
.enableChannels(sessionName
, list
, true, null, new NullProgressMonitor());
1078 // Create/enable/configure 1 UST channel
1080 list
.add("ustChannel");
1082 fService
.enableChannels(sessionName
, list
, false, null, new NullProgressMonitor());
1084 } catch (ExecutionException e
) {
1090 public void testEnableEvents() {
1092 // 1) session name, channel = null, 3 event names, kernel
1093 String sessionName
= "mysession2";
1094 List
<String
> list
= new ArrayList
<>();
1095 String eventName0
= "block_rq_remap";
1096 String eventName1
= "block_bio_remap";
1097 String eventName2
= "softirq_entry";
1098 list
.add(eventName0
);
1099 list
.add(eventName1
);
1100 list
.add(eventName2
);
1101 fShell
.setScenario(SCEN_EVENT_HANDLING
);
1102 fService
.enableEvents(sessionName
, null, list
, true, null, new NullProgressMonitor());
1104 // 2) session name, channel=mychannel, event name= null, kernel
1105 String channelName
= "mychannel";
1106 fService
.enableEvents(sessionName
, channelName
, null, true, null, new NullProgressMonitor());
1108 // 3) session name, channel=mychannel, 1 event name, ust, no filter
1109 String ustEventName
= "ust_tests_hello:tptest_sighandler";
1111 list
.add(ustEventName
);
1112 fService
.enableEvents(sessionName
, channelName
, list
, false, null, new NullProgressMonitor());
1114 // 4) session name, channel = mychannel, no event name, ust, with filter
1115 fService
.enableEvents(sessionName
, channelName
, list
, false, "intfield==10", new NullProgressMonitor());
1117 // 5) session name, channel = mychannel, no event name, ust, no filter
1119 fService
.enableEvents(sessionName
, channelName
, list
, false, null, new NullProgressMonitor());
1121 // TODO add test with filters
1123 } catch (ExecutionException e
) {
1129 public void testEnableSyscalls() {
1131 // 1) session name, channel = null, 3 event names, kernel
1132 String sessionName
= "mysession2";
1133 String channelName
= "mychannel";
1135 fShell
.setScenario(SCEN_EVENT_HANDLING
);
1137 // 1) session name, channel = null
1138 fService
.enableSyscalls(sessionName
, null, new NullProgressMonitor());
1140 // 2) session name, channel = mychannel
1141 fService
.enableSyscalls(sessionName
, channelName
, new NullProgressMonitor());
1143 } catch (ExecutionException e
) {
1149 public void testDynamicProbe() {
1151 // 1) session name, channel = null, 3 event names, kernel
1152 String sessionName
= "mysession2";
1153 String channelName
= "mychannel";
1154 String eventName0
= "myevent0";
1155 String eventName1
= "myevent1";
1156 String functionProbe
= "0xc0101340";
1157 String dynProbe
= "init_post";
1159 fShell
.setScenario(SCEN_EVENT_HANDLING
);
1161 // 1) session name, channel = null, event name, function probe, probe
1162 fService
.enableProbe(sessionName
, null, eventName0
, true, functionProbe
, new NullProgressMonitor());
1164 // 2) session name, channel = mychannel
1165 fService
.enableProbe(sessionName
, channelName
, eventName1
, false, dynProbe
, new NullProgressMonitor());
1167 } catch (ExecutionException e
) {
1173 public void testEnableLogLevel() {
1175 // 1) session name, channel = null, 3 event names, kernel
1176 String sessionName
= "mysession2";
1177 String channelName
= "mychannel";
1178 String eventName4
= "myevent4";
1179 String eventName5
= "myevent5";
1181 fShell
.setScenario(SCEN_EVENT_HANDLING
);
1183 // 1) session name, channel = null, event name, loglevel-only, TRACE_DEBUG
1184 fService
.enableLogLevel(sessionName
, null, eventName4
, LogLevelType
.LOGLEVEL_ONLY
, TraceLogLevel
.TRACE_DEBUG
, null, new NullProgressMonitor());
1186 // 2) session name, channel = mychannel, null, loglevel, TRACE_DEBUG_FUNCTION
1187 fService
.enableLogLevel(sessionName
, channelName
, eventName5
, LogLevelType
.LOGLEVEL
, TraceLogLevel
.TRACE_DEBUG_FUNCTION
, null, new NullProgressMonitor());
1189 // TODO add test with filters
1191 } catch (ExecutionException e
) {
1197 public void testAddContext() {
1199 // 1) session name, channel = null, 3 event names, kernel
1200 String sessionName
= "mysession2";
1201 String channelName
= "mychannel";
1202 String eventName
= "ust_tests_hello:tptest_sighandler";
1203 List
<String
> contexts
= new ArrayList
<>();
1204 contexts
.add("prio");
1205 contexts
.add("pid");
1207 fShell
.setScenario(SCEN_CONTEXT_HANDLING
);
1209 List
<String
> availContexts
= fService
.getContextList(new NullProgressMonitor());
1210 assertNotNull(availContexts
);
1211 assertEquals(12, availContexts
.size());
1213 // A very "hard-coded" way to verify but it works ...
1214 Set
<String
> expectedContexts
= new HashSet
<>();
1215 expectedContexts
.add("pid");
1216 expectedContexts
.add("procname");
1217 expectedContexts
.add("prio");
1218 expectedContexts
.add("nice");
1219 expectedContexts
.add("vpid");
1220 expectedContexts
.add("tid");
1221 expectedContexts
.add("pthread_id");
1222 expectedContexts
.add("vtid");
1223 expectedContexts
.add("ppid");
1224 expectedContexts
.add("vppid");
1225 expectedContexts
.add("perf:cpu-cycles");
1226 expectedContexts
.add("perf:cycles");
1228 assertTrue(expectedContexts
.containsAll(availContexts
));
1230 // 1) session name, channel = null, event name, loglevel-only, TRACE_DEBUG
1231 fService
.addContexts(sessionName
, channelName
, eventName
, false, contexts
, new NullProgressMonitor());
1233 } catch (ExecutionException e
) {
1239 public void testAddContextFailure() {
1241 // 1) session name, channel = null, 3 event names, kernel
1242 String sessionName
= "mysession2";
1243 String channelName
= "mychannel";
1244 String eventName
= "ust_tests_hello:tptest_sighandler";
1245 List
<String
> contexts
= new ArrayList
<>();
1246 contexts
.add("prio");
1247 contexts
.add("pid");
1248 fShell
.setScenario(SCEN_CONTEXT_ERROR_HANDLING
);
1250 fService
.getContextList(new NullProgressMonitor());
1251 fail("No exeption generated");
1252 } catch (ExecutionException e
) {
1256 // 1) session name, channel = null, event name, loglevel-only, TRACE_DEBUG
1257 fService
.addContexts(sessionName
, channelName
, eventName
, false, contexts
, new NullProgressMonitor());
1258 fail("No exeption generated");
1259 } catch (ExecutionException e
) {
1265 public void testCalibrate() {
1267 fShell
.setScenario(SCEN_CALIBRATE_HANDLING
);
1268 fService
.calibrate(true, new NullProgressMonitor());
1270 } catch (ExecutionException e
) {
1276 public void testCalibrateFailure() {
1278 fShell
.setScenario(SCEN_CALIBRATE_HANDLING
);
1279 fService
.calibrate(false, new NullProgressMonitor());
1280 fail("No exeption generated");
1281 } catch (ExecutionException e
) {
1287 public void testCreateSession2_1() {
1290 fShell
.setScenario(SCEN_CREATE_SESSION_2_1
);
1292 ISessionInfo sessionInfo
= new SessionInfo("mysession");
1293 sessionInfo
.setNetworkUrl("net://172.0.0.1");
1294 sessionInfo
.setStreamedTrace(true);
1295 ISessionInfo info
= fService
.createSession(sessionInfo
, new NullProgressMonitor());
1296 assertNotNull(info
);
1297 assertEquals("mysession", info
.getName());
1298 assertEquals("net://172.0.0.1", info
.getSessionPath());
1299 assertTrue(info
.isStreamedTrace());
1300 fService
.destroySession("mysession", new NullProgressMonitor());
1302 sessionInfo
= new SessionInfo("mysession");
1303 sessionInfo
.setStreamedTrace(true);
1304 sessionInfo
.setNetworkUrl("file:///tmp");
1305 info
= fService
.createSession(sessionInfo
, new NullProgressMonitor());
1306 assertNotNull(info
);
1307 assertEquals("mysession", info
.getName());
1308 assertEquals("file:///tmp", info
.getSessionPath());
1309 assertTrue(!info
.isStreamedTrace());
1310 fService
.destroySession("mysession", new NullProgressMonitor());
1312 sessionInfo
= new SessionInfo("mysession");
1313 sessionInfo
.setStreamedTrace(true);
1314 sessionInfo
.setNetworkUrl("file:///tmp");
1315 info
= fService
.createSession(sessionInfo
, new NullProgressMonitor());
1316 assertNotNull(info
);
1317 assertEquals("mysession", info
.getName());
1318 assertEquals("file:///tmp", info
.getSessionPath());
1319 assertTrue(!info
.isStreamedTrace());
1320 fService
.destroySession("mysession", new NullProgressMonitor());
1322 sessionInfo
= new SessionInfo("mysession");
1323 sessionInfo
.setStreamedTrace(true);
1324 sessionInfo
.setControlUrl("tcp://172.0.0.1");
1325 sessionInfo
.setDataUrl("tcp://172.0.0.1:5343");
1326 info
= fService
.createSession(sessionInfo
, new NullProgressMonitor());
1327 assertNotNull(info
);
1328 assertEquals("mysession", info
.getName());
1329 assertEquals("", info
.getSessionPath()); // the complete network path is not available at this point
1330 assertTrue(info
.isStreamedTrace());
1331 fService
.destroySession("mysession", new NullProgressMonitor());
1333 sessionInfo
= new SessionInfo("mysession");
1334 sessionInfo
.setStreamedTrace(true);
1335 sessionInfo
.setNetworkUrl("net://172.0.0.1:1234:2345");
1336 info
= fService
.createSession(sessionInfo
, new NullProgressMonitor());
1337 assertNotNull(info
);
1338 assertEquals("mysession", info
.getName());
1339 assertEquals("net://172.0.0.1:1234:2345", info
.getSessionPath());
1340 assertTrue(info
.isStreamedTrace());
1341 fService
.destroySession("mysession", new NullProgressMonitor());
1345 sessionInfo
= new SessionInfo("mysession");
1346 sessionInfo
.setStreamedTrace(true);
1347 sessionInfo
.setNetworkUrl("net://172.0.0.1");
1348 info
= fService
.createSession(sessionInfo
, new NullProgressMonitor());
1349 assertNotNull(info
);
1350 assertEquals("mysession", info
.getName());
1351 assertEquals("net://172.0.0.1", info
.getSessionPath());
1352 assertTrue(info
.isStreamedTrace());
1354 fService
.destroySession("mysession", new NullProgressMonitor());
1357 } catch (ExecutionException e
) {
1363 public void testCreateSessionVerbose2_1() {
1365 fShell
.setScenario(SCEN_CREATE_SESSION_VERBOSE_2_1
);
1368 ISessionInfo sessionInfo
= new SessionInfo("mysession");
1369 sessionInfo
.setStreamedTrace(true);
1370 sessionInfo
.setNetworkUrl("net://172.0.0.1");
1371 ISessionInfo info
= fService
.createSession(sessionInfo
, new NullProgressMonitor());
1372 assertNotNull(info
);
1373 assertEquals("mysession", info
.getName());
1374 assertEquals("net://172.0.0.1", info
.getSessionPath());
1375 assertTrue(info
.isStreamedTrace());
1376 fService
.destroySession("mysession", new NullProgressMonitor());
1377 } catch (ExecutionException e
) {
1385 public void testCreateSnapshotSession() {
1387 fShell
.setScenario(SCEN_CREATE_SNAPSHOT_SESSION
);
1388 ISessionInfo params
= new SessionInfo("mysession");
1389 params
.setSnapshot(true);
1390 ISessionInfo sessionInfo
= fService
.createSession(params
, new NullProgressMonitor());
1391 assertNotNull(sessionInfo
);
1392 assertEquals("mysession", sessionInfo
.getName());
1393 assertTrue(sessionInfo
.isSnapshotSession());
1394 assertEquals("", sessionInfo
.getSessionPath());
1395 assertTrue(!sessionInfo
.isStreamedTrace());
1397 assertEquals(TraceSessionState
.INACTIVE
, sessionInfo
.getSessionState());
1399 List
<String
> names
= fService
.getSessionNames(new NullProgressMonitor());
1400 assertEquals(names
.get(0), "mysession");
1402 ISnapshotInfo snapshotInfo
= fService
.getSnapshotInfo("mysession", new NullProgressMonitor());
1403 assertNotNull(snapshotInfo
);
1404 assertEquals("snapshot-1", snapshotInfo
.getName());
1405 assertEquals("/home/user/lttng-traces/mysession-20130913-141651", snapshotInfo
.getSnapshotPath());
1406 assertEquals(1, snapshotInfo
.getId());
1407 assertTrue(!snapshotInfo
.isStreamedSnapshot());
1409 // we need to set the snapshotInfo to so that the session path is set correctly
1410 sessionInfo
.setSnapshotInfo(snapshotInfo
);
1411 assertEquals("/home/user/lttng-traces/mysession-20130913-141651", sessionInfo
.getSessionPath());
1413 fService
.recordSnapshot("mysession", new NullProgressMonitor());
1415 fService
.destroySession("mysession", new NullProgressMonitor());
1417 } catch (ExecutionException e
) {
1423 public void testCreateSnapshotSession2_5() {
1425 fShell
.setScenario(SCEN_CREATE_SNAPSHOT_SESSION_2_5
);
1426 ISessionInfo params
= new SessionInfo("mysession");
1427 params
.setSnapshot(true);
1428 ISessionInfo sessionInfo
= fService
.createSession(params
, new NullProgressMonitor());
1429 assertNotNull(sessionInfo
);
1430 assertEquals("mysession", sessionInfo
.getName());
1431 assertTrue(sessionInfo
.isSnapshotSession());
1432 assertEquals("", sessionInfo
.getSessionPath());
1433 assertTrue(!sessionInfo
.isStreamedTrace());
1435 assertEquals(TraceSessionState
.INACTIVE
, sessionInfo
.getSessionState());
1437 List
<String
> names
= fService
.getSessionNames(new NullProgressMonitor());
1438 assertEquals(names
.get(0), "mysession");
1440 ISnapshotInfo snapshotInfo
= fService
.getSnapshotInfo("mysession", new NullProgressMonitor());
1441 assertNotNull(snapshotInfo
);
1442 assertEquals("snapshot-1", snapshotInfo
.getName());
1443 assertEquals("/home/user/lttng-traces/mysession-20130913-141651", snapshotInfo
.getSnapshotPath());
1444 assertEquals(1, snapshotInfo
.getId());
1445 assertTrue(!snapshotInfo
.isStreamedSnapshot());
1447 // we need to set the snapshotInfo to so that the session path is set correctly
1448 sessionInfo
.setSnapshotInfo(snapshotInfo
);
1449 assertEquals("/home/user/lttng-traces/mysession-20130913-141651", sessionInfo
.getSessionPath());
1451 fService
.recordSnapshot("mysession", new NullProgressMonitor());
1453 fService
.destroySession("mysession", new NullProgressMonitor());
1455 } catch (ExecutionException e
) {
1460 public void testCreateStreamedSnapshotSession() {
1462 fShell
.setScenario(SCEN_CREATE_STREAMED_SNAPSHOT_SESSION
);
1464 ISessionInfo params
= new SessionInfo("mysession");
1465 params
.setNetworkUrl("net://172.0.0.1");
1466 ISessionInfo sessionInfo
= fService
.createSession(params
, new NullProgressMonitor());
1467 assertNotNull(sessionInfo
);
1468 assertEquals("mysession", sessionInfo
.getName());
1469 assertTrue(sessionInfo
.isSnapshotSession());
1471 assertEquals(TraceSessionState
.INACTIVE
, sessionInfo
.getSessionState());
1472 assertTrue(sessionInfo
.isStreamedTrace());
1474 List
<String
> names
= fService
.getSessionNames(new NullProgressMonitor());
1475 assertEquals(names
.get(0), "mysession");
1477 ISnapshotInfo snapshotInfo
= sessionInfo
.getSnapshotInfo();
1478 assertNotNull(sessionInfo
);
1479 assertEquals("snapshot-2", snapshotInfo
.getName());
1480 assertEquals("net4://172.0.0.1:5342/", snapshotInfo
.getSnapshotPath());
1481 assertEquals(2, snapshotInfo
.getId());
1482 assertTrue(snapshotInfo
.isStreamedSnapshot());
1484 // we need to set the snapshotInfo to so that the session path is set correctly
1485 sessionInfo
.setSnapshotInfo(snapshotInfo
);
1486 assertEquals("net4://172.0.0.1:5342/", sessionInfo
.getSessionPath());
1488 fService
.recordSnapshot("mysession", new NullProgressMonitor());
1490 fService
.destroySession("mysession", new NullProgressMonitor());
1492 } catch (ExecutionException e
) {
1498 public void testCreateSnapshotSessionErrors() {
1500 fShell
.setScenario(SCEN_CREATE_SNAPSHOT_SESSION_ERRORS
);
1502 List
<String
> names
= fService
.getSessionNames(new NullProgressMonitor());
1503 assertEquals(names
.get(0), "mysession");
1504 } catch (ExecutionException e
) {
1509 fService
.getSnapshotInfo("blabla", new NullProgressMonitor());
1510 fail("getSnapshoInfo() didn't fail");
1511 } catch (ExecutionException e
) {
1516 fService
.recordSnapshot("blabla", new NullProgressMonitor());
1517 fail("getSnapshoInfo() didn't fail");
1518 } catch (ExecutionException e
) {
1523 fService
.recordSnapshot("mysession", new NullProgressMonitor());
1524 fail("getSnapshoInfo() didn't fail");
1525 } catch (ExecutionException e
) {
1531 public void testCreateLiveSession() throws ExecutionException
{
1532 fShell
.setScenario(SCEN_CREATE_LIVE_SESSION
);
1534 ISessionInfo params
= new SessionInfo("mysession");
1535 params
.setLive(true);
1536 params
.setStreamedTrace(true);
1537 params
.setNetworkUrl("net://127.0.0.1");
1538 ISessionInfo sessionInfo
= fService
.createSession(params
, new NullProgressMonitor());
1539 assertNotNull(sessionInfo
);
1540 assertEquals("mysession", sessionInfo
.getName());
1541 assertEquals(TraceSessionState
.INACTIVE
, sessionInfo
.getSessionState());
1542 assertTrue(sessionInfo
.isStreamedTrace());
1543 assertTrue(sessionInfo
.isLive());
1544 assertEquals("net://127.0.0.1", sessionInfo
.getSessionPath());
1545 List
<String
> names
= fService
.getSessionNames(new NullProgressMonitor());
1546 assertEquals(names
.get(0), "mysession");
1547 fService
.destroySession("mysession", new NullProgressMonitor());
1551 public void testCreateLiveSessionErrors() {
1553 fShell
.setScenario(SCEN_CREATE_LIVE_SESSION_ERRORS
);
1555 ISessionInfo parameters
= new SessionInfo("mysession");
1556 parameters
.setLive(true);
1557 parameters
.setSnapshot(true);
1558 fService
.createSession(parameters
, new NullProgressMonitor());
1559 fail("createSession() didn't fail");
1560 } catch (ExecutionException e
) {
1565 ISessionInfo parameters
= new SessionInfo("mysession");
1566 parameters
.setNetworkUrl("blah");
1567 parameters
.setLive(true);
1568 fService
.createSession(parameters
, new NullProgressMonitor());
1569 fail("createSession() didn't fail");
1570 } catch (ExecutionException e
) {
1575 ISessionInfo parameters
= new SessionInfo("mysession");
1576 parameters
.setControlUrl("net://127.0.0.1");
1577 parameters
.setLive(true);
1578 fService
.createSession(parameters
, new NullProgressMonitor());
1579 fail("createSession() didn't fail");
1580 } catch (ExecutionException e
) {
1586 public void testSessionProfile() {
1587 fShell
.setScenario(SCEN_SESSION_PROFILES
);
1588 final String profile
= "/home/user/.lttng/sessions/mysession.lttng";
1590 fService
.loadSession(profile
, false, new NullProgressMonitor());
1591 } catch (ExecutionException e
) {
1592 fail("load session failed: " + e
);
1596 fService
.loadSession(profile
, true, new NullProgressMonitor());
1597 } catch (ExecutionException e
) {
1598 fail("load session failed: " + e
);
1602 fService
.saveSession(null, null, false, new NullProgressMonitor());
1603 } catch (ExecutionException e
) {
1604 fail("save session failed: " + e
);
1607 final String sessionName
= "mysession";
1609 fService
.saveSession(sessionName
, null, false, new NullProgressMonitor());
1610 } catch (ExecutionException e
) {
1611 fail("save session failed: " + e
);
1615 fService
.saveSession(sessionName
, null, true, new NullProgressMonitor());
1616 } catch (ExecutionException e
) {
1617 fail("save session failed: " + e
);
1621 fService
.saveSession(sessionName
, "/tmp/test", true, new NullProgressMonitor());
1622 } catch (ExecutionException e
) {
1623 fail("save session failed: " + e
);
1627 private static void enableVerbose() {
1629 ControlCommandLogger
.init(ControlPreferences
.getInstance().getLogfilePath(), false);
1630 ControlPreferences
.getInstance().getPreferenceStore().setDefault(ControlPreferences
.TRACE_CONTROL_LOG_COMMANDS_PREF
, true);
1631 ControlPreferences
.getInstance().getPreferenceStore().setDefault(ControlPreferences
.TRACE_CONTROL_VERBOSE_LEVEL_PREF
, ControlPreferences
.TRACE_CONTROL_VERBOSE_LEVEL_V_V_VERBOSE
);
1634 private static void disableVerbose() {
1635 ControlPreferences
.getInstance().getPreferenceStore().setDefault(ControlPreferences
.TRACE_CONTROL_LOG_COMMANDS_PREF
, false);