2 * Copyright (c) 2017 Pantheon Technologies s.r.o. and others. All rights reserved.
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
8 package org.opendaylight.controller.cluster.access.client;
10 import static org.junit.Assert.assertEquals;
11 import static org.junit.Assert.assertTrue;
13 import com.google.common.testing.FakeTicker;
14 import java.util.concurrent.TimeUnit;
15 import org.junit.Before;
16 import org.junit.Test;
18 public class AveragingProgressTrackerTest {
19 private static final long CHECKER = TimeUnit.MILLISECONDS.toNanos(500);
20 private static final long TICKER_STEP = 100;
22 private FakeTicker ticker;
24 private AveragingProgressTracker averagingProgressTracker;
28 ticker = new FakeTicker();
29 ticker.setAutoIncrementStep(TICKER_STEP, TimeUnit.MILLISECONDS);
30 averagingProgressTracker = new AveragingProgressTracker(3);
34 public void estimateIsolatedDelayTest() {
35 long time = ticker.read();
36 assertEquals(0, averagingProgressTracker.estimateIsolatedDelay(time));
40 assertTrue(averagingProgressTracker.openTask(time) <= CHECKER);
41 assertEquals(0, averagingProgressTracker.estimateIsolatedDelay(time));
43 // more than half but less than limit
45 assertTrue(averagingProgressTracker.openTask(time) <= CHECKER);
46 assertTrue(averagingProgressTracker.estimateIsolatedDelay(time) < CHECKER);
50 assertTrue(averagingProgressTracker.openTask(time) >= CHECKER);
51 assertEquals(CHECKER, averagingProgressTracker.estimateIsolatedDelay(time));
53 // above limit, no higher isolated delays than CHECKER
55 assertTrue(averagingProgressTracker.openTask(time) >= CHECKER);
56 assertEquals(CHECKER, averagingProgressTracker.estimateIsolatedDelay(time));
58 // close tasks to get under the half
59 averagingProgressTracker.closeTask(ticker.read(), 0, 0, 0);
60 averagingProgressTracker.closeTask(ticker.read(), 0, 0, 0);
61 averagingProgressTracker.closeTask(ticker.read(), 0, 0, 0);
63 assertEquals(0, averagingProgressTracker.estimateIsolatedDelay(ticker.read()));