04c7002c83a5c698e7b00a5f9a5089fc64f1a647
[yangtools.git] / common / util / src / test / java / org / opendaylight / yangtools / util / DurationStatisticsTrackerTest.java
1 /*
2  * Copyright (c) 2014 Brocade Communications Systems, Inc. and others.  All rights reserved.
3  *
4  * This program and the accompanying materials are made available under the
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6  * and is available at http://www.eclipse.org/legal/epl-v10.html
7  */
8
9 package org.opendaylight.yangtools.util;
10
11 import static org.junit.Assert.assertEquals;
12 import org.junit.Test;
13
14 /**
15  * Unit tests for DurationStatsTracker.
16  *
17  * @author Thomas Pantelis
18  */
19 public class DurationStatisticsTrackerTest {
20
21     @Test
22     public void test() {
23
24         DurationStatisticsTracker tracker = DurationStatisticsTracker.createConcurrent();
25
26         tracker.addDuration(10000);
27         assertEquals("getTotalDurations", 1, tracker.getTotalDurations());
28         assertEquals("getAverageDuration", 10000.0, tracker.getAverageDuration(), 0.1);
29         assertEquals("getLongestDuration", 10000, tracker.getLongestDuration());
30         assertEquals("getShortestDuration", 10000, tracker.getShortestDuration());
31
32         tracker.addDuration(30000);
33         assertEquals("getTotalDurations", 2, tracker.getTotalDurations());
34         assertEquals("getAverageDuration", 20000.0, tracker.getAverageDuration(), 0.1);
35         assertEquals("getLongestDuration", 30000, tracker.getLongestDuration());
36         assertEquals("getShortestDuration", 10000, tracker.getShortestDuration());
37
38         verifyDisplayableString("getDisplayableAverageDuration",
39                 tracker.getDisplayableAverageDuration(), "20.0");
40         verifyDisplayableString("getDisplayableLongestDuration",
41                 tracker.getDisplayableLongestDuration(), "30.0");
42         verifyDisplayableString("getDisplayableShortestDuration",
43                 tracker.getDisplayableShortestDuration(), "10.0");
44
45         tracker.addDuration(10000);
46         assertEquals("getTotalDurations", 3, tracker.getTotalDurations());
47         assertEquals("getAverageDuration", 16666.0, tracker.getAverageDuration(), 1.0);
48         assertEquals("getLongestDuration", 30000, tracker.getLongestDuration());
49         assertEquals("getShortestDuration", 10000, tracker.getShortestDuration());
50
51         tracker.addDuration(5000);
52         assertEquals("getTotalDurations", 4, tracker.getTotalDurations());
53         assertEquals("getAverageDuration", 13750.0, tracker.getAverageDuration(), 1.0);
54         assertEquals("getLongestDuration", 30000, tracker.getLongestDuration());
55         assertEquals("getShortestDuration", 5000, tracker.getShortestDuration());
56
57         tracker.reset();
58         assertEquals("getTotalDurations", 0, tracker.getTotalDurations());
59         assertEquals("getAverageDuration", 0.0, tracker.getAverageDuration(), 0.1);
60         assertEquals("getLongestDuration", 0, tracker.getLongestDuration());
61         assertEquals("getShortestDuration", 0, tracker.getShortestDuration());
62
63         tracker.addDuration(10000);
64         assertEquals("getTotalDurations", 1, tracker.getTotalDurations());
65         assertEquals("getAverageDuration", 10000.0, tracker.getAverageDuration(), 0.1);
66         assertEquals("getLongestDuration", 10000, tracker.getLongestDuration());
67         assertEquals("getShortestDuration", 10000, tracker.getShortestDuration());
68     }
69
70     private static void verifyDisplayableString(final String name, final String actual, final String expPrefix) {
71         assertEquals(name + " starts with " + expPrefix + ". Actual: " + actual,
72                 true, actual.startsWith(expPrefix));
73     }
74 }