Skip to content

Commit cac9137

Browse files
theibhirbhufmann
authored andcommitted
Add segment store data density provider
Update fetchTree and fetchXY Add getXAxisAndYSeriesModels Response data is similar to the genericXY unit tests generated by Q Signed-off-by: Yassine Ibhir <[email protected]>
1 parent 220394c commit cac9137

File tree

6 files changed

+513
-142
lines changed

6 files changed

+513
-142
lines changed

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

Lines changed: 99 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -10,25 +10,29 @@
1010
**********************************************************************/
1111
package org.eclipse.tracecompass.analysis.timing.core.tests.segmentstore;
1212

13+
import static org.junit.Assert.assertEquals;
1314
import static org.junit.Assert.assertNotNull;
14-
import static org.junit.Assert.assertNull;
15-
import static org.junit.Assert.assertTrue;
1615

1716
import java.util.Arrays;
17+
import java.util.HashMap;
18+
import java.util.List;
19+
import java.util.Map;
20+
import java.util.stream.Collectors;
1821

22+
import org.eclipse.core.runtime.NullProgressMonitor;
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;
27+
import org.eclipse.tracecompass.tmf.core.dataprovider.DataProviderParameterUtils;
2528
import org.eclipse.tracecompass.tmf.core.exceptions.TmfAnalysisException;
26-
import org.eclipse.tracecompass.tmf.core.model.SeriesModel;
2729
import org.eclipse.tracecompass.tmf.core.model.filters.TimeQueryFilter;
2830
import org.eclipse.tracecompass.tmf.core.model.tree.TmfTreeDataModel;
2931
import org.eclipse.tracecompass.tmf.core.model.tree.TmfTreeModel;
32+
import org.eclipse.tracecompass.tmf.core.model.xy.ISeriesModel;
3033
import org.eclipse.tracecompass.tmf.core.model.xy.ITmfTreeXYDataProvider;
3134
import org.eclipse.tracecompass.tmf.core.model.xy.ITmfXyModel;
35+
import org.eclipse.tracecompass.tmf.core.response.ITmfResponse;
3236
import org.eclipse.tracecompass.tmf.core.response.TmfModelResponse;
3337
import org.eclipse.tracecompass.tmf.core.trace.ITmfTrace;
3438
import org.eclipse.tracecompass.tmf.tests.stubs.trace.xml.TmfXmlTraceStub;
@@ -49,34 +53,6 @@ public class SegmentStoreDensityDataProviderTest {
4953

5054
@NonNull
5155
private static final TmfXmlTraceStub fTrace = new TmfXmlTraceStubNs();
52-
private static final double[] yValues = new double[] { 15.0, 4.9E-324, 4.9E-324, 4.9E-324, 4.9E-324, 4.9E-324, 4.9E-324,
53-
4.9E-324, 4.9E-324, 4.9E-324, 4.9E-324, 4.9E-324, 4.9E-324, 4.9E-324, 15.0, 4.9E-324, 4.9E-324, 4.9E-324,
54-
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, 15.0,
55-
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,
56-
4.9E-324, 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,
57-
4.9E-324, 4.9E-324, 4.9E-324, 4.9E-324, 4.9E-324, 4.9E-324, 15.0, 4.9E-324, 4.9E-324, 4.9E-324, 4.9E-324,
58-
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, 15.0, 4.9E-324,
59-
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,
60-
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,
61-
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 };
70-
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,
71-
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,
72-
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,
73-
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,
74-
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,
75-
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,
76-
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,
77-
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,
78-
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,
79-
4.9E-324, 4.9E-324, 4.9E-324, 4.9E-324, 4.9E-324 };
8056
private static final String ID = "org.eclipse.tracecompass.analysis.timing.core.tests.segmentstore";
8157

