package com.github.zhangkaitao;
import junit.framework.Assert;
import org.junit.Test;
import org.springframework.util.backoff.BackOff;
import org.springframework.util.backoff.BackOffExecution;
import org.springframework.util.backoff.ExponentialBackOff;
import org.springframework.util.backoff.FixedBackOff;
/**
* �˱�ʵ�֣�������������ʧ�ܺ��ӳٶ�����ԣ�
* User: zhangkaitao
* Date: 14-8-1
* Time: ����12:50
* Version: 1.0
*/
public class BackOffTest {
@Test
public void testFixedBackOff() {
long interval = 100;
long maxAttempts = 10;
BackOff backOff = new FixedBackOff(interval, maxAttempts);
BackOffExecution execution = backOff.start();
for(int i = 1; i <= 10; i++) {
//ÿ������ʱ����100����
System.out.println(execution.nextBackOff());
}
Assert.assertEquals(BackOffExecution.STOP, execution.nextBackOff());
}
@Test
public void testExponentialBackOff() {
long initialInterval = 100;//��ʼ���
long maxInterval = 5 * 1000L;//�����
long maxElapsedTime = 50 * 1000L;//���ʱ����
double multiplier = 1.5;//�������������´μ�����ϴεĶ��ٱ���
ExponentialBackOff backOff = new ExponentialBackOff(initialInterval, multiplier);
backOff.setMaxInterval(maxInterval);
//currentElapsedTime = interval1 + interval2 + ... + intervalN;
backOff.setMaxElapsedTime(maxElapsedTime);
BackOffExecution execution = backOff.start();
for(int i = 1; i <= 18; i++) {
System.out.println(execution.nextBackOff());
}
Assert.assertEquals(BackOffExecution.STOP, execution.nextBackOff());
}
}