lttng: Update control's session.xsd file to version 2.6
[deliverable/tracecompass.git] / org.eclipse.tracecompass.analysis.os.linux.core.tests / src / org / eclipse / tracecompass / analysis / os / linux / core / tests / kernelanalysis / 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
8 *
9 * Contributors:
10 * Geneviève Bastien - Initial API and implementation
11 *******************************************************************************/
12
13package org.eclipse.tracecompass.analysis.os.linux.core.tests.kernelanalysis;
14
15import static org.junit.Assert.assertEquals;
16import static org.junit.Assert.assertNotNull;
17import static org.junit.Assert.assertNull;
18import static org.junit.Assert.fail;
19
20import java.io.File;
21
22import org.eclipse.core.runtime.IPath;
23import org.eclipse.core.runtime.IStatus;
24import org.eclipse.jdt.annotation.NonNull;
25import org.eclipse.tracecompass.analysis.os.linux.core.kernelanalysis.KernelAnalysis;
26import org.eclipse.tracecompass.analysis.os.linux.core.kernelanalysis.KernelTidAspect;
27import org.eclipse.tracecompass.analysis.os.linux.core.tests.Activator;
28import org.eclipse.tracecompass.common.core.NonNullUtils;
29import org.eclipse.tracecompass.tmf.core.analysis.IAnalysisModule;
30import org.eclipse.tracecompass.tmf.core.event.ITmfEvent;
31import org.eclipse.tracecompass.tmf.core.event.TmfEvent;
32import org.eclipse.tracecompass.tmf.core.event.aspect.ITmfEventAspect;
33import org.eclipse.tracecompass.tmf.core.exceptions.TmfTraceException;
34import org.eclipse.tracecompass.tmf.core.signal.TmfTraceOpenedSignal;
35import org.eclipse.tracecompass.tmf.core.trace.ITmfContext;
36import org.eclipse.tracecompass.tmf.core.trace.ITmfTrace;
37import org.eclipse.tracecompass.tmf.core.trace.TmfTrace;
38import org.eclipse.tracecompass.tmf.core.trace.TmfTraceManager;
39import org.eclipse.tracecompass.tmf.core.trace.TmfTraceUtils;
40import org.eclipse.tracecompass.tmf.tests.stubs.trace.xml.TmfXmlTraceStub;
41import org.junit.After;
42import org.junit.Before;
43import org.junit.Test;
44
45import com.google.common.collect.ImmutableSet;
46
47/**
48 * Test the {@link KernelTidAspect} class
49 *
50 * @author Geneviève Bastien
51 */
52public class KernelTidAspectTest {
53
54 private static final @NonNull String LTTNG_KERNEL_FILE = "testfiles/lttng_kernel_analysis.xml";
55
56 // ------------------------------------------------------------------------
57 // Test trace class definition
58 // ------------------------------------------------------------------------
59
60 private static class TmfXmlTraceStubWithTidAspects extends TmfXmlTraceStub {
61
62 public TmfXmlTraceStubWithTidAspects() {
63 super();
64 }
65
66 @Override
67 public Iterable<ITmfEventAspect> getEventAspects() {
68 ImmutableSet.Builder<ITmfEventAspect> builder = ImmutableSet.builder();
69 builder.addAll(super.getEventAspects());
9049e763 70 builder.add(KernelTidAspect.INSTANCE);
312f397a
GB
71 return NonNullUtils.checkNotNull(builder.build());
72 }
73
74 }
75
76 private ITmfTrace fTrace;
77
78 private static void deleteSuppFiles(ITmfTrace trace) {
79 /* Remove supplementary files */
80 File suppDir = new File(TmfTraceManager.getSupplementaryFileDir(trace));
81 for (File file : suppDir.listFiles()) {
82 file.delete();
83 }
84 }
85
86 /**
87 * Test setup
88 */
89 @Before
90 public void setUp() {
1d83ed07 91 ITmfTrace trace = new TmfXmlTraceStubWithTidAspects();
312f397a 92 IPath filePath = Activator.getAbsoluteFilePath(LTTNG_KERNEL_FILE);
1d83ed07 93 IStatus status = trace.validate(null, filePath.toOSString());
312f397a
GB
94 if (!status.isOK()) {
95 fail(status.getException().getMessage());
96 }
97 try {
1d83ed07 98 trace.initTrace(null, filePath.toOSString(), TmfEvent.class);
312f397a
GB
99 } catch (TmfTraceException e) {
100 fail(e.getMessage());
101 }
1d83ed07 102 deleteSuppFiles(trace);
312f397a 103 /* Make sure the Kernel analysis has run */
1d83ed07 104 ((TmfTrace) trace).traceOpened(new TmfTraceOpenedSignal(this, trace, null));
312f397a 105 IAnalysisModule module = null;
1d83ed07 106 for (IAnalysisModule mod : TmfTraceUtils.getAnalysisModulesOfClass(trace, KernelAnalysis.class)) {
312f397a
GB
107 module = mod;
108 }
109 assertNotNull(module);
110 module.schedule();
111 module.waitForCompletion();
1d83ed07 112 fTrace = trace;
312f397a
GB
113 }
114
115 /**
116 * Test clean up
117 */
118 @After
119 public void tearDown() {
120 fTrace.dispose();
121 }
122
123 private void resolveNextEvent(ITmfContext context, Integer tid) {
1d83ed07
AM
124 ITmfTrace trace = fTrace;
125 ITmfEvent event = trace.getNext(context);
312f397a
GB
126 assertNotNull(event);
127
1d83ed07 128 Object tidObj = TmfTraceUtils.resolveEventAspectOfClassForEvent(trace, KernelTidAspect.class, event);
312f397a
GB
129 if (tid == null) {
130 assertNull(tidObj);
131 } else {
132 assertNotNull(tidObj);
133 assertEquals(tid, tidObj);
134 }
135 }
136
137 /**
138 * Test the {@link KernelTidAspect#resolve(ITmfEvent)} method method
139 */
140 @Test
141 public void testResolveTidAspect() {
142
143 ITmfContext context = fTrace.seekEvent(0L);
144 resolveNextEvent(context, null);
145 resolveNextEvent(context, null);
146 resolveNextEvent(context, null);
147 resolveNextEvent(context, 11);
148 resolveNextEvent(context, null);
149 resolveNextEvent(context, null);
150 resolveNextEvent(context, 20);
151 resolveNextEvent(context, 20);
152 resolveNextEvent(context, 21);
153 resolveNextEvent(context, 11);
154 resolveNextEvent(context, 30);
155 resolveNextEvent(context, 21);
156 resolveNextEvent(context, 20);
157 }
158
159}
This page took 0.043281 seconds and 5 git commands to generate.