org.eclipse.core.resources,
org.eclipse.tracecompass.common.core,
org.eclipse.tracecompass.tmf.core,
+ org.eclipse.tracecompass.datastore.core,
org.eclipse.tracecompass.segmentstore.core,
org.eclipse.tracecompass.analysis.timing.core,
org.eclipse.tracecompass.statesystem.core
org.eclipse.core.runtime,
org.eclipse.tracecompass.common.core,
org.eclipse.tracecompass.analysis.os.linux.core,
+ org.eclipse.tracecompass.datastore.core,
org.eclipse.tracecompass.segmentstore.core,
org.eclipse.tracecompass.tmf.core,
org.eclipse.tracecompass.tmf.core.tests,
org.eclipse.core.resources,
org.eclipse.tracecompass.common.core,
org.eclipse.tracecompass.tmf.core,
+ org.eclipse.tracecompass.datastore.core,
org.eclipse.tracecompass.segmentstore.core
Export-Package: org.eclipse.tracecompass.analysis.timing.core.segmentstore,
org.eclipse.tracecompass.analysis.timing.core.segmentstore.statistics,
org.junit,
org.eclipse.tracecompass.analysis.timing.core.tests,
org.eclipse.tracecompass.tmf.ui.tests,
+ org.eclipse.tracecompass.datastore.core,
org.eclipse.tracecompass.segmentstore.core,
org.eclipse.tracecompass.datastore.core
Import-Package: com.google.common.collect,
import org.eclipse.tracecompass.analysis.timing.core.segmentstore.ISegmentStoreProvider;
import org.eclipse.tracecompass.analysis.timing.ui.views.segmentstore.table.AbstractSegmentStoreTableView;
import org.eclipse.tracecompass.analysis.timing.ui.views.segmentstore.table.AbstractSegmentStoreTableViewer;
-import org.eclipse.tracecompass.internal.provisional.segmentstore.core.BasicSegment2;
import org.eclipse.tracecompass.segmentstore.core.BasicSegment;
import org.eclipse.tracecompass.segmentstore.core.ISegment;
import org.eclipse.tracecompass.segmentstore.core.ISegmentStore;
Path segmentFile = Files.createTempFile("tmpSegStore", ".tmp");
try {
final int size = 1000000;
- ISegmentStore<@NonNull BasicSegment2> fixture = SegmentStoreFactory.createOnDiskSegmentStore(segmentFile, BasicSegment2.BASIC_SEGMENT_READ_FACTORY);
+ ISegmentStore<@NonNull BasicSegment> fixture = SegmentStoreFactory.createOnDiskSegmentStore(segmentFile, BasicSegment.BASIC_SEGMENT_READ_FACTORY);
for (int i = 0; i < size; i++) {
- fixture.add(new BasicSegment2(i, 2 * i));
+ fixture.add(new BasicSegment(i, 2 * i));
}
assertNotNull(getTable());
getTable().updateModel(fixture);
com.google.guava,
org.eclipse.tracecompass.analysis.timing.core,
org.eclipse.tracecompass.common.core,
+ org.eclipse.tracecompass.datastore.core,
org.eclipse.tracecompass.segmentstore.core,
org.eclipse.tracecompass.tmf.core,
org.eclipse.tracecompass.tmf.ui,
org.eclipse.tracecompass.analysis.os.linux.core.tests,
org.eclipse.tracecompass.analysis.graph.core,
org.eclipse.tracecompass.analysis.timing.core,
+ org.eclipse.tracecompass.datastore.core,
org.eclipse.tracecompass.segmentstore.core
Export-Package: org.eclipse.tracecompass.lttng2.kernel.core.tests,
org.eclipse.tracecompass.lttng2.kernel.core.tests.analysis.graph,
org.eclipse.tracecompass.lttng2.kernel.core.tests.perf.analysis.tid,
org.eclipse.tracecompass.lttng2.kernel.core.tests.perf.event.matching,
org.eclipse.tracecompass.lttng2.kernel.core.tests.stubs,
+ org.eclipse.tracecompass.lttng2.kernel.core.tests.synchronization,
+ org.eclipse.tracecompass.lttng2.lttng.kernel.core.tests.shared,
org.eclipse.tracecompass.lttng2.lttng.kernel.core.tests.shared.vm
Import-Package: com.google.common.collect,
org.eclipse.test.performance,
import org.eclipse.test.performance.Performance;
import org.eclipse.test.performance.PerformanceMeter;
import org.eclipse.tracecompass.common.core.NonNullUtils;
-import org.eclipse.tracecompass.internal.provisional.segmentstore.core.BasicSegment2;
import org.eclipse.tracecompass.internal.segmentstore.core.arraylist.ArrayListStore;
import org.eclipse.tracecompass.internal.segmentstore.core.arraylist.LazyArrayListStore;
import org.eclipse.tracecompass.internal.segmentstore.core.treemap.TreeMapStore;
+import org.eclipse.tracecompass.segmentstore.core.BasicSegment;
import org.eclipse.tracecompass.segmentstore.core.ISegment;
import org.eclipse.tracecompass.segmentstore.core.ISegmentStore;
import org.eclipse.tracecompass.segmentstore.core.SegmentComparators;
private static final int DEFAULT_SAMPLE = 1000;
private static final int DEFAULT_LOOP_COUNT = 10;
- private final ISegmentStore<@NonNull BasicSegment2> fSegStore;
+ private final ISegmentStore<@NonNull BasicSegment> fSegStore;
private final String fName;
private final Performance fPerf;
{ "Array list store", new ArrayListStore<>() },
{ "Lazy array list store", new LazyArrayListStore<>() },
{ "Treemap store", new TreeMapStore<>() },
- { "HT store", new HistoryTreeSegmentStoreStub<>(NonNullUtils.checkNotNull(Files.createTempFile("tmpSegStore", null)), 0, BasicSegment2.BASIC_SEGMENT_READ_FACTORY) },
+ { "HT store", new HistoryTreeSegmentStoreStub<>(NonNullUtils.checkNotNull(Files.createTempFile("tmpSegStore", null)), 0, BasicSegment.BASIC_SEGMENT_READ_FACTORY) },
});
}
* @param segStore
* The segment store to fill for the benchmarks
*/
- public SegmentStoreBenchmark(String name, ISegmentStore<@NonNull BasicSegment2> segStore) {
+ public SegmentStoreBenchmark(String name, ISegmentStore<@NonNull BasicSegment> segStore) {
fSegStore = segStore;
fName = name;
fPerf = NonNullUtils.checkNotNull(Performance.getDefault());
pMiterate2.commit();
}
- private static int iterate(Iterable<@NonNull BasicSegment2> store) {
+ private static int iterate(Iterable<@NonNull BasicSegment> store) {
int count = 0;
- Iterator<@NonNull BasicSegment2> iterator = store.iterator();
+ Iterator<@NonNull BasicSegment> iterator = store.iterator();
while (iterator.hasNext()) {
count++;
iterator.next();
return count;
}
- private static int sortedIterate(ISegmentStore<@NonNull BasicSegment2> store, Comparator<ISegment> order) {
- Iterable<@NonNull BasicSegment2> iterable = store.iterator(order);
+ private static int sortedIterate(ISegmentStore<@NonNull BasicSegment> store, Comparator<ISegment> order) {
+ Iterable<@NonNull BasicSegment> iterable = store.iterator(order);
return iterate(iterable);
}
- private static void populate(int size, int[] fuzz, ISegmentStore<@NonNull BasicSegment2> store, long low, long high) {
+ private static void populate(int size, int[] fuzz, ISegmentStore<@NonNull BasicSegment> store, long low, long high) {
for (long i = low; i < high; i++) {
long start = i + fuzz[(int) (i % size)];
- store.add(new BasicSegment2(start, start + 10));
+ store.add(new BasicSegment(start, start + 10));
}
}
}
\ No newline at end of file
import org.eclipse.jdt.annotation.NonNull;
import org.eclipse.jdt.annotation.NonNullByDefault;
-import org.eclipse.tracecompass.internal.provisional.segmentstore.core.BasicSegment2;
+import org.eclipse.tracecompass.segmentstore.core.BasicSegment;
import org.eclipse.tracecompass.segmentstore.core.ISegmentStore;
import org.eclipse.tracecompass.segmentstore.core.tests.historytree.HistoryTreeSegmentStoreStub;
import org.junit.runners.Parameterized.Parameters;
* @param segStore
* The segment store to use
*/
- public SegmentStoreBigBenchmark(String name, ISegmentStore<@NonNull BasicSegment2> segStore) {
+ public SegmentStoreBigBenchmark(String name, ISegmentStore<@NonNull BasicSegment> segStore) {
super(name, segStore);
}
@Parameters(name = "{index}: {0}")
public static Iterable<Object[]> getParameters() throws IOException {
return Arrays.asList(new Object[][] {
- { "HT store", new HistoryTreeSegmentStoreStub<>(Files.createTempFile("tmpSegStore", null), 1, BasicSegment2.BASIC_SEGMENT_READ_FACTORY) },
+ { "HT store", new HistoryTreeSegmentStoreStub<>(Files.createTempFile("tmpSegStore", null), 1, BasicSegment.BASIC_SEGMENT_READ_FACTORY) },
});
}
import org.eclipse.tracecompass.datastore.core.interval.IHTIntervalReader;
import org.eclipse.tracecompass.datastore.core.serialization.ISafeByteBufferWriter;
import org.eclipse.tracecompass.datastore.core.serialization.SafeByteBufferFactory;
-import org.eclipse.tracecompass.internal.provisional.segmentstore.core.ISegment2;
import org.eclipse.tracecompass.segmentstore.core.BasicSegment;
import org.eclipse.tracecompass.segmentstore.core.ISegment;
import org.eclipse.tracecompass.segmentstore.core.ISegmentStore;
*
* @author Geneviève Bastien
*/
- protected static final class TestSegment implements ISegment2 {
+ protected static final class TestSegment implements ISegment {
/**
* The reader for this class
import org.eclipse.tracecompass.common.core.NonNullUtils;
import org.eclipse.tracecompass.internal.provisional.datastore.core.historytree.AbstractHistoryTree;
import org.eclipse.tracecompass.internal.provisional.datastore.core.historytree.overlapping.AbstractOverlappingHistoryTreeTestBase;
-import org.eclipse.tracecompass.internal.provisional.segmentstore.core.BasicSegment2;
import org.eclipse.tracecompass.internal.segmentstore.core.segmentHistoryTree.SegmentHistoryTree;
import org.eclipse.tracecompass.internal.segmentstore.core.segmentHistoryTree.SegmentTreeNode;
+import org.eclipse.tracecompass.segmentstore.core.BasicSegment;
import org.eclipse.tracecompass.segmentstore.core.tests.historytree.SegmentHistoryTreeStub;
import org.junit.Test;
* @author Geneviève Bastien
*/
@NonNullByDefault
-public class SegmentHistoryTreeTest extends AbstractOverlappingHistoryTreeTestBase<BasicSegment2, SegmentTreeNode<BasicSegment2>> {
+public class SegmentHistoryTreeTest extends AbstractOverlappingHistoryTreeTestBase<BasicSegment, SegmentTreeNode<BasicSegment>> {
- private static final BasicSegment2 DEFAULT_OBJECT = new BasicSegment2(0, 0);
+ private static final BasicSegment DEFAULT_OBJECT = new BasicSegment(0, 0);
@Override
- protected SegmentHistoryTreeStub<BasicSegment2> createHistoryTree(@NonNull File stateHistoryFile, int blockSize, int maxChildren, int providerVersion, long treeStart)
+ protected SegmentHistoryTreeStub<BasicSegment> createHistoryTree(@NonNull File stateHistoryFile, int blockSize, int maxChildren, int providerVersion, long treeStart)
throws IOException {
return new SegmentHistoryTreeStub<>(stateHistoryFile,
blockSize,
maxChildren,
providerVersion,
treeStart,
- BasicSegment2.BASIC_SEGMENT_READ_FACTORY);
+ BasicSegment.BASIC_SEGMENT_READ_FACTORY);
}
@Override
- protected SegmentHistoryTreeStub<BasicSegment2> createHistoryTree(@NonNull File existingStateFile, int expectedProviderVersion) throws IOException {
+ protected SegmentHistoryTreeStub<BasicSegment> createHistoryTree(@NonNull File existingStateFile, int expectedProviderVersion) throws IOException {
return new SegmentHistoryTreeStub<>(existingStateFile, expectedProviderVersion,
- BasicSegment2.BASIC_SEGMENT_READ_FACTORY);
+ BasicSegment.BASIC_SEGMENT_READ_FACTORY);
}
@Override
- protected BasicSegment2 createInterval(long start, long end) {
- return new BasicSegment2(start, end);
+ protected BasicSegment createInterval(long start, long end) {
+ return new BasicSegment(start, end);
}
@Override
- protected long fillValues(@NonNull AbstractHistoryTree<@NonNull BasicSegment2, SegmentTreeNode<@NonNull BasicSegment2>> ht, int fillSize, long start) {
+ protected long fillValues(@NonNull AbstractHistoryTree<@NonNull BasicSegment, SegmentTreeNode<@NonNull BasicSegment>> ht, int fillSize, long start) {
int nbValues = fillSize / DEFAULT_OBJECT.getSizeOnDisk();
for (int i = 0; i < nbValues; i++) {
ht.insert(createInterval(start + i, start + i + 1));
@Test
public void testIsEmpty() {
long start = 10L;
- SegmentHistoryTreeStub<BasicSegment2> oht = (SegmentHistoryTreeStub<BasicSegment2>) setupSmallTree(3, start);
+ SegmentHistoryTreeStub<BasicSegment> oht = (SegmentHistoryTreeStub<BasicSegment>) setupSmallTree(3, start);
assertTrue(oht.isEmpty());
assertFalse(oht.isEmpty());
/* Fill a first node */
- SegmentTreeNode<BasicSegment2> node = oht.getLatestLeaf();
+ SegmentTreeNode<BasicSegment> node = oht.getLatestLeaf();
long time = fillValues(oht, node.getNodeFreeSpace(), start);
/*
@Test
public void testSizeAndIterator() throws IOException {
long start = 10L;
- SegmentHistoryTreeStub<BasicSegment2> oht = (SegmentHistoryTreeStub<BasicSegment2>) setupSmallTree(3, start);
+ SegmentHistoryTreeStub<BasicSegment> oht = (SegmentHistoryTreeStub<BasicSegment>) setupSmallTree(3, start);
int nbSegments = 0;
assertEquals(nbSegments, oht.size());
assertEquals(nbSegments, oht.size());
/* Fill a first node */
- SegmentTreeNode<BasicSegment2> node = oht.getLatestLeaf();
+ SegmentTreeNode<BasicSegment> node = oht.getLatestLeaf();
nbSegments += node.getNodeFreeSpace() / DEFAULT_OBJECT.getSizeOnDisk();
long time = fillValues(oht, node.getNodeFreeSpace(), start);
assertEquals(nbSegments, oht.size());
oht.closeTree(oht.getTreeEnd());
// Create a reader history tree
- oht = (SegmentHistoryTreeStub<BasicSegment2>) createHistoryTreeReader();
+ oht = (SegmentHistoryTreeStub<BasicSegment>) createHistoryTreeReader();
assertEquals(nbSegments, oht.size());
// Test the iterator on that tree
- Iterator<BasicSegment2> iterator = oht.iterator();
+ Iterator<BasicSegment> iterator = oht.iterator();
assertNotNull(iterator);
int count = Iterators.size(iterator);
assertEquals(nbSegments, count);
// Test the intersecting elements
- Iterable<BasicSegment2> intersectingElements = oht.getIntersectingElements(start, time);
+ Iterable<BasicSegment> intersectingElements = oht.getIntersectingElements(start, time);
count = 0;
// While doing this iterator, count the number of segments of a smaller
// time range, it will be needed later
long rangeStart = (long) (start + (time - start) * 0.4);
long rangeEnd = (long) (time - (time - start) * 0.4);
int nbInRange = 0;
- for (BasicSegment2 segment : intersectingElements) {
+ for (BasicSegment segment : intersectingElements) {
count++;
if (segment.getStart() <= rangeEnd && rangeStart <= segment.getEnd()) {
nbInRange++;
assertEquals(nbInRange, count);
// Test intersecting elements with start time ordering
- Comparator<BasicSegment2> cmp = NonNullUtils.checkNotNull(Comparator.comparing(BasicSegment2::getStart));
+ Comparator<BasicSegment> cmp = NonNullUtils.checkNotNull(Comparator.comparing(BasicSegment::getStart));
assertSortedIteration(oht, rangeStart, rangeEnd, cmp, nbInRange);
// Test intersecting elements with end time ordering
- cmp = NonNullUtils.checkNotNull(Comparator.comparing(BasicSegment2::getEnd));
+ cmp = NonNullUtils.checkNotNull(Comparator.comparing(BasicSegment::getEnd));
assertSortedIteration(oht, rangeStart, rangeEnd, cmp, nbInRange);
// Test intersecting elements with duration ordering
- cmp = NonNullUtils.checkNotNull(Comparator.comparing(BasicSegment2::getLength));
+ cmp = NonNullUtils.checkNotNull(Comparator.comparing(BasicSegment::getLength));
assertSortedIteration(oht, rangeStart, rangeEnd, cmp, nbInRange);
}
- private static void assertSortedIteration(SegmentHistoryTreeStub<@NonNull BasicSegment2> oht, long rangeStart, long rangeEnd, Comparator<@NonNull BasicSegment2> cmp, int nbInRange) {
+ private static void assertSortedIteration(SegmentHistoryTreeStub<@NonNull BasicSegment> oht, long rangeStart, long rangeEnd, Comparator<@NonNull BasicSegment> cmp, int nbInRange) {
int count = 0;
- BasicSegment2 prev = DEFAULT_OBJECT;
- for (BasicSegment2 segment : oht.getIntersectingElements(rangeStart, rangeEnd, cmp)) {
+ BasicSegment prev = DEFAULT_OBJECT;
+ for (BasicSegment segment : oht.getIntersectingElements(rangeStart, rangeEnd, cmp)) {
count++;
assertTrue("Segment comparison at " + count, cmp.compare(prev, segment) <= 0);
}
import org.eclipse.tracecompass.internal.provisional.datastore.core.historytree.AbstractHistoryTree.IHTNodeFactory;
import org.eclipse.tracecompass.internal.provisional.datastore.core.historytree.HTCoreNodeTest;
import org.eclipse.tracecompass.internal.provisional.datastore.core.historytree.HTNode;
-import org.eclipse.tracecompass.internal.provisional.segmentstore.core.BasicSegment2;
import org.eclipse.tracecompass.internal.segmentstore.core.segmentHistoryTree.SegmentTreeNode;
+import org.eclipse.tracecompass.segmentstore.core.BasicSegment;
import org.eclipse.tracecompass.segmentstore.core.tests.historytree.SegmentTreeNodeStub;
import org.junit.Test;
import org.junit.runner.RunWith;
*/
@NonNullByDefault
@RunWith(Parameterized.class)
-public class SegmentTreeCoreNodeTest extends HTCoreNodeTest<BasicSegment2, SegmentTreeNodeStub> {
+public class SegmentTreeCoreNodeTest extends HTCoreNodeTest<BasicSegment, SegmentTreeNodeStub> {
/**
* A factory to create base objects for test
*/
- private static final ObjectFactory<BasicSegment2> BASE_SEGMENT_FACTORY = (s, e) -> new BasicSegment2(s, e);
+ private static final ObjectFactory<BasicSegment> BASE_SEGMENT_FACTORY = (s, e) -> new BasicSegment(s, e);
/**
* Constructor
*/
public SegmentTreeCoreNodeTest(String name,
int headerSize,
- IHTNodeFactory<BasicSegment2, SegmentTreeNodeStub> factory,
- IHTIntervalReader<BasicSegment2> objReader,
- ObjectFactory<BasicSegment2> objFactory) throws IOException {
+ IHTNodeFactory<BasicSegment, SegmentTreeNodeStub> factory,
+ IHTIntervalReader<BasicSegment> objReader,
+ ObjectFactory<BasicSegment> objFactory) throws IOException {
super(name, headerSize, factory, objReader, objFactory);
}
{ "Segment tree core node",
HTNode.COMMON_HEADER_SIZE + Integer.BYTES + Integer.BYTES * NB_CHILDREN + 6 * Long.BYTES * NB_CHILDREN,
SegmentTreeNodeStub.NODE_FACTORY,
- BasicSegment2.BASIC_SEGMENT_READ_FACTORY,
+ BasicSegment.BASIC_SEGMENT_READ_FACTORY,
BASE_SEGMENT_FACTORY },
});
}
assertEquals(0, stub.getLongest());
// Add a new element and verify the data
- BasicSegment2 segment = new BasicSegment2(start, start + shortLen);
+ BasicSegment segment = new BasicSegment(start, start + shortLen);
stub.add(segment);
assertEquals(start, stub.getMaxStart());
assertEquals(start + shortLen, stub.getMinEnd());
// Add a new element and verify the data: longest length and max start
// should be updated
- segment = new BasicSegment2(start + shortLen, start + longLen);
+ segment = new BasicSegment(start + shortLen, start + longLen);
stub.add(segment);
assertEquals(start + shortLen, stub.getMaxStart());
assertEquals(start + shortLen, stub.getMinEnd());
assertEquals(0, parentStub.getLongest(0));
// Add a few segments to the child and verify its own data
- BasicSegment2 segment = new BasicSegment2(start, start + shortLen);
+ BasicSegment segment = new BasicSegment(start, start + shortLen);
stub.add(segment);
- segment = new BasicSegment2(start + shortLen, start + longLen);
+ segment = new BasicSegment(start + shortLen, start + longLen);
stub.add(segment);
assertEquals(start + shortLen, stub.getMaxStart());
import org.eclipse.tracecompass.datastore.core.interval.IHTIntervalReader;
import org.eclipse.tracecompass.internal.provisional.datastore.core.historytree.HTNode;
import org.eclipse.tracecompass.internal.provisional.datastore.core.historytree.HTNodeTest;
-import org.eclipse.tracecompass.internal.provisional.segmentstore.core.BasicSegment2;
+import org.eclipse.tracecompass.segmentstore.core.BasicSegment;
import org.eclipse.tracecompass.segmentstore.core.tests.historytree.SegmentTreeNodeStub;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
*/
@NonNullByDefault
@RunWith(Parameterized.class)
-public class SegmentTreeNodeTest extends HTNodeTest<BasicSegment2, SegmentTreeNodeStub> {
+public class SegmentTreeNodeTest extends HTNodeTest<BasicSegment, SegmentTreeNodeStub> {
/**
* A factory to create base objects for test
*/
- private static final ObjectFactory<BasicSegment2> BASE_SEGMENT_FACTORY = (s, e) -> new BasicSegment2(s, e);
+ private static final ObjectFactory<BasicSegment> BASE_SEGMENT_FACTORY = (s, e) -> new BasicSegment(s, e);
/**
* Constructor
*/
public SegmentTreeNodeTest(String name,
int headerSize,
- IHTNodeFactory<BasicSegment2, SegmentTreeNodeStub> factory,
- IHTIntervalReader<BasicSegment2> objReader,
- ObjectFactory<BasicSegment2> objFactory) throws IOException {
+ IHTNodeFactory<BasicSegment, SegmentTreeNodeStub> factory,
+ IHTIntervalReader<BasicSegment> objReader,
+ ObjectFactory<BasicSegment> objFactory) throws IOException {
super(name, headerSize, factory, objReader, objFactory);
}
{ "Segment tree node",
HTNode.COMMON_HEADER_SIZE,
SegmentTreeNodeStub.NODE_FACTORY,
- BasicSegment2.BASIC_SEGMENT_READ_FACTORY,
+ BasicSegment.BASIC_SEGMENT_READ_FACTORY,
BASE_SEGMENT_FACTORY
},
});
import java.nio.file.Path;
import org.eclipse.tracecompass.datastore.core.interval.IHTIntervalReader;
-import org.eclipse.tracecompass.internal.provisional.segmentstore.core.ISegment2;
import org.eclipse.tracecompass.internal.segmentstore.core.segmentHistoryTree.HistoryTreeSegmentStore;
+import org.eclipse.tracecompass.segmentstore.core.ISegment;
/**
* Base stub class, that resolves the node type of the tree to the stub node
* @param <E>
* The type of segments accepted in this store
*/
-public class HistoryTreeSegmentStoreStub<E extends ISegment2> extends HistoryTreeSegmentStore<E> {
+public class HistoryTreeSegmentStoreStub<E extends ISegment> extends HistoryTreeSegmentStore<E> {
/**
* Constructor for new history files. Use this when creating a new history
import org.eclipse.tracecompass.datastore.core.interval.IHTIntervalReader;
import org.eclipse.tracecompass.internal.provisional.datastore.core.historytree.IHistoryTree;
-import org.eclipse.tracecompass.internal.provisional.segmentstore.core.ISegment2;
import org.eclipse.tracecompass.internal.segmentstore.core.segmentHistoryTree.SegmentHistoryTree;
import org.eclipse.tracecompass.internal.segmentstore.core.segmentHistoryTree.SegmentTreeNode;
+import org.eclipse.tracecompass.segmentstore.core.ISegment;
/**
* A stub segment history tree that extends the base segment history tree and
* @param <E>
* The type of segments that goes in this tree
*/
-public class SegmentHistoryTreeStub<E extends ISegment2> extends SegmentHistoryTree<E> {
+public class SegmentHistoryTreeStub<E extends ISegment> extends SegmentHistoryTree<E> {
private int fLastInsertionIndex;
package org.eclipse.tracecompass.segmentstore.core.tests.historytree;
import org.eclipse.tracecompass.internal.provisional.datastore.core.historytree.AbstractHistoryTree.IHTNodeFactory;
-import org.eclipse.tracecompass.internal.provisional.segmentstore.core.BasicSegment2;
import org.eclipse.tracecompass.internal.segmentstore.core.segmentHistoryTree.SegmentTreeNode;
+import org.eclipse.tracecompass.segmentstore.core.BasicSegment;
/**
* A stub segment tree node to expose some functionalities of the segment tree
*
* @author Geneviève Bastien
*/
-public class SegmentTreeNodeStub extends SegmentTreeNode<BasicSegment2> {
+public class SegmentTreeNodeStub extends SegmentTreeNode<BasicSegment> {
/** Factory to create nodes of this type */
- public static final IHTNodeFactory<BasicSegment2, SegmentTreeNodeStub> NODE_FACTORY =
+ public static final IHTNodeFactory<BasicSegment, SegmentTreeNodeStub> NODE_FACTORY =
(t, b, m, seq, p, start) -> new SegmentTreeNodeStub(t, b, m, seq, p, start);
/**
org.eclipse.core.resources,
org.eclipse.tracecompass.common.core,
org.eclipse.tracecompass.datastore.core
-Export-Package: org.eclipse.tracecompass.internal.provisional.segmentstore.core;x-friends:="org.eclipse.tracecompass.segmentstore.core.tests",
- org.eclipse.tracecompass.internal.segmentstore.core;x-internal:=true,
+Export-Package: org.eclipse.tracecompass.internal.segmentstore.core;x-internal:=true,
org.eclipse.tracecompass.internal.segmentstore.core.arraylist;x-friends:="org.eclipse.tracecompass.segmentstore.core.tests",
org.eclipse.tracecompass.internal.segmentstore.core.segmentHistoryTree;x-friends:="org.eclipse.tracecompass.segmentstore.core.tests",
org.eclipse.tracecompass.internal.segmentstore.core.treemap;x-friends:="org.eclipse.tracecompass.segmentstore.core.tests",
+++ /dev/null
-/*******************************************************************************
- * Copyright (c) 2016 École Polytechnique de Montréal
- *
- * 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.internal.provisional.segmentstore.core;
-
-import org.eclipse.tracecompass.datastore.core.interval.HTInterval;
-import org.eclipse.tracecompass.datastore.core.interval.IHTIntervalReader;
-
-/**
- * Extension of the BasicSegment, to implement ISegment2 so that it can be
- * stored in a history tree backend.
- *
- * @since 1.2
- */
-public class BasicSegment2 extends HTInterval implements ISegment2 {
-
- /**
- * The factory to read an object from a buffer
- */
- public static final IHTIntervalReader<BasicSegment2> BASIC_SEGMENT_READ_FACTORY = buffer -> {
- return new BasicSegment2(buffer.getLong(), buffer.getLong());
- };
-
- /**
- * Constructor
- *
- * @param start
- * start of the segment
- * @param end
- * end of the segment
- */
- public BasicSegment2(long start, long end) {
- super(start, end);
- }
-
- /**
- *
- */
- private static final long serialVersionUID = -3083730702354275357L;
-
-}
+++ /dev/null
-/*******************************************************************************
- * Copyright (c) 2016 École Polytechnique de Montréal
- *
- * 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.internal.provisional.segmentstore.core;
-
-import org.eclipse.tracecompass.datastore.core.interval.IHTInterval;
-import org.eclipse.tracecompass.segmentstore.core.ISegment;
-
-/**
- * This is a segment that can be saved in a history tree backend
- *
- * Note: It should be ISegment, but that would be API breaking, so this
- * interface was added so a segment can be both segment and history tree object.
- *
- * FIXME: Move that to ISegment when breaking the API
- *
- * @author Geneviève Bastien
- * @since 1.2
- */
-public interface ISegment2 extends ISegment, IHTInterval {
-
-}
+++ /dev/null
-/*******************************************************************************
- * Copyright (c) 2017 École Polytechnique de Montréal
- *
- * 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
- *******************************************************************************/
-
-@org.eclipse.jdt.annotation.NonNullByDefault
-package org.eclipse.tracecompass.internal.provisional.segmentstore.core;
import org.eclipse.jdt.annotation.Nullable;
import org.eclipse.tracecompass.common.core.NonNullUtils;
import org.eclipse.tracecompass.datastore.core.interval.IHTIntervalReader;
-import org.eclipse.tracecompass.internal.provisional.segmentstore.core.ISegment2;
import org.eclipse.tracecompass.segmentstore.core.ISegment;
import org.eclipse.tracecompass.segmentstore.core.ISegmentStore;
* @author Loic Prieur-Drevon
* @author Geneviève Bastien
* @param <E>
- * type of {@link ISegment2}
+ * type of {@link ISegment}
*/
-public class HistoryTreeSegmentStore<E extends ISegment2> implements ISegmentStore<E> {
+public class HistoryTreeSegmentStore<E extends ISegment> implements ISegmentStore<E> {
private static final int PROVIDER_VERSION = 1;
// TODO: these values were taken from the state system implementation. Maybe
import org.eclipse.tracecompass.internal.provisional.datastore.core.historytree.HTNode;
import org.eclipse.tracecompass.internal.provisional.datastore.core.historytree.IHTNode;
import org.eclipse.tracecompass.internal.provisional.datastore.core.historytree.overlapping.AbstractOverlappingHistoryTree;
-import org.eclipse.tracecompass.internal.provisional.segmentstore.core.ISegment2;
import org.eclipse.tracecompass.internal.segmentstore.core.Activator;
import org.eclipse.tracecompass.segmentstore.core.BasicSegment;
import org.eclipse.tracecompass.segmentstore.core.ISegment;
* @param <E>
* type of {@link ISegment}
*/
-public class SegmentHistoryTree<E extends ISegment2> extends AbstractOverlappingHistoryTree<E, SegmentTreeNode<E>> {
+public class SegmentHistoryTree<E extends ISegment> extends AbstractOverlappingHistoryTree<E, SegmentTreeNode<E>> {
private static final int HISTORY_MAGIC_NUMBER = 0x05FFC600;
import org.eclipse.tracecompass.internal.provisional.datastore.core.condition.TimeRangeCondition;
import org.eclipse.tracecompass.internal.provisional.datastore.core.historytree.IHTNode;
import org.eclipse.tracecompass.internal.provisional.datastore.core.historytree.overlapping.OverlappingNode;
-import org.eclipse.tracecompass.internal.provisional.segmentstore.core.BasicSegment2;
-import org.eclipse.tracecompass.internal.provisional.segmentstore.core.ISegment2;
+import org.eclipse.tracecompass.segmentstore.core.BasicSegment;
+import org.eclipse.tracecompass.segmentstore.core.ISegment;
import org.eclipse.tracecompass.segmentstore.core.SegmentComparators;
/**
* @author Loic Prieur-Drevon
* @author Geneviève Bastien
* @param <E>
- * type of {@link ISegment2}
+ * type of {@link ISegment}
*/
-public class SegmentTreeNode<E extends ISegment2> extends OverlappingNode<E> {
+public class SegmentTreeNode<E extends ISegment> extends OverlappingNode<E> {
// These values represent the values for the current node only, not its
// children
* Adds the data concerning the segment nodes, max start/min end and
* durations
*
- * @param <E> type of {@link ISegment2}
+ * @param <E> type of {@link ISegment}
*/
- protected static class OverlappingSegmentCoreData<E extends ISegment2> extends OverlappingExtraData {
+ protected static class OverlappingSegmentCoreData<E extends ISegment> extends OverlappingExtraData {
// These values cover the full subtrees of the child nodes
// Max start of an interval
* @return A segment whose value for the field that correspond to the
* comparator is the least value of the child node
*/
- public ISegment2 getIndex(int index, Comparator<E> order) {
+ public ISegment getIndex(int index, Comparator<E> order) {
if (order.equals(SegmentComparators.INTERVAL_START_COMPARATOR)) {
- return new BasicSegment2(getChildStart(index), getChildStart(index));
+ return new BasicSegment(getChildStart(index), getChildStart(index));
} else if (order.equals(SegmentComparators.INTERVAL_START_COMPARATOR.reversed())) {
- return new BasicSegment2(fChildMaxStart[index], fChildMaxStart[index]);
+ return new BasicSegment(fChildMaxStart[index], fChildMaxStart[index]);
} else if (order.equals(SegmentComparators.INTERVAL_END_COMPARATOR)) {
- return new BasicSegment2(fChildMinEnd[index], fChildMinEnd[index]);
+ return new BasicSegment(fChildMinEnd[index], fChildMinEnd[index]);
} else if (order.equals(SegmentComparators.INTERVAL_END_COMPARATOR.reversed())) {
- return new BasicSegment2(getChildEnd(index), getChildEnd(index));
+ return new BasicSegment(getChildEnd(index), getChildEnd(index));
} else if (order.equals(SegmentComparators.INTERVAL_LENGTH_COMPARATOR)) {
- return new BasicSegment2(0, fMinLength[index]);
+ return new BasicSegment(0, fMinLength[index]);
} else if (order.equals(SegmentComparators.INTERVAL_LENGTH_COMPARATOR.reversed())) {
- return new BasicSegment2(0, fMaxLength[index]);
+ return new BasicSegment(0, fMaxLength[index]);
}
// TODO: Don't know what to do with other comparators yet
- return new BasicSegment2(getChild(index), getChild(index));
+ return new BasicSegment(getChild(index), getChild(index));
}
}
* @return For each intersecting child, a Tuple with the segment with the
* least value for the comparator
*/
- public Set<Tuple<ISegment2>> selectNextChildren(TimeRangeCondition range, Comparator<E> order) {
+ public Set<Tuple<ISegment>> selectNextChildren(TimeRangeCondition range, Comparator<E> order) {
OverlappingSegmentCoreData<E> extraData = getCoreNodeData();
if (extraData != null) {
- Set<Tuple<ISegment2>> set = new HashSet<>();
+ Set<Tuple<ISegment>> set = new HashSet<>();
for (Integer index : extraData.selectNextIndices(range)) {
set.add(new Tuple<>(extraData.getIndex(index, order), extraData.getChild(index)));
}
package org.eclipse.tracecompass.segmentstore.core;
+import org.eclipse.jdt.annotation.NonNull;
+import org.eclipse.tracecompass.datastore.core.interval.IHTIntervalReader;
+import org.eclipse.tracecompass.datastore.core.serialization.ISafeByteBufferWriter;
+
/**
* Basic implementation of {@link ISegment}.
*
*/
public class BasicSegment implements ISegment {
+ /**
+ * The factory to read an object from a buffer
+ * @since 2.0
+ */
+ public static final IHTIntervalReader<BasicSegment> BASIC_SEGMENT_READ_FACTORY = buffer -> {
+ return new BasicSegment(buffer.getLong(), buffer.getLong());
+ };
+
private static final long serialVersionUID = -3257452887960883177L;
private final long fStart;
return fEnd;
}
+ /**
+ * @since 2.0
+ */
+ @Override
+ public int getSizeOnDisk() {
+ // Save the start and end time
+ return Long.BYTES * 2;
+ }
+
+ /**
+ * @since 2.0
+ */
+ @Override
+ public void writeSegment(@NonNull ISafeByteBufferWriter buffer) {
+ buffer.putLong(getStart());
+ buffer.putLong(getEnd());
+ }
+
@Override
public String toString() {
return new String('[' + String.valueOf(fStart) + ", " + String.valueOf(fEnd) + ']'); //$NON-NLS-1$
}
+
}
import java.io.Serializable;
import org.eclipse.jdt.annotation.NonNull;
+import org.eclipse.tracecompass.datastore.core.interval.IHTInterval;
+import org.eclipse.tracecompass.datastore.core.serialization.ISafeByteBufferWriter;
/**
* Generic interface for any segment (like a time range) that can be used in the
*
* @author Alexandre Montplaisir
*/
-public interface ISegment extends Serializable, Comparable<@NonNull ISegment> {
-
- /**
- * The start position/time of the segment.
- *
- * @return The start position
- */
- long getStart();
-
- /**
- * The end position/time of the segment
- *
- * @return The end position
- */
- long getEnd();
+public interface ISegment extends Serializable, Comparable<@NonNull ISegment>, IHTInterval {
@Override
default int compareTo(@NonNull ISegment arg0) {
default long getLength() {
return getEnd() - getStart();
}
+
+ /**
+ * @since 2.0
+ */
+ @Override
+ default int getSizeOnDisk() {
+ return 0;
+ }
+
+ /**
+ * @since 2.0
+ */
+ @Override
+ default void writeSegment(@NonNull ISafeByteBufferWriter buffer) {
+
+ }
+
}
import org.eclipse.jdt.annotation.NonNull;
import org.eclipse.jdt.annotation.Nullable;
import org.eclipse.tracecompass.datastore.core.interval.IHTIntervalReader;
-import org.eclipse.tracecompass.internal.provisional.segmentstore.core.ISegment2;
import org.eclipse.tracecompass.internal.segmentstore.core.arraylist.ArrayListStore;
import org.eclipse.tracecompass.internal.segmentstore.core.arraylist.LazyArrayListStore;
import org.eclipse.tracecompass.internal.segmentstore.core.segmentHistoryTree.HistoryTreeSegmentStore;
* Exceptions when creating the segment store
* @since 2.0
*/
- public static <E extends ISegment2> ISegmentStore<E> createOnDiskSegmentStore(Path segmentFile, IHTIntervalReader<E> segmentReader) throws IOException {
+ public static <E extends ISegment> ISegmentStore<E> createOnDiskSegmentStore(Path segmentFile, IHTIntervalReader<E> segmentReader) throws IOException {
return new HistoryTreeSegmentStore<>(segmentFile, segmentReader);
}
Require-Bundle: org.eclipse.core.runtime,
org.eclipse.tracecompass.common.core,
org.eclipse.tracecompass.tmf.core,
+ org.eclipse.tracecompass.datastore.core,
org.eclipse.tracecompass.segmentstore.core,
org.eclipse.tracecompass.analysis.timing.core
Export-Package: org.eclipse.tracecompass.internal.tmf.analysis.xml.core;x-friends:="org.eclipse.tracecompass.tmf.analysis.xml.core.tests",