1010 **********************************************************************/
1111package org .eclipse .tracecompass .analysis .timing .core .tests .segmentstore ;
1212
13+ import static org .junit .Assert .assertEquals ;
1314import static org .junit .Assert .assertNotNull ;
14- import static org .junit .Assert .assertNull ;
15- import static org .junit .Assert .assertTrue ;
1615
1716import 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 ;
1923import org .eclipse .jdt .annotation .NonNull ;
2024import org .eclipse .tracecompass .analysis .timing .core .tests .stubs .segmentstore .StubSegmentStoreProvider ;
2125import org .eclipse .tracecompass .internal .analysis .timing .core .segmentstore .SegmentStoreDensityDataProvider ;
22- import org .eclipse .tracecompass .internal .analysis .timing .core .segmentstore .SegmentStoreDensityDataProviderFactory ;
2326import 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 ;
2528import org .eclipse .tracecompass .tmf .core .exceptions .TmfAnalysisException ;
26- import org .eclipse .tracecompass .tmf .core .model .SeriesModel ;
2729import org .eclipse .tracecompass .tmf .core .model .filters .TimeQueryFilter ;
2830import org .eclipse .tracecompass .tmf .core .model .tree .TmfTreeDataModel ;
2931import org .eclipse .tracecompass .tmf .core .model .tree .TmfTreeModel ;
32+ import org .eclipse .tracecompass .tmf .core .model .xy .ISeriesModel ;
3033import org .eclipse .tracecompass .tmf .core .model .xy .ITmfTreeXYDataProvider ;
3134import org .eclipse .tracecompass .tmf .core .model .xy .ITmfXyModel ;
35+ import org .eclipse .tracecompass .tmf .core .response .ITmfResponse ;
3236import org .eclipse .tracecompass .tmf .core .response .TmfModelResponse ;
3337import org .eclipse .tracecompass .tmf .core .trace .ITmfTrace ;
3438import 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}
0 commit comments