tmf: Fix TmfSignalManager leaking listeners
[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 @NonNull 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 void dispose() {
90 super.dispose();
91 fSegmentStoreProvider.dispose();
92 }
93
94 @Override
95 public boolean setTrace(@NonNull ITmfTrace trace) throws TmfAnalysisException {
96 if (trace instanceof TmfXmlTraceStub) {
97 TmfXmlTraceStub tmfXmlTraceStub = (TmfXmlTraceStub) trace;
98 tmfXmlTraceStub.addAnalysisModule(this);
99 tmfXmlTraceStub.addAnalysisModule(fSegmentStoreProvider);
100
101 }
102 return super.setTrace(trace);
103 }
104 @Override
105 protected @Nullable String getSegmentType(@NonNull ISegment segment) {
106 return segment.getLength() % 2 == 0 ? "even" : "odd";
107 }
108
109 @Override
110 protected @Nullable ISegmentStoreProvider getSegmentProviderAnalysis(@NonNull ITmfTrace trace) {
111 return fSegmentStoreProvider;
112 }
113
114 // visibility change
115 @Override
116 public boolean executeAnalysis(@NonNull IProgressMonitor monitor) throws TmfAnalysisException {
117 return super.executeAnalysis(monitor);
118 }
119
120 // visibility change
121 @Override
122 public @NonNull Iterable<@NonNull IAnalysisModule> getDependentAnalyses() {
123 return super.getDependentAnalyses();
124 }
125 }
This page took 0.036184 seconds and 6 git commands to generate.