+/*******************************************************************************
+ * Copyright (c) 2015 Ericsson
+ *
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v1.0 which
+ * accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+
+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.swt.finder.junit.SWTBotJunit4ClassRunner;
+import org.eclipse.swtbot.swt.finder.widgets.SWTBotCCombo;
+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.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.junit.Test;
+import org.junit.runner.RunWith;
+
+/**
+ * Test for the Control view in Trace Compass. This will test the save and load feature.
+ *
+ * @author Bernd Hufmann
+ */
+@RunWith(SWTBotJunit4ClassRunner.class)
+public class ControlViewKernelFilterTest extends ControlViewTest {
+
+ // ------------------------------------------------------------------------
+ // Constants
+ // ------------------------------------------------------------------------
+ private static final String TEST_STREAM = "CreateSessionTestLTTng2_7.cfg";
+ private static final String CREATE_SESSION_KERNEL_FILTER_SCENARIO_NAME = "KernelFilter";
+ private static final String CREATE_SESSION_KERNEL_FILTER_PROVIDER_SCENARIO_NAME = "KernelFilterProvider";
+
+ private static final String SESSION_NAME = "mysession";
+ private static final String FILTER_EXPRESSION = "next_tid==1234";
+ private static final String FILTER_EXPRESSION_DISPLAY = "with filter";
+
+ @Override
+ protected String getTestStream() {
+ return TEST_STREAM;
+ }
+
+ @Override
+ protected String getSessionName() {
+ return SESSION_NAME;
+ }
+
+ @Override
+ @Test
+ public void testTraceSessionTree() {
+
+ fProxy.setTestFile(fTestFile);
+ fProxy.setScenario(INIT_SCENARIO_NAME);
+
+ testConnectToNode();
+ // Prepare for saving of profile
+ fProxy.setScenario(CREATE_SESSION_KERNEL_FILTER_SCENARIO_NAME);
+ testCreateSession();
+ testEnableKernelEvent();
+ testStartStopTracing(TraceSessionState.ACTIVE);
+ testStartStopTracing(TraceSessionState.INACTIVE);
+ testDestroySession();
+ testDisconnectFromNode();
+ }
+
+ /**
+ * Test enable events from Kernel provider
+ */
+ @Test
+ public void testTraceSessionTreeKernelProvider() {
+
+ fProxy.setTestFile(fTestFile);
+ fProxy.setScenario(INIT_SCENARIO_NAME);
+
+ testConnectToNode();
+ // Prepare for saving of profile
+ fProxy.setScenario(CREATE_SESSION_KERNEL_FILTER_PROVIDER_SCENARIO_NAME);
+ testCreateSession();
+ testEnableKernelFromProviderEvent();
+ testStartStopTracing(TraceSessionState.ACTIVE);
+ testStartStopTracing(TraceSessionState.INACTIVE);
+ testDestroySession();
+ testDisconnectFromNode();
+ }
+
+ @Override
+ protected void testEnableKernelEvent() {
+ SWTBotTreeItem sessionItem = SWTBotUtils.getTreeItem(fBot, fTree,
+ getNodeName(),
+ ControlViewSwtBotUtil.SESSION_GROUP_NAME,
+ getSessionName());
+
+ sessionItem.select();
+ SWTBotMenu menuBot = sessionItem.contextMenu(ControlViewSwtBotUtil.ENABLE_EVENT_DEFAULT_CHANNEL_MENU_ITEM);
+ menuBot.click();
+
+ SWTBotShell shell = fBot.shell(ControlViewSwtBotUtil.ENABLE_EVENT_DIALOG_TITLE).activate();
+
+ SWTBotTree tracepointsTree = shell.bot().tree();
+ tracepointsTree.select(ControlViewSwtBotUtil.ALL_TREE_NODE);
+ SWTBotText filterText = shell.bot().textInGroup(ControlViewSwtBotUtil.FILTER_EXPRESSION_LABEL);
+ filterText.setText(FILTER_EXPRESSION);
+ shell.bot().button(ControlViewSwtBotUtil.DIALOG_OK_BUTTON).click();
+ SWTBotUtils.waitForJobs();
+
+ fBot.waitUntil(ConditionHelpers.IsTreeChildNodeAvailable(ControlViewSwtBotUtil.KERNEL_DOMAIN_NAME, sessionItem));
+
+ SWTBotTreeItem kernelDomainItem = SWTBotUtils.getTreeItem(fBot, fTree,
+ getNodeName(),
+ ControlViewSwtBotUtil.SESSION_GROUP_NAME,
+ getSessionName(),
+ ControlViewSwtBotUtil.KERNEL_DOMAIN_NAME);
+ assertEquals(ControlViewSwtBotUtil.KERNEL_DOMAIN_NAME, kernelDomainItem.getText());
+
+ SWTBotTreeItem channelItem = SWTBotUtils.getTreeItem(fBot, fTree,
+ getNodeName(),
+ ControlViewSwtBotUtil.SESSION_GROUP_NAME,
+ getSessionName(),
+ ControlViewSwtBotUtil.KERNEL_DOMAIN_NAME,
+ ControlViewSwtBotUtil.DEFAULT_CHANNEL_NAME);
+ assertEquals(ControlViewSwtBotUtil.DEFAULT_CHANNEL_NAME, channelItem.getText());
+
+ SWTBotTreeItem eventItem = SWTBotUtils.getTreeItem(fBot, fTree,
+ getNodeName(),
+ ControlViewSwtBotUtil.SESSION_GROUP_NAME,
+ getSessionName(),
+ ControlViewSwtBotUtil.KERNEL_DOMAIN_NAME,
+ ControlViewSwtBotUtil.DEFAULT_CHANNEL_NAME,
+ ControlViewSwtBotUtil.ALL_EVENTS_NAME);
+ assertEquals(ControlViewSwtBotUtil.ALL_EVENTS_NAME, eventItem.getText());
+
+ ITraceControlComponent comp = ControlViewSwtBotUtil.getComponent(fNode,
+ ControlViewSwtBotUtil.SESSION_GROUP_NAME,
+ getSessionName(),
+ ControlViewSwtBotUtil.KERNEL_DOMAIN_NAME,
+ ControlViewSwtBotUtil.DEFAULT_CHANNEL_NAME,
+ ControlViewSwtBotUtil.ALL_EVENTS_NAME);
+ assertNotNull(comp);
+ assertTrue(comp instanceof TraceEventComponent);
+ TraceEventComponent event = (TraceEventComponent) comp;
+ assertEquals(FILTER_EXPRESSION_DISPLAY, event.getFilterExpression());
+ }
+
+ private void testEnableKernelFromProviderEvent() {
+ SWTBotTreeItem kernelProviderEventItem = SWTBotUtils.getTreeItem(fBot, fTree,
+ getNodeName(),
+ ControlViewSwtBotUtil.PROVIDER_GROUP_NAME,
+ ControlViewSwtBotUtil.KERNEL_DOMAIN_NAME,
+ ControlViewSwtBotUtil.SCHED_SWITCH_EVENT_NAME);
+
+ kernelProviderEventItem.select();
+ SWTBotMenu menuBot = kernelProviderEventItem.contextMenu(ControlViewSwtBotUtil.ENABLE_EVENT_MENU_ITEM);
+ menuBot.click();
+
+ SWTBotShell shell = fBot.shell(ControlViewSwtBotUtil.ENABLE_EVENT_DIALOG_TITLE).activate();
+ SWTBotCCombo sessionCombo = shell.bot().ccomboBoxInGroup(ControlViewSwtBotUtil.SESSION_LIST_GROUP_NAME);
+ sessionCombo.setSelection(getSessionName());
+ SWTBotText filterText = shell.bot().textInGroup(ControlViewSwtBotUtil.FILTER_EXPRESSION_LABEL);
+ filterText.setText(FILTER_EXPRESSION);
+ shell.bot().button(ControlViewSwtBotUtil.DIALOG_OK_BUTTON).click();
+ SWTBotUtils.waitForJobs();
+
+ SWTBotTreeItem sessionItem = SWTBotUtils.getTreeItem(fBot, fTree,
+ getNodeName(),
+ ControlViewSwtBotUtil.SESSION_GROUP_NAME,
+ getSessionName());
+
+ fBot.waitUntil(ConditionHelpers.IsTreeChildNodeAvailable(ControlViewSwtBotUtil.KERNEL_DOMAIN_NAME, sessionItem));
+
+ SWTBotTreeItem kernelDomainItem = SWTBotUtils.getTreeItem(fBot, fTree,
+ getNodeName(),
+ ControlViewSwtBotUtil.SESSION_GROUP_NAME,
+ getSessionName(),
+ ControlViewSwtBotUtil.KERNEL_DOMAIN_NAME);
+ assertEquals(ControlViewSwtBotUtil.KERNEL_DOMAIN_NAME, kernelDomainItem.getText());
+
+ SWTBotTreeItem channelItem = SWTBotUtils.getTreeItem(fBot, fTree,
+ getNodeName(),
+ ControlViewSwtBotUtil.SESSION_GROUP_NAME,
+ getSessionName(),
+ ControlViewSwtBotUtil.KERNEL_DOMAIN_NAME,
+ ControlViewSwtBotUtil.DEFAULT_CHANNEL_NAME);
+ assertEquals(ControlViewSwtBotUtil.DEFAULT_CHANNEL_NAME, channelItem.getText());
+
+ SWTBotTreeItem eventItem = SWTBotUtils.getTreeItem(fBot, fTree,
+ getNodeName(),
+ ControlViewSwtBotUtil.SESSION_GROUP_NAME,
+ getSessionName(),
+ ControlViewSwtBotUtil.KERNEL_DOMAIN_NAME,
+ ControlViewSwtBotUtil.DEFAULT_CHANNEL_NAME,
+ ControlViewSwtBotUtil.SCHED_SWITCH_EVENT_NAME);
+ assertEquals(ControlViewSwtBotUtil.SCHED_SWITCH_EVENT_NAME, eventItem.getText());
+
+ ITraceControlComponent comp = ControlViewSwtBotUtil.getComponent(fNode,
+ ControlViewSwtBotUtil.SESSION_GROUP_NAME,
+ getSessionName(),
+ ControlViewSwtBotUtil.KERNEL_DOMAIN_NAME,
+ ControlViewSwtBotUtil.DEFAULT_CHANNEL_NAME,
+ ControlViewSwtBotUtil.SCHED_SWITCH_EVENT_NAME);
+ assertNotNull(comp);
+ assertTrue(comp instanceof TraceEventComponent);
+ TraceEventComponent event = (TraceEventComponent) comp;
+ assertEquals(FILTER_EXPRESSION_DISPLAY, event.getFilterExpression());
+ }
+
+}
\ No newline at end of file