tmf.ui: Add SWTBot test for trace type preferences page
authorJean-Christian Kouame <jean-christian.kouame@ericsson.com>
Thu, 16 Mar 2017 18:18:23 +0000 (14:18 -0400)
committerJean-Christian Kouame <jean-christian.kouame@ericsson.com>
Thu, 30 Mar 2017 03:08:36 +0000 (23:08 -0400)
Change-Id: I66c293de7c9c02fa90b637048c5e452048f43fc4
Signed-off-by: Jean-Christian Kouame <jean-christian.kouame@ericsson.com>
Reviewed-on: https://git.eclipse.org/r/93237
Reviewed-by: Patrick Tasse <patrick.tasse@gmail.com>
Tested-by: Patrick Tasse <patrick.tasse@gmail.com>
Reviewed-by: Hudson CI
lttng/org.eclipse.tracecompass.lttng2.kernel.ui.swtbot.tests/src/org/eclipse/tracecompass/lttng2/kernel/ui/swtbot/tests/ControlFlowViewSortingTest.java
lttng/org.eclipse.tracecompass.lttng2.kernel.ui.swtbot.tests/src/org/eclipse/tracecompass/lttng2/kernel/ui/swtbot/tests/ControlFlowViewTest.java
lttng/org.eclipse.tracecompass.lttng2.kernel.ui.swtbot.tests/src/org/eclipse/tracecompass/lttng2/kernel/ui/swtbot/tests/KernelTestBase.java
lttng/org.eclipse.tracecompass.lttng2.kernel.ui.swtbot.tests/src/org/eclipse/tracecompass/lttng2/kernel/ui/swtbot/tests/ResourcesViewTest.java
tmf/org.eclipse.tracecompass.tmf.ui.swtbot.tests/META-INF/MANIFEST.MF
tmf/org.eclipse.tracecompass.tmf.ui.swtbot.tests/shared/org/eclipse/tracecompass/tmf/ui/swtbot/tests/shared/SWTBotUtils.java
tmf/org.eclipse.tracecompass.tmf.ui.swtbot.tests/src/org/eclipse/tracecompass/tmf/ui/swtbot/tests/tracetype/preferences/TraceTypePreferencePageTest.java [new file with mode: 0644]

index d1b3f17ae171f6cd3ef046155e7813ea59753715..99b28fbc406959daea23915c79266cdfab843e3d 100644 (file)
@@ -23,7 +23,6 @@ import org.eclipse.jdt.annotation.NonNull;
 import org.eclipse.osgi.util.NLS;
 import org.eclipse.swtbot.eclipse.finder.widgets.SWTBotView;
 import org.eclipse.swtbot.swt.finder.SWTBot;
-import org.eclipse.swtbot.swt.finder.finders.UIThreadRunnable;
 import org.eclipse.swtbot.swt.finder.junit.SWTBotJunit4ClassRunner;
 import org.eclipse.swtbot.swt.finder.widgets.SWTBotShell;
 import org.eclipse.swtbot.swt.finder.widgets.SWTBotToolbarButton;
