Skip to content

Commit 1701206

Browse files
committed
InAndOut: remove sub dp instances when deleting InAndOut configuration
For example, statistics, call stack analysis are removed fixes #178 Signed-off-by: Bernd Hufmann <bernd.hufmann@ericsson.com>
1 parent e3a293e commit 1701206

3 files changed

Lines changed: 64 additions & 2 deletions

File tree

analyses/org.eclipse.tracecompass.incubator.inandout.core.tests/.settings/org.eclipse.jdt.core.prefs

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
eclipse.preferences.version=1
2+
org.eclipse.jdt.core.builder.annotationPath.allLocations=disabled
23
org.eclipse.jdt.core.codeComplete.argumentPrefixes=
34
org.eclipse.jdt.core.codeComplete.argumentSuffixes=
45
org.eclipse.jdt.core.codeComplete.fieldPrefixes=f
@@ -12,9 +13,15 @@ org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes=
1213
org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=enabled
1314
org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
1415
org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
16+
org.eclipse.jdt.core.compiler.annotation.nonnull.secondary=
1517
org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
18+
org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary=
19+
org.eclipse.jdt.core.compiler.annotation.notowning=org.eclipse.jdt.annotation.NotOwning
1620
org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
21+
org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
1722
org.eclipse.jdt.core.compiler.annotation.nullanalysis=enabled
23+
org.eclipse.jdt.core.compiler.annotation.owning=org.eclipse.jdt.annotation.Owning
24+
org.eclipse.jdt.core.compiler.annotation.resourceanalysis=disabled
1825
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
1926
org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
2027
org.eclipse.jdt.core.compiler.codegen.targetPlatform=17
@@ -24,6 +31,8 @@ org.eclipse.jdt.core.compiler.debug.lineNumber=generate
2431
org.eclipse.jdt.core.compiler.debug.localVariable=generate
2532
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
2633
org.eclipse.jdt.core.compiler.doc.comment.support=enabled
34+
org.eclipse.jdt.core.compiler.problem.APILeak=warning
35+
org.eclipse.jdt.core.compiler.problem.annotatedTypeArgumentToUnannotated=info
2736
org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=error
2837
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
2938
org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
@@ -45,8 +54,10 @@ org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
4554
org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=error
4655
org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
4756
org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=error
57+
org.eclipse.jdt.core.compiler.problem.incompatibleOwningContract=warning
4858
org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=error
4959
org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=error
60+
org.eclipse.jdt.core.compiler.problem.insufficientResourceAnalysis=warning
5061
org.eclipse.jdt.core.compiler.problem.invalidJavadoc=warning
5162
org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
5263
org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=enabled
@@ -74,12 +85,14 @@ org.eclipse.jdt.core.compiler.problem.noEffectAssignment=error
7485
org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=error
7586
org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore
7687
org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
88+
org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning
7789
org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=warning
7890
org.eclipse.jdt.core.compiler.problem.nullReference=error
7991
org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
8092
org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
8193
org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=error
8294
org.eclipse.jdt.core.compiler.problem.parameterAssignment=error
95+
org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning
8396
org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=error
8497
org.eclipse.jdt.core.compiler.problem.potentialNullReference=error
8598
org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=warning
@@ -94,24 +107,31 @@ org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
94107
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=error
95108
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
96109
org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
110+
org.eclipse.jdt.core.compiler.problem.suppressWarningsNotFullyAnalysed=info
97111
org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=enabled
98112
org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
113+
org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning
99114
org.eclipse.jdt.core.compiler.problem.typeParameterHiding=error
100115
org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=disabled
101-
org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=error
116+
org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
102117
org.eclipse.jdt.core.compiler.problem.unclosedCloseable=error
103118
org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
104119
org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=error
120+
org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning
121+
org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled
122+
org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info
105123
org.eclipse.jdt.core.compiler.problem.unnecessaryElse=error
106124
org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=error
107125
org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
126+
org.eclipse.jdt.core.compiler.problem.unstableAutoModuleName=warning
108127
org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=warning
109128
org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=disabled
110129
org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=disabled
111130
org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
112131
org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore
113132
org.eclipse.jdt.core.compiler.problem.unusedImport=error
114133
org.eclipse.jdt.core.compiler.problem.unusedLabel=error
134+
org.eclipse.jdt.core.compiler.problem.unusedLambdaParameter=warning
115135
org.eclipse.jdt.core.compiler.problem.unusedLocal=error
116136
org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
117137
org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore

