1 /*******************************************************************************
2 * Copyright (c) 2012, 2015 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
10 * Alexandre Montplaisir - Initial API and implementation
11 ******************************************************************************/
13 package org
.eclipse
.tracecompass
.tmf
.ctf
.core
.tests
.event
;
15 import static org
.junit
.Assert
.assertEquals
;
16 import static org
.junit
.Assert
.assertNotNull
;
17 import static org
.junit
.Assert
.assertTrue
;
18 import static org
.junit
.Assert
.fail
;
21 import java
.util
.concurrent
.TimeUnit
;
23 import org
.eclipse
.jdt
.annotation
.NonNull
;
24 import org
.eclipse
.tracecompass
.ctf
.core
.CTFStrings
;
25 import org
.eclipse
.tracecompass
.statesystem
.core
.ITmfStateSystem
;
26 import org
.eclipse
.tracecompass
.testtraces
.ctf
.CtfTestTrace
;
27 import org
.eclipse
.tracecompass
.tmf
.core
.exceptions
.TmfAnalysisException
;
28 import org
.eclipse
.tracecompass
.tmf
.core
.statistics
.ITmfStatistics
;
29 import org
.eclipse
.tracecompass
.tmf
.core
.statistics
.TmfStateStatistics
;
30 import org
.eclipse
.tracecompass
.tmf
.core
.statistics
.TmfStatisticsEventTypesModule
;
31 import org
.eclipse
.tracecompass
.tmf
.core
.statistics
.TmfStatisticsTotalsModule
;
32 import org
.eclipse
.tracecompass
.tmf
.core
.trace
.ITmfTrace
;
33 import org
.eclipse
.tracecompass
.tmf
.ctf
.core
.tests
.shared
.CtfTmfTestTraceUtils
;
34 import org
.junit
.After
;
35 import org
.junit
.Before
;
36 import org
.junit
.Rule
;
37 import org
.junit
.Test
;
38 import org
.junit
.rules
.TestRule
;
39 import org
.junit
.rules
.Timeout
;
42 * Unit tests for handling of lost events by the statistics backends.
44 * @author Alexandre Montplaisir
46 public class CtfTmfLostEventStatisticsTest
{
48 /** Time-out tests after 30 seconds */
50 public TestRule globalTimeout
= new Timeout(30, TimeUnit
.SECONDS
);
52 /**Test trace with lost events */
53 private static final @NonNull CtfTestTrace lostEventsTrace
= CtfTestTrace
.HELLO_LOST
;
55 private ITmfTrace fTrace
;
57 /** The statistics back-end object for the trace with lost events */
58 private ITmfStatistics fStats
;
60 /* The two analysis modules needed for fStats */
61 private TmfStatisticsTotalsModule fTotalsMod
;
62 private TmfStatisticsEventTypesModule fEventTypesMod
;
64 // ------------------------------------------------------------------------
66 // ------------------------------------------------------------------------
73 ITmfTrace trace
= CtfTmfTestTraceUtils
.getTrace(lostEventsTrace
);
76 /* Prepare the two analysis-backed state systems */
77 fTotalsMod
= new TmfStatisticsTotalsModule();
78 fEventTypesMod
= new TmfStatisticsEventTypesModule();
80 fTotalsMod
.setTrace(trace
);
81 fEventTypesMod
.setTrace(trace
);
82 } catch (TmfAnalysisException e
) {
86 fTotalsMod
.schedule();
87 fEventTypesMod
.schedule();
88 assertTrue(fTotalsMod
.waitForCompletion());
89 assertTrue(fEventTypesMod
.waitForCompletion());
91 ITmfStateSystem totalsSS
= fTotalsMod
.getStateSystem();
92 ITmfStateSystem eventTypesSS
= fEventTypesMod
.getStateSystem();
93 assertNotNull(totalsSS
);
94 assertNotNull(eventTypesSS
);
96 fStats
= new TmfStateStatistics(totalsSS
, eventTypesSS
);
103 public void tearDown() {
105 fTotalsMod
.dispose();
106 fEventTypesMod
.dispose();
110 // ------------------------------------------------------------------------
112 // ------------------------------------------------------------------------
115 * Trace start = 1376592664828559410
116 * Trace end = 1376592665108210547
119 private static final long rangeStart
= 1376592664900000000L;
120 private static final long rangeEnd
= 1376592665000000000L;
123 * Test the total number of "real" events. Make sure the lost events aren't
124 * counted in the total.
127 public void testLostEventsTotals() {
128 long realEvents
= fStats
.getEventsTotal();
129 assertEquals(32300, realEvents
);
133 * Test the number of real events in a given range. Lost events shouldn't be
137 public void testLostEventsTotalInRange() {
138 long realEventsInRange
= fStats
.getEventsInRange(rangeStart
, rangeEnd
);
139 assertEquals(11209L, realEventsInRange
);
143 * Test the total number of lost events reported in the trace.
146 public void testLostEventsTypes() {
147 Map
<String
, Long
> events
= fStats
.getEventTypesTotal();
148 Long lostEvents
= events
.get(CTFStrings
.LOST_EVENT_NAME
);
149 assertEquals(Long
.valueOf(967700L), lostEvents
);
153 * Test the number of lost events reported in a given range.
156 public void testLostEventsTypesInRange() {
157 Map
<String
, Long
> eventsInRange
= fStats
.getEventTypesInRange(rangeStart
, rangeEnd
);
158 Long lostEventsInRange
= eventsInRange
.get(CTFStrings
.LOST_EVENT_NAME
);
159 assertNotNull(lostEventsInRange
);
160 assertEquals(365752L, lostEventsInRange
.longValue());