ss: add unit tests for the segment store
authorFrance Lapointe Nguyen <francelap@gmail.com>
Wed, 29 Jul 2015 20:40:30 +0000 (16:40 -0400)
committerAlexandre Montplaisir <alexmonthy@voxpopuli.im>
Fri, 7 Aug 2015 23:21:02 +0000 (19:21 -0400)
Change-Id: Ic29ccc34190a4f09723dc259ce79da4ec213b84a
Signed-off-by: France Lapointe Nguyen <francelap@gmail.com>
Signed-off-by: Alexandre Montplaisir <alexmonthy@voxpopuli.im>
Reviewed-on: https://git.eclipse.org/r/51279
Reviewed-by: Hudson CI
Reviewed-by: Patrick Tasse <patrick.tasse@gmail.com>
releng/org.eclipse.tracecompass.alltests/META-INF/MANIFEST.MF
releng/org.eclipse.tracecompass.alltests/src/org/eclipse/tracecompass/alltests/RunAllCoreTests.java
statesystem/org.eclipse.tracecompass.segmentstore.core.tests/META-INF/MANIFEST.MF
statesystem/org.eclipse.tracecompass.segmentstore.core.tests/pom.xml
statesystem/org.eclipse.tracecompass.segmentstore.core.tests/src/org/eclipse/tracecompass/segmentstore/core/tests/AllTests.java
statesystem/org.eclipse.tracecompass.segmentstore.core.tests/src/org/eclipse/tracecompass/segmentstore/core/tests/treemap/AllTests.java [new file with mode: 0644]
statesystem/org.eclipse.tracecompass.segmentstore.core.tests/src/org/eclipse/tracecompass/segmentstore/core/tests/treemap/TreeMapStoreTest.java [new file with mode: 0644]

index c5184a5613b650798e311b6bb215534c6b292449..dfa1fb366f2e361abfb0be1ce402c5a141aafa0d 100644 (file)
@@ -15,6 +15,7 @@ Require-Bundle: org.junit;bundle-version="4.0.0",
  org.eclipse.tracecompass.gdbtrace.core.tests,
  org.eclipse.tracecompass.gdbtrace.ui.tests,
  org.eclipse.tracecompass.analysis.os.linux.core.tests,
+ org.eclipse.tracecompass.analysis.graph.core.tests,
  org.eclipse.tracecompass.lttng2.control.core.tests,
  org.eclipse.tracecompass.lttng2.control.ui.tests,
  org.eclipse.tracecompass.lttng2.kernel.core.tests,
@@ -22,6 +23,7 @@ Require-Bundle: org.junit;bundle-version="4.0.0",
  org.eclipse.tracecompass.lttng2.ust.core.tests,
  org.eclipse.tracecompass.lttng2.ust.ui.tests,
  org.eclipse.tracecompass.statesystem.core.tests,
+ org.eclipse.tracecompass.segmentstore.core.tests,
  org.eclipse.tracecompass.tmf.core.tests,
  org.eclipse.tracecompass.tmf.ctf.core.tests,
  org.eclipse.tracecompass.tmf.ctf.ui.swtbot.tests,
@@ -36,8 +38,7 @@ Require-Bundle: org.junit;bundle-version="4.0.0",
  org.eclipse.tracecompass.tmf.pcap.ui.swtbot.tests,
  org.eclipse.tracecompass.tmf.remote.core.tests,
  org.eclipse.tracecompass.tmf.remote.ui.tests,
- org.eclipse.tracecompass.tmf.remote.ui.swtbot.tests,
- org.eclipse.tracecompass.analysis.graph.core.tests
+ org.eclipse.tracecompass.tmf.remote.ui.swtbot.tests
 Export-Package: org.eclipse.tracecompass.alltests;x-internal:=true,
  org.eclipse.tracecompass.alltests.perf;x-internal:=true,
  org.eclipse.tracecompass.alltests.swtbot;x-internal:=true
index 71ef447026120dc22485083f337ffa2498cd2f41..c2e0d9f6b559d637bb34a99b27b077e1d8ad4e2f 100644 (file)
@@ -32,6 +32,7 @@ import org.junit.runners.Suite;
     org.eclipse.tracecompass.lttng2.ust.core.tests.AllTests.class,
     org.eclipse.tracecompass.pcap.core.tests.AllPcapCoreTests.class,
     org.eclipse.tracecompass.statesystem.core.tests.AllTests.class,
+    org.eclipse.tracecompass.segmentstore.core.tests.AllTests.class,
     org.eclipse.tracecompass.tmf.analysis.xml.core.tests.AllAnalysisXmlCoreTests.class,
     org.eclipse.tracecompass.tmf.core.tests.AllTmfCoreTests.class,
     org.eclipse.tracecompass.tmf.remote.core.tests.AllTmfRemoteCoreTests.class,
