lttng.control: Adding support for the Python domain in the Control view
[deliverable/tracecompass.git] / lttng / org.eclipse.tracecompass.lttng2.control.ui.swtbot.tests / src / org / eclipse / tracecompass / lttng2 / control / ui / swtbot / tests / ControlViewJulLoggerTest.java
CommitLineData
0a004264
BR
1/*******************************************************************************
2 * Copyright (c) 2016 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
10package org.eclipse.tracecompass.lttng2.control.ui.swtbot.tests;
11
12import static org.junit.Assert.assertEquals;
13
14import org.eclipse.swtbot.eclipse.finder.widgets.SWTBotView;
15import org.eclipse.swtbot.swt.finder.widgets.SWTBotMenu;
16import org.eclipse.swtbot.swt.finder.widgets.SWTBotShell;
17import org.eclipse.swtbot.swt.finder.widgets.SWTBotTree;
18import org.eclipse.swtbot.swt.finder.widgets.SWTBotTreeItem;
19import org.eclipse.tracecompass.internal.lttng2.control.core.model.TraceSessionState;
20import org.eclipse.tracecompass.internal.lttng2.control.ui.views.ControlView;
21import org.eclipse.tracecompass.tmf.ui.swtbot.tests.shared.ConditionHelpers;
22import org.eclipse.tracecompass.tmf.ui.swtbot.tests.shared.SWTBotUtils;
23import org.junit.Test;
24
25/**
26 * Test for the Control view in Trace Compass. This will test the JUL loggers.
27 *
28 * @author Bruno Roy
29 */
30public class ControlViewJulLoggerTest extends ControlViewTest {
31
32 // ------------------------------------------------------------------------
33 // Constants
34 // ------------------------------------------------------------------------
35 private static final String TEST_STREAM = "CreateSessionTestLTTng2_8.cfg";
36 private static final String CREATE_SESSION_JUL_SCENARIO_NAME = "JulLogger";
37
38 private static final String SESSION_NAME = "mysession";
39 private static final String PROPERTIES_VIEW = "Properties";
40 private static final String LOGLEVEL_PROPERTY_NAME = "Log Level";
41
42 @Override
43 protected String getTestStream() {
44 return TEST_STREAM;
45 }
46
47 @Override
48 protected String getSessionName() {
49 return SESSION_NAME;
50 }
51
52 /**
53 * Testing the trace session tree.
54 */
55 @Override
56 @Test
57 public void testTraceSessionTree() {
58
59 fProxy.setTestFile(fTestFile);
60 fProxy.setScenario(INIT_SCENARIO_NAME);
61 testConnectToNode();
62
63 // Enable all JUL loggers
64 fProxy.setScenario(CREATE_SESSION_JUL_SCENARIO_NAME);
65 testCreateSession();
66 testEnableJulLoggers();
67 testStartStopTracing(TraceSessionState.ACTIVE);
68 testStartStopTracing(TraceSessionState.INACTIVE);
69
70 // Verify that the Properties view shows to right logger log level
71 testLoggerProperties();
72
73 // Clean session
74 testDestroySession();
75 testDisconnectFromNode();
76 }
77
78 /**
79 * Enable JUL loggers with different log level and log level type
80 */
81 protected void testEnableJulLoggers() {
82 // Case 1: Enabling all loggers
83 // Getting the 'Sessions' tree
84 SWTBotTreeItem sessionItem = SWTBotUtils.getTreeItem(fBot, fTree,
85 getNodeName(),
86 ControlViewSwtBotUtil.SESSION_GROUP_NAME,
87 getSessionName());
88 sessionItem.select();
89
90 // Clicking on the 'Enable Event (default channel)...'
91 SWTBotMenu menuBot = sessionItem.contextMenu(ControlViewSwtBotUtil.ENABLE_EVENT_DEFAULT_CHANNEL_MENU_ITEM);
92 menuBot.click();
93
94 SWTBotShell shell = fBot.shell(ControlViewSwtBotUtil.ENABLE_EVENT_DIALOG_TITLE).activate();
95
96 // Switching to the JUL domain
97 shell.bot().radioInGroup(ControlViewSwtBotUtil.JUL_DOMAIN_NAME, ControlViewSwtBotUtil.DOMAIN_GROUP_NAME).click();
98
99 // Selecting all JUL loggers
100 SWTBotTree loggersTree = shell.bot().treeInGroup(ControlViewSwtBotUtil.LOGGERS_GROUP_NAME);
101 SWTBotTreeItem treeItem = loggersTree.getTreeItem(ControlViewSwtBotUtil.ALL_TREE_NODE);
102 treeItem.check();
103
104 // Click the Ok at the bottom of the dialog window
105 shell.bot().button(ControlViewSwtBotUtil.DIALOG_OK_BUTTON).click();
106 SWTBotUtils.waitForJobs();
107 fBot.waitUntil(ConditionHelpers.IsTreeChildNodeAvailable(ControlViewSwtBotUtil.JUL_DOMAIN_NAME, sessionItem));
108
109 // Assert that the domain is JUL
110 SWTBotTreeItem julDomainItem = SWTBotUtils.getTreeItem(fBot, fTree,
111 getNodeName(),
112 ControlViewSwtBotUtil.SESSION_GROUP_NAME,
113 getSessionName(),
114 ControlViewSwtBotUtil.JUL_DOMAIN_NAME);
115 assertEquals(ControlViewSwtBotUtil.JUL_DOMAIN_NAME, julDomainItem.getText());
116
117 // Assert that the logger type in the domain node are correct (all events = *)
118 SWTBotTreeItem loggerItem = SWTBotUtils.getTreeItem(fBot, fTree,
119 getNodeName(),
120 ControlViewSwtBotUtil.SESSION_GROUP_NAME,
121 getSessionName(),
122 ControlViewSwtBotUtil.JUL_DOMAIN_NAME,
123 ControlViewSwtBotUtil.ALL_EVENTS_NAME);
124 assertEquals(ControlViewSwtBotUtil.ALL_EVENTS_NAME, loggerItem.getText());
125
126 // Case 2: Enabling a specific logger with no particular log level
127 sessionItem.select();
128 menuBot = sessionItem.contextMenu(ControlViewSwtBotUtil.ENABLE_EVENT_DEFAULT_CHANNEL_MENU_ITEM);
129 menuBot.click();
130 shell = fBot.shell(ControlViewSwtBotUtil.ENABLE_EVENT_DIALOG_TITLE).activate();
131 shell.bot().radioInGroup(ControlViewSwtBotUtil.JUL_DOMAIN_NAME, ControlViewSwtBotUtil.DOMAIN_GROUP_NAME).click();
132 loggersTree = shell.bot().treeInGroup(ControlViewSwtBotUtil.LOGGERS_GROUP_NAME);
133 // Expand the "All" and "All - application name" node
134 SWTBotTreeItem allItem = loggersTree.getTreeItem(ControlViewSwtBotUtil.ALL_TREE_NODE);
135 allItem.expand();
136 allItem = SWTBotUtils.getTreeItem(fBot, loggersTree, ControlViewSwtBotUtil.ALL_TREE_NODE, ControlViewSwtBotUtil.JUL_APPLICATION_NAME);
137 allItem.expand();
138 treeItem = SWTBotUtils.getTreeItem(fBot, loggersTree,
139 ControlViewSwtBotUtil.ALL_TREE_NODE,
140 ControlViewSwtBotUtil.JUL_APPLICATION_NAME,
141 ControlViewSwtBotUtil.LOGGER_NAME);
142 treeItem.check();
143
144 // Click the Ok at the bottom of the dialog window
145 shell.bot().button(ControlViewSwtBotUtil.DIALOG_OK_BUTTON).click();
146 SWTBotUtils.waitForJobs();
147 fBot.waitUntil(ConditionHelpers.IsTreeChildNodeAvailable(ControlViewSwtBotUtil.JUL_DOMAIN_NAME, sessionItem));
148
149 // Assert that the domain is JUL global
150 julDomainItem = SWTBotUtils.getTreeItem(fBot, fTree,
151 getNodeName(),
152 ControlViewSwtBotUtil.SESSION_GROUP_NAME,
153 getSessionName(),
154 ControlViewSwtBotUtil.JUL_DOMAIN_NAME);
155 assertEquals(ControlViewSwtBotUtil.JUL_DOMAIN_NAME, julDomainItem.getText());
156
157 // Assert that the logger type in the domain node are correct (all events = *)
158 loggerItem = SWTBotUtils.getTreeItem(fBot, fTree,
159 getNodeName(),
160 ControlViewSwtBotUtil.SESSION_GROUP_NAME,
161 getSessionName(),
162 ControlViewSwtBotUtil.JUL_DOMAIN_NAME,
163 ControlViewSwtBotUtil.LOGGER_NAME);
164 assertEquals(ControlViewSwtBotUtil.LOGGER_NAME, loggerItem.getText());
165
166 // Case 3: Enabling a specific logger with WARNING log level
167 sessionItem.select();
168 menuBot = sessionItem.contextMenu(ControlViewSwtBotUtil.ENABLE_EVENT_DEFAULT_CHANNEL_MENU_ITEM);
169 menuBot.click();
170 shell = fBot.shell(ControlViewSwtBotUtil.ENABLE_EVENT_DIALOG_TITLE).activate();
171 shell.bot().radioInGroup(ControlViewSwtBotUtil.JUL_DOMAIN_NAME, ControlViewSwtBotUtil.DOMAIN_GROUP_NAME).click();
172 loggersTree = shell.bot().treeInGroup(ControlViewSwtBotUtil.LOGGERS_GROUP_NAME);
173 // Expand the "All" and "All - application name" node
174 allItem = loggersTree.getTreeItem(ControlViewSwtBotUtil.ALL_TREE_NODE);
175 allItem.expand();
176 allItem = SWTBotUtils.getTreeItem(fBot, loggersTree, ControlViewSwtBotUtil.ALL_TREE_NODE, "All - ./client_bin/challenger [PID=14237] (With logger)");
177 allItem.expand();
178 treeItem = SWTBotUtils.getTreeItem(fBot, loggersTree, ControlViewSwtBotUtil.ALL_TREE_NODE, "All - ./client_bin/challenger [PID=14237] (With logger)", ControlViewSwtBotUtil.ANOTHER_LOGGER_NAME);
179 treeItem.check();
180 // Select a log level
181 shell.bot().checkBoxInGroup(LOGLEVEL_PROPERTY_NAME).select();
182 shell.bot().ccomboBoxInGroup(LOGLEVEL_PROPERTY_NAME).setSelection("Warning");
183 // Click the Ok at the bottom of the dialog window
184 shell.bot().button(ControlViewSwtBotUtil.DIALOG_OK_BUTTON).click();
185 SWTBotUtils.waitForJobs();
186 fBot.waitUntil(ConditionHelpers.IsTreeChildNodeAvailable(ControlViewSwtBotUtil.JUL_DOMAIN_NAME, sessionItem));
187
188 // Assert that the domain is JUL global
189 julDomainItem = SWTBotUtils.getTreeItem(fBot, fTree,
190 getNodeName(),
191 ControlViewSwtBotUtil.SESSION_GROUP_NAME,
192 getSessionName(),
193 ControlViewSwtBotUtil.JUL_DOMAIN_NAME);
194 assertEquals(ControlViewSwtBotUtil.JUL_DOMAIN_NAME, julDomainItem.getText());
195
196 // Assert that the logger type in the domain node are correct (all events = *)
197 loggerItem = SWTBotUtils.getTreeItem(fBot, fTree,
198 getNodeName(),
199 ControlViewSwtBotUtil.SESSION_GROUP_NAME,
200 getSessionName(),
201 ControlViewSwtBotUtil.JUL_DOMAIN_NAME,
202 ControlViewSwtBotUtil.ANOTHER_LOGGER_NAME);
203 assertEquals(ControlViewSwtBotUtil.ANOTHER_LOGGER_NAME, loggerItem.getText());
204 }
205
206 /**
207 * Test that the Properties view has been update and shows the the right
208 * information.
209 */
210 protected void testLoggerProperties() {
211 // Open the properties view (by id)
212 SWTBotUtils.openView("org.eclipse.ui.views.PropertySheet");
213
214 // Case 1: Select the "logger" logger in the Control view
215 fBot.viewById(ControlView.ID).show();
216 SWTBotTreeItem loggerItem = SWTBotUtils.getTreeItem(fBot, fTree,
217 getNodeName(),
218 ControlViewSwtBotUtil.SESSION_GROUP_NAME,
219 getSessionName(),
220 ControlViewSwtBotUtil.JUL_DOMAIN_NAME,
221 ControlViewSwtBotUtil.LOGGER_NAME);
222 loggerItem.select();
223
224 // Get a bot and open the Properties view
225 SWTBotView propertiesViewBot = fBot.viewByTitle(PROPERTIES_VIEW);
226 propertiesViewBot.show();
227
228 // Get the Log Level field in the tree
229 SWTBotTree propertiesViewTree = propertiesViewBot.bot().tree();
230 SWTBotTreeItem loglevelTreeItem = propertiesViewTree.getTreeItem(LOGLEVEL_PROPERTY_NAME);
231 // We want the VALUE of the 'Log Level' row so the cell index is 1
232 String loglevelExpression = loglevelTreeItem.cell(1);
233
234 // Assert that the expression in the Properties view is the same as
235 // the one we entered
236 assertEquals("All", loglevelExpression);
237
238 // Case 2: Select the "anotherLogger" logger in the Control view
239 fBot.viewById(ControlView.ID).show();
240 loggerItem = SWTBotUtils.getTreeItem(fBot, fTree,
241 getNodeName(),
242 ControlViewSwtBotUtil.SESSION_GROUP_NAME,
243 getSessionName(),
244 ControlViewSwtBotUtil.JUL_DOMAIN_NAME,
245 ControlViewSwtBotUtil.ANOTHER_LOGGER_NAME);
246 loggerItem.select();
247
248 // Get a bot and open the Properties view
249 propertiesViewBot = fBot.viewByTitle(PROPERTIES_VIEW);
250 propertiesViewBot.show();
251
252 // Get the Log Level field in the tree
253 propertiesViewTree = propertiesViewBot.bot().tree();
254 loglevelTreeItem = propertiesViewTree.getTreeItem(LOGLEVEL_PROPERTY_NAME);
255 // We want the VALUE of the 'Log Level' row so the cell index is 1
256 loglevelExpression = loglevelTreeItem.cell(1);
257
258 // Assert that the expression in the Properties view is the same as
259 // the one we entered
260 assertEquals("<= Warning", loglevelExpression);
261
262 // Close the Properties view
263 SWTBotUtils.closeView(PROPERTIES_VIEW, fBot);
264 }
265
266}
This page took 0.039364 seconds and 5 git commands to generate.