package io.craft.atom.nio;
import io.craft.atom.nio.NioAdaptiveBufferSizePredictor;
import io.craft.atom.nio.spi.NioBufferSizePredictor;
import io.craft.atom.test.CaseCounter;
import junit.framework.Assert;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* @author mindwind
* @version 1.0, Jan 25, 2013
*/
public class TestNioBufferSizePredictor {
private static final Logger LOG = LoggerFactory.getLogger(TestNioBufferSizePredictor.class);
@Test
public void testDefault() {
NioBufferSizePredictor predictor = new NioAdaptiveBufferSizePredictor();
int next = predictor.next();
Assert.assertEquals(1024, next);
LOG.debug("[CRAFT-ATOM-NIO] Test predictor default, next={}", next);
System.out.println(String.format("[CRAFT-ATOM-NIO] (^_^) <%s> Case -> test predictor default. ", CaseCounter.incr(1)));
}
@Test
public void testUp() {
int next = 0;
NioBufferSizePredictor predictor = new NioAdaptiveBufferSizePredictor();
for (int i = 32; i < 4000; i++) {
predictor.previous(i);
next = predictor.next();
LOG.debug("[CRAFT-ATOM-NIO] Ttest predictor up, previous={}, next={}", i, next);
}
Assert.assertEquals(4096, next);
System.out.println(String.format("[CRAFT-ATOM-NIO] (^_^) <%s> Case -> test predictor up. ", CaseCounter.incr(1)));
}
@Test
public void testDown() {
NioBufferSizePredictor predictor = new NioAdaptiveBufferSizePredictor();
for (int i = 4000; i >= 80; i--) {
predictor.previous(i);
LOG.debug("[CRAFT-ATOM-NIO] Test predictor down, previous={}, next={}", i, predictor.next());
}
Assert.assertEquals(96, predictor.next());
System.out.println(String.format("[CRAFT-ATOM-NIO] (^_^) <%s> Case -> test predictor down. ", CaseCounter.incr(1)));
}
@Test
public void testRegular() {
NioBufferSizePredictor predictor = new NioAdaptiveBufferSizePredictor(64, 2048, 65536);
int next = 0;
predictor.previous(1024);
next = predictor.next();
Assert.assertEquals(2048, next);
LOG.debug("[CRAFT-ATOM-NIO] Test predictor regular, previous={}, next={}", 1024, next);
predictor.previous(2048);
next = predictor.next();
Assert.assertEquals(3072, next);
LOG.debug("[CRAFT-ATOM-NIO] Test predictor regular, previous={}, next={}", 2048, next);
predictor.previous(2048);
next = predictor.next();
Assert.assertEquals(3072, next);
LOG.debug("[CRAFT-ATOM-NIO] Test predictor regular, previous={}, next={}", 2048, next);
for (int i = 0; i < 40; i++) {
predictor.previous(478);
}
next = predictor.next();
Assert.assertEquals(512, next);
LOG.debug("[CRAFT-ATOM-NIO] Test predictor regular, previous={} next={}", 478, next);
System.out.println(String.format("[CRAFT-ATOM-NIO] (^_^) <%s> Case -> test predictor regular. ", CaseCounter.incr(4)));
}
}