Commit d5277925 by Dave Syer

More Zuul context resets

parent 5b86b577
...@@ -16,6 +16,7 @@ ...@@ -16,6 +16,7 @@
package org.springframework.cloud.netflix.zuul; package org.springframework.cloud.netflix.zuul;
import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -40,6 +41,8 @@ import org.springframework.web.bind.annotation.RequestMapping; ...@@ -40,6 +41,8 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import com.netflix.zuul.context.RequestContext;
import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertEquals;
@RunWith(SpringJUnit4ClassRunner.class) @RunWith(SpringJUnit4ClassRunner.class)
...@@ -58,6 +61,12 @@ public class ContextPathZuulProxyApplicationTests { ...@@ -58,6 +61,12 @@ public class ContextPathZuulProxyApplicationTests {
@Autowired @Autowired
private RoutesEndpoint endpoint; private RoutesEndpoint endpoint;
@Before
public void setTestRequestcontext() {
RequestContext context = new RequestContext();
RequestContext.testSetCurrentContext(context);
}
@Test @Test
public void getOnSelfViaSimpleHostRoutingFilter() { public void getOnSelfViaSimpleHostRoutingFilter() {
this.routes.addRoute("/self/**", "http://localhost:" + this.port + "/app/local"); this.routes.addRoute("/self/**", "http://localhost:" + this.port + "/app/local");
......
...@@ -20,11 +20,6 @@ import java.io.IOException; ...@@ -20,11 +20,6 @@ import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.util.Map; import java.util.Map;
import com.netflix.loadbalancer.Server;
import com.netflix.loadbalancer.ServerList;
import com.netflix.zuul.ZuulFilter;
import com.netflix.zuul.context.RequestContext;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
...@@ -57,10 +52,15 @@ import org.springframework.web.bind.annotation.RequestParam; ...@@ -57,10 +52,15 @@ import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import lombok.extern.slf4j.Slf4j; import com.netflix.loadbalancer.Server;
import com.netflix.loadbalancer.ServerList;
import com.netflix.zuul.ZuulFilter;
import com.netflix.zuul.context.RequestContext;
import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertEquals;
import lombok.extern.slf4j.Slf4j;
@RunWith(SpringJUnit4ClassRunner.class) @RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = FormZuulServletProxyApplication.class) @SpringApplicationConfiguration(classes = FormZuulServletProxyApplication.class)
@WebIntegrationTest(value = "zuul.routes.simple:/simple/**", randomPort = true) @WebIntegrationTest(value = "zuul.routes.simple:/simple/**", randomPort = true)
......
package org.springframework.cloud.netflix.zuul; package org.springframework.cloud.netflix.zuul;
import static org.junit.Assert.assertEquals; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -35,43 +34,50 @@ import org.springframework.web.bind.annotation.RestController; ...@@ -35,43 +34,50 @@ import org.springframework.web.bind.annotation.RestController;
import com.netflix.loadbalancer.Server; import com.netflix.loadbalancer.Server;
import com.netflix.loadbalancer.ServerList; import com.netflix.loadbalancer.ServerList;
import com.netflix.zuul.ZuulFilter; import com.netflix.zuul.ZuulFilter;
import com.netflix.zuul.context.RequestContext;
import static org.junit.Assert.assertEquals;
@RunWith(SpringJUnit4ClassRunner.class) @RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = RetryableZuulProxyApplication.class) @SpringApplicationConfiguration(classes = RetryableZuulProxyApplication.class)
@WebAppConfiguration @WebAppConfiguration
@IntegrationTest({ "server.port: 0", @IntegrationTest({ "server.port: 0", "zuul.routes.simple.path: /simple/**",
"zuul.routes.simple.path: /simple/**", "zuul.routes.simple.retryable: true", "ribbon.OkToRetryOnAllOperations: true" })
"zuul.routes.simple.retryable: true",
"ribbon.OkToRetryOnAllOperations: true"
})
@DirtiesContext @DirtiesContext
public class RetryableZuulProxyApplicationTests { public class RetryableZuulProxyApplicationTests {
@Value("${local.server.port}") @Value("${local.server.port}")
private int port; private int port;
@Autowired @Autowired
private DiscoveryClientRouteLocator routes; private DiscoveryClientRouteLocator routes;
@Autowired @Autowired
private RoutesEndpoint endpoint; private RoutesEndpoint endpoint;
@Test @Before
public void postWithForm() { public void setTestRequestcontext() {
MultiValueMap<String, String> form = new LinkedMultiValueMap<String, String>(); RequestContext context = new RequestContext();
form.set("foo", "bar"); RequestContext.testSetCurrentContext(context);
HttpHeaders headers = new HttpHeaders(); }
headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
ResponseEntity<String> result = new TestRestTemplate().exchange( @Test
"http://localhost:" + port + "/simple", HttpMethod.POST, public void postWithForm() {
new HttpEntity<MultiValueMap<String,String>>(form, headers), String.class); MultiValueMap<String, String> form = new LinkedMultiValueMap<String, String>();
assertEquals(HttpStatus.OK, result.getStatusCode()); form.set("foo", "bar");
assertEquals("Posted! {foo=[bar]}", result.getBody()); HttpHeaders headers = new HttpHeaders();
} headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
ResponseEntity<String> result = new TestRestTemplate().exchange(
"http://localhost:" + this.port + "/simple", HttpMethod.POST,
new HttpEntity<MultiValueMap<String, String>>(form, headers),
String.class);
assertEquals(HttpStatus.OK, result.getStatusCode());
assertEquals("Posted! {foo=[bar]}", result.getBody());
}
} }
//Don't use @SpringBootApplication because we don't want to component scan // Don't use @SpringBootApplication because we don't want to component scan
@Configuration @Configuration
@EnableAutoConfiguration @EnableAutoConfiguration
@RestController @RestController
...@@ -79,43 +85,43 @@ public class RetryableZuulProxyApplicationTests { ...@@ -79,43 +85,43 @@ public class RetryableZuulProxyApplicationTests {
@RibbonClient(name = "simple", configuration = RetryableRibbonClientConfiguration.class) @RibbonClient(name = "simple", configuration = RetryableRibbonClientConfiguration.class)
class RetryableZuulProxyApplication { class RetryableZuulProxyApplication {
@RequestMapping(value = "/", method = RequestMethod.POST) @RequestMapping(value = "/", method = RequestMethod.POST)
public String delete(@RequestBody MultiValueMap<String, String> form) { public String delete(@RequestBody MultiValueMap<String, String> form) {
return "Posted! " + form; return "Posted! " + form;
} }
@Bean @Bean
public ZuulFilter sampleFilter() { public ZuulFilter sampleFilter() {
return new ZuulFilter() { return new ZuulFilter() {
@Override @Override
public String filterType() { public String filterType() {
return "pre"; return "pre";
} }
@Override @Override
public boolean shouldFilter() { public boolean shouldFilter() {
return true; return true;
} }
@Override @Override
public Object run() { public Object run() {
return null; return null;
} }
@Override @Override
public int filterOrder() { public int filterOrder() {
return 0; return 0;
} }
}; };
} }
public static void main(String[] args) { public static void main(String[] args) {
SpringApplication.run(SampleZuulProxyApplication.class, args); SpringApplication.run(SampleZuulProxyApplication.class, args);
} }
} }
//Load balancer with fixed server list for "simple" pointing to localhost // Load balancer with fixed server list for "simple" pointing to localhost
@Configuration @Configuration
class RetryableRibbonClientConfiguration { class RetryableRibbonClientConfiguration {
...@@ -124,9 +130,7 @@ class RetryableRibbonClientConfiguration { ...@@ -124,9 +130,7 @@ class RetryableRibbonClientConfiguration {
@Bean @Bean
public ServerList<Server> ribbonServerList() { public ServerList<Server> ribbonServerList() {
return new StaticServerList<>( return new StaticServerList<>(new Server("localhost", this.port),
new Server("localhost", port), new Server("failed-localhost", this.port));
new Server("failed-localhost", port)
);
} }
} }
\ No newline at end of file
...@@ -16,6 +16,7 @@ ...@@ -16,6 +16,7 @@
package org.springframework.cloud.netflix.zuul; package org.springframework.cloud.netflix.zuul;
import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -40,6 +41,8 @@ import org.springframework.web.bind.annotation.RequestMapping; ...@@ -40,6 +41,8 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import com.netflix.zuul.context.RequestContext;
import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertEquals;
@RunWith(SpringJUnit4ClassRunner.class) @RunWith(SpringJUnit4ClassRunner.class)
...@@ -58,6 +61,12 @@ public class ServletPathZuulProxyApplicationTests { ...@@ -58,6 +61,12 @@ public class ServletPathZuulProxyApplicationTests {
@Autowired @Autowired
private RoutesEndpoint endpoint; private RoutesEndpoint endpoint;
@Before
public void setTestRequestcontext() {
RequestContext context = new RequestContext();
RequestContext.testSetCurrentContext(context);
}
@Test @Test
public void getOnSelfViaSimpleHostRoutingFilter() { public void getOnSelfViaSimpleHostRoutingFilter() {
this.routes.addRoute("/self/**", "http://localhost:" + this.port + "/app/local"); this.routes.addRoute("/self/**", "http://localhost:" + this.port + "/app/local");
......
...@@ -16,6 +16,7 @@ ...@@ -16,6 +16,7 @@
package org.springframework.cloud.netflix.zuul; package org.springframework.cloud.netflix.zuul;
import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -39,6 +40,7 @@ import org.springframework.web.bind.annotation.RequestMapping; ...@@ -39,6 +40,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import com.netflix.zuul.ZuulFilter; import com.netflix.zuul.ZuulFilter;
import com.netflix.zuul.context.RequestContext;
import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNotNull;
...@@ -60,6 +62,12 @@ public class SimpleZuulServerApplicationTests { ...@@ -60,6 +62,12 @@ public class SimpleZuulServerApplicationTests {
return this.routes.getMatchingRoute(path).getLocation(); return this.routes.getMatchingRoute(path).getLocation();
} }
@Before
public void setTestRequestcontext() {
RequestContext context = new RequestContext();
RequestContext.testSetCurrentContext(context);
}
@Test @Test
public void bindRoute() { public void bindRoute() {
assertNotNull(getRoute("/testing123/**")); assertNotNull(getRoute("/testing123/**"));
......
...@@ -3,6 +3,7 @@ package org.springframework.cloud.netflix.zuul.filters.discovery; ...@@ -3,6 +3,7 @@ package org.springframework.cloud.netflix.zuul.filters.discovery;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -33,6 +34,7 @@ import org.springframework.web.bind.annotation.RestController; ...@@ -33,6 +34,7 @@ import org.springframework.web.bind.annotation.RestController;
import com.netflix.loadbalancer.Server; import com.netflix.loadbalancer.Server;
import com.netflix.loadbalancer.ServerList; import com.netflix.loadbalancer.ServerList;
import com.netflix.zuul.context.RequestContext;
import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertEquals;
import static org.mockito.Mockito.mock; import static org.mockito.Mockito.mock;
...@@ -61,6 +63,12 @@ public class PatternServiceRouteMapperIntegrationTests { ...@@ -61,6 +63,12 @@ public class PatternServiceRouteMapperIntegrationTests {
@Autowired @Autowired
private RoutesEndpoint endpoint; private RoutesEndpoint endpoint;
@Before
public void setTestRequestcontext() {
RequestContext context = new RequestContext();
RequestContext.testSetCurrentContext(context);
}
@Test @Test
public void getRegexMappedService() { public void getRegexMappedService() {
this.endpoint.reset(); this.endpoint.reset();
......
package org.springframework.cloud.netflix.zuul.filters.discovery; package org.springframework.cloud.netflix.zuul.filters.discovery;
import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import org.springframework.cloud.netflix.zuul.filters.discovery.PatternServiceRouteMapper;
import com.netflix.zuul.context.RequestContext;
import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertEquals;
...@@ -17,6 +19,12 @@ public class PatternServiceRouteMapperTests { ...@@ -17,6 +19,12 @@ public class PatternServiceRouteMapperTests {
public static final String SERVICE_PATTERN = "(?<domain>^\\w+)(-(?<name>\\w+)-|-)(?<version>v\\d+$)"; public static final String SERVICE_PATTERN = "(?<domain>^\\w+)(-(?<name>\\w+)-|-)(?<version>v\\d+$)";
public static final String ROUTE_PATTERN = "${version}/${domain}/${name}"; public static final String ROUTE_PATTERN = "${version}/${domain}/${name}";
@Before
public void setTestRequestcontext() {
RequestContext context = new RequestContext();
RequestContext.testSetCurrentContext(context);
}
@Test @Test
public void test_return_mapped_route_if_serviceid_matches() { public void test_return_mapped_route_if_serviceid_matches() {
PatternServiceRouteMapper toTest = new PatternServiceRouteMapper(SERVICE_PATTERN, PatternServiceRouteMapper toTest = new PatternServiceRouteMapper(SERVICE_PATTERN,
...@@ -39,8 +47,9 @@ public class PatternServiceRouteMapperTests { ...@@ -39,8 +47,9 @@ public class PatternServiceRouteMapperTests {
@Test @Test
public void test_route_should_be_cleaned_before_returned() { public void test_route_should_be_cleaned_before_returned() {
// Messy patterns // Messy patterns
PatternServiceRouteMapper toTest = new PatternServiceRouteMapper(SERVICE_PATTERN PatternServiceRouteMapper toTest = new PatternServiceRouteMapper(
+ "(?<nevermatch>.)?", "/${version}/${nevermatch}/${domain}/${name}/"); SERVICE_PATTERN + "(?<nevermatch>.)?",
"/${version}/${nevermatch}/${domain}/${name}/");
assertEquals("No matches for this service id", "v1/domain/service", assertEquals("No matches for this service id", "v1/domain/service",
toTest.apply("domain-service-v1")); toTest.apply("domain-service-v1"));
assertEquals("No matches for this service id", "v1/domain", assertEquals("No matches for this service id", "v1/domain",
......
...@@ -19,6 +19,7 @@ package org.springframework.cloud.netflix.zuul.filters.post; ...@@ -19,6 +19,7 @@ package org.springframework.cloud.netflix.zuul.filters.post;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import org.junit.After; import org.junit.After;
import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import org.springframework.http.HttpStatus; import org.springframework.http.HttpStatus;
import org.springframework.mock.web.MockHttpServletRequest; import org.springframework.mock.web.MockHttpServletRequest;
...@@ -35,9 +36,15 @@ import static org.mockito.Mockito.mock; ...@@ -35,9 +36,15 @@ import static org.mockito.Mockito.mock;
*/ */
public class SendErrorFilterTests { public class SendErrorFilterTests {
@Before
public void setTestRequestcontext() {
RequestContext context = new RequestContext();
RequestContext.testSetCurrentContext(context);
}
@After @After
public void reset() { public void reset() {
RequestContext.testSetCurrentContext(null); RequestContext.getCurrentContext().clear();
} }
@Test @Test
......
...@@ -16,19 +16,19 @@ ...@@ -16,19 +16,19 @@
package org.springframework.cloud.netflix.zuul.filters.route; package org.springframework.cloud.netflix.zuul.filters.route;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import org.junit.After; import org.junit.After;
import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import org.springframework.cloud.netflix.zuul.filters.route.SendForwardFilter;
import org.springframework.mock.web.MockHttpServletRequest; import org.springframework.mock.web.MockHttpServletRequest;
import org.springframework.mock.web.MockHttpServletResponse; import org.springframework.mock.web.MockHttpServletResponse;
import com.netflix.zuul.context.RequestContext; import com.netflix.zuul.context.RequestContext;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
/** /**
* @author Dave Syer * @author Dave Syer
*/ */
...@@ -39,6 +39,12 @@ public class SendForwardFilterTests { ...@@ -39,6 +39,12 @@ public class SendForwardFilterTests {
RequestContext.testSetCurrentContext(null); RequestContext.testSetCurrentContext(null);
} }
@Before
public void setTestRequestcontext() {
RequestContext context = new RequestContext();
RequestContext.testSetCurrentContext(context);
}
@Test @Test
public void runsNormally() { public void runsNormally() {
SendForwardFilter filter = createSendForwardFilter(new MockHttpServletRequest()); SendForwardFilter filter = createSendForwardFilter(new MockHttpServletRequest());
......
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