1 /*******************************************************************************
2 * Copyright (c) 2016 Ericsson
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 *******************************************************************************/
10 package org
.eclipse
.tracecompass
.analysis
.os
.linux
.ui
.tests
.view
.controlflow
;
12 import static org
.eclipse
.tracecompass
.common
.core
.NonNullUtils
.checkNotNull
;
13 import static org
.junit
.Assert
.assertEquals
;
15 import java
.util
.ArrayList
;
16 import java
.util
.Collections
;
17 import java
.util
.Comparator
;
18 import java
.util
.List
;
20 import org
.eclipse
.jdt
.annotation
.NonNull
;
21 import org
.eclipse
.swt
.SWT
;
22 import org
.eclipse
.tracecompass
.internal
.analysis
.os
.linux
.ui
.views
.controlflow
.ControlFlowColumnComparators
;
23 import org
.eclipse
.tracecompass
.internal
.analysis
.os
.linux
.ui
.views
.controlflow
.ControlFlowEntry
;
24 import org
.eclipse
.tracecompass
.internal
.analysis
.os
.linux
.ui
.views
.controlflow
.IControlFlowEntryComparator
;
25 import org
.eclipse
.tracecompass
.testtraces
.ctf
.CtfTestTrace
;
26 import org
.eclipse
.tracecompass
.tmf
.core
.trace
.ITmfTrace
;
27 import org
.eclipse
.tracecompass
.tmf
.ctf
.core
.tests
.shared
.CtfTmfTestTraceUtils
;
28 import org
.eclipse
.tracecompass
.tmf
.ui
.views
.timegraph
.ITimeGraphEntryComparator
;
29 import org
.eclipse
.tracecompass
.tmf
.ui
.widgets
.timegraph
.model
.ITimeGraphEntry
;
30 import org
.junit
.BeforeClass
;
31 import org
.junit
.Test
;
34 * Test cases for verifying the ControlFlowEntry comparators used in the Control Flow View.
36 * @author Bernd Hufmann
39 public class ControlFlowEntryComparatorTest
{
41 private static final @NonNull CtfTestTrace TEST_TRACE1
= CtfTestTrace
.SYNC_DEST
;
42 private static final @NonNull CtfTestTrace TEST_TRACE2
= CtfTestTrace
.SYNC_SRC
;
43 private static final @NonNull CtfTestTrace TEST_TRACE3
= CtfTestTrace
.DEBUG_INFO
;
45 private static ITmfTrace TRACE1
;
46 private static ITmfTrace TRACE2
;
47 private static ITmfTrace TRACE3
;
49 private static final String TRACE_EXEC_NAME1
= "AAA";
50 private static final String TRACE_EXEC_NAME2
= "BBB";
51 private static final String TRACE_EXEC_NAME3
= "CCC";
53 private static final int TRACE_TID1
= 1;
54 private static final int TRACE_TID2
= 2;
55 private static final int TRACE_TID3
= 3;
57 private static final int TRACE_PTID1
= 1;
58 private static final int TRACE_PTID2
= 2;
59 private static final int TRACE_PTID3
= 3;
61 private static final int TRACE_START_TIME1
= 1;
62 private static final int TRACE_START_TIME2
= 2;
63 private static final int TRACE_START_TIME3
= 3;
65 private static final int TRACE_END_TIME1
= 4;
72 public static void beforeClass() {
73 TRACE1
= CtfTmfTestTraceUtils
.getTrace(TEST_TRACE1
);
74 TRACE2
= CtfTmfTestTraceUtils
.getTrace(TEST_TRACE2
);
75 TRACE3
= CtfTmfTestTraceUtils
.getTrace(TEST_TRACE3
);
79 * Test {@link IControlFlowEntryComparator#TRACE_COMPARATOR}
82 public void traceComparatorTest() {
83 ControlFlowEntry entry1
= new ControlFlowEntry(0, checkNotNull(TRACE1
), TRACE_EXEC_NAME1
, TRACE_TID1
, TRACE_PTID1
, TRACE_START_TIME1
, TRACE_END_TIME1
);
84 ControlFlowEntry entry2
= new ControlFlowEntry(0, checkNotNull(TRACE2
), TRACE_EXEC_NAME1
, TRACE_TID1
, TRACE_PTID1
, TRACE_START_TIME1
, TRACE_END_TIME1
);
85 ControlFlowEntry entry3
= new ControlFlowEntry(0, checkNotNull(TRACE3
), TRACE_EXEC_NAME1
, TRACE_TID1
, TRACE_PTID1
, TRACE_START_TIME1
, TRACE_END_TIME1
);
86 List
<ControlFlowEntry
> testVec
= getListOfEntries(entry1
, entry2
, entry3
);
87 List
<ControlFlowEntry
> expected
= getListOfEntries(entry2
, entry1
, entry3
);
89 Collections
.sort(testVec
, IControlFlowEntryComparator
.TRACE_COMPARATOR
);
90 assertEquals(expected
, testVec
);
94 * Test {@link IControlFlowEntryComparator#PROCESS_NAME_COMPARATOR}
97 public void execNameComparatorTest() {
98 ControlFlowEntry trace1Entry1
= new ControlFlowEntry(0, checkNotNull(TRACE1
), TRACE_EXEC_NAME1
, TRACE_TID1
, TRACE_PTID1
, TRACE_START_TIME1
, TRACE_END_TIME1
);
99 ControlFlowEntry trace1Entry2
= new ControlFlowEntry(0, checkNotNull(TRACE1
), TRACE_EXEC_NAME2
, TRACE_TID1
, TRACE_PTID1
, TRACE_START_TIME1
, TRACE_END_TIME1
);
100 ControlFlowEntry trace1Entry3
= new ControlFlowEntry(0, checkNotNull(TRACE1
), TRACE_EXEC_NAME3
, TRACE_TID1
, TRACE_PTID1
, TRACE_START_TIME1
, TRACE_END_TIME1
);
101 List
<ControlFlowEntry
> testVec
= getListOfEntries(trace1Entry2
, trace1Entry3
, trace1Entry1
);
102 List
<ControlFlowEntry
> expected
= getListOfEntries(trace1Entry1
, trace1Entry2
, trace1Entry3
);
104 Collections
.sort(testVec
, IControlFlowEntryComparator
.PROCESS_NAME_COMPARATOR
);
105 assertEquals(expected
, testVec
);
109 * Test {@link IControlFlowEntryComparator#TID_COMPARATOR}
112 public void tidComparatorTest() {
113 ControlFlowEntry trace1Entry1
= new ControlFlowEntry(0, checkNotNull(TRACE1
), TRACE_EXEC_NAME1
, TRACE_TID1
, TRACE_PTID1
, TRACE_START_TIME1
, TRACE_END_TIME1
);
114 ControlFlowEntry trace1Entry2
= new ControlFlowEntry(0, checkNotNull(TRACE1
), TRACE_EXEC_NAME1
, TRACE_TID2
, TRACE_PTID1
, TRACE_START_TIME1
, TRACE_END_TIME1
);
115 ControlFlowEntry trace1Entry3
= new ControlFlowEntry(0, checkNotNull(TRACE1
), TRACE_EXEC_NAME1
, TRACE_TID3
, TRACE_PTID1
, TRACE_START_TIME1
, TRACE_END_TIME1
);
116 List
<ControlFlowEntry
> testVec
= getListOfEntries(trace1Entry2
, trace1Entry3
, trace1Entry1
);
117 List
<ControlFlowEntry
> expected
= getListOfEntries(trace1Entry1
, trace1Entry2
, trace1Entry3
);
119 Collections
.sort(testVec
, IControlFlowEntryComparator
.TID_COMPARATOR
);
120 assertEquals(expected
, testVec
);
124 * Test {@link IControlFlowEntryComparator#PTID_COMPARATOR}
127 public void ptidComparatorTest() {
128 ControlFlowEntry trace1Entry1
= new ControlFlowEntry(0, checkNotNull(TRACE1
), TRACE_EXEC_NAME1
, TRACE_TID1
, TRACE_PTID1
, TRACE_START_TIME1
, TRACE_END_TIME1
);
129 ControlFlowEntry trace1Entry2
= new ControlFlowEntry(0, checkNotNull(TRACE1
), TRACE_EXEC_NAME1
, TRACE_TID1
, TRACE_PTID2
, TRACE_START_TIME1
, TRACE_END_TIME1
);
130 ControlFlowEntry trace1Entry3
= new ControlFlowEntry(0, checkNotNull(TRACE1
), TRACE_EXEC_NAME1
, TRACE_TID1
, TRACE_PTID3
, TRACE_START_TIME1
, TRACE_END_TIME1
);
131 List
<ControlFlowEntry
> testVec
= getListOfEntries(trace1Entry2
, trace1Entry3
, trace1Entry1
);
132 List
<ControlFlowEntry
> expected
= getListOfEntries(trace1Entry1
, trace1Entry2
, trace1Entry3
);
134 Collections
.sort(testVec
, IControlFlowEntryComparator
.PTID_COMPARATOR
);
135 assertEquals(expected
, testVec
);
139 * Test {@link IControlFlowEntryComparator#BIRTH_TIME_COMPARATOR}
142 public void birthTimeComparatorTest() {
143 ControlFlowEntry trace1Entry1
= new ControlFlowEntry(0, checkNotNull(TRACE1
), TRACE_EXEC_NAME1
, TRACE_TID1
, TRACE_PTID1
, TRACE_START_TIME1
, TRACE_END_TIME1
);
144 ControlFlowEntry trace1Entry2
= new ControlFlowEntry(0, checkNotNull(TRACE1
), TRACE_EXEC_NAME1
, TRACE_TID1
, TRACE_PTID1
, TRACE_START_TIME2
, TRACE_END_TIME1
);
145 ControlFlowEntry trace1Entry3
= new ControlFlowEntry(0, checkNotNull(TRACE1
), TRACE_EXEC_NAME1
, TRACE_TID1
, TRACE_PTID1
, TRACE_START_TIME3
, TRACE_END_TIME1
);
146 List
<ControlFlowEntry
> testVec
= getListOfEntries(trace1Entry2
, trace1Entry3
, trace1Entry1
);
147 List
<ControlFlowEntry
> expected
= getListOfEntries(trace1Entry1
, trace1Entry2
, trace1Entry3
);
149 Collections
.sort(testVec
, IControlFlowEntryComparator
.BIRTH_TIME_COMPARATOR
);
150 assertEquals(expected
, testVec
);
154 * Test {@link ControlFlowColumnComparators#TRACE_COLUMN_COMPARATOR}
156 * Note when the trace is the same: The order that is birth time,
157 * TID and PTID. Note that for secondary comparators the sort
158 * direction is not changed.
161 public void traceColumnComparatorTest() {
162 ControlFlowEntry entry1
= new ControlFlowEntry(0, checkNotNull(TRACE1
), TRACE_EXEC_NAME1
, TRACE_TID1
, TRACE_PTID1
, TRACE_START_TIME1
, TRACE_END_TIME1
);
163 ControlFlowEntry entry2
= new ControlFlowEntry(0, checkNotNull(TRACE2
), TRACE_EXEC_NAME1
, TRACE_TID1
, TRACE_PTID1
, TRACE_START_TIME2
, TRACE_END_TIME1
);
164 ControlFlowEntry entry3
= new ControlFlowEntry(0, checkNotNull(TRACE3
), TRACE_EXEC_NAME1
, TRACE_TID1
, TRACE_PTID1
, TRACE_START_TIME3
, TRACE_END_TIME1
);
165 List
<ControlFlowEntry
> testVec
= getListOfEntries(entry2
, entry3
, entry1
);
166 List
<ControlFlowEntry
> expectedDown
= getListOfEntries(entry2
, entry1
, entry3
);
167 List
<ControlFlowEntry
> expectedUp
= getListOfEntries(entry3
, entry1
, entry2
);
168 runTest(ControlFlowColumnComparators
.TRACE_COLUMN_COMPARATOR
, testVec
, expectedDown
, expectedUp
);
170 entry1
= new ControlFlowEntry(0, checkNotNull(TRACE1
), TRACE_EXEC_NAME1
, TRACE_TID1
, TRACE_PTID1
, TRACE_START_TIME1
, TRACE_END_TIME1
);
171 entry2
= new ControlFlowEntry(0, checkNotNull(TRACE2
), TRACE_EXEC_NAME2
, TRACE_TID1
, TRACE_PTID1
, TRACE_START_TIME1
, TRACE_END_TIME1
);
172 entry3
= new ControlFlowEntry(0, checkNotNull(TRACE3
), TRACE_EXEC_NAME3
, TRACE_TID1
, TRACE_PTID1
, TRACE_START_TIME1
, TRACE_END_TIME1
);
173 testVec
= getListOfEntries(entry2
, entry3
, entry1
);
174 expectedDown
= getListOfEntries(entry2
, entry1
, entry3
);
175 expectedUp
= getListOfEntries(entry3
, entry1
, entry2
);
176 runTest(ControlFlowColumnComparators
.TRACE_COLUMN_COMPARATOR
, testVec
, expectedDown
, expectedUp
);
178 entry1
= new ControlFlowEntry(0, checkNotNull(TRACE1
), TRACE_EXEC_NAME1
, TRACE_TID1
, TRACE_PTID1
, TRACE_START_TIME1
, TRACE_END_TIME1
);
179 entry2
= new ControlFlowEntry(0, checkNotNull(TRACE2
), TRACE_EXEC_NAME1
, TRACE_TID2
, TRACE_PTID1
, TRACE_START_TIME1
, TRACE_END_TIME1
);
180 entry3
= new ControlFlowEntry(0, checkNotNull(TRACE3
), TRACE_EXEC_NAME1
, TRACE_TID3
, TRACE_PTID1
, TRACE_START_TIME1
, TRACE_END_TIME1
);
181 testVec
= getListOfEntries(entry2
, entry3
, entry1
);
182 expectedDown
= getListOfEntries(entry2
, entry1
, entry3
);
183 expectedUp
= getListOfEntries(entry3
, entry1
, entry2
);
184 runTest(ControlFlowColumnComparators
.TRACE_COLUMN_COMPARATOR
, testVec
, expectedDown
, expectedUp
);
186 entry1
= new ControlFlowEntry(0, checkNotNull(TRACE1
), TRACE_EXEC_NAME1
, TRACE_TID1
, TRACE_PTID1
, TRACE_START_TIME1
, TRACE_END_TIME1
);
187 entry2
= new ControlFlowEntry(0, checkNotNull(TRACE2
), TRACE_EXEC_NAME1
, TRACE_TID1
, TRACE_PTID2
, TRACE_START_TIME1
, TRACE_END_TIME1
);
188 entry3
= new ControlFlowEntry(0, checkNotNull(TRACE3
), TRACE_EXEC_NAME1
, TRACE_TID1
, TRACE_PTID3
, TRACE_START_TIME1
, TRACE_END_TIME1
);
189 testVec
= getListOfEntries(entry2
, entry3
, entry1
);
190 expectedDown
= getListOfEntries(entry2
, entry1
, entry3
);
191 expectedUp
= getListOfEntries(entry3
, entry1
, entry2
);
192 runTest(ControlFlowColumnComparators
.TRACE_COLUMN_COMPARATOR
, testVec
, expectedDown
, expectedUp
);
196 * Test {@link ControlFlowColumnComparators#PROCESS_NAME_COLUMN_COMPARATOR}
199 public void execNameColumnComparatorTest() {
200 ControlFlowEntry trace1Entry1
= new ControlFlowEntry(0, checkNotNull(TRACE1
), TRACE_EXEC_NAME1
, TRACE_TID1
, TRACE_PTID1
, TRACE_START_TIME1
, TRACE_END_TIME1
);
201 ControlFlowEntry trace1Entry2
= new ControlFlowEntry(0, checkNotNull(TRACE1
), TRACE_EXEC_NAME2
, TRACE_TID1
, TRACE_PTID1
, TRACE_START_TIME1
, TRACE_END_TIME1
);
202 ControlFlowEntry trace1Entry3
= new ControlFlowEntry(0, checkNotNull(TRACE1
), TRACE_EXEC_NAME3
, TRACE_TID1
, TRACE_PTID1
, TRACE_START_TIME1
, TRACE_END_TIME1
);
204 ControlFlowEntry trace2Entry1
= new ControlFlowEntry(0, checkNotNull(TRACE2
), TRACE_EXEC_NAME1
, TRACE_TID1
, TRACE_PTID1
, TRACE_START_TIME1
, TRACE_END_TIME1
);
205 ControlFlowEntry trace2Entry2
= new ControlFlowEntry(0, checkNotNull(TRACE2
), TRACE_EXEC_NAME2
, TRACE_TID1
, TRACE_PTID1
, TRACE_START_TIME1
, TRACE_END_TIME1
);
206 ControlFlowEntry trace2Entry3
= new ControlFlowEntry(0, checkNotNull(TRACE2
), TRACE_EXEC_NAME3
, TRACE_TID1
, TRACE_PTID1
, TRACE_START_TIME1
, TRACE_END_TIME1
);
208 List
<ControlFlowEntry
> testVec
= getListOfEntries(trace1Entry2
, trace1Entry3
, trace1Entry1
, trace2Entry2
, trace2Entry3
, trace2Entry1
);
209 List
<ControlFlowEntry
> expectedDown
= getListOfEntries(trace2Entry1
, trace2Entry2
, trace2Entry3
, trace1Entry1
, trace1Entry2
, trace1Entry3
);
210 List
<ControlFlowEntry
> expectedUp
= getListOfEntries(trace2Entry3
, trace2Entry2
, trace2Entry1
, trace1Entry3
, trace1Entry2
, trace1Entry1
);
211 runTest(ControlFlowColumnComparators
.PROCESS_NAME_COLUMN_COMPARATOR
, testVec
, expectedDown
, expectedUp
);
215 * Test {@link ControlFlowColumnComparators#PROCESS_NAME_COLUMN_COMPARATOR}
217 * Note, that when the exec name is the same: The order that is birth time,
218 * TID and PTID. Note that for secondary comparators the sort direction is
222 public void execNameSecondaryTimeColumnComparatorTest() {
223 ControlFlowEntry trace1Entry1
= new ControlFlowEntry(0, checkNotNull(TRACE1
), TRACE_EXEC_NAME1
, TRACE_TID1
, TRACE_PTID1
, TRACE_START_TIME1
, TRACE_END_TIME1
);
224 ControlFlowEntry trace1Entry2
= new ControlFlowEntry(0, checkNotNull(TRACE1
), TRACE_EXEC_NAME1
, TRACE_TID1
, TRACE_PTID1
, TRACE_START_TIME2
, TRACE_END_TIME1
);
225 ControlFlowEntry trace1Entry3
= new ControlFlowEntry(0, checkNotNull(TRACE1
), TRACE_EXEC_NAME1
, TRACE_TID1
, TRACE_PTID1
, TRACE_START_TIME3
, TRACE_END_TIME1
);
227 List
<ControlFlowEntry
> testVec
= getListOfEntries(trace1Entry2
, trace1Entry3
, trace1Entry1
);
228 List
<ControlFlowEntry
> expectedDown
= getListOfEntries(trace1Entry1
, trace1Entry2
, trace1Entry3
);
229 List
<ControlFlowEntry
> expectedUp
= getListOfEntries(trace1Entry1
, trace1Entry2
, trace1Entry3
);
230 runTest(ControlFlowColumnComparators
.PROCESS_NAME_COLUMN_COMPARATOR
, testVec
, expectedDown
, expectedUp
);
232 trace1Entry1
= new ControlFlowEntry(0, checkNotNull(TRACE1
), TRACE_EXEC_NAME1
, TRACE_TID1
, TRACE_PTID1
, TRACE_START_TIME1
, TRACE_END_TIME1
);
233 trace1Entry2
= new ControlFlowEntry(0, checkNotNull(TRACE1
), TRACE_EXEC_NAME1
, TRACE_TID2
, TRACE_PTID1
, TRACE_START_TIME1
, TRACE_END_TIME1
);
234 trace1Entry3
= new ControlFlowEntry(0, checkNotNull(TRACE1
), TRACE_EXEC_NAME1
, TRACE_TID3
, TRACE_PTID1
, TRACE_START_TIME1
, TRACE_END_TIME1
);
236 testVec
= getListOfEntries(trace1Entry2
, trace1Entry3
, trace1Entry1
);
237 expectedDown
= getListOfEntries(trace1Entry1
, trace1Entry2
, trace1Entry3
);
238 expectedUp
= getListOfEntries(trace1Entry1
, trace1Entry2
, trace1Entry3
);
239 runTest(ControlFlowColumnComparators
.PROCESS_NAME_COLUMN_COMPARATOR
, testVec
, expectedDown
, expectedUp
);
241 trace1Entry1
= new ControlFlowEntry(0, checkNotNull(TRACE1
), TRACE_EXEC_NAME1
, TRACE_TID1
, TRACE_PTID1
, TRACE_START_TIME1
, TRACE_END_TIME1
);
242 trace1Entry2
= new ControlFlowEntry(0, checkNotNull(TRACE1
), TRACE_EXEC_NAME1
, TRACE_TID1
, TRACE_PTID2
, TRACE_START_TIME1
, TRACE_END_TIME1
);
243 trace1Entry3
= new ControlFlowEntry(0, checkNotNull(TRACE1
), TRACE_EXEC_NAME1
, TRACE_TID1
, TRACE_PTID3
, TRACE_START_TIME1
, TRACE_END_TIME1
);
245 testVec
= getListOfEntries(trace1Entry2
, trace1Entry3
, trace1Entry1
);
246 expectedDown
= getListOfEntries(trace1Entry1
, trace1Entry2
, trace1Entry3
);
247 expectedUp
= getListOfEntries(trace1Entry1
, trace1Entry2
, trace1Entry3
);
248 runTest(ControlFlowColumnComparators
.PROCESS_NAME_COLUMN_COMPARATOR
, testVec
, expectedDown
, expectedUp
);
252 * Test {@link ControlFlowColumnComparators#TID_COLUMN_COMPARATOR}
255 public void tidColumnComparatorTest() {
256 ControlFlowEntry trace1Entry1
= new ControlFlowEntry(0, checkNotNull(TRACE1
), TRACE_EXEC_NAME1
, TRACE_TID1
, TRACE_PTID1
, TRACE_START_TIME1
, TRACE_END_TIME1
);
257 ControlFlowEntry trace1Entry2
= new ControlFlowEntry(0, checkNotNull(TRACE1
), TRACE_EXEC_NAME1
, TRACE_TID2
, TRACE_PTID1
, TRACE_START_TIME1
, TRACE_END_TIME1
);
258 ControlFlowEntry trace1Entry3
= new ControlFlowEntry(0, checkNotNull(TRACE1
), TRACE_EXEC_NAME1
, TRACE_TID3
, TRACE_PTID1
, TRACE_START_TIME1
, TRACE_END_TIME1
);
260 ControlFlowEntry trace2Entry1
= new ControlFlowEntry(0, checkNotNull(TRACE2
), TRACE_EXEC_NAME1
, TRACE_TID1
, TRACE_PTID1
, TRACE_START_TIME1
, TRACE_END_TIME1
);
261 ControlFlowEntry trace2Entry2
= new ControlFlowEntry(0, checkNotNull(TRACE2
), TRACE_EXEC_NAME1
, TRACE_TID2
, TRACE_PTID1
, TRACE_START_TIME1
, TRACE_END_TIME1
);
262 ControlFlowEntry trace2Entry3
= new ControlFlowEntry(0, checkNotNull(TRACE2
), TRACE_EXEC_NAME1
, TRACE_TID3
, TRACE_PTID1
, TRACE_START_TIME1
, TRACE_END_TIME1
);
264 List
<ControlFlowEntry
> testVec
= getListOfEntries(trace1Entry2
, trace1Entry3
, trace1Entry1
, trace2Entry2
, trace2Entry3
, trace2Entry1
);
265 List
<ControlFlowEntry
> expectedDown
= getListOfEntries(trace2Entry1
, trace2Entry2
, trace2Entry3
, trace1Entry1
, trace1Entry2
, trace1Entry3
);
266 List
<ControlFlowEntry
> expectedUp
= getListOfEntries(trace2Entry3
, trace2Entry2
, trace2Entry1
, trace1Entry3
, trace1Entry2
, trace1Entry1
);
267 runTest(ControlFlowColumnComparators
.TID_COLUMN_COMPARATOR
, testVec
, expectedDown
, expectedUp
);
271 * Test {@link ControlFlowColumnComparators#TID_COLUMN_COMPARATOR}
273 * Note, that when TID is the same: The order for for that is birth
274 * time, process name and PTID. Note that for secondary comparators the
275 * sort direction is not changed.
278 public void tidSecondaryTimeColumnComparatorTest() {
280 ControlFlowEntry trace1Entry1
= new ControlFlowEntry(0, checkNotNull(TRACE1
), TRACE_EXEC_NAME1
, TRACE_TID1
, TRACE_PTID1
, TRACE_START_TIME1
, TRACE_END_TIME1
);
281 ControlFlowEntry trace1Entry2
= new ControlFlowEntry(0, checkNotNull(TRACE1
), TRACE_EXEC_NAME1
, TRACE_TID1
, TRACE_PTID1
, TRACE_START_TIME2
, TRACE_END_TIME1
);
282 ControlFlowEntry trace1Entry3
= new ControlFlowEntry(0, checkNotNull(TRACE1
), TRACE_EXEC_NAME1
, TRACE_TID1
, TRACE_PTID1
, TRACE_START_TIME3
, TRACE_END_TIME1
);
284 List
<ControlFlowEntry
> testVec
= getListOfEntries(trace1Entry2
, trace1Entry3
, trace1Entry1
);
285 List
<ControlFlowEntry
> expectedDown
= getListOfEntries(trace1Entry1
, trace1Entry2
, trace1Entry3
);
286 List
<ControlFlowEntry
> expectedUp
= getListOfEntries(trace1Entry1
, trace1Entry2
, trace1Entry3
);
287 runTest(ControlFlowColumnComparators
.TID_COLUMN_COMPARATOR
, testVec
, expectedDown
, expectedUp
);
289 trace1Entry1
= new ControlFlowEntry(0, checkNotNull(TRACE1
), TRACE_EXEC_NAME1
, TRACE_TID1
, TRACE_PTID1
, TRACE_START_TIME1
, TRACE_END_TIME1
);
290 trace1Entry2
= new ControlFlowEntry(0, checkNotNull(TRACE1
), TRACE_EXEC_NAME2
, TRACE_TID1
, TRACE_PTID1
, TRACE_START_TIME1
, TRACE_END_TIME1
);
291 trace1Entry3
= new ControlFlowEntry(0, checkNotNull(TRACE1
), TRACE_EXEC_NAME3
, TRACE_TID1
, TRACE_PTID1
, TRACE_START_TIME1
, TRACE_END_TIME1
);
293 testVec
= getListOfEntries(trace1Entry2
, trace1Entry3
, trace1Entry1
);
294 expectedDown
= getListOfEntries(trace1Entry1
, trace1Entry2
, trace1Entry3
);
295 expectedUp
= getListOfEntries(trace1Entry1
, trace1Entry2
, trace1Entry3
);
296 runTest(ControlFlowColumnComparators
.TID_COLUMN_COMPARATOR
, testVec
, expectedDown
, expectedUp
);
298 trace1Entry1
= new ControlFlowEntry(0, checkNotNull(TRACE1
), TRACE_EXEC_NAME1
, TRACE_TID1
, TRACE_PTID1
, TRACE_START_TIME1
, TRACE_END_TIME1
);
299 trace1Entry2
= new ControlFlowEntry(0, checkNotNull(TRACE1
), TRACE_EXEC_NAME1
, TRACE_TID1
, TRACE_PTID2
, TRACE_START_TIME1
, TRACE_END_TIME1
);
300 trace1Entry3
= new ControlFlowEntry(0, checkNotNull(TRACE1
), TRACE_EXEC_NAME1
, TRACE_TID1
, TRACE_PTID3
, TRACE_START_TIME1
, TRACE_END_TIME1
);
302 testVec
= getListOfEntries(trace1Entry2
, trace1Entry3
, trace1Entry1
);
303 expectedDown
= getListOfEntries(trace1Entry1
, trace1Entry2
, trace1Entry3
);
304 expectedUp
= getListOfEntries(trace1Entry1
, trace1Entry2
, trace1Entry3
);
305 runTest(ControlFlowColumnComparators
.TID_COLUMN_COMPARATOR
, testVec
, expectedDown
, expectedUp
);
309 * Test {@link ControlFlowColumnComparators#PTID_COLUMN_COMPARATOR}
312 public void ptidColumnComparatorTest() {
313 ControlFlowEntry trace1Entry1
= new ControlFlowEntry(0, checkNotNull(TRACE1
), TRACE_EXEC_NAME1
, TRACE_TID1
, TRACE_PTID1
, TRACE_START_TIME1
, TRACE_END_TIME1
);
314 ControlFlowEntry trace1Entry2
= new ControlFlowEntry(0, checkNotNull(TRACE1
), TRACE_EXEC_NAME1
, TRACE_TID1
, TRACE_PTID2
, TRACE_START_TIME1
, TRACE_END_TIME1
);
315 ControlFlowEntry trace1Entry3
= new ControlFlowEntry(0, checkNotNull(TRACE1
), TRACE_EXEC_NAME1
, TRACE_TID1
, TRACE_PTID3
, TRACE_START_TIME1
, TRACE_END_TIME1
);
317 ControlFlowEntry trace2Entry1
= new ControlFlowEntry(0, checkNotNull(TRACE2
), TRACE_EXEC_NAME1
, TRACE_TID1
, TRACE_PTID1
, TRACE_START_TIME1
, TRACE_END_TIME1
);
318 ControlFlowEntry trace2Entry2
= new ControlFlowEntry(0, checkNotNull(TRACE2
), TRACE_EXEC_NAME1
, TRACE_TID1
, TRACE_PTID2
, TRACE_START_TIME1
, TRACE_END_TIME1
);
319 ControlFlowEntry trace2Entry3
= new ControlFlowEntry(0, checkNotNull(TRACE2
), TRACE_EXEC_NAME1
, TRACE_TID1
, TRACE_PTID3
, TRACE_START_TIME1
, TRACE_END_TIME1
);
321 List
<ControlFlowEntry
> testVec
= getListOfEntries(trace1Entry2
, trace1Entry3
, trace1Entry1
, trace2Entry2
, trace2Entry3
, trace2Entry1
);
322 List
<ControlFlowEntry
> expectedDown
= getListOfEntries(trace2Entry1
, trace2Entry2
, trace2Entry3
, trace1Entry1
, trace1Entry2
, trace1Entry3
);
323 List
<ControlFlowEntry
> expectedUp
= getListOfEntries(trace2Entry3
, trace2Entry2
, trace2Entry1
, trace1Entry3
, trace1Entry2
, trace1Entry1
);
324 runTest(ControlFlowColumnComparators
.PTID_COLUMN_COMPARATOR
, testVec
, expectedDown
, expectedUp
);
328 * Test {@link ControlFlowColumnComparators#PTID_COLUMN_COMPARATOR}
330 * Note, that when PTID is the same: The order for that is birth time,
331 * process name and ptid. Note that for secondary comparators the sort
332 * direction is not changed.
335 public void ptidSecondaryTimeColumnComparatorTest() {
336 ControlFlowEntry trace1Entry1
= new ControlFlowEntry(0, checkNotNull(TRACE1
), TRACE_EXEC_NAME1
, TRACE_TID1
, TRACE_PTID1
, TRACE_START_TIME1
, TRACE_END_TIME1
);
337 ControlFlowEntry trace1Entry2
= new ControlFlowEntry(0, checkNotNull(TRACE1
), TRACE_EXEC_NAME1
, TRACE_TID1
, TRACE_PTID1
, TRACE_START_TIME2
, TRACE_END_TIME1
);
338 ControlFlowEntry trace1Entry3
= new ControlFlowEntry(0, checkNotNull(TRACE1
), TRACE_EXEC_NAME1
, TRACE_TID1
, TRACE_PTID1
, TRACE_START_TIME3
, TRACE_END_TIME1
);
340 List
<ControlFlowEntry
> testVec
= getListOfEntries(trace1Entry2
, trace1Entry3
, trace1Entry1
);
341 List
<ControlFlowEntry
> expectedDown
= getListOfEntries(trace1Entry1
, trace1Entry2
, trace1Entry3
);
342 List
<ControlFlowEntry
> expectedUp
= getListOfEntries(trace1Entry1
, trace1Entry2
, trace1Entry3
);
343 runTest(ControlFlowColumnComparators
.PTID_COLUMN_COMPARATOR
, testVec
, expectedDown
, expectedUp
);
345 trace1Entry1
= new ControlFlowEntry(0, checkNotNull(TRACE1
), TRACE_EXEC_NAME1
, TRACE_TID1
, TRACE_PTID1
, TRACE_START_TIME1
, TRACE_END_TIME1
);
346 trace1Entry2
= new ControlFlowEntry(0, checkNotNull(TRACE1
), TRACE_EXEC_NAME2
, TRACE_TID1
, TRACE_PTID1
, TRACE_START_TIME1
, TRACE_END_TIME1
);
347 trace1Entry3
= new ControlFlowEntry(0, checkNotNull(TRACE1
), TRACE_EXEC_NAME3
, TRACE_TID1
, TRACE_PTID1
, TRACE_START_TIME1
, TRACE_END_TIME1
);
349 testVec
= getListOfEntries(trace1Entry2
, trace1Entry3
, trace1Entry1
);
350 expectedDown
= getListOfEntries(trace1Entry1
, trace1Entry2
, trace1Entry3
);
351 expectedUp
= getListOfEntries(trace1Entry1
, trace1Entry2
, trace1Entry3
);
352 runTest(ControlFlowColumnComparators
.PTID_COLUMN_COMPARATOR
, testVec
, expectedDown
, expectedUp
);
354 trace1Entry1
= new ControlFlowEntry(0, checkNotNull(TRACE1
), TRACE_EXEC_NAME1
, TRACE_TID1
, TRACE_PTID1
, TRACE_START_TIME1
, TRACE_END_TIME1
);
355 trace1Entry2
= new ControlFlowEntry(0, checkNotNull(TRACE1
), TRACE_EXEC_NAME1
, TRACE_TID2
, TRACE_PTID1
, TRACE_START_TIME1
, TRACE_END_TIME1
);
356 trace1Entry3
= new ControlFlowEntry(0, checkNotNull(TRACE1
), TRACE_EXEC_NAME1
, TRACE_TID3
, TRACE_PTID1
, TRACE_START_TIME1
, TRACE_END_TIME1
);
358 testVec
= getListOfEntries(trace1Entry2
, trace1Entry3
, trace1Entry1
);
359 expectedDown
= getListOfEntries(trace1Entry1
, trace1Entry2
, trace1Entry3
);
360 expectedUp
= getListOfEntries(trace1Entry1
, trace1Entry2
, trace1Entry3
);
361 runTest(ControlFlowColumnComparators
.PTID_COLUMN_COMPARATOR
, testVec
, expectedDown
, expectedUp
);
365 * Test {@link ControlFlowColumnComparators#BIRTH_TIME_COLUMN_COMPARATOR}
368 public void birthTimeColumnComparatorTest() {
369 ControlFlowEntry trace1Entry1
= new ControlFlowEntry(0, checkNotNull(TRACE1
), TRACE_EXEC_NAME1
, TRACE_TID1
, TRACE_PTID1
, TRACE_START_TIME1
, TRACE_END_TIME1
);
370 ControlFlowEntry trace1Entry2
= new ControlFlowEntry(0, checkNotNull(TRACE1
), TRACE_EXEC_NAME1
, TRACE_TID1
, TRACE_PTID1
, TRACE_START_TIME2
, TRACE_END_TIME1
);
371 ControlFlowEntry trace1Entry3
= new ControlFlowEntry(0, checkNotNull(TRACE1
), TRACE_EXEC_NAME1
, TRACE_TID1
, TRACE_PTID1
, TRACE_START_TIME3
, TRACE_END_TIME1
);
373 ControlFlowEntry trace2Entry1
= new ControlFlowEntry(0, checkNotNull(TRACE2
), TRACE_EXEC_NAME1
, TRACE_TID1
, TRACE_PTID1
, TRACE_START_TIME1
, TRACE_END_TIME1
);
374 ControlFlowEntry trace2Entry2
= new ControlFlowEntry(0, checkNotNull(TRACE2
), TRACE_EXEC_NAME1
, TRACE_TID1
, TRACE_PTID1
, TRACE_START_TIME2
, TRACE_END_TIME1
);
375 ControlFlowEntry trace2Entry3
= new ControlFlowEntry(0, checkNotNull(TRACE2
), TRACE_EXEC_NAME1
, TRACE_TID1
, TRACE_PTID1
, TRACE_START_TIME3
, TRACE_END_TIME1
);
377 List
<ControlFlowEntry
> testVec
= getListOfEntries(trace1Entry2
, trace1Entry3
, trace1Entry1
, trace2Entry2
, trace2Entry3
, trace2Entry1
);
378 List
<ControlFlowEntry
> expectedDown
= getListOfEntries(trace2Entry1
, trace2Entry2
, trace2Entry3
, trace1Entry1
, trace1Entry2
, trace1Entry3
);
379 List
<ControlFlowEntry
> expectedUp
= getListOfEntries(trace2Entry3
, trace2Entry2
, trace2Entry1
, trace1Entry3
, trace1Entry2
, trace1Entry1
);
380 runTest(ControlFlowColumnComparators
.BIRTH_TIME_COLUMN_COMPARATOR
, testVec
, expectedDown
, expectedUp
);
384 * Test {@link ControlFlowColumnComparators#BIRTH_TIME_COLUMN_COMPARATOR}
386 * Note, taht when when birth time is the same: The order for that is
387 * process name, tid and ptid. Note that for secondary comparators the
388 * sort direction is not changed.
391 public void birthTimeSecondaryTimeColumnComparatorTest() {
392 ControlFlowEntry trace1Entry1
= new ControlFlowEntry(0, checkNotNull(TRACE1
), TRACE_EXEC_NAME1
, TRACE_TID1
, TRACE_PTID1
, TRACE_START_TIME1
, TRACE_END_TIME1
);
393 ControlFlowEntry trace1Entry2
= new ControlFlowEntry(0, checkNotNull(TRACE1
), TRACE_EXEC_NAME2
, TRACE_TID1
, TRACE_PTID1
, TRACE_START_TIME1
, TRACE_END_TIME1
);
394 ControlFlowEntry trace1Entry3
= new ControlFlowEntry(0, checkNotNull(TRACE1
), TRACE_EXEC_NAME3
, TRACE_TID1
, TRACE_PTID1
, TRACE_START_TIME1
, TRACE_END_TIME1
);
396 List
<ControlFlowEntry
> testVec
= getListOfEntries(trace1Entry2
, trace1Entry3
, trace1Entry1
);
397 List
<ControlFlowEntry
> expectedDown
= getListOfEntries(trace1Entry1
, trace1Entry2
, trace1Entry3
);
398 List
<ControlFlowEntry
> expectedUp
= getListOfEntries(trace1Entry1
, trace1Entry2
, trace1Entry3
);
399 runTest(ControlFlowColumnComparators
.BIRTH_TIME_COLUMN_COMPARATOR
, testVec
, expectedDown
, expectedUp
);
401 trace1Entry1
= new ControlFlowEntry(0, checkNotNull(TRACE1
), TRACE_EXEC_NAME1
, TRACE_TID1
, TRACE_PTID1
, TRACE_START_TIME1
, TRACE_END_TIME1
);
402 trace1Entry2
= new ControlFlowEntry(0, checkNotNull(TRACE1
), TRACE_EXEC_NAME1
, TRACE_TID2
, TRACE_PTID1
, TRACE_START_TIME1
, TRACE_END_TIME1
);
403 trace1Entry3
= new ControlFlowEntry(0, checkNotNull(TRACE1
), TRACE_EXEC_NAME1
, TRACE_TID2
, TRACE_PTID1
, TRACE_START_TIME1
, TRACE_END_TIME1
);
405 testVec
= getListOfEntries(trace1Entry2
, trace1Entry3
, trace1Entry1
);
406 expectedDown
= getListOfEntries(trace1Entry1
, trace1Entry2
, trace1Entry3
);
407 expectedUp
= getListOfEntries(trace1Entry1
, trace1Entry2
, trace1Entry3
);
408 runTest(ControlFlowColumnComparators
.BIRTH_TIME_COLUMN_COMPARATOR
, testVec
, expectedDown
, expectedUp
);
410 trace1Entry1
= new ControlFlowEntry(0, checkNotNull(TRACE1
), TRACE_EXEC_NAME1
, TRACE_TID1
, TRACE_PTID1
, TRACE_START_TIME1
, TRACE_END_TIME1
);
411 trace1Entry2
= new ControlFlowEntry(0, checkNotNull(TRACE1
), TRACE_EXEC_NAME1
, TRACE_TID1
, TRACE_PTID2
, TRACE_START_TIME1
, TRACE_END_TIME1
);
412 trace1Entry3
= new ControlFlowEntry(0, checkNotNull(TRACE1
), TRACE_EXEC_NAME1
, TRACE_TID1
, TRACE_PTID3
, TRACE_START_TIME1
, TRACE_END_TIME1
);
414 testVec
= getListOfEntries(trace1Entry2
, trace1Entry3
, trace1Entry1
);
415 expectedDown
= getListOfEntries(trace1Entry1
, trace1Entry2
, trace1Entry3
);
416 expectedUp
= getListOfEntries(trace1Entry1
, trace1Entry2
, trace1Entry3
);
417 runTest(ControlFlowColumnComparators
.BIRTH_TIME_COLUMN_COMPARATOR
, testVec
, expectedDown
, expectedUp
);
421 private static void runTest(ITimeGraphEntryComparator comparator
, List
<ControlFlowEntry
> testVec
, List
<ControlFlowEntry
> expectedDown
, List
<ControlFlowEntry
> expectedUp
) {
422 comparator
.setDirection(SWT
.DOWN
);
423 Collections
.sort(testVec
, comparator
);
424 assertEquals(expectedDown
, testVec
);
426 comparator
.setDirection(SWT
.UP
);
427 Comparator
<ITimeGraphEntry
> reverseComp
= comparator
;
428 reverseComp
= Collections
.reverseOrder(reverseComp
);
429 Collections
.sort(testVec
, reverseComp
);
430 assertEquals(expectedUp
, testVec
);
433 private static List
<ControlFlowEntry
> getListOfEntries(ControlFlowEntry
... entries
) {
434 List
<ControlFlowEntry
> retList
= new ArrayList
<>();
435 for (ControlFlowEntry entry
: entries
) {