From 9448be7cc9cff3a3a496c03546751a4d02d840e6 Mon Sep 17 00:00:00 2001 From: France Lapointe Nguyen Date: Wed, 29 Jul 2015 16:40:30 -0400 Subject: [PATCH] ss: add unit tests for the segment store Change-Id: Ic29ccc34190a4f09723dc259ce79da4ec213b84a Signed-off-by: France Lapointe Nguyen Signed-off-by: Alexandre Montplaisir Reviewed-on: https://git.eclipse.org/r/51279 Reviewed-by: Hudson CI Reviewed-by: Patrick Tasse --- .../META-INF/MANIFEST.MF | 5 +- .../alltests/RunAllCoreTests.java | 1 + .../META-INF/MANIFEST.MF | 3 +- .../pom.xml | 2 - .../segmentstore/core/tests/AllTests.java | 5 +- .../core/tests/treemap/AllTests.java | 24 +++ .../core/tests/treemap/TreeMapStoreTest.java | 192 ++++++++++++++++++ 7 files changed, 223 insertions(+), 9 deletions(-) create mode 100644 statesystem/org.eclipse.tracecompass.segmentstore.core.tests/src/org/eclipse/tracecompass/segmentstore/core/tests/treemap/AllTests.java create mode 100644 statesystem/org.eclipse.tracecompass.segmentstore.core.tests/src/org/eclipse/tracecompass/segmentstore/core/tests/treemap/TreeMapStoreTest.java diff --git a/releng/org.eclipse.tracecompass.alltests/META-INF/MANIFEST.MF b/releng/org.eclipse.tracecompass.alltests/META-INF/MANIFEST.MF index c5184a5613..dfa1fb366f 100644 --- a/releng/org.eclipse.tracecompass.alltests/META-INF/MANIFEST.MF +++ b/releng/org.eclipse.tracecompass.alltests/META-INF/MANIFEST.MF @@ -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 diff --git a/releng/org.eclipse.tracecompass.alltests/src/org/eclipse/tracecompass/alltests/RunAllCoreTests.java b/releng/org.eclipse.tracecompass.alltests/src/org/eclipse/tracecompass/alltests/RunAllCoreTests.java index 71ef447026..c2e0d9f6b5 100644 --- a/releng/org.eclipse.tracecompass.alltests/src/org/eclipse/tracecompass/alltests/RunAllCoreTests.java +++ b/releng/org.eclipse.tracecompass.alltests/src/org/eclipse/tracecompass/alltests/RunAllCoreTests.java @@ -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, diff --git a/statesystem/org.eclipse.tracecompass.segmentstore.core.tests/META-INF/MANIFEST.MF b/statesystem/org.eclipse.tracecompass.segmentstore.core.tests/META-INF/MANIFEST.MF index 429fa1e15e..f5fd6916b1 100644 --- a/statesystem/org.eclipse.tracecompass.segmentstore.core.tests/META-INF/MANIFEST.MF +++ b/statesystem/org.eclipse.tracecompass.segmentstore.core.tests/META-INF/MANIFEST.MF @@ -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 diff --git a/statesystem/org.eclipse.tracecompass.segmentstore.core.tests/pom.xml b/statesystem/org.eclipse.tracecompass.segmentstore.core.tests/pom.xml index 03a83de792..5802c77ea7 100644 --- a/statesystem/org.eclipse.tracecompass.segmentstore.core.tests/pom.xml +++ b/statesystem/org.eclipse.tracecompass.segmentstore.core.tests/pom.xml @@ -36,8 +36,6 @@ org.eclipse.tracecompass.segmentstore.core.tests.AllTests false false - - true org.eclipse.platform.ide diff --git a/statesystem/org.eclipse.tracecompass.segmentstore.core.tests/src/org/eclipse/tracecompass/segmentstore/core/tests/AllTests.java b/statesystem/org.eclipse.tracecompass.segmentstore.core.tests/src/org/eclipse/tracecompass/segmentstore/core/tests/AllTests.java index 2347ea2173..0c3130ac76 100644 --- a/statesystem/org.eclipse.tracecompass.segmentstore.core.tests/src/org/eclipse/tracecompass/segmentstore/core/tests/AllTests.java +++ b/statesystem/org.eclipse.tracecompass.segmentstore.core.tests/src/org/eclipse/tracecompass/segmentstore/core/tests/AllTests.java @@ -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 index 0000000000..eae57e9d3b --- /dev/null +++ b/statesystem/org.eclipse.tracecompass.segmentstore.core.tests/src/org/eclipse/tracecompass/segmentstore/core/tests/treemap/AllTests.java @@ -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 index 0000000000..ba8a0e5eed --- /dev/null +++ b/statesystem/org.eclipse.tracecompass.segmentstore.core.tests/src/org/eclipse/tracecompass/segmentstore/core/tests/treemap/TreeMapStoreTest.java @@ -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 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 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 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 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 store = new TreeMapStore<>(); + store.addElement(NonNullUtils.checkNotNull(SEGMENT_2_4)); + store.dispose(); + assertEquals(0, store.getNbElements()); + } +} \ No newline at end of file -- 2.34.1