--- /dev/null
+/*
+ * Copyright (c) 2017 Pantheon Technologies s.r.o. and others. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+package org.opendaylight.controller.cluster.access.client;
+
+import static org.junit.Assert.assertEquals;
+
+import org.junit.Before;
+import org.junit.Test;
+
+public class AveragingProgressTrackerTest {
+
+ private static final long NOW = 1000000000;
+ private static final long CHECKER = 500000000;
+ private ProgressTracker averagingProgressTracker;
+
+ @Before
+ public void setUp() {
+ averagingProgressTracker = new AveragingProgressTracker(4);
+ long delay = averagingProgressTracker.estimateIsolatedDelay(NOW);
+ assertEquals(0, delay);
+ for (int i = 0; i < 2; i++) {
+ delay = averagingProgressTracker.openTask(NOW);
+ assertEquals(0, delay);
+ }
+ }
+
+ @Test
+ public void estimateIsolatedDelayTest() {
+ long delay = averagingProgressTracker.openTask(NOW);
+ assertEquals(CHECKER, delay);
+
+ delay = averagingProgressTracker.openTask(NOW);
+ assertEquals(NOW, delay);
+
+ delay = averagingProgressTracker.estimateIsolatedDelay(NOW);
+ assertEquals(CHECKER, delay);
+
+ averagingProgressTracker.closeTask(3000000000L, 0, 0, 0);
+
+ delay = averagingProgressTracker.estimateIsolatedDelay(NOW);
+ assertEquals(0, delay);
+ }
+
+ @Test
+ public void copyObjectTest() {
+ final ProgressTracker copyAverageProgressTracker =
+ new AveragingProgressTracker((AveragingProgressTracker) averagingProgressTracker);
+ assertEquals(copyAverageProgressTracker.openTask(NOW), averagingProgressTracker.openTask(NOW));
+ assertEquals(averagingProgressTracker.tasksClosed(), copyAverageProgressTracker.tasksClosed());
+ assertEquals(averagingProgressTracker.tasksEncountered(), copyAverageProgressTracker.tasksEncountered());
+ assertEquals(averagingProgressTracker.tasksOpen(), copyAverageProgressTracker.tasksOpen());
+ }
+
+}
\ No newline at end of file