package com.networknt.balance;
import com.networknt.registry.URL;
import com.networknt.registry.URLImpl;
import org.junit.Assert;
import org.junit.Test;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
/**
* Created by dan on 2016-12-29
*/
public class LocalFirstLoadBalanceTest {
LoadBalance loadBalance = new LocalFirstLoadBalance();
@Test
public void testSelect() throws Exception {
List<URL> urls = new ArrayList<>();
urls.add(new URLImpl("http", "127.0.0.10", 8081, "v1", new HashMap<String, String>()));
urls.add(new URLImpl("http", "127.0.0.1", 8081, "v1", new HashMap<String, String>()));
urls.add(new URLImpl("http", "127.0.0.11", 8082, "v1", new HashMap<String, String>()));
urls.add(new URLImpl("http", "127.0.0.12", 8083, "v1", new HashMap<String, String>()));
urls.add(new URLImpl("http", "127.0.0.115", 8084, "v1", new HashMap<String, String>()));
URL url = loadBalance.select(urls, null);
Assert.assertEquals(url, URLImpl.valueOf("http://127.0.0.1:8081/v1"));
}
@Test
public void testSelectFirstThenRoundRobin() throws Exception{
List<URL> urls = new ArrayList<>();
urls.add(new URLImpl("http", "127.0.0.10", 8081, "v1", new HashMap<String, String>()));
urls.add(new URLImpl("http", "127.0.0.10", 8082, "v1", new HashMap<String, String>()));
urls.add(new URLImpl("http", "127.0.0.10", 8083, "v1", new HashMap<String, String>()));
urls.add(new URLImpl("http", "127.0.0.10", 8084, "v1", new HashMap<String, String>()));
// no local host URL available, go round-robin
URL url = loadBalance.select(urls, null);
Assert.assertEquals(url, URLImpl.valueOf("http://127.0.0.10:8082/v1"));
}
@Test
public void testSelectWithEmptyList() throws Exception {
List<URL> urls = new ArrayList<>();
URL url = loadBalance.select(urls, null);
Assert.assertNull(url);
}
}