@@ -169,9 +168,8 @@ public class ControlFlowViewSortingTest extends KernelTestBase {
         SWTBotTree treeBot = bot.tree();
         bot.button(UNCHECK_ALL).click();
 
-        TreeCheckedCounter treeCheckCounter = new TreeCheckedCounter(treeBot);
-        Integer checked = UIThreadRunnable.syncExec(treeCheckCounter);
-        assertEquals("default", 0, checked.intValue());
+        int checked = SWTBotUtils.getTreeCheckedItemCount(treeBot);
+        assertEquals("default", 0, checked);
 
         // select root nodes and their children
         checkFilterTreeItems(bot, treeBot, SYSTEMD_PROCESS_NAME);
@@ -185,8 +183,7 @@ public class ControlFlowViewSortingTest extends KernelTestBase {
         SWTBotTreeItem item = SWTBotUtils.getTreeItem(bot, treeBot, TRACE_NAME, process);
         item.select();
         bot.button(CHECK_SUBTREE).click();
-        TreeCheckedCounter treeCheckCounter = new TreeCheckedCounter(treeBot);
-        UIThreadRunnable.syncExec(treeCheckCounter);
+        SWTBotUtils.getTreeCheckedItemCount(treeBot);
     }
 
     private static void testProcessSorting(final SWTBotTree tree, final SWTBotTimeGraph timeGraph) {
index 0eaadf6920f90207d824292ea5d4dfbbcbf5f941..5c5de886a474a3d9bfa61465e01baef7564a928f 100644 (file)
@@ -22,7 +22,6 @@ import org.eclipse.jdt.annotation.NonNull;
 import org.eclipse.swt.SWT;
 import org.eclipse.swtbot.eclipse.finder.widgets.SWTBotView;
 import org.eclipse.swtbot.swt.finder.SWTBot;
-import org.eclipse.swtbot.swt.finder.finders.UIThreadRunnable;
 import org.eclipse.swtbot.swt.finder.junit.SWTBotJunit4ClassRunner;
 import org.eclipse.swtbot.swt.finder.keyboard.Keyboard;
 import org.eclipse.swtbot.swt.finder.keyboard.KeyboardFactory;
@@ -258,58 +257,57 @@ public class ControlFlowViewTest extends KernelTimeGraphViewTestBase {
         fBot.waitUntil(org.eclipse.swtbot.swt.finder.waits.Conditions.shellIsActive("Filter"));
         SWTBot bot = fBot.activeShell().bot();
         SWTBotTree treeBot = bot.tree();
-        TreeCheckedCounter treeCheckCounter = new TreeCheckedCounter(treeBot);
         // get how many items there are
-        Integer checked = UIThreadRunnable.syncExec(treeCheckCounter);
-        assertEquals("default", 226, checked.intValue());
+        int checked = SWTBotUtils.getTreeCheckedItemCount(treeBot);
+        assertEquals("default", 226, checked);
         // test "uncheck all button"
         bot.button(UNCHECK_ALL).click();
-        checked = UIThreadRunnable.syncExec(treeCheckCounter);
-        assertEquals(0, checked.intValue());
+        checked = SWTBotUtils.getTreeCheckedItemCount(treeBot);
+        assertEquals(0, checked);
         // test check active
         bot.button(CHECK_ACTIVE).click();
-        checked = UIThreadRunnable.syncExec(treeCheckCounter);
-        assertEquals(CHECK_ACTIVE, 69, checked.intValue());
+        checked = SWTBotUtils.getTreeCheckedItemCount(treeBot);
+        assertEquals(CHECK_ACTIVE, 69, checked);
         // test check all
         bot.button(CHECK_ALL).click();
-        checked = UIThreadRunnable.syncExec(treeCheckCounter);
-        assertEquals(CHECK_ALL, 226, checked.intValue());
+        checked = SWTBotUtils.getTreeCheckedItemCount(treeBot);
+        assertEquals(CHECK_ALL, 226, checked);
         // test uncheck inactive
         bot.button(UNCHECK_INACTIVE).click();
-        checked = UIThreadRunnable.syncExec(treeCheckCounter);
-        assertEquals(UNCHECK_INACTIVE, 69, checked.intValue());
+        checked = SWTBotUtils.getTreeCheckedItemCount(treeBot);
+        assertEquals(UNCHECK_INACTIVE, 69, checked);
         // test check selected
         treeBot.getTreeItem(LttngTraceGenerator.getName()).select("gnuplot");
         bot.button(UNCHECK_ALL).click();
         bot.button(CHECK_SELECTED).click();
-        checked = UIThreadRunnable.syncExec(treeCheckCounter);
-        assertEquals(CHECK_SELECTED, 2, checked.intValue());
+        checked = SWTBotUtils.getTreeCheckedItemCount(treeBot);
+        assertEquals(CHECK_SELECTED, 2, checked);
         // test check subtree
         bot.button(UNCHECK_ALL).click();
         bot.button(CHECK_SUBTREE).click();
-        checked = UIThreadRunnable.syncExec(treeCheckCounter);
-        assertEquals(CHECK_SUBTREE, 2, checked.intValue());
+        checked = SWTBotUtils.getTreeCheckedItemCount(treeBot);
+        assertEquals(CHECK_SUBTREE, 2, checked);
         // test uncheck selected
         bot.button(CHECK_ALL).click();
         bot.button(UNCHECK_SELECTED).click();
-        checked = UIThreadRunnable.syncExec(treeCheckCounter);
-        assertEquals(UNCHECK_SELECTED, 225, checked.intValue());
+        checked = SWTBotUtils.getTreeCheckedItemCount(treeBot);
+        assertEquals(UNCHECK_SELECTED, 225, checked);
         // test uncheck subtree
         bot.button(CHECK_ALL).click();
         bot.button(UNCHECK_SUBTREE).click();
-        checked = UIThreadRunnable.syncExec(treeCheckCounter);
-        assertEquals(UNCHECK_SELECTED, 225, checked.intValue());
+        checked = SWTBotUtils.getTreeCheckedItemCount(treeBot);
+        assertEquals(UNCHECK_SELECTED, 225, checked);
         // test filter
         bot.button(UNCHECK_ALL).click();
-        checked = UIThreadRunnable.syncExec(treeCheckCounter);
-        assertEquals(0, checked.intValue());
+        checked = SWTBotUtils.getTreeCheckedItemCount(treeBot);
+        assertEquals(0, checked);
         bot.text().setText("half-life 3");
         SWTBotTreeItem treeItem = treeBot.getTreeItem(LttngTraceGenerator.getName());
         treeItem.rowCount();
         fBot.waitUntil(ConditionHelpers.treeItemCount(treeItem, 25));
         bot.button(CHECK_ALL).click();
-        checked = UIThreadRunnable.syncExec(treeCheckCounter);
-        assertEquals("Filtered", 26, checked.intValue());
+        checked = SWTBotUtils.getTreeCheckedItemCount(treeBot);
+        assertEquals("Filtered", 26, checked);
         bot.button("OK").click();
         SWTBotTimeGraph timeGraph = new SWTBotTimeGraph(getViewBot().bot());
         SWTBotTimeGraphEntry traceEntry = timeGraph.getEntry(LttngTraceGenerator.getName());
index 5a4bcb4efaa84fdce2fc185002ae7906b53cf61a..7739a92a6f2f67915a0698825553322e87fb63ed 100644 (file)
@@ -17,12 +17,9 @@ package org.eclipse.tracecompass.lttng2.kernel.ui.swtbot.tests;
 import org.apache.log4j.ConsoleAppender;
 import org.apache.log4j.Logger;
 import org.apache.log4j.SimpleLayout;
-import org.eclipse.swt.widgets.TreeItem;
 import org.eclipse.swtbot.eclipse.finder.SWTWorkbenchBot;
 import org.eclipse.swtbot.swt.finder.junit.SWTBotJunit4ClassRunner;
-import org.eclipse.swtbot.swt.finder.results.Result;
 import org.eclipse.swtbot.swt.finder.utils.SWTBotPreferences;
-import org.eclipse.swtbot.swt.finder.widgets.SWTBotTree;
 import org.eclipse.tracecompass.ctf.core.tests.shared.LttngTraceGenerator;
 import org.eclipse.tracecompass.tmf.ui.swtbot.tests.shared.SWTBotUtils;
 import org.eclipse.tracecompass.tmf.ui.tests.shared.WaitUtils;
@@ -101,35 +98,4 @@ public abstract class KernelTestBase {
         fBot.closeAllEditors();
         SWTBotUtils.closeSecondaryShells(fBot);
     }
-
-    /**
-     * Class to check number of checked items
-     */
-    static final class TreeCheckedCounter implements Result<Integer> {
-        private final SWTBotTree fTreeBot;
-
-        TreeCheckedCounter(SWTBotTree treeBot) {
-            fTreeBot = treeBot;
-        }
-
-        @Override
-        public Integer run() {
-            int checked = 0;
-            for (TreeItem item : fTreeBot.widget.getItems()) {
-                checked += getChecked(item);
-            }
-            return checked;
-        }
-
-        private int getChecked(TreeItem item) {
-            int total = 0;
-            if (item.getChecked()) {
-                total++;
-            }
-            for (TreeItem child : item.getItems()) {
-                total += getChecked(child);
-            }
-            return total;
-        }
-    }
 }
index 52b6c56a3918bebf984caa1e2a2b28fd37fc2973..5eef02fa8d4fdcc6a12ff323998b6cbef866c2a7 100644 (file)
@@ -419,50 +419,49 @@ public class ResourcesViewTest extends KernelTimeGraphViewTestBase {
         fBot.waitUntil(org.eclipse.swtbot.swt.finder.waits.Conditions.shellIsActive("Filter"));
         SWTBot bot = fBot.activeShell().bot();
         SWTBotTree treeBot = bot.tree();
-        TreeCheckedCounter treeCheckCounter = new TreeCheckedCounter(treeBot);
         // get how many items there are
-        Integer checked = UIThreadRunnable.syncExec(treeCheckCounter);
-        assertEquals("default", 26, checked.intValue());
+        int checked = SWTBotUtils.getTreeCheckedItemCount(treeBot);
+        assertEquals("default", 26, checked);
         // test "uncheck all button"
         bot.button(UNCHECK_ALL).click();
-        checked = UIThreadRunnable.syncExec(treeCheckCounter);
-        assertEquals(0, checked.intValue());
+        checked = SWTBotUtils.getTreeCheckedItemCount(treeBot);
+        assertEquals(0, checked);
         // test check all
         bot.button(CHECK_ALL).click();
-        checked = UIThreadRunnable.syncExec(treeCheckCounter);
-        assertEquals(CHECK_ALL, 26, checked.intValue());
+        checked = SWTBotUtils.getTreeCheckedItemCount(treeBot);
+        assertEquals(CHECK_ALL, 26, checked);
         // test uncheck inactive
         treeBot.getTreeItem(LttngTraceGenerator.getName()).select("CPU 1");
         bot.button(UNCHECK_ALL).click();
         bot.button(CHECK_SELECTED).click();
-        checked = UIThreadRunnable.syncExec(treeCheckCounter);
-        assertEquals(CHECK_SELECTED, 2, checked.intValue());
+        checked = SWTBotUtils.getTreeCheckedItemCount(treeBot);
+        assertEquals(CHECK_SELECTED, 2, checked);
         // test check subtree
         bot.button(UNCHECK_ALL).click();
         bot.button(CHECK_SUBTREE).click();
-        checked = UIThreadRunnable.syncExec(treeCheckCounter);
-        assertEquals(CHECK_SUBTREE, 2, checked.intValue());
+        checked = SWTBotUtils.getTreeCheckedItemCount(treeBot);
+        assertEquals(CHECK_SUBTREE, 2, checked);
         // test uncheck selected
         bot.button(CHECK_ALL).click();
         bot.button(UNCHECK_SELECTED).click();
-        checked = UIThreadRunnable.syncExec(treeCheckCounter);
-        assertEquals(UNCHECK_SELECTED, 25, checked.intValue());
+        checked = SWTBotUtils.getTreeCheckedItemCount(treeBot);
+        assertEquals(UNCHECK_SELECTED, 25, checked);
         // test uncheck subtree
         bot.button(CHECK_ALL).click();
         bot.button(UNCHECK_SUBTREE).click();
-        checked = UIThreadRunnable.syncExec(treeCheckCounter);
-        assertEquals(UNCHECK_SELECTED, 25, checked.intValue());
+        checked = SWTBotUtils.getTreeCheckedItemCount(treeBot);
+        assertEquals(UNCHECK_SELECTED, 25, checked);
         // test filter
         bot.button(UNCHECK_ALL).click();
-        checked = UIThreadRunnable.syncExec(treeCheckCounter);
-        assertEquals(0, checked.intValue());
+        checked = SWTBotUtils.getTreeCheckedItemCount(treeBot);
+        assertEquals(0, checked);
         bot.text().setText("CPU 2");
         SWTBotTreeItem treeItem = treeBot.getTreeItem(LttngTraceGenerator.getName());
         treeItem.rowCount();
         fBot.waitUntil(ConditionHelpers.treeItemCount(treeItem, 25));
         bot.button(CHECK_ALL).click();
-        checked = UIThreadRunnable.syncExec(treeCheckCounter);
-        assertEquals("Filtered", 26, checked.intValue());
+        checked = SWTBotUtils.getTreeCheckedItemCount(treeBot);
+        assertEquals("Filtered", 26, checked);
         bot.button("OK").click();
     }
 
index a40d6a9a1c4f26f6525562ee71bbf4b8f556abeb..2ebce272cbfb8813330570fa55d83ed0d8fd2590 100644 (file)
@@ -39,5 +39,6 @@ Export-Package: org.eclipse.tracecompass.tmf.ui.swtbot.tests.parsers.custom;x-in
  org.eclipse.tracecompass.tmf.ui.swtbot.tests.perf.views,
  org.eclipse.tracecompass.tmf.ui.swtbot.tests.perspectives;x-internal:=true,
  org.eclipse.tracecompass.tmf.ui.swtbot.tests.shared,
+ org.eclipse.tracecompass.tmf.ui.swtbot.tests.tracetype.preferences,
  org.eclipse.tracecompass.tmf.ui.swtbot.tests.viewers.events;x-internal:=true,
  org.eclipse.tracecompass.tmf.ui.swtbot.tests.wizards;x-internal:=true
index a8b1972f9c1a64b70ec62d742150eb2137857afe..26a0894e105f75cddd6b114bce557c0d70dff532 100644 (file)
@@ -51,6 +51,7 @@ import org.eclipse.swt.widgets.Display;
 import org.eclipse.swt.widgets.Shell;
 import org.eclipse.swt.widgets.Table;
 import org.eclipse.swt.widgets.TableItem;
+import org.eclipse.swt.widgets.TreeItem;
 import org.eclipse.swtbot.eclipse.finder.SWTWorkbenchBot;
 import org.eclipse.swtbot.eclipse.finder.matchers.WidgetMatcherFactory;
 import org.eclipse.swtbot.eclipse.finder.widgets.SWTBotEditor;
@@ -59,6 +60,7 @@ import org.eclipse.swtbot.swt.finder.SWTBot;
 import org.eclipse.swtbot.swt.finder.finders.UIThreadRunnable;
 import org.eclipse.swtbot.swt.finder.keyboard.Keyboard;
 import org.eclipse.swtbot.swt.finder.keyboard.Keystrokes;
+import org.eclipse.swtbot.swt.finder.results.IntResult;
 import org.eclipse.swtbot.swt.finder.results.Result;
 import org.eclipse.swtbot.swt.finder.results.VoidResult;
 import org.eclipse.swtbot.swt.finder.utils.MessageFormat;
@@ -1037,4 +1039,36 @@ public final class SWTBotUtils {
             fail(e.getMessage());
         }
     }
+
+    /**
+     * Get the number of checked items of a tree
+     *
+     * @param tree
+     *            The tree bot
+     * @return The number of checked items
+     */
+    public static int getTreeCheckedItemCount(SWTBotTree tree) {
+        return UIThreadRunnable.syncExec(new IntResult() {
+
+            @Override
+            public Integer run() {
+                int checked = 0;
+                for (TreeItem item : tree.widget.getItems()) {
+                    checked += getChecked(item);
+                }
+                return checked;
+            }
+
+            private int getChecked(TreeItem item) {
+                int total = 0;
+                if (item.getChecked()) {
+                    total++;
+                }
+                for (TreeItem child : item.getItems()) {
+                    total += getChecked(child);
+                }
+                return total;
+            }
+        });
+    }
 }
