tmf.ctf: Move each CtfIteratorManager into its own trace object
[deliverable/tracecompass.git] / org.eclipse.tracecompass.lttng2.kernel.ui.swtbot.tests / src / org / eclipse / tracecompass / lttng2 / kernel / ui / swtbot / tests / ImportAndReadKernelSmokeTest.java
CommitLineData
ffa8146c
MK
1/*******************************************************************************
2 * Copyright (c) 2013, 2014 Ericsson
3 *
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 *
9 * Contributors:
10 * Matthew Khouzam - Initial API and implementation
11 * Marc-Andre Laperle
977ca87f 12 * Patrick Tasse - Add support for folder elements
ffa8146c
MK
13 *******************************************************************************/
14
9bc60be7 15package org.eclipse.tracecompass.lttng2.kernel.ui.swtbot.tests;
ffa8146c 16
ffa8146c
MK
17import static org.junit.Assert.assertNotNull;
18import static org.junit.Assert.fail;
19
ffa8146c
MK
20import java.util.List;
21
22import org.apache.log4j.ConsoleAppender;
23import org.apache.log4j.Logger;
24import org.apache.log4j.SimpleLayout;
ffa8146c
MK
25import org.eclipse.jface.viewers.SelectionChangedEvent;
26import org.eclipse.jface.viewers.StructuredSelection;
ffa8146c 27import org.eclipse.swtbot.eclipse.finder.SWTWorkbenchBot;
bf0f892f 28import org.eclipse.swtbot.eclipse.finder.matchers.WidgetMatcherFactory;
ffa8146c
MK
29import org.eclipse.swtbot.eclipse.finder.widgets.SWTBotView;
30import org.eclipse.swtbot.swt.finder.finders.UIThreadRunnable;
cbbd323f 31import org.eclipse.swtbot.swt.finder.junit.SWTBotJunit4ClassRunner;
ffa8146c
MK
32import org.eclipse.swtbot.swt.finder.results.BoolResult;
33import org.eclipse.swtbot.swt.finder.results.VoidResult;
34import org.eclipse.swtbot.swt.finder.utils.SWTBotPreferences;
35import org.eclipse.swtbot.swt.finder.widgets.SWTBotToolbarButton;
9bc60be7
AM
36import org.eclipse.tracecompass.internal.lttng2.kernel.ui.views.controlflow.ControlFlowView;
37import org.eclipse.tracecompass.internal.lttng2.kernel.ui.views.resources.ResourcesView;
2bdf0193
AM
38import org.eclipse.tracecompass.tmf.core.event.ITmfEvent;
39import org.eclipse.tracecompass.tmf.core.signal.TmfTimeSynchSignal;
40import org.eclipse.tracecompass.tmf.core.trace.ITmfContext;
41import org.eclipse.tracecompass.tmf.ctf.core.CtfTmfEvent;
42import org.eclipse.tracecompass.tmf.ctf.core.CtfTmfTrace;
43import org.eclipse.tracecompass.tmf.ctf.core.tests.shared.CtfTmfTestTrace;
44import org.eclipse.tracecompass.tmf.ui.editors.TmfEventsEditor;
45import org.eclipse.tracecompass.tmf.ui.swtbot.tests.SWTBotUtil;
46import org.eclipse.tracecompass.tmf.ui.swtbot.tests.conditions.ConditionHelpers;
47import org.eclipse.tracecompass.tmf.ui.views.histogram.HistogramView;
ffa8146c
MK
48import org.eclipse.ui.IEditorPart;
49import org.eclipse.ui.IEditorReference;
50import org.eclipse.ui.IViewPart;
51import org.eclipse.ui.IViewReference;
52import org.eclipse.ui.PlatformUI;
53import org.eclipse.ui.WorkbenchException;
bf0f892f 54import org.hamcrest.Matcher;
ffa8146c
MK
55import org.junit.BeforeClass;
56import org.junit.Test;
cbbd323f 57import org.junit.runner.RunWith;
ffa8146c
MK
58
59/**
60 * SWTBot Smoke test for LTTng Kernel UI.
61 *
62 * @author Matthew Khouzam
63 */
cbbd323f 64@RunWith(SWTBotJunit4ClassRunner.class)
ffa8146c
MK
65public class ImportAndReadKernelSmokeTest {
66
7777d5f0 67 private static final String TRACE_TYPE = "org.eclipse.linuxtools.lttng2.kernel.tracetype";
ffa8146c
MK
68 private static final String KERNEL_PERSPECTIVE_ID = "org.eclipse.linuxtools.lttng2.kernel.ui.perspective";
69 private static final String TRACE_PROJECT_NAME = "test";
553bccd6 70 private static final CtfTmfTestTrace CTT = CtfTmfTestTrace.SYNTHETIC_TRACE;
ffa8146c
MK
71
72 private static SWTWorkbenchBot fBot;
ffa8146c
MK
73 private ITmfEvent fDesired1;
74 private ITmfEvent fDesired2;
75
76 /** The Log4j logger instance. */
77 private static final Logger fLogger = Logger.getRootLogger();
78
79 /**
80 * Test Class setup
81 */
82 @BeforeClass
83 public static void init() {
306e18d0 84 SWTBotUtil.failIfUIThread();
ffa8146c
MK
85
86 /* set up for swtbot */
bf0f892f 87 SWTBotPreferences.TIMEOUT = 20000; /* 20 second timeout */
ffa8146c
MK
88 fLogger.addAppender(new ConsoleAppender(new SimpleLayout(), ConsoleAppender.SYSTEM_OUT));
89 fBot = new SWTWorkbenchBot();
90
91 final List<SWTBotView> openViews = fBot.views();
92 for (SWTBotView view : openViews) {
93 if (view.getTitle().equals("Welcome")) {
94 view.close();
95 fBot.waitUntil(ConditionHelpers.ViewIsClosed(view));
96 }
97 }
98 /* Switch perspectives */
99 switchKernelPerspective();
100 /* Finish waiting for eclipse to load */
306e18d0 101 SWTBotUtil.waitForJobs();
ffa8146c
MK
102 }
103
104 private static void switchKernelPerspective() {
105 final Exception retE[] = new Exception[1];
106 if (!UIThreadRunnable.syncExec(new BoolResult() {
107 @Override
108 public Boolean run() {
109 try {
110 PlatformUI.getWorkbench().showPerspective(KERNEL_PERSPECTIVE_ID,
111 PlatformUI.getWorkbench().getActiveWorkbenchWindow());
112 } catch (WorkbenchException e) {
113 retE[0] = e;
114 return false;
115 }
116 return true;
117 }
118 })) {
119 fail(retE[0].getMessage());
120 }
121
122 }
123
ffa8146c
MK
124 /**
125 * Main test case
126 */
127 @Test
128 public void test() {
306e18d0 129 SWTBotUtil.createProject(TRACE_PROJECT_NAME);
553bccd6 130 SWTBotUtil.openTrace(TRACE_PROJECT_NAME, CTT.getPath(), TRACE_TYPE);
ffa8146c
MK
131 openEditor();
132 testHV(getViewPart("Histogram"));
133 testCFV((ControlFlowView) getViewPart("Control Flow"));
134 testRV((ResourcesView) getViewPart("Resources"));
93c91230
MAL
135
136 fBot.closeAllEditors();
137 SWTBotUtil.deleteProject(TRACE_PROJECT_NAME, fBot);
ffa8146c
MK
138 }
139
ffa8146c 140 private void openEditor() {
553bccd6 141 Matcher<IEditorReference> matcher = WidgetMatcherFactory.withPartName(CTT.getTrace().getName());
bf0f892f 142 IEditorPart iep = fBot.editor(matcher).getReference().getEditor(true);
ffa8146c
MK
143 fDesired1 = getEvent(100);
144 fDesired2 = getEvent(10000);
145 final TmfEventsEditor tmfEd = (TmfEventsEditor) iep;
146 UIThreadRunnable.syncExec(new VoidResult() {
147 @Override
148 public void run() {
149 tmfEd.setFocus();
150 tmfEd.selectionChanged(new SelectionChangedEvent(tmfEd, new StructuredSelection(fDesired1)));
151 }
152 });
153
306e18d0
MK
154 SWTBotUtil.waitForJobs();
155 SWTBotUtil.delay(1000);
ffa8146c
MK
156 assertNotNull(tmfEd);
157 }
158
ffa8146c
MK
159 private static void testCFV(ControlFlowView vp) {
160 assertNotNull(vp);
161 }
162
163 private void testHV(IViewPart vp) {
164 SWTBotView hvBot = (new SWTWorkbenchBot()).viewById(HistogramView.ID);
165 List<SWTBotToolbarButton> hvTools = hvBot.getToolbarButtons();
166 for (SWTBotToolbarButton hvTool : hvTools) {
167 if (hvTool.getToolTipText().toLowerCase().contains("lost")) {
168 hvTool.click();
169 }
170 }
171 HistogramView hv = (HistogramView) vp;
172 final TmfTimeSynchSignal signal = new TmfTimeSynchSignal(hv, fDesired1.getTimestamp());
173 final TmfTimeSynchSignal signal2 = new TmfTimeSynchSignal(hv, fDesired2.getTimestamp());
174 hv.updateTimeRange(100000);
306e18d0 175 SWTBotUtil.waitForJobs();
ffa8146c
MK
176 hv.currentTimeUpdated(signal);
177 hv.broadcast(signal);
306e18d0
MK
178 SWTBotUtil.waitForJobs();
179 SWTBotUtil.delay(1000);
ffa8146c
MK
180
181 hv.updateTimeRange(1000000000);
306e18d0 182 SWTBotUtil.waitForJobs();
ffa8146c
MK
183 hv.currentTimeUpdated(signal2);
184 hv.broadcast(signal2);
306e18d0
MK
185 SWTBotUtil.waitForJobs();
186 SWTBotUtil.delay(1000);
ffa8146c
MK
187 assertNotNull(hv);
188 }
189
190 private static void testRV(ResourcesView vp) {
191 assertNotNull(vp);
192 }
193
194 private static CtfTmfEvent getEvent(int rank) {
7b3eb8c0
AM
195 try (CtfTmfTrace trace = CtfTmfTestTrace.SYNTHETIC_TRACE.getTrace()) {
196 ITmfContext ctx = trace.seekEvent(0);
197 for (int i = 0; i < rank; i++) {
198 trace.getNext(ctx);
199 }
200 return trace.getNext(ctx);
ffa8146c 201 }
7b3eb8c0 202
ffa8146c
MK
203 }
204
205 private static IViewPart getViewPart(final String viewTile) {
206 final IViewPart[] vps = new IViewPart[1];
207 UIThreadRunnable.syncExec(new VoidResult() {
208 @Override
209 public void run() {
210 IViewReference[] viewRefs = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getViewReferences();
211 for (IViewReference viewRef : viewRefs) {
212 IViewPart vp = viewRef.getView(true);
213 if (vp.getTitle().equals(viewTile)) {
214 vps[0] = vp;
215 return;
216 }
217 }
218 }
219 });
220
221 return vps[0];
222 }
223}
This page took 0.04629 seconds and 5 git commands to generate.