/*
*
* Copyright 2013 Netflix, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
package com.netflix.loadbalancer;
import static org.junit.Assert.*;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import org.apache.commons.configuration.Configuration;
import org.junit.BeforeClass;
import org.junit.Test;
import com.netflix.client.ClientFactory;
import com.netflix.client.config.IClientConfig;
import com.netflix.config.ConfigurationManager;
import com.netflix.loadbalancer.DynamicServerListLoadBalancer;
import com.netflix.loadbalancer.Server;
public class ServerListLoabBalancerTest {
static Server[] servers = {new Server("abc", 80), new Server("xyz", 90), new Server("www.netflix.com", 80)};
static List<Server> serverList = Arrays.asList(servers);
public static class FixedServerList extends AbstractServerList<Server> {
@Override
public void initWithNiwsConfig(IClientConfig clientConfig) {
}
@Override
public List<Server> getInitialListOfServers() {
return serverList;
}
@Override
public List<Server> getUpdatedListOfServers() {
return serverList;
}
}
static DynamicServerListLoadBalancer<Server> lb;
@BeforeClass
public static void init() {
Configuration config = ConfigurationManager.getConfigInstance();
config.setProperty("ServerListLoabBalancerTest.ribbon.NFLoadBalancerClassName",
com.netflix.loadbalancer.DynamicServerListLoadBalancer.class.getName());
config.setProperty("ServerListLoabBalancerTest.ribbon.NIWSServerListClassName", FixedServerList.class.getName());
lb = (DynamicServerListLoadBalancer<Server>) ClientFactory.getNamedLoadBalancer("ServerListLoabBalancerTest");
}
@Test
public void testChooseServer() {
assertNotNull(lb);
Set<Server> result = new HashSet<Server>();
for (int i = 0; i < 100; i++) {
Server s = lb.chooseServer(null);
result.add(s);
}
Set<Server> expected = new HashSet<Server>();
expected.addAll(serverList);
assertEquals(expected, result);
}
}