cda9ec4ccdacc88501b88999311fb7a0ba71f1fc
[deliverable/tracecompass.git] / org.eclipse.linuxtools.ctf.core.tests / src / org / eclipse / linuxtools / ctf / core / tests / event / CTFEventDefinitionTest.java
1 /*******************************************************************************
2 * Copyright (c) 2014 Ericsson
3 * All rights reserved. This program and the accompanying materials
4 * are made available under the terms of the Eclipse Public License v1.0
5 * which accompanies this distribution, and is available at
6 * http://www.eclipse.org/legal/epl-v10.html
7 *
8 * Contributors:
9 * Matthew Khouzam - Initial API and implementation
10 *******************************************************************************/
11
12 package org.eclipse.linuxtools.ctf.core.tests.event;
13
14 import static org.junit.Assert.assertTrue;
15 import static org.junit.Assert.assertEquals;
16 import static org.junit.Assert.assertNotNull;
17 import static org.junit.Assert.assertNull;
18
19 import java.nio.ByteOrder;
20 import java.util.ArrayList;
21 import java.util.Arrays;
22 import java.util.Collections;
23 import java.util.List;
24
25 import org.eclipse.linuxtools.ctf.core.event.EventDefinition;
26 import org.eclipse.linuxtools.ctf.core.event.scope.LexicalScope;
27 import org.eclipse.linuxtools.ctf.core.event.types.Definition;
28 import org.eclipse.linuxtools.ctf.core.event.types.Encoding;
29 import org.eclipse.linuxtools.ctf.core.event.types.IntegerDeclaration;
30 import org.eclipse.linuxtools.ctf.core.event.types.IntegerDefinition;
31 import org.eclipse.linuxtools.ctf.core.event.types.StructDeclaration;
32 import org.eclipse.linuxtools.ctf.core.event.types.StructDefinition;
33 import org.eclipse.linuxtools.internal.ctf.core.event.EventDeclaration;
34 import org.junit.Before;
35 import org.junit.Test;
36
37 /**
38 * Test the event definition
39 *
40 * @author Matthew Khouzam
41 *
42 */
43 public class CTFEventDefinitionTest {
44 List<EventDefinition> fixture;
45
46 /**
47 * Making a power set of configurations to test the event definition
48 */
49 @Before
50 public void init() {
51 fixture = new ArrayList<>();
52 IntegerDeclaration pidDec = IntegerDeclaration.createDeclaration(5, false, 10, ByteOrder.LITTLE_ENDIAN, Encoding.NONE, "", 8);
53 IntegerDeclaration ctxDec = IntegerDeclaration.createDeclaration(16, false, 10, ByteOrder.LITTLE_ENDIAN, Encoding.NONE, "", 8);
54 IntegerDefinition pid = new IntegerDefinition(pidDec, null, "pid", 3);
55 IntegerDefinition pod = new IntegerDefinition(pidDec, null, "pod", 3);
56 IntegerDefinition ctx = new IntegerDefinition(pidDec, null, "ctx", 3);
57
58 StructDeclaration streamContextDec = new StructDeclaration(8);
59 streamContextDec.addField("pid", pidDec);
60 streamContextDec.addField("ctx", ctxDec);
61 StructDeclaration eventContextDec = new StructDeclaration(8);
62 streamContextDec.addField("pod", pidDec);
63 streamContextDec.addField("ctx", pidDec);
64 StructDeclaration fDec = new StructDeclaration(8);
65 EventDeclaration eventDeclaration = new EventDeclaration();
66
67 fDec.addField("pid", pidDec);
68 fDec.addField("ctx", ctxDec);
69 fDec.addField("pod", pidDec);
70
71 List<String> sFieldNames = Arrays.asList("pid", "ctx");
72 List<String> eFieldNames = Arrays.asList("pod", "ctx");
73 List<String> fieldNames = Arrays.asList("pid", "ctx", "pod");
74
75 Definition[] sDefs = { pid, ctx };
76 Definition[] eDefs = { pod, ctx };
77 Definition[] fDefs = { pid, ctx, pod };
78
79 StructDeclaration pContextDec = new StructDeclaration(8);
80
81 StructDefinition sContext = new StructDefinition(streamContextDec, null, LexicalScope.STREAM_PACKET_CONTEXT.toString(), sFieldNames, sDefs);
82 StructDefinition eContext = new StructDefinition(eventContextDec, null, LexicalScope.STREAM_EVENT_CONTEXT.toString(), eFieldNames, eDefs);
83 StructDefinition pContext = new StructDefinition(pContextDec, null, LexicalScope.FIELDS.toString(), Collections.EMPTY_LIST, new Definition[0]);
84 StructDefinition fields = new StructDefinition(fDec, null, LexicalScope.FIELDS.toString(), fieldNames, fDefs);
85
86 fixture.add(new EventDefinition(eventDeclaration, null, 100, null, null, null, null));
87 fixture.add(new EventDefinition(eventDeclaration, null, 100, null, null, null, fields));
88 fixture.add(new EventDefinition(eventDeclaration, null, 100, null, null, pContext, null));
89 fixture.add(new EventDefinition(eventDeclaration, null, 100, null, null, pContext, fields));
90 fixture.add(new EventDefinition(eventDeclaration, null, 100, null, eContext, null, null));
91 fixture.add(new EventDefinition(eventDeclaration, null, 100, null, eContext, null, fields));
92 fixture.add(new EventDefinition(eventDeclaration, null, 100, null, eContext, pContext, null));
93 fixture.add(new EventDefinition(eventDeclaration, null, 100, null, eContext, pContext, fields));
94 fixture.add(new EventDefinition(eventDeclaration, null, 100, sContext, null, null, null));
95 fixture.add(new EventDefinition(eventDeclaration, null, 100, sContext, null, null, fields));
96 fixture.add(new EventDefinition(eventDeclaration, null, 100, sContext, null, pContext, null));
97 fixture.add(new EventDefinition(eventDeclaration, null, 100, sContext, null, pContext, fields));
98 fixture.add(new EventDefinition(eventDeclaration, null, 100, sContext, eContext, null, null));
99 fixture.add(new EventDefinition(eventDeclaration, null, 100, sContext, eContext, null, fields));
100 fixture.add(new EventDefinition(eventDeclaration, null, 100, sContext, eContext, pContext, null));
101 fixture.add(new EventDefinition(eventDeclaration, null, 100, sContext, eContext, pContext, fields));
102 }
103
104 /**
105 * Test all the events
106 */
107 @Test
108 public void testEvents() {
109 int i = 0;
110 for (EventDefinition ed : fixture) {
111 test(i, ed);
112 i++;
113 }
114 }
115
116 private static void test(int rank, EventDefinition ed) {
117 String title = "event #" + rank;
118 assertEquals(title, 100L, ed.getTimestamp());
119 StructDefinition context = ed.getContext();
120 if (rank >= 4) {
121 assertNotNull(title, context);
122 if (rank >= 12) {
123 assertEquals(title, 3, context.getFieldNames().size());
124 } else {
125 assertEquals(title, 2, context.getFieldNames().size());
126 }
127
128 } else {
129 assertNull(title, context);
130 }
131 if (((rank / 4) % 2) == 1) {
132 assertNotNull(title, ed.getEventContext());
133 }else{
134 assertNull(title, ed.getEventContext());
135 }
136 if (rank % 2 == 1) {
137 assertNotNull(title, ed.getFields());
138 assertEquals(title, 3, ed.getFields().getFieldNames().size());
139 } else {
140 assertNull(title, ed.getFields());
141 }
142 assertTrue(title, ed.toString().startsWith("Event type: null" + System.getProperty("line.separator") + "Timestamp: 100"));
143 }
144
145 }
This page took 0.035048 seconds and 4 git commands to generate.