1 /*******************************************************************************
2 * Copyright (c) 2011 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 *******************************************************************************/
12 package org
.eclipse
.linuxtools
.tmf
.ui
.tests
.views
.uml2sd
.impl
;
15 import java
.io
.IOException
;
16 import java
.net
.URISyntaxException
;
18 import java
.util
.ArrayList
;
19 import java
.util
.List
;
21 import org
.eclipse
.core
.runtime
.FileLocator
;
22 import org
.eclipse
.core
.runtime
.Path
;
23 import org
.eclipse
.core
.runtime
.jobs
.Job
;
24 import org
.eclipse
.linuxtools
.tmf
.core
.event
.TmfEvent
;
25 import org
.eclipse
.linuxtools
.tmf
.core
.experiment
.TmfExperiment
;
26 import org
.eclipse
.linuxtools
.tmf
.core
.parser
.ITmfEventParser
;
27 import org
.eclipse
.linuxtools
.tmf
.core
.signal
.TmfExperimentSelectedSignal
;
28 import org
.eclipse
.linuxtools
.tmf
.core
.trace
.ITmfTrace
;
29 import org
.eclipse
.linuxtools
.tmf
.tests
.stubs
.trace
.TmfTraceStub
;
30 import org
.eclipse
.linuxtools
.tmf
.ui
.tests
.uml2sd
.trace
.TmfUml2SDTestTrace
;
31 import org
.eclipse
.linuxtools
.tmf
.ui
.views
.uml2sd
.SDView
;
32 import org
.eclipse
.linuxtools
.tmf
.ui
.views
.uml2sd
.handlers
.widgets
.Criteria
;
33 import org
.eclipse
.linuxtools
.tmf
.ui
.views
.uml2sd
.handlers
.widgets
.FilterCriteria
;
34 import org
.eclipse
.linuxtools
.tmf
.ui
.views
.uml2sd
.handlers
.widgets
.FilterListDialog
;
35 import org
.eclipse
.linuxtools
.tmf
.ui
.views
.uml2sd
.impl
.TmfUml2SDSyncLoader
;
36 import org
.eclipse
.linuxtools
.tmf
.ui
.views
.uml2sd
.load
.LoadersManager
;
37 import org
.eclipse
.swt
.widgets
.Display
;
38 import org
.eclipse
.ui
.IViewPart
;
39 import org
.eclipse
.ui
.PartInitException
;
40 import org
.eclipse
.ui
.PlatformUI
;
41 import org
.osgi
.framework
.FrameworkUtil
;
44 * Singleton class to facilitate the test cases. Creates UML2SD view and loader objects as well as provides
45 * utility methods for interacting with the loader/view.
47 public class Uml2SDTestFacility
{
49 // ------------------------------------------------------------------------
51 // ------------------------------------------------------------------------
52 private static Uml2SDTestFacility fInstance
= null;
54 private TmfUml2SDSyncLoader fLoader
;
55 private SDView fSdView
;
56 private TmfTraceStub fTrace
= null;
57 private TmfUml2SDTestTrace fParser
= null;
58 private TmfExperiment
<TmfEvent
> fExperiment
= null;
60 private boolean fIsInitialized
= false;
62 // ------------------------------------------------------------------------
64 // ------------------------------------------------------------------------
65 private Uml2SDTestFacility() {
68 // ------------------------------------------------------------------------
70 // ------------------------------------------------------------------------
71 public static Uml2SDTestFacility
getInstance() {
72 if (fInstance
== null) {
73 fInstance
= new Uml2SDTestFacility();
80 * Initial the test facility.
84 if (!fIsInitialized
) {
86 fParser
= new TmfUml2SDTestTrace();
87 fTrace
= setupTrace(fParser
);
91 // Remove welcome view to avoid interference during test execution
92 view
= PlatformUI
.getWorkbench()
93 .getActiveWorkbenchWindow()
95 .findView("org.eclipse.ui.internal.introview"); //$NON-NLS-1$
98 PlatformUI
.getWorkbench()
99 .getActiveWorkbenchWindow()
100 .getActivePage().hideView(view
);
103 view
= PlatformUI
.getWorkbench()
104 .getActiveWorkbenchWindow()
106 .showView("org.eclipse.linuxtools.tmf.ui.tmfUml2SDSyncView"); //$NON-NLS-1$
108 } catch (PartInitException e
) {
109 throw new RuntimeException(e
);
112 fSdView
= (SDView
) view
;
113 fLoader
= (TmfUml2SDSyncLoader
)LoadersManager
.getInstance().createLoader(
114 "org.eclipse.linuxtools.tmf.ui.views.uml2sd.impl.TmfUml2SDSyncLoader", fSdView
); //$NON-NLS-1$
117 fIsInitialized
= true;
122 private TmfTraceStub
setupTrace(ITmfEventParser
<TmfEvent
> parser
) {
125 // Create test trace object
126 URL location
= FileLocator
.find(FrameworkUtil
.getBundle(this.getClass()), new Path("tracesets/sdEvents"), null); //$NON-NLS-1$
127 File test
= new File(FileLocator
.toFileURL(location
).toURI());
128 return new TmfTraceStub(test
.getPath(), 500, true, parser
);
129 } catch (URISyntaxException e
) {
131 throw new RuntimeException(e
);
132 } catch (IOException e
) {
134 throw new RuntimeException(e
);
139 * Dispose the resource
141 public void dispose() {
142 if (fIsInitialized
) {
143 fExperiment
.dispose();
145 // Wait for all Eclipse jobs to finish
148 PlatformUI
.getWorkbench().getActiveWorkbenchWindow().getActivePage().hideView(fSdView
);
149 fIsInitialized
= false;
154 * Sleeps current thread or GUI thread for a given time.
155 * @param waitTimeMillis
157 public void delay(long waitTimeMillis
) {
158 Display display
= Display
.getCurrent();
159 if (display
!= null) {
160 long endTimeMillis
= System
.currentTimeMillis() + waitTimeMillis
;
161 while(System
.currentTimeMillis() < endTimeMillis
) {
162 if (!display
.readAndDispatch()) {
169 Thread
.sleep(waitTimeMillis
);
170 } catch (InterruptedException e
) {
177 * Waits for all Eclipse jobs to finish
179 public void waitForJobs() {
180 while (!Job
.getJobManager().isIdle()) {
181 delay(IUml2SDTestConstants
.WAIT_FOR_JOBS_DELAY
);
186 * @return current UML2SD loader
188 public TmfUml2SDSyncLoader
getLoader() {
193 * @return current SD view
195 public SDView
getSdView() {
200 * @return current trace
202 public TmfTraceStub
getTrace() {
207 * @return Trace parser
209 public TmfUml2SDTestTrace
getParser() {
214 * @return current experiment.
216 public TmfExperiment
<TmfEvent
> getExperiment() {
223 public void nextPage() {
225 fLoader
.waitForCompletion();
226 delay(IUml2SDTestConstants
.GUI_REFESH_DELAY
);
230 * Go to previous page.
232 public void prevPage() {
234 fLoader
.waitForCompletion();
235 delay(IUml2SDTestConstants
.GUI_REFESH_DELAY
);
241 public void lastPage() {
243 fLoader
.waitForCompletion();
244 delay(IUml2SDTestConstants
.GUI_REFESH_DELAY
);
250 public void firstPage() {
252 fLoader
.waitForCompletion();
253 delay(IUml2SDTestConstants
.GUI_REFESH_DELAY
);
257 * @param page number to set
259 public void setPage(int page
) {
260 fLoader
.pageNumberChanged(page
);;
261 fLoader
.waitForCompletion();
262 delay(IUml2SDTestConstants
.GUI_REFESH_DELAY
);
266 * @see org.eclipse.linuxtools.tmf.ui.tests.views.uml2sd.impl.selectExperiment(boolean)
268 public void selectExperiment() {
269 this.selectExperiment(true);
273 * Selects the experiment.
274 * @param wait true to wait for indexing to finish else false
276 @SuppressWarnings({ "rawtypes", "unchecked" })
277 public void selectExperiment(boolean wait
) {
278 fTrace
= setupTrace(fParser
);
280 ITmfTrace traces
[] = new ITmfTrace
[1];
282 fExperiment
= new TmfExperiment
<TmfEvent
>(TmfEvent
.class, "TestExperiment", traces
); //$NON-NLS-1$
283 fTrace
.broadcast(new TmfExperimentSelectedSignal
<TmfEvent
>(this, fExperiment
));
285 while (fExperiment
.getNbEvents() == 0) {
286 delay(IUml2SDTestConstants
.GUI_REFESH_DELAY
);
289 delay(IUml2SDTestConstants
.GUI_REFESH_DELAY
);
294 * Disposes the experiment.
296 public void disposeExperiment() {
297 fExperiment
.dispose();
298 delay(IUml2SDTestConstants
.GUI_REFESH_DELAY
);
302 * Creates some global filter criteria and saves them to disk.
304 public void createFilterCriteria() {
305 // Create Filter Criteria and save tme
306 List
<FilterCriteria
> filterToSave
= new ArrayList
<FilterCriteria
>();
307 Criteria criteria
= new Criteria();
308 criteria
.setLifeLineSelected(true);
309 criteria
.setExpression(IUml2SDTestConstants
.FIRST_PLAYER_NAME
);
310 filterToSave
.add(new FilterCriteria(criteria
, true, false));
312 criteria
= new Criteria();
313 criteria
.setSyncMessageSelected(true);
314 criteria
.setExpression("BALL_.*"); //$NON-NLS-1$
315 filterToSave
.add(new FilterCriteria(criteria
, true, false));
316 FilterListDialog
.saveFiltersCriteria(filterToSave
);