package com.rayo.storage.lb;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;
import org.junit.Test;
import com.rayo.server.storage.BaseDatastoreTest;
import com.rayo.server.storage.model.Application;
import com.rayo.storage.util.JIDImpl;
public abstract class RoundRobinLoadBalancerTestBase extends LoadBalancingTest {
@Override
GatewayLoadBalancingStrategy getLoadBalancer() {
return new RoundRobinLoadBalancer();
}
@Test
public void testCleaningTask() throws Exception {
// We set a short cleaning interval to complete the test much quicker
loadBalancer = new RoundRobinLoadBalancer(500);
((GatewayStorageServiceSupport)loadBalancer).setStorageService(storageService);
Application application = BaseDatastoreTest.buildApplication("voxeo", "client@jabber.org", "staging");
storageService.registerApplication(application);
storageService.registerClient(new JIDImpl("client@jabber.org/a"));
Application application2 = BaseDatastoreTest.buildApplication("tropo", "mpermar@tropo.com", "staging");
storageService.registerApplication(application2);
storageService.registerClient(new JIDImpl("mpermar@tropo.com/a"));
loadBalancer.pickClientResource("client@jabber.org");
loadBalancer.pickClientResource("mpermar@tropo.com");
assertEquals(((RoundRobinLoadBalancer)loadBalancer).getLastClient("client@jabber.org"),"a");
assertEquals(((RoundRobinLoadBalancer)loadBalancer).getLastClient("mpermar@tropo.com"),"a");
storageService.unregisterClient(new JIDImpl("client@jabber.org/a"));
Thread.sleep(1500);
assertNull(((RoundRobinLoadBalancer)loadBalancer).getLastClient("client@jabber.org"));
assertEquals(((RoundRobinLoadBalancer)loadBalancer).getLastClient("mpermar@tropo.com"),"a");
}
}