6f0e251d5505d068b335dc9f1c921421a8d531ed
[deliverable/tracecompass.git] / lttng / org.eclipse.tracecompass.lttng2.control.ui.swtbot.tests / src / org / eclipse / tracecompass / lttng2 / control / ui / swtbot / tests / ControlViewSpecificEventTest.java
1 /*******************************************************************************
2 * Copyright (c) 2015 Ericsson
3 *
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
8 *******************************************************************************/
9
10 package org.eclipse.tracecompass.lttng2.control.ui.swtbot.tests;
11
12 import static org.junit.Assert.assertEquals;
13
14 import java.util.Arrays;
15 import java.util.List;
16
17 import org.eclipse.swtbot.swt.finder.junit.SWTBotJunit4ClassRunner;
18 import org.eclipse.swtbot.swt.finder.widgets.SWTBotMenu;
19 import org.eclipse.swtbot.swt.finder.widgets.SWTBotShell;
20 import org.eclipse.swtbot.swt.finder.widgets.SWTBotText;
21 import org.eclipse.swtbot.swt.finder.widgets.SWTBotTree;
22 import org.eclipse.swtbot.swt.finder.widgets.SWTBotTreeItem;
23 import org.eclipse.tracecompass.internal.lttng2.control.core.model.TraceSessionState;
24 import org.eclipse.tracecompass.tmf.ui.swtbot.tests.shared.ConditionHelpers;
25 import org.eclipse.tracecompass.tmf.ui.swtbot.tests.shared.SWTBotUtils;
26 import org.junit.Test;
27 import org.junit.runner.RunWith;
28
29 /**
30 * Test for the Control view in Trace Compass. This will test the enabling
31 * of specific kernel event(s) by name.
32 *
33 * @author Bruno Roy
34 */
35 @RunWith(SWTBotJunit4ClassRunner.class)
36 public class ControlViewSpecificEventTest extends ControlViewTest {
37
38 // ------------------------------------------------------------------------
39 // Constants
40 // ------------------------------------------------------------------------
41 private static final String TEST_STREAM = "CreateSessionTestLTTng2_8.cfg";
42
43 private static final String CREATE_SESSION_SPECIFIC_KERNEL_EVENT_SCENARIO_NAME = "CreateSessionSpecificKernelEvent";
44
45 private static final String SESSION_NAME = "mysession";
46
47 /**
48 * Get the test stream file name to use for the test suite
49 *
50 * @return the name of the test stream file
51 */
52 @Override
53 protected String getTestStream() {
54 return TEST_STREAM;
55 }
56
57 /**
58 * Get the session name
59 *
60 * @return the session name for this test
61 */
62 @Override
63 protected String getSessionName() {
64 return SESSION_NAME;
65 }
66
67 @Override
68 @Test
69 public void testTraceSessionTree() {
70
71 // Initialize scenario
72 fProxy.setTestFile(fTestFile);
73 fProxy.setScenario(INIT_SCENARIO_NAME);
74
75 testConnectToNode();
76
77 // Creating a session by specifying an event scenario
78 fProxy.setScenario(CREATE_SESSION_SPECIFIC_KERNEL_EVENT_SCENARIO_NAME);
79 // Create a session
80 testCreateSession();
81 // Enable an event by specifying the event type
82 testEnableSpecificKernelEvent(Arrays.asList(ControlViewSwtBotUtil.SCHED_SWITCH_EVENT_NAME), false, true);
83 // Enable multiple events by specifying the event type
84 testEnableSpecificKernelEvent(Arrays.asList(ControlViewSwtBotUtil.SCHED_WAKEUP_EVENT_NAME, ControlViewSwtBotUtil.SCHED_PROCESSWAIT_EVENT_NAME), false, true);
85 // Enable an event by specifying the event type and selection in tree (duplication of name)
86 testEnableSpecificKernelEvent(Arrays.asList(ControlViewSwtBotUtil.SCHED_PROCESSFORK_EVENT_NAME), true, true);
87 // Enable an event using the tree only
88 testEnableSpecificKernelEvent(Arrays.asList(ControlViewSwtBotUtil.SCHED_PROCESSEXEC_EVENT_NAME), true, false);
89 // Enable all events using tree. It will ignore what is written in the specific event text box.
90 testEnableSpecificKernelEvent(Arrays.asList(ControlViewSwtBotUtil.ALL_TREE_NODE), true, true);
91
92 // Start, stop tracing then destroy the session and diconnect
93 testStartStopTracing(TraceSessionState.ACTIVE);
94 testStartStopTracing(TraceSessionState.INACTIVE);
95 testDestroySession();
96 testDisconnectFromNode();
97 }
98
99 /**
100 * Test for enabling an event type by specifying its name
101 *
102 * @param events
103 * event names to enable
104 * @param selectInTree
105 * select event names also in tree
106 * Note: using All as name then all tree node is selected
107 * @param useNameField
108 * use event name field
109 *
110 */
111 private void testEnableSpecificKernelEvent(List<String> events, boolean selectInTree, boolean useNameField) {
112 SWTBotTreeItem sessionItem = SWTBotUtils.getTreeItem(fBot, fTree,
113 getNodeName(),
114 ControlViewSwtBotUtil.SESSION_GROUP_NAME,
115 getSessionName());
116
117 sessionItem.select();
118 SWTBotMenu menuBot = sessionItem.contextMenu(ControlViewSwtBotUtil.ENABLE_EVENT_DEFAULT_CHANNEL_MENU_ITEM);
119 menuBot.click();
120
121 SWTBotShell shell = fBot.shell(ControlViewSwtBotUtil.ENABLE_EVENT_DIALOG_TITLE).activate();
122
123 // Select specific event radio button in the Specific event group
124 shell.bot().radioInGroup(ControlViewSwtBotUtil.GROUP_SELECT_NAME, ControlViewSwtBotUtil.TRACEPOINTS_GROUP_NAME).click();
125
126 if (selectInTree) {
127 SWTBotTree tracepointsTree = shell.bot().tree();
128 for (String event : events) {
129 if (event.equals(ControlViewSwtBotUtil.ALL_TREE_NODE)) {
130 SWTBotTreeItem treeItem = tracepointsTree.getTreeItem(ControlViewSwtBotUtil.ALL_TREE_NODE);
131 treeItem.check();
132 break;
133 }
134 tracepointsTree.expandNode(ControlViewSwtBotUtil.ALL_TREE_NODE);
135 // select specific
136 SWTBotTreeItem treeItem = SWTBotUtils.getTreeItem(fBot, tracepointsTree, ControlViewSwtBotUtil.ALL_TREE_NODE, event);
137 treeItem.check();
138 }
139 }
140
141 // Enters the event type in the text field Event type in the Specific event group
142 if (useNameField) {
143 SWTBotText specificEventText = shell.bot().textInGroup(ControlViewSwtBotUtil.SPECIFIC_EVENT_GROUP_NAME);
144 String suffix = "";
145 StringBuffer buffer = new StringBuffer();
146 for (String event : events) {
147 buffer.append(suffix).append(event);
148 // append comma and space to test removal of space
149 suffix = ", ";
150 }
151 specificEventText.setText(buffer.toString());
152 }
153
154 // Click Ok to quit the dialog window
155 shell.bot().button(ControlViewSwtBotUtil.DIALOG_OK_BUTTON).click();
156 SWTBotUtils.waitForJobs();
157
158 // Wait until the child of Sessions is activated
159 fBot.waitUntil(ConditionHelpers.IsTreeChildNodeAvailable(ControlViewSwtBotUtil.KERNEL_DOMAIN_NAME, sessionItem));
160
161 // Assert that the new channel name is channel0 (which is the default name)
162 SWTBotTreeItem channelItem = SWTBotUtils.getTreeItem(fBot, fTree,
163 getNodeName(),
164 ControlViewSwtBotUtil.SESSION_GROUP_NAME,
165 getSessionName(),
166 ControlViewSwtBotUtil.KERNEL_DOMAIN_NAME,
167 ControlViewSwtBotUtil.DEFAULT_CHANNEL_NAME);
168 assertEquals(ControlViewSwtBotUtil.DEFAULT_CHANNEL_NAME, channelItem.getText());
169
170 channelItem.expand();
171
172 for (String event : events) {
173 // Wait until the child of Sessions is activated
174 String eventName = event;
175 if (event.equals(ControlViewSwtBotUtil.ALL_TREE_NODE)) {
176 eventName = ControlViewSwtBotUtil.ALL_EVENTS_NAME;
177 }
178 fBot.waitUntil(ConditionHelpers.IsTreeChildNodeAvailable(eventName, channelItem));
179 // Assert that the event type in the channel node are correct
180 SWTBotTreeItem eventItem = SWTBotUtils.getTreeItem(fBot, fTree,
181 getNodeName(),
182 ControlViewSwtBotUtil.SESSION_GROUP_NAME,
183 getSessionName(),
184 ControlViewSwtBotUtil.KERNEL_DOMAIN_NAME,
185 ControlViewSwtBotUtil.DEFAULT_CHANNEL_NAME,
186 eventName);
187 assertEquals(eventName, eventItem.getText());
188 }
189
190 }
191 }
This page took 0.035179 seconds and 4 git commands to generate.