blob: c1ea5fc4391c2cb4bc404ea5af70ad5a5d499092 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2016 Ericsson
*
* 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.analysis.os.linux.core.tests.latency;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import org.eclipse.jdt.annotation.NonNull;
import org.eclipse.tracecompass.internal.analysis.os.linux.core.latency.SystemCallLatencyAnalysis;
import org.eclipse.tracecompass.segmentstore.core.ISegment;
import org.eclipse.tracecompass.segmentstore.core.ISegmentStore;
import org.eclipse.tracecompass.testtraces.ctf.CtfTestTrace;
import org.eclipse.tracecompass.tmf.core.analysis.IAnalysisModule;
import org.eclipse.tracecompass.tmf.core.signal.TmfTraceOpenedSignal;
import org.eclipse.tracecompass.tmf.core.trace.ITmfTrace;
import org.eclipse.tracecompass.tmf.core.trace.TmfTraceUtils;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
/**
* Tests for the system call analysis
*
* @author Matthew Khouzam
*/
public class SyscallAnalysisTest {
private ITmfTrace fTestTrace;
private SystemCallLatencyAnalysis fSyscallModule;
/**
* Test setup
*/
@Before
public void setUp() {
KernelCtfTraceStub trace = KernelCtfTraceStub.getTrace(CtfTestTrace.ARM_64_BIT_HEADER);
fTestTrace = trace;
/* Make sure the Kernel analysis has run */
trace.traceOpened(new TmfTraceOpenedSignal(this, trace, null));
for (IAnalysisModule mod : TmfTraceUtils.getAnalysisModulesOfClass(trace, SystemCallLatencyAnalysis.class)) {
fSyscallModule = (SystemCallLatencyAnalysis) mod;
}
assertNotNull(fSyscallModule);
fSyscallModule.schedule();
fSyscallModule.waitForCompletion();
}
/**
* Dispose everything
*/
@After
public void cleanup() {
final ITmfTrace testTrace = fTestTrace;
if (testTrace != null) {
testTrace.dispose();
}
}
/**
* This will load the analysis and test it. as it depends on Kernel, this
* test runs the kernel trace first then the analysis
*/
@Test
public void testSmallTraceSequential() {
final SystemCallLatencyAnalysis syscallModule = fSyscallModule;
assertNotNull(syscallModule);
ISegmentStore<@NonNull ISegment> segmentStore = syscallModule.getSegmentStore();
assertNotNull(segmentStore);
assertEquals(1801, segmentStore.size());
}
}