7fef4a303fd6836f12f44673b97c5377a4841e18
[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
13 import org.junit.Test;
14
15 /**
16  * Unit tests for DurationStatsTracker.
17  *
18  * @author Thomas Pantelis
19  */
20 public class DurationStatisticsTrackerTest {
21
22     @Test
23     public void test() {
24
25         DurationStatisticsTracker tracker = DurationStatisticsTracker.createConcurrent();
26
27         tracker.addDuration(10000);
28         assertEquals("getTotalDurations", 1, tracker.getTotalDurations());
29         assertEquals("getAverageDuration", 10000.0, tracker.getAverageDuration(), 0.1);
30         assertEquals("getLongestDuration", 10000, tracker.getLongestDuration());
31         assertEquals("getShortestDuration", 10000, tracker.getShortestDuration());
32
33         tracker.addDuration(30000);
34         assertEquals("getTotalDurations", 2, tracker.getTotalDurations());
35         assertEquals("getAverageDuration", 20000.0, tracker.getAverageDuration(), 0.1);
36         assertEquals("getLongestDuration", 30000, tracker.getLongestDuration());
37         assertEquals("getShortestDuration", 10000, tracker.getShortestDuration());
38
39         verifyDisplayableString("getDisplayableAverageDuration",
40                 tracker.getDisplayableAverageDuration(), "20.0");
41         verifyDisplayableString("getDisplayableLongestDuration",
42                 tracker.getDisplayableLongestDuration(), "30.0");
43         verifyDisplayableString("getDisplayableShortestDuration",
44                 tracker.getDisplayableShortestDuration(), "10.0");
45
46         tracker.addDuration(10000);
47         assertEquals("getTotalDurations", 3, tracker.getTotalDurations());
48         assertEquals("getAverageDuration", 16666.0, tracker.getAverageDuration(), 1.0);
49         assertEquals("getLongestDuration", 30000, tracker.getLongestDuration());
50         assertEquals("getShortestDuration", 10000, tracker.getShortestDuration());
51
52         tracker.addDuration(5000);
53         assertEquals("getTotalDurations", 4, tracker.getTotalDurations());
54         assertEquals("getAverageDuration", 13750.0, tracker.getAverageDuration(), 1.0);
55         assertEquals("getLongestDuration", 30000, tracker.getLongestDuration());
56         assertEquals("getShortestDuration", 5000, tracker.getShortestDuration());
57
58         tracker.reset();
59         assertEquals("getTotalDurations", 0, tracker.getTotalDurations());
60         assertEquals("getAverageDuration", 0.0, tracker.getAverageDuration(), 0.1);
61         assertEquals("getLongestDuration", 0, tracker.getLongestDuration());
62         assertEquals("getShortestDuration", 0, tracker.getShortestDuration());
63
64         tracker.addDuration(10000);
65         assertEquals("getTotalDurations", 1, tracker.getTotalDurations());
66         assertEquals("getAverageDuration", 10000.0, tracker.getAverageDuration(), 0.1);
67         assertEquals("getLongestDuration", 10000, tracker.getLongestDuration());
68         assertEquals("getShortestDuration", 10000, tracker.getShortestDuration());
69     }
70
71     private static void verifyDisplayableString(final String name, final String actual, final String expPrefix) {
72         assertEquals(name + " starts with " + expPrefix + ". Actual: " + actual,
73                 true, actual.startsWith(expPrefix));
74     }
75 }