tmf: Axe the TmfEventTypeManager
[deliverable/tracecompass.git] / org.eclipse.tracecompass.tmf.ui.tests / src / org / eclipse / tracecompass / tmf / ui / tests / statistics / TmfBaseStatisticsDataTest.java
1 /*******************************************************************************
2 * Copyright (c) 2011, 2013 Ericsson
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 * Mathieu Denis <mathieu.denis@polymtl.ca> - Initial design and implementation
11 * Bernd Hufmann - Fixed warnings
12 * Alexandre Montplaisir - Port to JUnit4
13 *******************************************************************************/
14
15 package org.eclipse.tracecompass.tmf.ui.tests.statistics;
16
17 import static org.junit.Assert.assertEquals;
18 import static org.junit.Assert.assertNotNull;
19 import static org.junit.Assert.assertNull;
20 import static org.junit.Assert.assertTrue;
21 import static org.junit.Assert.fail;
22
23 import java.util.Arrays;
24 import java.util.Collection;
25 import java.util.Iterator;
26 import java.util.Vector;
27
28 import org.eclipse.tracecompass.tmf.core.event.ITmfEvent;
29 import org.eclipse.tracecompass.tmf.core.event.ITmfEventField;
30 import org.eclipse.tracecompass.tmf.core.event.TmfEvent;
31 import org.eclipse.tracecompass.tmf.core.event.TmfEventField;
32 import org.eclipse.tracecompass.tmf.core.event.TmfEventType;
33 import org.eclipse.tracecompass.tmf.core.timestamp.TmfTimestamp;
34 import org.eclipse.tracecompass.tmf.ui.viewers.statistics.model.Messages;
35 import org.eclipse.tracecompass.tmf.ui.viewers.statistics.model.TmfStatisticsTree;
36 import org.eclipse.tracecompass.tmf.ui.viewers.statistics.model.TmfStatisticsTreeNode;
37 import org.junit.Test;
38
39 /**
40 * TmfBaseStatistics Test Cases.
41 */
42 public class TmfBaseStatisticsDataTest {
43
44 // ------------------------------------------------------------------------
45 // Fields
46 // ------------------------------------------------------------------------
47
48 private static final String fTestName = "StatisticsDataTest";
49
50 private final String fTypeId1 = "Some type1";
51 private final String fTypeId2 = "Some type2";
52
53 private final String fLabel0 = "label1";
54 private final String fLabel1 = "label2";
55 private final String fLabel2 = "label3";
56 private final String[] fLabels = new String[] { fLabel0, fLabel1, fLabel2 };
57
58 private final TmfTimestamp fTimestamp1 = new TmfTimestamp(12345, (byte) 2, 5);
59 private final TmfTimestamp fTimestamp2 = new TmfTimestamp(12350, (byte) 2, 5);
60 private final TmfTimestamp fTimestamp3 = new TmfTimestamp(12355, (byte) 2, 5);
61
62 private final String fSource = "Source";
63
64 private final TmfEventType fType1 = new TmfEventType(fTypeId1, TmfEventField.makeRoot(fLabels));
65 private final TmfEventType fType2 = new TmfEventType(fTypeId1, TmfEventField.makeRoot(fLabels));
66 private final TmfEventType fType3 = new TmfEventType(fTypeId2, TmfEventField.makeRoot(fLabels));
67
68 private final String fReference = "Some reference";
69
70 private final ITmfEvent fEvent1;
71 private final ITmfEvent fEvent2;
72 private final ITmfEvent fEvent3;
73
74 private final TmfEventField fContent1;
75 private final TmfEventField fContent2;
76 private final TmfEventField fContent3;
77
78 private final TmfStatisticsTree fStatsTree;
79
80 // ------------------------------------------------------------------------
81 // Housekeeping
82 // ------------------------------------------------------------------------
83
84 /**
85 * Constructor
86 */
87 public TmfBaseStatisticsDataTest() {
88 fContent1 = new TmfEventField(ITmfEventField.ROOT_FIELD_ID, "Some content", null);
89 fEvent1 = new TmfEvent(null, fTimestamp1, fSource, fType1, fContent1, fReference);
90
91 fContent2 = new TmfEventField(ITmfEventField.ROOT_FIELD_ID, "Some other content", null);
92 fEvent2 = new TmfEvent(null, fTimestamp2, fSource, fType2, fContent2, fReference);
93
94 fContent3 = new TmfEventField(ITmfEventField.ROOT_FIELD_ID, "Some other different content", null);
95 fEvent3 = new TmfEvent(null, fTimestamp3, fSource, fType3, fContent3, fReference);
96
97 fStatsTree = new TmfStatisticsTree();
98
99 fStatsTree.setTotal(fTestName, true, 3);
100 fStatsTree.setTypeCount(fTestName, fEvent1.getType().getName(), true, 1);
101 fStatsTree.setTypeCount(fTestName, fEvent2.getType().getName(), true, 1);
102 fStatsTree.setTypeCount(fTestName, fEvent3.getType().getName(), true, 1);
103 }
104
105 // ------------------------------------------------------------------------
106 // Test methods
107 // ------------------------------------------------------------------------
108
109 /**
110 * Test getting of children.
111 */
112 @Test
113 public void testGetChildren() {
114 // Getting children of the ROOT
115 Collection<TmfStatisticsTreeNode> childrenTreeNode = fStatsTree.getRootNode().getChildren();
116 assertEquals("getChildren", 1, childrenTreeNode.size());
117 TmfStatisticsTreeNode treeNode = childrenTreeNode.iterator().next();
118 assertEquals("getChildren", fTestName, treeNode.getName());
119
120 // Getting children of the trace
121 childrenTreeNode = fStatsTree.getNode(fTestName).getChildren();
122 assertEquals("getChildren", 1, childrenTreeNode.size());
123 treeNode = childrenTreeNode.iterator().next();
124 assertEquals("getChildren", Messages.TmfStatisticsData_EventTypes, treeNode.getName());
125
126 Vector<String> keyExpected = new Vector<>();
127 keyExpected.add(fEvent1.getType().getName());
128 keyExpected.add(fEvent3.getType().getName());
129 // Getting children of a category
130 childrenTreeNode = treeNode.getChildren();
131 assertEquals("getChildren", 2, childrenTreeNode.size());
132
133 Iterator<TmfStatisticsTreeNode> iterChild = childrenTreeNode.iterator();
134 TmfStatisticsTreeNode temp;
135 while (iterChild.hasNext()) {
136 temp = iterChild.next();
137 assertEquals(0, temp.getChildren().size());
138 if (keyExpected.contains(temp.getName())) {
139 keyExpected.removeElement(temp.getName());
140 } else {
141 fail();
142 }
143 }
144
145 // Get children of a specific event type
146 childrenTreeNode = childrenTreeNode.iterator().next().getChildren();
147 assertEquals("getChildren", 0, childrenTreeNode.size());
148 }
149
150 /**
151 * Test registering of events.
152 */
153 @Test
154 public void testRegisterEvent() {
155 TmfStatisticsTreeNode trace = fStatsTree.getNode(fTestName);
156 assertEquals("registerEvent", 3, trace.getValues().getTotal());
157
158 Collection<TmfStatisticsTreeNode> childrenTreeNode = fStatsTree.getNode(fTestName, Messages.TmfStatisticsData_EventTypes).getChildren();
159 for (TmfStatisticsTreeNode child : childrenTreeNode) {
160 if (child.getName().compareTo(fEvent1.getType().getName()) == 0) {
161 assertEquals("registerEvent", 1, child.getValues().getTotal());
162 } else if (child.getName().compareTo(fEvent3.getType().getName()) == 0) {
163 assertEquals("registerEvent", 1, child.getValues().getTotal());
164 }
165 }
166 }
167
168 /**
169 * Test getter.
170 */
171 @Test
172 public void testGet() {
173 TmfStatisticsTreeNode traceRoot = fStatsTree.getNode(fTestName);
174 assertNotNull("get", traceRoot);
175 assertEquals("get", 0, traceRoot.getPath()[0].compareTo(fTestName));
176 assertEquals("get", 3, traceRoot.getValues().getTotal());
177 assertEquals("get", 1, traceRoot.getNbChildren());
178 }
179
180 /**
181 * Test getting or creating of node entries.
182 */
183 @Test
184 public void testGetOrCreate() {
185 String[] newEventType = new String[] { fTestName, Messages.TmfStatisticsData_EventTypes, "Fancy Type" };
186 TmfStatisticsTreeNode newEventTypeNode;
187
188 // newEventType is not in the tree
189 newEventTypeNode = fStatsTree.getNode(newEventType);
190 assertNull(newEventTypeNode);
191
192 newEventTypeNode = fStatsTree.getOrCreateNode(newEventType);
193 assertNotNull(newEventTypeNode);
194 assertTrue(Arrays.equals(newEventType, newEventTypeNode.getPath()));
195
196 // newEventType is in the tree
197 newEventTypeNode.reset();
198 newEventTypeNode = fStatsTree.getNode(newEventType);
199 assertNotNull(newEventTypeNode);
200
201 newEventTypeNode = fStatsTree.getOrCreateNode(newEventType);
202 assertNotNull(newEventTypeNode);
203 assertTrue(Arrays.equals(newEventType, newEventTypeNode.getPath()));
204 }
205
206 /**
207 * Test getting of parent node.
208 */
209 @Test
210 public void testGetParent() {
211 TmfStatisticsTreeNode parentNode = fStatsTree.getRootNode().getParent();
212 assertNull(parentNode);
213
214 parentNode = fStatsTree.getNode(fTestName).getParent();
215 assertNotNull(parentNode);
216 assertEquals(parentNode.getPath().toString(), fStatsTree.getRootNode().getPath().toString());
217
218 parentNode = fStatsTree.getNode(fTestName, Messages.TmfStatisticsData_EventTypes).getParent();
219 assertNotNull(parentNode);
220 assertEquals(parentNode.getPath().toString(), fStatsTree.getNode(fTestName).getPath().toString());
221 }
222
223 /**
224 * Test reset method
225 */
226 @Test
227 public void testReset() {
228 fStatsTree.getNode(fTestName, Messages.TmfStatisticsData_EventTypes).reset();
229
230 assertEquals(0, fStatsTree.getNode(fTestName, Messages.TmfStatisticsData_EventTypes).getChildren().size());
231 assertNull(fStatsTree.getNode(fTestName, Messages.TmfStatisticsData_EventTypes, fType1.getName()));
232 assertNull(fStatsTree.getNode(fTestName, Messages.TmfStatisticsData_EventTypes, fType3.getName()));
233
234 fStatsTree.getNode(fTestName).reset();
235 assertEquals(0, fStatsTree.getNode(fTestName).getChildren().size());
236 }
237 }
This page took 0.039063 seconds and 6 git commands to generate.