blob: 7bd0b30bfa30638b71bbcd1b5ae4424d6f43a0f7 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2015 Ericsson
*
* All rights reserved. This program and the accompanying materials are
* made available under the terms of the Eclipse Public License 2.0 which
* accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*******************************************************************************/
package org.eclipse.tracecompass.lttng2.control.ui.swtbot.tests;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import org.eclipse.swtbot.eclipse.finder.widgets.SWTBotView;
import org.eclipse.swtbot.swt.finder.junit.SWTBotJunit4ClassRunner;
import org.eclipse.swtbot.swt.finder.widgets.SWTBotMenu;
import org.eclipse.swtbot.swt.finder.widgets.SWTBotShell;
import org.eclipse.swtbot.swt.finder.widgets.SWTBotText;
import org.eclipse.swtbot.swt.finder.widgets.SWTBotTree;
import org.eclipse.swtbot.swt.finder.widgets.SWTBotTreeItem;
import org.eclipse.tracecompass.internal.lttng2.control.core.model.TraceSessionState;
import org.eclipse.tracecompass.internal.lttng2.control.ui.views.ControlView;
import org.eclipse.tracecompass.internal.lttng2.control.ui.views.model.ITraceControlComponent;
import org.eclipse.tracecompass.internal.lttng2.control.ui.views.model.impl.TraceEventComponent;
import org.eclipse.tracecompass.tmf.ui.swtbot.tests.shared.ConditionHelpers;
import org.eclipse.tracecompass.tmf.ui.swtbot.tests.shared.SWTBotUtils;
import org.eclipse.tracecompass.tmf.ui.tests.shared.WaitUtils;
import org.junit.Test;
import org.junit.runner.RunWith;
/**
* Test for the Control view in Trace Compass. This will test the exclude events feature.
*
* @author Bruno Roy
*/
@RunWith(SWTBotJunit4ClassRunner.class)
public class ControlViewExcludeEventsTest extends ControlViewTest {
// ------------------------------------------------------------------------
// Constants
// ------------------------------------------------------------------------
private static final String TEST_STREAM = "CreateSessionTestLTTng2_8.cfg";
private static final String CREATE_SESSION_UST_EXCLUDE_SCENARIO_NAME = "ExcludeEvent";
private static final String SESSION_NAME = "mysession";
private static final String EXCLUDE_EXPRESSION = "foo";
private static final String PROPERTIES_VIEW = "Properties";
private static final String EXCLUDE_TREE_ITEM = "Exclude";
@Override
protected String getTestStream() {
return TEST_STREAM;
}
@Override
protected String getSessionName() {
return SESSION_NAME;
}
/**
* Testing the trace session tree.
*/
@Override
@Test
public void testTraceSessionTree() {
fProxy.setTestFile(fTestFile);
fProxy.setScenario(INIT_SCENARIO_NAME);
testConnectToNode();
// Enable all UST events with one excluded event
fProxy.setScenario(CREATE_SESSION_UST_EXCLUDE_SCENARIO_NAME);
testCreateSession();
testEnableUstEventExclude();
testStartStopTracing(TraceSessionState.ACTIVE);
testStartStopTracing(TraceSessionState.INACTIVE);
// Verify that the Properties view shows to right excluded event
testPropertiesEventExclude();
// Clean session
testDestroySession();
testDisconnectFromNode();
}
/**
* Enable all UST events with one excluded event.
*/
protected void testEnableUstEventExclude() {
// Getting the 'Sessions' tree
SWTBotTreeItem sessionItem = SWTBotUtils.getTreeItem(fBot, fTree,
getNodeName(),
ControlViewSwtBotUtil.SESSION_GROUP_NAME,
getSessionName());
sessionItem.select();
// Clicking on the 'Enable Event (default channel)...'
SWTBotMenu menuBot = sessionItem.contextMenu(ControlViewSwtBotUtil.ENABLE_EVENT_DEFAULT_CHANNEL_MENU_ITEM);
menuBot.click();
SWTBotShell shell = fBot.shell(ControlViewSwtBotUtil.ENABLE_EVENT_DIALOG_TITLE).activate();
// Switching to the UST domain
shell.bot().radioInGroup(ControlViewSwtBotUtil.UST_GROUP_NAME, ControlViewSwtBotUtil.DOMAIN_GROUP_NAME).click();
// Selecting all UST events
SWTBotTree tracepointsTree = shell.bot().treeInGroup(ControlViewSwtBotUtil.TRACEPOINTS_GROUP_NAME);
SWTBotTreeItem treeItem = tracepointsTree.getTreeItem(ControlViewSwtBotUtil.ALL_TREE_NODE);
treeItem.check();
// Click the checkbox for the Exclude event
shell.bot().checkBoxInGroup(ControlViewSwtBotUtil.GROUP_SELECT_NAME, ControlViewSwtBotUtil.EXCLUDE_EVENT_LABEL).click();
// Enter the event to exclude in the text field
SWTBotText excludeText = shell.bot().textInGroup(ControlViewSwtBotUtil.EXCLUDE_EVENT_LABEL);
excludeText.setText(EXCLUDE_EXPRESSION);
// Click the Ok at the bottom of the dialog window
shell.bot().button(ControlViewSwtBotUtil.DIALOG_OK_BUTTON).click();
WaitUtils.waitForJobs();
fBot.waitUntil(ConditionHelpers.isTreeChildNodeAvailable(ControlViewSwtBotUtil.UST_DOMAIN_NAME, sessionItem));
// Assert that the domain is UST global
SWTBotTreeItem ustGlobalDomainItem = SWTBotUtils.getTreeItem(fBot, fTree,
getNodeName(),
ControlViewSwtBotUtil.SESSION_GROUP_NAME,
getSessionName(),
ControlViewSwtBotUtil.UST_DOMAIN_NAME);
assertEquals(ControlViewSwtBotUtil.UST_DOMAIN_NAME, ustGlobalDomainItem.getText());
// Assert that the new channel name is channel0 (which is the default name)
SWTBotTreeItem channelItem = SWTBotUtils.getTreeItem(fBot, fTree,
getNodeName(),
ControlViewSwtBotUtil.SESSION_GROUP_NAME,
getSessionName(),
ControlViewSwtBotUtil.UST_DOMAIN_NAME,
ControlViewSwtBotUtil.DEFAULT_CHANNEL_NAME);
assertEquals(ControlViewSwtBotUtil.DEFAULT_CHANNEL_NAME, channelItem.getText());
// Assert that the event type in the channel node are correct (all events = *)
SWTBotTreeItem eventItem = SWTBotUtils.getTreeItem(fBot, fTree,
getNodeName(),
ControlViewSwtBotUtil.SESSION_GROUP_NAME,
getSessionName(),
ControlViewSwtBotUtil.UST_DOMAIN_NAME,
ControlViewSwtBotUtil.DEFAULT_CHANNEL_NAME,
ControlViewSwtBotUtil.ALL_EVENTS_NAME);
assertEquals(ControlViewSwtBotUtil.ALL_EVENTS_NAME, eventItem.getText());
// Assert that the excluded event is the correct one
ITraceControlComponent comp = ControlViewSwtBotUtil.getComponent(fNode,
ControlViewSwtBotUtil.SESSION_GROUP_NAME,
getSessionName(),
ControlViewSwtBotUtil.UST_DOMAIN_NAME,
ControlViewSwtBotUtil.DEFAULT_CHANNEL_NAME,
ControlViewSwtBotUtil.ALL_EVENTS_NAME);
assertNotNull(comp);
assertTrue(comp instanceof TraceEventComponent);
TraceEventComponent event = (TraceEventComponent) comp;
assertEquals(EXCLUDE_EXPRESSION, event.getExcludedEvents());
}
/**
* Test that the Properties view has been update and shows the the right
* information.
*/
protected void testPropertiesEventExclude() {
// Open the properties view (by id)
SWTBotUtils.openView("org.eclipse.ui.views.PropertySheet");
// Select the event in the Control view
fBot.viewById(ControlView.ID).show();
SWTBotTreeItem eventItem = SWTBotUtils.getTreeItem(fBot, fTree,
getNodeName(),
ControlViewSwtBotUtil.SESSION_GROUP_NAME,
getSessionName(),
ControlViewSwtBotUtil.UST_DOMAIN_NAME,
ControlViewSwtBotUtil.DEFAULT_CHANNEL_NAME,
ControlViewSwtBotUtil.ALL_EVENTS_NAME);
eventItem.select();
// Get a bot and open the Properties view
SWTBotView propertiesViewBot = fBot.viewByTitle(PROPERTIES_VIEW);
propertiesViewBot.show();
// Get the Exclude field in the tree
SWTBotTree propertiesViewTree = propertiesViewBot.bot().tree();
SWTBotTreeItem excludeTreeItem = propertiesViewTree.getTreeItem(EXCLUDE_TREE_ITEM);
// We want the VALUE of the 'Exclude' row so the cell index is 1
String excludeExpression = excludeTreeItem.cell(1);
// Assert that the expression in the Properties view is the same as
// the one we entered
assertEquals(EXCLUDE_EXPRESSION, excludeExpression);
// Close the Properties view
SWTBotUtils.closeView(PROPERTIES_VIEW, fBot);
}
}