blob: 05222513e55ffd61e34367a3c2e4af69585b0082 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2013, 2014 École Polytechnique de Montréal
*
* All rights reserved. This program and the accompanying materials are
* made available under the terms of the Eclipse Public License 2.0 which
* accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*******************************************************************************/
package org.eclipse.tracecompass.tmf.core.tests.analysis;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import java.util.Set;
import org.eclipse.jdt.annotation.NonNull;
import org.eclipse.tracecompass.tmf.core.analysis.IAnalysisModule;
import org.eclipse.tracecompass.tmf.core.analysis.IAnalysisModuleHelper;
import org.eclipse.tracecompass.tmf.core.analysis.IAnalysisParameterProvider;
import org.eclipse.tracecompass.tmf.core.analysis.TmfAnalysisManager;
import org.eclipse.tracecompass.tmf.core.exceptions.TmfAnalysisException;
import org.eclipse.tracecompass.tmf.core.tests.shared.TmfTestTrace;
import org.eclipse.tracecompass.tmf.core.trace.ITmfTrace;
import org.eclipse.tracecompass.tmf.tests.stubs.analysis.TestAnalysis;
import org.eclipse.tracecompass.tmf.tests.stubs.analysis.TestAnalysisParameterProvider;
import org.junit.After;
import org.junit.Test;
import com.google.common.collect.Multimap;
/**
* Test the TmfAbstractParameterProvider class
*
* @author Geneviève Bastien
*/
public class AnalysisParameterProviderTest {
private static IAnalysisModuleHelper getModuleHelper(@NonNull String moduleId) {
Multimap<String, IAnalysisModuleHelper> helpers = TmfAnalysisManager.getAnalysisModules();
assertEquals(1, helpers.get(moduleId).size());
return helpers.get(moduleId).iterator().next();
}
private static final @NonNull String MODULE_ID = "org.eclipse.linuxtools.tmf.core.tests.analysis.testParamProvider";
/**
* Cleanup the trace after testing
*/
@After
public void cleanupTrace() {
TmfTestTrace.A_TEST_10K.dispose();
}
/**
* Test that the provider's value is used
*/
@Test
public void testProviderTmfTrace() {
ITmfTrace trace = TmfTestTrace.A_TEST_10K.getTrace();
/* Make sure the value is set to null */
IAnalysisModuleHelper helper = getModuleHelper(MODULE_ID);
assertNotNull(helper);
IAnalysisModule module = null;
IAnalysisModule module2 = null;
try {
module = helper.newModule(trace);
assertNotNull(module);
assertEquals(10, module.getParameter(TestAnalysis.PARAM_TEST));
/* Change the value of the parameter in the provider */
Set<IAnalysisParameterProvider> providers = TmfAnalysisManager.getParameterProvidersForModule(module, trace);
assertEquals(1, providers.size());
TestAnalysisParameterProvider provider = (TestAnalysisParameterProvider) providers.iterator().next();
provider.setValue(5);
assertEquals(5, module.getParameter(TestAnalysis.PARAM_TEST));
/* Make sure the parameter provider is the same instance for another module */
module2 = helper.newModule(trace);
assertNotNull(module2);
assertTrue(module != module2);
providers = TmfAnalysisManager.getParameterProvidersForModule(module2, trace);
assertEquals(1, providers.size());
TestAnalysisParameterProvider provider2 = (TestAnalysisParameterProvider) providers.iterator().next();
assertTrue(provider == provider2);
} catch (TmfAnalysisException e) {
fail(e.getMessage());
} finally {
if (module != null) {
module.dispose();
}
if (module2 != null) {
module2.dispose();
}
}
}
}