8258
/**
@@ -88,16 +64,9 @@ public class SegmentStoreDensityDataProviderTest {
8864
@BeforeClass
8965
public static void init() throws TmfAnalysisException {
9066
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());
9567
fDataProvider = new SegmentStoreDensityDataProvider(fTrace, fixture, ID);
68+
9669
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());
10170
fDataProviderNullSegments = new SegmentStoreDensityDataProvider(fTrace, fixtureNull, ID);
10271
}
10372

@@ -126,50 +95,119 @@ public static void clean() {
12695
}
12796

12897
/**
129-
* Tests data model returned by the fetch XY
98+
* Tests successful TmfXyResponseFactory.create() call
13099
*/
131-
@Test()
132-
public void testDataProviderFetchXY() {
133-
TimeQueryFilter timeQueryFilter = new TimeQueryFilter(0, 100, 100);
134-
TmfModelResponse<@NonNull ITmfXyModel> response = fDataProvider.fetchXY(FetchParametersUtils.timeQueryToMap(timeQueryFilter), null);
100+
@Test
101+
public void testSuccessfulFetchXY() {
102+
TmfModelResponse<@NonNull TmfTreeModel<@NonNull TmfTreeDataModel>> treeResponse = fDataProvider.fetchTree(FetchParametersUtils.timeQueryToMap(new TimeQueryFilter(0, 100, 100)), null);
103+
assertNotNull(treeResponse);
104+
TmfTreeModel<@NonNull TmfTreeDataModel> treeModel = treeResponse.getModel();
105+
assertNotNull(treeModel);
106+
107+
List<Long> itemIds = treeModel.getEntries().stream().map(TmfTreeDataModel::getId).collect(Collectors.toList());
108+
109+
Map<String, Object> fetchParameters = new HashMap<>();
110+
fetchParameters.put(DataProviderParameterUtils.REQUESTED_TIMERANGE_KEY, Arrays.asList(1000L, 5000L, 100L));
111+
fetchParameters.put(DataProviderParameterUtils.REQUESTED_ITEMS_KEY, itemIds);
112+
113+
TmfModelResponse<@NonNull ITmfXyModel> response = fDataProvider.fetchXY(fetchParameters, null);
135114
assertNotNull(response);
115+
assertEquals(ITmfResponse.Status.COMPLETED, response.getStatus());
116+
136117
ITmfXyModel responseModel = response.getModel();
137118
assertNotNull(responseModel);
138-
SeriesModel seriesResponse = (SeriesModel) responseModel.getSeriesData().toArray()[0];
139-
assertTrue(Arrays.equals(yValues, seriesResponse.getData()));
140-
assertTrue(Arrays.equals(xValues, seriesResponse.getXAxis()));
119+
assertNotNull(responseModel.getSeriesData());
120+
121+
if (!responseModel.getSeriesData().isEmpty()) {
122+
ISeriesModel seriesModel = responseModel.getSeriesData().iterator().next();
123+
assertNotNull(seriesModel);
124+
assertNotNull(seriesModel.getData());
125+
assertEquals(100, seriesModel.getData().length);
126+
assertEquals(ISeriesModel.DisplayType.BAR, seriesModel.getDisplayType());
127+
}
141128
}
142129

143130
/**
144-
* Tests data model returned by the fetch XY
131+
* Tests TmfXyResponseFactory.createFailedResponse() for null filter
145132
*/
146-
@Test()
147-
public void testDataProviderNullFetchXY() {
148-
TimeQueryFilter timeQueryFilter = new TimeQueryFilter(0, 100, 100);
149-
TmfModelResponse<@NonNull ITmfXyModel> response = fDataProviderNullSegments.fetchXY(FetchParametersUtils.timeQueryToMap(timeQueryFilter), null);
133+
@Test
134+
public void testFailedResponseNullFilter() {
135+
Map<String, Object> emptyParameters = new HashMap<>();
136+
137+
TmfModelResponse<@NonNull ITmfXyModel> response = fDataProvider.fetchXY(emptyParameters, null);
150138
assertNotNull(response);
139+
assertEquals(ITmfResponse.Status.FAILED, response.getStatus());
140+
}
141+
142+
/**
143+
* Tests TmfXyResponseFactory.createCancelledResponse() for cancelled monitor
144+
*/
145+
@Test
146+
public void testCancelledResponseMonitor() {
147+
TmfModelResponse<@NonNull TmfTreeModel<@NonNull TmfTreeDataModel>> treeResponse = fDataProvider.fetchTree(FetchParametersUtils.timeQueryToMap(new TimeQueryFilter(0, 100, 100)), null);
148+
assertNotNull(treeResponse);
149+
TmfTreeModel<@NonNull TmfTreeDataModel> treeModel = treeResponse.getModel();
150+
assertNotNull(treeModel);
151+
152+
List<Long> itemIds = treeModel.getEntries().stream().map(TmfTreeDataModel::getId).collect(Collectors.toList());
153+
154+
Map<String, Object> fetchParameters = new HashMap<>();
155+
fetchParameters.put(DataProviderParameterUtils.REQUESTED_TIMERANGE_KEY, Arrays.asList(1000L, 5000L, 100L));
156+
fetchParameters.put(DataProviderParameterUtils.REQUESTED_ITEMS_KEY, itemIds);
157+
158+
NullProgressMonitor cancelledMonitor = new NullProgressMonitor();
159+
cancelledMonitor.setCanceled(true);
160+
161+
TmfModelResponse<@NonNull ITmfXyModel> response = fDataProvider.fetchXY(fetchParameters, cancelledMonitor);
162+
assertNotNull(response);
163+
assertEquals(ITmfResponse.Status.CANCELLED, response.getStatus());
164+
}
165+
166+
/**
167+
* Tests null segments provider
168+
*/
169+
@Test
170+
public void testNullSegmentsProvider() {
171+
TmfModelResponse<@NonNull TmfTreeModel<@NonNull TmfTreeDataModel>> treeResponse = fDataProviderNullSegments.fetchTree(FetchParametersUtils.timeQueryToMap(new TimeQueryFilter(0, 100, 100)), null);
172+
assertNotNull(treeResponse);
173+
TmfTreeModel<@NonNull TmfTreeDataModel> treeModel = treeResponse.getModel();
174+
assertNotNull(treeModel);
175+
176+
List<Long> itemIds = treeModel.getEntries().stream().map(TmfTreeDataModel::getId).collect(Collectors.toList());
177+
178+
Map<String, Object> parameters = new HashMap<>();
179+
parameters.put(DataProviderParameterUtils.REQUESTED_TIMERANGE_KEY, Arrays.asList(1000L, 5000L, 100L));
180+
parameters.put(DataProviderParameterUtils.REQUESTED_ITEMS_KEY, itemIds);
181+
182+
TmfModelResponse<@NonNull ITmfXyModel> response = fDataProviderNullSegments.fetchXY(parameters, null);
183+
assertNotNull(response);
184+
151185
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()));
186+
if (responseModel != null && !responseModel.getSeriesData().isEmpty()) {
187+
ISeriesModel seriesModel = responseModel.getSeriesData().iterator().next();
188+
assertNotNull(seriesModel);
189+
assertNotNull(seriesModel.getData());
190+
assertEquals(100, seriesModel.getData().length);
191+
}
156192
}
157193

158194
/**
159-
* Tests fetch tree of the data provider
195+
* Tests fetch tree
160196
*/
161-
@Test()
197+
@Test
162198
public void testFetchTree() {
163199
TimeQueryFilter timeQueryFilter = new TimeQueryFilter(0, 100, 100);
164200
TmfModelResponse<@NonNull TmfTreeModel<@NonNull TmfTreeDataModel>> response = fDataProvider.fetchTree(FetchParametersUtils.timeQueryToMap(timeQueryFilter), null);
165201
assertNotNull(response);
202+
assertEquals(ITmfResponse.Status.COMPLETED, response.getStatus());
166203
}
167204

168205
/**
169206
* Tests provider ID
170207
*/
171208
@Test
172209
public void testID() {
173-
assertTrue(fDataProvider.getId().equals(ID));
210+
String expectedId = SegmentStoreDensityDataProvider.ID + ":" + ID;
211+
assertEquals(expectedId, fDataProvider.getId());
174212
}
175213
}

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)