package com.bazaarvoice.ostrich.pool;
import org.junit.Test;
import java.util.concurrent.TimeUnit;
import static org.junit.Assert.assertEquals;
public class ServiceCachingPolicyBuilderTest {
@Test
public void testCacheExhaustionActionSet() {
ServiceCachingPolicyBuilder builder = new ServiceCachingPolicyBuilder();
builder.withCacheExhaustionAction(ServiceCachingPolicy.ExhaustionAction.GROW);
assertEquals(ServiceCachingPolicy.ExhaustionAction.GROW, builder.build().getCacheExhaustionAction());
}
@Test
public void testUseMultiThreadedClientPolicy() {
ServiceCachingPolicy cachingPolicy = ServiceCachingPolicyBuilder.getMultiThreadedClientPolicy();
assertEquals(true, cachingPolicy.useMultiThreadedClientPolicy());
}
@Test
public void testDefaultMultiThreadedClientPolicy() {
ServiceCachingPolicyBuilder builder = new ServiceCachingPolicyBuilder();
assertEquals(false, builder.build().useMultiThreadedClientPolicy());
}
@Test
public void testMaxNumServiceInstancesSet() {
ServiceCachingPolicyBuilder builder = new ServiceCachingPolicyBuilder();
builder.withMaxNumServiceInstances(1);
assertEquals(1, builder.build().getMaxNumServiceInstances());
}
@Test
public void testMaxNumServiceInstancesPerEndPointSet() {
ServiceCachingPolicyBuilder builder = new ServiceCachingPolicyBuilder();
builder.withMaxNumServiceInstancesPerEndPoint(1);
assertEquals(1, builder.build().getMaxNumServiceInstancesPerEndPoint());
}
@Test
public void testMinIdleTimeBeforeEvictionSet() {
ServiceCachingPolicyBuilder builder = new ServiceCachingPolicyBuilder();
builder.withMaxServiceInstanceIdleTime(10, TimeUnit.SECONDS);
assertEquals(10, builder.build().getMaxServiceInstanceIdleTime(TimeUnit.SECONDS));
}
@Test(expected = NullPointerException.class)
public void testNullExhaustionAction() {
ServiceCachingPolicyBuilder builder = new ServiceCachingPolicyBuilder();
builder.withCacheExhaustionAction(null);
}
@Test(expected = IllegalStateException.class)
public void testInvalidMaxNumServiceInstances() {
ServiceCachingPolicyBuilder builder = new ServiceCachingPolicyBuilder();
builder.withMaxNumServiceInstances(-1);
}
@Test(expected = IllegalStateException.class)
public void testInvalidMaxNumServiceInstancesPerEndPoint() {
ServiceCachingPolicyBuilder builder = new ServiceCachingPolicyBuilder();
builder.withMaxNumServiceInstancesPerEndPoint(-1);
}
@Test(expected = IllegalStateException.class)
public void testInvalidMaxServiceInstanceIdleTime() {
ServiceCachingPolicyBuilder builder = new ServiceCachingPolicyBuilder();
builder.withMaxServiceInstanceIdleTime(0, TimeUnit.MILLISECONDS);
}
@Test (expected = UnsupportedOperationException.class)
public void testUseMultiThreadedClientPolicyWithMaxNumServiceInstancesPerEndPoint() {
ServiceCachingPolicy cachingPolicy = ServiceCachingPolicyBuilder.getMultiThreadedClientPolicy();
assertEquals(1, cachingPolicy.getMaxNumServiceInstancesPerEndPoint());
}
@Test (expected = UnsupportedOperationException.class)
public void testUseMultiThreadedClientPolicyWithMaxServiceInstanceIdleTime() {
ServiceCachingPolicy cachingPolicy = ServiceCachingPolicyBuilder.getMultiThreadedClientPolicy();
assertEquals(1, cachingPolicy.getMaxServiceInstanceIdleTime(TimeUnit.SECONDS));
}
@Test (expected = UnsupportedOperationException.class)
public void testUseMultiThreadedClientPolicyWithMaxNumServiceInstances() {
ServiceCachingPolicy cachingPolicy = ServiceCachingPolicyBuilder.getMultiThreadedClientPolicy();
assertEquals(1, cachingPolicy.getMaxNumServiceInstances());
}
@Test (expected = UnsupportedOperationException.class)
public void testUseMultiThreadedClientPolicyWithCacheExhaustionAction() {
ServiceCachingPolicy cachingPolicy = ServiceCachingPolicyBuilder.getMultiThreadedClientPolicy();
assertEquals(ServiceCachingPolicy.ExhaustionAction.GROW, cachingPolicy.getCacheExhaustionAction());
}
}