lttng.ust: Replace timestamp.getValue() with toNanos()
[deliverable/tracecompass.git] / lttng / org.eclipse.tracecompass.lttng2.control.ui.tests / src / org / eclipse / tracecompass / lttng2 / control / ui / tests / model / component / TraceControlKernelSessionTest.java
CommitLineData
a26d90be 1/**********************************************************************
533d0bc3 2 * Copyright (c) 2012, 2015 Ericsson
cfdb727a 3 *
a26d90be
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:
a26d90be 10 * Bernd Hufmann - Initial API and implementation
2ba3d0a1 11 * Alexandre Montplaisir - Port to JUnit4
b732adaa 12 * Markus Schorn - Bug 448058: Use org.eclipse.remote in favor of RSE
a26d90be 13 **********************************************************************/
2ba3d0a1 14
9bc60be7 15package org.eclipse.tracecompass.lttng2.control.ui.tests.model.component;
a26d90be 16
2ba3d0a1
AM
17import static org.junit.Assert.assertEquals;
18import static org.junit.Assert.assertNotNull;
19import static org.junit.Assert.assertNull;
20import static org.junit.Assert.assertTrue;
21import static org.junit.Assert.fail;
22
a26d90be
BH
23import java.io.File;
24import java.net.URL;
25import java.util.ArrayList;
26import java.util.List;
27
a26d90be
BH
28import org.eclipse.core.runtime.FileLocator;
29import org.eclipse.core.runtime.Path;
d8a4fd60 30import org.eclipse.jdt.annotation.NonNull;
b732adaa 31import org.eclipse.remote.core.IRemoteConnection;
9bc60be7
AM
32import org.eclipse.tracecompass.internal.lttng2.control.core.model.TargetNodeState;
33import org.eclipse.tracecompass.internal.lttng2.control.core.model.TraceChannelOutputType;
34import org.eclipse.tracecompass.internal.lttng2.control.core.model.TraceEnablement;
35import org.eclipse.tracecompass.internal.lttng2.control.core.model.TraceEventType;
36import org.eclipse.tracecompass.internal.lttng2.control.core.model.TraceLogLevel;
37import org.eclipse.tracecompass.internal.lttng2.control.core.model.TraceSessionState;
38import org.eclipse.tracecompass.internal.lttng2.control.core.model.impl.ChannelInfo;
39import org.eclipse.tracecompass.internal.lttng2.control.stubs.dialogs.AddContextDialogStub;
40import org.eclipse.tracecompass.internal.lttng2.control.stubs.dialogs.CreateSessionDialogStub;
41import org.eclipse.tracecompass.internal.lttng2.control.stubs.dialogs.DestroyConfirmDialogStub;
42import org.eclipse.tracecompass.internal.lttng2.control.stubs.dialogs.EnableChannelDialogStub;
43import org.eclipse.tracecompass.internal.lttng2.control.stubs.dialogs.EnableEventsDialogStub;
44import org.eclipse.tracecompass.internal.lttng2.control.stubs.dialogs.GetEventInfoDialogStub;
45import org.eclipse.tracecompass.internal.lttng2.control.stubs.service.TestRemoteSystemProxy;
46import org.eclipse.tracecompass.internal.lttng2.control.ui.views.dialogs.TraceControlDialogFactory;
47import org.eclipse.tracecompass.internal.lttng2.control.ui.views.model.ITraceControlComponent;
48import org.eclipse.tracecompass.internal.lttng2.control.ui.views.model.impl.TargetNodeComponent;
49import org.eclipse.tracecompass.internal.lttng2.control.ui.views.model.impl.TraceChannelComponent;
50import org.eclipse.tracecompass.internal.lttng2.control.ui.views.model.impl.TraceEventComponent;
51import org.eclipse.tracecompass.internal.lttng2.control.ui.views.model.impl.TraceProbeEventComponent;
52import org.eclipse.tracecompass.internal.lttng2.control.ui.views.model.impl.TraceSessionComponent;
b6b4e8b4 53import org.eclipse.tracecompass.tmf.remote.core.proxy.TmfRemoteConnectionFactory;
a26d90be
BH
54import org.junit.After;
55import org.junit.Before;
2ba3d0a1 56import org.junit.Test;
9269df72 57import org.osgi.framework.FrameworkUtil;
a26d90be
BH
58
59/**
b0d2c558 60 * The class {@link TraceControlKernelSessionTest} contains Kernel
2ba3d0a1 61 * session/channel/event handling test cases.
a26d90be 62 */
b0d2c558 63public class TraceControlKernelSessionTest {
cfdb727a 64
a26d90be
BH
65 // ------------------------------------------------------------------------
66 // Constants
67 // ------------------------------------------------------------------------
2ba3d0a1 68
a26d90be
BH
69 private static final String TEST_STREAM = "CreateTreeTest.cfg";
70 private static final String SCEN_SCENARIO3_TEST = "Scenario3";
71
72 // ------------------------------------------------------------------------
73 // Test data
74 // ------------------------------------------------------------------------
2ba3d0a1 75
a26d90be 76 private TraceControlTestFacility fFacility;
b6b4e8b4 77 private IRemoteConnection fHost = TmfRemoteConnectionFactory.getLocalConnection();
d8a4fd60 78 private @NonNull TestRemoteSystemProxy fProxy = new TestRemoteSystemProxy(fHost);
cfdb727a
AM
79 private String fTestFile;
80
a26d90be
BH
81 // ------------------------------------------------------------------------
82 // Housekeeping
83 // ------------------------------------------------------------------------
84
85 /**
86 * Perform pre-test initialization.
87 *
88 * @throws Exception
89 * if the initialization fails for some reason
a26d90be 90 */
a26d90be
BH
91 @Before
92 public void setUp() throws Exception {
93 fFacility = TraceControlTestFacility.getInstance();
1c3c5807 94 fFacility.init();
9269df72 95 URL location = FileLocator.find(FrameworkUtil.getBundle(this.getClass()), new Path(TraceControlTestFacility.DIRECTORY + File.separator + TEST_STREAM), null);
a26d90be
BH
96 File testfile = new File(FileLocator.toFileURL(location).toURI());
97 fTestFile = testfile.getAbsolutePath();
98 }
99
100 /**
101 * Perform post-test clean-up.
a26d90be 102 */
a26d90be 103 @After
2ba3d0a1 104 public void tearDown() {
1c3c5807 105 fFacility.dispose();
a26d90be 106 }
cfdb727a 107
a26d90be
BH
108 /**
109 * Run the TraceControlComponent.
2ba3d0a1
AM
110 *
111 * @throws Exception
112 * Would fail the test
a26d90be 113 */
2ba3d0a1 114 @Test
a26d90be 115 public void testTraceSessionTree() throws Exception {
cfdb727a 116
a26d90be
BH
117 fProxy.setTestFile(fTestFile);
118 fProxy.setScenario(TraceControlTestFacility.SCEN_INIT_TEST);
cfdb727a 119
1c3c5807 120 ITraceControlComponent root = fFacility.getControlView().getTraceControlRoot();
a26d90be 121
d8a4fd60 122 TargetNodeComponent node = new TargetNodeComponent("myNode", root, fProxy);
a26d90be
BH
123
124 root.addChild(node);
a26d90be
BH
125 fFacility.waitForJobs();
126
b957fb8c
BH
127 fFacility.executeCommand(node, "connect");
128 int i = 0;
129 while ((i < 10) && (node.getTargetNodeState() != TargetNodeState.CONNECTED)) {
130 i++;
131 fFacility.delay(TraceControlTestFacility.GUI_REFESH_DELAY);
132 }
133
a26d90be
BH
134 // Verify that node is connected
135 assertEquals(TargetNodeState.CONNECTED, node.getTargetNodeState());
136
137 // Get provider groups
138 ITraceControlComponent[] groups = node.getChildren();
139 assertNotNull(groups);
140 assertEquals(2, groups.length);
141
142 // Initialize dialog implementations for command execution
143 TraceControlDialogFactory.getInstance().setCreateSessionDialog(new CreateSessionDialogStub());
144 TraceControlDialogFactory.getInstance().setGetEventInfoDialog(new GetEventInfoDialogStub());
145 TraceControlDialogFactory.getInstance().setConfirmDialog(new DestroyConfirmDialogStub());
cfdb727a 146
a26d90be
BH
147 // Initialize session handling scenario
148 fProxy.setScenario(TraceControlTestFacility.SCEN_SCENARIO_SESSION_HANDLING);
cfdb727a 149
a26d90be
BH
150 // ------------------------------------------------------------------------
151 // Create session
152 // ------------------------------------------------------------------------
153 TraceSessionComponent session = fFacility.createSession(groups[1]);
cfdb727a 154
a26d90be
BH
155 // Verify that session was created
156 assertNotNull(session);
157 assertEquals("mysession", session.getName());
158 assertEquals("/home/user/lttng-traces/mysession-20120314-132824", session.getSessionPath());
159 assertEquals(TraceSessionState.INACTIVE, session.getSessionState());
160
161 // Initialize scenario
162 fProxy.setScenario(SCEN_SCENARIO3_TEST);
cfdb727a 163
a26d90be 164 // ------------------------------------------------------------------------
d62bfa55 165 // Enable channel on session
a26d90be 166 // ------------------------------------------------------------------------
d62bfa55 167 EnableChannelDialogStub channelStub = new EnableChannelDialogStub();
a26d90be 168 channelStub.setIsKernel(true);
d62bfa55 169 TraceControlDialogFactory.getInstance().setEnableChannelDialog(channelStub);
a26d90be 170
d62bfa55 171 fFacility.executeCommand(session, "enableChannelOnSession");
cfdb727a 172
a26d90be
BH
173 // Verify that Kernel domain was created
174 ITraceControlComponent[] domains = session.getChildren();
175 assertNotNull(domains);
176 assertEquals(1, domains.length);
177
178 assertEquals("Kernel", domains[0].getName());
cfdb727a 179
a26d90be
BH
180 // Verify that channel was created with correct data
181 ITraceControlComponent[] channels = domains[0].getChildren();
182 assertNotNull(channels);
183 assertEquals(1, channels.length);
184
185 assertTrue(channels[0] instanceof TraceChannelComponent);
cfdb727a 186 TraceChannelComponent channel = (TraceChannelComponent) channels[0];
a26d90be
BH
187 assertEquals("mychannel", channel.getName());
188 assertEquals(4, channel.getNumberOfSubBuffers());
0ad9fc89
JRJ
189 assertEquals("splice()", channel.getOutputType().getInName());
190 assertEquals(TraceChannelOutputType.SPLICE, channel.getOutputType());
a26d90be
BH
191 assertEquals(true, channel.isOverwriteMode());
192 assertEquals(200, channel.getReadTimer());
193 assertEquals(TraceEnablement.ENABLED, channel.getState());
194 assertEquals(16384, channel.getSubBufferSize());
195 assertEquals(100, channel.getSwitchTimer());
196
197 // ------------------------------------------------------------------------
198 // Create channel on domain
199 // ------------------------------------------------------------------------
200 ChannelInfo info = (ChannelInfo)channelStub.getChannelInfo();
201 info.setName("mychannel2");
202 info.setOverwriteMode(false);
203 info.setSubBufferSize(32768);
204 info.setNumberOfSubBuffers(2);
205 info.setSwitchTimer(100);
206 info.setReadTimer(200);
207 channelStub.setChannelInfo(info);
cfdb727a 208
d62bfa55 209 fFacility.executeCommand(domains[0], "enableChannelOnDomain");
cfdb727a 210
a26d90be
BH
211 // Get Kernel domain component instance
212 domains = session.getChildren();
213 assertNotNull(domains);
214 assertEquals(1, domains.length);
215
216 // Verify that channel was created with correct data
217 channels = domains[0].getChildren();
218 assertNotNull(channels);
219 assertEquals(2, channels.length);
220
221 assertTrue(channels[1] instanceof TraceChannelComponent);
cfdb727a 222 channel = (TraceChannelComponent) channels[1];
a26d90be
BH
223 assertEquals("mychannel2", channel.getName());
224 assertEquals(2, channel.getNumberOfSubBuffers());
0ad9fc89
JRJ
225 assertEquals("splice()", channel.getOutputType().getInName());
226 assertEquals(TraceChannelOutputType.SPLICE, channel.getOutputType());
a26d90be
BH
227 assertEquals(false, channel.isOverwriteMode());
228 assertEquals(200, channel.getReadTimer());
229 assertEquals(TraceEnablement.ENABLED, channel.getState());
230 assertEquals(32768, channel.getSubBufferSize());
231 assertEquals(100, channel.getSwitchTimer());
232
233 EnableEventsDialogStub eventsDialogStub = new EnableEventsDialogStub();
234 eventsDialogStub.setIsTracePoints(true);
e0838ca1 235 List<String> events = new ArrayList<>();
a26d90be
BH
236 events.add("sched_kthread_stop");
237 events.add("sched_kthread_stop_ret");
238 eventsDialogStub.setNames(events);
239 eventsDialogStub.setIsKernel(true);
240 TraceControlDialogFactory.getInstance().setEnableEventsDialog(eventsDialogStub);
cfdb727a 241
a26d90be 242 // ------------------------------------------------------------------------
cfdb727a 243 // disable channels
a26d90be
BH
244 // ------------------------------------------------------------------------
245 // Get Kernel domain component instance
246 domains = session.getChildren();
247 assertNotNull(domains);
248 assertEquals(1, domains.length);
249
250 // Verify that channel was created with correct data
251 channels = domains[0].getChildren();
252 assertNotNull(channels);
253 assertEquals(2, channels.length);
254
255 fFacility.executeCommand(channels, "disableChannel");
cfdb727a 256
a26d90be
BH
257 assertEquals(TraceEnablement.DISABLED, ((TraceChannelComponent)channels[0]).getState());
258 assertEquals(TraceEnablement.DISABLED, ((TraceChannelComponent)channels[1]).getState());
259
260 // ------------------------------------------------------------------------
cfdb727a 261 // enable channels
a26d90be
BH
262 // ------------------------------------------------------------------------
263 // Get Kernel domain component instance
264 domains = session.getChildren();
265 assertNotNull(domains);
266 assertEquals(1, domains.length);
267
268 // Verify that channel was created with correct data
269 channels = domains[0].getChildren();
270 assertNotNull(channels);
271 assertEquals(2, channels.length);
cfdb727a 272
a26d90be 273 fFacility.executeCommand(channels, "enableChannel");
cfdb727a 274
a26d90be
BH
275 assertEquals(TraceEnablement.ENABLED, ((TraceChannelComponent)channels[0]).getState());
276 assertEquals(TraceEnablement.ENABLED, ((TraceChannelComponent)channels[1]).getState());
277
278 // ------------------------------------------------------------------------
cfdb727a 279 // enable event (tracepoints) on session
a26d90be
BH
280 // ------------------------------------------------------------------------
281 fFacility.executeCommand(session, "enableEventOnSession");
282
283 // Get Kernel domain component instance
284 domains = session.getChildren();
285 assertNotNull(domains);
286 assertEquals(1, domains.length);
287
288 // Verify that channel was created with correct data
289 channels = domains[0].getChildren();
290 assertNotNull(channels);
291 assertEquals(3, channels.length);
292
293 assertTrue(channels[2] instanceof TraceChannelComponent);
cfdb727a 294 channel = (TraceChannelComponent) channels[2];
a26d90be
BH
295 assertEquals("channel0", channel.getName());
296 // No need to check parameters of default channel because that has been done in other tests
297
298 ITraceControlComponent[] channel0Events = channel.getChildren();
299 assertEquals(2, channel0Events.length);
cfdb727a 300
a26d90be
BH
301 assertTrue(channel0Events[0] instanceof TraceEventComponent);
302 assertTrue(channel0Events[1] instanceof TraceEventComponent);
303
304 TraceEventComponent event = (TraceEventComponent) channel0Events[0];
305 assertEquals("sched_kthread_stop_ret", event.getName());
306 assertEquals(TraceLogLevel.TRACE_EMERG, event.getLogLevel());
307 assertEquals(TraceEventType.TRACEPOINT, event.getEventType());
308 assertEquals(TraceEnablement.ENABLED, event.getState());
309
310 event = (TraceEventComponent) channel0Events[1];
311 assertEquals("sched_kthread_stop", event.getName());
312 assertEquals(TraceLogLevel.TRACE_EMERG, event.getLogLevel());
313 assertEquals(TraceEventType.TRACEPOINT, event.getEventType());
314 assertEquals(TraceEnablement.ENABLED, event.getState());
315
316 // ------------------------------------------------------------------------
cfdb727a 317 // enable event (tracepoints) on domain
a26d90be
BH
318 // ------------------------------------------------------------------------
319 events.clear();
320 events.add("sched_wakeup_new");
321 eventsDialogStub.setNames(events);
322
323 fFacility.executeCommand(domains[0], "enableEventOnDomain");
324
325 // Get Kernel domain component instance
326 domains = session.getChildren();
327 assertNotNull(domains);
328 assertEquals(1, domains.length);
329
330 // Verify that channel was created with correct data
331 channels = domains[0].getChildren();
cfdb727a 332 channel = (TraceChannelComponent) channels[2];
a26d90be
BH
333 // No need to check parameters of default channel because that has been done in other tests
334
335 channel = (TraceChannelComponent) channels[2];
cfdb727a 336
a26d90be
BH
337 channel0Events = channel.getChildren();
338 assertEquals(3, channel0Events.length);
cfdb727a 339
a26d90be
BH
340 assertTrue(channel0Events[2] instanceof TraceEventComponent);
341
342 event = (TraceEventComponent) channel0Events[2];
343 assertEquals("sched_wakeup_new", event.getName());
344 assertEquals(TraceLogLevel.TRACE_EMERG, event.getLogLevel());
345 assertEquals(TraceEventType.TRACEPOINT, event.getEventType());
346 assertEquals(TraceEnablement.ENABLED, event.getState());
347
348 // ------------------------------------------------------------------------
cfdb727a 349 // enable event (tracepoints) on channel
a26d90be
BH
350 // ------------------------------------------------------------------------
351 events.clear();
352 eventsDialogStub.setNames(events);
353 eventsDialogStub.setIsAllTracePoints(true);
354
355 fFacility.executeCommand(channels[1], "enableEventOnChannel");
cfdb727a 356
a26d90be
BH
357 // Get Kernel domain component instance
358 domains = session.getChildren();
359 assertNotNull(domains);
360 assertEquals(1, domains.length);
361
362 // Verify that channel was created with correct data
363 channels = domains[0].getChildren();
364 // No need to check parameters of default channel because that has been done in other tests
365 channel = (TraceChannelComponent) channels[1];
cfdb727a 366
a26d90be
BH
367 channel0Events = channel.getChildren();
368 assertEquals(3, channel0Events.length);
cfdb727a 369
a26d90be
BH
370 assertTrue(channel0Events[0] instanceof TraceEventComponent);
371 assertTrue(channel0Events[1] instanceof TraceEventComponent);
372 assertTrue(channel0Events[2] instanceof TraceEventComponent);
373
374 event = (TraceEventComponent) channel0Events[0];
375 assertEquals("sched_kthread_stop_ret", event.getName());
376 assertEquals(TraceLogLevel.TRACE_EMERG, event.getLogLevel());
377 assertEquals(TraceEventType.TRACEPOINT, event.getEventType());
378 assertEquals(TraceEnablement.ENABLED, event.getState());
379
380 event = (TraceEventComponent) channel0Events[1];
381 assertEquals("sched_kthread_stop", event.getName());
382 assertEquals(TraceLogLevel.TRACE_EMERG, event.getLogLevel());
383 assertEquals(TraceEventType.TRACEPOINT, event.getEventType());
384 assertEquals(TraceEnablement.ENABLED, event.getState());
cfdb727a 385
a26d90be
BH
386 event = (TraceEventComponent) channel0Events[2];
387 assertEquals("sched_wakeup_new", event.getName());
388 assertEquals(TraceLogLevel.TRACE_EMERG, event.getLogLevel());
389 assertEquals(TraceEventType.TRACEPOINT, event.getEventType());
390 assertEquals(TraceEnablement.ENABLED, event.getState());
391
392 // ------------------------------------------------------------------------
cfdb727a 393 // enable event (syscall) on channel
a26d90be
BH
394 // ------------------------------------------------------------------------
395 events.clear();
cfdb727a 396 eventsDialogStub.setIsTracePoints(false);
a26d90be
BH
397 eventsDialogStub.setIsAllTracePoints(false);
398 eventsDialogStub.setIsSysCalls(true);
399
400 fFacility.executeCommand(channels[0], "enableEventOnChannel");
cfdb727a 401
a26d90be
BH
402 // Get Kernel domain component instance
403 domains = session.getChildren();
404 assertNotNull(domains);
405 assertEquals(1, domains.length);
406
407 // Verify that channel was created with correct data
408 channels = domains[0].getChildren();
cfdb727a 409 channel = (TraceChannelComponent) channels[0];
a26d90be
BH
410 // No need to check parameters of default channel because that has been done in other tests
411
412 channel = (TraceChannelComponent) channels[0];
cfdb727a 413
a26d90be
BH
414 channel0Events = channel.getChildren();
415 assertEquals(1, channel0Events.length);
cfdb727a 416
a26d90be 417 assertTrue(channel0Events[0] instanceof TraceEventComponent);
cfdb727a 418
a26d90be
BH
419 event = (TraceEventComponent) channel0Events[0];
420 assertEquals("syscalls", event.getName());
421 assertEquals(TraceLogLevel.LEVEL_UNKNOWN, event.getLogLevel());
422 assertEquals(TraceEventType.SYSCALL, event.getEventType());
423 assertEquals(TraceEnablement.ENABLED, event.getState());
424
425 // ------------------------------------------------------------------------
cfdb727a 426 // enable event (syscall) on domain
a26d90be
BH
427 // ------------------------------------------------------------------------
428 fFacility.executeCommand(domains[0], "enableEventOnDomain");
429
430 // Get Kernel domain component instance
431 domains = session.getChildren();
432 assertNotNull(domains);
433 assertEquals(1, domains.length);
434
435 // Verify that channel was created with correct data
436 channels = domains[0].getChildren();
cfdb727a 437 channel = (TraceChannelComponent) channels[0];
a26d90be
BH
438 // No need to check parameters of default channel because that has been done in other tests
439
440 channel = (TraceChannelComponent) channels[2];
cfdb727a 441
a26d90be
BH
442 channel0Events = channel.getChildren();
443 assertEquals(4, channel0Events.length);
cfdb727a 444
a26d90be 445 assertTrue(channel0Events[0] instanceof TraceEventComponent);
cfdb727a 446
a26d90be
BH
447 event = (TraceEventComponent) channel0Events[0];
448 assertEquals("syscalls", event.getName());
449 assertEquals(TraceLogLevel.LEVEL_UNKNOWN, event.getLogLevel());
450 assertEquals(TraceEventType.SYSCALL, event.getEventType());
451 assertEquals(TraceEnablement.ENABLED, event.getState());
452
453 // ------------------------------------------------------------------------
cfdb727a 454 // enable event (syscall) on session
a26d90be
BH
455 // ------------------------------------------------------------------------
456 fFacility.executeCommand(session, "enableEventOnSession");
457
458 // Get Kernel domain component instance
459 domains = session.getChildren();
460 assertNotNull(domains);
461 assertEquals(1, domains.length);
462
463 // Verify that channel was created with correct data
464 channels = domains[0].getChildren();
cfdb727a 465 channel = (TraceChannelComponent) channels[0];
a26d90be
BH
466 // No need to check parameters of default channel because that has been done in other tests
467
468 channel = (TraceChannelComponent) channels[2];
cfdb727a 469
a26d90be
BH
470 channel0Events = channel.getChildren();
471 assertEquals(4, channel0Events.length);
cfdb727a 472
a26d90be 473 assertTrue(channel0Events[0] instanceof TraceEventComponent);
cfdb727a 474
a26d90be
BH
475 event = (TraceEventComponent) channel0Events[0];
476 assertEquals("syscalls", event.getName());
477 assertEquals(TraceLogLevel.LEVEL_UNKNOWN, event.getLogLevel());
478 assertEquals(TraceEventType.SYSCALL, event.getEventType());
479 assertEquals(TraceEnablement.ENABLED, event.getState());
480
cfdb727a 481
a26d90be 482 // ------------------------------------------------------------------------
cfdb727a 483 // enable event (dynamic probe) on domain
a26d90be
BH
484 // ------------------------------------------------------------------------
485 events.clear();
486 eventsDialogStub.setIsSysCalls(false);
487 eventsDialogStub.setIsDynamicProbe(true);
488 eventsDialogStub.setDynamicProbe("0xc0101280");
489 eventsDialogStub.setProbeEventName("myevent1");
cfdb727a 490
a26d90be 491 fFacility.executeCommand(domains[0], "enableEventOnDomain");
cfdb727a 492
a26d90be
BH
493 // Get Kernel domain component instance
494 domains = session.getChildren();
495 assertNotNull(domains);
496 assertEquals(1, domains.length);
497
498 // Verify that channel was created with correct data
499 channels = domains[0].getChildren();
cfdb727a 500 channel = (TraceChannelComponent) channels[2];
a26d90be
BH
501 // No need to check parameters of default channel because that has been done in other tests
502
503 channel0Events = channel.getChildren();
504 assertEquals(5, channel0Events.length);
cfdb727a 505
a26d90be 506 assertTrue(channel0Events[0] instanceof TraceProbeEventComponent);
cfdb727a 507
a26d90be
BH
508 TraceProbeEventComponent probeEvent = (TraceProbeEventComponent) channel0Events[0];
509 assertEquals("myevent1", probeEvent.getName());
510 assertEquals(TraceLogLevel.LEVEL_UNKNOWN, probeEvent.getLogLevel());
511 assertEquals(TraceEventType.PROBE, probeEvent.getEventType());
512 assertEquals(TraceEnablement.ENABLED, probeEvent.getState());
513 assertNull(probeEvent.getOffset());
514 assertEquals("0xc0101280", probeEvent.getAddress());
515 assertNull(probeEvent.getSymbol());
516
517 // ------------------------------------------------------------------------
cfdb727a 518 // enable event (dynamic probe) on channel
a26d90be
BH
519 // ------------------------------------------------------------------------
520 eventsDialogStub.setIsDynamicProbe(true);
521 eventsDialogStub.setDynamicProbe("init_post");
522 eventsDialogStub.setProbeEventName("myevent2");
523
524 fFacility.executeCommand(channels[2], "enableEventOnChannel");
cfdb727a 525
a26d90be
BH
526 // Get Kernel domain component instance
527 domains = session.getChildren();
528 assertNotNull(domains);
529 assertEquals(1, domains.length);
530
531 // Verify that channel was created with correct data
532 channels = domains[0].getChildren();
cfdb727a 533 channel = (TraceChannelComponent) channels[2];
a26d90be
BH
534 // No need to check parameters of default channel because that has been done in other tests
535
536 channel0Events = channel.getChildren();
537 assertEquals(6, channel0Events.length);
cfdb727a 538
a26d90be 539 assertTrue(channel0Events[0] instanceof TraceProbeEventComponent);
cfdb727a 540
a26d90be
BH
541 probeEvent = (TraceProbeEventComponent) channel0Events[0];
542 assertEquals("myevent2", probeEvent.getName());
543 assertEquals(TraceLogLevel.LEVEL_UNKNOWN, probeEvent.getLogLevel());
544 assertEquals(TraceEventType.PROBE, probeEvent.getEventType());
545 assertEquals(TraceEnablement.ENABLED, probeEvent.getState());
546 assertEquals("0x0", probeEvent.getOffset());
547 assertNull(null, probeEvent.getAddress());
548 assertEquals("init_post", probeEvent.getSymbol());
549
550 // ------------------------------------------------------------------------
cfdb727a 551 // enable event (dynamic probe) on session
a26d90be
BH
552 // ------------------------------------------------------------------------
553 eventsDialogStub.setIsDynamicProbe(true);
554 eventsDialogStub.setDynamicProbe("init_post:0x1000");
555 eventsDialogStub.setProbeEventName("myevent3");
556
557 fFacility.executeCommand(session, "enableEventOnSession");
cfdb727a 558
a26d90be
BH
559 // Get Kernel domain component instance
560 domains = session.getChildren();
561 assertNotNull(domains);
562 assertEquals(1, domains.length);
563
564 // Verify that channel was created with correct data
565 channels = domains[0].getChildren();
cfdb727a 566 channel = (TraceChannelComponent) channels[2];
a26d90be
BH
567 // No need to check parameters of default channel because that has been done in other tests
568
569 channel0Events = channel.getChildren();
570 assertEquals(7, channel0Events.length);
571
572 assertTrue(channel0Events[0] instanceof TraceProbeEventComponent);
573
574 probeEvent = (TraceProbeEventComponent) channel0Events[0];
575 assertEquals("myevent3", probeEvent.getName());
576 assertEquals(TraceLogLevel.LEVEL_UNKNOWN, probeEvent.getLogLevel());
577 assertEquals(TraceEventType.PROBE, probeEvent.getEventType());
578 assertEquals(TraceEnablement.ENABLED, probeEvent.getState());
579 assertEquals("0x1000", probeEvent.getOffset());
580 assertNull(null, probeEvent.getAddress());
581 assertEquals("init_post", probeEvent.getSymbol());
cfdb727a 582
a26d90be
BH
583 // ------------------------------------------------------------------------
584 // enable event (dynamic function probe) on session
585 // ------------------------------------------------------------------------
586 eventsDialogStub.setIsDynamicProbe(false);
587 eventsDialogStub.setDynamicProbe(null);
588 eventsDialogStub.setProbeEventName(null);
589 eventsDialogStub.setIsFunctionProbe(true);
590 eventsDialogStub.setFunctionEventName("myevent4");
591 eventsDialogStub.setFunctionProbe("create_dev");
592
593 fFacility.executeCommand(session, "enableEventOnSession");
cfdb727a 594
a26d90be
BH
595 // Get Kernel domain component instance
596 domains = session.getChildren();
597 assertNotNull(domains);
598 assertEquals(1, domains.length);
599
600 // Verify that channel was created with correct data
601 channels = domains[0].getChildren();
cfdb727a 602 channel = (TraceChannelComponent) channels[2];
a26d90be
BH
603 // No need to check parameters of default channel because that has been done in other tests
604
605 channel0Events = channel.getChildren();
606 assertEquals(8, channel0Events.length);
607
608 assertTrue(channel0Events[0] instanceof TraceProbeEventComponent);
609
610 probeEvent = (TraceProbeEventComponent) channel0Events[0];
611 assertEquals("myevent4", probeEvent.getName());
612 assertEquals(TraceLogLevel.LEVEL_UNKNOWN, probeEvent.getLogLevel());
1f07c96c
BH
613 // Changed for Bug fix 419454 to function event which was introduced by LTTng 2.2
614 assertEquals(TraceEventType.FUNCTION, probeEvent.getEventType());
a26d90be
BH
615 assertEquals(TraceEnablement.ENABLED, probeEvent.getState());
616 assertEquals("0x0", probeEvent.getOffset());
617 assertNull(null, probeEvent.getAddress());
618 assertEquals("create_dev", probeEvent.getSymbol());
cfdb727a 619
a26d90be
BH
620 // ------------------------------------------------------------------------
621 // enable event (dynamic function probe) on domain
622 // ------------------------------------------------------------------------
623 eventsDialogStub.setIsFunctionProbe(true);
624 eventsDialogStub.setFunctionEventName("myevent5");
625 eventsDialogStub.setFunctionProbe("create_dev:0x2000");
626
627 fFacility.executeCommand(domains[0], "enableEventOnDomain");
cfdb727a 628
a26d90be
BH
629 // Get Kernel domain component instance
630 domains = session.getChildren();
631 assertNotNull(domains);
632 assertEquals(1, domains.length);
633
634 // Verify that channel was created with correct data
635 channels = domains[0].getChildren();
cfdb727a 636 channel = (TraceChannelComponent) channels[2];
a26d90be
BH
637 // No need to check parameters of default channel because that has been done in other tests
638
639 channel0Events = channel.getChildren();
640 assertEquals(9, channel0Events.length);
641
642 assertTrue(channel0Events[0] instanceof TraceProbeEventComponent);
643
644 probeEvent = (TraceProbeEventComponent) channel0Events[0];
645 assertEquals("myevent5", probeEvent.getName());
646 assertEquals(TraceLogLevel.LEVEL_UNKNOWN, probeEvent.getLogLevel());
647 assertEquals(TraceEventType.PROBE, probeEvent.getEventType());
648 assertEquals(TraceEnablement.ENABLED, probeEvent.getState());
649 assertEquals("0x2000", probeEvent.getOffset());
650 assertNull(null, probeEvent.getAddress());
651 assertEquals("create_dev", probeEvent.getSymbol());
652
653 // ------------------------------------------------------------------------
654 // enable event (dynamic function probe) on channel
655 // ------------------------------------------------------------------------
656 eventsDialogStub.setIsFunctionProbe(true);
657 eventsDialogStub.setFunctionEventName("myevent");
658 eventsDialogStub.setFunctionProbe("create_dev:0x2000");
659
660 fFacility.executeCommand(channels[0], "enableEventOnChannel");
cfdb727a 661
a26d90be
BH
662 // Get Kernel domain component instance
663 domains = session.getChildren();
664 assertNotNull(domains);
665 assertEquals(1, domains.length);
666
667 // Verify that channel was created with correct data
668 channels = domains[0].getChildren();
cfdb727a 669 channel = (TraceChannelComponent) channels[0];
a26d90be
BH
670 // No need to check parameters of default channel because that has been done in other tests
671
672 channel0Events = channel.getChildren();
673 assertEquals(2, channel0Events.length);
674
675 assertTrue(channel0Events[0] instanceof TraceProbeEventComponent);
676
677 probeEvent = (TraceProbeEventComponent) channel0Events[0];
678 assertEquals("myevent", probeEvent.getName());
679 assertEquals(TraceLogLevel.LEVEL_UNKNOWN, probeEvent.getLogLevel());
680 assertEquals(TraceEventType.PROBE, probeEvent.getEventType());
681 assertEquals(TraceEnablement.ENABLED, probeEvent.getState());
682 assertEquals("0x2000", probeEvent.getOffset());
683 assertNull(null, probeEvent.getAddress());
684 assertEquals("create_dev", probeEvent.getSymbol());
4ea599a5
BH
685
686 // ------------------------------------------------------------------------
cfdb727a 687 // Add Context on domain
4ea599a5
BH
688 // ------------------------------------------------------------------------
689 // Get Kernel domain component instance
690 domains = session.getChildren();
691 assertNotNull(domains);
692 assertEquals(1, domains.length);
693
694 AddContextDialogStub addContextStub = new AddContextDialogStub();
e0838ca1 695 List<String> contexts = new ArrayList<>();
4ea599a5
BH
696 contexts.add("prio");
697 contexts.add("perf:branch-misses");
698 contexts.add("perf:cache-misses");
699 addContextStub.setContexts(contexts);
700 TraceControlDialogFactory.getInstance().setAddContextDialog(addContextStub);
cfdb727a 701
4ea599a5
BH
702 fFacility.executeCommand(domains[0], "addContextOnDomain");
703 // Currently there is nothing to verify because the list commands don't show any context information
704 // However, the execution of the command make sure that the correct service command line is build and executed.
705
706 // ------------------------------------------------------------------------
cfdb727a 707 // Add Context on channel
4ea599a5
BH
708 // ------------------------------------------------------------------------
709
710 // Get Kernel domain component instance
711 domains = session.getChildren();
712 assertNotNull(domains);
713 assertEquals(1, domains.length);
714
715 //Verify that channel was created with correct data
716 channels = domains[0].getChildren();
cfdb727a
AM
717 channel = (TraceChannelComponent) channels[0];
718
4ea599a5
BH
719 try {
720 // The setContext() verifies that the contexts set are part of the available contexts
721 // The available contexts are set by the command handler addContextOnDomain above.
722 // So we indirectly test here that the parsing and setting of available contexts were
723 // done correctly above.
724 addContextStub.setContexts(contexts);
725 } catch (IllegalArgumentException e) {
726 fail("Exception caught - unknown context");
727 }
728
729 fFacility.executeCommand(channel, "addContextOnChannel");
730 // Currently there is nothing to verify because the list commands don't show any context information
731 // However, the execution of the command make sure that the correct service command line is build and executed.
cfdb727a 732
4ea599a5 733 // ------------------------------------------------------------------------
cfdb727a 734 // Add Context on event
4ea599a5
BH
735 // ------------------------------------------------------------------------
736 // Get Kernel domain component instance
737 domains = session.getChildren();
738 assertNotNull(domains);
739 assertEquals(1, domains.length);
740
741 //Verify that channel was created with correct data
742 channels = domains[0].getChildren();
cfdb727a
AM
743 channel = (TraceChannelComponent) channels[2];
744
4ea599a5
BH
745 channel0Events = channel.getChildren();
746
747 event = (TraceEventComponent) channel0Events[6];
cfdb727a 748
4ea599a5
BH
749 fFacility.executeCommand(event, "addContextOnEvent");
750 // Currently there is nothing to verify because the list commands don't show any context information
cfdb727a 751 // However, the execution of the command make sure that the correct service command line is build and executed.
4ea599a5 752
a26d90be 753 // ------------------------------------------------------------------------
cfdb727a 754 // refresh
a26d90be
BH
755 // ------------------------------------------------------------------------
756 fFacility.executeCommand(node, "refresh");
757 groups = node.getChildren();
758 assertNotNull(groups);
759 assertEquals(2, groups.length);
760 assertEquals(3, groups[0].getChildren().length); // provider
761 assertEquals(1, groups[1].getChildren().length); // sessions
762 assertEquals(1, groups[1].getChildren()[0].getChildren().length); // domains
763 assertEquals(3, groups[1].getChildren()[0].getChildren()[0].getChildren().length); // channels
764 assertEquals(2, groups[1].getChildren()[0].getChildren()[0].getChildren()[0].getChildren().length); // events (of channel[0])
cfdb727a 765
a26d90be
BH
766 // Initialize session handling scenario
767 fProxy.setScenario(TraceControlTestFacility.SCEN_SCENARIO_SESSION_HANDLING);
cfdb727a 768
a26d90be 769 session = (TraceSessionComponent)groups[1].getChildren()[0];
4ea599a5 770
a26d90be 771 // ------------------------------------------------------------------------
cfdb727a 772 // start session
a26d90be
BH
773 // ------------------------------------------------------------------------
774 fFacility.startSession(session);
775 assertEquals(TraceSessionState.ACTIVE, session.getSessionState());
cfdb727a 776
a26d90be 777 // ------------------------------------------------------------------------
cfdb727a 778 // stop session
a26d90be
BH
779 // ------------------------------------------------------------------------
780 fFacility.stopSession(session);
781 assertEquals(TraceSessionState.INACTIVE, session.getSessionState());
cfdb727a 782
a26d90be 783 // ------------------------------------------------------------------------
cfdb727a 784 // Destroy session
a26d90be
BH
785 // ------------------------------------------------------------------------
786
787 fFacility.destroySession(session);
cfdb727a 788
a26d90be
BH
789 // Verify that no more session components exist
790 assertEquals(0, groups[1].getChildren().length);
791
792 //-------------------------------------------------------------------------
793 // Disconnect node
794 //-------------------------------------------------------------------------
795 fFacility.executeCommand(node, "disconnect");
796 assertEquals(TargetNodeState.DISCONNECTED, node.getTargetNodeState());
cfdb727a 797
a26d90be
BH
798 //-------------------------------------------------------------------------
799 // Delete node
800 //-------------------------------------------------------------------------
cfdb727a 801
a26d90be
BH
802 fFacility.executeCommand(node, "delete");
803 assertEquals(0,fFacility.getControlView().getTraceControlRoot().getChildren().length);
804 }
cfdb727a 805
a26d90be 806}
This page took 0.156907 seconds and 5 git commands to generate.