1 /*******************************************************************************
2 * Copyright (c) 2011, 2013 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 * Bernd Hufmann - Initial API and implementation
11 *******************************************************************************/
13 package org
.eclipse
.linuxtools
.lttng2
.control
.ui
.tests
.model
.component
;
15 import org
.eclipse
.core
.commands
.ExecutionException
;
16 import org
.eclipse
.core
.commands
.NotEnabledException
;
17 import org
.eclipse
.core
.commands
.NotHandledException
;
18 import org
.eclipse
.core
.commands
.common
.NotDefinedException
;
19 import org
.eclipse
.core
.runtime
.jobs
.Job
;
20 import org
.eclipse
.linuxtools
.internal
.lttng2
.control
.ui
.views
.ControlView
;
21 import org
.eclipse
.linuxtools
.internal
.lttng2
.control
.ui
.views
.model
.ITraceControlComponent
;
22 import org
.eclipse
.linuxtools
.internal
.lttng2
.control
.ui
.views
.model
.impl
.TraceSessionComponent
;
23 import org
.eclipse
.swt
.SWT
;
24 import org
.eclipse
.swt
.widgets
.Display
;
25 import org
.eclipse
.ui
.IViewPart
;
26 import org
.eclipse
.ui
.PartInitException
;
27 import org
.eclipse
.ui
.PlatformUI
;
28 import org
.eclipse
.ui
.handlers
.IHandlerService
;
31 * Singleton class to facilitate the test cases. Creates UML2SD view and loader objects as well as provides
32 * utility methods for interacting with the loader/view.
34 @SuppressWarnings("javadoc")
35 public class TraceControlTestFacility
{
37 // ------------------------------------------------------------------------
39 // ------------------------------------------------------------------------
40 public final static int WAIT_FOR_JOBS_DELAY
= 50;
41 public final static int GUI_REFESH_DELAY
= 500;
43 public final static String DIRECTORY
= "testfiles";
44 public final static String COMMAND_CATEGORY_PREFIX
= "org.eclipse.linuxtools.internal.lttng2.ui.commands.control.";
45 public final static String SCEN_INIT_TEST
= "Initialize";
46 public final static String SCEN_SCENARIO_SESSION_HANDLING
= "SessionHandling";
47 public final static String SCEN_SCENARIO_SESSION_HANDLING_WITH_PATH
= "SessionHandlingWithPath";
49 // ------------------------------------------------------------------------
51 // ------------------------------------------------------------------------
52 private static TraceControlTestFacility fInstance
= null;
53 private ControlView fControlView
= null;
54 private boolean fIsInitialized
= false;
56 // ------------------------------------------------------------------------
58 // ------------------------------------------------------------------------
59 private TraceControlTestFacility() {
62 // ------------------------------------------------------------------------
64 // ------------------------------------------------------------------------
65 public static TraceControlTestFacility
getInstance() {
66 if (fInstance
== null) {
67 fInstance
= new TraceControlTestFacility();
73 * Initial the test facility.
77 if (!fIsInitialized
) {
82 view
= PlatformUI
.getWorkbench()
83 .getActiveWorkbenchWindow()
85 .findView("org.eclipse.ui.internal.introview");
88 PlatformUI
.getWorkbench()
89 .getActiveWorkbenchWindow()
90 .getActivePage().hideView(view
);
93 view
= PlatformUI
.getWorkbench()
94 .getActiveWorkbenchWindow()
96 .showView(ControlView
.ID
);
98 } catch (PartInitException e
) {
99 throw new RuntimeException(e
);
102 fControlView
= (ControlView
) view
;
105 fIsInitialized
= true;
111 * Disposes the facility (and GUI)
113 public void dispose() {
114 if (fIsInitialized
) {
117 PlatformUI
.getWorkbench().getActiveWorkbenchWindow().getActivePage().hideView(fControlView
);
118 fIsInitialized
= false;
123 * Creates a delay for given time.
124 * @param waitTimeMillis - time in milli seconds
126 public void delay(long waitTimeMillis
) {
127 Display display
= Display
.getCurrent();
128 if (display
!= null) {
129 long endTimeMillis
= System
.currentTimeMillis() + waitTimeMillis
;
130 while(System
.currentTimeMillis() < endTimeMillis
) {
131 if (!display
.readAndDispatch()) {
132 if ("cocoa".equals (SWT
.getPlatform ())) {
133 // The display needs to be woken up because it's possible
134 // to get in a state where nothing will wake up the UI thread
135 display
.asyncExec(null);
143 Thread
.sleep(waitTimeMillis
);
144 } catch (InterruptedException e
) {
151 * Waits for all Eclipse jobs to finish
153 public void waitForJobs() {
154 while (!Job
.getJobManager().isIdle()) {
155 delay(WAIT_FOR_JOBS_DELAY
);
160 * @return current control view
162 public ControlView
getControlView() {
167 * Executes an Eclipse command with command ID after selecting passed component
168 * @param component - component to select in the tree
169 * @param commandId - command ID
170 * @throws ExecutionException
171 * @throws NotDefinedException
172 * @throws NotEnabledException
173 * @throws NotHandledException
175 public void executeCommand(ITraceControlComponent component
, String commandId
) throws ExecutionException
, NotDefinedException
, NotEnabledException
, NotHandledException
{
176 setSelection(component
);
177 executeCommand(commandId
);
181 * Executes an Eclipse command with command ID after selecting passed components
182 * @param components - array of components to select in the tree
183 * @param commandId - command ID
184 * @throws ExecutionException
185 * @throws NotDefinedException
186 * @throws NotEnabledException
187 * @throws NotHandledException
189 public void executeCommand(ITraceControlComponent
[] components
, String commandId
) throws ExecutionException
, NotDefinedException
, NotEnabledException
, NotHandledException
{
190 setSelection(components
);
191 executeCommand(commandId
);
195 * Executes an Eclipse command with command ID
197 * @throws ExecutionException
198 * @throws NotDefinedException
199 * @throws NotEnabledException
200 * @throws NotHandledException
202 public void executeCommand(String commandId
) throws ExecutionException
, NotDefinedException
, NotEnabledException
, NotHandledException
{
203 IHandlerService handlerService
= (IHandlerService
) fControlView
.getSite().getService(IHandlerService
.class);
204 handlerService
.executeCommand(COMMAND_CATEGORY_PREFIX
+ commandId
, null);
209 * Selects passed component
210 * @param component - component to select in the tree
211 * @param commandId - command ID
213 public void setSelection(ITraceControlComponent component
) {
214 fControlView
.setSelection(component
);
215 // Selection is done in own job
221 * Selects passed components
222 * @param components - array of component to select in the tree
223 * @param commandId - command ID
225 public void setSelection(ITraceControlComponent
[] components
) {
226 fControlView
.setSelection(components
);
228 // Selection is done in own job
233 * Creates session on passed session group.
234 * @param group - session group
235 * @return - trace session group if it's successful else null
236 * @throws ExecutionException
237 * @throws NotDefinedException
238 * @throws NotEnabledException
239 * @throws NotHandledException
241 public TraceSessionComponent
createSession(ITraceControlComponent group
) throws ExecutionException
, NotDefinedException
, NotEnabledException
, NotHandledException
{
242 executeCommand(group
, "createSession");
244 ITraceControlComponent
[] sessions
= group
.getChildren();
245 if ((sessions
== null) || (sessions
.length
== 0)) {
248 return (TraceSessionComponent
)sessions
[0];
252 * Destroys a given session.
253 * @param session - session to destroy
254 * @throws ExecutionException
255 * @throws NotDefinedException
256 * @throws NotEnabledException
257 * @throws NotHandledException
259 public void destroySession(TraceSessionComponent session
) throws ExecutionException
, NotDefinedException
, NotEnabledException
, NotHandledException
{
260 executeCommand(session
, "destroySession");
264 * Starts a given session
265 * @param session - session to start
266 * @throws ExecutionException
267 * @throws NotDefinedException
268 * @throws NotEnabledException
269 * @throws NotHandledException
271 public void startSession(TraceSessionComponent session
) throws ExecutionException
, NotDefinedException
, NotEnabledException
, NotHandledException
{
272 executeCommand(session
, "start");
276 * Stops a given session
277 * @param session - session to stop
278 * @throws ExecutionException
279 * @throws NotDefinedException
280 * @throws NotEnabledException
281 * @throws NotHandledException
283 public void stopSession(TraceSessionComponent session
) throws ExecutionException
, NotDefinedException
, NotEnabledException
, NotHandledException
{
284 executeCommand(session
, "stop");