ctf: Fix lost events timestamp in CTFPacketReader
[deliverable/tracecompass.git] / ctf / org.eclipse.tracecompass.tmf.ctf.core.tests / src / org / eclipse / tracecompass / tmf / ctf / core / tests / event / CtfTmfLostEventStatisticsTest.java
CommitLineData
e8f9ac01 1/*******************************************************************************
74d58b9b 2 * Copyright (c) 2012, 2015 Ericsson
e8f9ac01
AM
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 * Alexandre Montplaisir - Initial API and implementation
11 ******************************************************************************/
12
9722e5d7 13package org.eclipse.tracecompass.tmf.ctf.core.tests.event;
e8f9ac01
AM
14
15import static org.junit.Assert.assertEquals;
c1264bdc
AM
16import static org.junit.Assert.assertNotNull;
17import static org.junit.Assert.assertTrue;
e8f9ac01 18import static org.junit.Assert.fail;
e8f9ac01 19
e8f9ac01 20import java.util.Map;
d291a715 21import java.util.concurrent.TimeUnit;
e8f9ac01 22
c4d57ac1 23import org.eclipse.jdt.annotation.NonNull;
f357bcd4 24import org.eclipse.tracecompass.ctf.core.CTFStrings;
e894a508 25import org.eclipse.tracecompass.statesystem.core.ITmfStateSystem;
c4d57ac1 26import org.eclipse.tracecompass.testtraces.ctf.CtfTestTrace;
2bdf0193
AM
27import org.eclipse.tracecompass.tmf.core.exceptions.TmfAnalysisException;
28import org.eclipse.tracecompass.tmf.core.statistics.ITmfStatistics;
29import org.eclipse.tracecompass.tmf.core.statistics.TmfStateStatistics;
30import org.eclipse.tracecompass.tmf.core.statistics.TmfStatisticsEventTypesModule;
31import org.eclipse.tracecompass.tmf.core.statistics.TmfStatisticsTotalsModule;
32import org.eclipse.tracecompass.tmf.core.trace.ITmfTrace;
c4d57ac1 33import org.eclipse.tracecompass.tmf.ctf.core.tests.shared.CtfTmfTestTraceUtils;
c1264bdc
AM
34import org.junit.After;
35import org.junit.Before;
e8f9ac01
AM
36import org.junit.Rule;
37import org.junit.Test;
38import org.junit.rules.TestRule;
39import org.junit.rules.Timeout;
40
41/**
42 * Unit tests for handling of lost events by the statistics backends.
43 *
44 * @author Alexandre Montplaisir
45 */
91e7f946 46public class CtfTmfLostEventStatisticsTest {
e8f9ac01 47
c1264bdc 48 /** Time-out tests after 30 seconds */
e8f9ac01 49 @Rule
d291a715 50 public TestRule globalTimeout= new Timeout(30, TimeUnit.SECONDS);
e8f9ac01
AM
51
52 /**Test trace with lost events */
c4d57ac1 53 private static final @NonNull CtfTestTrace lostEventsTrace = CtfTestTrace.HELLO_LOST;
e8f9ac01 54
c1264bdc
AM
55 private ITmfTrace fTrace;
56
e8f9ac01 57 /** The statistics back-end object for the trace with lost events */
c1264bdc 58 private ITmfStatistics fStats;
e8f9ac01 59
bd64ee73
AM
60 /* The two analysis modules needed for fStats */
61 private TmfStatisticsTotalsModule fTotalsMod;
62 private TmfStatisticsEventTypesModule fEventTypesMod;
63
e8f9ac01
AM
64 // ------------------------------------------------------------------------
65 // Maintenance
66 // ------------------------------------------------------------------------
67
c1264bdc
AM
68 /**
69 * Test setup
70 */
71 @Before
72 public void setUp() {
c4d57ac1 73 ITmfTrace trace = CtfTmfTestTraceUtils.getTrace(lostEventsTrace);
ba27dd38 74 fTrace = trace;
e8f9ac01 75
c1264bdc 76 /* Prepare the two analysis-backed state systems */
bd64ee73
AM
77 fTotalsMod = new TmfStatisticsTotalsModule();
78 fEventTypesMod = new TmfStatisticsEventTypesModule();
c1264bdc 79 try {
ba27dd38
GB
80 fTotalsMod.setTrace(trace);
81 fEventTypesMod.setTrace(trace);
c1264bdc 82 } catch (TmfAnalysisException e) {
e8f9ac01
AM
83 fail();
84 }
c1264bdc 85
bd64ee73
AM
86 fTotalsMod.schedule();
87 fEventTypesMod.schedule();
88 assertTrue(fTotalsMod.waitForCompletion());
89 assertTrue(fEventTypesMod.waitForCompletion());
c1264bdc 90
bd64ee73
AM
91 ITmfStateSystem totalsSS = fTotalsMod.getStateSystem();
92 ITmfStateSystem eventTypesSS = fEventTypesMod.getStateSystem();
c1264bdc
AM
93 assertNotNull(totalsSS);
94 assertNotNull(eventTypesSS);
95
96 fStats = new TmfStateStatistics(totalsSS, eventTypesSS);
97 }
98
99 /**
100 * Test cleanup
101 */
102 @After
103 public void tearDown() {
bd64ee73 104 fStats.dispose();
03f0b0b1
AM
105 fTotalsMod.dispose();
106 fEventTypesMod.dispose();
c1264bdc 107 fTrace.dispose();
e8f9ac01
AM
108 }
109
110 // ------------------------------------------------------------------------
111 // Test methods
112 // ------------------------------------------------------------------------
113
114 /*
115 * Trace start = 1376592664828559410
116 * Trace end = 1376592665108210547
117 */
118
119 private static final long rangeStart = 1376592664900000000L;
120 private static final long rangeEnd = 1376592665000000000L;
121
122 /**
123 * Test the total number of "real" events. Make sure the lost events aren't
124 * counted in the total.
125 */
126 @Test
127 public void testLostEventsTotals() {
c1264bdc 128 long realEvents = fStats.getEventsTotal();
e8f9ac01
AM
129 assertEquals(32300, realEvents);
130 }
131
132 /**
133 * Test the number of real events in a given range. Lost events shouldn't be
134 * counted.
135 */
136 @Test
137 public void testLostEventsTotalInRange() {
c1264bdc 138 long realEventsInRange = fStats.getEventsInRange(rangeStart, rangeEnd);
e8f9ac01
AM
139 assertEquals(11209L, realEventsInRange);
140 }
141
142 /**
143 * Test the total number of lost events reported in the trace.
144 */
145 @Test
146 public void testLostEventsTypes() {
c1264bdc 147 Map<String, Long> events = fStats.getEventTypesTotal();
e8f9ac01
AM
148 Long lostEvents = events.get(CTFStrings.LOST_EVENT_NAME);
149 assertEquals(Long.valueOf(967700L), lostEvents);
150 }
151
152 /**
153 * Test the number of lost events reported in a given range.
154 */
155 @Test
156 public void testLostEventsTypesInRange() {
c1264bdc 157 Map<String, Long> eventsInRange = fStats.getEventTypesInRange(rangeStart, rangeEnd);
202956f1
AM
158 Long lostEventsInRange = eventsInRange.get(CTFStrings.LOST_EVENT_NAME);
159 assertNotNull(lostEventsInRange);
f450c256 160 assertEquals(365752L, lostEventsInRange.longValue());
e8f9ac01
AM
161 }
162}
This page took 0.088459 seconds and 5 git commands to generate.