blob: 15d775a4fa04f29138e44b43a98b6467a2883d85 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2014, 2015 É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
*
* Contributors:
* Geneviève Bastien - Initial API and implementation
*******************************************************************************/
package org.eclipse.tracecompass.lttng2.kernel.core.tests.analysis.kernel;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import java.util.List;
import org.eclipse.tracecompass.analysis.os.linux.core.kernel.KernelAnalysisModule;
import org.eclipse.tracecompass.lttng2.kernel.core.trace.LttngKernelTrace;
import org.eclipse.tracecompass.lttng2.lttng.kernel.core.tests.shared.LttngKernelTestTraceUtils;
import org.eclipse.tracecompass.statesystem.core.ITmfStateSystem;
import org.eclipse.tracecompass.testtraces.ctf.CtfTestTrace;
import org.eclipse.tracecompass.tmf.core.exceptions.TmfAnalysisException;
import org.eclipse.tracecompass.tmf.core.tests.shared.TmfTestHelper;
import org.eclipse.tracecompass.tmf.core.trace.ITmfTrace;
import org.eclipse.tracecompass.tmf.ctf.core.tests.shared.CtfTmfTestTraceUtils;
import org.eclipse.tracecompass.tmf.ctf.core.trace.CtfTmfTrace;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
/**
* Test the {@link KernelAnalysisModule} class
*
* @author Geneviève Bastien
*/
public class LttngKernelAnalysisTest {
private LttngKernelTrace fTrace;
private KernelAnalysisModule fKernelAnalysisModule;
/**
* Set-up the test
*/
@Before
public void setUp() {
fKernelAnalysisModule = new KernelAnalysisModule();
fTrace = LttngKernelTestTraceUtils.getTrace(CtfTestTrace.KERNEL);
}
/**
* Dispose test objects
*/
@After
public void tearDown() {
LttngKernelTestTraceUtils.dispose(CtfTestTrace.KERNEL);
fKernelAnalysisModule.dispose();
fTrace = null;
fKernelAnalysisModule = null;
}
/**
* Test the LTTng kernel analysis execution
*/
@Test
public void testAnalysisExecution() {
fKernelAnalysisModule.setId("test");
ITmfTrace trace = fTrace;
assertNotNull(trace);
try {
assertTrue(fKernelAnalysisModule.setTrace(trace));
} catch (TmfAnalysisException e) {
fail(e.getMessage());
}
// Assert the state system has not been initialized yet
ITmfStateSystem ss = fKernelAnalysisModule.getStateSystem();
assertNull(ss);
assertTrue(TmfTestHelper.executeAnalysis(fKernelAnalysisModule));
ss = fKernelAnalysisModule.getStateSystem();
assertNotNull(ss);
List<Integer> quarks = ss.getQuarks("*");
assertFalse(quarks.isEmpty());
}
/**
* Test the canExecute method on valid and invalid traces
*/
@Test
public void testCanExecute() {
/* Test with a valid kernel trace */
assertNotNull(fTrace);
assertTrue(fKernelAnalysisModule.canExecute(fTrace));
/* Test with a CTF trace that does not have required events */
CtfTmfTrace trace = CtfTmfTestTraceUtils.getTrace(CtfTestTrace.CYG_PROFILE);
/*
* TODO: This should be false, but for now there is no mandatory events
* in the kernel analysis so it will return true.
*/
assertTrue(fKernelAnalysisModule.canExecute(trace));
CtfTmfTestTraceUtils.dispose(CtfTestTrace.CYG_PROFILE);
}
}