import static org.junit.Assert.assertSame;
import static org.junit.Assert.assertTrue;
+import java.util.concurrent.TimeUnit;
+
import org.eclipse.tracecompass.tmf.core.event.ITmfEvent;
import org.eclipse.tracecompass.tmf.core.request.ITmfEventRequest;
import org.eclipse.tracecompass.tmf.core.request.ITmfEventRequest.ExecutionType;
import org.eclipse.tracecompass.tmf.core.timestamp.TmfTimestamp;
import org.eclipse.tracecompass.tmf.tests.stubs.request.TmfEventRequestStub;
import org.junit.Before;
+import org.junit.Rule;
import org.junit.Test;
+import org.junit.rules.TestRule;
+import org.junit.rules.Timeout;
/**
* Test suite for the TmfEventRequest class.
@SuppressWarnings("javadoc")
public class TmfEventRequestTest {
+ @Rule
+ public TestRule globalTimeout = new Timeout(20, TimeUnit.SECONDS);
+
// ------------------------------------------------------------------------
// Variables
// ------------------------------------------------------------------------
TmfTimeRange range = new TmfTimeRange(TmfTimestamp.fromSeconds(0), TmfTimestamp.BIG_CRUNCH);
TmfEventRequest request = new TmfEventRequestStub(ITmfEvent.class, range);
- assertEquals("getDataType", ITmfEvent.class, request.getDataType());
+ assertEquals("getDataType", ITmfEvent.class, request.getDataType());
assertEquals("StartTime", TmfTimestamp.fromSeconds(0), request.getRange().getStartTime());
assertEquals("EndTime", TmfTimestamp.BIG_CRUNCH, request.getRange().getEndTime());
TmfTimeRange range = new TmfTimeRange(TmfTimestamp.fromSeconds(0), TmfTimestamp.BIG_CRUNCH);
TmfEventRequest request = new TmfEventRequestStub(ITmfEvent.class, range, 100);
- assertEquals("getDataType", ITmfEvent.class, request.getDataType());
+ assertEquals("getDataType", ITmfEvent.class, request.getDataType());
assertEquals("StartTime", TmfTimestamp.fromSeconds(0), request.getRange().getStartTime());
assertEquals("EndTime", TmfTimestamp.BIG_CRUNCH, request.getRange().getEndTime());
TmfTimeRange range = new TmfTimeRange(TmfTimestamp.fromSeconds(0), TmfTimestamp.BIG_CRUNCH);
TmfEventRequest request = new TmfEventRequestStub(ITmfEvent.class, range, 100, 200);
- assertEquals("getDataType", ITmfEvent.class, request.getDataType());
+ assertEquals("getDataType", ITmfEvent.class, request.getDataType());
assertEquals("StartTime", TmfTimestamp.fromSeconds(0), request.getRange().getStartTime());
assertEquals("EndTime", TmfTimestamp.BIG_CRUNCH, request.getRange().getEndTime());
TmfTimeRange range = new TmfTimeRange(TmfTimestamp.fromSeconds(0), TmfTimestamp.BIG_CRUNCH);
TmfEventRequest request = new TmfEventRequestStub(ITmfEvent.class, range, 100, 200, ExecutionType.FOREGROUND, 1);
- assertEquals("getDataType", ITmfEvent.class, request.getDataType());
+ assertEquals("getDataType", ITmfEvent.class, request.getDataType());
assertEquals("StartTime", TmfTimestamp.fromSeconds(0), request.getRange().getStartTime());
assertEquals("EndTime", TmfTimestamp.BIG_CRUNCH, request.getRange().getEndTime());
assertFalse(fRequest1.equals(fRequest3));
assertFalse(fRequest1.equals(fRequest4));
- /* Request with different dependency level, but otherwise identical, are not equal */
+ /*
+ * Request with different dependency level, but otherwise identical, are
+ * not equal
+ */
assertFalse(fRequest4.equals(fRequest5));
}
assertTrue("handleCancel", flags[3]);
}
+ // ------------------------------------------------------------------------
+ // waitForStart
+ // ------------------------------------------------------------------------
+
+ /**
+ * Test calling waitForStart() after the request has already been started.
+ * It should not block.
+ */
+ @Test
+ public void testWaitForStartAfterStart() throws InterruptedException {
+ final boolean[] flags = new boolean[4];
+ TmfEventRequest request = setupTestRequest(flags);
+
+ request.start();
+ request.waitForStart();
+ request.done();
+
+ assertTrue("isCompleted", request.isCompleted());
+ assertFalse("isFailed", request.isFailed());
+ assertFalse("isCancelled", request.isCancelled());
+
+ assertTrue("handleCompleted", flags[0]);
+ assertTrue("handleSuccess", flags[1]);
+ assertFalse("handleFailure", flags[2]);
+ assertFalse("handleCancel", flags[3]);
+ }
+
+ /**
+ * Test calling waitForStart() after the request has ended. It should not
+ * block.
+ */
+ @Test
+ public void testWaitForStartAfterDone() throws InterruptedException {
+ final boolean[] flags = new boolean[4];
+ TmfEventRequest request = setupTestRequest(flags);
+
+ request.start();
+ request.done();
+ request.waitForStart();
+
+ assertTrue("isCompleted", request.isCompleted());
+ assertFalse("isFailed", request.isFailed());
+ assertFalse("isCancelled", request.isCancelled());
+
+ assertTrue("handleCompleted", flags[0]);
+ assertTrue("handleSuccess", flags[1]);
+ assertFalse("handleFailure", flags[2]);
+ assertFalse("handleCancel", flags[3]);
+ }
+
+ /**
+ * Test calling waitForStart() after the request has beend cancelled. It
+ * should not block.
+ */
+ @Test
+ public void testWaitForStartAfterCancel() throws InterruptedException {
+ final boolean[] flags = new boolean[4];
+ TmfEventRequest request = setupTestRequest(flags);
+
+ request.start();
+ request.cancel();
+ request.waitForStart();
+
+ assertTrue("isCompleted", request.isCompleted());
+ assertFalse("isFailed", request.isFailed());
+ assertTrue("isCancelled", request.isCancelled());
+
+ assertTrue("handleCompleted", flags[0]);
+ assertFalse("handleSuccess", flags[1]);
+ assertFalse("handleFailure", flags[2]);
+ assertTrue("handleCancel", flags[3]);
+ }
+
+ /**
+ * Test calling waitForStart() before the request is started. It should not
+ * block.
+ */
+ @Test
+ public void testWaitForStartBeforeStart() throws InterruptedException {
+ final boolean[] flags = new boolean[4];
+ TmfEventRequest request = setupTestRequest(flags);
+ Thread t = new Thread() {
+ @Override
+ public void run() {
+ try {
+ request.waitForStart();
+ } catch (InterruptedException e) {
+ // nothing
+ }
+ }
+ };
+ t.setPriority(Thread.MAX_PRIORITY);
+ t.start();
+ request.start();
+ t.join();
+ request.done();
+
+ assertTrue("isCompleted", request.isCompleted());
+ assertFalse("isFailed", request.isFailed());
+ assertFalse("isCancelled", request.isCancelled());
+
+ assertTrue("handleCompleted", flags[0]);
+ assertTrue("handleSuccess", flags[1]);
+ assertFalse("handleFailure", flags[2]);
+ assertFalse("handleCancel", flags[3]);
+ }
+
}