1 /*******************************************************************************
2 * Copyright (c) 2015 Ericsson
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 *******************************************************************************/
10 package org
.eclipse
.tracecompass
.lttng2
.control
.ui
.swtbot
.tests
;
12 import static org
.junit
.Assert
.assertEquals
;
13 import static org
.junit
.Assert
.assertNotNull
;
14 import static org
.junit
.Assert
.assertTrue
;
16 import org
.eclipse
.swtbot
.swt
.finder
.junit
.SWTBotJunit4ClassRunner
;
17 import org
.eclipse
.swtbot
.swt
.finder
.widgets
.SWTBotCCombo
;
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
.internal
.lttng2
.control
.ui
.views
.model
.ITraceControlComponent
;
25 import org
.eclipse
.tracecompass
.internal
.lttng2
.control
.ui
.views
.model
.impl
.TraceEventComponent
;
26 import org
.eclipse
.tracecompass
.tmf
.ui
.swtbot
.tests
.shared
.ConditionHelpers
;
27 import org
.eclipse
.tracecompass
.tmf
.ui
.swtbot
.tests
.shared
.SWTBotUtils
;
28 import org
.junit
.Test
;
29 import org
.junit
.runner
.RunWith
;
32 * Test for the Control view in Trace Compass. This will test the save and load feature.
34 * @author Bernd Hufmann
36 @RunWith(SWTBotJunit4ClassRunner
.class)
37 public class ControlViewKernelFilterTest
extends ControlViewTest
{
39 // ------------------------------------------------------------------------
41 // ------------------------------------------------------------------------
42 private static final String TEST_STREAM
= "CreateSessionTestLTTng2_8.cfg";
43 private static final String CREATE_SESSION_KERNEL_FILTER_SCENARIO_NAME
= "KernelFilter";
44 private static final String CREATE_SESSION_KERNEL_FILTER_PROVIDER_SCENARIO_NAME
= "KernelFilterProvider";
46 private static final String SESSION_NAME
= "mysession";
47 private static final String FILTER_EXPRESSION
= "next_tid==1234";
48 private static final String FILTER_EXPRESSION_DISPLAY
= "foo > 10";
51 protected String
getTestStream() {
56 protected String
getSessionName() {
62 public void testTraceSessionTree() {
64 fProxy
.setTestFile(fTestFile
);
65 fProxy
.setScenario(INIT_SCENARIO_NAME
);
68 // Prepare for saving of profile
69 fProxy
.setScenario(CREATE_SESSION_KERNEL_FILTER_SCENARIO_NAME
);
71 testEnableKernelEvent();
72 testStartStopTracing(TraceSessionState
.ACTIVE
);
73 testStartStopTracing(TraceSessionState
.INACTIVE
);
75 testDisconnectFromNode();
79 * Test enable events from Kernel provider
82 public void testTraceSessionTreeKernelProvider() {
84 fProxy
.setTestFile(fTestFile
);
85 fProxy
.setScenario(INIT_SCENARIO_NAME
);
88 // Prepare for saving of profile
89 fProxy
.setScenario(CREATE_SESSION_KERNEL_FILTER_PROVIDER_SCENARIO_NAME
);
91 testEnableKernelFromProviderEvent();
92 testStartStopTracing(TraceSessionState
.ACTIVE
);
93 testStartStopTracing(TraceSessionState
.INACTIVE
);
95 testDisconnectFromNode();
99 protected void testEnableKernelEvent() {
100 SWTBotTreeItem sessionItem
= SWTBotUtils
.getTreeItem(fBot
, fTree
,
102 ControlViewSwtBotUtil
.SESSION_GROUP_NAME
,
105 sessionItem
.select();
106 SWTBotMenu menuBot
= sessionItem
.contextMenu(ControlViewSwtBotUtil
.ENABLE_EVENT_DEFAULT_CHANNEL_MENU_ITEM
);
109 SWTBotShell shell
= fBot
.shell(ControlViewSwtBotUtil
.ENABLE_EVENT_DIALOG_TITLE
).activate();
111 shell
.bot().radioInGroup(ControlViewSwtBotUtil
.GROUP_SELECT_NAME
, ControlViewSwtBotUtil
.TRACEPOINTS_GROUP_NAME
).click();
113 SWTBotTree tracepointsTree
= shell
.bot().tree();
114 tracepointsTree
.select(ControlViewSwtBotUtil
.ALL_TREE_NODE
);
115 SWTBotText filterText
= shell
.bot().textInGroup(ControlViewSwtBotUtil
.FILTER_EXPRESSION_LABEL
);
116 filterText
.setText(FILTER_EXPRESSION
);
117 shell
.bot().button(ControlViewSwtBotUtil
.DIALOG_OK_BUTTON
).click();
118 SWTBotUtils
.waitForJobs();
120 fBot
.waitUntil(ConditionHelpers
.IsTreeChildNodeAvailable(ControlViewSwtBotUtil
.KERNEL_DOMAIN_NAME
, sessionItem
));
122 SWTBotTreeItem kernelDomainItem
= SWTBotUtils
.getTreeItem(fBot
, fTree
,
124 ControlViewSwtBotUtil
.SESSION_GROUP_NAME
,
126 ControlViewSwtBotUtil
.KERNEL_DOMAIN_NAME
);
127 assertEquals(ControlViewSwtBotUtil
.KERNEL_DOMAIN_NAME
, kernelDomainItem
.getText());
129 SWTBotTreeItem channelItem
= SWTBotUtils
.getTreeItem(fBot
, fTree
,
131 ControlViewSwtBotUtil
.SESSION_GROUP_NAME
,
133 ControlViewSwtBotUtil
.KERNEL_DOMAIN_NAME
,
134 ControlViewSwtBotUtil
.DEFAULT_CHANNEL_NAME
);
135 assertEquals(ControlViewSwtBotUtil
.DEFAULT_CHANNEL_NAME
, channelItem
.getText());
137 SWTBotTreeItem eventItem
= SWTBotUtils
.getTreeItem(fBot
, fTree
,
139 ControlViewSwtBotUtil
.SESSION_GROUP_NAME
,
141 ControlViewSwtBotUtil
.KERNEL_DOMAIN_NAME
,
142 ControlViewSwtBotUtil
.DEFAULT_CHANNEL_NAME
,
143 ControlViewSwtBotUtil
.ALL_EVENTS_NAME
);
144 assertEquals(ControlViewSwtBotUtil
.ALL_EVENTS_NAME
, eventItem
.getText());
146 ITraceControlComponent comp
= ControlViewSwtBotUtil
.getComponent(fNode
,
147 ControlViewSwtBotUtil
.SESSION_GROUP_NAME
,
149 ControlViewSwtBotUtil
.KERNEL_DOMAIN_NAME
,
150 ControlViewSwtBotUtil
.DEFAULT_CHANNEL_NAME
,
151 ControlViewSwtBotUtil
.ALL_EVENTS_NAME
);
153 assertTrue(comp
instanceof TraceEventComponent
);
154 TraceEventComponent event
= (TraceEventComponent
) comp
;
155 assertEquals(FILTER_EXPRESSION_DISPLAY
, event
.getFilterExpression());
158 private void testEnableKernelFromProviderEvent() {
159 SWTBotTreeItem kernelProviderEventItem
= SWTBotUtils
.getTreeItem(fBot
, fTree
,
161 ControlViewSwtBotUtil
.PROVIDER_GROUP_NAME
,
162 ControlViewSwtBotUtil
.KERNEL_DOMAIN_NAME
,
163 ControlViewSwtBotUtil
.SCHED_SWITCH_EVENT_NAME
);
165 kernelProviderEventItem
.select();
166 SWTBotMenu menuBot
= kernelProviderEventItem
.contextMenu(ControlViewSwtBotUtil
.ENABLE_EVENT_MENU_ITEM
);
169 SWTBotShell shell
= fBot
.shell(ControlViewSwtBotUtil
.ENABLE_EVENT_DIALOG_TITLE
).activate();
170 SWTBotCCombo sessionCombo
= shell
.bot().ccomboBoxInGroup(ControlViewSwtBotUtil
.SESSION_LIST_GROUP_NAME
);
171 sessionCombo
.setSelection(getSessionName());
172 SWTBotText filterText
= shell
.bot().textInGroup(ControlViewSwtBotUtil
.FILTER_EXPRESSION_LABEL
);
173 filterText
.setText(FILTER_EXPRESSION
);
174 shell
.bot().button(ControlViewSwtBotUtil
.DIALOG_OK_BUTTON
).click();
175 SWTBotUtils
.waitForJobs();
177 SWTBotTreeItem sessionItem
= SWTBotUtils
.getTreeItem(fBot
, fTree
,
179 ControlViewSwtBotUtil
.SESSION_GROUP_NAME
,
182 fBot
.waitUntil(ConditionHelpers
.IsTreeChildNodeAvailable(ControlViewSwtBotUtil
.KERNEL_DOMAIN_NAME
, sessionItem
));
184 SWTBotTreeItem kernelDomainItem
= SWTBotUtils
.getTreeItem(fBot
, fTree
,
186 ControlViewSwtBotUtil
.SESSION_GROUP_NAME
,
188 ControlViewSwtBotUtil
.KERNEL_DOMAIN_NAME
);
189 assertEquals(ControlViewSwtBotUtil
.KERNEL_DOMAIN_NAME
, kernelDomainItem
.getText());
191 SWTBotTreeItem channelItem
= SWTBotUtils
.getTreeItem(fBot
, fTree
,
193 ControlViewSwtBotUtil
.SESSION_GROUP_NAME
,
195 ControlViewSwtBotUtil
.KERNEL_DOMAIN_NAME
,
196 ControlViewSwtBotUtil
.DEFAULT_CHANNEL_NAME
);
197 assertEquals(ControlViewSwtBotUtil
.DEFAULT_CHANNEL_NAME
, channelItem
.getText());
199 SWTBotTreeItem eventItem
= SWTBotUtils
.getTreeItem(fBot
, fTree
,
201 ControlViewSwtBotUtil
.SESSION_GROUP_NAME
,
203 ControlViewSwtBotUtil
.KERNEL_DOMAIN_NAME
,
204 ControlViewSwtBotUtil
.DEFAULT_CHANNEL_NAME
,
205 ControlViewSwtBotUtil
.SCHED_SWITCH_EVENT_NAME
);
206 assertEquals(ControlViewSwtBotUtil
.SCHED_SWITCH_EVENT_NAME
, eventItem
.getText());
208 ITraceControlComponent comp
= ControlViewSwtBotUtil
.getComponent(fNode
,
209 ControlViewSwtBotUtil
.SESSION_GROUP_NAME
,
211 ControlViewSwtBotUtil
.KERNEL_DOMAIN_NAME
,
212 ControlViewSwtBotUtil
.DEFAULT_CHANNEL_NAME
,
213 ControlViewSwtBotUtil
.SCHED_SWITCH_EVENT_NAME
);
215 assertTrue(comp
instanceof TraceEventComponent
);
216 TraceEventComponent event
= (TraceEventComponent
) comp
;
217 assertEquals(FILTER_EXPRESSION_DISPLAY
, event
.getFilterExpression());