use of org.eclipse.tracecompass.tmf.core.signal.TmfStartSynchSignal in project tracecompass by tracecompass.
the class TmfEventProviderCoalescingTest method sendSync.
// ------------------------------------------------------------------------
// Helper methods
// ------------------------------------------------------------------------
private static void sendSync(boolean isStart) {
if (isStart) {
TmfStartSynchSignal signal = new TmfStartSynchSignal(0);
fTmfTrace1.startSynch(signal);
fTmfTrace1.startSynch(signal);
fExperiment.startSynch(signal);
fTmfTrace2.startSynch(signal);
fExperiment.startSynch(signal);
} else {
TmfEndSynchSignal signal = new TmfEndSynchSignal(0);
fTmfTrace1.endSynch(signal);
fTmfTrace1.endSynch(signal);
fExperiment.endSynch(signal);
fTmfTrace2.endSynch(signal);
fExperiment.endSynch(signal);
}
}
use of org.eclipse.tracecompass.tmf.core.signal.TmfStartSynchSignal in project tracecompass by tracecompass.
the class TmfEventProviderTest method testCancelRequests.
/**
* Test canceling requests.
*/
@Test
public void testCancelRequests() {
final int NB_EVENTS = 1000;
final int NUMBER_EVENTS_BEFORE_CANCEL_REQ1 = 10;
final int NUMBER_EVENTS_BEFORE_CANCEL_REQ2 = 800;
final Vector<ITmfEvent> requestedEventsReq1 = new Vector<>();
final Vector<ITmfEvent> requestedEventsReq2 = new Vector<>();
// Get the TmfSyntheticEventStub provider
ITmfEventProvider[] eventProviders = TmfProviderManager.getProviders(ITmfEvent.class, TmfEventProviderStub.class);
ITmfEventProvider provider = eventProviders[0];
TmfTimeRange range = new TmfTimeRange(TmfTimestamp.BIG_BANG, TmfTimestamp.BIG_CRUNCH);
// Create first request
final TmfEventRequest request1 = new TmfEventRequest(ITmfEvent.class, range, 0, NB_EVENTS, ExecutionType.FOREGROUND) {
@Override
public void handleData(ITmfEvent event) {
super.handleData(event);
requestedEventsReq1.add(event);
// cancel sub request
if (getNbRead() == NUMBER_EVENTS_BEFORE_CANCEL_REQ1) {
cancel();
}
}
};
// Synchronize requests
((TmfEventProviderStub) provider).startSynch(new TmfStartSynchSignal(0));
// Additionally, notify provider for up-coming requests
provider.notifyPendingRequest(true);
// Call sendRequest, which will create a coalescing request, but it
// doesn't send request1 yet
provider.sendRequest(request1);
// Check if request1 is not running yet.
assertFalse("isRunning", request1.isRunning());
// Create second request
final TmfEventRequest request2 = new TmfEventRequest(ITmfEvent.class, range, 0, NB_EVENTS, ExecutionType.FOREGROUND) {
@Override
public void handleData(ITmfEvent event) {
super.handleData(event);
requestedEventsReq2.add(event);
// cancel sub request which will cancel also main request
if (getNbRead() == NUMBER_EVENTS_BEFORE_CANCEL_REQ2) {
cancel();
}
}
};
// Call sendRequest, which will create a coalescing request, but it
// doesn't send request2 yet
provider.sendRequest(request2);
// Check if request1/2 is not running yet.
assertFalse("isRunning", request1.isRunning());
assertFalse("isRunning", request2.isRunning());
// Send end synch signal, however requests won't be sent
((TmfEventProviderStub) provider).endSynch(new TmfEndSynchSignal(0));
// Check if request1/2 is not running yet.
assertFalse("isRunning", request1.isRunning());
assertFalse("isRunning", request2.isRunning());
// Finally, trigger sending of requests
provider.notifyPendingRequest(false);
try {
// Wait until requests start
request1.waitForStart();
request2.waitForStart();
// // Verify that the requests are running
// assertTrue("isRunning", request1.isRunning());
// assertTrue("isRunning", request2.isRunning());
request1.waitForCompletion();
// // Check if request2 is still running
// assertTrue("isRunning", request2.isRunning());
// Verify result (request1)
assertEquals("nbEvents", NUMBER_EVENTS_BEFORE_CANCEL_REQ1, requestedEventsReq1.size());
assertTrue("isCompleted", request1.isCompleted());
assertTrue("isCancelled", request1.isCancelled());
request2.waitForCompletion();
// Verify result (request2)
assertEquals("nbEvents", NUMBER_EVENTS_BEFORE_CANCEL_REQ2, requestedEventsReq2.size());
assertTrue("isCompleted", request2.isCompleted());
assertTrue("isCancelled", request2.isCancelled());
} catch (InterruptedException e) {
fail();
}
}
Aggregations