From 951d134a7b15d6dfd08a680fa3f240c9981f407d Mon Sep 17 00:00:00 2001 From: Francois Chouinard Date: Thu, 11 Mar 2010 21:45:43 +0000 Subject: [PATCH] [Bug292967] Second part of request coalescing + unit tests + minor fixes. --- .../lttng/tests/AllLTTngCoreTests.java | 11 - .../lttng/ui/views/project/ProjectView.java | 2 +- .../ui/views/statistics/StatisticsView.java | 6 +- .../ui/views/timeframe/TimeFrameView.java | 2 +- .../lttng/state/StateDataRequest.java | 9 +- .../linuxtools/lttng/state/StateManager.java | 11 +- .../experiment/StateExperimentManager.java | 2 +- .../linuxtools/tmf/tests/AllTmfCoreTests.java | 59 ++- .../tmf/tests/component/AllTests.java | 2 +- .../tmf/tests/component/TmfClientTest.java | 193 -------- .../tests/component/TmfEventProviderTest.java | 38 +- .../tmf/tests/request/AllTests.java | 1 + .../request/TmfCoalescedDataRequestTest.java | 325 +------------ .../request/TmfCoalescedEventRequestTest.java | 446 +++--------------- .../tmf/tests/request/TmfDataRequestTest.java | 43 +- .../tests/request/TmfEventRequestTest.java | 61 ++- .../tmf/tests/trace/TmfExperimentTest.java | 12 +- .../tmf/tests/trace/TmfTraceTest.java | 17 +- .../tmf/component/TmfEventProviderStub.java | 6 + .../TmfSyntheticEventProviderStub.java | 6 +- .../tmf/request/TmfDataRequestStub.java | 6 +- .../tmf/request/TmfEventRequestStub.java | 6 +- .../tmf/ui/views/TmfEventsView.java | 7 +- .../tmf/component/ITmfDataProvider.java | 29 +- .../tmf/component/TmfDataProvider.java | 115 +++-- .../tmf/component/TmfEventProvider.java | 12 + .../linuxtools/tmf/event/TmfTimeRange.java | 12 +- .../tmf/experiment/TmfExperiment.java | 93 +--- .../TmfExperimentSelectedSignal.java | 6 +- .../tmf/request/ITmfDataRequest.java | 7 +- .../tmf/request/ITmfRequestHandler.java | 36 -- .../tmf/request/TmfCoalescedDataRequest.java | 66 ++- .../tmf/request/TmfCoalescedEventRequest.java | 68 +-- .../tmf/request/TmfDataRequest.java | 40 +- .../tmf/request/TmfEventRequest.java | 19 +- .../tmf/request/TmfRequestExecutor.java | 17 + .../linuxtools/tmf/trace/TmfTrace.java | 4 + 37 files changed, 489 insertions(+), 1306 deletions(-) delete mode 100644 org.eclipse.linuxtools.tmf.tests/src/org/eclipse/linuxtools/tmf/tests/component/TmfClientTest.java delete mode 100644 org.eclipse.linuxtools.tmf/src/org/eclipse/linuxtools/tmf/request/ITmfRequestHandler.java diff --git a/org.eclipse.linuxtools.lttng.tests/src/org/eclipse/linuxtools/lttng/tests/AllLTTngCoreTests.java b/org.eclipse.linuxtools.lttng.tests/src/org/eclipse/linuxtools/lttng/tests/AllLTTngCoreTests.java index 09ab7ed5f0..a6b1f483e6 100644 --- a/org.eclipse.linuxtools.lttng.tests/src/org/eclipse/linuxtools/lttng/tests/AllLTTngCoreTests.java +++ b/org.eclipse.linuxtools.lttng.tests/src/org/eclipse/linuxtools/lttng/tests/AllLTTngCoreTests.java @@ -3,11 +3,6 @@ package org.eclipse.linuxtools.lttng.tests; import junit.framework.Test; import junit.framework.TestSuite; -import org.eclipse.linuxtools.lttng.control.LTTngSyntheticEventProviderTest; -import org.eclipse.linuxtools.lttng.control.LTTngSyntheticEventProviderTextTest; -import org.eclipse.linuxtools.lttng.model.LTTngTreeNodeTest; -import org.eclipse.linuxtools.lttng.state.experiment.StateExperimentManagerTextTest; -import org.eclipse.linuxtools.lttng.state.resource.LTTngStateResourceTest; import org.eclipse.linuxtools.lttng.tests.event.LttngEventContentTest; import org.eclipse.linuxtools.lttng.tests.event.LttngEventFieldTest; import org.eclipse.linuxtools.lttng.tests.event.LttngEventReferenceTest; @@ -44,12 +39,6 @@ public class AllLTTngCoreTests { suite.addTestSuite(LTTngTextTraceTest.class); suite.addTestSuite(LTTngTraceTest.class); - - suite.addTestSuite(LTTngSyntheticEventProviderTest.class); - suite.addTestSuite(LTTngSyntheticEventProviderTextTest.class); - suite.addTestSuite(LTTngTreeNodeTest.class); - suite.addTestSuite(StateExperimentManagerTextTest.class); - suite.addTestSuite(LTTngStateResourceTest.class); //$JUnit-END$ return suite; } diff --git a/org.eclipse.linuxtools.lttng.ui/src/org/eclipse/linuxtools/lttng/ui/views/project/ProjectView.java b/org.eclipse.linuxtools.lttng.ui/src/org/eclipse/linuxtools/lttng/ui/views/project/ProjectView.java index bf4bb190e3..6b02df6c4f 100644 --- a/org.eclipse.linuxtools.lttng.ui/src/org/eclipse/linuxtools/lttng/ui/views/project/ProjectView.java +++ b/org.eclipse.linuxtools.lttng.ui/src/org/eclipse/linuxtools/lttng/ui/views/project/ProjectView.java @@ -178,7 +178,7 @@ public class ProjectView extends TmfView { } fSelectedExperiment = new TmfExperiment(LttngEvent.class, expId, traces); fSelectedExperiment.indexExperiment(waitForCompletion); - broadcast(new TmfExperimentSelectedSignal(this, fSelectedExperiment)); + broadcast(new TmfExperimentSelectedSignal(this, fSelectedExperiment)); } catch (FileNotFoundException e) { return; } catch (Exception e) { diff --git a/org.eclipse.linuxtools.lttng.ui/src/org/eclipse/linuxtools/lttng/ui/views/statistics/StatisticsView.java b/org.eclipse.linuxtools.lttng.ui/src/org/eclipse/linuxtools/lttng/ui/views/statistics/StatisticsView.java index 08b6246050..146bd49336 100644 --- a/org.eclipse.linuxtools.lttng.ui/src/org/eclipse/linuxtools/lttng/ui/views/statistics/StatisticsView.java +++ b/org.eclipse.linuxtools.lttng.ui/src/org/eclipse/linuxtools/lttng/ui/views/statistics/StatisticsView.java @@ -321,7 +321,11 @@ public class StatisticsView extends TmfView implements IStateDataRequestListener } public StatisticsView(String viewName) { - super("StatisticsView"); + super(viewName); + } + + public StatisticsView() { + this("StatisticsView"); } /* diff --git a/org.eclipse.linuxtools.lttng.ui/src/org/eclipse/linuxtools/lttng/ui/views/timeframe/TimeFrameView.java b/org.eclipse.linuxtools.lttng.ui/src/org/eclipse/linuxtools/lttng/ui/views/timeframe/TimeFrameView.java index 9b203ee549..b43fd91b41 100644 --- a/org.eclipse.linuxtools.lttng.ui/src/org/eclipse/linuxtools/lttng/ui/views/timeframe/TimeFrameView.java +++ b/org.eclipse.linuxtools.lttng.ui/src/org/eclipse/linuxtools/lttng/ui/views/timeframe/TimeFrameView.java @@ -257,7 +257,7 @@ public class TimeFrameView extends TmfView { * @param signal */ @TmfSignalHandler - public void experimentSelected(TmfExperimentSelectedSignal signal) { + public void experimentSelected(TmfExperimentSelectedSignal signal) { // Update the trace reference fExperiment = (TmfExperiment) signal.getExperiment(); diff --git a/org.eclipse.linuxtools.lttng/src/org/eclipse/linuxtools/lttng/state/StateDataRequest.java b/org.eclipse.linuxtools.lttng/src/org/eclipse/linuxtools/lttng/state/StateDataRequest.java index 558433db23..6a97e05bb6 100644 --- a/org.eclipse.linuxtools.lttng/src/org/eclipse/linuxtools/lttng/state/StateDataRequest.java +++ b/org.eclipse.linuxtools.lttng/src/org/eclipse/linuxtools/lttng/state/StateDataRequest.java @@ -89,8 +89,7 @@ public class StateDataRequest extends TmfEventRequest { * @param broadcast * true: All views, false: only to registered listeners */ - public void startRequestInd(TmfExperiment experiment, boolean broadcast, - boolean waitForCompletion) { + public void startRequestInd(TmfExperiment experiment, boolean broadcast) { if (broadcast) { // Notify all state views. this.broadcast = broadcast; @@ -103,7 +102,7 @@ public class StateDataRequest extends TmfEventRequest { } // trigger the start to process this request - experiment.processRequest(this, waitForCompletion); + experiment.sendRequest(this); } /** @@ -187,4 +186,8 @@ public class StateDataRequest extends TmfEventRequest { public boolean isclearDataInd() { return clearDataInd; } + + @Override + public void handleData() { + } } \ No newline at end of file diff --git a/org.eclipse.linuxtools.lttng/src/org/eclipse/linuxtools/lttng/state/StateManager.java b/org.eclipse.linuxtools.lttng/src/org/eclipse/linuxtools/lttng/state/StateManager.java index bb2c94de6c..b4ef5a2b0b 100644 --- a/org.eclipse.linuxtools.lttng/src/org/eclipse/linuxtools/lttng/state/StateManager.java +++ b/org.eclipse.linuxtools.lttng/src/org/eclipse/linuxtools/lttng/state/StateManager.java @@ -118,9 +118,9 @@ public class StateManager extends Observable { boolean clearPreviousData) { // New log in use, read all events and build state transition stack if (experiment != null) { - if (fExperiment != null && fExperiment != experiment) { - this.fExperiment.deregister(); - } +// if (fExperiment != null && fExperiment != experiment) { +// this.fExperiment.deregister(); +// } this.fExperiment = experiment; @@ -146,8 +146,7 @@ public class StateManager extends Observable { null); request.setclearDataInd(clearPreviousData); - // Wait for completion - request.startRequestInd(fExperiment, true, true); + request.startRequestInd(fExperiment, true); if (TraceDebug.isDEBUG()) { StringBuilder sb = new StringBuilder( @@ -192,7 +191,7 @@ public class StateManager extends Observable { // Process request to that point StateDataRequest request = getDataRequestByTimeRange(trange, listener); // don't wait for completion i.e. allow cancellations - request.startRequestInd(fExperiment, false, false); + request.startRequestInd(fExperiment, false); if (TraceDebug.isDEBUG()) { TraceDebug 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 f3faf3a053..e6c5415b06 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 @@ -113,7 +113,7 @@ public class StateExperimentManager extends TmfComponent { */ @SuppressWarnings("unchecked") @TmfSignalHandler - public void experimentSelected(TmfExperimentSelectedSignal signal) { + public void experimentSelected(TmfExperimentSelectedSignal signal) { // TmfExperiment experiment = signal.getExperiment(); // ITmfTrace[] traces = experiment.getTraces(); // for (ITmfTrace trace : traces) { diff --git a/org.eclipse.linuxtools.tmf.tests/src/org/eclipse/linuxtools/tmf/tests/AllTmfCoreTests.java b/org.eclipse.linuxtools.tmf.tests/src/org/eclipse/linuxtools/tmf/tests/AllTmfCoreTests.java index d6f4d82cf0..46a1147d9e 100644 --- a/org.eclipse.linuxtools.tmf.tests/src/org/eclipse/linuxtools/tmf/tests/AllTmfCoreTests.java +++ b/org.eclipse.linuxtools.tmf.tests/src/org/eclipse/linuxtools/tmf/tests/AllTmfCoreTests.java @@ -1,36 +1,49 @@ -/******************************************************************************* - * Copyright (c) 2009, 2010 Ericsson - * - * All rights reserved. This program and the accompanying materials are - * made available under the terms of the Eclipse Public License v1.0 which - * accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * Francois Chouinard - Initial API and implementation - *******************************************************************************/ - package org.eclipse.linuxtools.tmf.tests; import junit.framework.Test; import junit.framework.TestSuite; -/** - * AllTmfCoreTests - *

- * Master test suite for TMF Core. - */ +import org.eclipse.linuxtools.tmf.tests.component.TmfEventProviderTest; +import org.eclipse.linuxtools.tmf.tests.component.TmfProviderManagerTest; +import org.eclipse.linuxtools.tmf.tests.event.TmfEventContentTest; +import org.eclipse.linuxtools.tmf.tests.event.TmfEventFieldTest; +import org.eclipse.linuxtools.tmf.tests.event.TmfEventReferenceTest; +import org.eclipse.linuxtools.tmf.tests.event.TmfEventSourceTest; +import org.eclipse.linuxtools.tmf.tests.event.TmfEventTest; +import org.eclipse.linuxtools.tmf.tests.event.TmfEventTypeTest; +import org.eclipse.linuxtools.tmf.tests.event.TmfTimeRangeTest; +import org.eclipse.linuxtools.tmf.tests.event.TmfTimestampTest; +import org.eclipse.linuxtools.tmf.tests.event.TmfTraceEventTest; +import org.eclipse.linuxtools.tmf.tests.request.TmfCoalescedDataRequestTest; +import org.eclipse.linuxtools.tmf.tests.request.TmfDataRequestTest; +import org.eclipse.linuxtools.tmf.tests.request.TmfEventRequestTest; +import org.eclipse.linuxtools.tmf.tests.trace.TmfExperimentTest; +import org.eclipse.linuxtools.tmf.tests.trace.TmfTraceTest; + public class AllTmfCoreTests { public static Test suite() { TestSuite suite = new TestSuite(AllTmfCoreTests.class.getName()); //$JUnit-BEGIN$ - suite.addTestSuite(TmfCorePluginTest.class); - suite.addTest(org.eclipse.linuxtools.tmf.tests.event.AllTests.suite()); - suite.addTest(org.eclipse.linuxtools.tmf.tests.request.AllTests.suite()); - suite.addTest(org.eclipse.linuxtools.tmf.tests.component.AllTests.suite()); - suite.addTest(org.eclipse.linuxtools.tmf.tests.trace.AllTests.suite()); - suite.addTest(org.eclipse.linuxtools.tmf.tests.experiment.AllTests.suite()); + suite.addTestSuite(TmfEventProviderTest.class); + suite.addTestSuite(TmfProviderManagerTest.class); + + suite.addTestSuite(TmfEventFieldTest.class); + suite.addTestSuite(TmfEventContentTest.class); + suite.addTestSuite(TmfEventTypeTest.class); + suite.addTestSuite(TmfEventSourceTest.class); + suite.addTestSuite(TmfTraceEventTest.class); + suite.addTestSuite(TmfEventReferenceTest.class); + suite.addTestSuite(TmfTimestampTest.class); + suite.addTestSuite(TmfTimeRangeTest.class); + suite.addTestSuite(TmfEventTest.class); + + suite.addTestSuite(TmfDataRequestTest.class); + suite.addTestSuite(TmfEventRequestTest.class); + suite.addTestSuite(TmfCoalescedDataRequestTest.class); + + suite.addTestSuite(TmfTraceTest.class); + suite.addTestSuite(TmfExperimentTest.class); //$JUnit-END$ return suite; } diff --git a/org.eclipse.linuxtools.tmf.tests/src/org/eclipse/linuxtools/tmf/tests/component/AllTests.java b/org.eclipse.linuxtools.tmf.tests/src/org/eclipse/linuxtools/tmf/tests/component/AllTests.java index 78a0532399..411ae21f3f 100644 --- a/org.eclipse.linuxtools.tmf.tests/src/org/eclipse/linuxtools/tmf/tests/component/AllTests.java +++ b/org.eclipse.linuxtools.tmf.tests/src/org/eclipse/linuxtools/tmf/tests/component/AllTests.java @@ -8,8 +8,8 @@ public class AllTests { public static Test suite() { TestSuite suite = new TestSuite(AllTests.class.getName()); //$JUnit-BEGIN$ - suite.addTestSuite(TmfProviderManagerTest.class); suite.addTestSuite(TmfEventProviderTest.class); + suite.addTestSuite(TmfProviderManagerTest.class); //$JUnit-END$ return suite; } diff --git a/org.eclipse.linuxtools.tmf.tests/src/org/eclipse/linuxtools/tmf/tests/component/TmfClientTest.java b/org.eclipse.linuxtools.tmf.tests/src/org/eclipse/linuxtools/tmf/tests/component/TmfClientTest.java deleted file mode 100644 index a50052ee0f..0000000000 --- a/org.eclipse.linuxtools.tmf.tests/src/org/eclipse/linuxtools/tmf/tests/component/TmfClientTest.java +++ /dev/null @@ -1,193 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2009, 2010 Ericsson - * - * All rights reserved. This program and the accompanying materials are - * made available under the terms of the Eclipse Public License v1.0 which - * accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * Francois Chouinard - Initial API and implementation - *******************************************************************************/ - -package org.eclipse.linuxtools.tmf.tests.component; - -import java.io.IOException; -import java.util.Vector; - -import junit.framework.TestCase; - -import org.eclipse.linuxtools.tmf.component.TmfDataProvider; -import org.eclipse.linuxtools.tmf.component.TmfEventProviderStub; -import org.eclipse.linuxtools.tmf.component.TmfProviderManager; -import org.eclipse.linuxtools.tmf.component.TmfSyntheticEventProviderStub; -import org.eclipse.linuxtools.tmf.event.TmfEvent; -import org.eclipse.linuxtools.tmf.event.TmfSyntheticEventStub; -import org.eclipse.linuxtools.tmf.event.TmfTimeRange; -import org.eclipse.linuxtools.tmf.event.TmfTimestamp; -import org.eclipse.linuxtools.tmf.request.TmfEventRequest; -import org.eclipse.linuxtools.tmf.trace.TmfTraceStub; - -/** - * TmfClientTest - *

- * TODO: Implement me. Please. - */ -public class TmfClientTest extends TestCase { - - TmfEventProviderStub fEventProvider; - TmfSyntheticEventProviderStub fSyntheticEventProvider; - - public TmfClientTest(String name) throws IOException { - super(name); - } - - @Override - protected void setUp() throws Exception { - super.setUp(); - fEventProvider = new TmfEventProviderStub(); - fSyntheticEventProvider = new TmfSyntheticEventProviderStub(); - } - - @Override - protected void tearDown() throws Exception { - super.tearDown(); - fEventProvider.deregister(); - fSyntheticEventProvider.deregister(); - } - - // ------------------------------------------------------------------------ - // getProviders (more a sanity check than a test) - // ------------------------------------------------------------------------ - - @SuppressWarnings("unchecked") - public void testGetProviders() { - - // There should be 2 TmfEvent providers: a TmfTraceStub and a TmfEventProviderStub - TmfDataProvider[] eventProviders = (TmfDataProvider[]) TmfProviderManager.getProviders(TmfEvent.class); - assertTrue(eventProviders.length == 2); - - eventProviders = (TmfDataProvider[]) TmfProviderManager.getProviders(TmfEvent.class, TmfTraceStub.class); - assertTrue(eventProviders.length == 1); - - eventProviders = (TmfDataProvider[]) TmfProviderManager.getProviders(TmfEvent.class, TmfEventProviderStub.class); - assertTrue(eventProviders.length == 1); - - // There should be 1 TmfSyntheticEventStub provider - eventProviders = (TmfDataProvider[]) TmfProviderManager.getProviders(TmfSyntheticEventStub.class); - assertTrue(eventProviders.length == 1); - } - - // ------------------------------------------------------------------------ - // getSyntheticEvent - // ------------------------------------------------------------------------ - - @SuppressWarnings("unchecked") - public void testGetPlainEvents() { - - final int BLOCK_SIZE = 100; - final int NB_EVENTS = 1000; - final Vector requestedEvents = new Vector(); - - // Get the TmfSyntheticEventStub provider - TmfDataProvider[] eventProviders = (TmfDataProvider[]) TmfProviderManager.getProviders(TmfEvent.class, TmfEventProviderStub.class); - TmfDataProvider provider = eventProviders[0]; - - 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); - } - } - }; - provider.processRequest(request, true); - - assertEquals("nbEvents", NB_EVENTS, requestedEvents.size()); - assertTrue("isCompleted", request.isCompleted()); - assertFalse("isCancelled", request.isCancelled()); - - // Make that we have distinct events. - // Don't go overboard: we are not validating the stub! - for (int i = 0; i < NB_EVENTS; i++) { - assertEquals("Distinct events", i+1, requestedEvents.get(i).getTimestamp().getValue()); - } - } - - @SuppressWarnings("unchecked") - private void getSyntheticData(final TmfTimeRange range, final int nbEvents, final int blockSize) { - - final Vector requestedEvents = new Vector(); - - // Get the event provider - TmfDataProvider[] eventProviders = (TmfDataProvider[]) TmfProviderManager.getProviders(TmfSyntheticEventStub.class); - TmfDataProvider provider = eventProviders[0]; - - final TmfEventRequest request = - new TmfEventRequest(TmfSyntheticEventStub.class, range, nbEvents, blockSize) { - @Override - public void handleData() { - TmfSyntheticEventStub[] events = getData(); - for (TmfSyntheticEventStub e : events) { - requestedEvents.add(e); - } - } - }; - provider.processRequest(request, true); - - if (nbEvents != -1) - assertEquals("nbEvents", nbEvents, requestedEvents.size()); - assertTrue("isCompleted", request.isCompleted()); - assertFalse("isCancelled", request.isCancelled()); - - // For each base event, the stub will queue 2 identical synthetic events - // Ensure that the events are queued properly. - // Don't go overboard: we are not validating the stub! - for (int i = 0; i < (nbEvents / 2); i++) { - assertEquals("Distinct events", i+1, requestedEvents.get(2 * i + 0).getTimestamp().getValue()); - assertEquals("Distinct events", i+1, requestedEvents.get(2 * i + 1).getTimestamp().getValue()); - } - } - - // The following tests are the same but for the size of the requested blocks - // with regards to the size of the TmfSyntheticEventProviderStub block - public void testGetSyntheticEvents_EqualBlockSizes() { - TmfTimeRange range = new TmfTimeRange(TmfTimestamp.BigBang, TmfTimestamp.BigCrunch); - getSyntheticData(range, 1000, TmfSyntheticEventProviderStub.BLOCK_SIZE); - } - - public void testGetSyntheticEvents_SmallerBlock() { - TmfTimeRange range = new TmfTimeRange(TmfTimestamp.BigBang, TmfTimestamp.BigCrunch); - getSyntheticData(range, 1000, TmfSyntheticEventProviderStub.BLOCK_SIZE / 2); - } - - public void testGetSyntheticEvents_LargerBlock() { - TmfTimeRange range = new TmfTimeRange(TmfTimestamp.BigBang, TmfTimestamp.BigCrunch); - getSyntheticData(range, 1000, TmfSyntheticEventProviderStub.BLOCK_SIZE * 2); - } - - public void testGetSyntheticEvents_TimeRange() { - TmfTimestamp start = new TmfTimestamp( 1, (byte) -3, 0); - TmfTimestamp end = new TmfTimestamp(1000, (byte) -3, 0); - TmfTimeRange range = new TmfTimeRange(start, end); - getSyntheticData(range, -1, TmfSyntheticEventProviderStub.BLOCK_SIZE); - } - - public void testGetSyntheticEvents_WeirdTimeRange1() { - TmfTimestamp start = TmfTimestamp.BigBang; - TmfTimestamp end = new TmfTimestamp(0, (byte) -3, 0); - TmfTimeRange range = new TmfTimeRange(start, end); - getSyntheticData(range, -1, TmfSyntheticEventProviderStub.BLOCK_SIZE); - } - - public void testGetSyntheticEvents_WeirdTimeRange2() { - TmfTimestamp start = new TmfTimestamp(0, (byte) -3, 0); - TmfTimestamp end = TmfTimestamp.BigCrunch; - TmfTimeRange range = new TmfTimeRange(start, end); - getSyntheticData(range, -1, TmfSyntheticEventProviderStub.BLOCK_SIZE); - } - -} 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 5acb7ae46a..6cec0d0382 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 @@ -31,7 +31,7 @@ import org.eclipse.linuxtools.tmf.trace.TmfTraceStub; /** * TmfClientTest *

- * Test suite for the TmfEventProvider class. + * TODO: Implement me. Please. */ public class TmfEventProviderTest extends TestCase { @@ -52,8 +52,8 @@ public class TmfEventProviderTest extends TestCase { @Override protected void tearDown() throws Exception { super.tearDown(); - fEventProvider.dispose(); - fSyntheticEventProvider.dispose(); + fEventProvider.deregister(); + fSyntheticEventProvider.deregister(); } // ------------------------------------------------------------------------ @@ -65,17 +65,17 @@ public class TmfEventProviderTest extends TestCase { // There should be 2 TmfEvent providers: a TmfTraceStub and a TmfEventProviderStub ITmfDataProvider[] eventProviders = (ITmfDataProvider[]) TmfProviderManager.getProviders(TmfEvent.class); - assertEquals("getProviders", 2, eventProviders.length); + assertTrue(eventProviders.length == 2); eventProviders = (ITmfDataProvider[]) TmfProviderManager.getProviders(TmfEvent.class, TmfTraceStub.class); - assertEquals("getProviders", 1, eventProviders.length); + assertTrue(eventProviders.length == 1); eventProviders = (ITmfDataProvider[]) TmfProviderManager.getProviders(TmfEvent.class, TmfEventProviderStub.class); - assertEquals("getProviders", 1, eventProviders.length); + assertTrue(eventProviders.length == 1); // There should be 1 TmfSyntheticEventStub provider eventProviders = (ITmfDataProvider[]) TmfProviderManager.getProviders(TmfSyntheticEventStub.class); - assertEquals("getProviders", 1, eventProviders.length); + assertTrue(eventProviders.length == 1); } // ------------------------------------------------------------------------ @@ -83,7 +83,7 @@ public class TmfEventProviderTest extends TestCase { // ------------------------------------------------------------------------ @SuppressWarnings("unchecked") - public void testGetPlainEvents() throws InterruptedException { + public void testGetPlainEvents() { final int BLOCK_SIZE = 100; final int NB_EVENTS = 1000; @@ -119,7 +119,7 @@ public class TmfEventProviderTest extends TestCase { } @SuppressWarnings("unchecked") - private void getSyntheticData(final TmfTimeRange range, final int nbEvents, final int blockSize) throws InterruptedException { + private void getSyntheticData(final TmfTimeRange range, final int nbEvents, final int blockSize) { final Vector requestedEvents = new Vector(); @@ -156,36 +156,36 @@ public class TmfEventProviderTest extends TestCase { // The following tests are the same but for the size of the requested blocks // with regards to the size of the TmfSyntheticEventProviderStub block - public void testGetSyntheticEvents_EqualBlockSizes() throws InterruptedException { + public void testGetSyntheticEvents_EqualBlockSizes() { TmfTimeRange range = new TmfTimeRange(TmfTimestamp.BigBang, TmfTimestamp.BigCrunch); getSyntheticData(range, 1000, TmfSyntheticEventProviderStub.BLOCK_SIZE); } - public void testGetSyntheticEvents_SmallerBlock() throws InterruptedException { + public void testGetSyntheticEvents_SmallerBlock() { TmfTimeRange range = new TmfTimeRange(TmfTimestamp.BigBang, TmfTimestamp.BigCrunch); getSyntheticData(range, 1000, TmfSyntheticEventProviderStub.BLOCK_SIZE / 2); } - public void testGetSyntheticEvents_LargerBlock() throws InterruptedException { + public void testGetSyntheticEvents_LargerBlock() { TmfTimeRange range = new TmfTimeRange(TmfTimestamp.BigBang, TmfTimestamp.BigCrunch); getSyntheticData(range, 1000, TmfSyntheticEventProviderStub.BLOCK_SIZE * 2); } - public void testGetSyntheticEvents_TimeRange() throws InterruptedException { + public void testGetSyntheticEvents_TimeRange() { TmfTimestamp start = new TmfTimestamp( 1, (byte) -3, 0); TmfTimestamp end = new TmfTimestamp(1000, (byte) -3, 0); TmfTimeRange range = new TmfTimeRange(start, end); getSyntheticData(range, -1, TmfSyntheticEventProviderStub.BLOCK_SIZE); } - public void testGetSyntheticEvents_WeirdTimeRange1() throws InterruptedException { + public void testGetSyntheticEvents_WeirdTimeRange1() { TmfTimestamp start = TmfTimestamp.BigBang; TmfTimestamp end = new TmfTimestamp(0, (byte) -3, 0); TmfTimeRange range = new TmfTimeRange(start, end); getSyntheticData(range, -1, TmfSyntheticEventProviderStub.BLOCK_SIZE); } - public void testGetSyntheticEvents_WeirdTimeRange2() throws InterruptedException { + public void testGetSyntheticEvents_WeirdTimeRange2() { TmfTimestamp start = new TmfTimestamp(0, (byte) -3, 0); TmfTimestamp end = TmfTimestamp.BigCrunch; TmfTimeRange range = new TmfTimeRange(start, end); @@ -201,17 +201,17 @@ public class TmfEventProviderTest extends TestCase { // There should be 2 TmfEvent providers: a TmfTraceStub and a TmfEventProviderStub ITmfDataProvider[] eventProviders = (ITmfDataProvider[]) TmfProviderManager.getProviders(TmfEvent.class); - assertEquals("getProviders", 2, eventProviders.length); + assertTrue(eventProviders.length == 2); eventProviders = (ITmfDataProvider[]) TmfProviderManager.getProviders(TmfEvent.class, TmfTraceStub.class); - assertEquals("getProviders", 1, eventProviders.length); + assertTrue(eventProviders.length == 1); eventProviders = (ITmfDataProvider[]) TmfProviderManager.getProviders(TmfEvent.class, TmfEventProviderStub.class); - assertEquals("getProviders", 1, eventProviders.length); + assertTrue(eventProviders.length == 1); // There should be 1 TmfSyntheticEventStub provider eventProviders = (ITmfDataProvider[]) TmfProviderManager.getProviders(TmfSyntheticEventStub.class); - assertEquals("getProviders", 1, eventProviders.length); + assertTrue(eventProviders.length == 1); } } diff --git a/org.eclipse.linuxtools.tmf.tests/src/org/eclipse/linuxtools/tmf/tests/request/AllTests.java b/org.eclipse.linuxtools.tmf.tests/src/org/eclipse/linuxtools/tmf/tests/request/AllTests.java index c00b5d51bf..8962239db5 100644 --- a/org.eclipse.linuxtools.tmf.tests/src/org/eclipse/linuxtools/tmf/tests/request/AllTests.java +++ b/org.eclipse.linuxtools.tmf.tests/src/org/eclipse/linuxtools/tmf/tests/request/AllTests.java @@ -12,6 +12,7 @@ public class AllTests { //$JUnit-BEGIN$ suite.addTestSuite(TmfDataRequestTest.class); suite.addTestSuite(TmfEventRequestTest.class); + suite.addTestSuite(TmfCoalescedDataRequestTest.class); //$JUnit-END$ return suite; } 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..6cc5c15e02 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; @@ -27,24 +23,10 @@ import org.eclipse.linuxtools.tmf.request.TmfDataRequestStub; /** * TmfCoalescedDataRequestTest *

- * Test suite for the TmfCoalescedDataRequest class. + * TODO: Implement me. Please. */ public class TmfCoalescedDataRequestTest extends TestCase { - // ------------------------------------------------------------------------ - // Variables - // ------------------------------------------------------------------------ - - private static TmfCoalescedDataRequest fRequest1; - private static TmfCoalescedDataRequest fRequest2; - private static TmfCoalescedDataRequest fRequest3; - private static TmfCoalescedDataRequest fRequest4; - - private static TmfCoalescedDataRequest fRequest1b; - private static TmfCoalescedDataRequest fRequest1c; - - private static int fRequestCount; - // ------------------------------------------------------------------------ // Housekeeping // ------------------------------------------------------------------------ @@ -55,51 +37,12 @@ public class TmfCoalescedDataRequestTest extends TestCase { @Override public void setUp() throws Exception { - super.setUp(); - TmfDataRequest.reset(); - fRequest1 = new TmfCoalescedDataRequest(TmfEvent.class, 10, 100, 200); - fRequest2 = new TmfCoalescedDataRequest(TmfEvent.class, 20, 100, 200); - fRequest3 = new TmfCoalescedDataRequest(TmfEvent.class, 20, 200, 200); - fRequest4 = new TmfCoalescedDataRequest(TmfEvent.class, 20, 200, 300); - - fRequest1b = new TmfCoalescedDataRequest(TmfEvent.class, 10, 100, 200); - fRequest1c = new TmfCoalescedDataRequest(TmfEvent.class, 10, 100, 200); - - fRequestCount = fRequest1c.getRequestId() + 1; } @Override public void tearDown() throws Exception { - super.tearDown(); } - private TmfCoalescedDataRequest setupTestRequest(final boolean[] flags) { - - TmfCoalescedDataRequest request = new TmfCoalescedDataRequest(TmfEvent.class, 10, 100, 200) { - @Override - public void handleCompleted() { - super.handleCompleted(); - flags[0] = true; - } - @Override - public void handleSuccess() { - super.handleSuccess(); - flags[1] = true; - } - @Override - public void handleFailure() { - super.handleFailure(); - flags[2] = true; - } - @Override - public void handleCancel() { - super.handleCancel(); - flags[3] = true; - } - }; - return request; - } - // ------------------------------------------------------------------------ // Constructors // ------------------------------------------------------------------------ @@ -107,128 +50,33 @@ public class TmfCoalescedDataRequestTest extends TestCase { public void testTmfCoalescedDataRequest() { TmfCoalescedDataRequest request = new TmfCoalescedDataRequest(TmfEvent.class); - assertEquals("getRequestId", fRequestCount++, request.getRequestId()); - assertEquals("getDataType", TmfEvent.class, request.getDataType()); - - assertEquals("getIndex", 0, request.getIndex()); + 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()); - assertFalse("isCancelled", request.isCancelled()); - - assertEquals("getNbRead", 0, request.getNbRead()); } public void testTmfCoalescedDataRequestIndex() { TmfCoalescedDataRequest request = new TmfCoalescedDataRequest(TmfEvent.class, 10); - assertEquals("getRequestId", fRequestCount++, request.getRequestId()); - assertEquals("getDataType", TmfEvent.class, request.getDataType()); - - assertEquals("getIndex", 10, request.getIndex()); + 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()); - assertFalse("isCancelled", request.isCancelled()); - - assertEquals("getNbRead", 0, request.getNbRead()); } public void testTmfCoalescedDataRequestIndexNbRequested() { TmfCoalescedDataRequest request = new TmfCoalescedDataRequest(TmfEvent.class, 10, 100); - assertEquals("getRequestId", fRequestCount++, request.getRequestId()); - assertEquals("getDataType", TmfEvent.class, request.getDataType()); - - assertEquals("getIndex", 10, request.getIndex()); + 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()); - assertFalse("isCancelled", request.isCancelled()); - - assertEquals("getNbRead", 0, request.getNbRead()); } public void testTmfCoalescedDataRequestIndexNbEventsBlocksize() { TmfCoalescedDataRequest request = new TmfCoalescedDataRequest(TmfEvent.class, 10, 100, 200); - assertEquals("getRequestId", fRequestCount++, request.getRequestId()); - assertEquals("getDataType", TmfEvent.class, request.getDataType()); - - assertEquals("getIndex", 10, request.getIndex()); + assertEquals("getIndex", 10, request.getIndex()); assertEquals("getNbRequestedEvents", 100, request.getNbRequested()); - assertEquals("getBlockize", 200, request.getBlockize()); - - assertFalse("isCompleted", request.isCompleted()); - assertFalse("isFailed", request.isFailed()); - assertFalse("isCancelled", request.isCancelled()); - - assertEquals("getNbRead", 0, request.getNbRead()); - } - - // ------------------------------------------------------------------------ - // equals - // ------------------------------------------------------------------------ - - public void testEqualsReflexivity() throws Exception { - assertTrue("equals", fRequest1.equals(fRequest1)); - assertTrue("equals", fRequest2.equals(fRequest2)); - - assertFalse("equals", fRequest1.equals(fRequest2)); - assertFalse("equals", fRequest2.equals(fRequest1)); - } - - public void testEqualsSymmetry() throws Exception { - assertTrue("equals", fRequest1.equals(fRequest1b)); - assertTrue("equals", fRequest1b.equals(fRequest1)); - - assertFalse("equals", fRequest1.equals(fRequest3)); - assertFalse("equals", fRequest2.equals(fRequest3)); - assertFalse("equals", fRequest3.equals(fRequest1)); - assertFalse("equals", fRequest3.equals(fRequest2)); - } - - public void testEqualsTransivity() throws Exception { - assertTrue("equals", fRequest1.equals(fRequest1b)); - assertTrue("equals", fRequest1b.equals(fRequest1c)); - assertTrue("equals", fRequest1.equals(fRequest1c)); - } - - public void testEqualsNull() throws Exception { - assertFalse("equals", fRequest1.equals(null)); - assertFalse("equals", fRequest2.equals(null)); - } - - // ------------------------------------------------------------------------ - // hashCode - // ------------------------------------------------------------------------ - - public void testHashCode() throws Exception { - assertTrue("hashCode", fRequest1.hashCode() == fRequest1.hashCode()); - assertTrue("hashCode", fRequest2.hashCode() == fRequest2.hashCode()); - assertTrue("hashCode", fRequest1.hashCode() != fRequest2.hashCode()); - } - - // ------------------------------------------------------------------------ - // toString - // ------------------------------------------------------------------------ - - 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)]"; - - assertEquals("toString", expected1, fRequest1.toString()); - assertEquals("toString", expected2, fRequest2.toString()); - assertEquals("toString", expected3, fRequest3.toString()); - assertEquals("toString", expected4, fRequest4.toString()); + assertEquals("getBlockize", 200, request.getBlockize()); } // ------------------------------------------------------------------------ @@ -248,165 +96,4 @@ public class TmfCoalescedDataRequestTest extends TestCase { 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()); - } - } - - // ------------------------------------------------------------------------ - // done - // ------------------------------------------------------------------------ - - public void testDone() { - - // Test request - final boolean[] crFlags = new boolean[4]; - TmfCoalescedDataRequest request = setupTestRequest(crFlags); - TmfDataRequest subRequest1 = new TmfDataRequestStub(TmfEvent.class, 10, 100, 200); - TmfDataRequest subRequest2 = new TmfDataRequestStub(TmfEvent.class, 10, 100, 200); - request.addRequest(subRequest1); - request.addRequest(subRequest2); - - request.done(); - - // Validate the coalescing request - assertTrue ("isCompleted", request.isCompleted()); - assertFalse("isFailed", request.isFailed()); - assertFalse("isCancelled", request.isCancelled()); - - assertTrue ("handleCompleted", crFlags[0]); - assertTrue ("handleSuccess", crFlags[1]); - assertFalse("handleFailure", crFlags[2]); - assertFalse("handleCancel", crFlags[3]); - - // Validate the first coalesced request - assertTrue ("isCompleted", subRequest1.isCompleted()); - assertFalse("isFailed", subRequest1.isFailed()); - assertFalse("isCancelled", subRequest1.isCancelled()); - - // Validate the second coalesced request - assertTrue ("isCompleted", subRequest2.isCompleted()); - assertFalse("isFailed", subRequest2.isFailed()); - assertFalse("isCancelled", subRequest2.isCancelled()); - } - - // ------------------------------------------------------------------------ - // fail - // ------------------------------------------------------------------------ - - public void testFail() { - - final boolean[] crFlags = new boolean[4]; - TmfCoalescedDataRequest request = setupTestRequest(crFlags); - TmfDataRequest subRequest1 = new TmfDataRequestStub(TmfEvent.class, 10, 100, 200); - TmfDataRequest subRequest2 = new TmfDataRequestStub(TmfEvent.class, 10, 100, 200); - request.addRequest(subRequest1); - request.addRequest(subRequest2); - - request.fail(); - - // Validate the coalescing request - assertTrue ("isCompleted", request.isCompleted()); - assertTrue ("isFailed", request.isFailed()); - assertFalse("isCancelled", request.isCancelled()); - - assertTrue ("handleCompleted", crFlags[0]); - assertFalse("handleSuccess", crFlags[1]); - assertTrue ("handleFailure", crFlags[2]); - assertFalse("handleCancel", crFlags[3]); - - // Validate the first coalesced request - assertTrue ("isCompleted", subRequest1.isCompleted()); - assertTrue ("isFailed", subRequest1.isFailed()); - assertFalse("isCancelled", subRequest1.isCancelled()); - - // Validate the second coalesced request - assertTrue ("isCompleted", subRequest2.isCompleted()); - assertTrue ("isFailed", subRequest2.isFailed()); - assertFalse("isCancelled", subRequest2.isCancelled()); - } - - // ------------------------------------------------------------------------ - // cancel - // ------------------------------------------------------------------------ - - public void testCancel() { - - final boolean[] crFlags = new boolean[4]; - TmfCoalescedDataRequest request = setupTestRequest(crFlags); - TmfDataRequest subRequest1 = new TmfDataRequestStub(TmfEvent.class, 10, 100, 200); - TmfDataRequest subRequest2 = new TmfDataRequestStub(TmfEvent.class, 10, 100, 200); - request.addRequest(subRequest1); - request.addRequest(subRequest2); - - request.cancel(); - - // Validate the coalescing request - assertTrue ("isCompleted", request.isCompleted()); - assertFalse("isFailed", request.isFailed()); - assertTrue ("isCancelled", request.isCancelled()); - - assertTrue ("handleCompleted", crFlags[0]); - assertFalse("handleSuccess", crFlags[1]); - assertFalse("handleFailure", crFlags[2]); - assertTrue ("handleCancel", crFlags[3]); - - // Validate the first coalesced request - assertTrue ("isCompleted", subRequest1.isCompleted()); - assertFalse("isFailed", subRequest1.isFailed()); - assertTrue ("isCancelled", subRequest1.isCancelled()); - - // Validate the second coalesced request - assertTrue ("isCompleted", subRequest2.isCompleted()); - assertFalse("isFailed", subRequest2.isFailed()); - assertTrue ("isCancelled", subRequest2.isCancelled()); - } - - // ------------------------------------------------------------------------ - // waitForCompletion - // ------------------------------------------------------------------------ - } 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 0b0bd714dd..645f67acf8 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; @@ -45,28 +40,34 @@ import org.eclipse.linuxtools.tmf.trace.TmfTraceStub; /** * TmfCoalescedEventRequestTest *

- * Test suite for the TmfCoalescedEventRequest class. + * TODO: Implement me. Please. */ public class TmfCoalescedEventRequestTest extends TestCase { - // ------------------------------------------------------------------------ - // Variables - // ------------------------------------------------------------------------ + private static final String DIRECTORY = "testfiles"; + private static final String TEST_STREAM = "M-Test-10K"; + private static final int NB_EVENTS = 10000; + private static final int BLOCK_SIZE = 100; - private static TmfTimeRange range1 = new TmfTimeRange(TmfTimeRange.Eternity); - private static TmfTimeRange range2 = new TmfTimeRange(new TmfTimestamp(), TmfTimestamp.BigCrunch); - - private static TmfCoalescedEventRequest fRequest1; - private static TmfCoalescedEventRequest fRequest2; - private static TmfCoalescedEventRequest fRequest3; - private static TmfCoalescedEventRequest fRequest4; + private static TmfTraceStub fTrace = null; - private static TmfCoalescedEventRequest fRequest1b; - private static TmfCoalescedEventRequest fRequest1c; + private TmfTraceStub setupTrace(String path) { + if (fTrace == null) { + try { + URL location = FileLocator.find(TmfCoreTestPlugin.getPlugin().getBundle(), new Path(path), null); + File test = new File(FileLocator.toFileURL(location).toURI()); + TmfTraceStub trace = new TmfTraceStub(test.getPath(), 500, true); + fTrace = trace; + } catch (URISyntaxException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } + } + return fTrace; + } - private static int fRequestCount; - - // ------------------------------------------------------------------------ + // ------------------------------------------------------------------------ // Housekeeping // ------------------------------------------------------------------------ @@ -77,16 +78,6 @@ public class TmfCoalescedEventRequestTest extends TestCase { @Override public void setUp() throws Exception { super.setUp(); - TmfEventRequest.reset(); - fRequest1 = new TmfCoalescedEventRequest(TmfEvent.class, range1, 100, 200); - fRequest2 = new TmfCoalescedEventRequest(TmfEvent.class, range2, 100, 200); - fRequest3 = new TmfCoalescedEventRequest(TmfEvent.class, range2, 200, 200); - fRequest4 = new TmfCoalescedEventRequest(TmfEvent.class, range2, 200, 300); - - fRequest1b = new TmfCoalescedEventRequest(TmfEvent.class, range1, 100, 200); - fRequest1c = new TmfCoalescedEventRequest(TmfEvent.class, range1, 100, 200); - - fRequestCount = fRequest1c.getRequestId() + 1; } @Override @@ -94,176 +85,55 @@ public class TmfCoalescedEventRequestTest extends TestCase { super.tearDown(); } - private TmfCoalescedEventRequest setupTestRequest(final boolean[] flags) { - - TmfCoalescedEventRequest request = new TmfCoalescedEventRequest(TmfEvent.class, range1, 100, 200) { - @Override - public void handleCompleted() { - super.handleCompleted(); - flags[0] = true; - } - @Override - public void handleSuccess() { - super.handleSuccess(); - flags[1] = true; - } - @Override - public void handleFailure() { - super.handleFailure(); - flags[2] = true; - } - @Override - public void handleCancel() { - super.handleCancel(); - flags[3] = true; - } - }; - return request; - } - // ------------------------------------------------------------------------ // Constructors // ------------------------------------------------------------------------ public void testTmfCoalescedEventRequest() { - TmfCoalescedEventRequest request = new TmfCoalescedEventRequest(TmfEvent.class); - - assertEquals("getRequestId", fRequestCount++, request.getRequestId()); - assertEquals("getDataType", TmfEvent.class, request.getDataType()); + TmfCoalescedEventRequest request = new TmfCoalescedEventRequest(TmfEvent.class); - assertEquals("getRange", range1, request.getRange()); - assertEquals("getNbRequestedEvents", TmfEventRequest.ALL_DATA, request.getNbRequested()); - assertEquals("getBlockize", TmfEventRequest.DEFAULT_BLOCK_SIZE, request.getBlockize()); + assertEquals("StartTime", TmfTimestamp.BigBang, request.getRange().getStartTime()); + assertEquals("EndTime", TmfTimestamp.BigCrunch, request.getRange().getEndTime()); - assertFalse("isCompleted", request.isCompleted()); - assertFalse("isFailed", request.isFailed()); - assertFalse("isCancelled", request.isCancelled()); - - assertEquals("getNbRead", 0, request.getNbRead()); + assertEquals("getIndex", 0, request.getIndex()); + assertEquals("getNbRequestedEvents", TmfDataRequest.ALL_DATA, request.getNbRequested()); + assertEquals("getBlockize", TmfDataRequest.DEFAULT_BLOCK_SIZE, request.getBlockize()); } - public void testTmfCoalescedEventRequestIndex() { - TmfCoalescedEventRequest request = new TmfCoalescedEventRequest(TmfEvent.class, range1); - - assertEquals("getRequestId", fRequestCount++, request.getRequestId()); - assertEquals("getDataType", TmfEvent.class, request.getDataType()); + public void testTmfCoalescedEventRequestTimeRange() { + TmfTimeRange range = new TmfTimeRange(new TmfTimestamp(), TmfTimestamp.BigCrunch); + TmfCoalescedEventRequest request = new TmfCoalescedEventRequest(TmfEvent.class, range); - assertEquals("getRange", range1, request.getRange()); - assertEquals("getNbRequestedEvents", TmfEventRequest.ALL_DATA, request.getNbRequested()); - assertEquals("getBlockize", TmfEventRequest.DEFAULT_BLOCK_SIZE, request.getBlockize()); + assertEquals("StartTime", range.getStartTime(), request.getRange().getStartTime()); + assertEquals("EndTime", range.getEndTime(), request.getRange().getEndTime()); - assertFalse("isCompleted", request.isCompleted()); - assertFalse("isFailed", request.isFailed()); - assertFalse("isCancelled", request.isCancelled()); - - assertEquals("getNbRead", 0, request.getNbRead()); + assertEquals("getIndex", 0, request.getIndex()); + assertEquals("getNbRequestedEvents", TmfDataRequest.ALL_DATA, request.getNbRequested()); + assertEquals("getBlockize", TmfDataRequest.DEFAULT_BLOCK_SIZE, request.getBlockize()); } - public void testTmfCoalescedEventRequestIndexNbRequested() { - TmfCoalescedEventRequest request = new TmfCoalescedEventRequest(TmfEvent.class, range1, 100); + public void testTmfCoalescedEventRequestTimeRangeNbRequested() { + TmfTimeRange range = new TmfTimeRange(new TmfTimestamp(), TmfTimestamp.BigCrunch); + TmfCoalescedEventRequest request = new TmfCoalescedEventRequest(TmfEvent.class, range, 100); - assertEquals("getRequestId", fRequestCount++, request.getRequestId()); - assertEquals("getDataType", TmfEvent.class, request.getDataType()); + assertEquals("StartTime", range.getStartTime(), request.getRange().getStartTime()); + assertEquals("EndTime", range.getEndTime(), request.getRange().getEndTime()); - assertEquals("getRange", range1, request.getRange()); + assertEquals("getIndex", 0, request.getIndex()); assertEquals("getNbRequestedEvents", 100, request.getNbRequested()); - assertEquals("getBlockize", TmfEventRequest.DEFAULT_BLOCK_SIZE, request.getBlockize()); - - assertFalse("isCompleted", request.isCompleted()); - assertFalse("isFailed", request.isFailed()); - assertFalse("isCancelled", request.isCancelled()); - - assertEquals("getNbRead", 0, request.getNbRead()); + assertEquals("getBlockize", TmfDataRequest.DEFAULT_BLOCK_SIZE, request.getBlockize()); } - public void testTmfCoalescedEventRequestIndexNbEventsBlocksize() { - TmfCoalescedEventRequest request = new TmfCoalescedEventRequest(TmfEvent.class, range1, 100, 200); + public void testTmfCoalescedEventRequestTimeRangeNbRequestedBlocksize() { + TmfTimeRange range = new TmfTimeRange(new TmfTimestamp(), TmfTimestamp.BigCrunch); + TmfCoalescedEventRequest request = new TmfCoalescedEventRequest(TmfEvent.class, range, 100, 200); - assertEquals("getRequestId", fRequestCount++, request.getRequestId()); - assertEquals("getDataType", TmfEvent.class, request.getDataType()); + assertEquals("StartTime", range.getStartTime(), request.getRange().getStartTime()); + assertEquals("EndTime", range.getEndTime(), request.getRange().getEndTime()); - assertEquals("getRange", range1, request.getRange()); + assertEquals("getIndex", 0, request.getIndex()); assertEquals("getNbRequestedEvents", 100, request.getNbRequested()); - assertEquals("getBlockize", 200, request.getBlockize()); - - assertFalse("isCompleted", request.isCompleted()); - assertFalse("isFailed", request.isFailed()); - assertFalse("isCancelled", request.isCancelled()); - - assertEquals("getNbRead", 0, request.getNbRead()); - } - - // ------------------------------------------------------------------------ - // equals - // ------------------------------------------------------------------------ - - public void testEqualsReflexivity() throws Exception { - assertTrue("equals", fRequest1.equals(fRequest1)); - assertTrue("equals", fRequest2.equals(fRequest2)); - - assertFalse("equals", fRequest1.equals(fRequest2)); - assertFalse("equals", fRequest2.equals(fRequest1)); - } - - public void testEqualsSymmetry() throws Exception { - assertTrue("equals", fRequest1.equals(fRequest1b)); - assertTrue("equals", fRequest1b.equals(fRequest1)); - - assertFalse("equals", fRequest1.equals(fRequest3)); - assertFalse("equals", fRequest2.equals(fRequest3)); - assertFalse("equals", fRequest3.equals(fRequest1)); - assertFalse("equals", fRequest3.equals(fRequest2)); - } - - public void testEqualsTransivity() throws Exception { - assertTrue("equals", fRequest1.equals(fRequest1b)); - assertTrue("equals", fRequest1b.equals(fRequest1c)); - assertTrue("equals", fRequest1.equals(fRequest1c)); - } - - public void testEqualsNull() throws Exception { - assertFalse("equals", fRequest1.equals(null)); - assertFalse("equals", fRequest2.equals(null)); - } - - public void testEqualsSuper() throws Exception { - TmfCoalescedDataRequest dataRequest1 = new TmfCoalescedDataRequest( - fRequest1.getDataType(), fRequest1.getIndex(), fRequest1.getNbRequested(), fRequest1.getBlockize()); - TmfCoalescedDataRequest dataRequest2 = new TmfCoalescedDataRequest( - fRequest1.getDataType(), fRequest1.getIndex(), fRequest1.getNbRequested(), fRequest1.getBlockize()); - TmfCoalescedDataRequest dataRequest3 = new TmfCoalescedDataRequest( - fRequest3.getDataType(), fRequest3.getIndex(), fRequest3.getNbRequested(), fRequest3.getBlockize()); - - assertTrue("equals", fRequest1.equals(dataRequest2)); - assertTrue("equals", fRequest2.equals(dataRequest1)); - assertFalse("equals", fRequest1.equals(dataRequest3)); - assertFalse("equals", fRequest3.equals(dataRequest1)); - } - - // ------------------------------------------------------------------------ - // hashCode - // ------------------------------------------------------------------------ - - public void testHashCode() throws Exception { - assertTrue("hashCode", fRequest1.hashCode() == fRequest1.hashCode()); - assertTrue("hashCode", fRequest2.hashCode() == fRequest2.hashCode()); - assertTrue("hashCode", fRequest1.hashCode() != fRequest2.hashCode()); - } - - // ------------------------------------------------------------------------ - // toString - // ------------------------------------------------------------------------ - - 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)]"; - - assertEquals("toString", expected1, fRequest1.toString()); - assertEquals("toString", expected2, fRequest2.toString()); - assertEquals("toString", expected3, fRequest3.toString()); - assertEquals("toString", expected4, fRequest4.toString()); + assertEquals("getBlockize", 200, request.getBlockize()); } // ------------------------------------------------------------------------ @@ -271,207 +141,26 @@ public class TmfCoalescedEventRequestTest extends TestCase { // ------------------------------------------------------------------------ public void testIsCompatible() { - TmfCoalescedEventRequest coalescedRequest = new TmfCoalescedEventRequest(TmfEvent.class, range1, 100, 200); - 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); + TmfTimestamp startTime = new TmfTimestamp(10); + TmfTimestamp endTime = new TmfTimestamp(20); + TmfTimeRange range1 = new TmfTimeRange(startTime, endTime); + TmfTimeRange range2 = new TmfTimeRange(TmfTimestamp.BigBang, endTime); + TmfTimeRange range3 = new TmfTimeRange(startTime, TmfTimestamp.BigCrunch); + + TmfCoalescedEventRequest coalescedRequest = new TmfCoalescedEventRequest(TmfEvent.class, range1); + TmfDataRequest request1 = new TmfEventRequestStub(TmfEvent.class, range1); + TmfDataRequest request2 = new TmfEventRequestStub(TmfEvent.class, range2); + TmfDataRequest request3 = new TmfEventRequestStub(TmfEvent.class, range3); assertTrue ("isCompatible", coalescedRequest.isCompatible(request1)); assertFalse("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()); - } - } - - // ------------------------------------------------------------------------ - // done - // ------------------------------------------------------------------------ - - public void testDone() { - - // Test request - final boolean[] crFlags = new boolean[4]; - TmfCoalescedEventRequest request = setupTestRequest(crFlags); - TmfEventRequest subRequest1 = new TmfEventRequestStub(TmfEvent.class, range1, 100, 200); - TmfEventRequest subRequest2 = new TmfEventRequestStub(TmfEvent.class, range1, 100, 200); - request.addRequest(subRequest1); - request.addRequest(subRequest2); - - request.done(); - - // Validate the coalescing request - assertTrue ("isCompleted", request.isCompleted()); - assertFalse("isFailed", request.isFailed()); - assertFalse("isCancelled", request.isCancelled()); - - assertTrue ("handleCompleted", crFlags[0]); - assertTrue ("handleSuccess", crFlags[1]); - assertFalse("handleFailure", crFlags[2]); - assertFalse("handleCancel", crFlags[3]); - - // Validate the first coalesced request - assertTrue ("isCompleted", subRequest1.isCompleted()); - assertFalse("isFailed", subRequest1.isFailed()); - assertFalse("isCancelled", subRequest1.isCancelled()); - - // Validate the second coalesced request - assertTrue ("isCompleted", subRequest2.isCompleted()); - assertFalse("isFailed", subRequest2.isFailed()); - assertFalse("isCancelled", subRequest2.isCancelled()); - } - - // ------------------------------------------------------------------------ - // fail - // ------------------------------------------------------------------------ - - public void testFail() { - - final boolean[] crFlags = new boolean[4]; - TmfCoalescedEventRequest request = setupTestRequest(crFlags); - TmfEventRequest subRequest1 = new TmfEventRequestStub(TmfEvent.class, range1, 100, 200); - TmfEventRequest subRequest2 = new TmfEventRequestStub(TmfEvent.class, range1, 100, 200); - request.addRequest(subRequest1); - request.addRequest(subRequest2); - - request.fail(); - - // Validate the coalescing request - assertTrue ("isCompleted", request.isCompleted()); - assertTrue ("isFailed", request.isFailed()); - assertFalse("isCancelled", request.isCancelled()); - - assertTrue ("handleCompleted", crFlags[0]); - assertFalse("handleSuccess", crFlags[1]); - assertTrue ("handleFailure", crFlags[2]); - assertFalse("handleCancel", crFlags[3]); - - // Validate the first coalesced request - assertTrue ("isCompleted", subRequest1.isCompleted()); - assertTrue ("isFailed", subRequest1.isFailed()); - assertFalse("isCancelled", subRequest1.isCancelled()); - - // Validate the second coalesced request - assertTrue ("isCompleted", subRequest2.isCompleted()); - assertTrue ("isFailed", subRequest2.isFailed()); - assertFalse("isCancelled", subRequest2.isCancelled()); - } - - // ------------------------------------------------------------------------ - // cancel - // ------------------------------------------------------------------------ - - public void testCancel() { - - final boolean[] crFlags = new boolean[4]; - TmfCoalescedEventRequest request = setupTestRequest(crFlags); - TmfEventRequest subRequest1 = new TmfEventRequestStub(TmfEvent.class, range1, 100, 200); - TmfEventRequest subRequest2 = new TmfEventRequestStub(TmfEvent.class, range1, 100, 200); - request.addRequest(subRequest1); - request.addRequest(subRequest2); - - request.cancel(); - - // Validate the coalescing request - assertTrue ("isCompleted", request.isCompleted()); - assertFalse("isFailed", request.isFailed()); - assertTrue ("isCancelled", request.isCancelled()); - - assertTrue ("handleCompleted", crFlags[0]); - assertFalse("handleSuccess", crFlags[1]); - assertFalse("handleFailure", crFlags[2]); - assertTrue ("handleCancel", crFlags[3]); - - // Validate the first coalesced request - assertTrue ("isCompleted", subRequest1.isCompleted()); - assertFalse("isFailed", subRequest1.isFailed()); - assertTrue ("isCancelled", subRequest1.isCancelled()); - - // Validate the second coalesced request - assertTrue ("isCompleted", subRequest2.isCompleted()); - assertFalse("isFailed", subRequest2.isFailed()); - assertTrue ("isCancelled", subRequest2.isCancelled()); - } - - // ------------------------------------------------------------------------ - // waitForCompletion - // ------------------------------------------------------------------------ - // ------------------------------------------------------------------------ // Coalescing // ------------------------------------------------------------------------ - private static final String DIRECTORY = "testfiles"; - private static final String TEST_STREAM = "A-Test-10K"; - private static final int NB_EVENTS = 10000; - private static final int BLOCK_SIZE = 100; - - // Initialize the test trace - private static TmfTraceStub fTrace = null; - private synchronized TmfTraceStub setupTrace(String path) { - if (fTrace == null) { - try { - URL location = FileLocator.find(TmfCoreTestPlugin.getDefault().getBundle(), new Path(path), null); - File test = new File(FileLocator.toFileURL(location).toURI()); - fTrace = new TmfTraceStub(test.getPath(), 500); - } catch (URISyntaxException e) { - e.printStackTrace(); - } catch (IOException e) { - e.printStackTrace(); - } - } - return fTrace; - } - Vector requestedEvents1; Vector requestedEvents2; Vector requestedEvents3; @@ -480,14 +169,11 @@ public class TmfCoalescedEventRequestTest extends TestCase { TmfEventRequest request2; TmfEventRequest request3; - ITmfDataProvider[] providers; - private class TmfTestTriggerSignal extends TmfSignal { public final boolean forceCancel; public TmfTestTriggerSignal(Object source, boolean cancel) { super(source); forceCancel = cancel; - } } @@ -538,7 +224,7 @@ public class TmfCoalescedEventRequestTest extends TestCase { } }; - providers = (ITmfDataProvider[]) TmfProviderManager.getProviders(TmfEvent.class, TmfTraceStub.class); + ITmfDataProvider[] providers = (ITmfDataProvider[]) TmfProviderManager.getProviders(TmfEvent.class, TmfTraceStub.class); providers[0].sendRequest(request1); providers[0].sendRequest(request2); providers[0].sendRequest(request3); @@ -546,7 +232,7 @@ public class TmfCoalescedEventRequestTest extends TestCase { public void testCoalescedRequest() throws Exception { - fTrace = setupTrace(DIRECTORY + File.separator + TEST_STREAM); + setupTrace(DIRECTORY + File.separator + TEST_STREAM); TmfSignalManager.register(this); TmfTestTriggerSignal signal = new TmfTestTriggerSignal(this, false); @@ -577,13 +263,10 @@ public class TmfCoalescedEventRequestTest extends TestCase { } TmfSignalManager.deregister(this); - fTrace.dispose(); - fTrace = null; } public void testCancelCoalescedRequest() throws Exception { - - fTrace = setupTrace(DIRECTORY + File.separator + TEST_STREAM); + setupTrace(DIRECTORY + File.separator + TEST_STREAM); TmfSignalManager.register(this); TmfTestTriggerSignal signal = new TmfTestTriggerSignal(this, true); @@ -613,8 +296,7 @@ public class TmfCoalescedEventRequestTest extends TestCase { } TmfSignalManager.deregister(this); - fTrace.dispose(); - fTrace = null; } + } 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 491a9bda5f..fd2266f4ee 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 @@ -16,6 +16,7 @@ import junit.framework.TestCase; import org.eclipse.linuxtools.tmf.event.TmfEvent; import org.eclipse.linuxtools.tmf.request.TmfDataRequest; +import org.eclipse.linuxtools.tmf.request.TmfDataRequestStub; /** * TmfDataRequestTest @@ -47,7 +48,7 @@ public class TmfDataRequestTest extends TestCase { // ------------------------------------------------------------------------ public void testTmfDataRequest() { - TmfDataRequest request = new TmfDataRequest(TmfEvent.class); + TmfDataRequest request = new TmfDataRequestStub(TmfEvent.class); assertEquals("getIndex", 0, request.getIndex()); assertEquals("getNbRequestedEvents", TmfDataRequest.ALL_DATA, request.getNbRequested()); @@ -55,7 +56,7 @@ public class TmfDataRequestTest extends TestCase { } public void testTmfDataRequestIndex() { - TmfDataRequest request = new TmfDataRequest(TmfEvent.class, 10); + TmfDataRequest request = new TmfDataRequestStub(TmfEvent.class, 10); assertEquals("getIndex", 10, request.getIndex()); assertEquals("getNbRequestedEvents", TmfDataRequest.ALL_DATA, request.getNbRequested()); @@ -63,7 +64,7 @@ public class TmfDataRequestTest extends TestCase { } public void testTmfDataRequestIndexNbRequested() { - TmfDataRequest request = new TmfDataRequest(TmfEvent.class, 10, 100); + TmfDataRequest request = new TmfDataRequestStub(TmfEvent.class, 10, 100); assertEquals("getIndex", 10, request.getIndex()); assertEquals("getNbRequestedEvents", 100, request.getNbRequested()); @@ -71,11 +72,45 @@ public class TmfDataRequestTest extends TestCase { } public void testTmfDataRequestIndexNbEventsBlocksize() { - TmfDataRequest request = new TmfDataRequest(TmfEvent.class, 10, 100, 200); + TmfDataRequest request = new TmfDataRequestStub(TmfEvent.class, 10, 100, 200); assertEquals("getIndex", 10, request.getIndex()); assertEquals("getNbRequestedEvents", 100, request.getNbRequested()); assertEquals("getBlockize", 200, request.getBlockize()); } + // ------------------------------------------------------------------------ + // equals + // ------------------------------------------------------------------------ + + public void testEquals_Reflexivity() { + TmfDataRequest request = new TmfDataRequestStub(TmfEvent.class, 10, 100, 200); + + assertTrue("request.equals(request)", request.equals(request)); + } + + public void testEquals_Symmetry() { + TmfDataRequest request1 = new TmfDataRequestStub(TmfEvent.class, 10, 100, 200); + TmfDataRequest request2 = new TmfDataRequestStub(TmfEvent.class, 10, 100, 200); + TmfDataRequest request3 = new TmfDataRequestStub(TmfEvent.class, 20, 100, 200); + + assertTrue("request1.equals(request2)", request1.equals(request2)); + assertTrue("request2.equals(request1)", request2.equals(request1)); + + assertFalse("request1.equals(request3)", request1.equals(request3)); + assertFalse("request3.equals(request1)", request3.equals(request1)); + assertFalse("request2.equals(request3)", request2.equals(request3)); + assertFalse("request3.equals(request2)", request3.equals(request2)); + } + + public void testEquals_Transivity() { + TmfDataRequest request1 = new TmfDataRequestStub(TmfEvent.class, 10, 100, 200); + TmfDataRequest request2 = new TmfDataRequestStub(TmfEvent.class, 10, 100, 200); + TmfDataRequest request3 = new TmfDataRequestStub(TmfEvent.class, 10, 100, 200); + + assertTrue("request1.equals(request2)", request1.equals(request2)); + assertTrue("request2.equals(request3)", request2.equals(request3)); + assertTrue("request1.equals(request3)", request1.equals(request3)); + } + } \ No newline at end of file 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 6116c95c28..de1f1666f3 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 @@ -19,6 +19,7 @@ import org.eclipse.linuxtools.tmf.event.TmfTimeRange; import org.eclipse.linuxtools.tmf.event.TmfTimestamp; import org.eclipse.linuxtools.tmf.request.TmfDataRequest; import org.eclipse.linuxtools.tmf.request.TmfEventRequest; +import org.eclipse.linuxtools.tmf.request.TmfEventRequestStub; /** * TmfEventRequestTest @@ -49,8 +50,8 @@ public class TmfEventRequestTest extends TestCase { // Constructors // ------------------------------------------------------------------------ - public void testTmfDataRequest() { - TmfEventRequest request = new TmfEventRequest(TmfEvent.class); + public void testTmfEventRequest() { + TmfEventRequest request = new TmfEventRequestStub(TmfEvent.class); assertEquals("StartTime", TmfTimestamp.BigBang, request.getRange().getStartTime()); assertEquals("EndTime", TmfTimestamp.BigCrunch, request.getRange().getEndTime()); @@ -60,9 +61,9 @@ public class TmfEventRequestTest extends TestCase { assertEquals("getBlockize", TmfDataRequest.DEFAULT_BLOCK_SIZE, request.getBlockize()); } - public void testTmfDataRequestTimeRange() { + public void testTmfEventRequestTimeRange() { TmfTimeRange range = new TmfTimeRange(new TmfTimestamp(), TmfTimestamp.BigCrunch); - TmfEventRequest request = new TmfEventRequest(TmfEvent.class, range); + TmfEventRequest request = new TmfEventRequestStub(TmfEvent.class, range); assertEquals("StartTime", range.getStartTime(), request.getRange().getStartTime()); assertEquals("EndTime", range.getEndTime(), request.getRange().getEndTime()); @@ -72,9 +73,9 @@ public class TmfEventRequestTest extends TestCase { assertEquals("getBlockize", TmfDataRequest.DEFAULT_BLOCK_SIZE, request.getBlockize()); } - public void testTmfDataRequestTimeRangeNbRequested() { + public void testTmfEventRequestTimeRangeNbRequested() { TmfTimeRange range = new TmfTimeRange(new TmfTimestamp(), TmfTimestamp.BigCrunch); - TmfEventRequest request = new TmfEventRequest(TmfEvent.class, range, 100); + TmfEventRequest request = new TmfEventRequestStub(TmfEvent.class, range, 100); assertEquals("StartTime", range.getStartTime(), request.getRange().getStartTime()); assertEquals("EndTime", range.getEndTime(), request.getRange().getEndTime()); @@ -84,9 +85,9 @@ public class TmfEventRequestTest extends TestCase { assertEquals("getBlockize", TmfDataRequest.DEFAULT_BLOCK_SIZE, request.getBlockize()); } - public void testTmfDataRequestTimeRangeNbRequestedBlocksize() { + public void testTmfEventRequestTimeRangeNbRequestedBlocksize() { TmfTimeRange range = new TmfTimeRange(new TmfTimestamp(), TmfTimestamp.BigCrunch); - TmfEventRequest request = new TmfEventRequest(TmfEvent.class, range, 100, 200); + TmfEventRequest request = new TmfEventRequestStub(TmfEvent.class, range, 100, 200); assertEquals("StartTime", range.getStartTime(), request.getRange().getStartTime()); assertEquals("EndTime", range.getEndTime(), request.getRange().getEndTime()); @@ -96,4 +97,48 @@ public class TmfEventRequestTest extends TestCase { assertEquals("getBlockize", 200, request.getBlockize()); } + // ------------------------------------------------------------------------ + // equals + // ------------------------------------------------------------------------ + + public void testEquals_Reflexivity() { + TmfTimeRange range = new TmfTimeRange(new TmfTimestamp(), TmfTimestamp.BigCrunch); + TmfEventRequest request = new TmfEventRequestStub(TmfEvent.class, range, 100, 200); + + assertTrue("request.equals(request)", request.equals(request)); + } + + public void testEquals_Symmetry() { + TmfTimeRange range1 = new TmfTimeRange(new TmfTimestamp(), TmfTimestamp.BigCrunch); + TmfTimeRange range2 = new TmfTimeRange(new TmfTimestamp(), TmfTimestamp.BigCrunch); + TmfTimeRange range3 = new TmfTimeRange(new TmfTimestamp(), TmfTimestamp.Zero); + + TmfEventRequest request1 = new TmfEventRequestStub(TmfEvent.class, range1, 100, 200); + TmfEventRequest request2 = new TmfEventRequestStub(TmfEvent.class, range2, 100, 200); + TmfEventRequest request3 = new TmfEventRequestStub(TmfEvent.class, range3, 100, 200); + + assertTrue("request1.equals(request2)", request1.equals(request2)); + assertTrue("request2.equals(request1)", request2.equals(request1)); + + assertFalse("request1.equals(request3)", request1.equals(request3)); + assertFalse("request3.equals(request1)", request3.equals(request1)); + assertFalse("request2.equals(request3)", request2.equals(request3)); + assertFalse("request3.equals(request2)", request3.equals(request2)); + } + + public void testEquals_Transivity() { + TmfTimeRange range1 = new TmfTimeRange(new TmfTimestamp(), TmfTimestamp.BigCrunch); + + TmfEventRequest request1 = new TmfEventRequestStub(TmfEvent.class, range1, 100, 200); + TmfEventRequest request2 = new TmfEventRequestStub(TmfEvent.class, range1, 100, 200); + TmfEventRequest request3 = new TmfEventRequestStub(TmfEvent.class, range1, 100, 200); + + assertTrue("request1.equals(request2)", request1.equals(request2)); + assertTrue("request1.equals(request3)", request1.equals(request3)); + assertTrue("request2.equals(request1)", request2.equals(request1)); + assertTrue("request2.equals(request3)", request2.equals(request3)); + assertTrue("request3.equals(request1)", request3.equals(request1)); + assertTrue("request3.equals(request2)", request3.equals(request2)); + } + } \ No newline at end of file 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 732fa14647..6ef340bcac 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 @@ -206,7 +206,8 @@ public class TmfExperimentTest extends TestCase { } } }; - fExperiment.processRequest(request, true); + fExperiment.sendRequest(request); + request.waitForCompletion(); assertEquals("nbEvents", nbEvents, requestedEvents.size()); assertTrue("isCompleted", request.isCompleted()); @@ -234,7 +235,8 @@ public class TmfExperimentTest extends TestCase { } } }; - fExperiment.processRequest(request, true); + fExperiment.sendRequest(request); + request.waitForCompletion(); assertEquals("nbEvents", nbEvents, requestedEvents.size()); assertTrue("isCompleted", request.isCompleted()); @@ -263,7 +265,8 @@ public class TmfExperimentTest extends TestCase { } } }; - fExperiment.processRequest(request, true); + fExperiment.sendRequest(request); + request.waitForCompletion(); assertEquals("nbEvents", nbExpectedEvents, requestedEvents.size()); assertTrue("isCompleted", request.isCompleted()); @@ -297,7 +300,8 @@ public class TmfExperimentTest extends TestCase { cancel(); } }; - fExperiment.processRequest(request, true); + fExperiment.sendRequest(request); + request.waitForCompletion(); assertEquals("nbEvents", blockSize, requestedEvents.size()); assertTrue("isCompleted", request.isCompleted()); 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 b2460d2888..14ffe0d5b9 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 @@ -22,7 +22,7 @@ import junit.framework.TestCase; import org.eclipse.core.runtime.FileLocator; import org.eclipse.core.runtime.Path; -import org.eclipse.linuxtools.tmf.component.TmfDataProvider; +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.TmfTimeRange; @@ -226,8 +226,9 @@ public class TmfTraceTest extends TestCase { } } }; - TmfDataProvider[] providers = (TmfDataProvider[]) TmfProviderManager.getProviders(TmfEvent.class, TmfTraceStub.class); - providers[0].processRequest(request, true); + ITmfDataProvider[] providers = (ITmfDataProvider[]) TmfProviderManager.getProviders(TmfEvent.class, TmfTraceStub.class); + providers[0].sendRequest(request); + request.waitForCompletion(); assertEquals("nbEvents", NB_EVENTS, requestedEvents.size()); assertTrue("isCompleted", request.isCompleted()); @@ -255,8 +256,9 @@ public class TmfTraceTest extends TestCase { } } }; - TmfDataProvider[] providers = (TmfDataProvider[]) TmfProviderManager.getProviders(TmfEvent.class, TmfTraceStub.class); - providers[0].processRequest(request, true); + ITmfDataProvider[] providers = (ITmfDataProvider[]) TmfProviderManager.getProviders(TmfEvent.class, TmfTraceStub.class); + providers[0].sendRequest(request); + request.waitForCompletion(); assertEquals("nbEvents", NB_EVENTS, requestedEvents.size()); assertTrue("isCompleted", request.isCompleted()); @@ -289,8 +291,9 @@ public class TmfTraceTest extends TestCase { cancel(); } }; - TmfDataProvider[] providers = (TmfDataProvider[]) TmfProviderManager.getProviders(TmfEvent.class, TmfTraceStub.class); - providers[0].processRequest(request, true); + ITmfDataProvider[] providers = (ITmfDataProvider[]) TmfProviderManager.getProviders(TmfEvent.class, TmfTraceStub.class); + providers[0].sendRequest(request); + request.waitForCompletion(); assertEquals("nbEvents", NB_EVENTS, requestedEvents.size()); assertTrue("isCompleted", request.isCompleted()); diff --git a/org.eclipse.linuxtools.tmf.tests/stubs/org/eclipse/linuxtools/tmf/component/TmfEventProviderStub.java b/org.eclipse.linuxtools.tmf.tests/stubs/org/eclipse/linuxtools/tmf/component/TmfEventProviderStub.java index 6c277a63b1..676db78a10 100644 --- a/org.eclipse.linuxtools.tmf.tests/stubs/org/eclipse/linuxtools/tmf/component/TmfEventProviderStub.java +++ b/org.eclipse.linuxtools.tmf.tests/stubs/org/eclipse/linuxtools/tmf/component/TmfEventProviderStub.java @@ -53,6 +53,12 @@ public class TmfEventProviderStub extends TmfEventProvider { public TmfEventProviderStub() throws IOException { this(DIRECTORY + File.separator + TEST_STREAM); } + + @Override + public void deregister() { + fTrace.deregister(); + super.deregister(); + } // ------------------------------------------------------------------------ // TmfEventProvider 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 bbbbdd07ce..75e21d2e02 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 @@ -39,8 +39,8 @@ public class TmfSyntheticEventProviderStub extends TmfEventProvider request) { // Get the TmfSyntheticEventStub provider - TmfDataProvider[] eventProviders = (TmfDataProvider[]) TmfProviderManager.getProviders(TmfEvent.class, TmfEventProviderStub.class); - TmfDataProvider provider = eventProviders[0]; + ITmfDataProvider[] eventProviders = (ITmfDataProvider[]) TmfProviderManager.getProviders(TmfEvent.class, TmfEventProviderStub.class); + ITmfDataProvider provider = eventProviders[0]; // make sure we have the right type of request if (!(request instanceof TmfEventRequest)) { @@ -64,7 +64,7 @@ public class TmfSyntheticEventProviderStub extends TmfEventProvider extends TmfDataRequest { * Default constructor */ public TmfDataRequestStub(Class dataType) { - super(dataType); + this(dataType, 0, ALL_DATA, DEFAULT_BLOCK_SIZE); } /** * @param nbRequested */ public TmfDataRequestStub(Class dataType, int index) { - super(dataType, index); + this(dataType, index, ALL_DATA, DEFAULT_BLOCK_SIZE); } /** @@ -40,7 +40,7 @@ public class TmfDataRequestStub extends TmfDataRequest { * @param nbRequested */ public TmfDataRequestStub(Class dataType, int index, int nbRequested) { - super(dataType, index, nbRequested); + this(dataType, index, nbRequested, DEFAULT_BLOCK_SIZE); } /** 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..fc305b69b6 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 @@ -26,14 +26,14 @@ public class TmfEventRequestStub extends TmfEventRequest * @param range */ public TmfEventRequestStub(Class dataType) { - super(dataType); + this(dataType, TmfTimeRange.Eternity, ALL_DATA, DEFAULT_BLOCK_SIZE); } /** * @param range */ public TmfEventRequestStub(Class dataType, TmfTimeRange range) { - super(dataType, range); + this(dataType, range, ALL_DATA, DEFAULT_BLOCK_SIZE); } /** @@ -41,7 +41,7 @@ public class TmfEventRequestStub extends TmfEventRequest * @param nbRequested */ public TmfEventRequestStub(Class dataType, TmfTimeRange range, int nbRequested) { - super(dataType, range, nbRequested); + this(dataType, range, nbRequested, DEFAULT_BLOCK_SIZE); } /** diff --git a/org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/tmf/ui/views/TmfEventsView.java b/org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/tmf/ui/views/TmfEventsView.java index e7b07fc276..64565ce2df 100644 --- a/org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/tmf/ui/views/TmfEventsView.java +++ b/org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/tmf/ui/views/TmfEventsView.java @@ -171,7 +171,8 @@ public class TmfEventsView extends TmfView { } } }; - fExperiment.processRequest(request, true); + fExperiment.sendRequest(request); + request.waitForCompletion(); if (cache[0] != null && cacheStartIndex == index) { item.setText(extractItemFields(cache[0])); @@ -187,7 +188,7 @@ public class TmfEventsView extends TmfView { // If an experiment is already selected, update the table fExperiment = (TmfExperiment) TmfExperiment.getCurrentExperiment(); if (fExperiment != null) { - experimentSelected(new TmfExperimentSelectedSignal(fTable, fExperiment)); + experimentSelected(new TmfExperimentSelectedSignal(fTable, fExperiment)); } } @@ -245,7 +246,7 @@ public class TmfEventsView extends TmfView { @SuppressWarnings("unchecked") @TmfSignalHandler - public void experimentSelected(TmfExperimentSelectedSignal signal) { + public void experimentSelected(TmfExperimentSelectedSignal signal) { // Update the trace reference fExperiment = (TmfExperiment) signal.getExperiment(); setPartName(fTitlePrefix + " - " + fExperiment.getName()); diff --git a/org.eclipse.linuxtools.tmf/src/org/eclipse/linuxtools/tmf/component/ITmfDataProvider.java b/org.eclipse.linuxtools.tmf/src/org/eclipse/linuxtools/tmf/component/ITmfDataProvider.java index fd0afbc4ec..23eefd3d34 100644 --- a/org.eclipse.linuxtools.tmf/src/org/eclipse/linuxtools/tmf/component/ITmfDataProvider.java +++ b/org.eclipse.linuxtools.tmf/src/org/eclipse/linuxtools/tmf/component/ITmfDataProvider.java @@ -1,33 +1,10 @@ -/******************************************************************************* - * Copyright (c) 2009, 2010 Ericsson - * - * All rights reserved. This program and the accompanying materials are - * made available under the terms of the Eclipse Public License v1.0 which - * accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * Francois Chouinard - Initial API and implementation - *******************************************************************************/ - package org.eclipse.linuxtools.tmf.component; import org.eclipse.linuxtools.tmf.event.TmfData; -import org.eclipse.linuxtools.tmf.request.ITmfDataRequest; +import org.eclipse.linuxtools.tmf.request.TmfDataRequest; -/** - * ITmfDataRequest - *

- * TODO: Implement me. Please. - */ public interface ITmfDataProvider { - // ------------------------------------------------------------------------ - // Constants - // ------------------------------------------------------------------------ - - public enum ExecutionType { SHORT, LONG }; - /** * Queues the request for processing. * @@ -35,8 +12,6 @@ public interface ITmfDataProvider { * * @param request The request to process */ - public void sendRequest(ITmfDataRequest request); - public void sendRequest(ITmfDataRequest request, ExecutionType type); - public void fireRequests(); + public void sendRequest(TmfDataRequest request); } 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 acdbbfa322..ae68357fb6 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 @@ -16,9 +16,11 @@ import java.lang.reflect.Array; import java.util.Vector; import java.util.concurrent.BlockingQueue; import java.util.concurrent.LinkedBlockingQueue; +import java.util.concurrent.SynchronousQueue; import org.eclipse.linuxtools.tmf.event.TmfData; -import org.eclipse.linuxtools.tmf.request.ITmfRequestHandler; +import org.eclipse.linuxtools.tmf.request.ITmfDataRequest; +import org.eclipse.linuxtools.tmf.request.TmfCoalescedDataRequest; import org.eclipse.linuxtools.tmf.request.TmfDataRequest; import org.eclipse.linuxtools.tmf.request.TmfRequestExecutor; import org.eclipse.linuxtools.tmf.signal.TmfEndSynchSignal; @@ -39,7 +41,7 @@ import org.eclipse.linuxtools.tmf.trace.ITmfContext; *

* TODO: Add support for providing multiple data types. */ -public abstract class TmfDataProvider extends TmfComponent implements ITmfRequestHandler { +public abstract class TmfDataProvider extends TmfComponent implements ITmfDataProvider { final protected Class fType; @@ -48,8 +50,10 @@ public abstract class TmfDataProvider extends TmfComponent im protected final BlockingQueue fDataQueue; protected final TmfRequestExecutor fExecutor; + private Integer fSynchDepth; + // ------------------------------------------------------------------------ - // Constructors (enforce that a type be supplied) + // Constructors // ------------------------------------------------------------------------ public TmfDataProvider(String name, Class type) { @@ -60,8 +64,10 @@ public abstract class TmfDataProvider extends TmfComponent im super(name); fQueueSize = queueSize; fType = type; - fDataQueue = new LinkedBlockingQueue(fQueueSize); + fDataQueue = (queueSize > 1) ? new LinkedBlockingQueue(fQueueSize) : new SynchronousQueue(); + fExecutor = new TmfRequestExecutor(); + fSynchDepth = 0; register(); } @@ -85,25 +91,58 @@ public abstract class TmfDataProvider extends TmfComponent im // ITmfRequestHandler // ------------------------------------------------------------------------ - // TODO: Request coalescing, filtering, result dispatching + public void sendRequest(final TmfDataRequest request) { + + if (fSynchDepth > 0) { + // We are in coalescing mode: client should NEVER wait + // (otherwise we will have deadlock...) + coalesceDataRequest(request); + } else { + // Process the request immediately + queueRequest(request); + } + } + + /** + * This method queues the coalesced requests. + * + * @param thread + */ + private synchronized void fireRequests() { + for (TmfDataRequest request : fPendingCoalescedRequests) { + queueRequest(request); + } + fPendingCoalescedRequests.clear(); + } + + // ------------------------------------------------------------------------ + // Coalescing (primitive test...) + // ------------------------------------------------------------------------ - public void processRequest(final TmfDataRequest request, boolean waitForCompletion) { + protected Vector> fPendingCoalescedRequests = new Vector>(); -// System.out.println("[" + getName() + "]" + " New request: " + request.getRequestId()); -// if (request.getRequestId() == 0) { -// System.out.println(""); -// } - - //Process the request - processDataRequest(request); + protected synchronized void newCoalescedDataRequest(TmfDataRequest request) { + TmfCoalescedDataRequest coalescedRequest = + new TmfCoalescedDataRequest(fType, request.getIndex(), request.getNbRequested(), request.getBlockize()); + coalescedRequest.addRequest(request); + fPendingCoalescedRequests.add(coalescedRequest); + } - // Wait for completion if requested - if (waitForCompletion) { - request.waitForCompletion(); + protected synchronized void coalesceDataRequest(TmfDataRequest request) { + for (TmfCoalescedDataRequest req : fPendingCoalescedRequests) { + if (req.isCompatible(request)) { + req.addRequest(request); + return; + } } + newCoalescedDataRequest(request); } - protected void processDataRequest(final TmfDataRequest request) { + // ------------------------------------------------------------------------ + // Request processing + // ------------------------------------------------------------------------ + + protected void queueRequest(final TmfDataRequest request) { // Process the request Thread thread = new Thread() { @@ -153,7 +192,7 @@ public abstract class TmfDataProvider extends TmfComponent im * @param data */ @SuppressWarnings("unchecked") - protected void pushData(TmfDataRequest request, Vector data) { + protected void pushData(ITmfDataRequest request, Vector data) { synchronized(request) { if (!request.isCompleted()) { T[] result = (T[]) Array.newInstance(fType, data.size()); @@ -165,6 +204,15 @@ public abstract class TmfDataProvider extends TmfComponent im } } + /** + * Initialize the provider based on the request. The context is + * provider specific and will be updated by getNext(). + * + * @param request + * @return an application specific context; null if request can't be serviced + */ + public abstract ITmfContext armRequest(TmfDataRequest request); + /** * Return the next piece of data based on the context supplied. The context * would typically be updated for the subsequent read. @@ -182,6 +230,11 @@ public abstract class TmfDataProvider extends TmfComponent im return null; } + /** + * Makes the generated result data available for getNext() + * + * @param data + */ public void queueResult(T data) { try { fDataQueue.put(data); @@ -190,15 +243,6 @@ public abstract class TmfDataProvider extends TmfComponent im } } - /** - * Initialize the provider based on the request. The context is - * provider specific and will be updated by getNext(). - * - * @param request - * @return an application specific context; null if request can't be serviced - */ - public abstract ITmfContext armRequest(TmfDataRequest request); - /** * Checks if the data meets the request completion criteria. * @@ -210,16 +254,25 @@ public abstract class TmfDataProvider extends TmfComponent im return request.isCompleted() || nbRead >= request.getNbRequested(); } + // ------------------------------------------------------------------------ + // Signal handlers + // ------------------------------------------------------------------------ + @TmfSignalHandler public void startSynch(TmfStartSynchSignal signal) { -// if (getName().equals("MyExperiment")) -// System.out.println("[" + getName() + "]" + " Start synch: " + signal.getReference()); + synchronized(fSynchDepth) { + fSynchDepth++; + } } @TmfSignalHandler public void endSynch(TmfEndSynchSignal signal) { -// if (getName().equals("MyExperiment")) -// System.out.println("[" + getName() + "]" + " End synch: " + signal.getReference()); + synchronized(fSynchDepth) { + fSynchDepth--; + if (fSynchDepth == 0) { + fireRequests(); + } + } } } 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 1654b78639..ae9a16a5ad 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 @@ -14,6 +14,7 @@ package org.eclipse.linuxtools.tmf.component; import org.eclipse.linuxtools.tmf.event.TmfEvent; import org.eclipse.linuxtools.tmf.event.TmfTimestamp; +import org.eclipse.linuxtools.tmf.request.TmfCoalescedEventRequest; import org.eclipse.linuxtools.tmf.request.TmfDataRequest; import org.eclipse.linuxtools.tmf.request.TmfEventRequest; @@ -42,4 +43,15 @@ public abstract class TmfEventProvider extends TmfDataProvid return dataRequestCompleted; } + @Override + protected synchronized void newCoalescedDataRequest(TmfDataRequest request) { + if (request instanceof TmfEventRequest) { + TmfEventRequest eventRequest = (TmfEventRequest) request; + TmfCoalescedEventRequest coalescedRequest = + new TmfCoalescedEventRequest(fType, eventRequest.getRange(), eventRequest.getNbRequested(), eventRequest.getBlockize()); + coalescedRequest.addRequest(eventRequest); + fPendingCoalescedRequests.add(coalescedRequest); + } + } + } diff --git a/org.eclipse.linuxtools.tmf/src/org/eclipse/linuxtools/tmf/event/TmfTimeRange.java b/org.eclipse.linuxtools.tmf/src/org/eclipse/linuxtools/tmf/event/TmfTimeRange.java index 5f90f796ba..9c634bae02 100644 --- a/org.eclipse.linuxtools.tmf/src/org/eclipse/linuxtools/tmf/event/TmfTimeRange.java +++ b/org.eclipse.linuxtools.tmf/src/org/eclipse/linuxtools/tmf/event/TmfTimeRange.java @@ -13,7 +13,7 @@ package org.eclipse.linuxtools.tmf.event; /** - * TmfTimeWindow + * TmfTimeRange *

* A utility class to define time ranges. */ @@ -63,6 +63,16 @@ public class TmfTimeRange { fEndTime = other.fEndTime; } + @Override + public boolean equals(Object other) { + if (other instanceof TmfTimeRange) { + TmfTimeRange range = (TmfTimeRange) other; + return range.fStartTime.equals(fStartTime) && + range.fEndTime.equals(fEndTime); + } + return false; + } + // ======================================================================== // Accessors // ======================================================================== 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 098b59c8d2..b809c1102a 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 @@ -370,50 +370,6 @@ public class TmfExperiment extends TmfEventProvider imple return context; } -// /** -// * Given an experiment event index, position the set of traces so a call -// * to getNextEvent() will retrieve the corresponding event. -// * -// * @param index -// * @param context -// */ -// private synchronized void positionTraces(long index, TmfExperimentContext context) { -// -// // Extract the relevant information -// ITmfTrace[] traces = context.getTraces(); -// TmfEvent[] events = context.getEvents(); -// TmfContext[] contexts = context.getContexts(); -// -// int page = 0; // The checkpoint page -// int current = 0; // The current event index (rank) -// -// // If there is no checkpoint created yet, start from the beginning -// if (fCheckpoints.size() == 0) { -// for (int i = 0; i < contexts.length; i++) { -// contexts[i] = traces[i].seekLocation(null).clone(); -// events[i] = traces[i].parseEvent(contexts[i]); -// } -// } -// else { -// page = (int) index / fIndexPageSize; -// if (page >= fCheckpoints.size()) { -// page = fCheckpoints.size() - 1; -// } -// -//// TmfContext[] checkpoint = fCheckpoints.elementAt(page).getContexts(); -// for (int i = 0; i < contexts.length; i++) { -// contexts[i] = checkpoint[i].clone(); -// events[i] = traces[i].parseEvent(contexts[i]); -// } -// current = page * fIndexPageSize; -// } -// -// // Position the traces at the requested index -// while (current++ < index) { -// getNextEvent(context); -// } -// } - /** * Scan the next events from all traces and return the next one * in chronological order. @@ -449,58 +405,11 @@ public class TmfExperiment extends TmfEventProvider imple return null; } - // public TmfEvent getNextEvent(TmfExperimentContext context) { -// // TODO: Consider the time adjustment -// int trace = 0; -// TmfTimestamp timestamp = TmfTimestamp.BigCrunch; -// if (context.getEvents()[trace] != null) { -// timestamp = context.getEvents()[trace].getTimestamp(); -// } -// for (int i = 1; i < context.getTraces().length; i++) { -// if (context.getEvents()[i].getTimestamp() != null) { -// TmfTimestamp otherTS = context.getEvents()[i].getTimestamp(); -// if (otherTS.compareTo(timestamp, true) < 0) { -// trace = i; -// timestamp = otherTS; -// } -// } -// } -// TmfEvent event = context.getTraces()[trace].getNextEvent(context.getContexts()[trace]); -// context.getEvents()[trace] = context.getTraces()[trace].parseEvent(context.getContexts()[trace]); -// return event; -// } - public TmfEvent parseEvent(TmfContext context) { // TODO Auto-generated method stub return null; } -// /** -// * Scan the next events from all traces and return the next one -// * in chronological order. -// * -// * @param context -// * @return -// */ -// private TmfTimestamp getNextEventTimestamp(TmfExperimentContext context) { -// // TODO: Consider the time adjustment -// int trace = 0; -// TmfTimestamp timestamp = TmfTimestamp.BigCrunch; -// if (context.getEvents()[trace] != null) { -// timestamp = context.getEvents()[trace].getTimestamp(); -// } -// for (int i = 1; i < context.getTraces().length; i++) { -// if (context.getEvents()[i].getTimestamp() != null) { -// TmfTimestamp otherTS = context.getEvents()[i].getTimestamp(); -// if (otherTS.compareTo(timestamp, true) < 0) { -// trace = i; -// timestamp = otherTS; -// } -// } -// } -// return timestamp; -// } - /* (non-Javadoc) * @see java.lang.Object#toString() */ @@ -679,7 +588,7 @@ public class TmfExperiment extends TmfEventProvider imple // ------------------------------------------------------------------------ @TmfSignalHandler - public void experimentSelected(TmfExperimentSelectedSignal signal) { + public void experimentSelected(TmfExperimentSelectedSignal signal) { fCurrentExperiment = signal.getExperiment(); // if (signal.getExperiment() == this) { // indexExperiment(true); diff --git a/org.eclipse.linuxtools.tmf/src/org/eclipse/linuxtools/tmf/experiment/TmfExperimentSelectedSignal.java b/org.eclipse.linuxtools.tmf/src/org/eclipse/linuxtools/tmf/experiment/TmfExperimentSelectedSignal.java index 4d55793d1c..6aafbaa083 100644 --- a/org.eclipse.linuxtools.tmf/src/org/eclipse/linuxtools/tmf/experiment/TmfExperimentSelectedSignal.java +++ b/org.eclipse.linuxtools.tmf/src/org/eclipse/linuxtools/tmf/experiment/TmfExperimentSelectedSignal.java @@ -20,11 +20,11 @@ import org.eclipse.linuxtools.tmf.signal.TmfSignal; *

* TODO: Implement me. Please. */ -public class TmfExperimentSelectedSignal extends TmfSignal { +public class TmfExperimentSelectedSignal extends TmfSignal { - private final TmfExperiment fExperiment; + private final TmfExperiment fExperiment; - public TmfExperimentSelectedSignal(Object source, TmfExperiment experiment) { + public TmfExperimentSelectedSignal(Object source, TmfExperiment experiment) { super(source); fExperiment = experiment; } 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 3290ca8dbf..32ae0d8012 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 @@ -33,7 +33,7 @@ public interface ITmfDataRequest { /** * @return request ID */ - public int getRequestId(); + public long getRequestId(); /** * @return the index of the first event requested @@ -59,7 +59,6 @@ public interface ITmfDataRequest { // Request state // ------------------------------------------------------------------------ - public boolean isRunning(); public boolean isCompleted(); public boolean isFailed(); public boolean isCancelled(); @@ -76,7 +75,6 @@ public interface ITmfDataRequest { // Request handling // ------------------------------------------------------------------------ - public void handleStarted(); public void handleCompleted(); public void handleSuccess(); public void handleFailure(); @@ -86,13 +84,12 @@ public interface ITmfDataRequest { * To suspend the client thread until the request completes * (or is canceled). */ - public void waitForCompletion() throws InterruptedException; + public void waitForCompletion(); // ------------------------------------------------------------------------ // Request state modifiers // ------------------------------------------------------------------------ - public void start(); public void done(); public void fail(); public void cancel(); diff --git a/org.eclipse.linuxtools.tmf/src/org/eclipse/linuxtools/tmf/request/ITmfRequestHandler.java b/org.eclipse.linuxtools.tmf/src/org/eclipse/linuxtools/tmf/request/ITmfRequestHandler.java deleted file mode 100644 index 579ce9b98d..0000000000 --- a/org.eclipse.linuxtools.tmf/src/org/eclipse/linuxtools/tmf/request/ITmfRequestHandler.java +++ /dev/null @@ -1,36 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2009, 2010 Ericsson - * - * All rights reserved. This program and the accompanying materials are - * made available under the terms of the Eclipse Public License v1.0 which - * accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * Francois Chouinard - Initial API and implementation - *******************************************************************************/ - -package org.eclipse.linuxtools.tmf.request; - -import org.eclipse.linuxtools.tmf.event.TmfData; - -/** - * ITmfRequestHandler - *

- * TODO: Implement me. Please. - * @param - */ -public interface ITmfRequestHandler { - - /** - * Process the request. The client thread can be suspended until the - * request is completed (e.g. for a specific range of events) or it - * can choose to process the events asynchronously (e.g. for streaming). - * - * If the request can't be serviced, it will fail (i.e. isFailed() will be set). - * - * @param request The request to process - * @param waitForCompletion Suspend the client thread until the request completes - */ - public void processRequest(TmfDataRequest request, boolean waitForCompletion); -} 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 957b1aee5f..f47b6f5459 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 @@ -27,7 +27,7 @@ public class TmfCoalescedDataRequest extends TmfDataRequest> fRequests = new Vector>(); + protected Vector> fRequests = new Vector>(); // ------------------------------------------------------------------------ // Constructor @@ -68,13 +68,13 @@ public class TmfCoalescedDataRequest extends TmfDataRequest request) { + public void addRequest(TmfDataRequest request) { fRequests.add(request); } - public boolean isCompatible(ITmfDataRequest request) { + public boolean isCompatible(TmfDataRequest request) { - boolean ok = request.getIndex() == getIndex(); + boolean ok = request.getIndex() == getIndex();; ok &= request.getNbRequested() == getNbRequested(); ok &= request.getBlockize() == getBlockize(); @@ -87,61 +87,59 @@ public class TmfCoalescedDataRequest extends TmfDataRequest request : fRequests) { + for (TmfDataRequest request : fRequests) { request.setData(getData()); request.handleData(); } } @Override - public void done() { - for (ITmfDataRequest request : fRequests) { - request.done(); + public void handleCompleted() { + for (TmfDataRequest request : fRequests) { + request.handleCompleted(); } - super.done(); } @Override - public void fail() { - for (ITmfDataRequest request : fRequests) { - request.fail(); + public void handleSuccess() { + for (TmfDataRequest request : fRequests) { + request.handleSuccess(); } - super.fail(); } @Override - public void cancel() { - for (ITmfDataRequest request : fRequests) { - request.cancel(); + public void handleFailure() { + for (TmfDataRequest request : fRequests) { + request.handleFailure(); } - super.cancel(); } - // ------------------------------------------------------------------------ - // Object - // ------------------------------------------------------------------------ + @Override + public void handleCancel() { + for (TmfDataRequest request : fRequests) { + request.handleCancel(); + } + } @Override - // All requests have a unique id - public int hashCode() { - return super.hashCode(); + public void done() { + for (TmfDataRequest request : fRequests) { + request.done(); + } } @Override - public boolean equals(Object other) { - if (other instanceof TmfCoalescedDataRequest) { - TmfCoalescedDataRequest request = (TmfCoalescedDataRequest) other; - return (request.getDataType() == getDataType()) && - (request.getIndex() == getIndex()) && - (request.getNbRequested() == getNbRequested()); - } - return false; + public void fail() { + for (TmfDataRequest request : fRequests) { + request.fail(); + } } @Override - public String toString() { - return "[TmfCoalescedDataRequest(" + getRequestId() + "," + getDataType().getSimpleName() - + "," + getIndex() + "," + getNbRequested() + "," + getBlockize() + ")]"; + public void cancel() { + for (TmfDataRequest request : fRequests) { + request.cancel(); + } } } diff --git a/org.eclipse.linuxtools.tmf/src/org/eclipse/linuxtools/tmf/request/TmfCoalescedEventRequest.java b/org.eclipse.linuxtools.tmf/src/org/eclipse/linuxtools/tmf/request/TmfCoalescedEventRequest.java index 59a6dea598..2caab92ae2 100644 --- a/org.eclipse.linuxtools.tmf/src/org/eclipse/linuxtools/tmf/request/TmfCoalescedEventRequest.java +++ b/org.eclipse.linuxtools.tmf/src/org/eclipse/linuxtools/tmf/request/TmfCoalescedEventRequest.java @@ -14,7 +14,6 @@ package org.eclipse.linuxtools.tmf.request; import org.eclipse.linuxtools.tmf.event.TmfEvent; import org.eclipse.linuxtools.tmf.event.TmfTimeRange; -import org.eclipse.linuxtools.tmf.event.TmfTimestamp; /** * TmfCoalescedEventRequest @@ -27,7 +26,7 @@ public class TmfCoalescedEventRequest extends TmfCoalescedDa // Attributes // ------------------------------------------------------------------------ - private TmfTimeRange fRange; // The requested events time range + private final TmfTimeRange fRange; // The requested events time range // ------------------------------------------------------------------------ // Constructor @@ -70,44 +69,16 @@ public class TmfCoalescedEventRequest extends TmfCoalescedDa // ------------------------------------------------------------------------ @Override - public boolean isCompatible(ITmfDataRequest request) { - if (request instanceof ITmfEventRequest) { + public boolean isCompatible(TmfDataRequest request) { + if (request instanceof TmfEventRequest) { boolean ok = getNbRequested() == request.getNbRequested(); ok &= getBlockize() == request.getBlockize(); - if (ok) { - TmfTimestamp startTime = ((ITmfEventRequest) request).getRange().getStartTime(); - TmfTimestamp endTime = ((ITmfEventRequest) request).getRange().getEndTime(); - if (!fRange.contains(startTime)) - fRange = new TmfTimeRange(startTime, fRange.getEndTime()); - if (!fRange.contains(endTime)) - fRange = new TmfTimeRange(fRange.getStartTime(), endTime); - } + ok &= fRange.equals(((TmfEventRequest) request).getRange()); return ok; } return false; } - // ------------------------------------------------------------------------ - // ITmfDataRequest - // ------------------------------------------------------------------------ - - @Override - public void handleData() { - for (ITmfDataRequest request : fRequests) { - if (request instanceof TmfEventRequest) { - TmfEventRequest req = (TmfEventRequest) request; - T[] data = getData(); - if (data.length > 0 && req.getRange().contains(data[0].getTimestamp())) { - req.setData(data); - req.handleData(); - } - } - else { - super.handleData(); - } - } - } - // ------------------------------------------------------------------------ // ITmfEventRequest // ------------------------------------------------------------------------ @@ -116,35 +87,4 @@ public class TmfCoalescedEventRequest extends TmfCoalescedDa return fRange; } - // ------------------------------------------------------------------------ - // Object - // ------------------------------------------------------------------------ - - @Override - // All requests have a unique id - public int hashCode() { - return super.hashCode(); - } - - @Override - public boolean equals(Object other) { - if (other instanceof TmfCoalescedEventRequest) { - TmfCoalescedEventRequest request = (TmfCoalescedEventRequest) other; - return (request.getDataType() == getDataType()) && - (request.getIndex() == getIndex()) && - (request.getNbRequested() == getNbRequested()) && - (request.getRange().equals(getRange())); - } - if (other instanceof TmfCoalescedDataRequest) { - return super.equals(other); - } - return false; - } - - @Override - public String toString() { - return "[TmfCoalescedEventRequest(" + getRequestId() + "," + getDataType().getSimpleName() - + "," + getRange() + "," + getNbRequested() + "," + getBlockize() + ")]"; - } - } 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 f51d0e19bb..a96dc6367b 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 @@ -66,7 +66,7 @@ import org.eclipse.linuxtools.tmf.event.TmfData; * * TODO: Implement request failures (codes, etc...) */ -public class TmfDataRequest { +public abstract class TmfDataRequest implements ITmfDataRequest { // ------------------------------------------------------------------------ // Constants @@ -84,7 +84,7 @@ public class TmfDataRequest { // Attributes // ------------------------------------------------------------------------ - private final Class fDataType; + private final Class fDataType; 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) @@ -105,14 +105,14 @@ public class TmfDataRequest { /** * Default constructor */ - public TmfDataRequest(Class dataType) { + public TmfDataRequest(Class dataType) { this(dataType, 0, ALL_DATA, DEFAULT_BLOCK_SIZE); } /** * @param nbRequested */ - public TmfDataRequest(Class dataType, int index) { + public TmfDataRequest(Class dataType, int index) { this(dataType, index, ALL_DATA, DEFAULT_BLOCK_SIZE); } @@ -120,7 +120,7 @@ public class TmfDataRequest { * @param index * @param nbRequested */ - public TmfDataRequest(Class dataType, int index, int nbRequested) { + public TmfDataRequest(Class dataType, int index, int nbRequested) { this(dataType, index, nbRequested, DEFAULT_BLOCK_SIZE); } @@ -129,7 +129,7 @@ public class TmfDataRequest { * @param nbRequested * @param blockSize */ - public TmfDataRequest(Class dataType, int index, int nbRequested, int blockSize) { + public TmfDataRequest(Class dataType, int index, int nbRequested, int blockSize) { fRequestId = fRequestNumber++; fDataType = dataType; fIndex = index; @@ -137,7 +137,24 @@ public class TmfDataRequest { fBlockSize = blockSize; fNbRead = 0; } - + + @Override + public boolean equals(Object other) { + if (other instanceof TmfDataRequest) { + TmfDataRequest request = (TmfDataRequest) other; + return (request.fDataType == fDataType) && + (request.fIndex == fIndex) && + (request.fNbRequested == fNbRequested); + } + return false; + } + +// @Override +// public int hashCode() { +// int hash = 0; +// return hash; +// } + // ------------------------------------------------------------------------ // Accessors // ------------------------------------------------------------------------ @@ -150,9 +167,9 @@ public class TmfDataRequest { } /** - * @return the index + * @return the index of the first event requested */ - public long getIndex() { + public int getIndex() { return fIndex; } @@ -201,7 +218,7 @@ public class TmfDataRequest { /** * @return the requested data type */ - public Class getDataType() { + public Class getDataType() { return fDataType; } @@ -241,8 +258,7 @@ public class TmfDataRequest { * * @param events - an array of events */ - public void handleData() { - } + public abstract void handleData(); /** * Handle the completion of the request. It is called when there is no more 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 678125cf36..742d978ff3 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 @@ -20,7 +20,7 @@ import org.eclipse.linuxtools.tmf.event.TmfTimeRange; *

* Implement me. Please. */ -public class TmfEventRequest extends TmfDataRequest { +public abstract class TmfEventRequest extends TmfDataRequest implements ITmfEventRequest { // ------------------------------------------------------------------------ // Attributes @@ -35,14 +35,14 @@ public class TmfEventRequest extends TmfDataRequest { /** * @param range */ - public TmfEventRequest(Class dataType) { + public TmfEventRequest(Class dataType) { this(dataType, TmfTimeRange.Eternity, ALL_DATA, DEFAULT_BLOCK_SIZE); } /** * @param range */ - public TmfEventRequest(Class dataType, TmfTimeRange range) { + public TmfEventRequest(Class dataType, TmfTimeRange range) { this(dataType, range, ALL_DATA, DEFAULT_BLOCK_SIZE); } @@ -50,7 +50,7 @@ public class TmfEventRequest extends TmfDataRequest { * @param range * @param nbRequested */ - public TmfEventRequest(Class dataType, TmfTimeRange range, int nbRequested) { + public TmfEventRequest(Class dataType, TmfTimeRange range, int nbRequested) { this(dataType, range, nbRequested, DEFAULT_BLOCK_SIZE); } @@ -59,11 +59,20 @@ public class TmfEventRequest extends TmfDataRequest { * @param nbRequested * @param blockSize Size of the largest blocks expected */ - public TmfEventRequest(Class dataType, TmfTimeRange range, int nbRequested, int blockSize) { + public TmfEventRequest(Class dataType, TmfTimeRange range, int nbRequested, int blockSize) { super(dataType, 0, nbRequested, blockSize); fRange = range; } + @Override + public boolean equals(Object other) { + if (other instanceof TmfEventRequest) { + TmfEventRequest request = (TmfEventRequest) other; + return super.equals(other) && request.fRange.equals(fRange); + } + return false; + } + // ------------------------------------------------------------------------ // Accessors // ------------------------------------------------------------------------ diff --git a/org.eclipse.linuxtools.tmf/src/org/eclipse/linuxtools/tmf/request/TmfRequestExecutor.java b/org.eclipse.linuxtools.tmf/src/org/eclipse/linuxtools/tmf/request/TmfRequestExecutor.java index 2094d38287..6e4e202481 100644 --- a/org.eclipse.linuxtools.tmf/src/org/eclipse/linuxtools/tmf/request/TmfRequestExecutor.java +++ b/org.eclipse.linuxtools.tmf/src/org/eclipse/linuxtools/tmf/request/TmfRequestExecutor.java @@ -1,3 +1,15 @@ +/******************************************************************************* + * Copyright (c) 2009, 2010 Ericsson + * + * All rights reserved. This program and the accompanying materials are + * made available under the terms of the Eclipse Public License v1.0 which + * accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Francois Chouinard - Initial API and implementation + *******************************************************************************/ + package org.eclipse.linuxtools.tmf.request; import java.util.Queue; @@ -5,6 +17,11 @@ import java.util.concurrent.Executor; import java.util.concurrent.Executors; import java.util.concurrent.LinkedBlockingQueue; +/** + * TmfRequestExecutor + * + * Implement me. Please. + */ public class TmfRequestExecutor implements Executor { private final Executor fExecutor; 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 08bb053a68..5fee0a54e7 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 @@ -25,6 +25,7 @@ import org.eclipse.linuxtools.tmf.component.TmfEventProvider; import org.eclipse.linuxtools.tmf.event.TmfEvent; import org.eclipse.linuxtools.tmf.event.TmfTimeRange; import org.eclipse.linuxtools.tmf.event.TmfTimestamp; +import org.eclipse.linuxtools.tmf.request.TmfCoalescedEventRequest; import org.eclipse.linuxtools.tmf.request.TmfDataRequest; import org.eclipse.linuxtools.tmf.request.TmfEventRequest; @@ -174,6 +175,9 @@ public abstract class TmfTrace extends TmfEventProvider i if (request instanceof TmfEventRequest) { return seekEvent(((TmfEventRequest) request).getRange().getStartTime()); } + if (request instanceof TmfCoalescedEventRequest) { + return seekEvent(((TmfCoalescedEventRequest) request).getRange().getStartTime()); + } return null; } -- 2.34.1