index 429fa1e15edcc915b0d28177065a95d837532196..f5fd6916b13b56c00e5238d383b4ae1ca1321b90 100644 (file)
@@ -11,5 +11,6 @@ Require-Bundle: org.junit;bundle-version="4.0.0",
  org.eclipse.core.runtime,
  org.eclipse.core.resources,
  org.eclipse.tracecompass.common.core,
- org.eclipse.tracecompass.statesystem.core
+ org.eclipse.tracecompass.segmentstore.core
 Export-Package: org.eclipse.tracecompass.segmentstore.core.tests
+Import-Package: com.google.common.collect
index 03a83de7921374cbd4e31b11dc3453adcf1df86d..5802c77ea7fadc5b681b2f53aa3c8812f49df6df 100644 (file)
@@ -36,8 +36,6 @@
           <testClass>org.eclipse.tracecompass.segmentstore.core.tests.AllTests</testClass>
           <useUIHarness>false</useUIHarness>
           <useUIThread>false</useUIThread>
-          <!-- Skipping for now, until there are actual tests! -->
-          <skipTests>true</skipTests>
           <product>org.eclipse.platform.ide</product>
         </configuration>
       </plugin>
index 2347ea21736875f0ab09be9c3e476fd2fa2438b7..0c3130ac764489d17cb143b4ab6205e654355c58 100644 (file)
@@ -5,9 +5,6 @@
  * made available under the terms of the Eclipse Public License v1.0 which
  * accompanies this distribution, and is available at
  * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *   Alexandre Montplaisir - Initial API and implementation
  *******************************************************************************/
 
 package org.eclipse.tracecompass.segmentstore.core.tests;
