1 /*******************************************************************************
2 * Copyright (c) 2014 École Polytechnique de Montréal
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 * Geneviève Bastien - Initial API and implementation
11 *******************************************************************************/
13 package org
.eclipse
.tracecompass
.tmf
.ui
.tests
.project
.model
;
15 import static org
.junit
.Assert
.assertEquals
;
16 import static org
.junit
.Assert
.assertFalse
;
17 import static org
.junit
.Assert
.assertNotNull
;
18 import static org
.junit
.Assert
.assertTrue
;
19 import static org
.junit
.Assert
.fail
;
21 import java
.util
.concurrent
.TimeoutException
;
23 import org
.eclipse
.core
.resources
.IResource
;
24 import org
.eclipse
.core
.runtime
.CoreException
;
25 import org
.eclipse
.tracecompass
.tmf
.core
.TmfCommonConstants
;
26 import org
.eclipse
.tracecompass
.tmf
.core
.project
.model
.TmfTraceType
;
27 import org
.eclipse
.tracecompass
.tmf
.core
.trace
.ITmfTrace
;
28 import org
.eclipse
.tracecompass
.tmf
.core
.trace
.experiment
.TmfExperiment
;
29 import org
.eclipse
.tracecompass
.tmf
.tests
.stubs
.trace
.TmfExperimentStub
;
30 import org
.eclipse
.tracecompass
.tmf
.ui
.editors
.TmfEventsEditor
;
31 import org
.eclipse
.tracecompass
.tmf
.ui
.project
.model
.TmfExperimentElement
;
32 import org
.eclipse
.tracecompass
.tmf
.ui
.project
.model
.TmfOpenTraceHelper
;
33 import org
.eclipse
.tracecompass
.tmf
.ui
.project
.model
.TmfProjectElement
;
34 import org
.eclipse
.tracecompass
.tmf
.ui
.tests
.experiment
.type
.TmfEventsEditorStub
;
35 import org
.eclipse
.tracecompass
.tmf
.ui
.tests
.shared
.ProjectModelTestData
;
36 import org
.eclipse
.tracecompass
.tmf
.ui
.viewers
.events
.TmfEventsTable
;
37 import org
.eclipse
.ui
.IEditorPart
;
38 import org
.eclipse
.ui
.IWorkbench
;
39 import org
.eclipse
.ui
.IWorkbenchPage
;
40 import org
.eclipse
.ui
.PlatformUI
;
41 import org
.junit
.After
;
42 import org
.junit
.Before
;
43 import org
.junit
.Test
;
46 * Some unit tests for trace types and experiment types
48 * @author Geneviève Bastien
50 public class TraceAndExperimentTypeTest
{
52 /** Test experiment type id */
53 public final static String TEST_EXPERIMENT_TYPE
= "org.eclipse.linuxtools.tmf.core.tests.experimenttype";
55 private TmfProjectElement fixture
;
56 private TmfExperimentElement fExperiment
;
57 private final String EXPERIMENT_NAME
= "exp_test";
60 * Perform pre-test initialization.
65 fixture
= ProjectModelTestData
.getFilledProject();
66 fExperiment
= ProjectModelTestData
.addExperiment(fixture
, EXPERIMENT_NAME
);
67 assertNotNull(fExperiment
);
68 } catch (CoreException e
) {
74 * Cleans up the project after tests have been executed
77 public void cleanUp() {
78 ProjectModelTestData
.deleteProject(fixture
);
82 * Test whether a newly created experiment has the default experiment type,
83 * even though none was specified
86 public void testDefaultExperimentType() {
87 TmfExperimentElement experimentElement
= ProjectModelTestData
.addExperiment(fixture
, "testDefaultExpType");
88 assertNotNull(experimentElement
);
89 TmfExperiment experiment
= experimentElement
.instantiateTrace();
90 assertNotNull(experiment
);
91 assertEquals(TmfTraceType
.DEFAULT_EXPERIMENT_TYPE
, experimentElement
.getTraceType());
95 * Test that the experiment opened is of the right class
98 public void testExperimentType() {
100 IResource resource
= fExperiment
.getResource();
102 resource
.setPersistentProperty(TmfCommonConstants
.TRACETYPE
, TEST_EXPERIMENT_TYPE
);
103 fExperiment
.refreshTraceType();
104 } catch (CoreException e
) {
105 fail(e
.getMessage());
108 TmfOpenTraceHelper
.openTraceFromElement(fExperiment
);
110 ProjectModelTestData
.delayUntilTraceOpened(fExperiment
);
111 } catch (TimeoutException e1
) {
112 fail (e1
.getMessage());
115 ITmfTrace trace
= fExperiment
.getTrace();
116 assertTrue(trace
instanceof TmfExperimentStub
);
120 * Test that event editor, event table and statistics viewer are the default
121 * ones for a generic experiment
124 public void testNoExperimentTypeChildren() {
125 TmfOpenTraceHelper
.openTraceFromElement(fExperiment
);
128 ProjectModelTestData
.delayUntilTraceOpened(fExperiment
);
129 } catch (TimeoutException e1
) {
130 fail (e1
.getMessage());
133 final IWorkbench wb
= PlatformUI
.getWorkbench();
134 final IWorkbenchPage activePage
= wb
.getActiveWorkbenchWindow().getActivePage();
135 IEditorPart editor
= activePage
.getActiveEditor();
137 /* Test the editor class. Cannot test table class since it is unexposed */
138 assertNotNull(editor
);
139 assertTrue(editor
.getClass().equals(TmfEventsEditor
.class));
143 * Test that event editor, event table and statistics viewer are built
144 * correctly when specified
147 public void testExperimentTypeChildren() {
149 /* Set the trace type of the experiment */
150 IResource resource
= fExperiment
.getResource();
152 resource
.setPersistentProperty(TmfCommonConstants
.TRACETYPE
, TEST_EXPERIMENT_TYPE
);
153 fExperiment
.refreshTraceType();
154 } catch (CoreException e
) {
155 fail(e
.getMessage());
158 TmfOpenTraceHelper
.openTraceFromElement(fExperiment
);
160 ProjectModelTestData
.delayThread(500);
162 /* Test the editor class */
163 final IWorkbench wb
= PlatformUI
.getWorkbench();
164 final IWorkbenchPage activePage
= wb
.getActiveWorkbenchWindow().getActivePage();
165 IEditorPart editor
= activePage
.getActiveEditor();
167 assertNotNull(editor
);
168 assertTrue(editor
.getClass().equals(TmfEventsEditorStub
.class));
170 /* Test the event table class */
171 TmfEventsEditorStub editorStub
= (TmfEventsEditorStub
) editor
;
172 TmfEventsTable table
= editorStub
.getNewEventsTable();
174 assertNotNull(table
);
175 assertTrue(table
.getClass().equals(TmfEventsTable
.class));
180 * Test that the analysis get populated under an experiment of the proper type
183 public void testExperimentTypeAnalysis() {
185 /* Set the trace type of the experiment */
186 IResource resource
= fExperiment
.getResource();
188 resource
.setPersistentProperty(TmfCommonConstants
.TRACETYPE
, TEST_EXPERIMENT_TYPE
);
189 fExperiment
.refreshTraceType();
190 } catch (CoreException e
) {
191 fail(e
.getMessage());
194 /* Force the refresh of the experiment */
195 fExperiment
.getParent().refresh();
196 assertFalse(fExperiment
.getAvailableAnalysis().isEmpty());