tmf.core: Introduce TmfTimestamp factory methods
[deliverable/tracecompass.git] / tmf / org.eclipse.tracecompass.tmf.ui.tests / src / org / eclipse / tracecompass / tmf / ui / tests / statistics / TmfBaseStatisticsDataTest.java
CommitLineData
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 15package org.eclipse.tracecompass.tmf.ui.tests.statistics;
79e08fd0 16
90ed5958
AM
17import static org.junit.Assert.assertEquals;
18import static org.junit.Assert.assertNotNull;
19import static org.junit.Assert.assertNull;
20import static org.junit.Assert.assertTrue;
21import static org.junit.Assert.fail;
22
7588c810 23import java.util.Arrays;
79e08fd0
BH
24import java.util.Collection;
25import java.util.Iterator;
26import java.util.Vector;
27
aa353506 28import org.eclipse.jdt.annotation.NonNull;
1743f395
BH
29import org.eclipse.tracecompass.internal.tmf.ui.viewers.statistics.model.Messages;
30import org.eclipse.tracecompass.internal.tmf.ui.viewers.statistics.model.TmfStatisticsTree;
31import org.eclipse.tracecompass.internal.tmf.ui.viewers.statistics.model.TmfStatisticsTreeNode;
2bdf0193
AM
32import org.eclipse.tracecompass.tmf.core.event.ITmfEvent;
33import org.eclipse.tracecompass.tmf.core.event.ITmfEventField;
34import org.eclipse.tracecompass.tmf.core.event.TmfEvent;
35import org.eclipse.tracecompass.tmf.core.event.TmfEventField;
36import org.eclipse.tracecompass.tmf.core.event.TmfEventType;
b2c971ec 37import org.eclipse.tracecompass.tmf.core.timestamp.ITmfTimestamp;
2bdf0193 38import org.eclipse.tracecompass.tmf.core.timestamp.TmfTimestamp;
0c7471fb 39import org.eclipse.tracecompass.tmf.core.trace.ITmfContext;
90ed5958 40import org.junit.Test;
79e08fd0 41
64636df8
BH
42/**
43 * TmfBaseStatistics Test Cases.
44 */
90ed5958 45public 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}
This page took 0.095542 seconds and 5 git commands to generate.