tmf: Use ConcurrentHashMap in TmfStatisticsTreeNode
[deliverable/tracecompass.git] / org.eclipse.linuxtools.lttng2.ui.tests / src / org / eclipse / linuxtools / lttng2 / ui / tests / control / service / LTTngControlServiceTest.java
CommitLineData
eb1bab5b 1/**********************************************************************
60ae41e1 2 * Copyright (c) 2012, 2014 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
d128c979
BH
16import static org.junit.Assert.assertEquals;
17import static org.junit.Assert.assertNotNull;
18import static org.junit.Assert.assertTrue;
19import static org.junit.Assert.fail;
2ba3d0a1 20
d132bcc7
BH
21import java.io.File;
22import java.net.URL;
23import java.util.ArrayList;
4ea599a5 24import java.util.HashSet;
eb1bab5b 25import java.util.List;
4ea599a5 26import java.util.Set;
eb1bab5b 27
eb1bab5b 28import org.eclipse.core.commands.ExecutionException;
d132bcc7 29import org.eclipse.core.runtime.FileLocator;
bbb3538a 30import org.eclipse.core.runtime.NullProgressMonitor;
d132bcc7 31import org.eclipse.core.runtime.Path;
9315aeee
BH
32import org.eclipse.linuxtools.internal.lttng2.core.control.model.IBaseEventInfo;
33import org.eclipse.linuxtools.internal.lttng2.core.control.model.IChannelInfo;
34import org.eclipse.linuxtools.internal.lttng2.core.control.model.IDomainInfo;
35import org.eclipse.linuxtools.internal.lttng2.core.control.model.IEventInfo;
d4514365 36import org.eclipse.linuxtools.internal.lttng2.core.control.model.IFieldInfo;
9315aeee 37import org.eclipse.linuxtools.internal.lttng2.core.control.model.ISessionInfo;
589d0d33 38import org.eclipse.linuxtools.internal.lttng2.core.control.model.ISnapshotInfo;
9315aeee
BH
39import org.eclipse.linuxtools.internal.lttng2.core.control.model.IUstProviderInfo;
40import org.eclipse.linuxtools.internal.lttng2.core.control.model.LogLevelType;
41import org.eclipse.linuxtools.internal.lttng2.core.control.model.TraceEnablement;
42import org.eclipse.linuxtools.internal.lttng2.core.control.model.TraceEventType;
43import org.eclipse.linuxtools.internal.lttng2.core.control.model.TraceLogLevel;
44import org.eclipse.linuxtools.internal.lttng2.core.control.model.TraceSessionState;
83051fc3 45import org.eclipse.linuxtools.internal.lttng2.core.control.model.impl.BufferType;
9315aeee 46import org.eclipse.linuxtools.internal.lttng2.core.control.model.impl.ChannelInfo;
115b4a01
BH
47import org.eclipse.linuxtools.internal.lttng2.stubs.service.CommandShellFactory;
48import org.eclipse.linuxtools.internal.lttng2.stubs.shells.LTTngToolsFileShell;
d128c979
BH
49import org.eclipse.linuxtools.internal.lttng2.ui.Activator;
50import org.eclipse.linuxtools.internal.lttng2.ui.views.control.logging.ControlCommandLogger;
51import org.eclipse.linuxtools.internal.lttng2.ui.views.control.preferences.ControlPreferences;
115b4a01
BH
52import org.eclipse.linuxtools.internal.lttng2.ui.views.control.service.ILttngControlService;
53import org.eclipse.linuxtools.internal.lttng2.ui.views.control.service.LTTngControlService;
276c17e7 54import org.eclipse.linuxtools.internal.lttng2.ui.views.control.service.LTTngControlServiceFactory;
d128c979 55import org.junit.After;
2ba3d0a1
AM
56import org.junit.Before;
57import org.junit.Test;
9269df72 58import org.osgi.framework.FrameworkUtil;
2ba3d0a1 59
eb1bab5b 60/**
2ba3d0a1
AM
61 * The class <code>LTTngControlServiceTest</code> contains test for the class
62 * <code>{@link LTTngControlService}</code>.
eb1bab5b 63 */
4e0b52e0 64@SuppressWarnings("javadoc")
2ba3d0a1 65public class LTTngControlServiceTest {
d132bcc7
BH
66
67 private static final String DIRECTORY = "testfiles";
68 private static final String TEST_STREAM = "LTTngServiceTest.cfg";
cfdb727a 69
d132bcc7 70 private static final String SCEN_LTTNG_NOT_INSTALLED = "LttngNotInstalled";
276c17e7 71 private static final String SCEN_LTTNG_VERSION = "LttngVersion";
d6fc6e1b 72 private static final String SCEN_LTTNG_VERSION_WITH_PROMPT = "LttngVersionWithPrompt";
276c17e7
BH
73 private static final String SCEN_LTTNG_UNSUPPORTED_VERSION = "LttngUnsupportedVersion";
74 private static final String SCEN_LTTNG_NO_VERSION = "LttngNoVersion";
d132bcc7
BH
75 private static final String SCEN_NO_SESSION_AVAILABLE = "NoSessionAvailable";
76 private static final String SCEN_GET_SESSION_NAMES1 = "GetSessionNames1";
77 private static final String SCEN_GET_SESSION_NAME_NOT_EXIST = "GetSessionNameNotExist";
d128c979 78 private static final String SCEN_GET_SESSION_NAME_NOT_EXIST_VERBOSE = "GetSessionNameNotExistVerbose";
d132bcc7
BH
79 private static final String SCEN_GET_SESSION_GARBAGE_OUT = "GetSessionGarbageOut";
80 private static final String SCEN_GET_SESSION1 = "GetSession1";
81 private static final String SCEN_GET_KERNEL_PROVIDER1 = "GetKernelProvider1";
a07c7629
BH
82 private static final String SCEN_LIST_WITH_NO_KERNEL1 = "ListWithNoKernel1";
83 private static final String SCEN_LIST_WITH_NO_KERNEL2 = "ListWithNoKernel2";
d128c979 84 private static final String SCEN_LIST_WITH_NO_KERNEL_VERBOSE = "ListWithNoKernelVerbose";
d132bcc7
BH
85 private static final String SCEN_GET_UST_PROVIDER1 = "GetUstProvider1";
86 private static final String SCEN_GET_UST_PROVIDER2 = "GetUstProvider2";
d4514365 87 private static final String SCEN_GET_UST_PROVIDER3 = "GetUstProvider3";
f3e2f354
BH
88 private static final String SCEN_LIST_WITH_NO_UST1 = "ListWithNoUst1";
89 private static final String SCEN_LIST_WITH_NO_UST2 = "ListWithNoUst2";
90 private static final String SCEN_LIST_WITH_NO_UST3 = "ListWithNoUst3";
91 private static final String SCEN_LIST_WITH_NO_UST_VERBOSE = "ListWithNoUstVerbose";
d132bcc7 92 private static final String SCEN_CREATE_SESSION1 = "CreateSession1";
d6fc6e1b 93 private static final String SCEN_CREATE_SESSION_WITH_PROMPT = "CreateSessionWithPrompt";
d132bcc7
BH
94 private static final String SCEN_CREATE_SESSION_VARIANTS = "CreateSessionVariants";
95 private static final String SCEN_DESTROY_SESSION1 = "DestroySession1";
d128c979 96 private static final String SCEN_DESTROY_SESSION_VERBOSE = "DestroySessionVerbose";
d132bcc7
BH
97 private static final String SCEN_CHANNEL_HANDLING = "ChannelHandling";
98 private static final String SCEN_EVENT_HANDLING = "EventHandling";
4ea599a5
BH
99 private static final String SCEN_CONTEXT_HANDLING = "ContextHandling";
100 private static final String SCEN_CONTEXT_ERROR_HANDLING = "ContextErrorHandling";
101 private static final String SCEN_CALIBRATE_HANDLING = "CalibrateHandling";
f3b33d40 102 private static final String SCEN_CREATE_SESSION_2_1 = "CreateSessionLttng2.1";
d128c979 103 private static final String SCEN_CREATE_SESSION_VERBOSE_2_1 = "CreateSessionLttngVerbose2.1";
589d0d33
BH
104 private static final String SCEN_CREATE_SNAPSHOT_SESSION = "CreateSessionSnapshot";
105 private static final String SCEN_CREATE_STREAMED_SNAPSHOT_SESSION = "CreateSessionStreamedSnapshot";
106 private static final String SCEN_CREATE_SNAPSHOT_SESSION_ERRORS = "CreateSessionSnapshotErrors";
d132bcc7 107
eb1bab5b
BH
108 // ------------------------------------------------------------------------
109 // Test data
110 // ------------------------------------------------------------------------
2ba3d0a1 111
d132bcc7
BH
112 private CommandShellFactory fShellFactory;
113 private String fTestfile;
114 private LTTngToolsFileShell fShell;
115 private ILttngControlService fService;
116
eb1bab5b
BH
117 // ------------------------------------------------------------------------
118 // Housekeeping
119 // ------------------------------------------------------------------------
2ba3d0a1 120
eb1bab5b
BH
121 /**
122 * Perform pre-test initialization.
123 *
2ba3d0a1
AM
124 * @throws Exception
125 * if the initialization fails for some reason
eb1bab5b 126 */
2ba3d0a1 127 @Before
eb1bab5b 128 public void setUp() throws Exception {
eb1bab5b 129 fShellFactory = CommandShellFactory.getInstance();
d132bcc7 130
9269df72 131 URL location = FileLocator.find(FrameworkUtil.getBundle(this.getClass()), new Path(DIRECTORY + File.separator + TEST_STREAM), null);
d132bcc7
BH
132 File testfile = new File(FileLocator.toFileURL(location).toURI());
133 fTestfile = testfile.getAbsolutePath();
cfdb727a 134
d132bcc7
BH
135 fShell = fShellFactory.getFileShell();
136 fShell.loadScenarioFile(fTestfile);
137 fService = new LTTngControlService(fShell);
d128c979
BH
138
139 ControlPreferences.getInstance().init(Activator.getDefault().getPreferenceStore());
140 }
141
142 @After
143 public void tearDown() {
144 disableVerbose();
145 ControlPreferences.getInstance().dispose();
eb1bab5b
BH
146 }
147
eb1bab5b
BH
148 // ------------------------------------------------------------------------
149 // Test Cases
150 // ------------------------------------------------------------------------
cfdb727a 151
2ba3d0a1 152 @Test
276c17e7
BH
153 public void testVersion() {
154 try {
155 fShell.setScenario(SCEN_LTTNG_VERSION);
cfdb727a 156 ILttngControlService service = LTTngControlServiceFactory.getInstance().getLttngControlService(fShell);
276c17e7 157 assertNotNull(service);
cfe737e4 158 assertEquals("2.1.0", service.getVersion());
276c17e7
BH
159 } catch (ExecutionException e) {
160 fail("Exeption thrown " + e);
161 }
162 }
cfdb727a 163
2ba3d0a1 164 @Test
d6fc6e1b
BH
165 public void testVersionWithPrompt() {
166 try {
167 fShell.setScenario(SCEN_LTTNG_VERSION_WITH_PROMPT);
168 ILttngControlService service = LTTngControlServiceFactory.getInstance().getLttngControlService(fShell);
169 assertNotNull(service);
170 assertEquals("2.0.0", service.getVersion());
171 } catch (ExecutionException e) {
172 fail("Exeption thrown " + e);
173 }
174 }
a07c7629 175
2ba3d0a1 176 @Test
276c17e7
BH
177 public void testUnsupportedVersion() {
178 try {
179 fShell.setScenario(SCEN_LTTNG_UNSUPPORTED_VERSION);
cfdb727a 180 LTTngControlServiceFactory.getInstance().getLttngControlService(fShell);
276c17e7
BH
181 fail("No exeption thrown");
182 } catch (ExecutionException e) {
183 // success
184 }
185 }
186
2ba3d0a1 187 @Test
276c17e7
BH
188 public void testNoVersion() {
189 try {
190 fShell.setScenario(SCEN_LTTNG_NO_VERSION);
cfdb727a 191 LTTngControlServiceFactory.getInstance().getLttngControlService(fShell);
276c17e7
BH
192 fail("No exeption thrown");
193 } catch (ExecutionException e) {
194 // success
195 }
196 }
197
2ba3d0a1 198 @Test
276c17e7 199 public void testLttngNotInstalled() {
eb1bab5b 200 try {
d132bcc7
BH
201 fShell.setScenario(SCEN_LTTNG_NOT_INSTALLED);
202 fService.getSessionNames(new NullProgressMonitor());
eb1bab5b 203 fail("No exeption thrown");
eb1bab5b
BH
204 } catch (ExecutionException e) {
205 // success
206 }
207 }
cfdb727a 208
2ba3d0a1 209 @Test
eb1bab5b
BH
210 public void testGetSessionNames1() {
211 try {
d132bcc7
BH
212 fShell.setScenario(SCEN_NO_SESSION_AVAILABLE);
213 String[] result = fService.getSessionNames(new NullProgressMonitor());
eb1bab5b
BH
214
215 assertNotNull(result);
216 assertEquals(0, result.length);
cfdb727a 217
eb1bab5b
BH
218 } catch (ExecutionException e) {
219 fail(e.toString());
220 }
221 }
d132bcc7 222
2ba3d0a1 223 @Test
eb1bab5b
BH
224 public void testGetSessionNames2() {
225 try {
d132bcc7
BH
226 fShell.setScenario(SCEN_GET_SESSION_NAMES1);
227 String[] result = fService.getSessionNames(new NullProgressMonitor());
eb1bab5b
BH
228
229 assertNotNull(result);
230 assertEquals(2, result.length);
231 assertEquals("mysession1", result[0]);
232 assertEquals("mysession", result[1]);
cfdb727a 233
eb1bab5b
BH
234 } catch (ExecutionException e) {
235 fail(e.toString());
236 }
237 }
d132bcc7 238
2ba3d0a1 239 @Test
eb1bab5b
BH
240 public void testGetSessionNotExist() {
241 try {
d132bcc7
BH
242 fShell.setScenario(SCEN_GET_SESSION_NAME_NOT_EXIST);
243 fService.getSessionNames(new NullProgressMonitor());
eb1bab5b 244 fail("No exeption thrown");
cfdb727a 245
eb1bab5b
BH
246 } catch (ExecutionException e) {
247 // success
248 }
249 }
cfdb727a 250
d128c979
BH
251 @Test
252 public void testGetSessionNotExistVerbose() {
253 try {
254 enableVerbose();
255 fShell.setScenario(SCEN_GET_SESSION_NAME_NOT_EXIST_VERBOSE);
256 fService.getSessionNames(new NullProgressMonitor());
257 fail("No exeption thrown");
258
259 } catch (ExecutionException e) {
260 // success
261 } finally {
262 disableVerbose();
263 }
264 }
265
2ba3d0a1 266 @Test
eb1bab5b
BH
267 public void testGetSessionNameGarbage() {
268 try {
d132bcc7
BH
269 fShell.setScenario(SCEN_GET_SESSION_GARBAGE_OUT);
270 String[] result = fService.getSessionNames(new NullProgressMonitor());
eb1bab5b
BH
271
272 assertNotNull(result);
273 assertEquals(0, result.length);
cfdb727a 274
eb1bab5b
BH
275 } catch (ExecutionException e) {
276 fail(e.toString());
277 }
278 }
cfdb727a 279
2ba3d0a1 280 @Test
eb1bab5b
BH
281 public void testGetSession1() {
282 try {
d132bcc7
BH
283 fShell.setScenario(SCEN_GET_SESSION1);
284 ISessionInfo session = fService.getSession("mysession", new NullProgressMonitor());
eb1bab5b
BH
285
286 // Verify Session
287 assertNotNull(session);
288 assertEquals("mysession", session.getName());
289 assertEquals("/home/user/lttng-traces/mysession-20120129-084256", session.getSessionPath());
290 assertEquals(TraceSessionState.ACTIVE, session.getSessionState());
cfdb727a 291
eb1bab5b
BH
292 IDomainInfo[] domains = session.getDomains();
293 assertNotNull(domains);
294 assertEquals(2, domains.length);
cfdb727a 295
eb1bab5b
BH
296 // Verify Kernel domain
297 assertEquals("Kernel", domains[0].getName());
298 IChannelInfo[] channels = domains[0].getChannels();
299 assertNotNull(channels);
300 assertEquals(2, channels.length);
301
cfdb727a 302 // Verify Kernel's channel0
eb1bab5b
BH
303 assertEquals("channel0", channels[0].getName());
304 assertEquals(4, channels[0].getNumberOfSubBuffers());
305 assertEquals("splice()", channels[0].getOutputType());
306 assertEquals(false, channels[0].isOverwriteMode());
307 assertEquals(200, channels[0].getReadTimer());
308 assertEquals(TraceEnablement.ENABLED, channels[0].getState());
309 assertEquals(262144, channels[0].getSubBufferSize());
310 assertEquals(0, channels[0].getSwitchTimer());
cfdb727a 311
eb1bab5b
BH
312 // Verify event info
313 IEventInfo[] channel0Events = channels[0].getEvents();
314 assertNotNull(channel0Events);
315 assertEquals(2, channel0Events.length);
316 assertEquals("block_rq_remap", channel0Events[0].getName());
317 assertEquals(TraceLogLevel.TRACE_EMERG, channel0Events[0].getLogLevel());
318 assertEquals(TraceEventType.TRACEPOINT, channel0Events[0].getEventType());
319 assertEquals(TraceEnablement.ENABLED, channel0Events[0].getState());
cfdb727a 320
eb1bab5b
BH
321 assertEquals("block_bio_remap", channel0Events[1].getName());
322 assertEquals(TraceLogLevel.TRACE_EMERG, channel0Events[1].getLogLevel());
323 assertEquals(TraceEventType.TRACEPOINT, channel0Events[1].getEventType());
324 assertEquals(TraceEnablement.DISABLED, channel0Events[1].getState());
cfdb727a
AM
325
326 // Verify Kernel's channel1
eb1bab5b
BH
327 assertEquals("channel1", channels[1].getName());
328 assertEquals(4, channels[1].getNumberOfSubBuffers());
329 assertEquals("splice()", channels[1].getOutputType());
330 assertEquals(true, channels[1].isOverwriteMode());
331 assertEquals(400, channels[1].getReadTimer());
332 assertEquals(TraceEnablement.DISABLED, channels[1].getState());
333 assertEquals(524288, channels[1].getSubBufferSize());
334 assertEquals(100, channels[1].getSwitchTimer());
cfdb727a 335
eb1bab5b
BH
336 // Verify event info
337 IEventInfo[] channel1Events = channels[1].getEvents();
338 assertEquals(0, channel1Events.length);
cfdb727a 339
eb1bab5b
BH
340 // Verify domain UST global
341 assertEquals("UST global", domains[1].getName());
cfdb727a 342
eb1bab5b 343 IChannelInfo[] ustChannels = domains[1].getChannels();
cfdb727a
AM
344
345 // Verify UST global's mychannel1
eb1bab5b
BH
346 assertEquals("mychannel1", ustChannels[0].getName());
347 assertEquals(8, ustChannels[0].getNumberOfSubBuffers());
348 assertEquals("mmap()", ustChannels[0].getOutputType());
349 assertEquals(true, ustChannels[0].isOverwriteMode());
350 assertEquals(100, ustChannels[0].getReadTimer());
351 assertEquals(TraceEnablement.DISABLED, ustChannels[0].getState());
352 assertEquals(8192, ustChannels[0].getSubBufferSize());
353 assertEquals(200, ustChannels[0].getSwitchTimer());
cfdb727a 354
eb1bab5b
BH
355 // Verify event info
356 IEventInfo[] ustEvents = ustChannels[0].getEvents();
357 assertEquals(0, ustEvents.length);
358
cfdb727a 359 // Verify UST global's channel0
eb1bab5b
BH
360 assertEquals("channel0", ustChannels[1].getName());
361 assertEquals(4, ustChannels[1].getNumberOfSubBuffers());
362 assertEquals("mmap()", ustChannels[1].getOutputType());
363 assertEquals(false, ustChannels[1].isOverwriteMode());
364 assertEquals(200, ustChannels[1].getReadTimer());
365 assertEquals(TraceEnablement.ENABLED, ustChannels[1].getState());
366 assertEquals(4096, ustChannels[1].getSubBufferSize());
367 assertEquals(0, ustChannels[1].getSwitchTimer());
cfdb727a 368
eb1bab5b
BH
369 // Verify event info
370 ustEvents = ustChannels[1].getEvents();
371 assertEquals(2, ustEvents.length);
cfdb727a 372
eb1bab5b 373 assertEquals("ust_tests_hello:tptest_sighandler", ustEvents[0].getName());
4775bcbf 374 assertEquals(TraceLogLevel.TRACE_DEBUG_LINE, ustEvents[0].getLogLevel());
eb1bab5b
BH
375 assertEquals(TraceEventType.TRACEPOINT, ustEvents[0].getEventType());
376 assertEquals(TraceEnablement.DISABLED, ustEvents[0].getState());
cfdb727a 377
eb1bab5b 378 assertEquals("*", ustEvents[1].getName());
4775bcbf 379 assertEquals(TraceLogLevel.LEVEL_UNKNOWN, ustEvents[1].getLogLevel());
eb1bab5b
BH
380 assertEquals(TraceEventType.TRACEPOINT, ustEvents[1].getEventType());
381 assertEquals(TraceEnablement.ENABLED, ustEvents[1].getState());
cfdb727a 382
eb1bab5b 383 // next session (no detailed information available)
d132bcc7 384 session = fService.getSession("mysession1", new NullProgressMonitor());
eb1bab5b
BH
385 assertNotNull(session);
386 assertEquals("mysession1", session.getName());
387 assertEquals("/home/user/lttng-traces/mysession1-20120203-133225", session.getSessionPath());
388 assertEquals(TraceSessionState.INACTIVE, session.getSessionState());
cfdb727a 389
eb1bab5b
BH
390 domains = session.getDomains();
391 assertNotNull(domains);
392 assertEquals(0, domains.length);
393 } catch (ExecutionException e) {
394 fail(e.toString());
395 }
396 }
397
398 public void testGetKernelProvider() {
399 try {
d132bcc7
BH
400 fShell.setScenario(SCEN_GET_KERNEL_PROVIDER1);
401 List<IBaseEventInfo> events = fService.getKernelProvider(new NullProgressMonitor());
eb1bab5b
BH
402
403 // Verify event info
404 assertNotNull(events);
405 assertEquals(3, events.size());
cfdb727a
AM
406
407 IBaseEventInfo baseEventInfo = events.get(0);
eb1bab5b
BH
408 assertNotNull(baseEventInfo);
409 assertEquals("sched_kthread_stop", baseEventInfo.getName());
410 assertEquals(TraceLogLevel.TRACE_EMERG, baseEventInfo.getLogLevel());
411 assertEquals(TraceEventType.TRACEPOINT, baseEventInfo.getEventType());
cfdb727a
AM
412
413 baseEventInfo = events.get(1);
eb1bab5b
BH
414 assertEquals("sched_kthread_stop_ret", baseEventInfo.getName());
415 assertEquals(TraceLogLevel.TRACE_EMERG, baseEventInfo.getLogLevel());
416 assertEquals(TraceEventType.TRACEPOINT, baseEventInfo.getEventType());
cfdb727a
AM
417
418 baseEventInfo = events.get(2);
eb1bab5b
BH
419 assertEquals("sched_wakeup_new", baseEventInfo.getName());
420 assertEquals(TraceLogLevel.TRACE_EMERG, baseEventInfo.getLogLevel());
421 assertEquals(TraceEventType.TRACEPOINT, baseEventInfo.getEventType());
422
423 } catch (ExecutionException e) {
424 fail(e.toString());
425 }
426 }
427
2ba3d0a1 428 @Test
a07c7629
BH
429 public void testGetKernelProviderNoKernel1() {
430 try {
431 fShell.setScenario(SCEN_LIST_WITH_NO_KERNEL1);
432 List<IBaseEventInfo> events = fService.getKernelProvider(new NullProgressMonitor());
433
434 // Verify event info
435 assertNotNull(events);
436 assertEquals(0, events.size());
437
438 } catch (ExecutionException e) {
439 fail(e.toString());
440 }
441 }
442
2ba3d0a1 443 @Test
a07c7629
BH
444 public void testGetKernelProviderNoKernel2() {
445 try {
446 fShell.setScenario(SCEN_LIST_WITH_NO_KERNEL2);
447 List<IBaseEventInfo> events = fService.getKernelProvider(new NullProgressMonitor());
448
449 // Verify event info
450 assertNotNull(events);
451 assertEquals(0, events.size());
452
453 } catch (ExecutionException e) {
454 fail(e.toString());
455 }
456 }
457
d128c979
BH
458 @Test
459 public void testGetKernelProviderNoKernelVerbose() {
460 try {
461 enableVerbose();
462 fShell.setScenario(SCEN_LIST_WITH_NO_KERNEL_VERBOSE);
463 List<IBaseEventInfo> events = fService.getKernelProvider(new NullProgressMonitor());
464
465 // Verify event info
466 assertNotNull(events);
467 assertEquals(0, events.size());
468
469 } catch (ExecutionException e) {
470 fail(e.toString());
471 } finally {
472 disableVerbose();
473 }
474 }
475
2ba3d0a1 476 @Test
eb1bab5b
BH
477 public void testGetUstProvider() {
478 try {
d132bcc7
BH
479 fShell.setScenario(SCEN_GET_UST_PROVIDER1);
480 List<IUstProviderInfo> providers = fService.getUstProvider();
eb1bab5b
BH
481
482 // Check all providers
483 assertNotNull(providers);
484 assertEquals(2, providers.size());
cfdb727a 485
eb1bab5b
BH
486 //Verify first provider
487 assertEquals("/home/user/git/lttng-ust/tests/hello.cxx/.libs/lt-hello", providers.get(0).getName());
488 assertEquals(9379, providers.get(0).getPid());
cfdb727a 489
eb1bab5b
BH
490 // Verify event info
491 IBaseEventInfo[] events = providers.get(0).getEvents();
492 assertNotNull(events);
493 assertEquals(2, events.length);
494
cfdb727a 495 IBaseEventInfo baseEventInfo = events[0];
eb1bab5b
BH
496 assertNotNull(baseEventInfo);
497 assertEquals("ust_tests_hello:tptest_sighandler", baseEventInfo.getName());
4775bcbf 498 assertEquals(TraceLogLevel.TRACE_DEBUG_MODULE, baseEventInfo.getLogLevel());
eb1bab5b 499 assertEquals(TraceEventType.TRACEPOINT, baseEventInfo.getEventType());
cfdb727a
AM
500
501 baseEventInfo = events[1];
eb1bab5b
BH
502 assertEquals("ust_tests_hello:tptest", baseEventInfo.getName());
503 assertEquals(TraceLogLevel.TRACE_INFO, baseEventInfo.getLogLevel());
504 assertEquals(TraceEventType.TRACEPOINT, baseEventInfo.getEventType());
505
506 //Verify second provider
507 assertEquals("/home/user/git/lttng-ust/tests/hello.cxx/.libs/lt-hello", providers.get(1).getName());
508 assertEquals(4852, providers.get(1).getPid());
cfdb727a 509
eb1bab5b
BH
510 // Verify event info
511 events = providers.get(1).getEvents();
512 assertNotNull(events);
513 assertEquals(2, events.length);
514
cfdb727a 515 baseEventInfo = events[0];
eb1bab5b
BH
516 assertNotNull(baseEventInfo);
517 assertEquals("ust_tests_hello:tptest_sighandler", baseEventInfo.getName());
518 assertEquals(TraceLogLevel.TRACE_WARNING, baseEventInfo.getLogLevel());
519 assertEquals(TraceEventType.TRACEPOINT, baseEventInfo.getEventType());
cfdb727a
AM
520
521 baseEventInfo = events[1];
eb1bab5b 522 assertEquals("ust_tests_hello:tptest", baseEventInfo.getName());
4775bcbf 523 assertEquals(TraceLogLevel.TRACE_DEBUG_FUNCTION, baseEventInfo.getLogLevel());
eb1bab5b
BH
524 assertEquals(TraceEventType.TRACEPOINT, baseEventInfo.getEventType());
525
526 } catch (ExecutionException e) {
527 fail(e.toString());
528 }
529 }
d132bcc7 530
2ba3d0a1 531 @Test
eb1bab5b
BH
532 public void testUstProvider2() {
533 try {
d132bcc7
BH
534 fShell.setScenario(SCEN_GET_UST_PROVIDER2);
535 List<IUstProviderInfo> providers = fService.getUstProvider();
eb1bab5b
BH
536
537 assertNotNull(providers);
538 assertEquals(0, providers.size());
cfdb727a 539
eb1bab5b
BH
540 } catch (ExecutionException e) {
541 fail(e.toString());
542 }
543 }
d132bcc7 544
2ba3d0a1 545 @Test
d4514365
BH
546 public void testGetUstProvider3() {
547 try {
548 fShell.setScenario(SCEN_GET_UST_PROVIDER3);
549 // Set version
550 ((LTTngControlService)fService).setVersion("2.1.0");
551 List<IUstProviderInfo> providers = fService.getUstProvider();
552
553 // Check all providers
554 assertNotNull(providers);
555 assertEquals(2, providers.size());
556
557 //Verify first provider
558 assertEquals("/home/user/git/lttng-ust/tests/hello.cxx/.libs/lt-hello", providers.get(0).getName());
559 assertEquals(9379, providers.get(0).getPid());
560
561 // Verify event info
562 IBaseEventInfo[] events = providers.get(0).getEvents();
563 assertNotNull(events);
564 assertEquals(2, events.length);
565
566 IBaseEventInfo baseEventInfo = events[0];
567 assertNotNull(baseEventInfo);
568 IFieldInfo[] fields = baseEventInfo.getFields();
569 assertNotNull(fields);
570 assertEquals(0, fields.length);
571
572 baseEventInfo = events[1];
573 fields = baseEventInfo.getFields();
574 assertNotNull(fields);
575 assertEquals(3, fields.length);
576 assertEquals("doublefield", fields[0].getName());
577 assertEquals("float", fields[0].getFieldType());
578
579 assertEquals("floatfield", fields[1].getName());
580 assertEquals("float", fields[1].getFieldType());
581
582 assertEquals("stringfield", fields[2].getName());
583 assertEquals("string", fields[2].getFieldType());
584
585 //Verify second provider
586 assertEquals("/home/user/git/lttng-ust/tests/hello.cxx/.libs/lt-hello", providers.get(1).getName());
587 assertEquals(4852, providers.get(1).getPid());
588
589 // Verify event info
590 events = providers.get(1).getEvents();
591 assertNotNull(events);
592 assertEquals(2, events.length);
593
594 baseEventInfo = events[0];
595 assertNotNull(baseEventInfo);
596 fields = baseEventInfo.getFields();
597 assertNotNull(fields);
598 assertEquals(0, fields.length);
599
600 baseEventInfo = events[1];
601 fields = baseEventInfo.getFields();
602 assertNotNull(fields);
603 assertEquals(3, fields.length);
604
605 assertEquals("doublefield", fields[0].getName());
606 assertEquals("float", fields[0].getFieldType());
607
608 assertEquals("floatfield", fields[1].getName());
609 assertEquals("float", fields[1].getFieldType());
610
611 assertEquals("stringfield", fields[2].getName());
612 assertEquals("string", fields[2].getFieldType());
613
614 // Reset version
615 ((LTTngControlService)fService).setVersion("2.0.0");
616
617 } catch (ExecutionException e) {
618 fail(e.toString());
619 }
620 }
621
f3e2f354
BH
622
623 @Test
624 public void testGetKernelProviderNoUst1() {
625 try {
626 fShell.setScenario(SCEN_LIST_WITH_NO_UST1);
627 List<IUstProviderInfo> providerList = fService.getUstProvider(new NullProgressMonitor());
628
629 // Verify Provider info
630 assertNotNull(providerList);
631 assertEquals(0, providerList.size());
632
633 } catch (ExecutionException e) {
634 fail(e.toString());
635 }
636 }
637
638
639 @Test
640 public void testGetKernelProviderNoUst2() {
641 try {
642 // Set version
643 ((LTTngControlService)fService).setVersion("2.1.0");
644
645 fShell.setScenario(SCEN_LIST_WITH_NO_UST2);
646 List<IUstProviderInfo> providerList = fService.getUstProvider(new NullProgressMonitor());
647
648 // Verify Provider info
649 assertNotNull(providerList);
650 assertEquals(0, providerList.size());
651
652 // Reset version
653 ((LTTngControlService)fService).setVersion("2.0.0");
654
655 } catch (ExecutionException e) {
656 fail(e.toString());
657 }
658 }
659
660 @Test
661 public void testGetKernelProviderNoUst3() {
662 try {
663
664 // Set version
665 ((LTTngControlService)fService).setVersion("2.1.0");
666
667 fShell.setScenario(SCEN_LIST_WITH_NO_UST3);
668 List<IUstProviderInfo> providerList = fService.getUstProvider(new NullProgressMonitor());
669
670 // Verify provider info
671 assertNotNull(providerList);
672 assertEquals(0, providerList.size());
673
674 // Reset version
675 ((LTTngControlService)fService).setVersion("2.0.0");
676
677 } catch (ExecutionException e) {
678 fail(e.toString());
679 }
680 }
681
682 @Test
683 public void testGetKernelProviderNoUstVerbose() {
684 try {
685 enableVerbose();
686
687 // Set version
688 ((LTTngControlService)fService).setVersion("2.1.0");
689
690 fShell.setScenario(SCEN_LIST_WITH_NO_UST_VERBOSE);
691 List<IUstProviderInfo> providerList = fService.getUstProvider(new NullProgressMonitor());
692
693 // Verify provider info
694 assertNotNull(providerList);
695 assertEquals(0, providerList.size());
696
697 // Reset version
698 ((LTTngControlService)fService).setVersion("2.0.0");
699
700 } catch (ExecutionException e) {
701 fail(e.toString());
702 } finally {
703 disableVerbose();
704 }
705 }
706
707
708
2ba3d0a1 709 @Test
bbb3538a
BH
710 public void testCreateSession() {
711 try {
d132bcc7
BH
712 fShell.setScenario(SCEN_CREATE_SESSION1);
713
589d0d33 714 ISessionInfo info = fService.createSession("mysession2", null, false, new NullProgressMonitor());
bbb3538a
BH
715 assertNotNull(info);
716 assertEquals("mysession2", info.getName());
717 assertNotNull(info.getSessionPath());
718 assertTrue(info.getSessionPath().contains("mysession2"));
719 assertEquals(TraceSessionState.INACTIVE, info.getSessionState());
720 } catch (ExecutionException e) {
721 fail(e.toString());
722 }
723 }
d132bcc7 724
2ba3d0a1 725 @Test
d6fc6e1b
BH
726 public void testCreateSessionWithPrompt() {
727 try {
a07c7629 728 // First line has the shell prompt before the command output
d6fc6e1b
BH
729 // This can happen in a real application if the command line is not echoed by the shell.
730 fShell.setScenario(SCEN_CREATE_SESSION_WITH_PROMPT);
731
732 // First line has no shell prompt before the output
589d0d33 733 ISessionInfo info = fService.createSession("mysession2", null, false, new NullProgressMonitor());
d6fc6e1b
BH
734 assertNotNull(info);
735 assertEquals("mysession2", info.getName());
736 assertNotNull(info.getSessionPath());
737 assertTrue(info.getSessionPath().contains("mysession2"));
738 assertEquals(TraceSessionState.INACTIVE, info.getSessionState());
739 } catch (ExecutionException e) {
740 fail(e.toString());
741 }
742 }
743
2ba3d0a1 744 @Test
d132bcc7
BH
745 public void testCreateSessionVariants() {
746
747 fShell.setScenario(SCEN_CREATE_SESSION_VARIANTS);
748
bbb3538a 749 try {
589d0d33 750 fService.createSession("alreadyExist", null, false, new NullProgressMonitor());
bbb3538a
BH
751 fail("No exeption thrown");
752 } catch (ExecutionException e) {
753 // success
754 }
cfdb727a 755
bbb3538a 756 try {
589d0d33 757 fService.createSession("wrongName", null, false, new NullProgressMonitor());
bbb3538a
BH
758 fail("No exeption thrown");
759 } catch (ExecutionException e) {
760 // success
cfdb727a 761 }
bbb3538a
BH
762
763 try {
589d0d33 764 fService.createSession("withPath", "/home/user/hallo", false, new NullProgressMonitor());
bbb3538a
BH
765 fail("No exeption thrown");
766 } catch (ExecutionException e) {
767 // success
cfdb727a 768 }
bbb3538a
BH
769
770 try {
589d0d33 771 ISessionInfo info = fService.createSession("session with spaces", null, false, new NullProgressMonitor());
bbb3538a
BH
772 assertNotNull(info);
773 assertEquals("session with spaces", info.getName());
774 assertNotNull(info.getSessionPath());
775 assertTrue(info.getSessionPath().contains("session with spaces"));
776 assertEquals(TraceSessionState.INACTIVE, info.getSessionState());
cfdb727a 777
bbb3538a
BH
778 } catch (ExecutionException e) {
779 fail(e.toString());
cfdb727a 780 }
bbb3538a
BH
781
782 try {
589d0d33 783 ISessionInfo info = fService.createSession("pathWithSpaces", "/home/user/hallo user/here", false, new NullProgressMonitor());
bbb3538a
BH
784 assertNotNull(info);
785 assertEquals("pathWithSpaces", info.getName());
786 assertNotNull(info.getSessionPath());
787 assertTrue(info.getSessionPath().contains("/home/user/hallo user/here"));
788 assertEquals(TraceSessionState.INACTIVE, info.getSessionState());
cfdb727a 789
bbb3538a
BH
790 } catch (ExecutionException e) {
791 fail(e.toString());
cfdb727a 792 }
bbb3538a
BH
793 }
794
2ba3d0a1 795 @Test
9d8a90ad 796 public void testDestroySession() {
bbb3538a 797 try {
d132bcc7
BH
798 fShell.setScenario(SCEN_DESTROY_SESSION1);
799 fService.destroySession("mysession2", new NullProgressMonitor());
bbb3538a
BH
800 } catch (ExecutionException e) {
801 fail(e.toString());
cfdb727a 802 }
bbb3538a 803 }
d132bcc7 804
d128c979
BH
805 @Test
806 public void testDestroySessionVerbose() {
807 try {
808 enableVerbose();
809 fShell.setScenario(SCEN_DESTROY_SESSION_VERBOSE);
810 fService.destroySession("mysession2", new NullProgressMonitor());
811 } catch (ExecutionException e) {
812 fail(e.toString());
813 } finally {
814 disableVerbose();
815 }
816 }
817
2ba3d0a1 818 @Test
d132bcc7
BH
819 public void testCreateChannel() {
820 try {
83051fc3 821 ((LTTngControlService)fService).setVersion("2.2.0");
d132bcc7 822 String sessionName = "mysession2";
e0838ca1 823 List<String> list = new ArrayList<>();
d132bcc7
BH
824 String kernelChannel0 = "mychannel0";
825 String kernelChannel1 = "mychannel1";
826 list.add(kernelChannel0);
827 list.add(kernelChannel1);
cfdb727a 828
d132bcc7 829 fShell.setScenario(SCEN_CHANNEL_HANDLING);
cfdb727a 830
d132bcc7
BH
831 // Create/enable/configure 2 kernel channels
832 ChannelInfo chanInfo = new ChannelInfo("");
833 chanInfo.setOverwriteMode(true);
834 chanInfo.setSubBufferSize(16384);
835 chanInfo.setReadTimer(100);
836 chanInfo.setSwitchTimer(200);
837 chanInfo.setNumberOfSubBuffers(2);
e799e5f3
SD
838 chanInfo.setMaxNumberTraceFiles(10);
839 chanInfo.setMaxSizeTraceFiles(0);
d132bcc7 840 fService.enableChannels(sessionName, list, true, chanInfo, new NullProgressMonitor());
cfdb727a 841
d132bcc7
BH
842 // Create/enable/configure 1 UST channel
843 list.clear();
844 list.add("ustChannel");
cfdb727a 845
d132bcc7
BH
846 chanInfo = new ChannelInfo("");
847 chanInfo.setOverwriteMode(true);
848 chanInfo.setSubBufferSize(32768);
849 chanInfo.setReadTimer(200);
850 chanInfo.setSwitchTimer(100);
851 chanInfo.setNumberOfSubBuffers(1);
e799e5f3
SD
852 chanInfo.setMaxNumberTraceFiles(20);
853 chanInfo.setMaxSizeTraceFiles(0);
854 fService.enableChannels(sessionName, list, false, chanInfo, new NullProgressMonitor());
83051fc3 855 ((LTTngControlService)fService).setVersion("2.0.0");
e799e5f3
SD
856
857 } catch (ExecutionException e) {
858 fail(e.toString());
859 }
860 }
861
862 @Test
863 public void testCreateChannelUIDBuffer() {
864 try {
83051fc3 865 ((LTTngControlService)fService).setVersion("2.2.0");
e799e5f3 866 String sessionName = "mysession2";
e0838ca1 867 List<String> list = new ArrayList<>();
e799e5f3
SD
868 String USTChannel = "ustChannel";
869 list.add(USTChannel);
870 fShell.setScenario(SCEN_CHANNEL_HANDLING);
871
872 ChannelInfo chanInfo = new ChannelInfo("");
873 chanInfo.setOverwriteMode(true);
874 chanInfo.setSubBufferSize(32768);
875 chanInfo.setReadTimer(200);
876 chanInfo.setSwitchTimer(100);
877 chanInfo.setNumberOfSubBuffers(1);
878 chanInfo.setMaxNumberTraceFiles(20);
879 chanInfo.setMaxSizeTraceFiles(0);
83051fc3 880 chanInfo.setBufferType(BufferType.BUFFER_PER_UID);
d132bcc7 881 fService.enableChannels(sessionName, list, false, chanInfo, new NullProgressMonitor());
83051fc3
BH
882 ((LTTngControlService)fService).setVersion("2.0.0");
883
884 } catch (ExecutionException e) {
885 fail(e.toString());
886 }
887 }
888
889 @Test
890 public void testCreateChannelPIDBuffer() {
891 try {
892 ((LTTngControlService)fService).setVersion("2.2.0");
893 String sessionName = "mysession2";
e0838ca1 894 List<String> list = new ArrayList<>();
83051fc3
BH
895 String USTChannel = "ustChannel";
896 list.add(USTChannel);
897 fShell.setScenario(SCEN_CHANNEL_HANDLING);
898
899
900 ChannelInfo chanInfo = new ChannelInfo("");
901 chanInfo.setOverwriteMode(true);
902 chanInfo.setSubBufferSize(-1);
903 chanInfo.setReadTimer(-1);
904 chanInfo.setSwitchTimer(-1);
905 chanInfo.setNumberOfSubBuffers(-1);
906 chanInfo.setMaxNumberTraceFiles(-1);
907 chanInfo.setMaxSizeTraceFiles(-1);
908 chanInfo.setBufferType(BufferType.BUFFER_PER_PID);
909
910 fService.enableChannels(sessionName, list, false, chanInfo, new NullProgressMonitor());
911 ((LTTngControlService)fService).setVersion("2.0.0");
d132bcc7
BH
912
913 } catch (ExecutionException e) {
914 fail(e.toString());
915 }
916 }
917
2ba3d0a1 918 @Test
d132bcc7
BH
919 public void testDisableChannel() {
920 try {
921
922 String sessionName = "mysession2";
e0838ca1 923 List<String> list = new ArrayList<>();
d132bcc7
BH
924 String kernelChannel0 = "mychannel0";
925 String kernelChannel1 = "mychannel1";
926 list.add(kernelChannel0);
927 list.add(kernelChannel1);
cfdb727a 928
d132bcc7
BH
929 fShell.setScenario(SCEN_CHANNEL_HANDLING);
930 fService.disableChannels(sessionName, list, true, new NullProgressMonitor());
cfdb727a 931
d132bcc7
BH
932 list.clear();
933 list.add("ustChannel");
934 fService.disableChannels(sessionName, list, false, new NullProgressMonitor());
935
936 } catch (ExecutionException e) {
937 fail(e.toString());
938 }
939 }
cfdb727a 940
2ba3d0a1 941 @Test
d132bcc7
BH
942 public void testEnableChannel() {
943 try {
944
945 String sessionName = "mysession2";
e0838ca1 946 List<String> list = new ArrayList<>();
d132bcc7
BH
947 String kernelChannel0 = "mychannel0";
948 String kernelChannel1 = "mychannel1";
949 list.add(kernelChannel0);
950 list.add(kernelChannel1);
cfdb727a 951
d132bcc7
BH
952 fShell.setScenario(SCEN_CHANNEL_HANDLING);
953 fService.enableChannels(sessionName, list, true, null, new NullProgressMonitor());
cfdb727a 954
d132bcc7
BH
955 // Create/enable/configure 1 UST channel
956 list.clear();
957 list.add("ustChannel");
cfdb727a 958
d132bcc7
BH
959 fService.enableChannels(sessionName, list, false, null, new NullProgressMonitor());
960
961 } catch (ExecutionException e) {
962 fail(e.toString());
963 }
964 }
cfdb727a 965
2ba3d0a1 966 @Test
d132bcc7
BH
967 public void testEnableEvents() {
968 try {
969 // 1) session name, channel = null, 3 event names, kernel
970 String sessionName = "mysession2";
e0838ca1 971 List<String> list = new ArrayList<>();
d132bcc7
BH
972 String eventName0 = "block_rq_remap";
973 String eventName1 = "block_bio_remap";
974 String eventName2 = "softirq_entry";
975 list.add(eventName0);
976 list.add(eventName1);
977 list.add(eventName2);
978 fShell.setScenario(SCEN_EVENT_HANDLING);
d4514365 979 fService.enableEvents(sessionName, null, list, true, null, new NullProgressMonitor());
cfdb727a 980
d132bcc7
BH
981 // 2) session name, channel=mychannel, event name= null, kernel
982 String channelName = "mychannel";
d4514365 983 fService.enableEvents(sessionName, channelName, null, true, null, new NullProgressMonitor());
bbb3538a 984
d4514365 985 // 3) session name, channel=mychannel, 1 event name, ust, no filter
d132bcc7
BH
986 String ustEventName = "ust_tests_hello:tptest_sighandler";
987 list.clear();
988 list.add(ustEventName);
d4514365 989 fService.enableEvents(sessionName, channelName, list, false, null, new NullProgressMonitor());
cfdb727a 990
d4514365
BH
991 // 4) session name, channel = mychannel, no event name, ust, with filter
992 fService.enableEvents(sessionName, channelName, list, false, "intfield==10", new NullProgressMonitor());
993
994 // 5) session name, channel = mychannel, no event name, ust, no filter
d132bcc7 995 list.clear();
d4514365
BH
996 fService.enableEvents(sessionName, channelName, list, false, null, new NullProgressMonitor());
997
998 // TODO add test with filters
cfdb727a 999
d132bcc7
BH
1000 } catch (ExecutionException e) {
1001 fail(e.toString());
1002 }
1003 }
cfdb727a 1004
2ba3d0a1 1005 @Test
d132bcc7
BH
1006 public void testEnableSyscalls() {
1007 try {
1008 // 1) session name, channel = null, 3 event names, kernel
1009 String sessionName = "mysession2";
1010 String channelName = "mychannel";
cfdb727a 1011
d132bcc7
BH
1012 fShell.setScenario(SCEN_EVENT_HANDLING);
1013
cfdb727a 1014 // 1) session name, channel = null
d132bcc7
BH
1015 fService.enableSyscalls(sessionName, null, new NullProgressMonitor());
1016
1017 // 2) session name, channel = mychannel
1018 fService.enableSyscalls(sessionName, channelName, new NullProgressMonitor());
cfdb727a 1019
d132bcc7
BH
1020 } catch (ExecutionException e) {
1021 fail(e.toString());
1022 }
1023 }
1024
2ba3d0a1 1025 @Test
d132bcc7
BH
1026 public void testDynamicProbe() {
1027 try {
1028 // 1) session name, channel = null, 3 event names, kernel
1029 String sessionName = "mysession2";
1030 String channelName = "mychannel";
1031 String eventName0 = "myevent0";
1032 String eventName1 = "myevent1";
1033 String functionProbe = "0xc0101340";
1034 String dynProbe = "init_post";
cfdb727a 1035
d132bcc7
BH
1036 fShell.setScenario(SCEN_EVENT_HANDLING);
1037
cfdb727a 1038 // 1) session name, channel = null, event name, function probe, probe
d132bcc7
BH
1039 fService.enableProbe(sessionName, null, eventName0, true, functionProbe, new NullProgressMonitor());
1040
1041 // 2) session name, channel = mychannel
1042 fService.enableProbe(sessionName, channelName, eventName1, false, dynProbe, new NullProgressMonitor());
cfdb727a 1043
d132bcc7
BH
1044 } catch (ExecutionException e) {
1045 fail(e.toString());
1046 }
1047 }
1048
2ba3d0a1 1049 @Test
d132bcc7
BH
1050 public void testEnableLogLevel() {
1051 try {
1052 // 1) session name, channel = null, 3 event names, kernel
1053 String sessionName = "mysession2";
1054 String channelName = "mychannel";
1055 String eventName4 = "myevent4";
1056 String eventName5 = "myevent5";
cfdb727a 1057
d132bcc7 1058 fShell.setScenario(SCEN_EVENT_HANDLING);
cfdb727a 1059
d132bcc7 1060 // 1) session name, channel = null, event name, loglevel-only, TRACE_DEBUG
d4514365 1061 fService.enableLogLevel(sessionName, null, eventName4, LogLevelType.LOGLEVEL_ONLY, TraceLogLevel.TRACE_DEBUG, null, new NullProgressMonitor());
d132bcc7
BH
1062
1063 // 2) session name, channel = mychannel, null, loglevel, TRACE_DEBUG_FUNCTION
d4514365
BH
1064 fService.enableLogLevel(sessionName, channelName, eventName5, LogLevelType.LOGLEVEL, TraceLogLevel.TRACE_DEBUG_FUNCTION, null, new NullProgressMonitor());
1065
1066 // TODO add test with filters
d132bcc7
BH
1067
1068 } catch (ExecutionException e) {
1069 fail(e.toString());
1070 }
1071 }
cfdb727a 1072
2ba3d0a1 1073 @Test
4ea599a5
BH
1074 public void testAddContext() {
1075 try {
1076 // 1) session name, channel = null, 3 event names, kernel
1077 String sessionName = "mysession2";
1078 String channelName = "mychannel";
1079 String eventName = "ust_tests_hello:tptest_sighandler";
e0838ca1 1080 List<String> contexts = new ArrayList<>();
4ea599a5
BH
1081 contexts.add("prio");
1082 contexts.add("pid");
1083
1084 fShell.setScenario(SCEN_CONTEXT_HANDLING);
1085
1086 List<String> availContexts = fService.getContextList(new NullProgressMonitor());
1087 assertNotNull(availContexts);
1088 assertEquals(12, availContexts.size());
1089
cfdb727a 1090 // A very "hard-coded" way to verify but it works ...
e0838ca1 1091 Set<String> expectedContexts = new HashSet<>();
4ea599a5
BH
1092 expectedContexts.add("pid");
1093 expectedContexts.add("procname");
1094 expectedContexts.add("prio");
1095 expectedContexts.add("nice");
1096 expectedContexts.add("vpid");
1097 expectedContexts.add("tid");
1098 expectedContexts.add("pthread_id");
1099 expectedContexts.add("vtid");
1100 expectedContexts.add("ppid");
1101 expectedContexts.add("vppid");
1102 expectedContexts.add("perf:cpu-cycles");
1103 expectedContexts.add("perf:cycles");
cfdb727a 1104
4ea599a5 1105 assertTrue(expectedContexts.containsAll(availContexts));
cfdb727a 1106
4ea599a5
BH
1107 // 1) session name, channel = null, event name, loglevel-only, TRACE_DEBUG
1108 fService.addContexts(sessionName, channelName, eventName, false, contexts, new NullProgressMonitor());
1109
1110 } catch (ExecutionException e) {
1111 fail(e.toString());
1112 }
1113 }
1114
2ba3d0a1 1115 @Test
4ea599a5
BH
1116 public void testAddContextFailure() {
1117
1118 // 1) session name, channel = null, 3 event names, kernel
1119 String sessionName = "mysession2";
1120 String channelName = "mychannel";
1121 String eventName = "ust_tests_hello:tptest_sighandler";
e0838ca1 1122 List<String> contexts = new ArrayList<>();
4ea599a5
BH
1123 contexts.add("prio");
1124 contexts.add("pid");
1125 fShell.setScenario(SCEN_CONTEXT_ERROR_HANDLING);
1126 try {
1127 fService.getContextList(new NullProgressMonitor());
1128 fail("No exeption generated");
1129 } catch (ExecutionException e) {
1130 // success
cfdb727a 1131 }
4ea599a5
BH
1132 try {
1133 // 1) session name, channel = null, event name, loglevel-only, TRACE_DEBUG
1134 fService.addContexts(sessionName, channelName, eventName, false, contexts, new NullProgressMonitor());
1135 fail("No exeption generated");
1136 } catch (ExecutionException e) {
1137 // success
cfdb727a 1138 }
4ea599a5
BH
1139 }
1140
2ba3d0a1 1141 @Test
4ea599a5
BH
1142 public void testCalibrate() {
1143 try {
1144 fShell.setScenario(SCEN_CALIBRATE_HANDLING);
1145 fService.calibrate(true, new NullProgressMonitor());
1146
1147 } catch (ExecutionException e) {
1148 fail(e.toString());
1149 }
1150 }
1151
2ba3d0a1 1152 @Test
4ea599a5 1153 public void testCalibrateFailure() {
4ea599a5
BH
1154 try {
1155 fShell.setScenario(SCEN_CALIBRATE_HANDLING);
1156 fService.calibrate(false, new NullProgressMonitor());
1157 fail("No exeption generated");
1158 } catch (ExecutionException e) {
1159 // success
cfdb727a 1160 }
4ea599a5 1161 }
cfdb727a 1162
a30e79fe 1163 @Test
f3b33d40
BH
1164 public void testCreateSession2_1() {
1165
1166 try {
1167 fShell.setScenario(SCEN_CREATE_SESSION_2_1);
1168
589d0d33 1169 ISessionInfo info = fService.createSession("mysession", "net://172.0.0.1", null, null, false, new NullProgressMonitor());
f3b33d40
BH
1170 assertNotNull(info);
1171 assertEquals("mysession", info.getName());
1172 assertEquals("net://172.0.0.1", info.getSessionPath());
1173 assertTrue(info.isStreamedTrace());
1174 fService.destroySession("mysession", new NullProgressMonitor());
1175
589d0d33 1176 info = fService.createSession("mysession", "file:///tmp", null, null, false, new NullProgressMonitor());
f3b33d40
BH
1177 assertNotNull(info);
1178 assertEquals("mysession", info.getName());
1179 assertEquals("file:///tmp", info.getSessionPath());
d128c979 1180 assertTrue(!info.isStreamedTrace());
f3b33d40
BH
1181 fService.destroySession("mysession", new NullProgressMonitor());
1182
589d0d33 1183 info = fService.createSession("mysession", "file:///tmp", null, null, false, new NullProgressMonitor());
f3b33d40
BH
1184 assertNotNull(info);
1185 assertEquals("mysession", info.getName());
1186 assertEquals("file:///tmp", info.getSessionPath());
d128c979 1187 assertTrue(!info.isStreamedTrace());
f3b33d40
BH
1188 fService.destroySession("mysession", new NullProgressMonitor());
1189
589d0d33 1190 info = fService.createSession("mysession", null, "tcp://172.0.0.1", "tcp://172.0.0.1:5343", false, new NullProgressMonitor());
f3b33d40
BH
1191 assertNotNull(info);
1192 assertEquals("mysession", info.getName());
d128c979 1193 assertEquals("", info.getSessionPath()); // the complete network path is not available at this point
f3b33d40
BH
1194 assertTrue(info.isStreamedTrace());
1195 fService.destroySession("mysession", new NullProgressMonitor());
1196
589d0d33 1197 info = fService.createSession("mysession", "net://172.0.0.1:1234:2345", null, null, false, new NullProgressMonitor());
f3b33d40
BH
1198 assertNotNull(info);
1199 assertEquals("mysession", info.getName());
1200 assertEquals("net://172.0.0.1:1234:2345", info.getSessionPath());
1201 assertTrue(info.isStreamedTrace());
1202 fService.destroySession("mysession", new NullProgressMonitor());
1203
d128c979
BH
1204 // verbose
1205 enableVerbose();
589d0d33 1206 info = fService.createSession("mysession", "net://172.0.0.1", null, null, false, new NullProgressMonitor());
d128c979
BH
1207 assertNotNull(info);
1208 assertEquals("mysession", info.getName());
1209 assertEquals("net://172.0.0.1", info.getSessionPath());
1210 assertTrue(info.isStreamedTrace());
1211 disableVerbose();
1212 fService.destroySession("mysession", new NullProgressMonitor());
1213
1214
1215 } catch (ExecutionException e) {
1216 fail(e.toString());
1217 }
1218 }
1219
1220 @Test
1221 public void testCreateSessionVerbose2_1() {
1222 try {
1223 fShell.setScenario(SCEN_CREATE_SESSION_VERBOSE_2_1);
1224
1225 enableVerbose();
589d0d33 1226 ISessionInfo info = fService.createSession("mysession", "net://172.0.0.1", null, null, false, new NullProgressMonitor());
d128c979
BH
1227 assertNotNull(info);
1228 assertEquals("mysession", info.getName());
1229 assertEquals("net://172.0.0.1", info.getSessionPath());
1230 assertTrue(info.isStreamedTrace());
1231 fService.destroySession("mysession", new NullProgressMonitor());
f3b33d40
BH
1232 } catch (ExecutionException e) {
1233 fail(e.toString());
d128c979
BH
1234 } finally {
1235 disableVerbose();
f3b33d40
BH
1236 }
1237 }
d128c979 1238
589d0d33
BH
1239 @Test
1240 public void testCreateSnapshotSession() {
1241 try {
1242 fShell.setScenario(SCEN_CREATE_SNAPSHOT_SESSION);
1243
1244 ISessionInfo sessionInfo = fService.createSession("mysession", null, true, new NullProgressMonitor());
1245 assertNotNull(sessionInfo);
1246 assertEquals("mysession", sessionInfo.getName());
1247 assertTrue(sessionInfo.isSnapshotSession());
1248 assertEquals("", sessionInfo.getSessionPath());
1249 assertTrue(!sessionInfo.isStreamedTrace());
1250
1251 assertEquals(TraceSessionState.INACTIVE, sessionInfo.getSessionState());
1252
1253 String[] names = fService.getSessionNames(new NullProgressMonitor());
1254 assertEquals(names[0], "mysession");
1255
1256 ISnapshotInfo snapshotInfo = fService.getSnapshotInfo("mysession", new NullProgressMonitor());
1257 assertNotNull(snapshotInfo);
1258 assertEquals("snapshot-1", snapshotInfo.getName());
1259 assertEquals("/home/user/lttng-traces/mysession-20130913-141651", snapshotInfo.getSnapshotPath());
1260 assertEquals(1, snapshotInfo.getId());
1261 assertTrue(!snapshotInfo.isStreamedSnapshot());
1262
1263 // we need to set the snapshotInfo to so that the session path is set correctly
1264 sessionInfo.setSnapshotInfo(snapshotInfo);
1265 assertEquals("/home/user/lttng-traces/mysession-20130913-141651", sessionInfo.getSessionPath());
1266
1267 fService.recordSnapshot("mysession", new NullProgressMonitor());
1268
1269 fService.destroySession("mysession", new NullProgressMonitor());
1270
1271 } catch (ExecutionException e) {
1272 fail(e.toString());
1273 }
1274 }
1275
1276 public void testCreateStreamedSnapshotSession() {
1277 try {
1278 fShell.setScenario(SCEN_CREATE_STREAMED_SNAPSHOT_SESSION);
1279
1280 ISessionInfo sessionInfo = fService.createSession("mysession", "net://172.0.0.1", null, null, false, new NullProgressMonitor());
1281 assertNotNull(sessionInfo);
1282 assertEquals("mysession", sessionInfo.getName());
1283 assertTrue(sessionInfo.isSnapshotSession());
1284
1285 assertEquals(TraceSessionState.INACTIVE, sessionInfo.getSessionState());
1286 assertTrue(sessionInfo.isStreamedTrace());
1287
1288 String[] names = fService.getSessionNames(new NullProgressMonitor());
1289 assertEquals(names[0], "mysession");
1290
1291
1292 ISnapshotInfo snapshotInfo = sessionInfo.getSnapshotInfo();
1293 assertNotNull(sessionInfo);
1294 assertEquals("snapshot-2", snapshotInfo.getName());
1295 assertEquals("net4://172.0.0.1:5342/", snapshotInfo.getSnapshotPath());
1296 assertEquals(2, snapshotInfo.getId());
1297 assertTrue(snapshotInfo.isStreamedSnapshot());
1298
1299 // we need to set the snapshotInfo to so that the session path is set correctly
1300 sessionInfo.setSnapshotInfo(snapshotInfo);
1301 assertEquals("net4://172.0.0.1:5342/", sessionInfo.getSessionPath());
1302
1303 fService.recordSnapshot("mysession", new NullProgressMonitor());
1304
1305 fService.destroySession("mysession", new NullProgressMonitor());
1306
1307 } catch (ExecutionException e) {
1308 fail(e.toString());
1309 }
1310 }
1311
1312
1313 @Test
1314 public void testCreateSnapshotSessionErrors() {
1315 try {
1316 fShell.setScenario(SCEN_CREATE_SNAPSHOT_SESSION_ERRORS);
1317
1318 String[] names = fService.getSessionNames(new NullProgressMonitor());
1319 assertEquals(names[0], "mysession");
1320 } catch (ExecutionException e) {
1321 fail(e.toString());
1322 }
1323
1324 try {
1325 fService.getSnapshotInfo("blabla", new NullProgressMonitor());
1326 fail("getSnapshoInfo() didn't fail");
1327 } catch (ExecutionException e) {
1328 // successful
1329 }
1330
1331 try {
1332 fService.recordSnapshot("blabla", new NullProgressMonitor());
1333 fail("getSnapshoInfo() didn't fail");
1334 } catch (ExecutionException e) {
1335 // successful
1336 }
1337
1338 try {
1339 fService.recordSnapshot("mysession", new NullProgressMonitor());
1340 fail("getSnapshoInfo() didn't fail");
1341 } catch (ExecutionException e) {
1342 // successful
1343 }
1344 }
1345
d128c979
BH
1346 private static void enableVerbose() {
1347 // verbose
1348 ControlCommandLogger.init(ControlPreferences.getInstance().getLogfilePath(), false);
1349 ControlPreferences.getInstance().getPreferenceStore().setDefault(ControlPreferences.TRACE_CONTROL_LOG_COMMANDS_PREF, true);
1350 ControlPreferences.getInstance().getPreferenceStore().setDefault(ControlPreferences.TRACE_CONTROL_VERBOSE_LEVEL_PREF, ControlPreferences.TRACE_CONTROL_VERBOSE_LEVEL_V_V_VERBOSE);
1351 }
1352
1353 private static void disableVerbose() {
1354 ControlPreferences.getInstance().getPreferenceStore().setDefault(ControlPreferences.TRACE_CONTROL_LOG_COMMANDS_PREF, false);
1355 }
1356
1357
eb1bab5b 1358}
This page took 0.124473 seconds and 5 git commands to generate.