@Test
 public void maxAttemptsReached() {
   FixedBackOff backOff = new FixedBackOff(200L, 2);
   BackOffExecution execution = backOff.start();
   assertEquals(200l, execution.nextBackOff());
   assertEquals(200l, execution.nextBackOff());
   assertEquals(BackOffExecution.STOP, execution.nextBackOff());
 }
 @Test
 public void defaultInstance() {
   FixedBackOff backOff = new FixedBackOff();
   BackOffExecution execution = backOff.start();
   for (int i = 0; i < 100; i++) {
     assertEquals(FixedBackOff.DEFAULT_INTERVAL, execution.nextBackOff());
   }
 }
  @Test
  public void liveUpdate() {
    FixedBackOff backOff = new FixedBackOff(100L, 1);
    BackOffExecution execution = backOff.start();
    assertEquals(100l, execution.nextBackOff());

    backOff.setInterval(200l);
    backOff.setMaxAttempts(2);

    assertEquals(200l, execution.nextBackOff());
    assertEquals(BackOffExecution.STOP, execution.nextBackOff());
  }
  @Test
  public void startReturnDifferentInstances() {
    FixedBackOff backOff = new FixedBackOff(100L, 1);
    BackOffExecution execution = backOff.start();
    BackOffExecution execution2 = backOff.start();

    assertEquals(100l, execution.nextBackOff());
    assertEquals(100l, execution2.nextBackOff());
    assertEquals(BackOffExecution.STOP, execution.nextBackOff());
    assertEquals(BackOffExecution.STOP, execution2.nextBackOff());
  }
 @Test
 public void toStringContent() {
   FixedBackOff backOff = new FixedBackOff(200L, 10);
   BackOffExecution execution = backOff.start();
   assertEquals(
       "FixedBackOff{interval=200, currentAttempts=0, maxAttempts=10}", execution.toString());
   execution.nextBackOff();
   assertEquals(
       "FixedBackOff{interval=200, currentAttempts=1, maxAttempts=10}", execution.toString());
   execution.nextBackOff();
   assertEquals(
       "FixedBackOff{interval=200, currentAttempts=2, maxAttempts=10}", execution.toString());
 }
 @Test
 public void noAttemptAtAll() {
   FixedBackOff backOff = new FixedBackOff(100L, 0L);
   BackOffExecution execution = backOff.start();
   assertEquals(BackOffExecution.STOP, execution.nextBackOff());
 }