Skip to content

Commit b40d78c

Browse files
committed
Add segment store data density provider
Update fetchTree and fetchXY Add tests Signed-off-by: Yassine Ibhir <[email protected]>
1 parent eb48c52 commit b40d78c

File tree

6 files changed

+458
-114
lines changed

6 files changed

+458
-114
lines changed

analysis/org.eclipse.tracecompass.analysis.timing.core.tests/src/org/eclipse/tracecompass/analysis/timing/core/tests/segmentstore/SegmentStoreDensityDataProviderTest.java

Lines changed: 47 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -11,24 +11,26 @@
1111
package org.eclipse.tracecompass.analysis.timing.core.tests.segmentstore;
1212

1313
import static org.junit.Assert.assertNotNull;
14-
import static org.junit.Assert.assertNull;
14+
1515
import static org.junit.Assert.assertTrue;
1616

1717
import java.util.Arrays;
18+
import java.util.Collections;
19+
import java.util.HashMap;
20+
import java.util.List;
21+
import java.util.Map;
1822

1923
import org.eclipse.jdt.annotation.NonNull;
2024
import org.eclipse.tracecompass.analysis.timing.core.tests.stubs.segmentstore.StubSegmentStoreProvider;
2125
import org.eclipse.tracecompass.internal.analysis.timing.core.segmentstore.SegmentStoreDensityDataProvider;
22-
import org.eclipse.tracecompass.internal.analysis.timing.core.segmentstore.SegmentStoreDensityDataProviderFactory;
2326
import org.eclipse.tracecompass.internal.tmf.core.model.filters.FetchParametersUtils;
24-
import org.eclipse.tracecompass.tmf.core.dataprovider.IDataProviderFactory;
2527
import org.eclipse.tracecompass.tmf.core.exceptions.TmfAnalysisException;
26-
import org.eclipse.tracecompass.tmf.core.model.SeriesModel;
2728
import org.eclipse.tracecompass.tmf.core.model.filters.TimeQueryFilter;
2829
import org.eclipse.tracecompass.tmf.core.model.tree.TmfTreeDataModel;
2930
import org.eclipse.tracecompass.tmf.core.model.tree.TmfTreeModel;
3031
import org.eclipse.tracecompass.tmf.core.model.xy.ITmfTreeXYDataProvider;
3132
import org.eclipse.tracecompass.tmf.core.model.xy.ITmfXyModel;
33+
import org.eclipse.tracecompass.tmf.core.model.xy.IYModel;
3234
import org.eclipse.tracecompass.tmf.core.response.TmfModelResponse;
3335
import org.eclipse.tracecompass.tmf.core.trace.ITmfTrace;
3436
import org.eclipse.tracecompass.tmf.tests.stubs.trace.xml.TmfXmlTraceStub;
@@ -59,14 +61,6 @@ public class SegmentStoreDensityDataProviderTest {
5961
4.9E-324, 4.9E-324, 4.9E-324, 4.9E-324, 4.9E-324, 4.9E-324, 4.9E-324, 4.9E-324, 4.9E-324, 4.9E-324, 4.9E-324,
6062
4.9E-324, 15.0, 4.9E-324, 4.9E-324, 4.9E-324, 4.9E-324, 4.9E-324, 4.9E-324, 4.9E-324, 4.9E-324, 4.9E-324,
6163
4.9E-324, 4.9E-324, 4.9E-324, 4.9E-324, 4.9E-324 };
62-
private static final long[] xValues = new long[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1,
63-
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
64-
3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
65-
5, 5, 5 };
66-
private static final long[] xValuesNull = new long[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
67-
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
68-
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
69-
0, 0, 0 };
7064
private static final double[] yValuesNull = new double[] { 4.9E-324, 4.9E-324, 4.9E-324, 4.9E-324, 4.9E-324, 4.9E-324, 4.9E-324,
7165
4.9E-324, 4.9E-324, 4.9E-324, 4.9E-324, 4.9E-324, 4.9E-324, 4.9E-324, 4.9E-324, 4.9E-324, 4.9E-324, 4.9E-324,
7266
4.9E-324, 4.9E-324, 4.9E-324, 4.9E-324, 4.9E-324, 4.9E-324, 4.9E-324, 4.9E-324, 4.9E-324, 4.9E-324, 4.9E-324,
@@ -88,16 +82,9 @@ public class SegmentStoreDensityDataProviderTest {
8882
@BeforeClass
8983
public static void init() throws TmfAnalysisException {
9084
StubSegmentStoreProvider fixture = getValidSegment(fTrace);
91-
IDataProviderFactory fp = new SegmentStoreDensityDataProviderFactory();
92-
assertNull(fp.createProvider(fTrace));
93-
assertNotNull(fp.createProvider(fTrace, ID));
94-
assertTrue(fp.getDescriptors(fTrace).isEmpty());
9585
fDataProvider = new SegmentStoreDensityDataProvider(fTrace, fixture, ID);
86+
9687
StubSegmentStoreProvider fixtureNull = getValidNullSegment(fTrace);
97-
IDataProviderFactory fpNullSegment = new SegmentStoreDensityDataProviderFactory();
98-
assertNull(fpNullSegment.createProvider(fTrace));
99-
assertNotNull(fpNullSegment.createProvider(fTrace, ID));
100-
assertTrue(fpNullSegment.getDescriptors(fTrace).isEmpty());
10188
fDataProviderNullSegments = new SegmentStoreDensityDataProvider(fTrace, fixtureNull, ID);
10289
}
10390

@@ -130,29 +117,55 @@ public static void clean() {
130117
*/
131118
@Test()
132119
public void testDataProviderFetchXY() {
133-
TimeQueryFilter timeQueryFilter = new TimeQueryFilter(0, 100, 100);
134-
TmfModelResponse<@NonNull ITmfXyModel> response = fDataProvider.fetchXY(FetchParametersUtils.timeQueryToMap(timeQueryFilter), null);
120+
// Get tree first to find available entries
121+
TmfModelResponse<@NonNull TmfTreeModel<@NonNull TmfTreeDataModel>> treeResponse =
122+
fDataProvider.fetchTree(FetchParametersUtils.timeQueryToMap(new TimeQueryFilter(0, 100, 100)), null);
123+
assertNotNull(treeResponse);
124+
TmfTreeModel<@NonNull TmfTreeDataModel> treeModel = treeResponse.getModel();
125+
assertNotNull(treeModel);
126+
List<@NonNull TmfTreeDataModel> entries = treeModel.getEntries();
127+
128+
// Create parameters with selected items
129+
Map<String, Object> parameters = new HashMap<>();
130+
parameters.put("start", 0L);
131+
parameters.put("end", 100L);
132+
parameters.put("nb_points", 100);
133+
if (!entries.isEmpty()) {
134+
parameters.put("requested_items", Collections.singletonList(entries.get(0).getId()));
135+
} else {
136+
parameters.put("requested_items", Collections.emptyList());
137+
}
138+
139+
TmfModelResponse<@NonNull ITmfXyModel> response = fDataProvider.fetchXY(parameters, null);
135140
assertNotNull(response);
136141
ITmfXyModel responseModel = response.getModel();
137142
assertNotNull(responseModel);
138-
SeriesModel seriesResponse = (SeriesModel) responseModel.getSeriesData().toArray()[0];
139-
assertTrue(Arrays.equals(yValues, seriesResponse.getData()));
140-
assertTrue(Arrays.equals(xValues, seriesResponse.getXAxis()));
143+
144+
if (!responseModel.getSeriesData().isEmpty()) {
145+
IYModel yModel = (IYModel) responseModel.getSeriesData().iterator().next();
146+
assertTrue(Arrays.equals(yValues, yModel.getData()));
147+
}
141148
}
142149

143150
/**
144-
* Tests data model returned by the fetch XY
151+
* Tests data model returned by the fetch XY with null segments
145152
*/
146153
@Test()
147154
public void testDataProviderNullFetchXY() {
148-
TimeQueryFilter timeQueryFilter = new TimeQueryFilter(0, 100, 100);
149-
TmfModelResponse<@NonNull ITmfXyModel> response = fDataProviderNullSegments.fetchXY(FetchParametersUtils.timeQueryToMap(timeQueryFilter), null);
155+
Map<String, Object> parameters = new HashMap<>();
156+
parameters.put("start", 0L);
157+
parameters.put("end", 100L);
158+
parameters.put("nb_points", 100);
159+
parameters.put("requested_items", Collections.emptyList());
160+
161+
TmfModelResponse<@NonNull ITmfXyModel> response = fDataProviderNullSegments.fetchXY(parameters, null);
150162
assertNotNull(response);
151163
ITmfXyModel responseModel = response.getModel();
152-
assertNotNull(responseModel);
153-
SeriesModel seriesResponse = (SeriesModel) responseModel.getSeriesData().toArray()[0];
154-
assertTrue(Arrays.equals(yValuesNull, seriesResponse.getData()));
155-
assertTrue(Arrays.equals(xValuesNull, seriesResponse.getXAxis()));
164+
165+
if (responseModel != null && !responseModel.getSeriesData().isEmpty()) {
166+
IYModel yModel = (IYModel) responseModel.getSeriesData().iterator().next();
167+
assertTrue(Arrays.equals(yValuesNull, yModel.getData()));
168+
}
156169
}
157170

158171
/**
@@ -170,6 +183,7 @@ public void testFetchTree() {
170183
*/
171184
@Test
172185
public void testID() {
173-
assertTrue(fDataProvider.getId().equals(ID));
186+
String expectedId = SegmentStoreDensityDataProvider.ID + ":" + ID;
187+
assertTrue(fDataProvider.getId().equals(expectedId));
174188
}
175189
}

analysis/org.eclipse.tracecompass.analysis.timing.core/src/org/eclipse/tracecompass/internal/analysis/timing/core/segmentstore/Messages.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -152,6 +152,11 @@ public class Messages extends NLS {
152152
*/
153153
public static @Nullable String SegmentStoreDensityDataProvider_title;
154154

155+
/**
156+
* Segment store density description
157+
*/
158+
public static @Nullable String SegmentStoreDensityDataProvider_description;
159+
155160
/**
156161
* Segment store density total
157162
*/

0 commit comments

Comments
 (0)