package test.net.buffer;
import com.firefly.net.BufferSizePredictor;
import com.firefly.net.buffer.AdaptiveBufferSizePredictor;
import com.firefly.net.buffer.FixedBufferSizePredictor;
import com.firefly.utils.io.BufferUtils;
import org.junit.Assert;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import static org.hamcrest.Matchers.*;
public class TestReceiveBufferSizePredictor {
private static Logger log = LoggerFactory.getLogger("firefly-system");
@Test
public void testAdaptive() {
BufferSizePredictor receiveBufferSizePredictor = new AdaptiveBufferSizePredictor();
receiveBufferSizePredictor.previousReceivedBufferSize(960);
receiveBufferSizePredictor.previousReceivedBufferSize(960);
receiveBufferSizePredictor.previousReceivedBufferSize(960);
log.debug("current buf size: " + receiveBufferSizePredictor.nextBufferSize());
Assert.assertThat(receiveBufferSizePredictor.nextBufferSize(), is(1024));
receiveBufferSizePredictor.previousReceivedBufferSize(1025);
receiveBufferSizePredictor.previousReceivedBufferSize(1300);
log.debug("current buf size: " + receiveBufferSizePredictor.nextBufferSize());
Assert.assertThat(receiveBufferSizePredictor.nextBufferSize(), greaterThan(1024));
receiveBufferSizePredictor.previousReceivedBufferSize(4000);
log.debug("current buf size: " + receiveBufferSizePredictor.nextBufferSize());
Assert.assertThat(receiveBufferSizePredictor.nextBufferSize(), greaterThan(2000));
receiveBufferSizePredictor.previousReceivedBufferSize(500);
Assert.assertThat(receiveBufferSizePredictor.nextBufferSize(), greaterThan(2000));
receiveBufferSizePredictor.previousReceivedBufferSize(1000);
Assert.assertThat(receiveBufferSizePredictor.nextBufferSize(), lessThan(2000));
}
@Test
public void testFix() {
BufferSizePredictor receiveBufferSizePredictor = new FixedBufferSizePredictor(1024 * 8);
receiveBufferSizePredictor.previousReceivedBufferSize(960);
Assert.assertThat(receiveBufferSizePredictor.nextBufferSize(), is(1024 * 8));
receiveBufferSizePredictor.previousReceivedBufferSize(40000);
Assert.assertThat(receiveBufferSizePredictor.nextBufferSize(), is(1024 * 8));
}
public static void main(String[] args) {
BufferSizePredictor receiveBufferSizePredictor = new AdaptiveBufferSizePredictor();
receiveBufferSizePredictor.previousReceivedBufferSize(960);
System.out.println(BufferUtils.normalizeBufferSize(receiveBufferSizePredictor.nextBufferSize()));
receiveBufferSizePredictor.previousReceivedBufferSize(1024);
System.out.println(BufferUtils.normalizeBufferSize(receiveBufferSizePredictor.nextBufferSize()));
receiveBufferSizePredictor.previousReceivedBufferSize(1024);
System.out.println(BufferUtils.normalizeBufferSize(receiveBufferSizePredictor.nextBufferSize()));
receiveBufferSizePredictor.previousReceivedBufferSize(1024);
System.out.println(BufferUtils.normalizeBufferSize(receiveBufferSizePredictor.nextBufferSize()));
receiveBufferSizePredictor.previousReceivedBufferSize(1024);
System.out.println(BufferUtils.normalizeBufferSize(receiveBufferSizePredictor.nextBufferSize()));
receiveBufferSizePredictor.previousReceivedBufferSize(2048);
System.out.println(BufferUtils.normalizeBufferSize(receiveBufferSizePredictor.nextBufferSize()));
receiveBufferSizePredictor.previousReceivedBufferSize(2048);
System.out.println(BufferUtils.normalizeBufferSize(receiveBufferSizePredictor.nextBufferSize()));
receiveBufferSizePredictor.previousReceivedBufferSize(2048);
System.out.println(BufferUtils.normalizeBufferSize(receiveBufferSizePredictor.nextBufferSize()));
receiveBufferSizePredictor.previousReceivedBufferSize(2048);
System.out.println(BufferUtils.normalizeBufferSize(receiveBufferSizePredictor.nextBufferSize()));
receiveBufferSizePredictor.previousReceivedBufferSize(2048);
System.out.println(BufferUtils.normalizeBufferSize(receiveBufferSizePredictor.nextBufferSize()));
receiveBufferSizePredictor.previousReceivedBufferSize(3072);
System.out.println(BufferUtils.normalizeBufferSize(receiveBufferSizePredictor.nextBufferSize()));
// receiveBufferSizePredictor.previousReceiveBufferSize(4000);
// System.out.println(receiveBufferSizePredictor.nextReceiveBufferSize());
// receiveBufferSizePredictor.previousReceiveBufferSize(960);
// System.out.println(receiveBufferSizePredictor.nextReceiveBufferSize());
// receiveBufferSizePredictor.previousReceiveBufferSize(50);
// receiveBufferSizePredictor.previousReceiveBufferSize(50);
// receiveBufferSizePredictor.previousReceiveBufferSize(50);
// System.out.println(receiveBufferSizePredictor.nextReceiveBufferSize());
}
}