@@ -20,7 +17,7 @@ import org.junit.runners.Suite;
  */
 @RunWith(Suite.class)
 @Suite.SuiteClasses({
-        // No tests at the moment!
+        org.eclipse.tracecompass.segmentstore.core.tests.treemap.AllTests.class
 })
 public class AllTests {
 
diff --git a/statesystem/org.eclipse.tracecompass.segmentstore.core.tests/src/org/eclipse/tracecompass/segmentstore/core/tests/treemap/AllTests.java b/statesystem/org.eclipse.tracecompass.segmentstore.core.tests/src/org/eclipse/tracecompass/segmentstore/core/tests/treemap/AllTests.java
new file mode 100644 (file)
index 0000000..eae57e9
--- /dev/null
@@ -0,0 +1,24 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Ericsson
+ *
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v1.0 which
+ * accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ ******************************************************************************/
+
+package org.eclipse.tracecompass.segmentstore.core.tests.treemap;
+
+import org.junit.runner.RunWith;
+import org.junit.runners.Suite;
+
+/**
+ * Test suite for org.eclipse.tracecompass.segmentstore.core.treemap
+ */
+@RunWith(Suite.class)
+@Suite.SuiteClasses({
+        TreeMapStoreTest.class
+})
+public class AllTests {
+
+}
diff --git a/statesystem/org.eclipse.tracecompass.segmentstore.core.tests/src/org/eclipse/tracecompass/segmentstore/core/tests/treemap/TreeMapStoreTest.java b/statesystem/org.eclipse.tracecompass.segmentstore.core.tests/src/org/eclipse/tracecompass/segmentstore/core/tests/treemap/TreeMapStoreTest.java
new file mode 100644 (file)
index 0000000..ba8a0e5
--- /dev/null
@@ -0,0 +1,192 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Ericsson
+ *
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v1.0 which
+ * accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+
+package org.eclipse.tracecompass.segmentstore.core.tests.treemap;
+
+import static org.junit.Assert.assertEquals;
+
+import java.util.List;
+
+import org.eclipse.tracecompass.common.core.NonNullUtils;
+import org.eclipse.tracecompass.segmentstore.core.BasicSegment;
+import org.eclipse.tracecompass.segmentstore.core.ISegment;
+import org.eclipse.tracecompass.segmentstore.core.treemap.TreeMapStore;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+import com.google.common.collect.ImmutableList;
+import com.google.common.collect.Iterables;
+
+/**
+ * Unit tests for intersecting elements in a TreeMapStore
+ *
+ * @author France Lapointe Nguyen
+ */
+public class TreeMapStoreTest {
+
+    private TreeMapStore<ISegment> fSegmentStore;
+
+    private static final ISegment SEGMENT_2_4 = new BasicSegment(2, 4);
+    private static final ISegment SEGMENT_6_8 = new BasicSegment(6, 8);
+    private static final ISegment SEGMENT_10_14 = new BasicSegment(10, 14);
+
+    private static final List<ISegment> SEGMENTS = ImmutableList.of(SEGMENT_2_4, SEGMENT_6_8, SEGMENT_10_14);
+
+    /**
+     * Initialize data (test vector) that will be tested
+     */
+    @Before
+    public void setup() {
+        fSegmentStore = new TreeMapStore<>();
+        for (int i = 0; i < SEGMENTS.size(); i++) {
+            fSegmentStore.addElement(NonNullUtils.checkNotNull(SEGMENTS.get(i)));
+        }
+    }
+
+    /**
+     * Dispose of the segment store
+     */
+    @After
+    public void teardown() {
+        fSegmentStore.dispose();
+    }
+
+    /**
+     * Testing method getNbElements
+     */
+    @Test
+    public void testGetNbElements() {
+        assertEquals(SEGMENTS.size(), fSegmentStore.getNbElements());
+    }
+
+    /**
+     * Testing method getElementAtIndex
+     */
+    @Test
+    public void testGetElementAtIndex() {
+        for (int i = 0; i < SEGMENTS.size(); i++) {
+            assertEquals(SEGMENTS.get(i), fSegmentStore.getElementAtIndex(i));
+        }
+    }
+
+    /**
+     * Testing method getIntersectingElements(long start, long end)
+     */
+    @Test
+    public void testGetIntersectingElementsRange() {
+
+        Iterable<ISegment> intersectingElements;
+
+        /*
+         * Range that does not include any segment
+         */
+        intersectingElements = fSegmentStore.getIntersectingElements(16, 20);
+        assertEquals(0, Iterables.size(intersectingElements));
+
+        /*
+         * Range start time : Before first segment start time Range end time :
+         * After last segment end time
+         */
+        intersectingElements = fSegmentStore.getIntersectingElements(1, 15);
+        assertEquals(3, Iterables.size(intersectingElements));
+
+        /*
+         * Range start time : On first segment start time Range end time : On
+         * last segment end time
+         */
+        intersectingElements = fSegmentStore.getIntersectingElements(2, 14);
+        assertEquals(3, Iterables.size(intersectingElements));
+
+        /*
+         * Range start time : After one segment start time Range end time :
+         * Before one segment end time
+         */
+        intersectingElements = fSegmentStore.getIntersectingElements(11, 13);
+        assertEquals(1, Iterables.size(intersectingElements));
+        assert (SEGMENT_10_14.equals(intersectingElements));
+
+        /*
+         * Range start time : On one segment start time Range end time : On one
+         * segment end time
+         */
+        intersectingElements = fSegmentStore.getIntersectingElements(6, 8);
+        assertEquals(1, Iterables.size(intersectingElements));
+        assert (SEGMENT_6_8.equals(intersectingElements));
+
+        /*
+         * Range start time : On last segment end time Range end time : After
+         * last segment end time
+         */
+        intersectingElements = fSegmentStore.getIntersectingElements(14, 18);
+        assertEquals(1, Iterables.size(intersectingElements));
+        assert (SEGMENT_10_14.equals(intersectingElements));
+
+        /*
+         * Range start time : Before first segment start time Range end time :
+         * On first segment start time
+         */
+        intersectingElements = fSegmentStore.getIntersectingElements(1, 2);
+        assertEquals(1, Iterables.size(intersectingElements));
+        assert (SEGMENT_2_4.equals(intersectingElements));
+    }
+
+    /**
+     * Testing method getIntersectingElements(long start, long end)
+     */
+    @Test
+    public void testGetIntersectingElementsTime() {
+
+        Iterable<ISegment> intersectingElements;
+
+        /*
+         * Time between segment start time and end time
+         */
+        intersectingElements = fSegmentStore.getIntersectingElements(3);
+        assertEquals(1, Iterables.size(intersectingElements));
+        assert (SEGMENT_2_4.equals(intersectingElements));
+
+        /*
+         * Time on segment start time
+         */
+        intersectingElements = fSegmentStore.getIntersectingElements(2);
+        assertEquals(1, Iterables.size(intersectingElements));
+        assert (SEGMENT_2_4.equals(intersectingElements));
+
+        /*
+         * Time on segment end time
+         */
+        intersectingElements = fSegmentStore.getIntersectingElements(4);
+        assertEquals(1, Iterables.size(intersectingElements));
+        assert (SEGMENT_2_4.equals(intersectingElements));
+
+        /*
+         * Time before all segment start time
+         */
+        intersectingElements = fSegmentStore.getIntersectingElements(1);
+        assertEquals(0, Iterables.size(intersectingElements));
+
+        /*
+         * Time after all segment end time
+         */
+        intersectingElements = fSegmentStore.getIntersectingElements(15);
+        assertEquals(0, Iterables.size(intersectingElements));
+    }
+
+    /**
+     * Testing method getIntersectingElements(long start, long end)
+     */
+    @Test
+    public void testDispose() {
+        TreeMapStore<ISegment> store = new TreeMapStore<>();
+        store.addElement(NonNullUtils.checkNotNull(SEGMENT_2_4));
+        store.dispose();
+        assertEquals(0, store.getNbElements());
+    }
+}
\ No newline at end of file
This page took 0.030006 seconds and 5 git commands to generate.