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