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