diff --git a/tmf/org.eclipse.tracecompass.tmf.ui.swtbot.tests/src/org/eclipse/tracecompass/tmf/ui/swtbot/tests/tracetype/preferences/TraceTypePreferencePageTest.java b/tmf/org.eclipse.tracecompass.tmf.ui.swtbot.tests/src/org/eclipse/tracecompass/tmf/ui/swtbot/tests/tracetype/preferences/TraceTypePreferencePageTest.java
new file mode 100644 (file)
index 0000000..264f45c
--- /dev/null
@@ -0,0 +1,283 @@
+/*******************************************************************************
+ * Copyright (c) 2017 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.tmf.ui.swtbot.tests.tracetype.preferences;
+
+import static org.junit.Assert.assertArrayEquals;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.fail;
+import static org.junit.Assume.assumeTrue;
+
+import java.io.File;
+import java.io.IOException;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.net.URL;
+import java.util.List;
+
+import org.apache.log4j.ConsoleAppender;
+import org.apache.log4j.Logger;
+import org.apache.log4j.SimpleLayout;
+import org.eclipse.core.runtime.FileLocator;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.jdt.annotation.NonNull;
+import org.eclipse.swtbot.eclipse.finder.SWTWorkbenchBot;
+import org.eclipse.swtbot.swt.finder.SWTBot;
+import org.eclipse.swtbot.swt.finder.junit.SWTBotJunit4ClassRunner;
+import org.eclipse.swtbot.swt.finder.utils.SWTBotPreferences;
+import org.eclipse.swtbot.swt.finder.waits.Conditions;
+import org.eclipse.swtbot.swt.finder.widgets.SWTBotCombo;
+import org.eclipse.swtbot.swt.finder.widgets.SWTBotMenu;
+import org.eclipse.swtbot.swt.finder.widgets.SWTBotShell;
+import org.eclipse.swtbot.swt.finder.widgets.SWTBotTree;
+import org.eclipse.swtbot.swt.finder.widgets.SWTBotTreeItem;
+import org.eclipse.tracecompass.tmf.core.project.model.TmfTraceType;
+import org.eclipse.tracecompass.tmf.core.tests.TmfCoreTestPlugin;
+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.AfterClass;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+/**
+ * SWTBot test for the trace type preference page
+ *
+ * @author Jean-Christian Kouame
+ *
+ */
+@RunWith(SWTBotJunit4ClassRunner.class)
+public class TraceTypePreferencePageTest {
+
+    private static final @NonNull String CHECK_SELECTED = "Check selected";
+    private static final @NonNull String CHECK_ALL = "Check all";
+    private static final @NonNull String UNCHECK_SELECTED = "Uncheck selected";
+    private static final @NonNull String UNCHECK_ALL = "Uncheck all";
+    /** The Log4j logger instance. */
+    private static final Logger fLogger = Logger.getRootLogger();
+    private static final String TRACE_PATH = "testfiles/syslog_collapse";
+
+    /** LTTng kernel trace type */
+    protected static final String KERNEL_TRACE_TYPE = "org.eclipse.linuxtools.lttng2.kernel.tracetype";
+    /** LTTng kernel perspective */
+    protected static final String KERNEL_PERSPECTIVE_ID = "org.eclipse.linuxtools.lttng2.kernel.ui.perspective";
+    /** Default project name */
+    protected static final String TRACE_PROJECT_NAME = "test";
+
+    private static SWTWorkbenchBot fBot;
+
+    /**
+     * Before Class
+     */
+    @BeforeClass
+    public static void beforeClass() {
+        SWTBotUtils.initialize();
+
+        /* set up for swtbot */
+        SWTBotPreferences.TIMEOUT = 20000; /* 20 second timeout */
+        SWTBotPreferences.KEYBOARD_LAYOUT = "EN_US";
+        fLogger.removeAllAppenders();
+        fLogger.addAppender(new ConsoleAppender(new SimpleLayout(), ConsoleAppender.SYSTEM_OUT));
+        fBot = new SWTWorkbenchBot();
+        SWTBotUtils.closeView("welcome", fBot);
+        /* Switch perspectives */
+        SWTBotUtils.switchToTracingPerspective();
+        /* Create the trace project */
+        SWTBotUtils.createProject(TRACE_PROJECT_NAME);
+        /* Finish waiting for eclipse to load */
+        WaitUtils.waitForJobs();
+
+        /* set up test trace */
+        setUpTrace();
+
+    }
+
+    private static void setUpTrace() {
+        URL location = FileLocator.find(TmfCoreTestPlugin.getDefault().getBundle(), new Path(TRACE_PATH), null);
+        URI uri;
+        try {
+            uri = FileLocator.toFileURL(location).toURI();
+            File testFile = new File(uri);
+            SWTBotUtils.openTrace(TRACE_PROJECT_NAME, testFile.getAbsolutePath(), KERNEL_TRACE_TYPE);
+            assertNotNull(testFile);
+            assumeTrue(testFile.exists());
+        } catch (URISyntaxException | IOException e) {
+            fail("Failed to open the trace");
+        }
+    }
+
+    /**
+     * Before method to reset the preference values
+     */
+    @Before
+    public void before() {
+        setTraceTypePreferences(CHECK_ALL);
+    }
+
+    /**
+     * After Class
+     */
+    @AfterClass
+    public static void afterClass() {
+        SWTBotUtils.deleteProject(TRACE_PROJECT_NAME, fBot);
+        fBot.closeAllEditors();
+        fLogger.removeAllAppenders();
+    }
+
+    /**
+     * Test the filter
+     */
+    @Test
+    public void testPreferencePage() {
+        openTraceTypePreferences();
+        SWTBot bot = fBot.activeShell().bot();
+        SWTBotTree treeBot = bot.tree(1);
+        //get default count
+        bot.button(CHECK_ALL).click();
+        int defaultCount = SWTBotUtils.getTreeCheckedItemCount(treeBot);
+        // test "uncheck all button"
+        bot.button(UNCHECK_ALL).click();
+        int checked = SWTBotUtils.getTreeCheckedItemCount(treeBot);
+        assertEquals(0, checked);
+        // test check all
+        bot.button(CHECK_ALL).click();
+        checked = SWTBotUtils.getTreeCheckedItemCount(treeBot);
+        assertEquals(CHECK_ALL, defaultCount, checked);
+        // test check selected
+        treeBot.getTreeItem("Custom XML").select();
+        bot.button(UNCHECK_ALL).click();
+        bot.button(CHECK_SELECTED).click();
+        checked = SWTBotUtils.getTreeCheckedItemCount(treeBot);
+        assertEquals(CHECK_SELECTED, 2, checked);
+        // test uncheck selected
+        bot.button(CHECK_ALL).click();
+        bot.button(UNCHECK_SELECTED).click();
+        checked = SWTBotUtils.getTreeCheckedItemCount(treeBot);
+        assertEquals(UNCHECK_SELECTED, defaultCount - 2, checked);
+        // test filter
+        bot.button(UNCHECK_ALL).click();
+        checked = SWTBotUtils.getTreeCheckedItemCount(treeBot);
+        assertEquals(0, checked);
+        bot.text(1).setText("Custom XML");
+        WaitUtils.waitUntil(tree -> tree.visibleRowCount() == 2, treeBot, "Visible row count: Default expected 2, but actual value is " + treeBot.visibleRowCount());
+        assertEquals("Filtered no checked", 0, checked);
+        bot.button(CHECK_ALL).click();
+        checked = SWTBotUtils.getTreeCheckedItemCount(treeBot);
+        assertEquals("Filtered check all", 2, checked);
+        bot.text(1).setText("");
+        WaitUtils.waitUntil(tree -> tree.visibleRowCount() == defaultCount, treeBot, "Visible row count: Default expected " + defaultCount +", but actual value is " + treeBot.visibleRowCount());
+        bot.button(CHECK_ALL).click();
+        checked = SWTBotUtils.getTreeCheckedItemCount(treeBot);
+        assertEquals("Filtered removed all check", defaultCount, checked);
+        bot.button("Apply").click();
+        bot.button("OK").click();
+    }
+
+    /**
+     * Test the select trace type menu
+     */
+    @Test
+    public void testSelectTraceType() {
+        List<String> menuItems = getSelectTraceTypeMenuItems();
+        String categories[] = new String[] {
+                "Custom Text",
+                "Custom XML",
+                "Test trace",
+                "",
+                "Manage Custom Parsers..."
+        };
+        assertArrayEquals("Test all categories enabled", categories, menuItems.toArray());
+
+        //Change the preference values and test the 'Select Trace Type...' options
+        setTraceTypePreferences(UNCHECK_ALL, "Custom Text");
+        menuItems = getSelectTraceTypeMenuItems();
+        categories = new String[] {
+                "Custom Text",
+                "Test trace",
+                "",
+                "Manage Custom Parsers..."
+        };
+        assertArrayEquals("Test 1 category enabled", categories, menuItems.toArray());
+
+        setTraceTypePreferences(CHECK_ALL);
+    }
+
+    /**
+     * Test the import trace's trace type combo
+     */
+    @Test
+    public void testImportTraceTypeOptions() {
+        int defaultCount = TmfTraceType.getAvailableTraceTypes().length;
+
+        setTraceTypePreferences(UNCHECK_ALL, "Custom Text", "testtxtextension");
+        String[] traceTypeComboItems = getTraceTypeComboItems();
+        String[] availableTraceTypes = new String[] {
+                "<Automatic Detection>",
+                "Custom Text : testtxtextension"
+        };
+        assertArrayEquals("Test one trace type enabled", availableTraceTypes, traceTypeComboItems);
+
+        setTraceTypePreferences(CHECK_ALL);
+        traceTypeComboItems = getTraceTypeComboItems();
+        assertEquals("Test all trace type enabled", defaultCount + 1, traceTypeComboItems.length);
+    }
+
+    private static void setTraceTypePreferences(@NonNull String button, @NonNull String... pathToCheck) {
+        openTraceTypePreferences();
+        SWTBot bot = fBot.activeShell().bot();
+        SWTBotTree treeBot = bot.tree(1);
+        if (!button.isEmpty()) {
+            bot.button(button).click();
+        }
+
+        if (pathToCheck.length > 0) {
+            SWTBotTreeItem treeItem = treeBot.expandNode(pathToCheck);
+            assertNotNull("Tree item not null", treeItem);
+            treeItem.select();
+            bot.button(CHECK_SELECTED).click();
+        }
+        bot.button("Apply").click();
+        bot.button("OK").click();
+    }
+
+    private static List<String> getSelectTraceTypeMenuItems() {
+        SWTBotTreeItem tracesFolder = SWTBotUtils.selectTracesFolder(fBot, TRACE_PROJECT_NAME);
+        tracesFolder.expand();
+        SWTBotTreeItem trace = tracesFolder.getNode("syslog_collapse");
+        trace.select();
+        List<String> menuItems = trace.contextMenu().menu("Select Trace Type...").menuItems();
+        return menuItems;
+    }
+
+    private static void openTraceTypePreferences() {
+        SWTBotShell preferencesShell = SWTBotUtils.openPreferences(fBot);
+        SWTBot bot = preferencesShell.bot();
+        SWTBotTree tree = bot.tree(0);
+        SWTBotTreeItem treeNode = tree.getTreeItem("Tracing");
+        treeNode.select();
+        treeNode.expand();
+        bot.waitUntil(ConditionHelpers.IsTreeChildNodeAvailable("Trace Types", treeNode));
+        treeNode = treeNode.getNode("Trace Types");
+        treeNode.select();
+    }
+
+    private static String[] getTraceTypeComboItems() {
+        SWTBotTreeItem tracesFolder = SWTBotUtils.selectTracesFolder(fBot, TRACE_PROJECT_NAME);
+        SWTBotMenu menu = tracesFolder.contextMenu().menu("Import...");
+        menu.click();
+        fBot.waitUntil(Conditions.shellIsActive("Trace Import"));
+        SWTBot bot = fBot.activeShell().bot();
+        SWTBotCombo combo = bot.comboBox(2);
+        String[] items = combo.items();
+        bot.button("Cancel").click();
+        return items;
+    }
+}
This page took 0.037981 seconds and 5 git commands to generate.