3 changed files with 176 additions and 2 deletions
@ -0,0 +1,89 @@
@@ -0,0 +1,89 @@
|
||||
/* |
||||
* Copyright 2013-2015 the original author or authors. |
||||
* |
||||
* 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 org.springframework.cloud.netflix.ribbon.test; |
||||
|
||||
import static org.hamcrest.Matchers.instanceOf; |
||||
import static org.hamcrest.Matchers.is; |
||||
import static org.junit.Assert.assertThat; |
||||
|
||||
import org.junit.Test; |
||||
import org.junit.runner.RunWith; |
||||
import org.springframework.beans.factory.annotation.Autowired; |
||||
import org.springframework.boot.autoconfigure.EnableAutoConfiguration; |
||||
import org.springframework.boot.test.IntegrationTest; |
||||
import org.springframework.boot.test.SpringApplicationConfiguration; |
||||
import org.springframework.cloud.netflix.ribbon.SpringClientFactory; |
||||
import org.springframework.cloud.netflix.ribbon.test.RibbonClientDefaultConfigurationTestsConfig.BazServiceList; |
||||
import org.springframework.context.annotation.Configuration; |
||||
import org.springframework.test.annotation.DirtiesContext; |
||||
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; |
||||
|
||||
import com.netflix.loadbalancer.BestAvailableRule; |
||||
import com.netflix.loadbalancer.PingUrl; |
||||
import com.netflix.loadbalancer.Server; |
||||
import com.netflix.loadbalancer.ServerListSubsetFilter; |
||||
import com.netflix.loadbalancer.ZoneAwareLoadBalancer; |
||||
|
||||
/** |
||||
* @author Dave Syer |
||||
* @author Spencer Gibb |
||||
*/ |
||||
@RunWith(SpringJUnit4ClassRunner.class) |
||||
@SpringApplicationConfiguration(classes = RibbonClientDefaultConfigurationTests.TestConfig.class) |
||||
@IntegrationTest("ribbon.eureka.enabled=true") |
||||
@DirtiesContext |
||||
public class RibbonClientDefaultConfigurationTests { |
||||
|
||||
@Autowired |
||||
private SpringClientFactory factory; |
||||
|
||||
@Test |
||||
public void ruleOverridesDefault() throws Exception { |
||||
assertThat("wrong rule type", getLoadBalancer("baz").getRule(), |
||||
is(instanceOf(BestAvailableRule.class))); |
||||
} |
||||
|
||||
@Test |
||||
public void pingOverridesDefault() throws Exception { |
||||
assertThat("wrong ping type", getLoadBalancer("baz").getPing(), |
||||
is(instanceOf(PingUrl.class))); |
||||
} |
||||
|
||||
@Test |
||||
public void serverListOverridesDefault() throws Exception { |
||||
assertThat("wrong server list type", getLoadBalancer("baz").getServerListImpl(), |
||||
is(instanceOf(BazServiceList.class))); |
||||
} |
||||
|
||||
@SuppressWarnings("unchecked") |
||||
private ZoneAwareLoadBalancer<Server> getLoadBalancer(String name) { |
||||
return (ZoneAwareLoadBalancer<Server>) this.factory.getLoadBalancer(name); |
||||
} |
||||
|
||||
@Test |
||||
public void serverListFilterOverride() throws Exception { |
||||
assertThat("wrong filter type", getLoadBalancer("baz").getFilter(), |
||||
is(instanceOf(ServerListSubsetFilter.class))); |
||||
} |
||||
|
||||
@EnableAutoConfiguration |
||||
@Configuration |
||||
public static class TestConfig { |
||||
|
||||
} |
||||
|
||||
} |
@ -0,0 +1,80 @@
@@ -0,0 +1,80 @@
|
||||
/* |
||||
* Copyright 2013-2015 the original author or authors. |
||||
* |
||||
* 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 org.springframework.cloud.netflix.ribbon.test; |
||||
|
||||
import com.netflix.client.config.IClientConfig; |
||||
import com.netflix.loadbalancer.BestAvailableRule; |
||||
import com.netflix.loadbalancer.ConfigurationBasedServerList; |
||||
import com.netflix.loadbalancer.IPing; |
||||
import com.netflix.loadbalancer.IRule; |
||||
import com.netflix.loadbalancer.PingUrl; |
||||
import com.netflix.loadbalancer.Server; |
||||
import com.netflix.loadbalancer.ServerList; |
||||
import com.netflix.loadbalancer.ServerListSubsetFilter; |
||||
import org.springframework.boot.autoconfigure.PropertyPlaceholderAutoConfiguration; |
||||
import org.springframework.cloud.netflix.archaius.ArchaiusAutoConfiguration; |
||||
import org.springframework.cloud.netflix.eureka.EurekaClientAutoConfiguration; |
||||
import org.springframework.cloud.netflix.ribbon.RibbonAutoConfiguration; |
||||
import org.springframework.cloud.netflix.ribbon.RibbonClients; |
||||
import org.springframework.cloud.netflix.ribbon.eureka.RibbonEurekaAutoConfiguration; |
||||
import org.springframework.context.annotation.Bean; |
||||
import org.springframework.context.annotation.Configuration; |
||||
import org.springframework.context.annotation.Import; |
||||
|
||||
/** |
||||
* @author Spencer Gibb |
||||
*/ |
||||
@Configuration |
||||
@Import({ PropertyPlaceholderAutoConfiguration.class, |
||||
ArchaiusAutoConfiguration.class, EurekaClientAutoConfiguration.class, |
||||
RibbonAutoConfiguration.class, RibbonEurekaAutoConfiguration.class}) |
||||
@RibbonClients(defaultConfiguration = DefaultRibbonConfig.class) |
||||
public class RibbonClientDefaultConfigurationTestsConfig { |
||||
|
||||
public static class BazServiceList extends ConfigurationBasedServerList { |
||||
public BazServiceList(IClientConfig config) { |
||||
super.initWithNiwsConfig(config); |
||||
} |
||||
} |
||||
} |
||||
|
||||
|
||||
@Configuration |
||||
class DefaultRibbonConfig { |
||||
|
||||
@Bean |
||||
public IRule ribbonRule() { |
||||
return new BestAvailableRule(); |
||||
} |
||||
|
||||
@Bean |
||||
public IPing ribbonPing() { |
||||
return new PingUrl(); |
||||
} |
||||
|
||||
@Bean |
||||
public ServerList<Server> ribbonServerList(IClientConfig config) { |
||||
return new RibbonClientDefaultConfigurationTestsConfig.BazServiceList(config); |
||||
} |
||||
|
||||
@Bean |
||||
public ServerListSubsetFilter serverListFilter() { |
||||
ServerListSubsetFilter filter = new ServerListSubsetFilter(); |
||||
return filter; |
||||
} |
||||
|
||||
} |
Loading…
Reference in new issue