From f96739037cd9e807001cb9d1b693951ccd9d4c39 Mon Sep 17 00:00:00 2001 From: Francois Chouinard Date: Mon, 20 Sep 2010 14:41:11 +0000 Subject: [PATCH] 2010-09-17 Francois Chouinard Contribution for Bug325662 * src/org/eclipse/linuxtools/lttng/control/LttngSyntheticEventProvider.java: Adjusted to new handleData() API * src/org/eclipse/linuxtools/lttng/event/LttngEvent.java: Adjusted to new handleData() API * src/org/eclipse/linuxtools/lttng/request/LttngSyntEventRequest.java: Adjusted to new handleData() API * src/org/eclipse/linuxtools/lttng/state/experiment/StateExperimentManager.java: Adjusted to new handleData() API * src/org/eclipse/linuxtools/lttng/state/trace/StateTraceManager.java: Adjusted to new handleData() API * src/org/eclipse/linuxtools/lttng/trace/LTTngTrace.java: Adjusted to new handleData() API * src/org/eclipse/linuxtools/lttng/control/LTTngSyntheticEventProviderTest.java: Adjusted unit test * src/org/eclipse/linuxtools/lttng/LttngTestPreparation.java: Adjusted unit test * src/org/eclipse/linuxtools/lttng/ui/views/common/AbsTimeUpdateView.java: Adjusted to new handleData() API * src/org/eclipse/linuxtools/lttng/ui/views/histogram/HistogramRequest.java: Adjusted to new handleData() API * src/org/eclipse/linuxtools/lttng/ui/views/PerspectiveFactory.java: Fixed perspective ID * src/org/eclipse/linuxtools/tmf/component/TmfDataProvider.java: Adjusted to new handleData() API * src/org/eclipse/linuxtools/tmf/component/TmfEventProvider.java: Adjusted to new handleData() API * src/org/eclipse/linuxtools/tmf/event/TmfEvent.java: Support for single event * src/org/eclipse/linuxtools/tmf/experiment/TmfExperiment.java: Adjusted to new handleData() API * src/org/eclipse/linuxtools/tmf/request/ITmfDataRequest.java: Adjusted to new handleData() API * src/org/eclipse/linuxtools/tmf/request/TmfCoalescedDataRequest.java: Adjusted to new handleData() API * src/org/eclipse/linuxtools/tmf/request/TmfCoalescedEventRequest.java: Adjusted to new handleData() API * src/org/eclipse/linuxtools/tmf/request/TmfDataRequest.java: Adjusted to new handleData() API * src/org/eclipse/linuxtools/tmf/request/TmfEventRequest.java: Adjusted to new handleData() API * src/org/eclipse/linuxtools/tmf/tests/component/TmfEventProviderTest.java: Adjusted unit test * src/org/eclipse/linuxtools/tmf/tests/experiment/TmfExperimentTest.java: Adjusted to new handleData() API * src/org/eclipse/linuxtools/tmf/tests/experiment/TmfMultiTraceExperimentTest.java:Adjusted to new handleData() API * src/org/eclipse/linuxtools/tmf/tests/request/TmfCoalescedDataRequestTest.java: Adjusted to new handleData() API * src/org/eclipse/linuxtools/tmf/tests/request/TmfCoalescedEventRequestTest.java: Adjusted to new handleData() API * src/org/eclipse/linuxtools/tmf/tests/request/TmfDataRequestTest.java: Adjusted to new handleData() API * src/org/eclipse/linuxtools/tmf/tests/request/TmfEventRequestTest.java: Adjusted to new handleData() API * src/org/eclipse/linuxtools/tmf/tests/trace/TmfExperimentTest.java: Adjusted to new handleData() API * src/org/eclipse/linuxtools/tmf/tests/trace/TmfTraceTest.java: Adjusted to new handleData() API * stubs/org/eclipse/linuxtools/tmf/component/TmfSyntheticEventProviderStub.java: Adjusted to new handleData() API * stubs/org/eclipse/linuxtools/tmf/request/TmfDataRequestStub.java: Adjusted to new handleData() API * stubs/org/eclipse/linuxtools/tmf/request/TmfEventRequestStub.java: Adjusted to new handleData() API * src/org/eclipse/linuxtools/tmf/ui/viewers/events/TmfEventsTable.java: Adjusted to new handleData() API --- .../src/TmfTraceTest.java | 12 +- org.eclipse.linuxtools.lttng.tests/ChangeLog | 5 + .../lttng/LttngTestPreparation.java | 16 +- .../LTTngSyntheticEventProviderTest.java | 60 ++--- org.eclipse.linuxtools.lttng.ui/ChangeLog | 7 + org.eclipse.linuxtools.lttng.ui/plugin.xml | 2 +- .../lttng/ui/views/PerspectiveFactory.java | 3 + .../ui/views/common/AbsTimeUpdateView.java | 29 ++- .../ui/views/histogram/HistogramRequest.java | 22 +- org.eclipse.linuxtools.lttng/ChangeLog | 9 + .../control/LttngSyntheticEventProvider.java | 175 +++++--------- .../linuxtools/lttng/event/LttngEvent.java | 7 +- .../lttng/request/LttngSyntEventRequest.java | 4 +- .../experiment/StateExperimentManager.java | 30 +-- .../lttng/state/trace/StateTraceManager.java | 10 +- .../linuxtools/lttng/trace/LTTngTrace.java | 4 +- .../tests/component/TmfEventProviderTest.java | 27 +-- .../tests/experiment/TmfExperimentTest.java | 49 ++-- .../TmfMultiTraceExperimentTest.java | 53 ++-- .../request/TmfCoalescedDataRequestTest.java | 66 +---- .../request/TmfCoalescedEventRequestTest.java | 102 ++------ .../tmf/tests/request/TmfDataRequestTest.java | 40 +-- .../tests/request/TmfEventRequestTest.java | 39 +-- .../tmf/tests/trace/TmfExperimentTest.java | 53 ++-- .../tmf/tests/trace/TmfTraceTest.java | 44 ++-- .../TmfSyntheticEventProviderStub.java | 19 +- .../tmf/request/TmfDataRequestStub.java | 4 +- .../tmf/request/TmfEventRequestStub.java | 4 +- .../tmf/ui/viewers/events/TmfEventsTable.java | 30 ++- org.eclipse.linuxtools.tmf/ChangeLog | 24 ++ .../tmf/component/TmfDataProvider.java | 95 +------- .../tmf/component/TmfEventProvider.java | 8 +- .../linuxtools/tmf/event/TmfEvent.java | 7 +- .../tmf/experiment/TmfExperiment.java | 78 ++---- .../tmf/request/ITmfDataRequest.java | 9 +- .../tmf/request/TmfCoalescedDataRequest.java | 35 +-- .../tmf/request/TmfCoalescedEventRequest.java | 34 +-- .../tmf/request/TmfDataRequest.java | 41 +--- .../tmf/request/TmfEventRequest.java | 2 +- .../linuxtools/tmf/trace/TmfTrace.java | 228 +++++------------- 40 files changed, 507 insertions(+), 979 deletions(-) diff --git a/org.eclipse.linuxtools.lttng.headless/src/TmfTraceTest.java b/org.eclipse.linuxtools.lttng.headless/src/TmfTraceTest.java index be3636ed5b..6775ea7514 100644 --- a/org.eclipse.linuxtools.lttng.headless/src/TmfTraceTest.java +++ b/org.eclipse.linuxtools.lttng.headless/src/TmfTraceTest.java @@ -80,15 +80,11 @@ public class TmfTraceTest extends TmfEventRequest { } - @Override - public void handleData() { - LttngEvent[] result = getData(); - - LttngEvent evt = (result.length > 0) ? result[0] : null; - - if ( (evt != null) && (PARSE_EVENTS) ) { - ((LttngEvent) evt).getContent().getFields(); + public void handleData(LttngEvent event) { + super.handleData(event); + if ( (event != null) && (PARSE_EVENTS) ) { + ((LttngEvent) event).getContent().getFields(); // *** Uncomment the following to print the parsed content // Warning : this is VERY intensive diff --git a/org.eclipse.linuxtools.lttng.tests/ChangeLog b/org.eclipse.linuxtools.lttng.tests/ChangeLog index 5ddc74b84f..2687be5703 100644 --- a/org.eclipse.linuxtools.lttng.tests/ChangeLog +++ b/org.eclipse.linuxtools.lttng.tests/ChangeLog @@ -1,3 +1,8 @@ +2010-09-17 Francois Chouinard + + * src/org/eclipse/linuxtools/lttng/control/LTTngSyntheticEventProviderTest.java: Adjusted unit test + * src/org/eclipse/linuxtools/lttng/LttngTestPreparation.java: Adjusted unit test + 2010-09-15 Francois Chouinard * src/org/eclipse/linuxtools/lttng/control/LTTngSyntheticEventProviderTest.java: Problematic test diff --git a/org.eclipse.linuxtools.lttng.tests/src/org/eclipse/linuxtools/lttng/LttngTestPreparation.java b/org.eclipse.linuxtools.lttng.tests/src/org/eclipse/linuxtools/lttng/LttngTestPreparation.java index 623a7154e6..58c3f4b394 100644 --- a/org.eclipse.linuxtools.lttng.tests/src/org/eclipse/linuxtools/lttng/LttngTestPreparation.java +++ b/org.eclipse.linuxtools.lttng.tests/src/org/eclipse/linuxtools/lttng/LttngTestPreparation.java @@ -209,14 +209,10 @@ public abstract class LttngTestPreparation extends TestCase { // request validSequence = true; - TmfEventRequest request = new TmfEventRequest(k, - trange, TmfDataRequest.ALL_DATA, DEFAULT_CHUNK) { + TmfEventRequest request = new TmfEventRequest(k, trange, TmfDataRequest.ALL_DATA, DEFAULT_CHUNK) { @Override - public void handleData() { - T[] result = getData(); - - T event = (result.length > 0) ? result[0] : null; + public void handleData(T event) { if (event == null) { System.out .println("Syntheric Event Received is null, after event: " @@ -301,14 +297,10 @@ public abstract class LttngTestPreparation extends TestCase { // request validSequence = true; - TmfEventRequest request = new TmfEventRequest(k, - trange, TmfDataRequest.ALL_DATA, DEFAULT_CHUNK) { + TmfEventRequest request = new TmfEventRequest(k, trange, TmfDataRequest.ALL_DATA, DEFAULT_CHUNK) { @Override - public void handleData() { - T[] result = getData(); - - T event = (result.length > 0) ? result[0] : null; + public void handleData(T event) { if (event == null) { System.out .println("Syntheric Event Received is null, after event: " diff --git a/org.eclipse.linuxtools.lttng.tests/src/org/eclipse/linuxtools/lttng/control/LTTngSyntheticEventProviderTest.java b/org.eclipse.linuxtools.lttng.tests/src/org/eclipse/linuxtools/lttng/control/LTTngSyntheticEventProviderTest.java index 285b3cd431..ae1536ce4f 100644 --- a/org.eclipse.linuxtools.lttng.tests/src/org/eclipse/linuxtools/lttng/control/LTTngSyntheticEventProviderTest.java +++ b/org.eclipse.linuxtools.lttng.tests/src/org/eclipse/linuxtools/lttng/control/LTTngSyntheticEventProviderTest.java @@ -12,6 +12,9 @@ package org.eclipse.linuxtools.lttng.control; import org.eclipse.linuxtools.lttng.LttngTestPreparation; +import org.eclipse.linuxtools.lttng.event.LttngEvent; +import org.eclipse.linuxtools.tmf.experiment.TmfExperiment; +import org.eclipse.linuxtools.tmf.request.TmfEventRequest; public class LTTngSyntheticEventProviderTest extends LttngTestPreparation { // ======================================================================== @@ -19,29 +22,31 @@ public class LTTngSyntheticEventProviderTest extends LttngTestPreparation { // ======================================================================== public void testPlainDataRequest() { -// // prepare -// init(); -// TmfExperiment experiment = prepareExperimentToTest(); -// TmfEventRequest request = prepareEventRequest(LttngEvent.class, 0, 31); -// -// // execute -// experiment.sendRequest(request); -// try { -// request.waitForCompletion(); -// } catch (InterruptedException e) { -// e.printStackTrace(); -// } -// -// // finish -// assertEquals("Unexpected eventCount", 15316, feventCount); -// boolean expected = true; -// assertEquals("Events received out of expected order", expected, validSequence); + // prepare + init(); + TmfExperiment experiment = prepareExperimentToTest(); + TmfEventRequest request = prepareEventRequest( + LttngEvent.class, 0, 31); + + // execute + experiment.sendRequest(request); + try { + request.waitForCompletion(); + } catch (InterruptedException e) { + e.printStackTrace(); + } + + // finish + assertEquals("Unexpected eventCount", 15316, feventCount); + boolean expected = true; + assertEquals("Events received out of expected order", expected, + validSequence); } - /** - * - */ - public void testSyntheticEventRequest() { +// /** +// * +// */ +// public void testSyntheticEventRequest() { // init(); // // Create a new Experiment manager context // IStateExperimentManager expManager = prepareExperimentContext(false); @@ -57,36 +62,35 @@ public class LTTngSyntheticEventProviderTest extends LttngTestPreparation { // expManager.experimentSelected(this, experiment); // // // Obtain the singleton event provider -// LttngSyntheticEventProvider synProvider = LttngCoreProviderFactory.getEventProvider(); +// LttngSyntheticEventProvider synProvider = LttngCoreProviderFactory +// .getEventProvider(); // // // prepare synthetic event requests // boolean printExpectedEvents = false; // TmfEventRequest request1 = prepareEventRequest(LttngSyntheticEvent.class, 5, 9, // printExpectedEvents); /* 2001 events */ -// TmfEventRequest request2 = prepareEventRequest2(LttngSyntheticEvent.class, 11, 13, +// TmfEventRequest request2 = prepareEventRequest(LttngSyntheticEvent.class, 11, 13, // printExpectedEvents); /* 1001 events */ // // // execute // synProvider.sendRequest(request1); -// System.out.println("Request1 sent"); // try { // request1.waitForCompletion(); // } catch (InterruptedException e) { // e.printStackTrace(); // } -// System.out.println("Event Count=" + feventCount); +// System.out.println("EventCount " + feventCount); // // synProvider.sendRequest(request2); -// System.out.println("Request2 sent"); // try { // request2.waitForCompletion(); // } catch (InterruptedException e) { // e.printStackTrace(); // } -// System.out.println("Event Count=" + feventCount); +// System.out.println("EventCount " + feventCount); // // // finish // assertEquals("Unexpected eventCount", 3002, feventCount); - } +// } } \ No newline at end of file diff --git a/org.eclipse.linuxtools.lttng.ui/ChangeLog b/org.eclipse.linuxtools.lttng.ui/ChangeLog index da4f8bc054..e8d2536918 100644 --- a/org.eclipse.linuxtools.lttng.ui/ChangeLog +++ b/org.eclipse.linuxtools.lttng.ui/ChangeLog @@ -1,3 +1,10 @@ +2010-09-17 Francois Chouinard + + * plugin.xml: Fixed perspective ID + * src/org/eclipse/linuxtools/lttng/ui/views/common/AbsTimeUpdateView.java: Adjusted to new handleData() API + * src/org/eclipse/linuxtools/lttng/ui/views/histogram/HistogramRequest.java: Adjusted to new handleData() API + * src/org/eclipse/linuxtools/lttng/ui/views/PerspectiveFactory.java: Fixed perspective ID + 2010-09-15 Francois Chouinard * src/org/eclipse/linuxtools/lttng/ui/views/statistics/StatisticsView.java: ExecutionType update diff --git a/org.eclipse.linuxtools.lttng.ui/plugin.xml b/org.eclipse.linuxtools.lttng.ui/plugin.xml index e9fd478e9e..1a00545379 100644 --- a/org.eclipse.linuxtools.lttng.ui/plugin.xml +++ b/org.eclipse.linuxtools.lttng.ui/plugin.xml @@ -2,7 +2,7 @@ 0) ? result[0] : null; +//// handleDataCount++; + @Override - public void handleData() { - LttngSyntheticEvent[] result = getData(); - - TmfEvent evt = (result.length > 0) ? result[0] : null; -// handleDataCount++; - if (evt != null) { + public void handleData(LttngSyntheticEvent event) { + super.handleData(event); + if (event != null) { // handleDataValidCount++; - LttngSyntheticEvent synEvent = (LttngSyntheticEvent) evt; + LttngSyntheticEvent synEvent = (LttngSyntheticEvent) event; // process event SequenceInd indicator = synEvent.getSynType(); if (indicator == SequenceInd.BEFORE || indicator == SequenceInd.AFTER) { - processor.process(evt, synEvent.getTraceModel()); + processor.process(event, synEvent.getTraceModel()); } else if (indicator == SequenceInd.STARTREQ) { handleRequestStarted(); } else if (indicator == SequenceInd.ENDREQ) { - processor.process(evt, synEvent.getTraceModel()); + processor.process(event, synEvent.getTraceModel()); // handleCompleted(); } @@ -403,7 +406,7 @@ public abstract class AbsTimeUpdateView extends TmfView implements modelInputChanged(this, false); if (TraceDebug.isDEBUG()) { - frunningTimeStamp = evt.getTimestamp(); + frunningTimeStamp = event.getTimestamp(); TraceDebug.debug("handled: " + fCount + " sequence: " + synEvent.getSynType()); } diff --git a/org.eclipse.linuxtools.lttng.ui/src/org/eclipse/linuxtools/lttng/ui/views/histogram/HistogramRequest.java b/org.eclipse.linuxtools.lttng.ui/src/org/eclipse/linuxtools/lttng/ui/views/histogram/HistogramRequest.java index 4426326b5a..c21816d19f 100644 --- a/org.eclipse.linuxtools.lttng.ui/src/org/eclipse/linuxtools/lttng/ui/views/histogram/HistogramRequest.java +++ b/org.eclipse.linuxtools.lttng.ui/src/org/eclipse/linuxtools/lttng/ui/views/histogram/HistogramRequest.java @@ -80,11 +80,15 @@ public class HistogramRequest extends TmfEventRequest { * HandleData function : will be called by TMF each time a new event is receive for the request.

* Calculation for the content is done here. */ - @Override - public void handleData() { - LttngEvent[] result = getData(); - LttngEvent event = (result.length > 0) ? result[0] : null; +// @Override +// public void handleData() { +// LttngEvent[] result = getData(); +// LttngEvent event = (result.length > 0) ? result[0] : null; + @Override + public void handleData(LttngEvent event) { + super.handleData(event); + // *** FIXME *** // *** EVIL BUG *** // The request by timerange only does not work! (see constructor above) @@ -93,23 +97,21 @@ public class HistogramRequest extends TmfEventRequest { // if (event != null) { - LttngEvent tmpEvent = (LttngEvent) event; - // Tracer.trace("Hst: " + event.getTimestamp()); // This check is linked to the evil fix mentionned above - if ( ( tmpEvent.getTimestamp().getValue() >= parentCanvas.getHistogramContent().getStartTime() ) && - ( tmpEvent.getTimestamp().getValue() <= parentCanvas.getHistogramContent().getEndTime() ) ) + if ( ( event.getTimestamp().getValue() >= parentCanvas.getHistogramContent().getStartTime() ) && + ( event.getTimestamp().getValue() <= parentCanvas.getHistogramContent().getEndTime() ) ) { // Distance (in time) between this event and the last one we read - long distance = ( tmpEvent.getTimestamp().getValue() - lastRangeTime ); + long distance = ( event.getTimestamp().getValue() - lastRangeTime ); // Check if we changed of interval (the distance is higher than the interval time) if ( distance > parentCanvas.getHistogramContent().getElementsTimeInterval() ) { parentCanvas.getHistogramContent().getElementByIndex(lastInterval).intervalNbEvents = nbEventsInInterval; - lastRangeTime = tmpEvent.getTimestamp().getValue(); + lastRangeTime = event.getTimestamp().getValue(); // * NOTE * // We can skip several interval at once, so we need to find what was our interval now diff --git a/org.eclipse.linuxtools.lttng/ChangeLog b/org.eclipse.linuxtools.lttng/ChangeLog index b501636cb1..ea0cb071bd 100644 --- a/org.eclipse.linuxtools.lttng/ChangeLog +++ b/org.eclipse.linuxtools.lttng/ChangeLog @@ -1,3 +1,12 @@ +2010-09-17 Francois Chouinard + + * src/org/eclipse/linuxtools/lttng/control/LttngSyntheticEventProvider.java: Adjusted to new handleData() API + * src/org/eclipse/linuxtools/lttng/event/LttngEvent.java: Adjusted to new handleData() API + * src/org/eclipse/linuxtools/lttng/request/LttngSyntEventRequest.java: Adjusted to new handleData() API + * src/org/eclipse/linuxtools/lttng/state/experiment/StateExperimentManager.java: Adjusted to new handleData() API + * src/org/eclipse/linuxtools/lttng/state/trace/StateTraceManager.java: Adjusted to new handleData() API + * src/org/eclipse/linuxtools/lttng/trace/LTTngTrace.java: Adjusted to new handleData() API + 2010-09-15 Francois Chouinard * src/org/eclipse/linuxtools/lttng/trace/LTTngExperiment.java: ExecutionType update diff --git a/org.eclipse.linuxtools.lttng/src/org/eclipse/linuxtools/lttng/control/LttngSyntheticEventProvider.java b/org.eclipse.linuxtools.lttng/src/org/eclipse/linuxtools/lttng/control/LttngSyntheticEventProvider.java index 4af8017b7a..821c6c8ab2 100644 --- a/org.eclipse.linuxtools.lttng/src/org/eclipse/linuxtools/lttng/control/LttngSyntheticEventProvider.java +++ b/org.eclipse.linuxtools.lttng/src/org/eclipse/linuxtools/lttng/control/LttngSyntheticEventProvider.java @@ -51,10 +51,10 @@ public class LttngSyntheticEventProvider extends TmfEventProvider fExtProvider = null; private ITmfDataRequest fmainRequest = null; @@ -64,7 +64,8 @@ public class LttngSyntheticEventProvider extends TmfEventProvider request) { + public ITmfContext armRequest( + final ITmfDataRequest request) { // validate // make sure we have the right type of request if (!(request instanceof ITmfEventRequest)) { @@ -136,7 +141,8 @@ public class LttngSyntheticEventProvider extends TmfEventProvider 0) { - handleIncomingData(events[0]); + public void handleData(LttngEvent event) { + super.handleData(event); + if (event != null) { + handleIncomingData(event); } else { TraceDebug.debug("handle data received with no data"); - // handleProviderDone(getTraceModel()); - // done(); } } - /* * (non-Javadoc) * @@ -200,10 +199,9 @@ public class LttngSyntheticEventProvider extends TmfEventProvider inTrace = e.getParentTrace(); + TmfTrace inTrace = e.getParentTrace(); if (!(inTrace == getTrace())) { - // System.out.println("Event from a different trace discarded"); return; } - + // queue the new event data and an ACK updateSynEvent(e); // If time at or above requested time, update application if (eventTime >= fDispatchTime) { - // Load synthetic event as the result data - fresult[0] = syntheticEvent; - - // BEFORE UPDATE : update to the before state-update handlers + // Before update syntheticEvent.setSequenceInd(SequenceInd.BEFORE); - // queueResult(syntheticEvent); - // queueResult(syntheticAckIndicator); - fmainRequest.setData(fresult); - fmainRequest.handleData(); - // result[0] = syntheticAckIndicator; - // fmainRequest.setData(result); - // fmainRequest.handleData(); - - // STATE UPDATE: local handlers + fmainRequest.handleData(syntheticEvent); + fmainRequest.handleData(syntheticAckIndicator); + + // Update state locally syntheticEvent.setSequenceInd(SequenceInd.UPDATE); fstateUpdateProcessor.process(syntheticEvent, fTraceModel); - // AFTER UPDATE: update to the after state-update handlers + // After Update syntheticEvent.setSequenceInd(SequenceInd.AFTER); - // queueResult(syntheticEvent); - // queueResult(syntheticAckIndicator); - fmainRequest.setData(fresult); - fmainRequest.handleData(); - // result[0] = syntheticAckIndicator; - // fmainRequest.setData(result); - // fmainRequest.handleData(); + fmainRequest.handleData(syntheticEvent); + fmainRequest.handleData(syntheticAckIndicator); // increment once per dispatch incrementSynEvenCount(); @@ -264,16 +248,18 @@ public class LttngSyntheticEventProvider extends TmfEventProvider) traceModel.getContext().getTraceIdRef()); - finishEvent.setSequenceInd(SequenceInd.ENDREQ); - finishEvent.setTraceModel(traceModel); - - LttngSyntheticEvent[] result = new LttngSyntheticEvent[1]; - // End Request indication - result[0] = finishEvent; - fmainRequest.setData(result); - fmainRequest.handleData(); - - // // End Request processed indication - // result[0] = fStatusEventAck; - // fmainRequest.setData(result); - // fmainRequest.handleData(); - } + // All sub-requests are marked completed so the main request can be + // completed as well + // Notify application, + LttngSyntheticEvent finishEvent = new LttngSyntheticEvent(fStatusEvent); + finishEvent.setSequenceInd(SequenceInd.ENDREQ); + finishEvent.setTraceModel(traceModel); - // All sub-requests are marked completed so the main request can be completed as well + fmainRequest.handleData(finishEvent); + fmainRequest.handleData(fStatusEventAck); fmainRequest.done(); - - // try { - // queueResult(finishEvent); - // queueResult(fStatusEventAck); - // // End the loop in the main request - // queueResult(LttngSyntheticEvent.NullEvent); - // } catch (InterruptedException e) { - // // System.out.println(getName() + - // // ":handleProviderDone() failed to queue request"); - // // TODO: Cancel the request - // // e.printStackTrace(); - // } } /** @@ -453,18 +399,21 @@ public class LttngSyntheticEventProvider extends TmfEventProvider) { + if (experiment != null + && experiment.getValue() instanceof TmfExperiment) { fExperiment = experiment; } else { TraceDebug - .debug("Experiment received is not instance of TmfExperiment: " + experiment.getClass().getName()); + .debug("Experiment received is not instance of TmfExperiment: " + + experiment.getClass().getName()); } } /* * (non-Javadoc) * - * @see org.eclipse.linuxtools.tmf.component.TmfDataProvider#sendRequest(org. + * @see + * org.eclipse.linuxtools.tmf.component.TmfDataProvider#sendRequest(org. * eclipse.linuxtools.tmf.request.TmfDataRequest) */ @Override @@ -504,14 +453,4 @@ public class LttngSyntheticEventProvider extends TmfEventProvider TmfTimeRange experimentTimeRange, ITransEventProcessor processor, ExecutionType execType) { super(LttngSyntheticEvent.class, range, nbEvents, maxBlockSize, execType); - //super(0, nbEvents, maxBlockSize); fExperimentTimeRange = experimentTimeRange; addListener(listener); @@ -170,7 +169,8 @@ public class LttngSyntEventRequest extends TmfEventRequest * @see org.eclipse.linuxtools.lttng.request.ILttngEventRequest#handleData() */ @Override - public void handleData() { + public void handleData(LttngSyntheticEvent event) { + super.handleData(event); } diff --git a/org.eclipse.linuxtools.lttng/src/org/eclipse/linuxtools/lttng/state/experiment/StateExperimentManager.java b/org.eclipse.linuxtools.lttng/src/org/eclipse/linuxtools/lttng/state/experiment/StateExperimentManager.java index e490a47e05..e240ba891c 100644 --- a/org.eclipse.linuxtools.lttng/src/org/eclipse/linuxtools/lttng/state/experiment/StateExperimentManager.java +++ b/org.eclipse.linuxtools.lttng/src/org/eclipse/linuxtools/lttng/state/experiment/StateExperimentManager.java @@ -203,22 +203,6 @@ public class StateExperimentManager extends LTTngTreeNode implements // trigger data request to build the state system check points fStateCheckPointRequest = buildCheckPoints(experiment); - -// LTTngTreeNode experimentNode = getChildByName(experiment.getName()); -// if (experimentNode != null) { -// // get the trace manager nodes -// LTTngTreeNode[] traceNodes = experimentNode.getChildren(); -// for (LTTngTreeNode traceStateManagerNode : traceNodes) { -// // The trace node needs to perform its first data request -// // for this experiment with the main goal of building its -// // checkpoints -// if (traceStateManagerNode instanceof ILttExperimentSelectedListener) { -// // no need to provide the trace to the trace manager -// ((ILttExperimentSelectedListener) traceStateManagerNode).experimentUpdated( -// new TmfExperimentUpdatedSignal(source, experiment, null), fwaitForCompletion); -// } -// } -// } } /* @@ -338,15 +322,10 @@ public class StateExperimentManager extends LTTngTreeNode implements * org.eclipse.linuxtools.tmf.request.TmfDataRequest#handleData() */ @Override - public void handleData() { - LttngEvent[] events = getData(); - if (events.length > 0) { - nbEvents++; - - LttngEvent event = (LttngEvent) events[0]; - + public void handleData(LttngEvent event) { + super.handleData(event); + if (event != null) { // Tracer.trace("Chk: " + event.getTimestamp()); - ITmfTrace trace = event.getParentTrace(); IStateTraceManager traceManager = ftraceToManagerMap.get(getTraceKey(trace)); if (traceManager != null) { @@ -400,9 +379,6 @@ public class StateExperimentManager extends LTTngTreeNode implements * @param header */ private void printCompletedMessage() { -// System.out.println(System.currentTimeMillis() + ": StateExperimentManager completed checkpoints"); - - // super.handleCompleted(); if (TraceDebug.isDEBUG()) { TraceDebug.debug("Trace check point building completed, number of events handled: " + nbEvents + "\n\t\t"); diff --git a/org.eclipse.linuxtools.lttng/src/org/eclipse/linuxtools/lttng/state/trace/StateTraceManager.java b/org.eclipse.linuxtools.lttng/src/org/eclipse/linuxtools/lttng/state/trace/StateTraceManager.java index 094aeb9a12..b26a519add 100644 --- a/org.eclipse.linuxtools.lttng/src/org/eclipse/linuxtools/lttng/state/trace/StateTraceManager.java +++ b/org.eclipse.linuxtools.lttng/src/org/eclipse/linuxtools/lttng/state/trace/StateTraceManager.java @@ -351,12 +351,10 @@ public class StateTraceManager extends LTTngTreeNode implements IStateTraceManag * () */ @Override - public void handleData() { - LttngSyntheticEvent[] result = getData(); - - evt[0] = (result.length > 0) ? result[0] : null; - if (evt[0] != null) { - synEvent = (LttngSyntheticEvent) evt[0]; + public void handleData(LttngSyntheticEvent event) { + super.handleData(event); + if (event != null) { + synEvent = event; if (synEvent.getSynType() == SequenceInd.AFTER) { // Note : We call this function before incrementing // eventCount to save a default check point at the "0th" diff --git a/org.eclipse.linuxtools.lttng/src/org/eclipse/linuxtools/lttng/trace/LTTngTrace.java b/org.eclipse.linuxtools.lttng/src/org/eclipse/linuxtools/lttng/trace/LTTngTrace.java index d91baac99e..e2ec6e456f 100644 --- a/org.eclipse.linuxtools.lttng/src/org/eclipse/linuxtools/lttng/trace/LTTngTrace.java +++ b/org.eclipse.linuxtools.lttng/src/org/eclipse/linuxtools/lttng/trace/LTTngTrace.java @@ -58,11 +58,11 @@ public class LTTngTrace extends TmfTrace { // // [lmcfrch] // private long lastTime = 0; - public static boolean printDebug = false; + public static boolean printDebug = false; public static boolean uniqueEvent = false; private final static boolean SHOW_LTT_DEBUG_DEFAULT = false; - private final static boolean IS_PARSING_NEEDED_DEFAULT = true; + private final static boolean IS_PARSING_NEEDED_DEFAULT = !uniqueEvent; private final static int CHECKPOINT_PAGE_SIZE = 1000; // Reference to our JNI trace diff --git a/org.eclipse.linuxtools.tmf.tests/src/org/eclipse/linuxtools/tmf/tests/component/TmfEventProviderTest.java b/org.eclipse.linuxtools.tmf.tests/src/org/eclipse/linuxtools/tmf/tests/component/TmfEventProviderTest.java index 8e354a648e..abbfcd2c2f 100644 --- a/org.eclipse.linuxtools.tmf.tests/src/org/eclipse/linuxtools/tmf/tests/component/TmfEventProviderTest.java +++ b/org.eclipse.linuxtools.tmf.tests/src/org/eclipse/linuxtools/tmf/tests/component/TmfEventProviderTest.java @@ -96,14 +96,12 @@ public class TmfEventProviderTest extends TestCase { TmfTimeRange range = new TmfTimeRange(TmfTimestamp.BigBang, TmfTimestamp.BigCrunch); final TmfEventRequest request = new TmfEventRequest(TmfEvent.class, range, NB_EVENTS, BLOCK_SIZE) { - @Override - public void handleData() { - TmfEvent[] events = getData(); - for (TmfEvent e : events) { - requestedEvents.add(e); - } - } - }; + @Override + public void handleData(TmfEvent event) { + super.handleData(event); + requestedEvents.add(event); + } + }; provider.sendRequest(request); try { request.waitForCompletion(); @@ -132,13 +130,11 @@ public class TmfEventProviderTest extends TestCase { final TmfEventRequest request = new TmfEventRequest(TmfSyntheticEventStub.class, range, nbEvents, blockSize) { - @Override - public void handleData() { - TmfSyntheticEventStub[] events = getData(); - for (TmfSyntheticEventStub e : events) { - requestedEvents.add(e); - } - } + @Override + public void handleData(TmfSyntheticEventStub event) { + super.handleData(event); + requestedEvents.add(event); + } }; provider.sendRequest(request); @@ -203,7 +199,6 @@ public class TmfEventProviderTest extends TestCase { TmfTimeRange range = new TmfTimeRange(start, end); try { getSyntheticData(range, -1, TmfSyntheticEventProviderStub.BLOCK_SIZE); -// System.out.println("aie"); } catch (InterruptedException e) { fail(); } diff --git a/org.eclipse.linuxtools.tmf.tests/src/org/eclipse/linuxtools/tmf/tests/experiment/TmfExperimentTest.java b/org.eclipse.linuxtools.tmf.tests/src/org/eclipse/linuxtools/tmf/tests/experiment/TmfExperimentTest.java index dcb6f90434..589eac0a6c 100644 --- a/org.eclipse.linuxtools.tmf.tests/src/org/eclipse/linuxtools/tmf/tests/experiment/TmfExperimentTest.java +++ b/org.eclipse.linuxtools.tmf.tests/src/org/eclipse/linuxtools/tmf/tests/experiment/TmfExperimentTest.java @@ -563,11 +563,9 @@ public class TmfExperimentTest extends TestCase { TmfTimeRange range = new TmfTimeRange(TmfTimestamp.BigBang, TmfTimestamp.BigCrunch); final TmfEventRequest request = new TmfEventRequest(TmfEvent.class, range, nbEvents, blockSize) { @Override - public void handleData() { - TmfEvent[] events = getData(); - for (TmfEvent e : events) { - requestedEvents.add(e); - } + public void handleData(TmfEvent event) { + super.handleData(event); + requestedEvents.add(event); } }; fExperiment.sendRequest(request); @@ -592,13 +590,11 @@ public class TmfExperimentTest extends TestCase { TmfTimeRange range = new TmfTimeRange(TmfTimestamp.BigBang, TmfTimestamp.BigCrunch); final TmfEventRequest request = new TmfEventRequest(TmfEvent.class, range, nbEvents, blockSize) { - @Override - public void handleData() { - TmfEvent[] events = getData(); - for (TmfEvent e : events) { - requestedEvents.add(e); - } - } + @Override + public void handleData(TmfEvent event) { + super.handleData(event); + requestedEvents.add(event); + } }; fExperiment.sendRequest(request); request.waitForCompletion(); @@ -623,13 +619,11 @@ public class TmfExperimentTest extends TestCase { TmfTimeRange range = new TmfTimeRange(TmfTimestamp.BigBang, TmfTimestamp.BigCrunch); final TmfEventRequest request = new TmfEventRequest(TmfEvent.class, range, nbEvents, blockSize) { - @Override - public void handleData() { - TmfEvent[] events = getData(); - for (TmfEvent e : events) { - requestedEvents.add(e); - } - } + @Override + public void handleData(TmfEvent event) { + super.handleData(event); + requestedEvents.add(event); + } }; fExperiment.sendRequest(request); request.waitForCompletion(); @@ -657,15 +651,14 @@ public class TmfExperimentTest extends TestCase { TmfTimeRange range = new TmfTimeRange(TmfTimestamp.BigBang, TmfTimestamp.BigCrunch); final TmfEventRequest request = new TmfEventRequest(TmfEvent.class, range, nbEvents, blockSize) { - @Override - public void handleData() { - TmfEvent[] events = getData(); - for (TmfEvent e : events) { - requestedEvents.add(e); - } - // Cancel request after the first chunk is received - cancel(); - } + int nbRead = 0; + @Override + public void handleData(TmfEvent event) { + super.handleData(event); + requestedEvents.add(event); + if (++nbRead == blockSize) + cancel(); + } @Override public void handleCancel() { if (requestedEvents.size() < blockSize) { diff --git a/org.eclipse.linuxtools.tmf.tests/src/org/eclipse/linuxtools/tmf/tests/experiment/TmfMultiTraceExperimentTest.java b/org.eclipse.linuxtools.tmf.tests/src/org/eclipse/linuxtools/tmf/tests/experiment/TmfMultiTraceExperimentTest.java index 739ad21bd9..a573bf19cc 100644 --- a/org.eclipse.linuxtools.tmf.tests/src/org/eclipse/linuxtools/tmf/tests/experiment/TmfMultiTraceExperimentTest.java +++ b/org.eclipse.linuxtools.tmf.tests/src/org/eclipse/linuxtools/tmf/tests/experiment/TmfMultiTraceExperimentTest.java @@ -566,13 +566,11 @@ public class TmfMultiTraceExperimentTest extends TestCase { TmfTimeRange range = new TmfTimeRange(TmfTimestamp.BigBang, TmfTimestamp.BigCrunch); final TmfEventRequest request = new TmfEventRequest(TmfEvent.class, range, nbEvents, blockSize) { - @Override - public void handleData() { - TmfEvent[] events = getData(); - for (TmfEvent e : events) { - requestedEvents.add(e); - } - } + @Override + public void handleData(TmfEvent event) { + super.handleData(event); + requestedEvents.add(event); + } }; fExperiment.sendRequest(request); request.waitForCompletion(); @@ -596,13 +594,11 @@ public class TmfMultiTraceExperimentTest extends TestCase { TmfTimeRange range = new TmfTimeRange(TmfTimestamp.BigBang, TmfTimestamp.BigCrunch); final TmfEventRequest request = new TmfEventRequest(TmfEvent.class, range, nbEvents, blockSize) { - @Override - public void handleData() { - TmfEvent[] events = getData(); - for (TmfEvent e : events) { - requestedEvents.add(e); - } - } + @Override + public void handleData(TmfEvent event) { + super.handleData(event); + requestedEvents.add(event); + } }; fExperiment.sendRequest(request); request.waitForCompletion(); @@ -627,13 +623,11 @@ public class TmfMultiTraceExperimentTest extends TestCase { TmfTimeRange range = new TmfTimeRange(TmfTimestamp.BigBang, TmfTimestamp.BigCrunch); final TmfEventRequest request = new TmfEventRequest(TmfEvent.class, range, nbEvents, blockSize) { - @Override - public void handleData() { - TmfEvent[] events = getData(); - for (TmfEvent e : events) { - requestedEvents.add(e); - } - } + @Override + public void handleData(TmfEvent event) { + super.handleData(event); + requestedEvents.add(event); + } }; fExperiment.sendRequest(request); request.waitForCompletion(); @@ -661,15 +655,14 @@ public class TmfMultiTraceExperimentTest extends TestCase { TmfTimeRange range = new TmfTimeRange(TmfTimestamp.BigBang, TmfTimestamp.BigCrunch); final TmfEventRequest request = new TmfEventRequest(TmfEvent.class, range, nbEvents, blockSize) { - @Override - public void handleData() { - TmfEvent[] events = getData(); - for (TmfEvent e : events) { - requestedEvents.add(e); - } - // Cancel request after the first chunk is received - cancel(); - } + int nbRead = 0; + @Override + public void handleData(TmfEvent event) { + super.handleData(event); + requestedEvents.add(event); + if (++nbRead == blockSize) + cancel(); + } @Override public void handleCancel() { if (requestedEvents.size() < blockSize) { diff --git a/org.eclipse.linuxtools.tmf.tests/src/org/eclipse/linuxtools/tmf/tests/request/TmfCoalescedDataRequestTest.java b/org.eclipse.linuxtools.tmf.tests/src/org/eclipse/linuxtools/tmf/tests/request/TmfCoalescedDataRequestTest.java index 3187347c12..a0ddf94611 100644 --- a/org.eclipse.linuxtools.tmf.tests/src/org/eclipse/linuxtools/tmf/tests/request/TmfCoalescedDataRequestTest.java +++ b/org.eclipse.linuxtools.tmf.tests/src/org/eclipse/linuxtools/tmf/tests/request/TmfCoalescedDataRequestTest.java @@ -16,10 +16,6 @@ package org.eclipse.linuxtools.tmf.tests.request; import junit.framework.TestCase; import org.eclipse.linuxtools.tmf.event.TmfEvent; -import org.eclipse.linuxtools.tmf.event.TmfEventReference; -import org.eclipse.linuxtools.tmf.event.TmfEventSource; -import org.eclipse.linuxtools.tmf.event.TmfEventType; -import org.eclipse.linuxtools.tmf.event.TmfTimestamp; import org.eclipse.linuxtools.tmf.request.TmfCoalescedDataRequest; import org.eclipse.linuxtools.tmf.request.TmfDataRequest; import org.eclipse.linuxtools.tmf.request.TmfDataRequestStub; @@ -112,7 +108,6 @@ public class TmfCoalescedDataRequestTest extends TestCase { assertEquals("getIndex", 0, request.getIndex()); assertEquals("getNbRequestedEvents", TmfDataRequest.ALL_DATA, request.getNbRequested()); - assertEquals("getBlockize", TmfDataRequest.DEFAULT_BLOCK_SIZE, request.getBlockize()); assertFalse("isCompleted", request.isCompleted()); assertFalse("isFailed", request.isFailed()); @@ -129,7 +124,6 @@ public class TmfCoalescedDataRequestTest extends TestCase { assertEquals("getIndex", 10, request.getIndex()); assertEquals("getNbRequestedEvents", TmfDataRequest.ALL_DATA, request.getNbRequested()); - assertEquals("getBlockize", TmfDataRequest.DEFAULT_BLOCK_SIZE, request.getBlockize()); assertFalse("isCompleted", request.isCompleted()); assertFalse("isFailed", request.isFailed()); @@ -146,7 +140,6 @@ public class TmfCoalescedDataRequestTest extends TestCase { assertEquals("getIndex", 10, request.getIndex()); assertEquals("getNbRequestedEvents", 100, request.getNbRequested()); - assertEquals("getBlockize", TmfDataRequest.DEFAULT_BLOCK_SIZE, request.getBlockize()); assertFalse("isCompleted", request.isCompleted()); assertFalse("isFailed", request.isFailed()); @@ -163,7 +156,6 @@ public class TmfCoalescedDataRequestTest extends TestCase { assertEquals("getIndex", 10, request.getIndex()); assertEquals("getNbRequestedEvents", 100, request.getNbRequested()); - assertEquals("getBlockize", 200, request.getBlockize()); assertFalse("isCompleted", request.isCompleted()); assertFalse("isFailed", request.isFailed()); @@ -220,10 +212,10 @@ public class TmfCoalescedDataRequestTest extends TestCase { // ------------------------------------------------------------------------ public void testToString() { - String expected1 = "[TmfCoalescedDataRequest(0,TmfEvent,10,100,200)]"; - String expected2 = "[TmfCoalescedDataRequest(1,TmfEvent,20,100,200)]"; - String expected3 = "[TmfCoalescedDataRequest(2,TmfEvent,20,200,200)]"; - String expected4 = "[TmfCoalescedDataRequest(3,TmfEvent,20,200,300)]"; + String expected1 = "[TmfCoalescedDataRequest(0,TmfEvent,10,100)]"; + String expected2 = "[TmfCoalescedDataRequest(1,TmfEvent,20,100)]"; + String expected3 = "[TmfCoalescedDataRequest(2,TmfEvent,20,200)]"; + String expected4 = "[TmfCoalescedDataRequest(3,TmfEvent,20,200)]"; assertEquals("toString", expected1, fRequest1.toString()); assertEquals("toString", expected2, fRequest2.toString()); @@ -240,60 +232,10 @@ public class TmfCoalescedDataRequestTest extends TestCase { TmfDataRequest request1 = new TmfDataRequestStub(TmfEvent.class, 10, 100, 200); TmfDataRequest request2 = new TmfDataRequestStub(TmfEvent.class, 11, 100, 200); TmfDataRequest request3 = new TmfDataRequestStub(TmfEvent.class, 10, 101, 200); - TmfDataRequest request4 = new TmfDataRequestStub(TmfEvent.class, 10, 100, 201); assertTrue ("isCompatible", coalescedRequest.isCompatible(request1)); assertFalse("isCompatible", coalescedRequest.isCompatible(request2)); assertFalse("isCompatible", coalescedRequest.isCompatible(request3)); - assertFalse("isCompatible", coalescedRequest.isCompatible(request4)); - } - - // ------------------------------------------------------------------------ - // setData/getData - // ------------------------------------------------------------------------ - - public void testSetData() { - - TmfCoalescedDataRequest coalescedRequest = new TmfCoalescedDataRequest(TmfEvent.class, 10, 100, 200); - TmfDataRequest request1 = new TmfDataRequestStub(TmfEvent.class, 10, 100, 200); - TmfDataRequest request2 = new TmfDataRequestStub(TmfEvent.class, 10, 100, 200); - coalescedRequest.addRequest(request1); - coalescedRequest.addRequest(request2); - - // Initialize the data - int nbEvents = 10; - TmfEvent[] events = new TmfEvent[nbEvents]; - for (int i = 0; i < nbEvents; i++) { - events[i] = new TmfEvent(new TmfTimestamp(i), new TmfEventSource(), - new TmfEventType(), new TmfEventReference()); - } - - coalescedRequest.setData(events); - coalescedRequest.handleData(); - - // Validate the coalescing request - assertEquals("setData", nbEvents, coalescedRequest.getNbRead()); - TmfEvent[] eventsRead1 = coalescedRequest.getData(); - assertEquals("getData", nbEvents, eventsRead1.length); - for (int i = 0; i < nbEvents; i++) { - assertEquals("getData", i, eventsRead1[i].getTimestamp().getValue()); - } - - // Validate the first coalesced request - assertEquals("setData", nbEvents, request1.getNbRead()); - TmfEvent[] eventsRead2 = request1.getData(); - assertEquals("getData", nbEvents, eventsRead2.length); - for (int i = 0; i < nbEvents; i++) { - assertEquals("getData", i, eventsRead2[i].getTimestamp().getValue()); - } - - // Validate the second coalesced request - assertEquals("setData", nbEvents, request2.getNbRead()); - TmfEvent[] eventsRead3 = request2.getData(); - assertEquals("getData", nbEvents, eventsRead3.length); - for (int i = 0; i < nbEvents; i++) { - assertEquals("getData", i, eventsRead3[i].getTimestamp().getValue()); - } } // ------------------------------------------------------------------------ diff --git a/org.eclipse.linuxtools.tmf.tests/src/org/eclipse/linuxtools/tmf/tests/request/TmfCoalescedEventRequestTest.java b/org.eclipse.linuxtools.tmf.tests/src/org/eclipse/linuxtools/tmf/tests/request/TmfCoalescedEventRequestTest.java index 95ff324f8b..b044ccb823 100644 --- a/org.eclipse.linuxtools.tmf.tests/src/org/eclipse/linuxtools/tmf/tests/request/TmfCoalescedEventRequestTest.java +++ b/org.eclipse.linuxtools.tmf.tests/src/org/eclipse/linuxtools/tmf/tests/request/TmfCoalescedEventRequestTest.java @@ -25,15 +25,10 @@ import org.eclipse.core.runtime.Path; import org.eclipse.linuxtools.tmf.component.ITmfDataProvider; import org.eclipse.linuxtools.tmf.component.TmfProviderManager; import org.eclipse.linuxtools.tmf.event.TmfEvent; -import org.eclipse.linuxtools.tmf.event.TmfEventReference; -import org.eclipse.linuxtools.tmf.event.TmfEventSource; -import org.eclipse.linuxtools.tmf.event.TmfEventType; import org.eclipse.linuxtools.tmf.event.TmfTimeRange; import org.eclipse.linuxtools.tmf.event.TmfTimestamp; import org.eclipse.linuxtools.tmf.request.TmfCoalescedDataRequest; import org.eclipse.linuxtools.tmf.request.TmfCoalescedEventRequest; -import org.eclipse.linuxtools.tmf.request.TmfDataRequest; -import org.eclipse.linuxtools.tmf.request.TmfDataRequestStub; import org.eclipse.linuxtools.tmf.request.TmfEventRequest; import org.eclipse.linuxtools.tmf.request.TmfEventRequestStub; import org.eclipse.linuxtools.tmf.signal.TmfSignal; @@ -133,7 +128,6 @@ public class TmfCoalescedEventRequestTest extends TestCase { assertEquals("getRange", range1, request.getRange()); assertEquals("getNbRequestedEvents", TmfEventRequest.ALL_DATA, request.getNbRequested()); - assertEquals("getBlockize", TmfEventRequest.DEFAULT_BLOCK_SIZE, request.getBlockize()); assertFalse("isCompleted", request.isCompleted()); assertFalse("isFailed", request.isFailed()); @@ -150,7 +144,6 @@ public class TmfCoalescedEventRequestTest extends TestCase { assertEquals("getRange", range1, request.getRange()); assertEquals("getNbRequestedEvents", TmfEventRequest.ALL_DATA, request.getNbRequested()); - assertEquals("getBlockize", TmfEventRequest.DEFAULT_BLOCK_SIZE, request.getBlockize()); assertFalse("isCompleted", request.isCompleted()); assertFalse("isFailed", request.isFailed()); @@ -167,7 +160,6 @@ public class TmfCoalescedEventRequestTest extends TestCase { assertEquals("getRange", range1, request.getRange()); assertEquals("getNbRequestedEvents", 100, request.getNbRequested()); - assertEquals("getBlockize", TmfEventRequest.DEFAULT_BLOCK_SIZE, request.getBlockize()); assertFalse("isCompleted", request.isCompleted()); assertFalse("isFailed", request.isFailed()); @@ -184,7 +176,6 @@ public class TmfCoalescedEventRequestTest extends TestCase { assertEquals("getRange", range1, request.getRange()); assertEquals("getNbRequestedEvents", 100, request.getNbRequested()); - assertEquals("getBlockize", 200, request.getBlockize()); assertFalse("isCompleted", request.isCompleted()); assertFalse("isFailed", request.isFailed()); @@ -228,11 +219,11 @@ public class TmfCoalescedEventRequestTest extends TestCase { public void testEqualsSuper() throws Exception { TmfCoalescedDataRequest dataRequest1 = new TmfCoalescedDataRequest( - fRequest1.getDataType(), fRequest1.getIndex(), fRequest1.getNbRequested(), fRequest1.getBlockize()); + fRequest1.getDataType(), fRequest1.getIndex(), fRequest1.getNbRequested()); TmfCoalescedDataRequest dataRequest2 = new TmfCoalescedDataRequest( - fRequest1.getDataType(), fRequest1.getIndex(), fRequest1.getNbRequested(), fRequest1.getBlockize()); + fRequest1.getDataType(), fRequest1.getIndex(), fRequest1.getNbRequested()); TmfCoalescedDataRequest dataRequest3 = new TmfCoalescedDataRequest( - fRequest3.getDataType(), fRequest3.getIndex(), fRequest3.getNbRequested(), fRequest3.getBlockize()); + fRequest3.getDataType(), fRequest3.getIndex(), fRequest3.getNbRequested()); assertTrue("equals", fRequest1.equals(dataRequest2)); assertTrue("equals", fRequest2.equals(dataRequest1)); @@ -255,10 +246,10 @@ public class TmfCoalescedEventRequestTest extends TestCase { // ------------------------------------------------------------------------ public void testToString() { - String expected1 = "[TmfCoalescedEventRequest(0,TmfEvent," + range1 + ",100,200)]"; - String expected2 = "[TmfCoalescedEventRequest(1,TmfEvent," + range2 + ",100,200)]"; - String expected3 = "[TmfCoalescedEventRequest(2,TmfEvent," + range2 + ",200,200)]"; - String expected4 = "[TmfCoalescedEventRequest(3,TmfEvent," + range2 + ",200,300)]"; + String expected1 = "[TmfCoalescedEventRequest(0,TmfEvent," + range1 + ",100)]"; + String expected2 = "[TmfCoalescedEventRequest(1,TmfEvent," + range2 + ",100)]"; + String expected3 = "[TmfCoalescedEventRequest(2,TmfEvent," + range2 + ",200)]"; + String expected4 = "[TmfCoalescedEventRequest(3,TmfEvent," + range2 + ",200)]"; assertEquals("toString", expected1, fRequest1.toString()); assertEquals("toString", expected2, fRequest2.toString()); @@ -275,62 +266,10 @@ public class TmfCoalescedEventRequestTest extends TestCase { TmfEventRequest request1 = new TmfEventRequestStub(TmfEvent.class, range1, 100, 200); TmfEventRequest request2 = new TmfEventRequestStub(TmfEvent.class, range2, 100, 200); TmfEventRequest request3 = new TmfEventRequestStub(TmfEvent.class, range1, 101, 200); - TmfEventRequest request4 = new TmfEventRequestStub(TmfEvent.class, range1, 100, 201); - TmfDataRequest request5 = new TmfDataRequestStub (TmfEvent.class, 10, 100, 201); assertTrue ("isCompatible", coalescedRequest.isCompatible(request1)); assertTrue ("isCompatible", coalescedRequest.isCompatible(request2)); assertFalse("isCompatible", coalescedRequest.isCompatible(request3)); - assertFalse("isCompatible", coalescedRequest.isCompatible(request4)); - assertFalse("isCompatible", coalescedRequest.isCompatible(request5)); - } - - // ------------------------------------------------------------------------ - // setData/getData - // ------------------------------------------------------------------------ - - public void testSetData() { - - TmfCoalescedEventRequest coalescedRequest = new TmfCoalescedEventRequest(TmfEvent.class, range1, 100, 200); - TmfEventRequest request1 = new TmfEventRequestStub(TmfEvent.class, range1, 100, 200); - TmfEventRequest request2 = new TmfEventRequestStub(TmfEvent.class, range1, 100, 200); - coalescedRequest.addRequest(request1); - coalescedRequest.addRequest(request2); - - // Initialize the data - int nbEvents = 10; - TmfEvent[] events = new TmfEvent[nbEvents]; - for (int i = 0; i < nbEvents; i++) { - events[i] = new TmfEvent(new TmfTimestamp(i), new TmfEventSource(), - new TmfEventType(), new TmfEventReference()); - } - - coalescedRequest.setData(events); - coalescedRequest.handleData(); - - // Validate the coalescing request - assertEquals("setData", nbEvents, coalescedRequest.getNbRead()); - TmfEvent[] eventsRead1 = coalescedRequest.getData(); - assertEquals("getData", nbEvents, eventsRead1.length); - for (int i = 0; i < nbEvents; i++) { - assertEquals("getData", i, eventsRead1[i].getTimestamp().getValue()); - } - - // Validate the first coalesced request - assertEquals("setData", nbEvents, request1.getNbRead()); - TmfEvent[] eventsRead2 = request1.getData(); - assertEquals("getData", nbEvents, eventsRead2.length); - for (int i = 0; i < nbEvents; i++) { - assertEquals("getData", i, eventsRead2[i].getTimestamp().getValue()); - } - - // Validate the second coalesced request - assertEquals("setData", nbEvents, request2.getNbRead()); - TmfEvent[] eventsRead3 = request2.getData(); - assertEquals("getData", nbEvents, eventsRead3.length); - for (int i = 0; i < nbEvents; i++) { - assertEquals("getData", i, eventsRead3[i].getTimestamp().getValue()); - } } // ------------------------------------------------------------------------ @@ -499,14 +438,13 @@ public class TmfCoalescedEventRequestTest extends TestCase { requestedEvents1 = new Vector(); request1 = new TmfEventRequest(TmfEvent.class, range, NB_EVENTS, BLOCK_SIZE) { + int nbRead = 0; @Override - public void handleData() { + public void handleData(TmfEvent event) { + super.handleData(event); if (!isCompleted()) { - TmfEvent[] events = getData(); - for (TmfEvent e : events) { - requestedEvents1.add(e); - } - if (signal.forceCancel) + requestedEvents1.add(event); + if (++nbRead >= BLOCK_SIZE && signal.forceCancel) cancel(); } } @@ -515,12 +453,10 @@ public class TmfCoalescedEventRequestTest extends TestCase { requestedEvents2 = new Vector(); request2 = new TmfEventRequest(TmfEvent.class, range, NB_EVENTS, BLOCK_SIZE) { @Override - public void handleData() { + public void handleData(TmfEvent event) { + super.handleData(event); if (!isCompleted()) { - TmfEvent[] events = getData(); - for (TmfEvent e : events) { - requestedEvents2.add(e); - } + requestedEvents2.add(event); } } }; @@ -528,12 +464,10 @@ public class TmfCoalescedEventRequestTest extends TestCase { requestedEvents3 = new Vector(); request3 = new TmfEventRequest(TmfEvent.class, range, NB_EVENTS, BLOCK_SIZE) { @Override - public void handleData() { + public void handleData(TmfEvent event) { + super.handleData(event); if (!isCompleted()) { - TmfEvent[] events = getData(); - for (TmfEvent e : events) { - requestedEvents3.add(e); - } + requestedEvents3.add(event); } } }; diff --git a/org.eclipse.linuxtools.tmf.tests/src/org/eclipse/linuxtools/tmf/tests/request/TmfDataRequestTest.java b/org.eclipse.linuxtools.tmf.tests/src/org/eclipse/linuxtools/tmf/tests/request/TmfDataRequestTest.java index 33c332598d..eb662dc83b 100644 --- a/org.eclipse.linuxtools.tmf.tests/src/org/eclipse/linuxtools/tmf/tests/request/TmfDataRequestTest.java +++ b/org.eclipse.linuxtools.tmf.tests/src/org/eclipse/linuxtools/tmf/tests/request/TmfDataRequestTest.java @@ -15,10 +15,6 @@ package org.eclipse.linuxtools.tmf.tests.request; import junit.framework.TestCase; import org.eclipse.linuxtools.tmf.event.TmfEvent; -import org.eclipse.linuxtools.tmf.event.TmfEventReference; -import org.eclipse.linuxtools.tmf.event.TmfEventSource; -import org.eclipse.linuxtools.tmf.event.TmfEventType; -import org.eclipse.linuxtools.tmf.event.TmfTimestamp; import org.eclipse.linuxtools.tmf.request.TmfDataRequest; import org.eclipse.linuxtools.tmf.request.TmfDataRequestStub; @@ -107,7 +103,6 @@ public class TmfDataRequestTest extends TestCase { assertEquals("getIndex", 0, request.getIndex()); assertEquals("getNbRequestedEvents", TmfDataRequest.ALL_DATA, request.getNbRequested()); - assertEquals("getBlockize", TmfDataRequest.DEFAULT_BLOCK_SIZE, request.getBlockize()); assertFalse("isCompleted", request.isCompleted()); assertFalse("isFailed", request.isFailed()); @@ -124,7 +119,6 @@ public class TmfDataRequestTest extends TestCase { assertEquals("getIndex", 10, request.getIndex()); assertEquals("getNbRequestedEvents", TmfDataRequest.ALL_DATA, request.getNbRequested()); - assertEquals("getBlockize", TmfDataRequest.DEFAULT_BLOCK_SIZE, request.getBlockize()); assertFalse("isCompleted", request.isCompleted()); assertFalse("isFailed", request.isFailed()); @@ -141,7 +135,6 @@ public class TmfDataRequestTest extends TestCase { assertEquals("getIndex", 10, request.getIndex()); assertEquals("getNbRequestedEvents", 100, request.getNbRequested()); - assertEquals("getBlockize", TmfDataRequest.DEFAULT_BLOCK_SIZE, request.getBlockize()); assertFalse("isCompleted", request.isCompleted()); assertFalse("isFailed", request.isFailed()); @@ -158,7 +151,6 @@ public class TmfDataRequestTest extends TestCase { assertEquals("getIndex", 10, request.getIndex()); assertEquals("getNbRequestedEvents", 100, request.getNbRequested()); - assertEquals("getBlockize", 200, request.getBlockize()); assertFalse("isCompleted", request.isCompleted()); assertFalse("isFailed", request.isFailed()); @@ -215,10 +207,10 @@ public class TmfDataRequestTest extends TestCase { // ------------------------------------------------------------------------ public void testToString() { - String expected1 = "[TmfDataRequest(0,TmfEvent,10,100,200)]"; - String expected2 = "[TmfDataRequest(1,TmfEvent,20,100,200)]"; - String expected3 = "[TmfDataRequest(2,TmfEvent,20,200,200)]"; - String expected4 = "[TmfDataRequest(3,TmfEvent,20,200,300)]"; + String expected1 = "[TmfDataRequest(0,TmfEvent,10,100)]"; + String expected2 = "[TmfDataRequest(1,TmfEvent,20,100)]"; + String expected3 = "[TmfDataRequest(2,TmfEvent,20,200)]"; + String expected4 = "[TmfDataRequest(3,TmfEvent,20,200)]"; assertEquals("toString", expected1, fRequest1.toString()); assertEquals("toString", expected2, fRequest2.toString()); @@ -226,30 +218,6 @@ public class TmfDataRequestTest extends TestCase { assertEquals("toString", expected4, fRequest4.toString()); } - // ------------------------------------------------------------------------ - // setData/getData - // ------------------------------------------------------------------------ - - public void testSetData() { - // Initialize the data - int nbEvents = 10; - TmfEvent[] events = new TmfEvent[nbEvents]; - for (int i = 0; i < nbEvents; i++) { - events[i] = new TmfEvent(new TmfTimestamp(i), new TmfEventSource(), - new TmfEventType(), new TmfEventReference()); - } - - fRequest1.setData(events); - assertEquals("setData", nbEvents, fRequest1.getNbRead()); - - TmfEvent[] eventsRead = fRequest1.getData(); - assertEquals("getData", nbEvents, eventsRead.length); - - for (int i = 0; i < nbEvents; i++) { - assertEquals("getData", i, eventsRead[i].getTimestamp().getValue()); - } - } - // ------------------------------------------------------------------------ // done // ------------------------------------------------------------------------ diff --git a/org.eclipse.linuxtools.tmf.tests/src/org/eclipse/linuxtools/tmf/tests/request/TmfEventRequestTest.java b/org.eclipse.linuxtools.tmf.tests/src/org/eclipse/linuxtools/tmf/tests/request/TmfEventRequestTest.java index 189bd32ad5..0761a6fbf1 100644 --- a/org.eclipse.linuxtools.tmf.tests/src/org/eclipse/linuxtools/tmf/tests/request/TmfEventRequestTest.java +++ b/org.eclipse.linuxtools.tmf.tests/src/org/eclipse/linuxtools/tmf/tests/request/TmfEventRequestTest.java @@ -15,9 +15,6 @@ package org.eclipse.linuxtools.tmf.tests.request; import junit.framework.TestCase; import org.eclipse.linuxtools.tmf.event.TmfEvent; -import org.eclipse.linuxtools.tmf.event.TmfEventReference; -import org.eclipse.linuxtools.tmf.event.TmfEventSource; -import org.eclipse.linuxtools.tmf.event.TmfEventType; import org.eclipse.linuxtools.tmf.event.TmfTimeRange; import org.eclipse.linuxtools.tmf.event.TmfTimestamp; import org.eclipse.linuxtools.tmf.request.TmfDataRequest; @@ -115,7 +112,6 @@ public class TmfEventRequestTest extends TestCase { assertEquals("getIndex", 0, request.getIndex()); assertEquals("getNbRequestedEvents", TmfDataRequest.ALL_DATA, request.getNbRequested()); - assertEquals("getBlockize", TmfDataRequest.DEFAULT_BLOCK_SIZE, request.getBlockize()); assertFalse("isCompleted", request.isCompleted()); assertFalse("isFailed", request.isFailed()); @@ -136,7 +132,6 @@ public class TmfEventRequestTest extends TestCase { assertEquals("getIndex", 0, request.getIndex()); assertEquals("getNbRequestedEvents", TmfDataRequest.ALL_DATA, request.getNbRequested()); - assertEquals("getBlockize", TmfDataRequest.DEFAULT_BLOCK_SIZE, request.getBlockize()); assertFalse("isCompleted", request.isCompleted()); assertFalse("isFailed", request.isFailed()); @@ -157,7 +152,6 @@ public class TmfEventRequestTest extends TestCase { assertEquals("getIndex", 0, request.getIndex()); assertEquals("getNbRequestedEvents", 100, request.getNbRequested()); - assertEquals("getBlockize", TmfDataRequest.DEFAULT_BLOCK_SIZE, request.getBlockize()); assertFalse("isCompleted", request.isCompleted()); assertFalse("isFailed", request.isFailed()); @@ -178,7 +172,6 @@ public class TmfEventRequestTest extends TestCase { assertEquals("getIndex", 0, request.getIndex()); assertEquals("getNbRequestedEvents", 100, request.getNbRequested()); - assertEquals("getBlockize", 200, request.getBlockize()); assertFalse("isCompleted", request.isCompleted()); assertFalse("isFailed", request.isFailed()); @@ -235,10 +228,10 @@ public class TmfEventRequestTest extends TestCase { // ------------------------------------------------------------------------ public void testToString() { - String expected1 = "[TmfEventRequest(0,TmfEvent," + range1 + ",100,200)]"; - String expected2 = "[TmfEventRequest(1,TmfEvent," + range2 + ",100,200)]"; - String expected3 = "[TmfEventRequest(2,TmfEvent," + range2 + ",200,200)]"; - String expected4 = "[TmfEventRequest(3,TmfEvent," + range2 + ",200,300)]"; + String expected1 = "[TmfEventRequest(0,TmfEvent," + range1 + ",100)]"; + String expected2 = "[TmfEventRequest(1,TmfEvent," + range2 + ",100)]"; + String expected3 = "[TmfEventRequest(2,TmfEvent," + range2 + ",200)]"; + String expected4 = "[TmfEventRequest(3,TmfEvent," + range2 + ",200)]"; assertEquals("toString", expected1, fRequest1.toString()); assertEquals("toString", expected2, fRequest2.toString()); @@ -246,30 +239,6 @@ public class TmfEventRequestTest extends TestCase { assertEquals("toString", expected4, fRequest4.toString()); } - // ------------------------------------------------------------------------ - // setData/getData - // ------------------------------------------------------------------------ - - public void testSetData() { - // Initialize the data - int nbEvents = 10; - TmfEvent[] events = new TmfEvent[nbEvents]; - for (int i = 0; i < nbEvents; i++) { - events[i] = new TmfEvent(new TmfTimestamp(i), new TmfEventSource(), - new TmfEventType(), new TmfEventReference()); - } - - fRequest1.setData(events); - assertEquals("setData", nbEvents, fRequest1.getNbRead()); - - TmfEvent[] eventsRead = fRequest1.getData(); - assertEquals("getData", nbEvents, eventsRead.length); - - for (int i = 0; i < nbEvents; i++) { - assertEquals("getData", i, eventsRead[i].getTimestamp().getValue()); - } - } - // ------------------------------------------------------------------------ // done // ------------------------------------------------------------------------ diff --git a/org.eclipse.linuxtools.tmf.tests/src/org/eclipse/linuxtools/tmf/tests/trace/TmfExperimentTest.java b/org.eclipse.linuxtools.tmf.tests/src/org/eclipse/linuxtools/tmf/tests/trace/TmfExperimentTest.java index 8359a4d03a..b6ae97ae2d 100644 --- a/org.eclipse.linuxtools.tmf.tests/src/org/eclipse/linuxtools/tmf/tests/trace/TmfExperimentTest.java +++ b/org.eclipse.linuxtools.tmf.tests/src/org/eclipse/linuxtools/tmf/tests/trace/TmfExperimentTest.java @@ -517,13 +517,11 @@ public class TmfExperimentTest extends TestCase { TmfTimeRange range = new TmfTimeRange(TmfTimestamp.BigBang, TmfTimestamp.BigCrunch); final TmfEventRequest request = new TmfEventRequest(TmfEvent.class, range, nbEvents, blockSize) { - @Override - public void handleData() { - TmfEvent[] events = getData(); - for (TmfEvent e : events) { - requestedEvents.add(e); - } - } + @Override + public void handleData(TmfEvent event) { + super.handleData(event); + requestedEvents.add(event); + } }; fExperiment.sendRequest(request); request.waitForCompletion(); @@ -546,13 +544,11 @@ public class TmfExperimentTest extends TestCase { TmfTimeRange range = new TmfTimeRange(TmfTimestamp.BigBang, TmfTimestamp.BigCrunch); final TmfEventRequest request = new TmfEventRequest(TmfEvent.class, range, nbEvents, blockSize) { - @Override - public void handleData() { - TmfEvent[] events = getData(); - for (TmfEvent e : events) { - requestedEvents.add(e); - } - } + @Override + public void handleData(TmfEvent event) { + super.handleData(event); + requestedEvents.add(event); + } }; fExperiment.sendRequest(request); request.waitForCompletion(); @@ -576,13 +572,11 @@ public class TmfExperimentTest extends TestCase { TmfTimeRange range = new TmfTimeRange(TmfTimestamp.BigBang, TmfTimestamp.BigCrunch); final TmfEventRequest request = new TmfEventRequest(TmfEvent.class, range, nbEvents, blockSize) { - @Override - public void handleData() { - TmfEvent[] events = getData(); - for (TmfEvent e : events) { - requestedEvents.add(e); - } - } + @Override + public void handleData(TmfEvent event) { + super.handleData(event); + requestedEvents.add(event); + } }; fExperiment.sendRequest(request); request.waitForCompletion(); @@ -609,15 +603,14 @@ public class TmfExperimentTest extends TestCase { TmfTimeRange range = new TmfTimeRange(TmfTimestamp.BigBang, TmfTimestamp.BigCrunch); final TmfEventRequest request = new TmfEventRequest(TmfEvent.class, range, nbEvents, blockSize) { - @Override - public void handleData() { - TmfEvent[] events = getData(); - for (TmfEvent e : events) { - requestedEvents.add(e); - } - // Cancel request after the first chunk is received - cancel(); - } + int nbRead = 0; + @Override + public void handleData(TmfEvent event) { + super.handleData(event); + requestedEvents.add(event); + if (++nbRead == blockSize) + cancel(); + } }; fExperiment.sendRequest(request); request.waitForCompletion(); diff --git a/org.eclipse.linuxtools.tmf.tests/src/org/eclipse/linuxtools/tmf/tests/trace/TmfTraceTest.java b/org.eclipse.linuxtools.tmf.tests/src/org/eclipse/linuxtools/tmf/tests/trace/TmfTraceTest.java index 8f3ce4903c..f3cb23e8ae 100644 --- a/org.eclipse.linuxtools.tmf.tests/src/org/eclipse/linuxtools/tmf/tests/trace/TmfTraceTest.java +++ b/org.eclipse.linuxtools.tmf.tests/src/org/eclipse/linuxtools/tmf/tests/trace/TmfTraceTest.java @@ -69,7 +69,8 @@ public class TmfTraceTest extends TestCase { // Dummy request to force the trace indexing TmfEventRequest request = new TmfEventRequest(TmfEvent.class) { @Override - public void handleData() { + public void handleData(TmfEvent event) { + super.handleData(event); } }; fTrace.sendRequest(request); @@ -705,13 +706,11 @@ public class TmfTraceTest extends TestCase { TmfTimeRange range = new TmfTimeRange(TmfTimestamp.BigBang, TmfTimestamp.BigCrunch); final TmfEventRequest request = new TmfEventRequest(TmfEvent.class, range, NB_EVENTS, BLOCK_SIZE) { - @Override - public void handleData() { - TmfEvent[] events = getData(); - for (TmfEvent e : events) { - requestedEvents.add(e); - } - } + @Override + public void handleData(TmfEvent event) { + super.handleData(event); + requestedEvents.add(event); + } }; ITmfDataProvider[] providers = (ITmfDataProvider[]) TmfProviderManager.getProviders(TmfEvent.class, TmfTraceStub.class); providers[0].sendRequest(request); @@ -735,13 +734,11 @@ public class TmfTraceTest extends TestCase { TmfTimeRange range = new TmfTimeRange(TmfTimestamp.BigBang, TmfTimestamp.BigCrunch); final TmfEventRequest request = new TmfEventRequest(TmfEvent.class, range, NB_EVENTS, BLOCK_SIZE) { - @Override - public void handleData() { - TmfEvent[] events = getData(); - for (TmfEvent e : events) { - requestedEvents.add(e); - } - } + @Override + public void handleData(TmfEvent event) { + super.handleData(event); + requestedEvents.add(event); + } }; ITmfDataProvider[] providers = (ITmfDataProvider[]) TmfProviderManager.getProviders(TmfEvent.class, TmfTraceStub.class); providers[0].sendRequest(request); @@ -768,15 +765,14 @@ public class TmfTraceTest extends TestCase { TmfTimeRange range = new TmfTimeRange(TmfTimestamp.BigBang, TmfTimestamp.BigCrunch); final TmfEventRequest request = new TmfEventRequest(TmfEvent.class, range, NB_EVENTS, BLOCK_SIZE) { - @Override - public void handleData() { - TmfEvent[] events = getData(); - for (TmfEvent e : events) { - requestedEvents.add(e); - } - // Cancel request after the first chunk is received - cancel(); - } + int nbRead = 0; + @Override + public void handleData(TmfEvent event) { + super.handleData(event); + requestedEvents.add(event); + if (++nbRead == BLOCK_SIZE) + cancel(); + } }; ITmfDataProvider[] providers = (ITmfDataProvider[]) TmfProviderManager.getProviders(TmfEvent.class, TmfTraceStub.class); providers[0].sendRequest(request); diff --git a/org.eclipse.linuxtools.tmf.tests/stubs/org/eclipse/linuxtools/tmf/component/TmfSyntheticEventProviderStub.java b/org.eclipse.linuxtools.tmf.tests/stubs/org/eclipse/linuxtools/tmf/component/TmfSyntheticEventProviderStub.java index 6de6d76363..c5d6eb1a8a 100644 --- a/org.eclipse.linuxtools.tmf.tests/stubs/org/eclipse/linuxtools/tmf/component/TmfSyntheticEventProviderStub.java +++ b/org.eclipse.linuxtools.tmf.tests/stubs/org/eclipse/linuxtools/tmf/component/TmfSyntheticEventProviderStub.java @@ -55,17 +55,14 @@ public class TmfSyntheticEventProviderStub extends TmfEventProvider subRequest = new TmfEventRequest(TmfEvent.class, range, NB_EVENTS, BLOCK_SIZE) { - @Override - public void handleData() { - TmfEvent[] events = getData(); - if (events.length > 0) { - for (TmfEvent e : events) { - handleIncomingData(e); - } - } else { - request.done(); - } - } + @Override + public void handleData(TmfEvent event) { + super.handleData(event); + if (event != null) + handleIncomingData(event); + else + request.done(); + } }; provider.sendRequest(subRequest); diff --git a/org.eclipse.linuxtools.tmf.tests/stubs/org/eclipse/linuxtools/tmf/request/TmfDataRequestStub.java b/org.eclipse.linuxtools.tmf.tests/stubs/org/eclipse/linuxtools/tmf/request/TmfDataRequestStub.java index f5630a4596..bdf585f760 100644 --- a/org.eclipse.linuxtools.tmf.tests/stubs/org/eclipse/linuxtools/tmf/request/TmfDataRequestStub.java +++ b/org.eclipse.linuxtools.tmf.tests/stubs/org/eclipse/linuxtools/tmf/request/TmfDataRequestStub.java @@ -53,8 +53,8 @@ public class TmfDataRequestStub extends TmfDataRequest { } @Override - public void handleData() { - // TODO Auto-generated method stub + public void handleData(T data) { + super.handleData(data); } } diff --git a/org.eclipse.linuxtools.tmf.tests/stubs/org/eclipse/linuxtools/tmf/request/TmfEventRequestStub.java b/org.eclipse.linuxtools.tmf.tests/stubs/org/eclipse/linuxtools/tmf/request/TmfEventRequestStub.java index 4c7f74dae7..73991de92e 100644 --- a/org.eclipse.linuxtools.tmf.tests/stubs/org/eclipse/linuxtools/tmf/request/TmfEventRequestStub.java +++ b/org.eclipse.linuxtools.tmf.tests/stubs/org/eclipse/linuxtools/tmf/request/TmfEventRequestStub.java @@ -54,7 +54,7 @@ public class TmfEventRequestStub extends TmfEventRequest } @Override - public void handleData() { - // TODO Auto-generated method stub + public void handleData(T data) { + super.handleData(data); } } diff --git a/org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/tmf/ui/viewers/events/TmfEventsTable.java b/org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/tmf/ui/viewers/events/TmfEventsTable.java index e6448957d9..7be6eb6d15 100644 --- a/org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/tmf/ui/viewers/events/TmfEventsTable.java +++ b/org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/tmf/ui/viewers/events/TmfEventsTable.java @@ -144,17 +144,33 @@ public class TmfEventsTable extends TmfComponent { return; } + fCacheStartIndex = index; + fCacheEndIndex = index; + TmfDataRequest request = new TmfDataRequest(TmfEvent.class, index, fCacheSize) { - @Override - public void handleData() { - TmfEvent[] tmpEvent = getData(); - if ((tmpEvent != null) && (tmpEvent.length > 0)) { - fCache = tmpEvent; - fCacheStartIndex = index; - fCacheEndIndex = index + tmpEvent.length; +// @Override +// public void handleData() { +// TmfEvent[] tmpEvent = getData(); +// if ((tmpEvent != null) && (tmpEvent.length > 0)) { +// fCache = tmpEvent; +// fCacheStartIndex = index; +// fCacheEndIndex = index + tmpEvent.length; +// } +// } + + private int count = 0; + + @Override + public void handleData(TmfEvent event) { + super.handleData(event); + if (event != null) { + fCache[count++] = event.clone(); + fCacheEndIndex++; } } + }; + ((ITmfDataProvider) fTrace).sendRequest(request); try { request.waitForCompletion(); diff --git a/org.eclipse.linuxtools.tmf/ChangeLog b/org.eclipse.linuxtools.tmf/ChangeLog index f332c8215a..884a10d9b1 100644 --- a/org.eclipse.linuxtools.tmf/ChangeLog +++ b/org.eclipse.linuxtools.tmf/ChangeLog @@ -1,3 +1,27 @@ +2010-09-17 Francois Chouinard + + * src/org/eclipse/linuxtools/tmf/component/TmfDataProvider.java: Adjusted to new handleData() API + * src/org/eclipse/linuxtools/tmf/component/TmfEventProvider.java: Adjusted to new handleData() API + * src/org/eclipse/linuxtools/tmf/event/TmfEvent.java: Support for single event + * src/org/eclipse/linuxtools/tmf/experiment/TmfExperiment.java: Adjusted to new handleData() API + * src/org/eclipse/linuxtools/tmf/request/ITmfDataRequest.java: Adjusted to new handleData() API + * src/org/eclipse/linuxtools/tmf/request/TmfCoalescedDataRequest.java: Adjusted to new handleData() API + * src/org/eclipse/linuxtools/tmf/request/TmfCoalescedEventRequest.java: Adjusted to new handleData() API + * src/org/eclipse/linuxtools/tmf/request/TmfDataRequest.java: Adjusted to new handleData() API + * src/org/eclipse/linuxtools/tmf/request/TmfEventRequest.java: Adjusted to new handleData() API + +2010-09-17 Francois Chouinard + + * src/org/eclipse/linuxtools/tmf/component/TmfDataProvider.java: Adjusted to new handleData() API + * src/org/eclipse/linuxtools/tmf/component/TmfEventProvider.java: Adjusted to new handleData() API + * src/org/eclipse/linuxtools/tmf/event/TmfEvent.java: Support for single event + * src/org/eclipse/linuxtools/tmf/experiment/TmfExperiment.java: Adjusted to new handleData() API + * src/org/eclipse/linuxtools/tmf/request/ITmfDataRequest.java: Adjusted to new handleData() API + * src/org/eclipse/linuxtools/tmf/request/TmfCoalescedDataRequest.java: Adjusted to new handleData() API + * src/org/eclipse/linuxtools/tmf/request/TmfCoalescedEventRequest.java: Adjusted to new handleData() API + * src/org/eclipse/linuxtools/tmf/request/TmfDataRequest.java: Adjusted to new handleData() API + * src/org/eclipse/linuxtools/tmf/request/TmfEventRequest.java: Adjusted to new handleData() API + 2010-09-15 Francois Chouinard * src/org/eclipse/linuxtools/tmf/experiment/TmfExperiment.java: Optimized TmfExperimentContext handling diff --git a/org.eclipse.linuxtools.tmf/src/org/eclipse/linuxtools/tmf/component/TmfDataProvider.java b/org.eclipse.linuxtools.tmf/src/org/eclipse/linuxtools/tmf/component/TmfDataProvider.java index 2af6b9f4f3..1e93feba1f 100644 --- a/org.eclipse.linuxtools.tmf/src/org/eclipse/linuxtools/tmf/component/TmfDataProvider.java +++ b/org.eclipse.linuxtools.tmf/src/org/eclipse/linuxtools/tmf/component/TmfDataProvider.java @@ -12,7 +12,6 @@ package org.eclipse.linuxtools.tmf.component; -import java.lang.reflect.Array; import java.util.Vector; import java.util.concurrent.BlockingQueue; import java.util.concurrent.LinkedBlockingQueue; @@ -159,8 +158,8 @@ public abstract class TmfDataProvider extends TmfComponent im protected void newCoalescedDataRequest(ITmfDataRequest request) { synchronized(fLock) { - TmfCoalescedDataRequest coalescedRequest = - new TmfCoalescedDataRequest(fType, request.getIndex(), request.getNbRequested(), request.getBlockize(), request.getExecType()); + TmfCoalescedDataRequest coalescedRequest = new TmfCoalescedDataRequest( + fType, request.getIndex(), request.getNbRequested(),request.getExecType()); coalescedRequest.addRequest(request); if (Tracer.isRequestTraced()) { Tracer.traceRequest(request, "coalesced with " + coalescedRequest.getRequestId()); @@ -204,7 +203,7 @@ public abstract class TmfDataProvider extends TmfComponent im return; } -// final TmfDataProvider provider = this; + final TmfDataProvider provider = this; // Process the request TmfThread thread = new TmfThread(request.getExecType()) { @@ -212,15 +211,11 @@ public abstract class TmfDataProvider extends TmfComponent im @Override public void run() { -// if (Tracer.isRequestTraced()) Tracer.traceRequest(request, "started"); + if (Tracer.isRequestTraced()) Tracer.traceRequest(request, "started"); // Extract the generic information request.start(); - int blockSize = request.getBlockize(); int nbRequested = request.getNbRequested(); - - // Create the result buffer - Vector result = new Vector(); int nbRead = 0; // Initialize the execution @@ -232,27 +227,22 @@ public abstract class TmfDataProvider extends TmfComponent im try { // Get the ordered events -// if (Tracer.isRequestTraced()) Tracer.trace("Request #" + request.getRequestId() + " is being serviced by " + provider.getName()); + if (Tracer.isRequestTraced()) Tracer.trace("Request #" + request.getRequestId() + " is being serviced by " + provider.getName()); T data = getNext(context); -// if (Tracer.isRequestTraced()) Tracer.trace("Request #" + request.getRequestId() + " read first event"); + if (Tracer.isRequestTraced()) Tracer.trace("Request #" + request.getRequestId() + " read first event"); while (data != null && !isCompleted(request, data, nbRead)) { -// if (fLogData) Tracer.traceEvent(provider, request, data); - result.add(data); - if (++nbRead % blockSize == 0) { - pushData(request, result); - } + if (fLogData) Tracer.traceEvent(provider, request, data); + request.handleData(data); + // To avoid an unnecessary read passed the last data requested - if (nbRead < nbRequested) { + if (++nbRead < nbRequested) { data = getNext(context); if (Tracer.isRequestTraced() && (data == null || data.isNullRef())) { Tracer.trace("Request #" + request.getRequestId() + " end of data"); } } } - if (result.size() > 0) { - pushData(request, result); - } request.done(); if (Tracer.isRequestTraced()) Tracer.traceRequest(request, "completed"); @@ -260,7 +250,6 @@ public abstract class TmfDataProvider extends TmfComponent im catch (Exception e) { if (Tracer.isRequestTraced()) Tracer.traceRequest(request, "exception (failed)"); request.fail(); -// e.printStackTrace(); } } }; @@ -275,26 +264,6 @@ public abstract class TmfDataProvider extends TmfComponent im queueRequest(request); } - /** - * Format the result data and forwards it to the requester. - * Note: after handling, the data is *removed*. - * - * @param request - * @param data - */ - @SuppressWarnings("unchecked") - protected void pushData(ITmfDataRequest request, Vector data) { - synchronized(request) { - if (!request.isCompleted()) { - T[] result = (T[]) Array.newInstance(fType, data.size()); - data.toArray(result); - request.setData(result); - request.handleData(); - data.removeAllElements(); - } - } - } - /** * Initialize the provider based on the request. The context is * provider specific and will be updated by getNext(). @@ -305,50 +274,6 @@ public abstract class TmfDataProvider extends TmfComponent im public abstract ITmfContext armRequest(ITmfDataRequest request); public abstract T getNext(ITmfContext context); -// public abstract void queueResult(T data); - - /** - * Return the next piece of data based on the context supplied. The context - * would typically be updated for the subsequent read. - * - * @param context - * @return - */ -// private static final int TIMEOUT = 10000; -//// public abstract T getNext(ITmfContext context) throws InterruptedException; -//// private int getLevel = 0; -// public T getNext(ITmfContext context) throws InterruptedException { -//// String name = Thread.currentThread().getName(); getLevel++; -//// System.out.println("[" + System.currentTimeMillis() + "] " + name + " " + (getLevel) + " getNext() - entering"); -// T data = fDataQueue.poll(TIMEOUT, TimeUnit.MILLISECONDS); -// if (data == null) { -//// if (Tracer.isErrorTraced()) Tracer.traceError(getName() + ": Request timeout on read"); -// throw new InterruptedException(); -// } -//// System.out.println("[" + System.currentTimeMillis() + "] " + name + " " + (getLevel) + " getNext() - leaving"); -//// getLevel--; -// return data; -// } -// -// /** -// * Makes the generated result data available for getNext() -// * -// * @param data -// */ -//// public abstract void queueResult(T data) throws InterruptedException; -//// private int putLevel = 0; -// public void queueResult(T data) throws InterruptedException { -//// String name = Thread.currentThread().getName(); putLevel++; -//// System.out.println("[" + System.currentTimeMillis() + "] " + name + " " + (putLevel) + " queueResult() - entering"); -// boolean ok = fDataQueue.offer(data, TIMEOUT, TimeUnit.MILLISECONDS); -// if (!ok) { -//// if (Tracer.isErrorTraced()) Tracer.traceError(getName() + ": Request timeout on write"); -// throw new InterruptedException(); -// } -//// System.out.println("[" + System.currentTimeMillis() + "] " + name + " " + (putLevel) + " queueResult() - leaving"); -//// putLevel--; -// } - /** * Checks if the data meets the request completion criteria. * diff --git a/org.eclipse.linuxtools.tmf/src/org/eclipse/linuxtools/tmf/component/TmfEventProvider.java b/org.eclipse.linuxtools.tmf/src/org/eclipse/linuxtools/tmf/component/TmfEventProvider.java index 6a14a5889e..420e7a803e 100644 --- a/org.eclipse.linuxtools.tmf/src/org/eclipse/linuxtools/tmf/component/TmfEventProvider.java +++ b/org.eclipse.linuxtools.tmf/src/org/eclipse/linuxtools/tmf/component/TmfEventProvider.java @@ -40,12 +40,12 @@ public abstract class TmfEventProvider extends TmfDataProvid @Override public boolean isCompleted(ITmfDataRequest request, T data, int nbRead) { - boolean dataRequestCompleted = super.isCompleted(request, data, nbRead); - if (!dataRequestCompleted && request instanceof ITmfEventRequest && !data.isNullRef()) { + boolean requestCompleted = super.isCompleted(request, data, nbRead); + if (!requestCompleted && request instanceof ITmfEventRequest && !data.isNullRef()) { TmfTimestamp endTime = ((ITmfEventRequest) request).getRange().getEndTime(); return data.getTimestamp().compareTo(endTime, false) > 0; } - return dataRequestCompleted; + return requestCompleted; } @Override @@ -53,7 +53,7 @@ public abstract class TmfEventProvider extends TmfDataProvid if (request instanceof ITmfEventRequest) { ITmfEventRequest eventRequest = (ITmfEventRequest) request; TmfCoalescedEventRequest coalescedRequest = - new TmfCoalescedEventRequest(fType, eventRequest.getRange(), eventRequest.getNbRequested(), eventRequest.getBlockize(), eventRequest.getExecType()); + new TmfCoalescedEventRequest(fType, eventRequest.getRange(), eventRequest.getNbRequested(), eventRequest.getExecType()); coalescedRequest.addRequest(eventRequest); if (Tracer.isRequestTraced()) { Tracer.traceRequest(request, "coalesced with " + coalescedRequest.getRequestId()); diff --git a/org.eclipse.linuxtools.tmf/src/org/eclipse/linuxtools/tmf/event/TmfEvent.java b/org.eclipse.linuxtools.tmf/src/org/eclipse/linuxtools/tmf/event/TmfEvent.java index ac2fafa548..78f682ebf5 100644 --- a/org.eclipse.linuxtools.tmf/src/org/eclipse/linuxtools/tmf/event/TmfEvent.java +++ b/org.eclipse.linuxtools.tmf/src/org/eclipse/linuxtools/tmf/event/TmfEvent.java @@ -29,7 +29,7 @@ package org.eclipse.linuxtools.tmf.event; * Notice that for performance reasons TmfEvent is NOT immutable. If a copy * of the event is needed, use the copy constructor. */ -public class TmfEvent extends TmfData { +public class TmfEvent extends TmfData implements Cloneable { // ------------------------------------------------------------------------ // Constants @@ -190,4 +190,9 @@ public class TmfEvent extends TmfData { return "[TmfEvent(" + fEffectiveTimestamp + "," + fSource + "," + fType + "," + fContent + ")]"; } + @Override + public TmfEvent clone() { + return new TmfEvent(this); + } + } diff --git a/org.eclipse.linuxtools.tmf/src/org/eclipse/linuxtools/tmf/experiment/TmfExperiment.java b/org.eclipse.linuxtools.tmf/src/org/eclipse/linuxtools/tmf/experiment/TmfExperiment.java index 825adb29ec..e787609100 100644 --- a/org.eclipse.linuxtools.tmf/src/org/eclipse/linuxtools/tmf/experiment/TmfExperiment.java +++ b/org.eclipse.linuxtools.tmf/src/org/eclipse/linuxtools/tmf/experiment/TmfExperiment.java @@ -636,7 +636,8 @@ public class TmfExperiment extends TmfEventProvider imple // fEventLog = openLogFile("TraceEvent.log"); // System.out.println(System.currentTimeMillis() + ": Experiment indexing started"); - ITmfEventRequest request = new TmfEventRequest(TmfEvent.class, TmfTimeRange.Eternity, TmfDataRequest.ALL_DATA, 1, ITmfDataRequest.ExecutionType.BACKGROUND) { + ITmfEventRequest request = new TmfEventRequest(TmfEvent.class, TmfTimeRange.Eternity, + TmfDataRequest.ALL_DATA, 1, ITmfDataRequest.ExecutionType.BACKGROUND) { // long indexingStart = System.nanoTime(); @@ -644,26 +645,15 @@ public class TmfExperiment extends TmfEventProvider imple TmfTimestamp lastTime = null; @Override - public void handleData() { - TmfEvent[] events = getData(); - if (events.length > 0) { - -// try { -// if (fEventLog != null) { -// fEventLog.write(events[0].getTimestamp().toString()); -// fEventLog.newLine(); -// fEventLog.flush(); -// } -// } catch (IOException e) { -// e.printStackTrace(); -// } - - TmfTimestamp ts = events[0].getTimestamp(); + public void handleData(TmfEvent event) { + super.handleData(event); + if (event != null) { + TmfTimestamp ts = event.getTimestamp(); if (startTime == null) startTime = new TmfTimestamp(ts); lastTime = new TmfTimestamp(ts); - if ((fNbRead % DEFAULT_INDEX_PAGE_SIZE) == 0) { + if ((getNbRead() % DEFAULT_INDEX_PAGE_SIZE) == 0) { updateExperiment(); } } @@ -671,33 +661,21 @@ public class TmfExperiment extends TmfEventProvider imple @Override public void handleSuccess() { - -// try { -// fEventLog.close(); -// fEventLog = null; -// } catch (IOException e) { -// e.printStackTrace(); -// } - // long indexingEnd = System.nanoTime(); updateExperiment(); // System.out.println(System.currentTimeMillis() + ": Experiment indexing completed"); -// + // long average = (indexingEnd - indexingStart) / fNbEvents; // System.out.println(getName() + ": start=" + startTime + ", end=" + lastTime + ", elapsed=" + (indexingEnd * 1.0 - indexingStart) / 1000000000); // System.out.println(getName() + ": nbEvents=" + fNbEvents + " (" + (average / 1000) + "." + (average % 1000) + " us/evt)"); - -// for (int i = 0; i < fCheckpoints.size(); i++) { -// TmfCheckpoint checkpoint = fCheckpoints.get(i); -// System.out.println("fCheckpoints[" + i + "] " + checkpoint.getTimestamp() + ", " + checkpoint.getLocation().toString()); -// } } private void updateExperiment() { - if (fNbRead != 0) { + int nbRead = getNbRead(); + if (nbRead != 0) { fTimeRange = new TmfTimeRange(startTime, new TmfTimestamp(lastTime)); - fNbEvents = fNbRead; + fNbEvents = nbRead; notifyListeners(); } } @@ -746,11 +724,6 @@ public class TmfExperiment extends TmfEventProvider imple broadcast(new TmfExperimentUpdatedSignal(this, this)); // , signal.getTrace())); } -// @Override -// public void queueResult(T data) { -//// super.queueResult(data); -// } - // ------------------------------------------------------------------------ // TmfDataProvider // ------------------------------------------------------------------------ @@ -787,35 +760,28 @@ public class TmfExperiment extends TmfEventProvider imple while (!isFinished[0]) { // TmfEventRequest subRequest = new TmfEventRequest(eventRequest.getDataType(), new TmfTimeRange(timestamp[0], endTS), CHUNK_SIZE[0], eventRequest.getBlockize(), ExecutionType.BACKGROUND) - TmfDataRequest subRequest = new TmfDataRequest(eventRequest.getDataType(), nbRead[0], CHUNK_SIZE[0], eventRequest.getBlockize(), ExecutionType.BACKGROUND) +// TmfDataRequest subRequest = new TmfDataRequest(eventRequest.getDataType(), nbRead[0], CHUNK_SIZE[0], eventRequest.getBlockize(), ExecutionType.BACKGROUND) + TmfDataRequest subRequest = new TmfDataRequest(eventRequest.getDataType(), nbRead[0], CHUNK_SIZE[0], ExecutionType.BACKGROUND) { -// int count = 0; @Override - public void handleData() { - T[] data = getData(); -// timestamp[0] = data[data.length-1].getTimestamp(); -// if (count == 0) { -// System.out.println("First event of the block: " + data[0].getTimestamp()); -// } -// count++; -// Tracer.trace("Ndx: " + ((TmfEvent) data[0]).getTimestamp()); - eventRequest.setData(data); - eventRequest.handleData(); - if (fNbRead == CHUNK_SIZE[0]) { - nbRead[0] += fNbRead; -// System.out.println("fNbRead=" + fNbRead + ", count=" + count +", total=" + nbRead[0] + ", TS=" + data[0].getTimestamp()); + public void handleData(T data) { + super.handleData(data); + eventRequest.handleData(data); + if (getNbRead() == CHUNK_SIZE[0]) { + nbRead[0] += getNbRead(); } - if (fNbRead > CHUNK_SIZE[0]) { + if (getNbRead() > CHUNK_SIZE[0]) { System.out.println("ERROR - Read too many events"); } } + @Override public void handleCompleted() { // System.out.println("Request completed at: " + timestamp[0]); - if (fNbRead < CHUNK_SIZE[0]) { + if (getNbRead() < CHUNK_SIZE[0]) { eventRequest.done(); isFinished[0] = Boolean.TRUE; - nbRead[0] += fNbRead; + nbRead[0] += getNbRead(); // System.out.println("fNbRead=" + fNbRead + ", count=" + count +", total=" + nbRead[0]); } super.handleCompleted(); diff --git a/org.eclipse.linuxtools.tmf/src/org/eclipse/linuxtools/tmf/request/ITmfDataRequest.java b/org.eclipse.linuxtools.tmf/src/org/eclipse/linuxtools/tmf/request/ITmfDataRequest.java index bdffa04509..7153383611 100644 --- a/org.eclipse.linuxtools.tmf/src/org/eclipse/linuxtools/tmf/request/ITmfDataRequest.java +++ b/org.eclipse.linuxtools.tmf/src/org/eclipse/linuxtools/tmf/request/ITmfDataRequest.java @@ -56,11 +56,6 @@ public interface ITmfDataRequest { */ public int getNbRequested(); - /** - * @return the block size - */ - public int getBlockize(); - /** * @return the number of events read so far */ @@ -79,9 +74,7 @@ public interface ITmfDataRequest { // Data handling // ------------------------------------------------------------------------ - public void setData(T[] data); - public T[] getData(); - public void handleData(); + public void handleData(T data); // ------------------------------------------------------------------------ // Request handling diff --git a/org.eclipse.linuxtools.tmf/src/org/eclipse/linuxtools/tmf/request/TmfCoalescedDataRequest.java b/org.eclipse.linuxtools.tmf/src/org/eclipse/linuxtools/tmf/request/TmfCoalescedDataRequest.java index 73ec5a7bfa..38383c04b1 100644 --- a/org.eclipse.linuxtools.tmf/src/org/eclipse/linuxtools/tmf/request/TmfCoalescedDataRequest.java +++ b/org.eclipse.linuxtools.tmf/src/org/eclipse/linuxtools/tmf/request/TmfCoalescedDataRequest.java @@ -88,13 +88,11 @@ public class TmfCoalescedDataRequest extends TmfDataRequest request) { + public boolean isCompatible(ITmfDataRequest request) { - boolean ok = !isCompleted(); - ok &= request.getIndex() == getIndex(); - ok &= request.getNbRequested() == getNbRequested(); - ok &= request.getBlockize() == getBlockize(); - ok &= request.getExecType() == getExecType(); + boolean ok = request.getIndex() == getIndex(); + ok &= request.getNbRequested() == getNbRequested(); + ok &= request.getExecType() == getExecType(); return ok; } @@ -104,15 +102,20 @@ public class TmfCoalescedDataRequest extends TmfDataRequest request : fRequests) { - request.setData(getData()); - request.handleData(); - } + public void handleData(T data) { + super.handleData(data); + // Don't call sub-requests handleData() unless this is a + // TmfCoalescedDataRequest; extended classes should call + // the sub-requests handleData(). + if (getClass() == TmfCoalescedDataRequest.class) { + for (ITmfDataRequest request : fRequests) { + request.handleData(data); + } + } } - @Override - public synchronized void done() { + @Override + public void done() { for (ITmfDataRequest request : fRequests) { request.done(); } @@ -120,7 +123,7 @@ public class TmfCoalescedDataRequest extends TmfDataRequest request : fRequests) { request.fail(); } @@ -128,7 +131,7 @@ public class TmfCoalescedDataRequest extends TmfDataRequest request : fRequests) { request.cancel(); } @@ -160,7 +163,7 @@ public class TmfCoalescedDataRequest extends TmfDataRequest extends TmfCoalescedDa public boolean isCompatible(ITmfDataRequest request) { if (request instanceof ITmfEventRequest) { boolean ok = getNbRequested() == request.getNbRequested(); - ok &= getBlockize() == request.getBlockize(); ok &= getExecType() == request.getExecType(); if (ok) { TmfTimestamp startTime = ((ITmfEventRequest) request).getRange().getStartTime(); @@ -110,22 +109,23 @@ public class TmfCoalescedEventRequest extends TmfCoalescedDa // ------------------------------------------------------------------------ @Override - public void handleData() { + public void handleData(T data) { + super.handleData(data); for (ITmfDataRequest request : fRequests) { - if (request instanceof TmfEventRequest) { - TmfEventRequest req = (TmfEventRequest) request; - T[] data = getData(); - TmfTimestamp ts = data[0].getTimestamp(); - if (data.length > 0 && req.getRange().contains(ts)) { - req.setData(data); - req.handleData(); - } - } - else { - TmfDataRequest req = (TmfDataRequest) request; - T[] data = getData(); - req.setData(data); - req.handleData(); + if (data == null) { + request.handleData(null); + } else { + if (request instanceof TmfEventRequest) { + TmfEventRequest req = (TmfEventRequest) request; + TmfTimestamp ts = data.getTimestamp(); + if (req.getRange().contains(ts)) { + req.handleData(data); + } + } + else { + TmfDataRequest req = (TmfDataRequest) request; + req.handleData(data); + } } } } @@ -166,7 +166,7 @@ public class TmfCoalescedEventRequest extends TmfCoalescedDa @Override public String toString() { return "[TmfCoalescedEventRequest(" + getRequestId() + "," + getDataType().getSimpleName() - + "," + getRange() + "," + getNbRequested() + "," + getBlockize() + ")]"; + + "," + getRange() + "," + getNbRequested() + ")]"; } } diff --git a/org.eclipse.linuxtools.tmf/src/org/eclipse/linuxtools/tmf/request/TmfDataRequest.java b/org.eclipse.linuxtools.tmf/src/org/eclipse/linuxtools/tmf/request/TmfDataRequest.java index 11aea3c7f8..b369a9a6d6 100644 --- a/org.eclipse.linuxtools.tmf/src/org/eclipse/linuxtools/tmf/request/TmfDataRequest.java +++ b/org.eclipse.linuxtools.tmf/src/org/eclipse/linuxtools/tmf/request/TmfDataRequest.java @@ -90,8 +90,7 @@ public abstract class TmfDataRequest implements ITmfDataReque private final int fRequestId; // A unique request ID private final int fIndex; // The index (rank) of the requested event private final int fNbRequested; // The number of requested events (ALL_DATA for all) - private final int fBlockSize; // The maximum number of events per chunk - protected int fNbRead; // The number of reads so far + private int fNbRead; // The number of reads so far private final Object lock; private boolean fRequestRunning = false; @@ -99,8 +98,6 @@ public abstract class TmfDataRequest implements ITmfDataReque private boolean fRequestFailed = false; private boolean fRequestCanceled = false; - private T[] fData; // Data object - // ------------------------------------------------------------------------ // Constructors // ------------------------------------------------------------------------ @@ -165,7 +162,6 @@ public abstract class TmfDataRequest implements ITmfDataReque fDataType = dataType; fIndex = index; fNbRequested = nbRequested; - fBlockSize = blockSize; fExecType = execType; fNbRead = 0; lock = new Object(); @@ -212,13 +208,6 @@ public abstract class TmfDataRequest implements ITmfDataReque return fNbRequested; } - /** - * @return the block size - */ - public int getBlockize() { - return fBlockSize; - } - /** * @return the number of events read so far */ @@ -268,20 +257,9 @@ public abstract class TmfDataRequest implements ITmfDataReque /** * Sets the data object to specified value. To be called by the * asynchronous method implementor. + * * @param data Data value to set. */ - public synchronized void setData(T[] data) { - fNbRead += data.length; - fData = data; - } - - /** - * Returns the data value, null if not set. - */ - public synchronized T[] getData() { - return fData; - } - /** * Handle a block of incoming data. This method is called every time * a block of data becomes available. @@ -295,9 +273,13 @@ public abstract class TmfDataRequest implements ITmfDataReque * (or a copy) if some persistence is needed between invocations. * - When there is no more data, done() is called. * - * @param events - an array of events + * @param events - an events */ - public abstract void handleData(); + public void handleData(T data) { + if (data != null) { + fNbRead++; + } + } public void handleStarted() { } @@ -356,7 +338,7 @@ public abstract class TmfDataRequest implements ITmfDataReque if (Tracer.isRequestTraced()) Tracer.traceRequest(this, "starting"); synchronized(lock) { fRequestRunning = true; - lock.notify(); + lock.notifyAll(); } handleStarted(); if (Tracer.isRequestTraced()) Tracer.traceRequest(this, "started"); @@ -373,7 +355,7 @@ public abstract class TmfDataRequest implements ITmfDataReque fRequestCompleted = true; } handleCompleted(); - lock.notify(); + lock.notifyAll(); } } @@ -421,7 +403,6 @@ public abstract class TmfDataRequest implements ITmfDataReque @Override public String toString() { return "[TmfDataRequest(" + fRequestId + "," + fDataType.getSimpleName() - + "," + fIndex + "," + fNbRequested + "," + fBlockSize + ")]"; + + "," + fIndex + "," + fNbRequested + ")]"; } - } diff --git a/org.eclipse.linuxtools.tmf/src/org/eclipse/linuxtools/tmf/request/TmfEventRequest.java b/org.eclipse.linuxtools.tmf/src/org/eclipse/linuxtools/tmf/request/TmfEventRequest.java index 66daa8e92a..05f75c8e0f 100644 --- a/org.eclipse.linuxtools.tmf/src/org/eclipse/linuxtools/tmf/request/TmfEventRequest.java +++ b/org.eclipse.linuxtools.tmf/src/org/eclipse/linuxtools/tmf/request/TmfEventRequest.java @@ -114,7 +114,7 @@ public abstract class TmfEventRequest extends TmfDataRequest @Override public String toString() { return "[TmfEventRequest(" + getRequestId() + "," + getDataType().getSimpleName() - + "," + getRange() + "," + getNbRequested() + "," + getBlockize() + ")]"; + + "," + getRange() + "," + getNbRequested() + ")]"; } } diff --git a/org.eclipse.linuxtools.tmf/src/org/eclipse/linuxtools/tmf/trace/TmfTrace.java b/org.eclipse.linuxtools.tmf/src/org/eclipse/linuxtools/tmf/trace/TmfTrace.java index 2d15f9f6a9..5788325e48 100644 --- a/org.eclipse.linuxtools.tmf/src/org/eclipse/linuxtools/tmf/trace/TmfTrace.java +++ b/org.eclipse.linuxtools.tmf/src/org/eclipse/linuxtools/tmf/trace/TmfTrace.java @@ -23,12 +23,6 @@ import org.eclipse.linuxtools.tmf.event.TmfTimeRange; import org.eclipse.linuxtools.tmf.event.TmfTimestamp; import org.eclipse.linuxtools.tmf.request.ITmfDataRequest; import org.eclipse.linuxtools.tmf.request.ITmfEventRequest; -import org.eclipse.linuxtools.tmf.request.TmfDataRequest; -import org.eclipse.linuxtools.tmf.request.TmfEventRequest; -import org.eclipse.linuxtools.tmf.request.ITmfDataRequest.ExecutionType; -import org.eclipse.linuxtools.tmf.signal.TmfSignalHandler; -import org.eclipse.linuxtools.tmf.signal.TmfTraceOpenedSignal; -import org.eclipse.linuxtools.tmf.signal.TmfTraceUpdatedSignal; /** * TmfTrace @@ -380,171 +374,73 @@ public abstract class TmfTrace extends TmfEventProvider i // Indexing // ------------------------------------------------------------------------ - /* - * The purpose of the index is to keep the information needed to rapidly - * restore the traces contexts at regular intervals (every INDEX_PAGE_SIZE - * event). - */ - - @SuppressWarnings("unchecked") - private void indexTrace(boolean waitForCompletion) { - - fCheckpoints.clear(); - - ITmfEventRequest request = new TmfEventRequest(TmfEvent.class, TmfTimeRange.Eternity, TmfDataRequest.ALL_DATA, 1, ITmfDataRequest.ExecutionType.BACKGROUND) { - - TmfTimestamp startTime = null; - TmfTimestamp lastTime = null; - - @Override - public void handleData() { - TmfEvent[] events = getData(); - if (events.length > 0) { - TmfTimestamp ts = events[0].getTimestamp(); - if (startTime == null) { - startTime = new TmfTimestamp(ts); - fStartTime = startTime; - } - lastTime = new TmfTimestamp(ts); - - if ((fNbRead % DEFAULT_INDEX_PAGE_SIZE) == 0) { - updateTraceData(); - } - } - } - - @Override - public void handleSuccess() { - updateTraceData(); - } - - private void updateTraceData() { - if (fNbRead != 0) { - fEndTime = new TmfTimestamp(lastTime); - fNbEvents = fNbRead; - notifyListeners(); - } - } - }; - - sendRequest((ITmfDataRequest) request); - if (waitForCompletion) - try { - request.waitForCompletion(); - } catch (InterruptedException e) { - e.printStackTrace(); - } - } +// /* +// * The purpose of the index is to keep the information needed to rapidly +// * restore the traces contexts at regular intervals (every INDEX_PAGE_SIZE +// * event). +// */ +// +// @SuppressWarnings({ "unchecked", "unused" }) +// private void indexTrace(boolean waitForCompletion) { +// +// fCheckpoints.clear(); +// +// ITmfEventRequest request = new TmfEventRequest(TmfEvent.class, TmfTimeRange.Eternity, TmfDataRequest.ALL_DATA, 1, ITmfDataRequest.ExecutionType.BACKGROUND) { +// +// TmfTimestamp startTime = null; +// TmfTimestamp lastTime = null; +// +// @Override +// public void handleData() { +// TmfEvent[] events = getData(); +// if (events.length > 0) { +// TmfTimestamp ts = events[0].getTimestamp(); +// if (startTime == null) { +// startTime = new TmfTimestamp(ts); +// fStartTime = startTime; +// } +// lastTime = new TmfTimestamp(ts); +// +// if ((fNbRead % DEFAULT_INDEX_PAGE_SIZE) == 0) { +// updateTraceData(); +// } +// } +// } +// +// @Override +// public void handleSuccess() { +// updateTraceData(); +// } +// +// private void updateTraceData() { +// if (fNbRead != 0) { +// fEndTime = new TmfTimestamp(lastTime); +// fNbEvents = fNbRead; +// notifyListeners(); +// } +// } +// }; +// +// sendRequest((ITmfDataRequest) request); +// if (waitForCompletion) +// try { +// request.waitForCompletion(); +// } catch (InterruptedException e) { +// e.printStackTrace(); +// } +// } - protected void notifyListeners() { - broadcast(new TmfTraceUpdatedSignal(this, this, new TmfTimeRange(fStartTime, fEndTime))); - } +// protected void notifyListeners() { +// broadcast(new TmfTraceUpdatedSignal(this, this, new TmfTimeRange(fStartTime, fEndTime))); +// } // ------------------------------------------------------------------------ // TmfDataProvider // ------------------------------------------------------------------------ - @Override - protected void queueBackgroundRequest(final ITmfDataRequest request, final int blockSize, final boolean indexing) { - - // TODO: Handle the data requests also... - if (!(request instanceof ITmfEventRequest)) { - super.queueRequest(request); - return; - } - final ITmfEventRequest eventRequest = (ITmfEventRequest) request; - - Thread thread = new Thread() { - @Override - public void run() { - -// final long requestStart = System.nanoTime(); - - final Integer[] CHUNK_SIZE = new Integer[1]; - CHUNK_SIZE[0] = blockSize + ((indexing) ? 1 : 0); - - final Integer[] nbRead = new Integer[1]; - nbRead[0] = 0; - -// final TmfTimestamp[] timestamp = new TmfTimestamp[1]; -// timestamp[0] = new TmfTimestamp(eventRequest.getRange().getStartTime()); -// final TmfTimestamp endTS = eventRequest.getRange().getEndTime(); - - final Boolean[] isFinished = new Boolean[1]; - isFinished[0] = Boolean.FALSE; - - while (!isFinished[0]) { - -// TmfEventRequest subRequest = new TmfEventRequest(eventRequest.getDataType(), new TmfTimeRange(timestamp[0], endTS), CHUNK_SIZE[0], eventRequest.getBlockize(), ExecutionType.BACKGROUND) - TmfDataRequest subRequest = new TmfDataRequest(eventRequest.getDataType(), nbRead[0], CHUNK_SIZE[0], eventRequest.getBlockize(), ExecutionType.BACKGROUND) - { -// int count = 0; - @Override - public void handleData() { - T[] data = getData(); -// timestamp[0] = data[data.length-1].getTimestamp(); -// if (count == 0) { -// System.out.println("First event of the block: " + data[0].getTimestamp()); -// } -// count++; -// Tracer.trace("Ndx: " + ((TmfEvent) data[0]).getTimestamp()); - eventRequest.setData(data); - eventRequest.handleData(); - if (fNbRead == CHUNK_SIZE[0]) { - nbRead[0] += fNbRead; -// System.out.println("fNbRead=" + fNbRead + ", count=" + count +", total=" + nbRead[0] + ", TS=" + data[0].getTimestamp()); - } - if (fNbRead > CHUNK_SIZE[0]) { - System.out.println("ERROR - Read too many events"); - } - } - @Override - public void handleCompleted() { -// System.out.println("Request completed at: " + timestamp[0]); - if (fNbRead < CHUNK_SIZE[0]) { - eventRequest.done(); - isFinished[0] = Boolean.TRUE; - nbRead[0] += fNbRead; -// System.out.println("fNbRead=" + fNbRead + ", count=" + count +", total=" + nbRead[0]); - } - super.handleCompleted(); - } - }; - - if (!isFinished[0]) { - queueRequest(subRequest); - - try { - subRequest.waitForCompletion(); -// System.out.println("Finished at " + timestamp[0]); - } catch (InterruptedException e) { - e.printStackTrace(); - } - -// TmfTimestamp newTS = new TmfTimestamp(timestamp[0].getValue() + 1, timestamp[0].getScale(), timestamp[0].getPrecision()); -// timestamp[0] = newTS; - CHUNK_SIZE[0] = blockSize; -// System.out.println("New timestamp: " + timestamp[0]); - } - } -// final long requestEnded = System.nanoTime(); -// System.out.println("Background request completed. Elapsed= " + (requestEnded * 1.0 - requestStart) / 1000000000); - } - }; - - thread.start(); - } - - // ------------------------------------------------------------------------ - // Signal handlers - // ------------------------------------------------------------------------ - - @TmfSignalHandler - public void traceOpened(TmfTraceOpenedSignal signal) { - ITmfTrace trace = signal.getTrace(); - if (trace == this) { - indexTrace(false); - } - } +// @Override +// protected void queueBackgroundRequest(final ITmfDataRequest request, final int blockSize, final boolean adjust) { +// super.queueBackgroundRequest(request, fIndexPageSize, true); +// } } -- 2.34.1