analyses/org.eclipse.tracecompass.incubator.inandout.core.tests/src/org/eclipse/tracecompass/incubator/inandout/core/tests/analysis/InAndOutDataProviderFactoryTest.java

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,12 @@
2424

2525
import org.eclipse.tracecompass.incubator.internal.inandout.core.analysis.InAndOutDataProviderFactory;
2626
import org.eclipse.tracecompass.incubator.internal.inandout.core.analysis.SegmentSpecifierConfiguration;
27+
import org.eclipse.tracecompass.tmf.core.component.DataProviderConstants;
2728
import org.eclipse.tracecompass.tmf.core.config.ITmfConfiguration;
2829
import org.eclipse.tracecompass.tmf.core.config.ITmfConfigurationSourceType;
2930
import org.eclipse.tracecompass.tmf.core.config.ITmfDataProviderConfigurator;
3031
import org.eclipse.tracecompass.tmf.core.config.TmfConfiguration;
32+
import org.eclipse.tracecompass.tmf.core.dataprovider.DataProviderManager;
3133
import org.eclipse.tracecompass.tmf.core.dataprovider.IDataProviderDescriptor;
3234
import org.eclipse.tracecompass.tmf.core.dataprovider.IDataProviderDescriptor.ProviderType;
3335
import org.eclipse.tracecompass.tmf.core.dataprovider.IDataProviderFactory;
@@ -36,9 +38,11 @@
3638
import org.eclipse.tracecompass.tmf.core.model.DataProviderDescriptor;
3739
import org.eclipse.tracecompass.tmf.core.model.tree.ITmfTreeDataProvider;
3840
import org.eclipse.tracecompass.tmf.core.signal.TmfSignalManager;
41+
import org.eclipse.tracecompass.tmf.core.signal.TmfTraceClosedSignal;
3942
import org.eclipse.tracecompass.tmf.core.signal.TmfTraceOpenedSignal;
4043
import org.eclipse.tracecompass.tmf.core.tests.TmfCoreTestPlugin;
4144
import org.eclipse.tracecompass.tmf.core.trace.ITmfTrace;
45+
import org.eclipse.tracecompass.tmf.core.trace.TmfTraceManager;
4246
import org.eclipse.tracecompass.tmf.tests.stubs.trace.xml.TmfXmlTraceStub;
4347
import org.eclipse.tracecompass.tmf.tests.stubs.trace.xml.TmfXmlTraceStubNs;
4448
import org.junit.AfterClass;
@@ -83,7 +87,9 @@ public class InAndOutDataProviderFactoryTest {
8387
@BeforeClass
8488
public static void setup() {
8589
TmfXmlTraceStub trace = TmfXmlTraceStubNs.setupTrace(TmfCoreTestPlugin.getAbsoluteFilePath(XML_TRACE));
86-
trace.traceOpened(new TmfTraceOpenedSignal(trace, trace, null));
90+
TmfTraceOpenedSignal signal = new TmfTraceOpenedSignal(trace, trace, null);
91+
TmfTraceManager.getInstance().traceOpened(signal);
92+
trace.traceOpened(signal);
8793
sfTestTrace = trace;
8894

8995
Map<String, Object> params = new HashMap<>();
@@ -111,6 +117,8 @@ public static void setup() {
111117
@AfterClass
112118
public static void cleanup() {
113119
if (sfTestTrace != null) {
120+
TmfTraceClosedSignal signal = new TmfTraceClosedSignal(sfTestTrace, sfTestTrace);
121+
TmfTraceManager.getInstance().traceClosed(signal);
114122
sfTestTrace.dispose();
115123
}
116124
if (sfFixture != null) {
@@ -157,6 +165,7 @@ public void testGetConfigurationSourceTypes() {
157165
* @throws TmfConfigurationException
158166
* if a config error happens
159167
*/
168+
@SuppressWarnings("unchecked")
160169
@Test
161170
public void testCreateAndDeleteDataProviderDescriptor() throws TmfConfigurationException {
162171
ITmfDataProviderConfigurator configurator = sfFixture.getAdapter(ITmfDataProviderConfigurator.class);
@@ -179,9 +188,16 @@ public void testCreateAndDeleteDataProviderDescriptor() throws TmfConfigurationE
179188
Collection<IDataProviderDescriptor> descriptors = sfFixture.getDescriptors(sfTestTrace);
180189
assertTrue(descriptors.contains(descriptor));
181190

191+
String dpId = "org.eclipse.tracecompass.analysis.profiling.core.flamechart:org.eclipse.tracecompass.incubator.inandout.analysis" + DataProviderConstants.CONFIG_SEPARATOR + config.getId();
192+
ITmfTreeDataProvider<?> dp = DataProviderManager.getInstance().getOrCreateDataProvider(
193+
sfTestTrace,
194+
dpId,
195+
ITmfTreeDataProvider.class);
196+
assertNotNull(dp);
182197
configurator.removeDataProviderDescriptor(sfTestTrace, descriptor);
183198
descriptors = sfFixture.getDescriptors(sfTestTrace);
184199
assertFalse(descriptors.contains(descriptor));
200+
assertNull(DataProviderManager.getInstance().getExistingDataProvider(sfTestTrace, dpId, ITmfTreeDataProvider.class));
185201
}
186202

187203
/**

analyses/org.eclipse.tracecompass.incubator.inandout.core/src/org/eclipse/tracecompass/incubator/internal/inandout/core/analysis/InAndOutDataProviderFactory.java

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@
1818
import java.util.ArrayList;
1919
import java.util.Collection;
2020
import java.util.List;
21+
import java.util.function.Predicate;
22+
import java.util.stream.Collectors;
2123

2224
import org.eclipse.core.runtime.FileLocator;
2325
import org.eclipse.core.runtime.IPath;
@@ -34,6 +36,7 @@
3436
import org.eclipse.tracecompass.tmf.core.config.ITmfDataProviderConfigurator;
3537
import org.eclipse.tracecompass.tmf.core.config.TmfConfiguration;
3638
import org.eclipse.tracecompass.tmf.core.config.TmfConfigurationSourceType;
39+
import org.eclipse.tracecompass.tmf.core.dataprovider.DataProviderManager;
3740
import org.eclipse.tracecompass.tmf.core.dataprovider.IDataProviderDescriptor;
3841
import org.eclipse.tracecompass.tmf.core.dataprovider.IDataProviderDescriptor.ProviderType;
3942
import org.eclipse.tracecompass.tmf.core.dataprovider.IDataProviderFactory;
@@ -248,14 +251,37 @@ private void applyConfiguration(ITmfTrace trace, ITmfConfiguration config, boole
248251
}
249252

250253
private void removeConfiguration(ITmfTrace trace, ITmfConfiguration config) throws TmfConfigurationException {
254+
// Collect all children data providers (e.g. call stack dp) before analysis modules are gone otherwise
255+
// they won't exist anymore
256+
Predicate<IDataProviderDescriptor> predicate = desc -> {
257+
ITmfConfiguration cfg = desc.getConfiguration();
258+
return (cfg != null && cfg.getId().equals(config.getId()));
259+
};
260+
@SuppressWarnings("null")
261+
List<IDataProviderDescriptor> dps = DataProviderManager.getInstance().getAvailableProviders(trace)
262+
.stream()
263+
.filter(predicate)
264+
.collect(Collectors.toList());
251265
if (trace instanceof TmfExperiment) {
266+
// Remove analysis modules in removeConfiguration per trace
252267
for (ITmfTrace tr : TmfTraceManager.getTraceSet(trace)) {
253268
removeConfiguration(tr, config);
254269
}
270+
271+
// This will remove any dp instance (e.g. call stack dp)
272+
for (IDataProviderDescriptor desc : dps) {
273+
DataProviderManager.getInstance().removeDataProvider(trace, desc.getId());
274+
}
255275
// only remove for traces in experiment
256276
return;
257277
}
278+
// This will remove the analysis module
258279
InAndOutAnalysisModule.remove(config, trace);
280+
281+
// This will remove any dp instance (e.g. call stack dp)
282+
for (IDataProviderDescriptor desc : dps) {
283+
DataProviderManager.getInstance().removeDataProvider(trace, desc.getId());
284+
}
259285
}
260286

261287
@SuppressWarnings("null")

0 commit comments

Comments
 (0)