Commit | Line | Data |
---|---|---|
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 | ||
10 | package org.eclipse.tracecompass.lttng2.control.ui.swtbot.tests; | |
11 | ||
12 | import static org.junit.Assert.assertEquals; | |
13 | ||
14 | import org.eclipse.swtbot.eclipse.finder.widgets.SWTBotView; | |
15 | import org.eclipse.swtbot.swt.finder.widgets.SWTBotMenu; | |
16 | import org.eclipse.swtbot.swt.finder.widgets.SWTBotShell; | |
17 | import org.eclipse.swtbot.swt.finder.widgets.SWTBotTree; | |
18 | import org.eclipse.swtbot.swt.finder.widgets.SWTBotTreeItem; | |
19 | import org.eclipse.tracecompass.internal.lttng2.control.core.model.TraceSessionState; | |
20 | import org.eclipse.tracecompass.internal.lttng2.control.ui.views.ControlView; | |
21 | import org.eclipse.tracecompass.tmf.ui.swtbot.tests.shared.ConditionHelpers; | |
22 | import org.eclipse.tracecompass.tmf.ui.swtbot.tests.shared.SWTBotUtils; | |
23 | import 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 | */ | |
30 | public 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 | } |