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