Commit 31b617b1 by Biju Kunjummen

Fixed formatting issues, added more tests

parent a6fe648a
......@@ -86,8 +86,7 @@ public class SpringClientFactory extends NamedContextFactory<RibbonClientSpecifi
try {
Constructor<C> constructor = clazz.getConstructor(IClientConfig.class);
result = constructor.newInstance(config);
}
catch (Throwable e) {
} catch (Throwable e) {
// Ignored
}
......@@ -120,4 +119,6 @@ public class SpringClientFactory extends NamedContextFactory<RibbonClientSpecifi
protected AnnotationConfigApplicationContext getContext(String name) {
return super.getContext(name);
}
}
......@@ -164,7 +164,7 @@ public class ZuulConfiguration {
}
@Bean
@ConditionalOnProperty(value = "zuul.context.startup.enabled", matchIfMissing = false)
@ConditionalOnProperty(value = "zuul.ribbon.eager-load", matchIfMissing = false)
public ZuulRouteApplicationContextInitializer zuulRoutesApplicationContextInitiazer(
SpringClientFactory springClientFactory) {
return new ZuulRouteApplicationContextInitializer(springClientFactory,
......
......@@ -6,7 +6,6 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.cloud.netflix.archaius.ArchaiusAutoConfiguration;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.test.annotation.DirtiesContext;
......@@ -16,7 +15,6 @@ import java.util.Arrays;
import java.util.concurrent.atomic.AtomicInteger;
import static org.assertj.core.api.Assertions.assertThat;
import static org.springframework.boot.test.util.EnvironmentTestUtils.addEnvironment;
/**
* @author Biju Kunjummen
......@@ -43,7 +41,6 @@ public class RibbonApplicationContextInitializerTests {
assertThat(foo).isNotNull();
}
@Configuration
static class FooConfig {
@Bean
......
package org.springframework.cloud.netflix.zuul.filters.route;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.cloud.netflix.ribbon.RibbonClient;
import org.springframework.cloud.netflix.ribbon.RibbonClients;
import org.springframework.cloud.netflix.zuul.EnableZuulProxy;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.test.annotation.DirtiesContext;
import org.springframework.test.context.junit4.SpringRunner;
import java.util.concurrent.atomic.AtomicInteger;
import static org.assertj.core.api.Assertions.assertThat;
@RunWith(SpringRunner.class)
@SpringBootTest(value = { "zuul.routes.myroute.service-id=eager",
"zuul.ribbon.eager-load=true" })
@DirtiesContext
public class EagerLoadOfZuulConfigurationTests {
@Test
public void testEagerLoading() {
// Child context FooConfig should have been eagerly instantiated..
assertThat(Foo.getInstanceCount()).isEqualTo(1);
}
@EnableAutoConfiguration
@Configuration
@EnableZuulProxy
@RibbonClients(@RibbonClient(name = "eager", configuration = FooConfig.class))
static class TestConfig {
}
static class Foo {
private static final AtomicInteger INSTANCE_COUNT = new AtomicInteger();
public Foo() {
INSTANCE_COUNT.incrementAndGet();
}
public static int getInstanceCount() {
return INSTANCE_COUNT.get();
}
}
static class FooConfig {
@Bean
public Foo foo() {
return new Foo();
}
}
}
package org.springframework.cloud.netflix.zuul.filters.route;
import com.netflix.loadbalancer.Server;
import com.netflix.loadbalancer.ServerList;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.web.client.TestRestTemplate;
import org.springframework.cloud.netflix.ribbon.RibbonClient;
import org.springframework.cloud.netflix.ribbon.RibbonClients;
import org.springframework.cloud.netflix.ribbon.StaticServerList;
import org.springframework.cloud.netflix.zuul.EnableZuulProxy;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.test.annotation.DirtiesContext;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.concurrent.atomic.AtomicInteger;
import static org.assertj.core.api.Assertions.assertThat;
@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, value = {
"zuul.routes.myroute.service-id=eager", "zuul.routes.myroute.path=/eager/**" })
@DirtiesContext
public class LazyLoadOfZuulConfigurationTests {
@Value("${local.server.port}")
protected int port;
@Test
public void testEagerLoading() {
// Child context FooConfig should be lazily created..
assertThat(Foo.getInstanceCount()).isEqualTo(0);
String uri = String.format("http://localhost:%d/eager/sample", this.port);
ResponseEntity<String> result = new TestRestTemplate().getForEntity(uri,
String.class);
// the instance should be available now..
assertThat(Foo.getInstanceCount()).isEqualTo(1);
assertThat(result.getStatusCode()).isEqualTo(HttpStatus.OK);
assertThat(result.getBody()).isEqualTo("sample");
}
@EnableAutoConfiguration
@Configuration
@EnableZuulProxy
@RibbonClients(@RibbonClient(name = "eager", configuration = FooConfig.class))
static class TestConfig {
}
static class Foo {
private static final AtomicInteger INSTANCE_COUNT = new AtomicInteger();
public Foo() {
INSTANCE_COUNT.incrementAndGet();
}
public static int getInstanceCount() {
return INSTANCE_COUNT.get();
}
}
static class FooConfig {
@Bean
public Foo foo() {
return new Foo();
}
@Value("${local.server.port}")
private int port;
@Bean
public ServerList<Server> ribbonServerList() {
return new StaticServerList<>(new Server("localhost", this.port));
}
}
@Configuration
@RestController
static class SampleWebConfig {
@RequestMapping("/sample")
public String sampleEndpoint() {
return "sample";
}
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment