1 /*******************************************************************************
2 * Copyright (c) 2015 École Polytechnique de Montréal
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
8 *******************************************************************************/
10 package org
.eclipse
.tracecompass
.analysis
.os
.linux
.core
.tests
.kernel
;
12 import static org
.junit
.Assert
.assertEquals
;
13 import static org
.junit
.Assert
.assertNotNull
;
14 import static org
.junit
.Assert
.assertNull
;
18 import org
.eclipse
.jdt
.annotation
.NonNull
;
19 import org
.eclipse
.tracecompass
.analysis
.os
.linux
.core
.kernel
.KernelAnalysisModule
;
20 import org
.eclipse
.tracecompass
.analysis
.os
.linux
.core
.kernel
.KernelTidAspect
;
21 import org
.eclipse
.tracecompass
.analysis
.os
.linux
.core
.tests
.stubs
.LinuxTestCase
;
22 import org
.eclipse
.tracecompass
.analysis
.os
.linux
.core
.tests
.stubs
.kernel
.KernelAnalysisTestFactory
;
23 import org
.eclipse
.tracecompass
.tmf
.core
.analysis
.IAnalysisModule
;
24 import org
.eclipse
.tracecompass
.tmf
.core
.event
.ITmfEvent
;
25 import org
.eclipse
.tracecompass
.tmf
.core
.signal
.TmfTraceOpenedSignal
;
26 import org
.eclipse
.tracecompass
.tmf
.core
.trace
.ITmfContext
;
27 import org
.eclipse
.tracecompass
.tmf
.core
.trace
.ITmfTrace
;
28 import org
.eclipse
.tracecompass
.tmf
.core
.trace
.TmfTrace
;
29 import org
.eclipse
.tracecompass
.tmf
.core
.trace
.TmfTraceManager
;
30 import org
.eclipse
.tracecompass
.tmf
.core
.trace
.TmfTraceUtils
;
31 import org
.junit
.After
;
32 import org
.junit
.Before
;
33 import org
.junit
.Test
;
36 * Test the {@link KernelTidAspect} class
38 * @author Geneviève Bastien
40 public class KernelTidAspectTest
{
42 private static final @NonNull LinuxTestCase KERNEL_TEST_CASE
= KernelAnalysisTestFactory
.KERNEL_SCHED
;
44 // ------------------------------------------------------------------------
45 // Test trace class definition
46 // ------------------------------------------------------------------------
48 private ITmfTrace fTrace
;
50 private static void deleteSuppFiles(ITmfTrace trace
) {
51 /* Remove supplementary files */
52 File suppDir
= new File(TmfTraceManager
.getSupplementaryFileDir(trace
));
53 for (File file
: suppDir
.listFiles()) {
63 ITmfTrace trace
= KERNEL_TEST_CASE
.getKernelTrace();
64 deleteSuppFiles(trace
);
65 /* Make sure the Kernel analysis has run */
66 ((TmfTrace
) trace
).traceOpened(new TmfTraceOpenedSignal(this, trace
, null));
67 IAnalysisModule module
= null;
68 for (IAnalysisModule mod
: TmfTraceUtils
.getAnalysisModulesOfClass(trace
, KernelAnalysisModule
.class)) {
71 assertNotNull(module
);
73 module
.waitForCompletion();
81 public void tearDown() {
85 private void resolveNextEvent(ITmfContext context
, Integer tid
) {
86 ITmfTrace trace
= fTrace
;
87 ITmfEvent event
= trace
.getNext(context
);
90 Object tidObj
= TmfTraceUtils
.resolveEventAspectOfClassForEvent(trace
, KernelTidAspect
.class, event
);
94 assertNotNull(tidObj
);
95 assertEquals(tid
, tidObj
);
100 * Test the {@link KernelTidAspect#resolve(ITmfEvent)} method method
103 public void testResolveTidAspect() {
105 ITmfContext context
= fTrace
.seekEvent(0L);
106 resolveNextEvent(context
, null);
107 resolveNextEvent(context
, null);
108 resolveNextEvent(context
, null);
109 resolveNextEvent(context
, 11);
110 resolveNextEvent(context
, null);
111 resolveNextEvent(context
, null);
112 resolveNextEvent(context
, 20);
113 resolveNextEvent(context
, 20);
114 resolveNextEvent(context
, 21);
115 resolveNextEvent(context
, 11);
116 resolveNextEvent(context
, 30);
117 resolveNextEvent(context
, 21);
118 resolveNextEvent(context
, 20);