linux.core: Introduce TID analysis
[deliverable/tracecompass.git] / analysis / org.eclipse.tracecompass.analysis.os.linux.core.tests / src / org / eclipse / tracecompass / analysis / os / linux / core / tests / kernel / KernelTidAspectTest.java
CommitLineData
312f397a
GB
1/*******************************************************************************
2 * Copyright (c) 2015 École Polytechnique de Montréal
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
312f397a
GB
8 *******************************************************************************/
9
0f7a12d3 10package org.eclipse.tracecompass.analysis.os.linux.core.tests.kernel;
312f397a
GB
11
12import static org.junit.Assert.assertEquals;
13import static org.junit.Assert.assertNotNull;
312f397a
GB
14
15import java.io.File;
d8e841d9
MK
16import java.util.ArrayList;
17import java.util.List;
312f397a 18
312f397a 19import org.eclipse.jdt.annotation.NonNull;
0f7a12d3 20import org.eclipse.tracecompass.analysis.os.linux.core.kernel.KernelTidAspect;
0783ea52
GB
21import org.eclipse.tracecompass.analysis.os.linux.core.tests.stubs.LinuxTestCase;
22import org.eclipse.tracecompass.analysis.os.linux.core.tests.stubs.kernel.KernelAnalysisTestFactory;
d8e841d9 23import org.eclipse.tracecompass.analysis.os.linux.core.tid.TidAnalysisModule;
312f397a
GB
24import org.eclipse.tracecompass.tmf.core.analysis.IAnalysisModule;
25import org.eclipse.tracecompass.tmf.core.event.ITmfEvent;
312f397a
GB
26import org.eclipse.tracecompass.tmf.core.signal.TmfTraceOpenedSignal;
27import org.eclipse.tracecompass.tmf.core.trace.ITmfContext;
28import org.eclipse.tracecompass.tmf.core.trace.ITmfTrace;
29import org.eclipse.tracecompass.tmf.core.trace.TmfTrace;
30import org.eclipse.tracecompass.tmf.core.trace.TmfTraceManager;
31import org.eclipse.tracecompass.tmf.core.trace.TmfTraceUtils;
312f397a
GB
32import org.junit.After;
33import org.junit.Before;
34import org.junit.Test;
35
312f397a
GB
36/**
37 * Test the {@link KernelTidAspect} class
38 *
39 * @author Geneviève Bastien
40 */
41public class KernelTidAspectTest {
42
0783ea52 43 private static final @NonNull LinuxTestCase KERNEL_TEST_CASE = KernelAnalysisTestFactory.KERNEL_SCHED;
312f397a
GB
44
45 // ------------------------------------------------------------------------
46 // Test trace class definition
47 // ------------------------------------------------------------------------
48
312f397a
GB
49 private ITmfTrace fTrace;
50
51 private static void deleteSuppFiles(ITmfTrace trace) {
52 /* Remove supplementary files */
53 File suppDir = new File(TmfTraceManager.getSupplementaryFileDir(trace));
54 for (File file : suppDir.listFiles()) {
55 file.delete();
56 }
57 }
58
59 /**
60 * Test setup
61 */
62 @Before
63 public void setUp() {
0783ea52 64 ITmfTrace trace = KERNEL_TEST_CASE.getKernelTrace();
1d83ed07 65 deleteSuppFiles(trace);
312f397a 66 /* Make sure the Kernel analysis has run */
1d83ed07 67 ((TmfTrace) trace).traceOpened(new TmfTraceOpenedSignal(this, trace, null));
312f397a 68 IAnalysisModule module = null;
d8e841d9 69 for (IAnalysisModule mod : TmfTraceUtils.getAnalysisModulesOfClass(trace, TidAnalysisModule.class)) {
312f397a
GB
70 module = mod;
71 }
72 assertNotNull(module);
73 module.schedule();
74 module.waitForCompletion();
1d83ed07 75 fTrace = trace;
312f397a
GB
76 }
77
78 /**
79 * Test clean up
80 */
81 @After
82 public void tearDown() {
83 fTrace.dispose();
84 }
85
d8e841d9 86 private Integer resolveNextEvent(ITmfContext context) {
1d83ed07
AM
87 ITmfTrace trace = fTrace;
88 ITmfEvent event = trace.getNext(context);
312f397a 89 assertNotNull(event);
d8e841d9 90 return (Integer) TmfTraceUtils.resolveEventAspectOfClassForEvent(trace, KernelTidAspect.class, event);
312f397a
GB
91 }
92
93 /**
94 * Test the {@link KernelTidAspect#resolve(ITmfEvent)} method method
95 */
96 @Test
97 public void testResolveTidAspect() {
98
99 ITmfContext context = fTrace.seekEvent(0L);
d8e841d9
MK
100 List<Integer> expected = new ArrayList<>();
101 expected.add(null);
102 expected.add(null);
103 expected.add(null);
104 expected.add(11);
105 expected.add(null);
106 expected.add(null);
107 expected.add(20);
108 expected.add(20);
109 expected.add(21);
110 expected.add(11);
111 expected.add(30);
112 expected.add(21);
113 expected.add(20);
114 List<Integer> tids = new ArrayList<>();
115
116 for (int i = 0; i < expected.size(); i++) {
117 tids.add(resolveNextEvent(context));
118 }
119 assertEquals(expected, tids);
312f397a
GB
120 }
121
122}
This page took 0.048193 seconds and 5 git commands to generate.