From 2fb2eb3770af433f15c7379f67b4c64a208fe3e3 Mon Sep 17 00:00:00 2001 From: Francois Chouinard Date: Mon, 19 Apr 2010 19:17:36 +0000 Subject: [PATCH] [Bug309731] Fixed a problem with generic requests and component registration/deregistration. --- .../lttng/ui/views/project/ProjectView.java | 2 +- .../state/experiment/StateManagerFactory.java | 2 +- .../linuxtools/tmf/tests/AllTmfCoreTests.java | 7 +- .../tests/component/TmfEventProviderTest.java | 20 +- .../component/TmfProviderManagerTest.java | 26 +- .../tmf/tests/event/TmfEventContentTest.java | 24 + .../tmf/tests/event/TmfEventFieldTest.java | 9 + .../tests/event/TmfEventReferenceTest.java | 15 + .../tmf/tests/event/TmfEventSourceTest.java | 9 + .../tmf/tests/event/TmfEventTest.java | 15 + .../tmf/tests/event/TmfEventTypeTest.java | 9 + .../tmf/tests/event/TmfTimeRangeTest.java | 18 + .../tmf/tests/event/TmfTimestampTest.java | 11 + .../tmf/tests/request/AllTests.java | 1 + .../request/TmfCoalescedDataRequestTest.java | 333 ++++++++++++- .../request/TmfCoalescedEventRequestTest.java | 454 +++++++++++++++--- .../tmf/tests/request/TmfDataRequestTest.java | 261 +++++++++- .../tests/request/TmfEventRequestTest.java | 281 +++++++++-- .../tests/request/TmfRequestExecutorTest.java | 78 ++- .../tmf/component/TmfDataProviderStub.java | 13 +- .../tmf/component/TmfEventProviderStub.java | 17 +- .../TmfSyntheticEventProviderStub.java | 17 +- .../tmf/request/TmfDataRequestStub.java | 6 +- .../tmf/request/TmfEventRequestStub.java | 6 +- .../tmf/ui/views/TmfEventsView.java | 6 +- .../linuxtools/tmf/ui/views/TmfView.java | 12 +- .../tmf/component/ITmfComponent.java | 9 +- .../tmf/component/ITmfDataProvider.java | 4 +- .../tmf/component/TmfComponent.java | 16 +- .../tmf/component/TmfDataProvider.java | 22 +- .../tmf/component/TmfEventProvider.java | 16 +- .../linuxtools/tmf/event/TmfEventField.java | 5 +- .../linuxtools/tmf/event/TmfTraceEvent.java | 3 + .../tmf/experiment/TmfExperiment.java | 32 +- .../tmf/experiment/TmfExperimentLocation.java | 1 + .../tmf/request/ITmfDataRequest.java | 4 +- .../tmf/request/TmfCoalescedDataRequest.java | 66 +-- .../tmf/request/TmfCoalescedEventRequest.java | 37 +- .../tmf/request/TmfDataRequest.java | 68 ++- .../tmf/request/TmfEventRequest.java | 34 +- .../tmf/request/TmfRequestExecutor.java | 18 +- .../linuxtools/tmf/trace/TmfTrace.java | 10 +- 42 files changed, 1615 insertions(+), 382 deletions(-) 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 6b02df6c4f..9b6db4279c 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 @@ -165,7 +165,7 @@ public class ProjectView extends TmfView { public void selectExperiment(LTTngExperimentNode experiment) { String expId = experiment.getName(); if (fSelectedExperiment != null) - fSelectedExperiment.deregister(); + fSelectedExperiment.dispose(); try { LTTngTraceNode[] traceEntries = experiment.getTraces(); int nbTraces = traceEntries.length; diff --git a/org.eclipse.linuxtools.lttng/src/org/eclipse/linuxtools/lttng/state/experiment/StateManagerFactory.java b/org.eclipse.linuxtools.lttng/src/org/eclipse/linuxtools/lttng/state/experiment/StateManagerFactory.java index 0d6a52d8df..6b31ef81f4 100644 --- a/org.eclipse.linuxtools.lttng/src/org/eclipse/linuxtools/lttng/state/experiment/StateManagerFactory.java +++ b/org.eclipse.linuxtools.lttng/src/org/eclipse/linuxtools/lttng/state/experiment/StateManagerFactory.java @@ -98,7 +98,7 @@ public class StateManagerFactory { */ public static void dispose() { if (experimentManager != null) { - experimentManager.deregister(); + experimentManager.dispose(); experimentManager = null; instanceBook = null; } 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 080270457b..a79fa6235e 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 @@ -29,9 +29,6 @@ public class AllTmfCoreTests { //$JUnit-BEGIN$ suite.addTestSuite(TmfCorePluginTest.class); - suite.addTestSuite(TmfEventProviderTest.class); - suite.addTestSuite(TmfProviderManagerTest.class); - suite.addTestSuite(TmfEventFieldTest.class); suite.addTestSuite(TmfEventContentTest.class); suite.addTestSuite(TmfEventTypeTest.class); @@ -46,6 +43,10 @@ public class AllTmfCoreTests { suite.addTestSuite(TmfEventRequestTest.class); suite.addTestSuite(TmfCoalescedDataRequestTest.class); suite.addTestSuite(TmfCoalescedEventRequestTest.class); +// suite.addTestSuite(TmfRequestExecutorTest.class); + + suite.addTestSuite(TmfEventProviderTest.class); + suite.addTestSuite(TmfProviderManagerTest.class); suite.addTestSuite(TmfTraceTest.class); suite.addTestSuite(TmfExperimentTest.class); 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 6cec0d0382..d9fb0c9abe 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 @@ -52,8 +52,8 @@ public class TmfEventProviderTest extends TestCase { @Override protected void tearDown() throws Exception { super.tearDown(); - fEventProvider.deregister(); - fSyntheticEventProvider.deregister(); + fEventProvider.dispose(); + fSyntheticEventProvider.dispose(); } // ------------------------------------------------------------------------ @@ -83,7 +83,7 @@ public class TmfEventProviderTest extends TestCase { // ------------------------------------------------------------------------ @SuppressWarnings("unchecked") - public void testGetPlainEvents() { + public void testGetPlainEvents() throws InterruptedException { 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) { + private void getSyntheticData(final TmfTimeRange range, final int nbEvents, final int blockSize) throws InterruptedException { 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() { + public void testGetSyntheticEvents_EqualBlockSizes() throws InterruptedException { TmfTimeRange range = new TmfTimeRange(TmfTimestamp.BigBang, TmfTimestamp.BigCrunch); getSyntheticData(range, 1000, TmfSyntheticEventProviderStub.BLOCK_SIZE); } - public void testGetSyntheticEvents_SmallerBlock() { + public void testGetSyntheticEvents_SmallerBlock() throws InterruptedException { TmfTimeRange range = new TmfTimeRange(TmfTimestamp.BigBang, TmfTimestamp.BigCrunch); getSyntheticData(range, 1000, TmfSyntheticEventProviderStub.BLOCK_SIZE / 2); } - public void testGetSyntheticEvents_LargerBlock() { + public void testGetSyntheticEvents_LargerBlock() throws InterruptedException { TmfTimeRange range = new TmfTimeRange(TmfTimestamp.BigBang, TmfTimestamp.BigCrunch); getSyntheticData(range, 1000, TmfSyntheticEventProviderStub.BLOCK_SIZE * 2); } - public void testGetSyntheticEvents_TimeRange() { + public void testGetSyntheticEvents_TimeRange() throws InterruptedException { 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() { + public void testGetSyntheticEvents_WeirdTimeRange1() throws InterruptedException { 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() { + public void testGetSyntheticEvents_WeirdTimeRange2() throws InterruptedException { TmfTimestamp start = new TmfTimestamp(0, (byte) -3, 0); TmfTimestamp end = TmfTimestamp.BigCrunch; TmfTimeRange range = new TmfTimeRange(start, end); diff --git a/org.eclipse.linuxtools.tmf.tests/src/org/eclipse/linuxtools/tmf/tests/component/TmfProviderManagerTest.java b/org.eclipse.linuxtools.tmf.tests/src/org/eclipse/linuxtools/tmf/tests/component/TmfProviderManagerTest.java index 8ca12d3948..d8d0670442 100644 --- a/org.eclipse.linuxtools.tmf.tests/src/org/eclipse/linuxtools/tmf/tests/component/TmfProviderManagerTest.java +++ b/org.eclipse.linuxtools.tmf.tests/src/org/eclipse/linuxtools/tmf/tests/component/TmfProviderManagerTest.java @@ -17,7 +17,7 @@ import junit.framework.TestCase; import org.eclipse.linuxtools.tmf.component.TmfDataProvider; import org.eclipse.linuxtools.tmf.component.TmfProviderManager; import org.eclipse.linuxtools.tmf.event.TmfEvent; -import org.eclipse.linuxtools.tmf.request.TmfDataRequest; +import org.eclipse.linuxtools.tmf.request.ITmfDataRequest; import org.eclipse.linuxtools.tmf.trace.ITmfContext; /** @@ -50,7 +50,7 @@ public class TmfProviderManagerTest extends TestCase { super("TestProvider1", type); } @Override - public ITmfContext armRequest(TmfDataRequest request) { + public ITmfContext armRequest(ITmfDataRequest request) { return null; } @Override @@ -58,7 +58,7 @@ public class TmfProviderManagerTest extends TestCase { return null; } @Override - public boolean isCompleted(TmfDataRequest request, TmfEvent data, int nbRead) { + public boolean isCompleted(ITmfDataRequest request, TmfEvent data, int nbRead) { return false; } } @@ -68,7 +68,7 @@ public class TmfProviderManagerTest extends TestCase { super("TestProvider2", type); } @Override - public ITmfContext armRequest(TmfDataRequest request) { + public ITmfContext armRequest(ITmfDataRequest request) { return null; } @Override @@ -76,7 +76,7 @@ public class TmfProviderManagerTest extends TestCase { return null; } @Override - public boolean isCompleted(TmfDataRequest request, TmfEvent data, int nbRead) { + public boolean isCompleted(ITmfDataRequest request, TmfEvent data, int nbRead) { return false; } } @@ -92,7 +92,7 @@ public class TmfProviderManagerTest extends TestCase { super("TestProvider3", type); } @Override - public ITmfContext armRequest(TmfDataRequest request) { + public ITmfContext armRequest(ITmfDataRequest request) { return null; } @Override @@ -100,7 +100,7 @@ public class TmfProviderManagerTest extends TestCase { return null; } @Override - public boolean isCompleted(TmfDataRequest request, TmfEvent3 data, int nbRead) { + public boolean isCompleted(ITmfDataRequest request, TmfEvent3 data, int nbRead) { return false; } } @@ -133,7 +133,7 @@ public class TmfProviderManagerTest extends TestCase { assertTrue(providers[0] == testProvider1); // Unregister it - testProvider1.deregister(); + testProvider1.dispose(); providers = (TmfDataProvider[]) TmfProviderManager.getProviders(TmfEvent.class); assertTrue(providers.length == 0); @@ -168,7 +168,7 @@ public class TmfProviderManagerTest extends TestCase { assertTrue(providers[0] == testProvider2); // Remove one - testProvider1.deregister(); + testProvider1.dispose(); providers = (TmfDataProvider[]) TmfProviderManager.getProviders(TmfEvent.class); assertTrue(providers.length == 1); @@ -182,7 +182,7 @@ public class TmfProviderManagerTest extends TestCase { assertTrue(providers[0] == testProvider2); // Remove the other - testProvider2.deregister(); + testProvider2.dispose(); providers = (TmfDataProvider[]) TmfProviderManager.getProviders(TmfEvent.class); assertTrue(providers.length == 0); @@ -229,7 +229,7 @@ public class TmfProviderManagerTest extends TestCase { assertTrue(providers3[0] == testProvider3); // Remove one - testProvider1.deregister(); + testProvider1.dispose(); providers = (TmfDataProvider[]) TmfProviderManager.getProviders(TmfEvent.class); assertTrue(providers.length == 1); @@ -251,7 +251,7 @@ public class TmfProviderManagerTest extends TestCase { assertTrue(providers3[0] == testProvider3); // Remove another one - testProvider2.deregister(); + testProvider2.dispose(); providers = (TmfDataProvider[]) TmfProviderManager.getProviders(TmfEvent.class); assertTrue(providers.length == 0); @@ -271,7 +271,7 @@ public class TmfProviderManagerTest extends TestCase { assertTrue(providers3[0] == testProvider3); // Remove the last one - testProvider3.deregister(); + testProvider3.dispose(); providers = (TmfDataProvider[]) TmfProviderManager.getProviders(TmfEvent.class); assertTrue(providers.length == 0); diff --git a/org.eclipse.linuxtools.tmf.tests/src/org/eclipse/linuxtools/tmf/tests/event/TmfEventContentTest.java b/org.eclipse.linuxtools.tmf.tests/src/org/eclipse/linuxtools/tmf/tests/event/TmfEventContentTest.java index 3910225903..6bd5b0a80e 100644 --- a/org.eclipse.linuxtools.tmf.tests/src/org/eclipse/linuxtools/tmf/tests/event/TmfEventContentTest.java +++ b/org.eclipse.linuxtools.tmf.tests/src/org/eclipse/linuxtools/tmf/tests/event/TmfEventContentTest.java @@ -156,6 +156,30 @@ public class TmfEventContentTest extends TestCase { assertTrue("equals", !fStubContent.equals(null)); } + // ------------------------------------------------------------------------ + // hashCode + // ------------------------------------------------------------------------ + + public void testHashCode() throws Exception { + assertTrue("hashCode", fBasicContent0.hashCode() == fBasicContent2.hashCode()); + assertTrue("hashCode", fBasicContent0.hashCode() != fStubContent.hashCode()); + } + + public void testHashCode2() throws Exception { + TmfEventContent basicContent0 = new TmfEventContent(null, fRawContent0); + TmfEventContent basicContent1 = new TmfEventContent(fEvent, null); + TmfEventContent basicContent2 = new TmfEventContent(null, null); + + assertTrue("hashCode", fBasicContent0.hashCode() != basicContent0.hashCode()); + assertTrue("hashCode", fBasicContent0.hashCode() != basicContent1.hashCode()); + assertTrue("hashCode", fBasicContent0.hashCode() != basicContent2.hashCode()); + + assertTrue("hashCode", basicContent0.hashCode() != basicContent1.hashCode()); + assertTrue("hashCode", basicContent0.hashCode() != basicContent2.hashCode()); + + assertTrue("hashCode", basicContent1.hashCode() != basicContent2.hashCode()); + } + // ------------------------------------------------------------------------ // toString // ------------------------------------------------------------------------ diff --git a/org.eclipse.linuxtools.tmf.tests/src/org/eclipse/linuxtools/tmf/tests/event/TmfEventFieldTest.java b/org.eclipse.linuxtools.tmf.tests/src/org/eclipse/linuxtools/tmf/tests/event/TmfEventFieldTest.java index 2d3f8c1b36..dd55f2cb86 100644 --- a/org.eclipse.linuxtools.tmf.tests/src/org/eclipse/linuxtools/tmf/tests/event/TmfEventFieldTest.java +++ b/org.eclipse.linuxtools.tmf.tests/src/org/eclipse/linuxtools/tmf/tests/event/TmfEventFieldTest.java @@ -182,6 +182,15 @@ public class TmfEventFieldTest extends TestCase { assertTrue("equals", !fField3.equals(null)); } + // ------------------------------------------------------------------------ + // hashCode + // ------------------------------------------------------------------------ + + public void testHashCode() throws Exception { + assertTrue("hashCode", fField0.hashCode() == fField1.hashCode()); + assertTrue("hashCode", fField0.hashCode() != fField3.hashCode()); + } + // ------------------------------------------------------------------------ // toString // ------------------------------------------------------------------------ diff --git a/org.eclipse.linuxtools.tmf.tests/src/org/eclipse/linuxtools/tmf/tests/event/TmfEventReferenceTest.java b/org.eclipse.linuxtools.tmf.tests/src/org/eclipse/linuxtools/tmf/tests/event/TmfEventReferenceTest.java index e029e3322e..3cd0e67c85 100644 --- a/org.eclipse.linuxtools.tmf.tests/src/org/eclipse/linuxtools/tmf/tests/event/TmfEventReferenceTest.java +++ b/org.eclipse.linuxtools.tmf.tests/src/org/eclipse/linuxtools/tmf/tests/event/TmfEventReferenceTest.java @@ -126,6 +126,21 @@ public class TmfEventReferenceTest extends TestCase { assertTrue("equals", !fReference3.equals(null)); } + // ------------------------------------------------------------------------ + // hashCode + // ------------------------------------------------------------------------ + + public void testHashCode() throws Exception { + assertTrue("hashCode", fReference0.hashCode() == fReference1.hashCode()); + assertTrue("hashCode", fReference0.hashCode() != fReference3.hashCode()); + } + + public void testHashCode2() throws Exception { + TmfEventReference reference0 = new TmfEventReference(); + assertTrue("hashCode", fReference0.hashCode() != reference0.hashCode()); + assertTrue("hashCode", fReference3.hashCode() != reference0.hashCode()); + } + // ------------------------------------------------------------------------ // toString // ------------------------------------------------------------------------ diff --git a/org.eclipse.linuxtools.tmf.tests/src/org/eclipse/linuxtools/tmf/tests/event/TmfEventSourceTest.java b/org.eclipse.linuxtools.tmf.tests/src/org/eclipse/linuxtools/tmf/tests/event/TmfEventSourceTest.java index 3cc39ae51e..1b49c37c08 100644 --- a/org.eclipse.linuxtools.tmf.tests/src/org/eclipse/linuxtools/tmf/tests/event/TmfEventSourceTest.java +++ b/org.eclipse.linuxtools.tmf.tests/src/org/eclipse/linuxtools/tmf/tests/event/TmfEventSourceTest.java @@ -126,6 +126,15 @@ public class TmfEventSourceTest extends TestCase { assertTrue("equals", !fSource3.equals(null)); } + // ------------------------------------------------------------------------ + // hashCode + // ------------------------------------------------------------------------ + + public void testHashCode() throws Exception { + assertTrue("hashCode", fSource0.hashCode() == fSource1.hashCode()); + assertTrue("hashCode", fSource0.hashCode() != fSource3.hashCode()); + } + // ------------------------------------------------------------------------ // toString // ------------------------------------------------------------------------ diff --git a/org.eclipse.linuxtools.tmf.tests/src/org/eclipse/linuxtools/tmf/tests/event/TmfEventTest.java b/org.eclipse.linuxtools.tmf.tests/src/org/eclipse/linuxtools/tmf/tests/event/TmfEventTest.java index 6198588e43..c463b3dee8 100644 --- a/org.eclipse.linuxtools.tmf.tests/src/org/eclipse/linuxtools/tmf/tests/event/TmfEventTest.java +++ b/org.eclipse.linuxtools.tmf.tests/src/org/eclipse/linuxtools/tmf/tests/event/TmfEventTest.java @@ -195,6 +195,21 @@ public class TmfEventTest extends TestCase { assertTrue("equals", !fEvent2.equals(null)); } + // ------------------------------------------------------------------------ + // hashCode + // ------------------------------------------------------------------------ + + public void testHashCode() throws Exception { + TmfEvent event1 = new TmfEvent(fEvent1); + TmfEvent event2 = new TmfEvent(fEvent2); + + assertTrue("hashCode", fEvent1.hashCode() == event1.hashCode()); + assertTrue("hashCode", fEvent2.hashCode() == event2.hashCode()); + + assertTrue("hashCode", fEvent1.hashCode() != event2.hashCode()); + assertTrue("hashCode", fEvent2.hashCode() != event1.hashCode()); + } + // ------------------------------------------------------------------------ // toString // ------------------------------------------------------------------------ diff --git a/org.eclipse.linuxtools.tmf.tests/src/org/eclipse/linuxtools/tmf/tests/event/TmfEventTypeTest.java b/org.eclipse.linuxtools.tmf.tests/src/org/eclipse/linuxtools/tmf/tests/event/TmfEventTypeTest.java index b11460eb17..522d09d463 100644 --- a/org.eclipse.linuxtools.tmf.tests/src/org/eclipse/linuxtools/tmf/tests/event/TmfEventTypeTest.java +++ b/org.eclipse.linuxtools.tmf.tests/src/org/eclipse/linuxtools/tmf/tests/event/TmfEventTypeTest.java @@ -185,6 +185,15 @@ public class TmfEventTypeTest extends TestCase { assertTrue("equals", !fType3.equals(null)); } + // ------------------------------------------------------------------------ + // hashCode + // ------------------------------------------------------------------------ + + public void testHashCode() throws Exception { + assertTrue("hashCode", fType0.hashCode() == fType1.hashCode()); + assertTrue("hashCode", fType0.hashCode() != fType3.hashCode()); + } + // ------------------------------------------------------------------------ // toString // ------------------------------------------------------------------------ diff --git a/org.eclipse.linuxtools.tmf.tests/src/org/eclipse/linuxtools/tmf/tests/event/TmfTimeRangeTest.java b/org.eclipse.linuxtools.tmf.tests/src/org/eclipse/linuxtools/tmf/tests/event/TmfTimeRangeTest.java index 38e8b1aff0..81e2e67b25 100644 --- a/org.eclipse.linuxtools.tmf.tests/src/org/eclipse/linuxtools/tmf/tests/event/TmfTimeRangeTest.java +++ b/org.eclipse.linuxtools.tmf.tests/src/org/eclipse/linuxtools/tmf/tests/event/TmfTimeRangeTest.java @@ -184,6 +184,24 @@ public class TmfTimeRangeTest extends TestCase { assertTrue("equals", !range1.equals(null)); } + // ------------------------------------------------------------------------ + // hashCode + // ------------------------------------------------------------------------ + + public void testHashCode() throws Exception { + TmfTimestamp ts1 = new TmfTimestamp(12345); + TmfTimestamp ts2 = new TmfTimestamp(12350); + TmfTimeRange range1 = new TmfTimeRange(ts1, ts2); + TmfTimeRange range1b = new TmfTimeRange(range1); + TmfTimeRange range2 = new TmfTimeRange(TmfTimestamp.BigBang, TmfTimestamp.BigCrunch); + TmfTimeRange range2b = new TmfTimeRange(range2); + + assertTrue("hashCode", range1.hashCode() == range1b.hashCode()); + assertTrue("hashCode", range2.hashCode() == range2b.hashCode()); + + assertTrue("hashCode", range1.hashCode() != range2.hashCode()); + } + // ------------------------------------------------------------------------ // toString // ------------------------------------------------------------------------ diff --git a/org.eclipse.linuxtools.tmf.tests/src/org/eclipse/linuxtools/tmf/tests/event/TmfTimestampTest.java b/org.eclipse.linuxtools.tmf.tests/src/org/eclipse/linuxtools/tmf/tests/event/TmfTimestampTest.java index 1e7c4de2a7..b1700fd91d 100644 --- a/org.eclipse.linuxtools.tmf.tests/src/org/eclipse/linuxtools/tmf/tests/event/TmfTimestampTest.java +++ b/org.eclipse.linuxtools.tmf.tests/src/org/eclipse/linuxtools/tmf/tests/event/TmfTimestampTest.java @@ -164,6 +164,17 @@ public class TmfTimestampTest extends TestCase { assertTrue("equals", !ts1.equals(null)); } + // ------------------------------------------------------------------------ + // hashCode + // ------------------------------------------------------------------------ + + public void testHashCode() throws Exception { + assertTrue("hashCode", ts0.hashCode() == ts0copy.hashCode()); + assertTrue("hashCode", ts1.hashCode() == ts1copy.hashCode()); + + assertTrue("hashCode", ts0.hashCode() != ts1.hashCode()); + } + // ------------------------------------------------------------------------ // toString // ------------------------------------------------------------------------ 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 dbbd060825..7f62d531c9 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 @@ -14,6 +14,7 @@ public class AllTests { suite.addTestSuite(TmfEventRequestTest.class); suite.addTestSuite(TmfCoalescedDataRequestTest.class); suite.addTestSuite(TmfCoalescedEventRequestTest.class); +// suite.addTestSuite(TmfRequestExecutorTest.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 6cc5c15e02..df9d936ac6 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,6 +16,10 @@ 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; @@ -23,10 +27,24 @@ import org.eclipse.linuxtools.tmf.request.TmfDataRequestStub; /** * TmfCoalescedDataRequestTest *

- * TODO: Implement me. Please. + * Test suite for the TmfCoalescedDataRequest class. */ 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 // ------------------------------------------------------------------------ @@ -37,12 +55,51 @@ 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 // ------------------------------------------------------------------------ @@ -50,33 +107,136 @@ public class TmfCoalescedDataRequestTest extends TestCase { public void testTmfCoalescedDataRequest() { TmfCoalescedDataRequest request = new TmfCoalescedDataRequest(TmfEvent.class); - assertEquals("getIndex", 0, request.getIndex()); + assertEquals("getRequestId", fRequestCount++, request.getRequestId()); + assertEquals("getDataType", TmfEvent.class, request.getDataType()); + + 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("getIndex", 10, request.getIndex()); + assertEquals("getRequestId", fRequestCount++, request.getRequestId()); + assertEquals("getDataType", TmfEvent.class, request.getDataType()); + + 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("getIndex", 10, request.getIndex()); + assertEquals("getRequestId", fRequestCount++, request.getRequestId()); + assertEquals("getDataType", TmfEvent.class, request.getDataType()); + + 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("getIndex", 10, request.getIndex()); + assertEquals("getRequestId", fRequestCount++, request.getRequestId()); + assertEquals("getDataType", TmfEvent.class, request.getDataType()); + + assertEquals("getIndex", 10, request.getIndex()); assertEquals("getNbRequestedEvents", 100, request.getNbRequested()); - assertEquals("getBlockize", 200, request.getBlockize()); + 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 testEqualsConsistency() throws Exception { + assertTrue("equals", fRequest1.equals(fRequest1)); + assertTrue("equals", fRequest1.equals(fRequest1)); + + assertTrue("equals", fRequest2.equals(fRequest2)); + assertTrue("equals", fRequest2.equals(fRequest2)); + } + + 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()); } // ------------------------------------------------------------------------ @@ -96,4 +256,165 @@ 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 43fc8b2b74..f712b8c6ad 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,10 +25,15 @@ 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; @@ -40,34 +45,28 @@ import org.eclipse.linuxtools.tmf.trace.TmfTraceStub; /** * TmfCoalescedEventRequestTest *

- * TODO: Implement me. Please. + * Test suite for the TmfCoalescedEventRequest class. */ public class TmfCoalescedEventRequestTest extends TestCase { - 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; + // ------------------------------------------------------------------------ + // Variables + // ------------------------------------------------------------------------ - private static TmfTraceStub fTrace = null; + 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 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, true); - fTrace.register(); - } catch (URISyntaxException e) { - e.printStackTrace(); - } catch (IOException e) { - e.printStackTrace(); - } - } - return fTrace; - } + private static TmfCoalescedEventRequest fRequest1b; + private static TmfCoalescedEventRequest fRequest1c; - // ------------------------------------------------------------------------ + private static int fRequestCount; + + // ------------------------------------------------------------------------ // Housekeeping // ------------------------------------------------------------------------ @@ -78,6 +77,16 @@ 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 @@ -85,55 +94,184 @@ 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); + TmfCoalescedEventRequest request = new TmfCoalescedEventRequest(TmfEvent.class); - assertEquals("StartTime", TmfTimestamp.BigBang, request.getRange().getStartTime()); - assertEquals("EndTime", TmfTimestamp.BigCrunch, request.getRange().getEndTime()); + assertEquals("getRequestId", fRequestCount++, request.getRequestId()); + assertEquals("getDataType", TmfEvent.class, request.getDataType()); - assertEquals("getIndex", 0, request.getIndex()); - assertEquals("getNbRequestedEvents", TmfDataRequest.ALL_DATA, request.getNbRequested()); - assertEquals("getBlockize", TmfDataRequest.DEFAULT_BLOCK_SIZE, request.getBlockize()); + assertEquals("getRange", range1, request.getRange()); + assertEquals("getNbRequestedEvents", TmfEventRequest.ALL_DATA, request.getNbRequested()); + assertEquals("getBlockize", TmfEventRequest.DEFAULT_BLOCK_SIZE, request.getBlockize()); + + assertFalse("isCompleted", request.isCompleted()); + assertFalse("isFailed", request.isFailed()); + assertFalse("isCancelled", request.isCancelled()); + + assertEquals("getNbRead", 0, request.getNbRead()); } - public void testTmfCoalescedEventRequestTimeRange() { - TmfTimeRange range = new TmfTimeRange(new TmfTimestamp(), TmfTimestamp.BigCrunch); - TmfCoalescedEventRequest request = new TmfCoalescedEventRequest(TmfEvent.class, range); + public void testTmfCoalescedEventRequestIndex() { + TmfCoalescedEventRequest request = new TmfCoalescedEventRequest(TmfEvent.class, range1); + + assertEquals("getRequestId", fRequestCount++, request.getRequestId()); + assertEquals("getDataType", TmfEvent.class, request.getDataType()); + + 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("getIndex", 0, request.getIndex()); - assertEquals("getNbRequestedEvents", TmfDataRequest.ALL_DATA, request.getNbRequested()); - assertEquals("getBlockize", TmfDataRequest.DEFAULT_BLOCK_SIZE, request.getBlockize()); + assertEquals("getNbRead", 0, request.getNbRead()); } - public void testTmfCoalescedEventRequestTimeRangeNbRequested() { - TmfTimeRange range = new TmfTimeRange(new TmfTimestamp(), TmfTimestamp.BigCrunch); - TmfCoalescedEventRequest request = new TmfCoalescedEventRequest(TmfEvent.class, range, 100); + public void testTmfCoalescedEventRequestIndexNbRequested() { + TmfCoalescedEventRequest request = new TmfCoalescedEventRequest(TmfEvent.class, range1, 100); - assertEquals("StartTime", range.getStartTime(), request.getRange().getStartTime()); - assertEquals("EndTime", range.getEndTime(), request.getRange().getEndTime()); + assertEquals("getRequestId", fRequestCount++, request.getRequestId()); + assertEquals("getDataType", TmfEvent.class, request.getDataType()); - assertEquals("getIndex", 0, request.getIndex()); + assertEquals("getRange", range1, request.getRange()); assertEquals("getNbRequestedEvents", 100, request.getNbRequested()); - assertEquals("getBlockize", TmfDataRequest.DEFAULT_BLOCK_SIZE, request.getBlockize()); + 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()); } - public void testTmfCoalescedEventRequestTimeRangeNbRequestedBlocksize() { - TmfTimeRange range = new TmfTimeRange(new TmfTimestamp(), TmfTimestamp.BigCrunch); - TmfCoalescedEventRequest request = new TmfCoalescedEventRequest(TmfEvent.class, range, 100, 200); + public void testTmfCoalescedEventRequestIndexNbEventsBlocksize() { + TmfCoalescedEventRequest request = new TmfCoalescedEventRequest(TmfEvent.class, range1, 100, 200); - assertEquals("StartTime", range.getStartTime(), request.getRange().getStartTime()); - assertEquals("EndTime", range.getEndTime(), request.getRange().getEndTime()); + assertEquals("getRequestId", fRequestCount++, request.getRequestId()); + assertEquals("getDataType", TmfEvent.class, request.getDataType()); - assertEquals("getIndex", 0, request.getIndex()); + assertEquals("getRange", range1, request.getRange()); assertEquals("getNbRequestedEvents", 100, request.getNbRequested()); - assertEquals("getBlockize", 200, request.getBlockize()); + 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 testEqualsConsistency() throws Exception { + assertTrue("equals", fRequest1.equals(fRequest1)); + assertTrue("equals", fRequest1.equals(fRequest1)); + + assertTrue("equals", fRequest2.equals(fRequest2)); + assertTrue("equals", fRequest2.equals(fRequest2)); + } + + 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()); } // ------------------------------------------------------------------------ @@ -141,26 +279,207 @@ public class TmfCoalescedEventRequestTest extends TestCase { // ------------------------------------------------------------------------ public void testIsCompatible() { - 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); + 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); 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 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, true); + } catch (URISyntaxException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } + } + return fTrace; + } + Vector requestedEvents1; Vector requestedEvents2; Vector requestedEvents3; @@ -169,11 +488,14 @@ 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; + } } @@ -224,7 +546,7 @@ public class TmfCoalescedEventRequestTest extends TestCase { } }; - ITmfDataProvider[] providers = (ITmfDataProvider[]) TmfProviderManager.getProviders(TmfEvent.class, TmfTraceStub.class); + providers = (ITmfDataProvider[]) TmfProviderManager.getProviders(TmfEvent.class, TmfTraceStub.class); providers[0].sendRequest(request1); providers[0].sendRequest(request2); providers[0].sendRequest(request3); @@ -232,7 +554,7 @@ public class TmfCoalescedEventRequestTest extends TestCase { public void testCoalescedRequest() throws Exception { - setupTrace(DIRECTORY + File.separator + TEST_STREAM); + fTrace = setupTrace(DIRECTORY + File.separator + TEST_STREAM); TmfSignalManager.register(this); TmfTestTriggerSignal signal = new TmfTestTriggerSignal(this, false); @@ -263,10 +585,13 @@ public class TmfCoalescedEventRequestTest extends TestCase { } TmfSignalManager.deregister(this); + fTrace.dispose(); + fTrace = null; } public void testCancelCoalescedRequest() throws Exception { - setupTrace(DIRECTORY + File.separator + TEST_STREAM); + + fTrace = setupTrace(DIRECTORY + File.separator + TEST_STREAM); TmfSignalManager.register(this); TmfTestTriggerSignal signal = new TmfTestTriggerSignal(this, true); @@ -296,7 +621,8 @@ 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 fd2266f4ee..78bba7d15f 100644 --- a/org.eclipse.linuxtools.tmf.tests/src/org/eclipse/linuxtools/tmf/tests/request/TmfDataRequestTest.java +++ b/org.eclipse.linuxtools.tmf.tests/src/org/eclipse/linuxtools/tmf/tests/request/TmfDataRequestTest.java @@ -15,17 +15,34 @@ package org.eclipse.linuxtools.tmf.tests.request; import junit.framework.TestCase; import org.eclipse.linuxtools.tmf.event.TmfEvent; +import org.eclipse.linuxtools.tmf.event.TmfEventReference; +import org.eclipse.linuxtools.tmf.event.TmfEventSource; +import org.eclipse.linuxtools.tmf.event.TmfEventType; +import org.eclipse.linuxtools.tmf.event.TmfTimestamp; import org.eclipse.linuxtools.tmf.request.TmfDataRequest; import org.eclipse.linuxtools.tmf.request.TmfDataRequestStub; /** * TmfDataRequestTest *

- * TODO: Implement me. Please. + * Test suite for the TmfDataRequest class. */ public class TmfDataRequestTest extends TestCase { // ------------------------------------------------------------------------ + // Variables + // ------------------------------------------------------------------------ + + private static TmfDataRequest fRequest1; + private static TmfDataRequest fRequest1b; + private static TmfDataRequest fRequest1c; + private static TmfDataRequest fRequest2; + private static TmfDataRequest fRequest3; + private static TmfDataRequest fRequest4; + + private static int fRequestCount; + + // ------------------------------------------------------------------------ // Housekeeping // ------------------------------------------------------------------------ @@ -36,6 +53,14 @@ public class TmfDataRequestTest extends TestCase { @Override protected void setUp() throws Exception { super.setUp(); + TmfDataRequest.reset(); + fRequest1 = new TmfDataRequestStub(TmfEvent.class, 10, 100, 200); + fRequest2 = new TmfDataRequestStub(TmfEvent.class, 20, 100, 200); + fRequest3 = new TmfDataRequestStub(TmfEvent.class, 20, 200, 200); + fRequest4 = new TmfDataRequestStub(TmfEvent.class, 20, 200, 300); + fRequest1b = new TmfDataRequestStub(TmfEvent.class, 10, 100, 200); + fRequest1c = new TmfDataRequestStub(TmfEvent.class, 10, 100, 200); + fRequestCount = fRequest1c.getRequestId() + 1; } @Override @@ -43,6 +68,33 @@ public class TmfDataRequestTest extends TestCase { super.tearDown(); } + private TmfDataRequest setupTestRequest(final boolean[] flags) { + + TmfDataRequest request = new TmfDataRequestStub(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 // ------------------------------------------------------------------------ @@ -50,67 +102,224 @@ public class TmfDataRequestTest extends TestCase { public void testTmfDataRequest() { TmfDataRequest request = new TmfDataRequestStub(TmfEvent.class); - assertEquals("getIndex", 0, request.getIndex()); + assertEquals("getRequestId", fRequestCount++, request.getRequestId()); + assertEquals("getDataType", TmfEvent.class, request.getDataType()); + + 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 testTmfDataRequestIndex() { TmfDataRequest request = new TmfDataRequestStub(TmfEvent.class, 10); - assertEquals("getIndex", 10, request.getIndex()); + assertEquals("getRequestId", fRequestCount++, request.getRequestId()); + assertEquals("getDataType", TmfEvent.class, request.getDataType()); + + 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 testTmfDataRequestIndexNbRequested() { TmfDataRequest request = new TmfDataRequestStub(TmfEvent.class, 10, 100); - assertEquals("getIndex", 10, request.getIndex()); + assertEquals("getRequestId", fRequestCount++, request.getRequestId()); + assertEquals("getDataType", TmfEvent.class, request.getDataType()); + + 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 testTmfDataRequestIndexNbEventsBlocksize() { TmfDataRequest request = new TmfDataRequestStub(TmfEvent.class, 10, 100, 200); - assertEquals("getIndex", 10, request.getIndex()); + assertEquals("getRequestId", fRequestCount++, request.getRequestId()); + assertEquals("getDataType", TmfEvent.class, request.getDataType()); + + assertEquals("getIndex", 10, request.getIndex()); assertEquals("getNbRequestedEvents", 100, request.getNbRequested()); - assertEquals("getBlockize", 200, request.getBlockize()); + 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 testEquals_Reflexivity() { - TmfDataRequest request = new TmfDataRequestStub(TmfEvent.class, 10, 100, 200); + 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 testEqualsConsistency() throws Exception { + assertTrue("equals", fRequest1.equals(fRequest1)); + assertTrue("equals", fRequest1.equals(fRequest1)); + + assertTrue("equals", fRequest2.equals(fRequest2)); + assertTrue("equals", fRequest2.equals(fRequest2)); + } + + 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 = "[TmfDataRequest(0,TmfEvent,10,100,200)]"; + String expected2 = "[TmfDataRequest(1,TmfEvent,20,100,200)]"; + String expected3 = "[TmfDataRequest(2,TmfEvent,20,200,200)]"; + String expected4 = "[TmfDataRequest(3,TmfEvent,20,200,300)]"; + + assertEquals("toString", expected1, fRequest1.toString()); + assertEquals("toString", expected2, fRequest2.toString()); + assertEquals("toString", expected3, fRequest3.toString()); + assertEquals("toString", expected4, fRequest4.toString()); + } + + // ------------------------------------------------------------------------ + // setData/getData + // ------------------------------------------------------------------------ + + public void testSetData() { + // Initialize the data + int nbEvents = 10; + TmfEvent[] events = new TmfEvent[nbEvents]; + for (int i = 0; i < nbEvents; i++) { + events[i] = new TmfEvent(new TmfTimestamp(i), new TmfEventSource(), + new TmfEventType(), new TmfEventReference()); + } + + fRequest1.setData(events); + assertEquals("setData", nbEvents, fRequest1.getNbRead()); + + TmfEvent[] eventsRead = fRequest1.getData(); + assertEquals("getData", nbEvents, eventsRead.length); + + for (int i = 0; i < nbEvents; i++) { + assertEquals("getData", i, eventsRead[i].getTimestamp().getValue()); + } + } + + // ------------------------------------------------------------------------ + // done + // ------------------------------------------------------------------------ + + public void testDone() { + + final boolean[] flags = new boolean[4]; + TmfDataRequest request = setupTestRequest(flags); + request.done(); + + assertTrue ("isCompleted", request.isCompleted()); + assertFalse("isFailed", request.isFailed()); + assertFalse("isCancelled", request.isCancelled()); - assertTrue("request.equals(request)", request.equals(request)); + assertTrue ("handleCompleted", flags[0]); + assertTrue ("handleSuccess", flags[1]); + assertFalse("handleFailure", flags[2]); + assertFalse("handleCancel", flags[3]); } - 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); + // ------------------------------------------------------------------------ + // fail + // ------------------------------------------------------------------------ - assertTrue("request1.equals(request2)", request1.equals(request2)); - assertTrue("request2.equals(request1)", request2.equals(request1)); + public void testFail() { + + final boolean[] flags = new boolean[4]; + TmfDataRequest request = setupTestRequest(flags); + request.fail(); - 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)); + assertTrue ("isCompleted", request.isCompleted()); + assertTrue ("isFailed", request.isFailed()); + assertFalse("isCancelled", request.isCancelled()); + + assertTrue ("handleCompleted", flags[0]); + assertFalse("handleSuccess", flags[1]); + assertTrue ("handleFailure", flags[2]); + assertFalse("handleCancel", flags[3]); } - 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); + // ------------------------------------------------------------------------ + // cancel + // ------------------------------------------------------------------------ + + public void testCancel() { + + final boolean[] flags = new boolean[4]; + TmfDataRequest request = setupTestRequest(flags); + request.cancel(); + + assertTrue ("isCompleted", request.isCompleted()); + assertFalse("isFailed", request.isFailed()); + assertTrue ("isCancelled", request.isCancelled()); - assertTrue("request1.equals(request2)", request1.equals(request2)); - assertTrue("request2.equals(request3)", request2.equals(request3)); - assertTrue("request1.equals(request3)", request1.equals(request3)); + assertTrue ("handleCompleted", flags[0]); + assertFalse("handleSuccess", flags[1]); + assertFalse("handleFailure", flags[2]); + assertTrue ("handleCancel", flags[3]); } + // ------------------------------------------------------------------------ + // waitForCompletion + // ------------------------------------------------------------------------ + } \ 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 de1f1666f3..fa31550b31 100644 --- a/org.eclipse.linuxtools.tmf.tests/src/org/eclipse/linuxtools/tmf/tests/request/TmfEventRequestTest.java +++ b/org.eclipse.linuxtools.tmf.tests/src/org/eclipse/linuxtools/tmf/tests/request/TmfEventRequestTest.java @@ -15,6 +15,9 @@ package org.eclipse.linuxtools.tmf.tests.request; import junit.framework.TestCase; import org.eclipse.linuxtools.tmf.event.TmfEvent; +import org.eclipse.linuxtools.tmf.event.TmfEventReference; +import org.eclipse.linuxtools.tmf.event.TmfEventSource; +import org.eclipse.linuxtools.tmf.event.TmfEventType; import org.eclipse.linuxtools.tmf.event.TmfTimeRange; import org.eclipse.linuxtools.tmf.event.TmfTimestamp; import org.eclipse.linuxtools.tmf.request.TmfDataRequest; @@ -24,10 +27,26 @@ import org.eclipse.linuxtools.tmf.request.TmfEventRequestStub; /** * TmfEventRequestTest *

- * TODO: Implement me. Please. + * Test suite for the TmfEventRequest class. */ public class TmfEventRequestTest extends TestCase { + // ------------------------------------------------------------------------ + // Variables + // ------------------------------------------------------------------------ + + private static TmfTimeRange range1 = new TmfTimeRange(TmfTimeRange.Eternity); + private static TmfTimeRange range2 = new TmfTimeRange(new TmfTimestamp(), TmfTimestamp.BigCrunch); + + private static TmfEventRequest fRequest1; + private static TmfEventRequest fRequest1b; + private static TmfEventRequest fRequest1c; + private static TmfEventRequest fRequest2; + private static TmfEventRequest fRequest3; + private static TmfEventRequest fRequest4; + + private static int fRequestCount; + // ------------------------------------------------------------------------ // Housekeeping // ------------------------------------------------------------------------ @@ -39,6 +58,14 @@ public class TmfEventRequestTest extends TestCase { @Override protected void setUp() throws Exception { super.setUp(); + TmfDataRequest.reset(); + fRequest1 = new TmfEventRequestStub(TmfEvent.class, range1, 100, 200); + fRequest2 = new TmfEventRequestStub(TmfEvent.class, range2, 100, 200); + fRequest3 = new TmfEventRequestStub(TmfEvent.class, range2, 200, 200); + fRequest4 = new TmfEventRequestStub(TmfEvent.class, range2, 200, 300); + fRequest1b = new TmfEventRequestStub(TmfEvent.class, range1, 100, 200); + fRequest1c = new TmfEventRequestStub(TmfEvent.class, range1, 100, 200); + fRequestCount = fRequest1c.getRequestId() + 1; } @Override @@ -46,6 +73,33 @@ public class TmfEventRequestTest extends TestCase { super.tearDown(); } + private TmfEventRequest setupTestRequest(final boolean[] flags) { + + TmfEventRequest request = new TmfEventRequestStub(TmfEvent.class, new TmfTimeRange(TmfTimeRange.Eternity), 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 // ------------------------------------------------------------------------ @@ -53,92 +107,239 @@ public class TmfEventRequestTest extends TestCase { public void testTmfEventRequest() { TmfEventRequest request = new TmfEventRequestStub(TmfEvent.class); + assertEquals("getRequestId", fRequestCount++, request.getRequestId()); + assertEquals("getDataType", TmfEvent.class, request.getDataType()); + assertEquals("StartTime", TmfTimestamp.BigBang, request.getRange().getStartTime()); assertEquals("EndTime", TmfTimestamp.BigCrunch, request.getRange().getEndTime()); - 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 testTmfEventRequestTimeRange() { TmfTimeRange range = new TmfTimeRange(new TmfTimestamp(), TmfTimestamp.BigCrunch); TmfEventRequest request = new TmfEventRequestStub(TmfEvent.class, range); - assertEquals("StartTime", range.getStartTime(), request.getRange().getStartTime()); - assertEquals("EndTime", range.getEndTime(), request.getRange().getEndTime()); + assertEquals("getRequestId", fRequestCount++, request.getRequestId()); + assertEquals("getDataType", TmfEvent.class, request.getDataType()); + + assertEquals("StartTime", new TmfTimestamp(), request.getRange().getStartTime()); + assertEquals("EndTime", TmfTimestamp.BigCrunch, request.getRange().getEndTime()); - 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 testTmfEventRequestTimeRangeNbRequested() { TmfTimeRange range = new TmfTimeRange(new TmfTimestamp(), TmfTimestamp.BigCrunch); TmfEventRequest request = new TmfEventRequestStub(TmfEvent.class, range, 100); - assertEquals("StartTime", range.getStartTime(), request.getRange().getStartTime()); - assertEquals("EndTime", range.getEndTime(), request.getRange().getEndTime()); + assertEquals("getRequestId", fRequestCount++, request.getRequestId()); + assertEquals("getDataType", TmfEvent.class, request.getDataType()); + + assertEquals("StartTime", new TmfTimestamp(), request.getRange().getStartTime()); + assertEquals("EndTime", TmfTimestamp.BigCrunch, request.getRange().getEndTime()); - assertEquals("getIndex", 0, request.getIndex()); + assertEquals("getIndex", 0, request.getIndex()); assertEquals("getNbRequestedEvents", 100, request.getNbRequested()); assertEquals("getBlockize", TmfDataRequest.DEFAULT_BLOCK_SIZE, request.getBlockize()); + + assertFalse("isCompleted", request.isCompleted()); + assertFalse("isFailed", request.isFailed()); + assertFalse("isCancelled", request.isCancelled()); + + assertEquals("getNbRead", 0, request.getNbRead()); } public void testTmfEventRequestTimeRangeNbRequestedBlocksize() { TmfTimeRange range = new TmfTimeRange(new TmfTimestamp(), TmfTimestamp.BigCrunch); TmfEventRequest request = new TmfEventRequestStub(TmfEvent.class, range, 100, 200); - assertEquals("StartTime", range.getStartTime(), request.getRange().getStartTime()); - assertEquals("EndTime", range.getEndTime(), request.getRange().getEndTime()); + assertEquals("getRequestId", fRequestCount++, request.getRequestId()); + assertEquals("getDataType", TmfEvent.class, request.getDataType()); - assertEquals("getIndex", 0, request.getIndex()); + assertEquals("StartTime", new TmfTimestamp(), request.getRange().getStartTime()); + assertEquals("EndTime", TmfTimestamp.BigCrunch, request.getRange().getEndTime()); + + assertEquals("getIndex", 0, request.getIndex()); assertEquals("getNbRequestedEvents", 100, request.getNbRequested()); - assertEquals("getBlockize", 200, request.getBlockize()); + 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 testEquals_Reflexivity() { - TmfTimeRange range = new TmfTimeRange(new TmfTimestamp(), TmfTimestamp.BigCrunch); - TmfEventRequest request = new TmfEventRequestStub(TmfEvent.class, range, 100, 200); + 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 testEqualsConsistency() throws Exception { + assertTrue("equals", fRequest1.equals(fRequest1)); + assertTrue("equals", fRequest1.equals(fRequest1)); + + assertTrue("equals", fRequest2.equals(fRequest2)); + assertTrue("equals", fRequest2.equals(fRequest2)); + } + + 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 + // ------------------------------------------------------------------------ - assertTrue("request.equals(request)", request.equals(request)); + public void testToString() { + String expected1 = "[TmfEventRequest(0,TmfEvent," + range1 + ",100,200)]"; + String expected2 = "[TmfEventRequest(1,TmfEvent," + range2 + ",100,200)]"; + String expected3 = "[TmfEventRequest(2,TmfEvent," + range2 + ",200,200)]"; + String expected4 = "[TmfEventRequest(3,TmfEvent," + range2 + ",200,300)]"; + + assertEquals("toString", expected1, fRequest1.toString()); + assertEquals("toString", expected2, fRequest2.toString()); + assertEquals("toString", expected3, fRequest3.toString()); + assertEquals("toString", expected4, fRequest4.toString()); } - 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); + // ------------------------------------------------------------------------ + // setData/getData + // ------------------------------------------------------------------------ + + public void testSetData() { + // Initialize the data + int nbEvents = 10; + TmfEvent[] events = new TmfEvent[nbEvents]; + for (int i = 0; i < nbEvents; i++) { + events[i] = new TmfEvent(new TmfTimestamp(i), new TmfEventSource(), + new TmfEventType(), new TmfEventReference()); + } - 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); + fRequest1.setData(events); + assertEquals("setData", nbEvents, fRequest1.getNbRead()); - assertTrue("request1.equals(request2)", request1.equals(request2)); - assertTrue("request2.equals(request1)", request2.equals(request1)); + TmfEvent[] eventsRead = fRequest1.getData(); + assertEquals("getData", nbEvents, eventsRead.length); - 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)); + for (int i = 0; i < nbEvents; i++) { + assertEquals("getData", i, eventsRead[i].getTimestamp().getValue()); + } } - public void testEquals_Transivity() { - TmfTimeRange range1 = new TmfTimeRange(new TmfTimestamp(), TmfTimestamp.BigCrunch); + // ------------------------------------------------------------------------ + // done + // ------------------------------------------------------------------------ + + public void testDone() { + + final boolean[] flags = new boolean[4]; + TmfEventRequest request = setupTestRequest(flags); + request.done(); - 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 ("isCompleted", request.isCompleted()); + assertFalse("isFailed", request.isFailed()); + assertFalse("isCancelled", request.isCancelled()); - 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)); + assertTrue ("handleCompleted", flags[0]); + assertTrue ("handleSuccess", flags[1]); + assertFalse("handleFailure", flags[2]); + assertFalse("handleCancel", flags[3]); } + // ------------------------------------------------------------------------ + // fail + // ------------------------------------------------------------------------ + + public void testFail() { + + final boolean[] flags = new boolean[4]; + TmfEventRequest request = setupTestRequest(flags); + request.fail(); + + assertTrue ("isCompleted", request.isCompleted()); + assertTrue ("isFailed", request.isFailed()); + assertFalse("isCancelled", request.isCancelled()); + + assertTrue ("handleCompleted", flags[0]); + assertFalse("handleSuccess", flags[1]); + assertTrue ("handleFailure", flags[2]); + assertFalse("handleCancel", flags[3]); + } + + // ------------------------------------------------------------------------ + // cancel + // ------------------------------------------------------------------------ + + public void testCancel() { + + final boolean[] flags = new boolean[4]; + TmfEventRequest request = setupTestRequest(flags); + request.cancel(); + + assertTrue ("isCompleted", request.isCompleted()); + assertFalse("isFailed", request.isFailed()); + assertTrue ("isCancelled", request.isCancelled()); + + assertTrue ("handleCompleted", flags[0]); + assertFalse("handleSuccess", flags[1]); + assertFalse("handleFailure", flags[2]); + assertTrue ("handleCancel", flags[3]); + } + + // ------------------------------------------------------------------------ + // waitForCompletion + // ------------------------------------------------------------------------ + } \ No newline at end of file diff --git a/org.eclipse.linuxtools.tmf.tests/src/org/eclipse/linuxtools/tmf/tests/request/TmfRequestExecutorTest.java b/org.eclipse.linuxtools.tmf.tests/src/org/eclipse/linuxtools/tmf/tests/request/TmfRequestExecutorTest.java index 003db950c5..53e228efcf 100644 --- a/org.eclipse.linuxtools.tmf.tests/src/org/eclipse/linuxtools/tmf/tests/request/TmfRequestExecutorTest.java +++ b/org.eclipse.linuxtools.tmf.tests/src/org/eclipse/linuxtools/tmf/tests/request/TmfRequestExecutorTest.java @@ -12,12 +12,8 @@ package org.eclipse.linuxtools.tmf.tests.request; -import java.util.concurrent.Executors; - import junit.framework.TestCase; -import org.eclipse.linuxtools.tmf.request.TmfRequestExecutor; - /** * TmfRequestExecutorTest * @@ -25,92 +21,74 @@ import org.eclipse.linuxtools.tmf.request.TmfRequestExecutor; */ public class TmfRequestExecutorTest extends TestCase { - // ------------------------------------------------------------------------ - // Variables - // ------------------------------------------------------------------------ - - // ------------------------------------------------------------------------ - // Housekeeping - // ------------------------------------------------------------------------ - /** - * @param name the test name + * @param name */ public TmfRequestExecutorTest(String name) { super(name); } - @Override + /* (non-Javadoc) + * @see junit.framework.TestCase#setUp() + */ protected void setUp() throws Exception { super.setUp(); } - @Override + /* (non-Javadoc) + * @see junit.framework.TestCase#tearDown() + */ protected void tearDown() throws Exception { super.tearDown(); } - // ------------------------------------------------------------------------ - // Constructors - // ------------------------------------------------------------------------ + /** + * Test method for {@link org.eclipse.linuxtools.tmf.request.TmfRequestExecutor#TmfRequestExecutor(java.util.concurrent.ExecutorService)}. + */ + public void testTmfRequestExecutorExecutorService() { + fail("Not yet implemented"); + } /** * Test method for {@link org.eclipse.linuxtools.tmf.request.TmfRequestExecutor#TmfRequestExecutor()}. */ public void testTmfRequestExecutor() { - TmfRequestExecutor executor = new TmfRequestExecutor(); - assertEquals("nbPendingRequests", 0, executor.getNbPendingRequests()); - assertFalse("isShutdown", executor.isShutdown()); - assertFalse("isTerminated", executor.isTerminated()); + fail("Not yet implemented"); } /** - * Test method for {@link org.eclipse.linuxtools.tmf.request.TmfRequestExecutor#TmfRequestExecutor(java.util.concurrent.ExecutorService)}. + * Test method for {@link org.eclipse.linuxtools.tmf.request.TmfRequestExecutor#start()}. */ - public void testTmfRequestExecutorExecutorService() { - TmfRequestExecutor executor = new TmfRequestExecutor(Executors.newCachedThreadPool()); - assertEquals("nbPendingRequests", 0, executor.getNbPendingRequests()); - assertFalse("isShutdown", executor.isShutdown()); - assertFalse("isTerminated", executor.isTerminated()); + public void testStart() { + fail("Not yet implemented"); } /** * Test method for {@link org.eclipse.linuxtools.tmf.request.TmfRequestExecutor#stop()}. */ public void testStop() { - TmfRequestExecutor executor = new TmfRequestExecutor(); - executor.stop(); - assertEquals("nbPendingRequests", 0, executor.getNbPendingRequests()); - assertTrue("isShutdown", executor.isShutdown()); - assertTrue("isTerminated", executor.isTerminated()); + fail("Not yet implemented"); } - // ------------------------------------------------------------------------ - // execute - // ------------------------------------------------------------------------ - /** * Test method for {@link org.eclipse.linuxtools.tmf.request.TmfRequestExecutor#execute(java.lang.Runnable)}. */ public void testExecute() { -// fail("Not yet implemented"); + fail("Not yet implemented"); } - // ------------------------------------------------------------------------ - // toString - // ------------------------------------------------------------------------ + /** + * Test method for {@link org.eclipse.linuxtools.tmf.request.TmfRequestExecutor#scheduleNext()}. + */ + public void testScheduleNext() { + fail("Not yet implemented"); + } /** - * Test method for {@link org.eclipse.linuxtools.tmf.request.TmfRequestExecutor#toString()}. + * Test method for {@link org.eclipse.linuxtools.tmf.request.TmfRequestExecutor#queueRequest(java.lang.Runnable)}. */ - public void testToString() { -// TmfRequestExecutor executor1 = new TmfRequestExecutor(); -// String expected1 = "[TmfRequestExecutor(DelegatedExecutorService)]"; -// assertEquals("toString", expected1, executor1.toString()); -// -// TmfRequestExecutor executor2 = new TmfRequestExecutor(Executors.newCachedThreadPool()); -// String expected2 = "[TmfRequestExecutor(ThreadPoolExecutor)]"; -// assertEquals("toString", expected2, executor2.toString()); + public void testQueueRequest() { + fail("Not yet implemented"); } } diff --git a/org.eclipse.linuxtools.tmf.tests/stubs/org/eclipse/linuxtools/tmf/component/TmfDataProviderStub.java b/org.eclipse.linuxtools.tmf.tests/stubs/org/eclipse/linuxtools/tmf/component/TmfDataProviderStub.java index 6f8f68ee46..a93e01ed3f 100644 --- a/org.eclipse.linuxtools.tmf.tests/stubs/org/eclipse/linuxtools/tmf/component/TmfDataProviderStub.java +++ b/org.eclipse.linuxtools.tmf.tests/stubs/org/eclipse/linuxtools/tmf/component/TmfDataProviderStub.java @@ -20,11 +20,10 @@ import java.net.URL; import org.eclipse.core.runtime.FileLocator; import org.eclipse.core.runtime.Path; import org.eclipse.linuxtools.tmf.event.TmfData; -import org.eclipse.linuxtools.tmf.request.TmfDataRequest; -import org.eclipse.linuxtools.tmf.request.TmfEventRequest; +import org.eclipse.linuxtools.tmf.request.ITmfDataRequest; +import org.eclipse.linuxtools.tmf.request.ITmfEventRequest; import org.eclipse.linuxtools.tmf.tests.TmfCoreTestPlugin; import org.eclipse.linuxtools.tmf.trace.ITmfContext; -import org.eclipse.linuxtools.tmf.trace.TmfContext; import org.eclipse.linuxtools.tmf.trace.TmfTraceStub; /** @@ -59,9 +58,9 @@ public class TmfDataProviderStub extends TmfDataProvider { // ------------------------------------------------------------------------ @Override - public ITmfContext armRequest(TmfDataRequest request) { - if (request instanceof TmfEventRequest) { - TmfContext context = fTrace.seekEvent(((TmfEventRequest) request).getRange().getStartTime()); + public ITmfContext armRequest(ITmfDataRequest request) { + if (request instanceof ITmfEventRequest) { + ITmfContext context = fTrace.seekEvent(((ITmfEventRequest) request).getRange().getStartTime()); return context; } return null; @@ -73,7 +72,7 @@ public class TmfDataProviderStub extends TmfDataProvider { } @Override - public boolean isCompleted(TmfDataRequest request, TmfData data, int nbRead) { + public boolean isCompleted(ITmfDataRequest request, TmfData data, int nbRead) { return false; } 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 ddf092acbf..b6e58fb631 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 @@ -20,11 +20,10 @@ import java.net.URL; import org.eclipse.core.runtime.FileLocator; import org.eclipse.core.runtime.Path; import org.eclipse.linuxtools.tmf.event.TmfEvent; -import org.eclipse.linuxtools.tmf.request.TmfDataRequest; -import org.eclipse.linuxtools.tmf.request.TmfEventRequest; +import org.eclipse.linuxtools.tmf.request.ITmfDataRequest; +import org.eclipse.linuxtools.tmf.request.ITmfEventRequest; import org.eclipse.linuxtools.tmf.tests.TmfCoreTestPlugin; import org.eclipse.linuxtools.tmf.trace.ITmfContext; -import org.eclipse.linuxtools.tmf.trace.TmfContext; import org.eclipse.linuxtools.tmf.trace.TmfTraceStub; /** @@ -55,9 +54,9 @@ public class TmfEventProviderStub extends TmfEventProvider { } @Override - public void deregister() { - fTrace.deregister(); - super.deregister(); + public void dispose() { + fTrace.dispose(); + super.dispose(); } // ------------------------------------------------------------------------ @@ -65,9 +64,9 @@ public class TmfEventProviderStub extends TmfEventProvider { // ------------------------------------------------------------------------ @Override - public ITmfContext armRequest(TmfDataRequest request) { - if (request instanceof TmfEventRequest) { - TmfContext context = fTrace.seekEvent(((TmfEventRequest) request).getRange().getStartTime()); + public ITmfContext armRequest(ITmfDataRequest request) { + if (request instanceof ITmfEventRequest) { + ITmfContext context = fTrace.seekEvent(((ITmfEventRequest) request).getRange().getStartTime()); return context; } return null; 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 4e811268d0..2fab19ae0f 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 @@ -15,7 +15,8 @@ package org.eclipse.linuxtools.tmf.component; 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.request.TmfDataRequest; +import org.eclipse.linuxtools.tmf.request.ITmfDataRequest; +import org.eclipse.linuxtools.tmf.request.ITmfEventRequest; import org.eclipse.linuxtools.tmf.request.TmfEventRequest; import org.eclipse.linuxtools.tmf.trace.ITmfContext; import org.eclipse.linuxtools.tmf.trace.TmfContext; @@ -34,26 +35,16 @@ public class TmfSyntheticEventProviderStub extends TmfEventProvider request) { + public ITmfContext armRequest(final ITmfDataRequest request) { // Get the TmfSyntheticEventStub provider 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)) { + if (!(request instanceof ITmfEventRequest)) { request.cancel(); return null; } diff --git a/org.eclipse.linuxtools.tmf.tests/stubs/org/eclipse/linuxtools/tmf/request/TmfDataRequestStub.java b/org.eclipse.linuxtools.tmf.tests/stubs/org/eclipse/linuxtools/tmf/request/TmfDataRequestStub.java index 7e41522d0e..f5630a4596 100644 --- a/org.eclipse.linuxtools.tmf.tests/stubs/org/eclipse/linuxtools/tmf/request/TmfDataRequestStub.java +++ b/org.eclipse.linuxtools.tmf.tests/stubs/org/eclipse/linuxtools/tmf/request/TmfDataRequestStub.java @@ -25,14 +25,14 @@ public class TmfDataRequestStub extends TmfDataRequest { * Default constructor */ public TmfDataRequestStub(Class dataType) { - this(dataType, 0, ALL_DATA, DEFAULT_BLOCK_SIZE); + super(dataType); } /** * @param nbRequested */ public TmfDataRequestStub(Class dataType, int index) { - this(dataType, index, ALL_DATA, DEFAULT_BLOCK_SIZE); + super(dataType, index); } /** @@ -40,7 +40,7 @@ public class TmfDataRequestStub extends TmfDataRequest { * @param nbRequested */ public TmfDataRequestStub(Class dataType, int index, int nbRequested) { - this(dataType, index, nbRequested, DEFAULT_BLOCK_SIZE); + super(dataType, index, nbRequested); } /** 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 fc305b69b6..4c7f74dae7 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) { - this(dataType, TmfTimeRange.Eternity, ALL_DATA, DEFAULT_BLOCK_SIZE); + super(dataType); } /** * @param range */ public TmfEventRequestStub(Class dataType, TmfTimeRange range) { - this(dataType, range, ALL_DATA, DEFAULT_BLOCK_SIZE); + super(dataType, range); } /** @@ -41,7 +41,7 @@ public class TmfEventRequestStub extends TmfEventRequest * @param nbRequested */ public TmfEventRequestStub(Class dataType, TmfTimeRange range, int nbRequested) { - this(dataType, range, nbRequested, DEFAULT_BLOCK_SIZE); + super(dataType, range, nbRequested); } /** 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 a02017b01e..19b06097e8 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 @@ -172,7 +172,11 @@ public class TmfEventsView extends TmfView { } }; fExperiment.sendRequest(request); - request.waitForCompletion(); + try { + request.waitForCompletion(); + } catch (InterruptedException e) { + e.printStackTrace(); + } if (cache[0] != null && cacheStartIndex == index) { item.setText(extractItemFields(cache[0])); diff --git a/org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/tmf/ui/views/TmfView.java b/org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/tmf/ui/views/TmfView.java index 5d9fa8dc32..cef468ad03 100644 --- a/org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/tmf/ui/views/TmfView.java +++ b/org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/tmf/ui/views/TmfView.java @@ -34,12 +34,12 @@ public abstract class TmfView extends ViewPart implements ITmfComponent { public TmfView(String viewName) { super(); fName = viewName; - register(); + TmfSignalManager.register(this); } @Override public void dispose() { - deregister(); + TmfSignalManager.deregister(this); super.dispose(); } @@ -51,14 +51,6 @@ public abstract class TmfView extends ViewPart implements ITmfComponent { return fName; } - public void register() { - TmfSignalManager.register(this); - } - - public void deregister() { - TmfSignalManager.deregister(this); - } - public void broadcast(TmfSignal signal) { TmfSignalManager.dispatchSignal(signal); } diff --git a/org.eclipse.linuxtools.tmf/src/org/eclipse/linuxtools/tmf/component/ITmfComponent.java b/org.eclipse.linuxtools.tmf/src/org/eclipse/linuxtools/tmf/component/ITmfComponent.java index bcec39aa57..b82ad6d7a8 100644 --- a/org.eclipse.linuxtools.tmf/src/org/eclipse/linuxtools/tmf/component/ITmfComponent.java +++ b/org.eclipse.linuxtools.tmf/src/org/eclipse/linuxtools/tmf/component/ITmfComponent.java @@ -29,14 +29,9 @@ public interface ITmfComponent { public String getName(); /** - * Register to the signal manager + * Dispose of the component */ - public void register(); - - /** - * De-register from the signal manager - */ - public void deregister(); + public void dispose(); /** * Broadcast a signal to all the interested listeners. 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 23eefd3d34..8d50d905f4 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,7 +1,7 @@ package org.eclipse.linuxtools.tmf.component; import org.eclipse.linuxtools.tmf.event.TmfData; -import org.eclipse.linuxtools.tmf.request.TmfDataRequest; +import org.eclipse.linuxtools.tmf.request.ITmfDataRequest; public interface ITmfDataProvider { @@ -12,6 +12,6 @@ public interface ITmfDataProvider { * * @param request The request to process */ - public void sendRequest(TmfDataRequest request); + public void sendRequest(ITmfDataRequest request); } diff --git a/org.eclipse.linuxtools.tmf/src/org/eclipse/linuxtools/tmf/component/TmfComponent.java b/org.eclipse.linuxtools.tmf/src/org/eclipse/linuxtools/tmf/component/TmfComponent.java index 0a831272a5..7f14a548e4 100644 --- a/org.eclipse.linuxtools.tmf/src/org/eclipse/linuxtools/tmf/component/TmfComponent.java +++ b/org.eclipse.linuxtools.tmf/src/org/eclipse/linuxtools/tmf/component/TmfComponent.java @@ -32,28 +32,24 @@ public abstract class TmfComponent implements ITmfComponent { public TmfComponent(String name) { fName = name; - register(); + TmfSignalManager.register(this); } // ------------------------------------------------------------------------ // ITmfComponent // ------------------------------------------------------------------------ - public String getName() { - return fName; - } - /* (non-Javadoc) - * @see org.eclipse.linuxtools.tmf.component.ITmfComponent#register() + * @see org.eclipse.linuxtools.tmf.component.ITmfComponent#getName() */ - public void register() { - TmfSignalManager.register(this); + public String getName() { + return fName; } /* (non-Javadoc) - * @see org.eclipse.linuxtools.tmf.component.ITmfComponent#deregister() + * @see org.eclipse.linuxtools.tmf.component.ITmfComponent#dispose() */ - public void deregister() { + public void dispose() { TmfSignalManager.deregister(this); } 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 745f5b45ae..f5c6f6dc0f 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 @@ -73,16 +73,10 @@ public abstract class TmfDataProvider extends TmfComponent im } @Override - public void register() { - super.register(); - TmfProviderManager.register(fType, this); - } - - @Override - public void deregister() { + public void dispose() { TmfProviderManager.deregister(fType, this); fExecutor.stop(); - super.deregister(); + super.dispose(); } public int getQueueSize() { @@ -93,7 +87,7 @@ public abstract class TmfDataProvider extends TmfComponent im // ITmfRequestHandler // ------------------------------------------------------------------------ - public void sendRequest(final TmfDataRequest request) { + public synchronized void sendRequest(final ITmfDataRequest request) { if (fSynchDepth > 0) { // We are in coalescing mode: client should NEVER wait @@ -123,14 +117,14 @@ public abstract class TmfDataProvider extends TmfComponent im protected Vector> fPendingCoalescedRequests = new Vector>(); - protected synchronized void newCoalescedDataRequest(TmfDataRequest request) { + protected synchronized void newCoalescedDataRequest(ITmfDataRequest request) { TmfCoalescedDataRequest coalescedRequest = new TmfCoalescedDataRequest(fType, request.getIndex(), request.getNbRequested(), request.getBlockize()); coalescedRequest.addRequest(request); fPendingCoalescedRequests.add(coalescedRequest); } - protected synchronized void coalesceDataRequest(TmfDataRequest request) { + protected synchronized void coalesceDataRequest(ITmfDataRequest request) { for (TmfCoalescedDataRequest req : fPendingCoalescedRequests) { if (req.isCompatible(request)) { req.addRequest(request); @@ -144,7 +138,7 @@ public abstract class TmfDataProvider extends TmfComponent im // Request processing // ------------------------------------------------------------------------ - protected void queueRequest(final TmfDataRequest request) { + protected void queueRequest(final ITmfDataRequest request) { // Process the request Thread thread = new Thread() { @@ -214,7 +208,7 @@ public abstract class TmfDataProvider extends TmfComponent im * @param request * @return an application specific context; null if request can't be serviced */ - public abstract ITmfContext armRequest(TmfDataRequest request); + public abstract ITmfContext armRequest(ITmfDataRequest request); /** * Return the next piece of data based on the context supplied. The context @@ -253,7 +247,7 @@ public abstract class TmfDataProvider extends TmfComponent im * @param data * @return */ - public boolean isCompleted(TmfDataRequest request, T data, int nbRead) { + public boolean isCompleted(ITmfDataRequest request, T data, int nbRead) { return request.isCompleted() || nbRead >= request.getNbRequested(); } 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 70efad72b7..3b843bfe92 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,9 +14,9 @@ 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.ITmfDataRequest; +import org.eclipse.linuxtools.tmf.request.ITmfEventRequest; import org.eclipse.linuxtools.tmf.request.TmfCoalescedEventRequest; -import org.eclipse.linuxtools.tmf.request.TmfDataRequest; -import org.eclipse.linuxtools.tmf.request.TmfEventRequest; /** * TmfEventProvider @@ -34,19 +34,19 @@ public abstract class TmfEventProvider extends TmfDataProvid } @Override - public boolean isCompleted(TmfDataRequest request, T data, int nbRead) { + public boolean isCompleted(ITmfDataRequest request, T data, int nbRead) { boolean dataRequestCompleted = super.isCompleted(request, data, nbRead); - if (!dataRequestCompleted && request instanceof TmfEventRequest && data != null) { - TmfTimestamp endTime = ((TmfEventRequest) request).getRange().getEndTime(); + if (!dataRequestCompleted && request instanceof ITmfEventRequest && data != null) { + TmfTimestamp endTime = ((ITmfEventRequest) request).getRange().getEndTime(); return data.getTimestamp().compareTo(endTime, false) > 0; } return dataRequestCompleted; } @Override - protected synchronized void newCoalescedDataRequest(TmfDataRequest request) { - if (request instanceof TmfEventRequest) { - TmfEventRequest eventRequest = (TmfEventRequest) request; + protected synchronized void newCoalescedDataRequest(ITmfDataRequest request) { + if (request instanceof ITmfEventRequest) { + ITmfEventRequest eventRequest = (ITmfEventRequest) request; TmfCoalescedEventRequest coalescedRequest = new TmfCoalescedEventRequest(fType, eventRequest.getRange(), eventRequest.getNbRequested(), eventRequest.getBlockize()); coalescedRequest.addRequest(eventRequest); diff --git a/org.eclipse.linuxtools.tmf/src/org/eclipse/linuxtools/tmf/event/TmfEventField.java b/org.eclipse.linuxtools.tmf/src/org/eclipse/linuxtools/tmf/event/TmfEventField.java index 6535475021..e39180fe34 100644 --- a/org.eclipse.linuxtools.tmf/src/org/eclipse/linuxtools/tmf/event/TmfEventField.java +++ b/org.eclipse.linuxtools.tmf/src/org/eclipse/linuxtools/tmf/event/TmfEventField.java @@ -101,7 +101,10 @@ public class TmfEventField { @Override public int hashCode() { - return fFieldId.hashCode(); + int result = 17; + result = 37 * result + fFieldId.hashCode(); + result = 37 * result + fValue.hashCode(); + return result; } @Override diff --git a/org.eclipse.linuxtools.tmf/src/org/eclipse/linuxtools/tmf/event/TmfTraceEvent.java b/org.eclipse.linuxtools.tmf/src/org/eclipse/linuxtools/tmf/event/TmfTraceEvent.java index feb8e3857f..305d512908 100644 --- a/org.eclipse.linuxtools.tmf/src/org/eclipse/linuxtools/tmf/event/TmfTraceEvent.java +++ b/org.eclipse.linuxtools.tmf/src/org/eclipse/linuxtools/tmf/event/TmfTraceEvent.java @@ -126,6 +126,9 @@ public class TmfTraceEvent extends TmfEvent { @Override public boolean equals(Object other) { + if (other instanceof TmfEvent) { + return super.equals(other); + } if (!(other instanceof TmfTraceEvent)) { return false; } 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 6488cd80de..5e1b2cf9f3 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 @@ -23,8 +23,8 @@ 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.TmfDataRequest; -import org.eclipse.linuxtools.tmf.request.TmfEventRequest; +import org.eclipse.linuxtools.tmf.request.ITmfDataRequest; +import org.eclipse.linuxtools.tmf.request.ITmfEventRequest; import org.eclipse.linuxtools.tmf.signal.TmfRangeSynchSignal; import org.eclipse.linuxtools.tmf.signal.TmfSignalHandler; import org.eclipse.linuxtools.tmf.trace.ITmfContext; @@ -114,11 +114,11 @@ public class TmfExperiment extends TmfEventProvider imple * */ @Override - public void deregister() { + public void dispose() { fTraces = null; fCheckpoints.clear(); setCurrentExperiment(null); - super.deregister(); + super.dispose(); } private static void setCurrentExperiment(TmfExperiment experiment) { @@ -244,14 +244,30 @@ public class TmfExperiment extends TmfEventProvider imple // ------------------------------------------------------------------------ @Override - public ITmfContext armRequest(TmfDataRequest request) { - TmfTimestamp timestamp = (request instanceof TmfEventRequest) ? - ((TmfEventRequest) request).getRange().getStartTime() : null; - + public ITmfContext armRequest(ITmfDataRequest request) { + + TmfTimestamp timestamp = (request instanceof ITmfEventRequest) ? + ((ITmfEventRequest) request).getRange().getStartTime() : null; + + TmfExperimentContext context = (timestamp != null) ? seekEvent(timestamp) : seekEvent(request.getIndex()); return context; + +// TmfTimestamp timestamp = null; +// +// if (request instanceof TmfEventRequest == true) { +// timestamp = ((TmfEventRequest) request).getRange().getStartTime(); +// } +// else if (request instanceof TmfCoalescedEventRequest == true) { +// timestamp = ((TmfCoalescedEventRequest)request).getRange().getStartTime(); +// } +// else { +// System.out.println("ERROR : request of unknown instance in armRequest(). Class is : " + request.getClass().toString() ); +// } + + } @SuppressWarnings("unchecked") diff --git a/org.eclipse.linuxtools.tmf/src/org/eclipse/linuxtools/tmf/experiment/TmfExperimentLocation.java b/org.eclipse.linuxtools.tmf/src/org/eclipse/linuxtools/tmf/experiment/TmfExperimentLocation.java index 1a1739c830..712cc08bcf 100644 --- a/org.eclipse.linuxtools.tmf/src/org/eclipse/linuxtools/tmf/experiment/TmfExperimentLocation.java +++ b/org.eclipse.linuxtools.tmf/src/org/eclipse/linuxtools/tmf/experiment/TmfExperimentLocation.java @@ -31,6 +31,7 @@ public class TmfExperimentLocation extends TmfLocation[]> { @Override public TmfExperimentLocation clone() { + super.clone(); // To keep FindBugs happy ITmfLocation[] locations = (ITmfLocation[]) getLocation(); ITmfLocation[] clones = new ITmfLocation[locations.length]; for (int i = 0; i < locations.length; i++) { 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 32ae0d8012..7beecac7c6 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 long getRequestId(); + public int getRequestId(); /** * @return the index of the first event requested @@ -84,7 +84,7 @@ public interface ITmfDataRequest { * To suspend the client thread until the request completes * (or is canceled). */ - public void waitForCompletion(); + public void waitForCompletion() throws InterruptedException; // ------------------------------------------------------------------------ // Request state modifiers 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 f47b6f5459..957b1aee5f 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(ITmfDataRequest request) { fRequests.add(request); } - public boolean isCompatible(TmfDataRequest request) { + public boolean isCompatible(ITmfDataRequest request) { - boolean ok = request.getIndex() == getIndex();; + boolean ok = request.getIndex() == getIndex(); ok &= request.getNbRequested() == getNbRequested(); ok &= request.getBlockize() == getBlockize(); @@ -87,59 +87,61 @@ public class TmfCoalescedDataRequest extends TmfDataRequest request : fRequests) { + for (ITmfDataRequest request : fRequests) { request.setData(getData()); request.handleData(); } } @Override - public void handleCompleted() { - for (TmfDataRequest request : fRequests) { - request.handleCompleted(); + public void done() { + for (ITmfDataRequest request : fRequests) { + request.done(); } + super.done(); } @Override - public void handleSuccess() { - for (TmfDataRequest request : fRequests) { - request.handleSuccess(); + public void fail() { + for (ITmfDataRequest request : fRequests) { + request.fail(); } + super.fail(); } @Override - public void handleFailure() { - for (TmfDataRequest request : fRequests) { - request.handleFailure(); + public void cancel() { + for (ITmfDataRequest request : fRequests) { + request.cancel(); } + super.cancel(); } - @Override - public void handleCancel() { - for (TmfDataRequest request : fRequests) { - request.handleCancel(); - } - } + // ------------------------------------------------------------------------ + // Object + // ------------------------------------------------------------------------ @Override - public void done() { - for (TmfDataRequest request : fRequests) { - request.done(); - } + // All requests have a unique id + public int hashCode() { + return super.hashCode(); } @Override - public void fail() { - for (TmfDataRequest request : fRequests) { - request.fail(); - } + 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; } @Override - public void cancel() { - for (TmfDataRequest request : fRequests) { - request.cancel(); - } + public String toString() { + return "[TmfCoalescedDataRequest(" + getRequestId() + "," + getDataType().getSimpleName() + + "," + getIndex() + "," + getNbRequested() + "," + getBlockize() + ")]"; } } 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 2caab92ae2..0bcd53037c 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 @@ -69,11 +69,11 @@ public class TmfCoalescedEventRequest extends TmfCoalescedDa // ------------------------------------------------------------------------ @Override - public boolean isCompatible(TmfDataRequest request) { - if (request instanceof TmfEventRequest) { + public boolean isCompatible(ITmfDataRequest request) { + if (request instanceof ITmfEventRequest) { boolean ok = getNbRequested() == request.getNbRequested(); ok &= getBlockize() == request.getBlockize(); - ok &= fRange.equals(((TmfEventRequest) request).getRange()); + ok &= fRange.equals(((ITmfEventRequest) request).getRange()); return ok; } return false; @@ -87,4 +87,35 @@ 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 fbf69f860b..08fdfbe83f 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 @@ -91,10 +91,10 @@ public abstract class TmfDataRequest implements ITmfDataReque private final int fBlockSize; // The maximum number of events per chunk private int fNbRead; // The number of reads so far - private Object lock = new Object(); - private boolean fRequestCompleted = false; - private boolean fRequestFailed = false; - private boolean fRequestCanceled = false; + private final Object lock; + private boolean fRequestCompleted; + private boolean fRequestFailed; + private boolean fRequestCanceled; private T[] fData; // Data object @@ -102,32 +102,44 @@ public abstract class TmfDataRequest implements ITmfDataReque // Constructors // ------------------------------------------------------------------------ + /** + * Resets the request counter (used for testing) + */ + public static void reset() { + fRequestNumber = 0; + } + /** * Default constructor + * + * @param dataType the requested data type */ public TmfDataRequest(Class dataType) { this(dataType, 0, ALL_DATA, DEFAULT_BLOCK_SIZE); } /** - * @param nbRequested + * @param dataType the requested data type + * @param nbRequested the number of data items requested */ public TmfDataRequest(Class dataType, int index) { this(dataType, index, ALL_DATA, DEFAULT_BLOCK_SIZE); } /** - * @param index - * @param nbRequested + * @param dataType the requested data type + * @param index the index (rank) of the first event requested + * @param blockSize the number of data items per block */ public TmfDataRequest(Class dataType, int index, int nbRequested) { this(dataType, index, nbRequested, DEFAULT_BLOCK_SIZE); } /** - * @param index - * @param nbRequested - * @param blockSize + * @param dataType the requested data type + * @param index the index (rank) of the first event requested + * @param nbRequested the number of data items requested + * @param blockSize the number of data items per block */ public TmfDataRequest(Class dataType, int index, int nbRequested, int blockSize) { fRequestId = fRequestNumber++; @@ -136,6 +148,21 @@ public abstract class TmfDataRequest implements ITmfDataReque fNbRequested = nbRequested; fBlockSize = blockSize; fNbRead = 0; + lock = new Object(); + } + + /** + * Copy constructor + */ + @SuppressWarnings("unused") + private TmfDataRequest(TmfDataRequest other) { + fRequestId = 0; + fDataType = null; + fIndex = 0; + fNbRequested = 0; + fBlockSize = 0; + fNbRead = 0; + lock = new Object(); } // ------------------------------------------------------------------------ @@ -145,7 +172,7 @@ public abstract class TmfDataRequest implements ITmfDataReque /** * @return the request ID */ - public long getRequestId() { + public int getRequestId() { return fRequestId; } @@ -173,7 +200,7 @@ public abstract class TmfDataRequest implements ITmfDataReque /** * @return the number of events read so far */ - public int getNbRead() { + public synchronized int getNbRead() { return fNbRead; } @@ -280,14 +307,10 @@ public abstract class TmfDataRequest implements ITmfDataReque * * @throws InterruptedException */ - public void waitForCompletion() { + public void waitForCompletion() throws InterruptedException { synchronized (lock) { while (!fRequestCompleted) - try { - lock.wait(); - } catch (InterruptedException e) { - e.printStackTrace(); - } + lock.wait(); } } @@ -327,8 +350,9 @@ public abstract class TmfDataRequest implements ITmfDataReque // ------------------------------------------------------------------------ @Override + // All requests have a unique id public int hashCode() { - return fRequestId; + return getRequestId(); } @Override @@ -342,4 +366,10 @@ public abstract class TmfDataRequest implements ITmfDataReque return false; } + @Override + public String toString() { + return "[TmfDataRequest(" + fRequestId + "," + fDataType.getSimpleName() + + "," + fIndex + "," + fNbRequested + "," + fBlockSize + ")]"; + } + } 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 742d978ff3..9a83500908 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 @@ -64,15 +64,6 @@ public abstract class TmfEventRequest extends TmfDataRequest 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 // ------------------------------------------------------------------------ @@ -84,4 +75,29 @@ public abstract class TmfEventRequest extends TmfDataRequest return fRange; } + // ------------------------------------------------------------------------ + // Object + // ------------------------------------------------------------------------ + + @Override + // All requests have a unique id + public int hashCode() { + return getRequestId(); + } + + @Override + public boolean equals(Object other) { + if (other instanceof TmfEventRequest) { + TmfEventRequest request = (TmfEventRequest) other; + return super.equals(other) && request.fRange.equals(fRange); + } + return false; + } + + @Override + public String toString() { + return "[TmfEventRequest(" + getRequestId() + "," + getDataType().getSimpleName() + + "," + getRange() + "," + getNbRequested() + "," + getBlockize() + ")]"; + } + } 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 f39c932752..e96492d0da 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 @@ -21,7 +21,7 @@ import java.util.concurrent.LinkedBlockingQueue; /** * TmfRequestExecutor * - * Implement me. Please. + * A simple, straightforward request executor. */ public class TmfRequestExecutor implements Executor { @@ -41,11 +41,17 @@ public class TmfRequestExecutor implements Executor { // Nothing to do } + /** + * Stops the executor + */ public void stop() { fExecutor.shutdown(); } - public void execute(final Runnable request) { + /* (non-Javadoc) + * @see java.util.concurrent.Executor#execute(java.lang.Runnable) + */ + public synchronized void execute(final Runnable request) { fRequests.offer(new Runnable() { public void run() { try { @@ -60,12 +66,20 @@ public class TmfRequestExecutor implements Executor { } } + /** + * Executes the next pending request, if applicable. + */ protected synchronized void scheduleNext() { if ((fRequest = fRequests.poll()) != null) { fExecutor.execute(fRequest); } } + /** + * Queues the request and schedules it. + * + * @param request the request to service + */ public synchronized void queueRequest(Runnable request) { fRequests.add(request); scheduleNext(); 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 b82d090c32..95da4f1c8f 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,9 +25,9 @@ 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.ITmfDataRequest; +import org.eclipse.linuxtools.tmf.request.ITmfEventRequest; import org.eclipse.linuxtools.tmf.request.TmfCoalescedEventRequest; -import org.eclipse.linuxtools.tmf.request.TmfDataRequest; -import org.eclipse.linuxtools.tmf.request.TmfEventRequest; /** * TmfTrace @@ -182,9 +182,9 @@ public abstract class TmfTrace extends TmfEventProvider i // ------------------------------------------------------------------------ @Override - public ITmfContext armRequest(TmfDataRequest request) { - if (request instanceof TmfEventRequest) { - return seekEvent(((TmfEventRequest) request).getRange().getStartTime()); + public ITmfContext armRequest(ITmfDataRequest request) { + if (request instanceof ITmfEventRequest) { + return seekEvent(((ITmfEventRequest) request).getRange().getStartTime()); } if (request instanceof TmfCoalescedEventRequest) { return seekEvent(((TmfCoalescedEventRequest) request).getRange().getStartTime()); -- 2.34.1