timing.core: Add local statistics to the latency statistics
[deliverable/tracecompass.git] / analysis / org.eclipse.tracecompass.analysis.timing.core.tests / src / org / eclipse / tracecompass / analysis / timing / core / tests / segmentstore / statistics / StubSegmentStatisticsAnalysis.java
1 /*******************************************************************************
2 * Copyright (c) 2016 Ericsson
3 *
4 * All rights reserved. This program and the accompanying materials are
5 * made available under the terms of the Eclipse Public License v1.0 which
6 * accompanies this distribution, and is available at
7 * http://www.eclipse.org/legal/epl-v10.html
8 *******************************************************************************/
9
10 package org.eclipse.tracecompass.analysis.timing.core.tests.segmentstore.statistics;
11
12 import java.util.Collections;
13 import java.util.List;
14
15 import org.eclipse.core.runtime.IProgressMonitor;
16 import org.eclipse.jdt.annotation.NonNull;
17 import org.eclipse.jdt.annotation.Nullable;
18 import org.eclipse.tracecompass.analysis.timing.core.segmentstore.IAnalysisProgressListener;
19 import org.eclipse.tracecompass.analysis.timing.core.segmentstore.ISegmentStoreProvider;
20 import org.eclipse.tracecompass.analysis.timing.core.segmentstore.statistics.AbstractSegmentStatisticsAnalysis;
21 import org.eclipse.tracecompass.segmentstore.core.BasicSegment;
22 import org.eclipse.tracecompass.segmentstore.core.ISegment;
23 import org.eclipse.tracecompass.segmentstore.core.ISegmentStore;
24 import org.eclipse.tracecompass.segmentstore.core.SegmentStoreFactory;
25 import org.eclipse.tracecompass.tmf.core.analysis.IAnalysisModule;
26 import org.eclipse.tracecompass.tmf.core.exceptions.TmfAnalysisException;
27 import org.eclipse.tracecompass.tmf.core.segment.ISegmentAspect;
28 import org.eclipse.tracecompass.tmf.core.trace.ITmfTrace;
29 import org.eclipse.tracecompass.tmf.tests.stubs.analysis.TestAnalysis;
30 import org.eclipse.tracecompass.tmf.tests.stubs.trace.xml.TmfXmlTraceStub;
31
32 import com.google.common.collect.ImmutableList;
33 import com.google.common.collect.ImmutableList.Builder;
34
35 /**
36 * Test stuf for statistics analysis
37 *
38 * @author Matthew Khouzam
39 *
40 */
41 class StubSegmentStatisticsAnalysis extends AbstractSegmentStatisticsAnalysis {
42
43 private final class StubProvider extends TestAnalysis implements ISegmentStoreProvider {
44 private final ISegmentStore<@NonNull ISegment> ifFixture;
45
46 public StubProvider(ISegmentStore<@NonNull ISegment> fixture) {
47 ifFixture = fixture;
48 }
49
50 @Override
51 public void removeListener(@NonNull IAnalysisProgressListener listener) {
52 // nothing
53 }
54
55 @Override
56 public @Nullable ISegmentStore<@NonNull ISegment> getSegmentStore() {
57 return ifFixture;
58 }
59
60 @Override
61 public @NonNull Iterable<@NonNull ISegmentAspect> getSegmentAspects() {
62 return Collections.emptyList();
63 }
64
65 @Override
66 public void addListener(@NonNull IAnalysisProgressListener listener) {
67 // nothing
68 }
69 }
70
71 public static final int SIZE = 65535;
72
73 private final List<@NonNull ISegment> fPreFixture;
74 private final ISegmentStore<@NonNull ISegment> fFixture = SegmentStoreFactory.createSegmentStore();
75 private StubProvider fSegmentStoreProvider;
76
77 public StubSegmentStatisticsAnalysis() {
78 ImmutableList.Builder<@NonNull ISegment> builder = new Builder<>();
79 for (int i = 0; i < SIZE; i++) {
80 ISegment seg = new BasicSegment(i, i + i);
81 builder.add(seg);
82 }
83 fPreFixture = builder.build();
84 fFixture.addAll(fPreFixture);
85 fSegmentStoreProvider = new StubProvider(fFixture);
86 }
87
88 @Override
89 public boolean setTrace(@NonNull ITmfTrace trace) throws TmfAnalysisException {
90 if (trace instanceof TmfXmlTraceStub) {
91 TmfXmlTraceStub tmfXmlTraceStub = (TmfXmlTraceStub) trace;
92 tmfXmlTraceStub.addAnalysisModule(this);
93 tmfXmlTraceStub.addAnalysisModule(fSegmentStoreProvider);
94
95 }
96 return super.setTrace(trace);
97 }
98 @Override
99 protected @Nullable String getSegmentType(@NonNull ISegment segment) {
100 return segment.getLength() % 2 == 0 ? "even" : "odd";
101 }
102
103 @Override
104 protected @Nullable ISegmentStoreProvider getSegmentProviderAnalysis(@NonNull ITmfTrace trace) {
105 return fSegmentStoreProvider;
106 }
107
108 // visibility change
109 @Override
110 public boolean executeAnalysis(@NonNull IProgressMonitor monitor) throws TmfAnalysisException {
111 return super.executeAnalysis(monitor);
112 }
113
114 // visibility change
115 @Override
116 public @NonNull Iterable<@NonNull IAnalysisModule> getDependentAnalyses() {
117 return super.getDependentAnalyses();
118 }
119 }
This page took 0.033271 seconds and 5 git commands to generate.