1 /*******************************************************************************
2 * Copyright (c) 2013, 2015 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
.assertNotNull
;
19 import java
.util
.List
;
21 import org
.eclipse
.jface
.viewers
.SelectionChangedEvent
;
22 import org
.eclipse
.jface
.viewers
.StructuredSelection
;
23 import org
.eclipse
.swtbot
.eclipse
.finder
.SWTWorkbenchBot
;
24 import org
.eclipse
.swtbot
.eclipse
.finder
.matchers
.WidgetMatcherFactory
;
25 import org
.eclipse
.swtbot
.eclipse
.finder
.widgets
.SWTBotView
;
26 import org
.eclipse
.swtbot
.swt
.finder
.finders
.UIThreadRunnable
;
27 import org
.eclipse
.swtbot
.swt
.finder
.junit
.SWTBotJunit4ClassRunner
;
28 import org
.eclipse
.swtbot
.swt
.finder
.results
.VoidResult
;
29 import org
.eclipse
.swtbot
.swt
.finder
.widgets
.SWTBotToolbarButton
;
30 import org
.eclipse
.tracecompass
.analysis
.os
.linux
.ui
.views
.controlflow
.ControlFlowView
;
31 import org
.eclipse
.tracecompass
.analysis
.os
.linux
.ui
.views
.resources
.ResourcesView
;
32 import org
.eclipse
.tracecompass
.tmf
.core
.event
.ITmfEvent
;
33 import org
.eclipse
.tracecompass
.tmf
.core
.signal
.TmfSelectionRangeUpdatedSignal
;
34 import org
.eclipse
.tracecompass
.tmf
.core
.trace
.ITmfContext
;
35 import org
.eclipse
.tracecompass
.tmf
.ctf
.core
.event
.CtfTmfEvent
;
36 import org
.eclipse
.tracecompass
.tmf
.ctf
.core
.tests
.shared
.CtfTmfTestTraceUtils
;
37 import org
.eclipse
.tracecompass
.tmf
.ctf
.core
.trace
.CtfTmfTrace
;
38 import org
.eclipse
.tracecompass
.tmf
.ui
.editors
.TmfEventsEditor
;
39 import org
.eclipse
.tracecompass
.tmf
.ui
.swtbot
.tests
.shared
.SWTBotUtils
;
40 import org
.eclipse
.tracecompass
.tmf
.ui
.views
.histogram
.HistogramView
;
41 import org
.eclipse
.ui
.IEditorPart
;
42 import org
.eclipse
.ui
.IEditorReference
;
43 import org
.eclipse
.ui
.IViewPart
;
44 import org
.eclipse
.ui
.IViewReference
;
45 import org
.eclipse
.ui
.PlatformUI
;
46 import org
.hamcrest
.Matcher
;
47 import org
.junit
.Test
;
48 import org
.junit
.runner
.RunWith
;
51 * SWTBot Smoke test for LTTng Kernel UI.
53 * @author Matthew Khouzam
55 @RunWith(SWTBotJunit4ClassRunner
.class)
56 public class ImportAndReadKernelSmokeTest
extends KernelTestBase
{
58 private ITmfEvent fDesired1
;
59 private ITmfEvent fDesired2
;
66 CtfTmfTrace trace
= CtfTmfTestTraceUtils
.getSyntheticTrace();
67 Matcher
<IEditorReference
> matcher
= WidgetMatcherFactory
.withPartName(trace
.getName());
68 IEditorPart iep
= fBot
.editor(matcher
).getReference().getEditor(true);
69 final TmfEventsEditor tmfEd
= (TmfEventsEditor
) iep
;
71 fDesired1
= getEvent(trace
, 100);
72 fDesired2
= getEvent(trace
, 10000);
74 UIThreadRunnable
.syncExec(new VoidResult() {
78 tmfEd
.selectionChanged(new SelectionChangedEvent(tmfEd
, new StructuredSelection(fDesired1
)));
81 testHV(getViewPart("Histogram"));
82 testCFV((ControlFlowView
) getViewPart("Control Flow"));
83 testRV((ResourcesView
) getViewPart("Resources"));
87 private static void testCFV(ControlFlowView vp
) {
91 private void testHV(IViewPart vp
) {
92 SWTBotView hvBot
= (new SWTWorkbenchBot()).viewById(HistogramView
.ID
);
93 List
<SWTBotToolbarButton
> hvTools
= hvBot
.getToolbarButtons();
94 for (SWTBotToolbarButton hvTool
: hvTools
) {
95 if (hvTool
.getToolTipText().toLowerCase().contains("lost")) {
99 HistogramView hv
= (HistogramView
) vp
;
100 final TmfSelectionRangeUpdatedSignal signal
= new TmfSelectionRangeUpdatedSignal(hv
, fDesired1
.getTimestamp());
101 final TmfSelectionRangeUpdatedSignal signal2
= new TmfSelectionRangeUpdatedSignal(hv
, fDesired2
.getTimestamp());
102 hv
.updateTimeRange(100000);
103 SWTBotUtils
.waitForJobs();
104 hv
.selectionRangeUpdated(signal
);
105 hv
.broadcast(signal
);
106 SWTBotUtils
.waitForJobs();
107 SWTBotUtils
.delay(1000);
109 hv
.updateTimeRange(1000000000);
110 SWTBotUtils
.waitForJobs();
111 hv
.selectionRangeUpdated(signal2
);
112 hv
.broadcast(signal2
);
113 SWTBotUtils
.waitForJobs();
114 SWTBotUtils
.delay(1000);
118 private static void testRV(ResourcesView vp
) {
122 private static CtfTmfEvent
getEvent(CtfTmfTrace trace
, int rank
) {
123 ITmfContext ctx
= trace
.seekEvent(0);
124 for (int i
= 0; i
< rank
; i
++) {
127 return trace
.getNext(ctx
);
130 private static IViewPart
getViewPart(final String viewTile
) {
131 final IViewPart
[] vps
= new IViewPart
[1];
132 UIThreadRunnable
.syncExec(new VoidResult() {
135 IViewReference
[] viewRefs
= PlatformUI
.getWorkbench().getActiveWorkbenchWindow().getActivePage().getViewReferences();
136 for (IViewReference viewRef
: viewRefs
) {
137 IViewPart vp
= viewRef
.getView(true);
138 if (vp
.getTitle().equals(viewTile
)) {