package com.cloudera.util;
import org.junit.Assert;
import org.junit.Test;
import com.cloudera.flume.util.MockClock;
MockClock mock = new MockClock(0);
@Test
public void testBackoff()
throws InterruptedException {
Clock.setClock(mock);
System.out.println(mock);
ExponentialBackoff bo = new ExponentialBackoff(100, 5);
Assert.assertTrue(bo.isRetryOk());
Assert.assertFalse(bo.isFailed());
mock.forward(1);
System.out.println(mock);
Assert.assertTrue(bo.isRetryOk());
Assert.assertFalse(bo.isFailed());
bo.backoff();
mock.forward(99);
System.out.println(mock);
Assert.assertFalse(bo.isFailed());
Assert.assertFalse(bo.isRetryOk());
mock.forward(1);
System.out.println(mock);
Assert.assertTrue(bo.isRetryOk());
Assert.assertFalse(bo.isFailed());
bo.reset();
bo.backoff();
bo.backoff();
bo.backoff();
bo.backoff();
bo.backoff();
mock.forward(1599);
System.out.println(mock);
Assert.assertFalse(bo.isRetryOk());
Assert.assertTrue(bo.isFailed());
mock.forward(1);
System.out.println(mock);
Assert.assertFalse(bo.isRetryOk());
Assert.assertTrue(bo.isFailed());
}
}