1 /*******************************************************************************
2 * Copyright (c) 2013, 2016 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
10 * Matthew Khouzam - Initial API and implementation
12 * Patrick Tasse - Extract base class from ImportAndReadKernelSmokeTest
13 *******************************************************************************/
15 package org
.eclipse
.tracecompass
.lttng2
.kernel
.ui
.swtbot
.tests
;
17 import static org
.junit
.Assert
.fail
;
19 import java
.util
.List
;
21 import org
.apache
.log4j
.ConsoleAppender
;
22 import org
.apache
.log4j
.Logger
;
23 import org
.apache
.log4j
.SimpleLayout
;
24 import org
.eclipse
.swt
.widgets
.TreeItem
;
25 import org
.eclipse
.swtbot
.eclipse
.finder
.SWTWorkbenchBot
;
26 import org
.eclipse
.swtbot
.eclipse
.finder
.widgets
.SWTBotView
;
27 import org
.eclipse
.swtbot
.swt
.finder
.finders
.UIThreadRunnable
;
28 import org
.eclipse
.swtbot
.swt
.finder
.junit
.SWTBotJunit4ClassRunner
;
29 import org
.eclipse
.swtbot
.swt
.finder
.results
.BoolResult
;
30 import org
.eclipse
.swtbot
.swt
.finder
.results
.Result
;
31 import org
.eclipse
.swtbot
.swt
.finder
.utils
.SWTBotPreferences
;
32 import org
.eclipse
.swtbot
.swt
.finder
.widgets
.SWTBotTree
;
33 import org
.eclipse
.tracecompass
.ctf
.core
.tests
.shared
.LttngTraceGenerator
;
34 import org
.eclipse
.tracecompass
.tmf
.ui
.swtbot
.tests
.shared
.ConditionHelpers
;
35 import org
.eclipse
.tracecompass
.tmf
.ui
.swtbot
.tests
.shared
.SWTBotUtils
;
36 import org
.eclipse
.ui
.PlatformUI
;
37 import org
.eclipse
.ui
.WorkbenchException
;
38 import org
.junit
.After
;
39 import org
.junit
.AfterClass
;
40 import org
.junit
.Before
;
41 import org
.junit
.BeforeClass
;
42 import org
.junit
.runner
.RunWith
;
45 * Base SWTBot test for LTTng Kernel UI.
47 * @author Matthew Khouzam
49 @RunWith(SWTBotJunit4ClassRunner
.class)
50 public abstract class KernelTestBase
{
52 /** LTTng kernel trace type */
53 protected static final String KERNEL_TRACE_TYPE
= "org.eclipse.linuxtools.lttng2.kernel.tracetype";
54 /** LTTng kernel perspective */
55 protected static final String KERNEL_PERSPECTIVE_ID
= "org.eclipse.linuxtools.lttng2.kernel.ui.perspective";
56 /** Default project name */
57 protected static final String TRACE_PROJECT_NAME
= "test";
59 /** The workbench bot */
60 protected static SWTWorkbenchBot fBot
;
62 /** The Log4j logger instance. */
63 private static final Logger fLogger
= Logger
.getRootLogger();
69 public static void beforeClass() {
70 SWTBotUtils
.initialize();
72 /* set up for swtbot */
73 SWTBotPreferences
.TIMEOUT
= 20000; /* 20 second timeout */
74 SWTBotPreferences
.KEYBOARD_LAYOUT
= "EN_US";
75 fLogger
.removeAllAppenders();
76 fLogger
.addAppender(new ConsoleAppender(new SimpleLayout(), ConsoleAppender
.SYSTEM_OUT
));
77 fBot
= new SWTWorkbenchBot();
79 final List
<SWTBotView
> openViews
= fBot
.views();
80 for (SWTBotView view
: openViews
) {
81 if (view
.getTitle().equals("Welcome")) {
83 fBot
.waitUntil(ConditionHelpers
.ViewIsClosed(view
));
86 /* Switch perspectives */
87 switchKernelPerspective();
88 /* Create the trace project */
89 SWTBotUtils
.createProject(TRACE_PROJECT_NAME
);
90 /* Finish waiting for eclipse to load */
91 SWTBotUtils
.waitForJobs();
98 public static void afterClass() {
99 SWTBotUtils
.deleteProject(TRACE_PROJECT_NAME
, fBot
);
100 fLogger
.removeAllAppenders();
103 private static void switchKernelPerspective() {
104 final Exception retE
[] = new Exception
[1];
105 if (!UIThreadRunnable
.syncExec(new BoolResult() {
107 public Boolean
run() {
109 PlatformUI
.getWorkbench().showPerspective(KERNEL_PERSPECTIVE_ID
,
110 PlatformUI
.getWorkbench().getActiveWorkbenchWindow());
111 } catch (WorkbenchException e
) {
118 fail(retE
[0].getMessage());
127 public void before() {
128 SWTBotUtils
.openTrace(TRACE_PROJECT_NAME
, LttngTraceGenerator
.getPath(), KERNEL_TRACE_TYPE
);
129 SWTBotUtils
.activateEditor(fBot
, LttngTraceGenerator
.getName());
136 public void after() {
137 fBot
.closeAllEditors();
138 SWTBotUtils
.closeSecondaryShells(fBot
);
142 * Class to check number of checked items
144 static final class TreeCheckedCounter
implements Result
<Integer
> {
145 private final SWTBotTree fTreeBot
;
147 TreeCheckedCounter(SWTBotTree treeBot
) {
152 public Integer
run() {
154 for (TreeItem item
: fTreeBot
.widget
.getItems()) {
155 checked
+= getChecked(item
);
160 private int getChecked(TreeItem item
) {
162 if (item
.getChecked()) {
165 for (TreeItem child
: item
.getItems()) {
166 total
+= getChecked(child
);