Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -10,25 +10,29 @@
**********************************************************************/
package org.eclipse.tracecompass.analysis.timing.core.tests.segmentstore;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;

import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.jdt.annotation.NonNull;
import org.eclipse.tracecompass.analysis.timing.core.tests.stubs.segmentstore.StubSegmentStoreProvider;
import org.eclipse.tracecompass.internal.analysis.timing.core.segmentstore.SegmentStoreDensityDataProvider;
import org.eclipse.tracecompass.internal.analysis.timing.core.segmentstore.SegmentStoreDensityDataProviderFactory;
import org.eclipse.tracecompass.internal.tmf.core.model.filters.FetchParametersUtils;
import org.eclipse.tracecompass.tmf.core.dataprovider.IDataProviderFactory;
import org.eclipse.tracecompass.tmf.core.dataprovider.DataProviderParameterUtils;
import org.eclipse.tracecompass.tmf.core.exceptions.TmfAnalysisException;
import org.eclipse.tracecompass.tmf.core.model.SeriesModel;
import org.eclipse.tracecompass.tmf.core.model.filters.TimeQueryFilter;
import org.eclipse.tracecompass.tmf.core.model.tree.TmfTreeDataModel;
import org.eclipse.tracecompass.tmf.core.model.tree.TmfTreeModel;
import org.eclipse.tracecompass.tmf.core.model.xy.ISeriesModel;
import org.eclipse.tracecompass.tmf.core.model.xy.ITmfTreeXYDataProvider;
import org.eclipse.tracecompass.tmf.core.model.xy.ITmfXyModel;
import org.eclipse.tracecompass.tmf.core.response.ITmfResponse;
import org.eclipse.tracecompass.tmf.core.response.TmfModelResponse;
import org.eclipse.tracecompass.tmf.core.trace.ITmfTrace;
import org.eclipse.tracecompass.tmf.tests.stubs.trace.xml.TmfXmlTraceStub;
Expand All @@ -49,34 +53,6 @@ public class SegmentStoreDensityDataProviderTest {

@NonNull
private static final TmfXmlTraceStub fTrace = new TmfXmlTraceStubNs();
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,
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,
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,
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,
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,
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,
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,
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,
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,
4.9E-324, 4.9E-324, 4.9E-324, 4.9E-324, 4.9E-324 };
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,
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,
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,
5, 5, 5 };
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,
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,
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,
0, 0, 0 };
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,
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,
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,
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,
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,
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,
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,
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,
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,
4.9E-324, 4.9E-324, 4.9E-324, 4.9E-324, 4.9E-324 };
private static final String ID = "org.eclipse.tracecompass.analysis.timing.core.tests.segmentstore";

