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