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
9 * Matthew Khouzam - Initial API and implementation
10 *******************************************************************************/
12 package org
.eclipse
.linuxtools
.ctf
.core
.tests
.event
;
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
;
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
;
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
;
38 * Test the event definition
40 * @author Matthew Khouzam
43 public class CTFEventDefinitionTest
{
44 List
<EventDefinition
> fixture
;
47 * Making a power set of configurations to test the event definition
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);
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();
67 fDec
.addField("pid", pidDec
);
68 fDec
.addField("ctx", ctxDec
);
69 fDec
.addField("pod", pidDec
);
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");
75 Definition
[] sDefs
= { pid
, ctx
};
76 Definition
[] eDefs
= { pod
, ctx
};
77 Definition
[] fDefs
= { pid
, ctx
, pod
};
79 StructDeclaration pContextDec
= new StructDeclaration(8);
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
);
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
));
105 * Test all the events
108 public void testEvents() {
110 for (EventDefinition ed
: fixture
) {
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();
121 assertNotNull(title
, context
);
123 assertEquals(title
, 3, context
.getFieldNames().size());
125 assertEquals(title
, 2, context
.getFieldNames().size());
129 assertNull(title
, context
);
131 if (((rank
/ 4) % 2) == 1) {
132 assertNotNull(title
, ed
.getEventContext());
134 assertNull(title
, ed
.getEventContext());
137 assertNotNull(title
, ed
.getFields());
138 assertEquals(title
, 3, ed
.getFields().getFieldNames().size());
140 assertNull(title
, ed
.getFields());
142 assertTrue(title
, ed
.toString().startsWith("Event type: null" + System
.getProperty("line.separator") + "Timestamp: 100"));