/**
Expand All @@ -88,16 +64,9 @@ public class SegmentStoreDensityDataProviderTest {
@BeforeClass
public static void init() throws TmfAnalysisException {
StubSegmentStoreProvider fixture = getValidSegment(fTrace);
IDataProviderFactory fp = new SegmentStoreDensityDataProviderFactory();
assertNull(fp.createProvider(fTrace));
assertNotNull(fp.createProvider(fTrace, ID));
assertTrue(fp.getDescriptors(fTrace).isEmpty());
fDataProvider = new SegmentStoreDensityDataProvider(fTrace, fixture, ID);

StubSegmentStoreProvider fixtureNull = getValidNullSegment(fTrace);
IDataProviderFactory fpNullSegment = new SegmentStoreDensityDataProviderFactory();
assertNull(fpNullSegment.createProvider(fTrace));
assertNotNull(fpNullSegment.createProvider(fTrace, ID));
assertTrue(fpNullSegment.getDescriptors(fTrace).isEmpty());
fDataProviderNullSegments = new SegmentStoreDensityDataProvider(fTrace, fixtureNull, ID);
}

Expand Down Expand Up @@ -126,50 +95,119 @@ public static void clean() {
}

/**
* Tests data model returned by the fetch XY
* Tests successful TmfXyResponseFactory.create() call
*/
@Test()
public void testDataProviderFetchXY() {
TimeQueryFilter timeQueryFilter = new TimeQueryFilter(0, 100, 100);
TmfModelResponse<@NonNull ITmfXyModel> response = fDataProvider.fetchXY(FetchParametersUtils.timeQueryToMap(timeQueryFilter), null);
@Test
public void testSuccessfulFetchXY() {
TmfModelResponse<@NonNull TmfTreeModel<@NonNull TmfTreeDataModel>> treeResponse = fDataProvider.fetchTree(FetchParametersUtils.timeQueryToMap(new TimeQueryFilter(0, 100, 100)), null);
assertNotNull(treeResponse);
TmfTreeModel<@NonNull TmfTreeDataModel> treeModel = treeResponse.getModel();
assertNotNull(treeModel);

List<Long> itemIds = treeModel.getEntries().stream().map(TmfTreeDataModel::getId).collect(Collectors.toList());

Map<String, Object> fetchParameters = new HashMap<>();
fetchParameters.put(DataProviderParameterUtils.REQUESTED_TIMERANGE_KEY, Arrays.asList(1000L, 5000L, 100L));
fetchParameters.put(DataProviderParameterUtils.REQUESTED_ITEMS_KEY, itemIds);

TmfModelResponse<@NonNull ITmfXyModel> response = fDataProvider.fetchXY(fetchParameters, null);
assertNotNull(response);
assertEquals(ITmfResponse.Status.COMPLETED, response.getStatus());

ITmfXyModel responseModel = response.getModel();
assertNotNull(responseModel);
SeriesModel seriesResponse = (SeriesModel) responseModel.getSeriesData().toArray()[0];
assertTrue(Arrays.equals(yValues, seriesResponse.getData()));
assertTrue(Arrays.equals(xValues, seriesResponse.getXAxis()));
assertNotNull(responseModel.getSeriesData());

if (!responseModel.getSeriesData().isEmpty()) {
ISeriesModel seriesModel = responseModel.getSeriesData().iterator().next();
assertNotNull(seriesModel);
assertNotNull(seriesModel.getData());
assertEquals(100, seriesModel.getData().length);
assertEquals(ISeriesModel.DisplayType.BAR, seriesModel.getDisplayType());
}
}

/**
* Tests data model returned by the fetch XY
* Tests TmfXyResponseFactory.createFailedResponse() for null filter
*/
@Test()
public void testDataProviderNullFetchXY() {
TimeQueryFilter timeQueryFilter = new TimeQueryFilter(0, 100, 100);
TmfModelResponse<@NonNull ITmfXyModel> response = fDataProviderNullSegments.fetchXY(FetchParametersUtils.timeQueryToMap(timeQueryFilter), null);
@Test
public void testFailedResponseNullFilter() {
Map<String, Object> emptyParameters = new HashMap<>();

TmfModelResponse<@NonNull ITmfXyModel> response = fDataProvider.fetchXY(emptyParameters, null);
assertNotNull(response);
assertEquals(ITmfResponse.Status.FAILED, response.getStatus());
}

/**
* Tests TmfXyResponseFactory.createCancelledResponse() for cancelled monitor
*/
@Test
public void testCancelledResponseMonitor() {
TmfModelResponse<@NonNull TmfTreeModel<@NonNull TmfTreeDataModel>> treeResponse = fDataProvider.fetchTree(FetchParametersUtils.timeQueryToMap(new TimeQueryFilter(0, 100, 100)), null);
assertNotNull(treeResponse);
TmfTreeModel<@NonNull TmfTreeDataModel> treeModel = treeResponse.getModel();
assertNotNull(treeModel);

List<Long> itemIds = treeModel.getEntries().stream().map(TmfTreeDataModel::getId).collect(Collectors.toList());

Map<String, Object> fetchParameters = new HashMap<>();
fetchParameters.put(DataProviderParameterUtils.REQUESTED_TIMERANGE_KEY, Arrays.asList(1000L, 5000L, 100L));
fetchParameters.put(DataProviderParameterUtils.REQUESTED_ITEMS_KEY, itemIds);

NullProgressMonitor cancelledMonitor = new NullProgressMonitor();
cancelledMonitor.setCanceled(true);

TmfModelResponse<@NonNull ITmfXyModel> response = fDataProvider.fetchXY(fetchParameters, cancelledMonitor);
assertNotNull(response);
assertEquals(ITmfResponse.Status.CANCELLED, response.getStatus());
}

/**
* Tests null segments provider
*/
@Test
public void testNullSegmentsProvider() {
TmfModelResponse<@NonNull TmfTreeModel<@NonNull TmfTreeDataModel>> treeResponse = fDataProviderNullSegments.fetchTree(FetchParametersUtils.timeQueryToMap(new TimeQueryFilter(0, 100, 100)), null);
assertNotNull(treeResponse);
TmfTreeModel<@NonNull TmfTreeDataModel> treeModel = treeResponse.getModel();
assertNotNull(treeModel);

List<Long> itemIds = treeModel.getEntries().stream().map(TmfTreeDataModel::getId).collect(Collectors.toList());

Map<String, Object> parameters = new HashMap<>();
parameters.put(DataProviderParameterUtils.REQUESTED_TIMERANGE_KEY, Arrays.asList(1000L, 5000L, 100L));
parameters.put(DataProviderParameterUtils.REQUESTED_ITEMS_KEY, itemIds);

TmfModelResponse<@NonNull ITmfXyModel> response = fDataProviderNullSegments.fetchXY(parameters, null);
assertNotNull(response);

ITmfXyModel responseModel = response.getModel();
assertNotNull(responseModel);
SeriesModel seriesResponse = (SeriesModel) responseModel.getSeriesData().toArray()[0];
assertTrue(Arrays.equals(yValuesNull, seriesResponse.getData()));
assertTrue(Arrays.equals(xValuesNull, seriesResponse.getXAxis()));
if (responseModel != null && !responseModel.getSeriesData().isEmpty()) {
ISeriesModel seriesModel = responseModel.getSeriesData().iterator().next();
assertNotNull(seriesModel);
assertNotNull(seriesModel.getData());
assertEquals(100, seriesModel.getData().length);
}
}

/**
* Tests fetch tree of the data provider
* Tests fetch tree
*/
@Test()
@Test
public void testFetchTree() {
TimeQueryFilter timeQueryFilter = new TimeQueryFilter(0, 100, 100);
TmfModelResponse<@NonNull TmfTreeModel<@NonNull TmfTreeDataModel>> response = fDataProvider.fetchTree(FetchParametersUtils.timeQueryToMap(timeQueryFilter), null);
assertNotNull(response);
assertEquals(ITmfResponse.Status.COMPLETED, response.getStatus());
}

/**
* Tests provider ID
*/
@Test
public void testID() {
assertTrue(fDataProvider.getId().equals(ID));
String expectedId = SegmentStoreDensityDataProvider.ID + ":" + ID;
assertEquals(expectedId, fDataProvider.getId());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -152,6 +152,11 @@ public class Messages extends NLS {
*/
public static @Nullable String SegmentStoreDensityDataProvider_title;

/**
* Segment store density description
*/
public static @Nullable String SegmentStoreDensityDataProvider_description;

/**
* Segment store density total
*/
Expand Down
Loading
Loading