import org.eclipse.linuxtools.tmf.core.trace.ITmfEventParser;
import org.eclipse.linuxtools.tmf.core.trace.ITmfTrace;
import org.eclipse.linuxtools.tmf.core.trace.TmfExperiment;
+import org.eclipse.linuxtools.tmf.core.trace.indexer.ITmfTraceIndexer;
+import org.eclipse.linuxtools.tmf.core.trace.indexer.checkpoint.TmfCheckpointIndexer;
import org.eclipse.linuxtools.tmf.tests.stubs.trace.TmfTraceStub;
import org.eclipse.linuxtools.tmf.ui.tests.uml2sd.trace.TmfUml2SDTestTrace;
import org.eclipse.linuxtools.tmf.ui.views.uml2sd.SDView;
private TmfUml2SDTestTrace fParser = null;
private TmfExperiment fExperiment = null;
- private boolean fIsInitialized = false;
+ private volatile boolean fIsInitialized = false;
// ------------------------------------------------------------------------
// Constructors
*/
public void dispose() {
if (fIsInitialized) {
- fTrace.broadcast(new TmfTraceClosedSignal(this, fExperiment));
- fExperiment.dispose();
+ ITmfTrace trace = fTrace;
+ TmfExperiment experiment = fExperiment;
+ if (trace == null || experiment == null) {
+ throw new IllegalStateException();
+ }
+
+ trace.broadcast(new TmfTraceClosedSignal(this, experiment));
+ experiment.dispose();
// Wait for all Eclipse jobs to finish
waitForJobs();
final long endTimeMillis = System.currentTimeMillis() + waitTimeMillis;
while(System.currentTimeMillis() < endTimeMillis) {
if (!display.readAndDispatch()) {
- display.sleep();
+ // We do not use Display.sleep because it might never wake up
+ // if there is no user interaction
+ try {
+ Thread.sleep(Math.min(waitTimeMillis, 10));
+ } catch (final InterruptedException e) {
+ // Ignored
+ }
}
display.update();
}
fTrace = setupTrace(fParser);
fParser.setTrace(fTrace);
-// fTrace = setupTrace(fParser);
-
final ITmfTrace traces[] = new ITmfTrace[1];
traces[0] = fTrace;
- fExperiment = new TmfExperiment(ITmfEvent.class, "TestExperiment", traces);
+ fExperiment = new TmfExperiment(ITmfEvent.class, "TestExperiment", traces) {
+ @Override
+ protected ITmfTraceIndexer createIndexer(int interval) {
+ return new TmfCheckpointIndexer(this, interval);
+ }
+ };
fTrace.broadcast(new TmfTraceOpenedSignal(this, fExperiment, null));
fTrace.broadcast(new TmfTraceSelectedSignal(this, fExperiment));
if (wait) {
* Disposes the experiment.
*/
public void disposeExperiment() {
- fTrace.broadcast(new TmfTraceClosedSignal(this, fExperiment));
- fExperiment.dispose();
+ ITmfTrace trace = fTrace;
+ TmfExperiment experiment = fExperiment;
+ if (trace == null || experiment == null) {
+ throw new IllegalStateException();
+ }
+ trace.broadcast(new TmfTraceClosedSignal(this, experiment));
+ experiment.dispose();
delay(IUml2SDTestConstants.GUI_REFESH_DELAY);
}
*/
public void createFilterCriteria() {
// Create Filter Criteria and save tme
- final List<FilterCriteria> filterToSave = new ArrayList<FilterCriteria>();
+ final List<FilterCriteria> filterToSave = new ArrayList<>();
Criteria criteria = new Criteria();
criteria.setLifeLineSelected(true);
criteria.setExpression(IUml2SDTestConstants.FIRST_PLAYER_NAME);