package mireka.transmission.immediate;
import static org.junit.Assert.assertTrue;
import java.util.Arrays;
import java.util.List;
import mireka.smtp.client.BackendServer;
import org.junit.Test;
public class UpstreamTest {
private BackendServer server66 = new BackendServer();
private BackendServer server33 = new BackendServer();
private BackendServer backupServer66 = new BackendServer();
private BackendServer backupServer33 = new BackendServer();
public UpstreamTest() {
server66.setWeight(66);
server66.setHost("server66");
server33.setWeight(33);
server33.setHost("server33");
backupServer66.setWeight(66);
backupServer66.setBackup(true);
backupServer66.setHost("backup66");
backupServer33.setWeight(33);
backupServer33.setBackup(true);
backupServer33.setHost("backup33");
}
@Test
public void testOrderedServerList() {
testList(server66, server33, backupServer66, backupServer33);
testList(backupServer33, server33, backupServer66, server66);
}
private void testList(BackendServer... server) {
Upstream upstream = new Upstream();
upstream.setServers(Arrays.asList(server));
int[] counters = new int[4];
for (int i = 0; i < 1000; i++) {
List<BackendServer> list = upstream.orderedServerList();
System.out.println(list);
if (list.get(0) == server66)
counters[0]++;
if (list.get(1) == server33)
counters[1]++;
if (list.get(2) == backupServer66)
counters[2]++;
if (list.get(3) == backupServer33)
counters[3]++;
assertTrue(list.get(2) == backupServer66
|| list.get(3) == backupServer66);
assertTrue(list.get(2) == backupServer33
|| list.get(3) == backupServer33);
}
assertTrue(counters[0] > 600);
assertTrue(counters[1] > 600);
assertTrue(counters[2] > 600);
assertTrue(counters[3] > 600);
System.out.println(Arrays.toString(counters));
}
}