Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
S
spring-cloud-netflix
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
openSource
spring-cloud-netflix
Commits
f9fc8ba8
Commit
f9fc8ba8
authored
Jan 15, 2016
by
Dave Syer
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Change signature of RouteLocator.getRoutes()
If it returns Routes instead of Strings it's a lot more obvious what it's supposed.
parent
2585798a
Show whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
220 additions
and
167 deletions
+220
-167
RoutesEndpoint.java
...rg/springframework/cloud/netflix/zuul/RoutesEndpoint.java
+7
-1
RouteLocator.java
...ingframework/cloud/netflix/zuul/filters/RouteLocator.java
+2
-2
SimpleRouteLocator.java
...mework/cloud/netflix/zuul/filters/SimpleRouteLocator.java
+7
-3
ZuulHandlerMapping.java
...gframework/cloud/netflix/zuul/web/ZuulHandlerMapping.java
+4
-3
SampleZuulProxyAppTestsWithHttpClient.java
...d/netflix/zuul/SampleZuulProxyAppTestsWithHttpClient.java
+7
-1
SampleZuulProxyApplicationTests.java
...k/cloud/netflix/zuul/SampleZuulProxyApplicationTests.java
+7
-1
SimpleZuulServerApplicationTests.java
.../cloud/netflix/zuul/SimpleZuulServerApplicationTests.java
+1
-1
DiscoveryClientRouteLocatorTests.java
...l/filters/discovery/DiscoveryClientRouteLocatorTests.java
+178
-149
ZuulHandlerMappingTests.java
...ework/cloud/netflix/zuul/web/ZuulHandlerMappingTests.java
+7
-6
No files found.
spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/zuul/RoutesEndpoint.java
View file @
f9fc8ba8
...
...
@@ -16,11 +16,13 @@
package
org
.
springframework
.
cloud
.
netflix
.
zuul
;
import
java.util.LinkedHashMap
;
import
java.util.Map
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.boot.actuate.endpoint.Endpoint
;
import
org.springframework.boot.actuate.endpoint.mvc.MvcEndpoint
;
import
org.springframework.cloud.netflix.zuul.filters.Route
;
import
org.springframework.cloud.netflix.zuul.filters.RouteLocator
;
import
org.springframework.context.ApplicationEventPublisher
;
import
org.springframework.context.ApplicationEventPublisherAware
;
...
...
@@ -66,7 +68,11 @@ public class RoutesEndpoint implements MvcEndpoint, ApplicationEventPublisherAwa
@ResponseBody
@ManagedAttribute
public
Map
<
String
,
String
>
getRoutes
()
{
return
this
.
routes
.
getRoutes
();
Map
<
String
,
String
>
map
=
new
LinkedHashMap
<>();
for
(
Route
route
:
this
.
routes
.
getRoutes
())
{
map
.
put
(
route
.
getPath
(),
route
.
getLocation
());
}
return
map
;
}
@Override
...
...
spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/zuul/filters/RouteLocator.java
View file @
f9fc8ba8
...
...
@@ -17,7 +17,7 @@
package
org
.
springframework
.
cloud
.
netflix
.
zuul
.
filters
;
import
java.util.Collection
;
import
java.util.
Map
;
import
java.util.
List
;
/**
* @author Dave Syer
...
...
@@ -32,7 +32,7 @@ public interface RouteLocator {
/**
* A map of route path (pattern) to location (e.g. service id or URL).
*/
Map
<
String
,
String
>
getRoutes
();
List
<
Route
>
getRoutes
();
/**
* Maps a path to an actual route with full metadata.
...
...
spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/zuul/filters/SimpleRouteLocator.java
View file @
f9fc8ba8
...
...
@@ -16,8 +16,10 @@
package
org
.
springframework
.
cloud
.
netflix
.
zuul
.
filters
;
import
java.util.ArrayList
;
import
java.util.Collection
;
import
java.util.LinkedHashMap
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Map.Entry
;
import
java.util.concurrent.atomic.AtomicReference
;
...
...
@@ -58,13 +60,15 @@ public class SimpleRouteLocator implements RouteLocator {
}
@Override
public
Map
<
String
,
String
>
getRoutes
()
{
public
List
<
Route
>
getRoutes
()
{
if
(
this
.
routes
.
get
()
==
null
)
{
this
.
routes
.
set
(
locateRoutes
());
}
Map
<
String
,
String
>
values
=
new
LinkedHashMap
<>();
List
<
Route
>
values
=
new
ArrayList
<>();
for
(
String
url
:
this
.
routes
.
get
().
keySet
())
{
values
.
put
(
url
,
this
.
routes
.
get
().
get
(
url
).
getLocation
());
ZuulRoute
route
=
this
.
routes
.
get
().
get
(
url
);
String
path
=
route
.
getPath
();
values
.
add
(
getRoute
(
route
,
path
));
}
return
values
;
}
...
...
spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/zuul/web/ZuulHandlerMapping.java
View file @
f9fc8ba8
...
...
@@ -22,6 +22,7 @@ import javax.servlet.http.HttpServletRequest;
import
org.springframework.boot.autoconfigure.web.ErrorController
;
import
org.springframework.cloud.netflix.zuul.filters.RefreshableRouteLocator
;
import
org.springframework.cloud.netflix.zuul.filters.Route
;
import
org.springframework.cloud.netflix.zuul.filters.RouteLocator
;
import
org.springframework.util.PatternMatchUtils
;
import
org.springframework.web.servlet.handler.AbstractUrlHandlerMapping
;
...
...
@@ -88,13 +89,13 @@ public class ZuulHandlerMapping extends AbstractUrlHandlerMapping {
}
private
void
registerHandlers
()
{
Collection
<
String
>
routes
=
this
.
routeLocator
.
getRoutes
().
keySet
();
Collection
<
Route
>
routes
=
this
.
routeLocator
.
getRoutes
();
if
(
routes
.
isEmpty
())
{
this
.
logger
.
warn
(
"No routes found from RouteLocator"
);
}
else
{
for
(
String
url
:
routes
)
{
registerHandler
(
url
,
this
.
zuul
);
for
(
Route
route
:
routes
)
{
registerHandler
(
route
.
getPrefix
()
+
route
.
getPath
()
,
this
.
zuul
);
}
}
}
...
...
spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/zuul/SampleZuulProxyAppTestsWithHttpClient.java
View file @
f9fc8ba8
...
...
@@ -33,6 +33,7 @@ import org.springframework.boot.test.TestRestTemplate;
import
org.springframework.cloud.netflix.ribbon.RibbonClient
;
import
org.springframework.cloud.netflix.ribbon.RibbonClients
;
import
org.springframework.cloud.netflix.ribbon.SpringClientFactory
;
import
org.springframework.cloud.netflix.zuul.filters.Route
;
import
org.springframework.cloud.netflix.zuul.filters.ZuulProperties
;
import
org.springframework.cloud.netflix.zuul.filters.discovery.DiscoveryClientRouteLocator
;
import
org.springframework.cloud.netflix.zuul.filters.route.RibbonCommandFactory
;
...
...
@@ -82,7 +83,12 @@ public class SampleZuulProxyAppTestsWithHttpClient {
private
RibbonCommandFactory
<?>
ribbonCommandFactory
;
private
String
getRoute
(
String
path
)
{
return
this
.
routes
.
getRoutes
().
get
(
path
);
for
(
Route
route
:
this
.
routes
.
getRoutes
())
{
if
(
path
.
equals
(
route
.
getPrefix
()
+
route
.
getPath
()))
{
return
route
.
getLocation
();
}
}
return
null
;
}
@Test
...
...
spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/zuul/SampleZuulProxyApplicationTests.java
View file @
f9fc8ba8
...
...
@@ -36,6 +36,7 @@ import org.springframework.cloud.netflix.ribbon.RibbonClient;
import
org.springframework.cloud.netflix.ribbon.RibbonClients
;
import
org.springframework.cloud.netflix.ribbon.SpringClientFactory
;
import
org.springframework.cloud.netflix.ribbon.StaticServerList
;
import
org.springframework.cloud.netflix.zuul.filters.Route
;
import
org.springframework.cloud.netflix.zuul.filters.ZuulProperties.ZuulRoute
;
import
org.springframework.cloud.netflix.zuul.filters.discovery.DiscoveryClientRouteLocator
;
import
org.springframework.cloud.netflix.zuul.filters.route.RestClientRibbonCommandFactory
;
...
...
@@ -88,7 +89,12 @@ public class SampleZuulProxyApplicationTests {
private
RibbonCommandFactory
<?>
ribbonCommandFactory
;
private
String
getRoute
(
String
path
)
{
return
this
.
routes
.
getRoutes
().
get
(
path
);
for
(
Route
route
:
this
.
routes
.
getRoutes
())
{
if
(
path
.
equals
(
route
.
getPrefix
()
+
route
.
getPath
()))
{
return
route
.
getLocation
();
}
}
return
null
;
}
@Test
...
...
spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/zuul/SimpleZuulServerApplicationTests.java
View file @
f9fc8ba8
...
...
@@ -57,7 +57,7 @@ public class SimpleZuulServerApplicationTests {
private
RouteLocator
routes
;
private
String
getRoute
(
String
path
)
{
return
this
.
routes
.
get
Routes
().
get
(
path
);
return
this
.
routes
.
get
MatchingRoute
(
path
).
getLocation
(
);
}
@Test
...
...
spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/zuul/filters/discovery/DiscoveryClientRouteLocatorTests.java
View file @
f9fc8ba8
...
...
@@ -18,7 +18,7 @@ package org.springframework.cloud.netflix.zuul.filters.discovery;
import
java.util.Collections
;
import
java.util.LinkedHashMap
;
import
java.util.
Map
;
import
java.util.
List
;
import
org.junit.Before
;
import
org.junit.Test
;
...
...
@@ -28,9 +28,8 @@ import org.springframework.cloud.client.discovery.DiscoveryClient;
import
org.springframework.cloud.netflix.zuul.filters.Route
;
import
org.springframework.cloud.netflix.zuul.filters.ZuulProperties
;
import
org.springframework.cloud.netflix.zuul.filters.ZuulProperties.ZuulRoute
;
import
org.springframework.cloud.netflix.zuul.filters.discovery.DiscoveryClientRouteLocator
;
import
org.springframework.cloud.netflix.zuul.filters.discovery.PatternServiceRouteMapper
;
import
org.springframework.core.env.ConfigurableEnvironment
;
import
org.springframework.util.StringUtils
;
import
static
org
.
junit
.
Assert
.
assertEquals
;
import
static
org
.
junit
.
Assert
.
assertFalse
;
...
...
@@ -69,8 +68,8 @@ public class DiscoveryClientRouteLocatorTests {
@Test
public
void
testGetMatchingPath
()
throws
Exception
{
DiscoveryClientRouteLocator
routeLocator
=
new
DiscoveryClientRouteLocator
(
"/"
,
this
.
discovery
,
this
.
properties
);
DiscoveryClientRouteLocator
routeLocator
=
new
DiscoveryClientRouteLocator
(
"/"
,
this
.
discovery
,
this
.
properties
);
this
.
properties
.
getRoutes
().
put
(
"foo"
,
new
ZuulRoute
(
"/foo/**"
));
this
.
properties
.
init
();
routeLocator
.
getRoutes
();
// force refresh
...
...
@@ -81,8 +80,8 @@ public class DiscoveryClientRouteLocatorTests {
@Test
public
void
testGetMatchingPathWithPrefix
()
throws
Exception
{
DiscoveryClientRouteLocator
routeLocator
=
new
DiscoveryClientRouteLocator
(
"/"
,
this
.
discovery
,
this
.
properties
);
DiscoveryClientRouteLocator
routeLocator
=
new
DiscoveryClientRouteLocator
(
"/"
,
this
.
discovery
,
this
.
properties
);
this
.
properties
.
getRoutes
().
put
(
"foo"
,
new
ZuulRoute
(
"/foo/**"
));
this
.
properties
.
setPrefix
(
"/proxy"
);
this
.
properties
.
init
();
...
...
@@ -94,8 +93,8 @@ public class DiscoveryClientRouteLocatorTests {
@Test
public
void
testGetMatchingPathWithServletPath
()
throws
Exception
{
DiscoveryClientRouteLocator
routeLocator
=
new
DiscoveryClientRouteLocator
(
"/app"
,
this
.
discovery
,
this
.
properties
);
DiscoveryClientRouteLocator
routeLocator
=
new
DiscoveryClientRouteLocator
(
"/app"
,
this
.
discovery
,
this
.
properties
);
this
.
properties
.
getRoutes
().
put
(
"foo"
,
new
ZuulRoute
(
"/foo/**"
));
this
.
properties
.
init
();
routeLocator
.
getRoutes
();
// force refresh
...
...
@@ -106,8 +105,8 @@ public class DiscoveryClientRouteLocatorTests {
@Test
public
void
testGetMatchingPathWithNoPrefixStripping
()
throws
Exception
{
DiscoveryClientRouteLocator
routeLocator
=
new
DiscoveryClientRouteLocator
(
"/"
,
this
.
discovery
,
this
.
properties
);
DiscoveryClientRouteLocator
routeLocator
=
new
DiscoveryClientRouteLocator
(
"/"
,
this
.
discovery
,
this
.
properties
);
this
.
properties
.
getRoutes
().
put
(
"foo"
,
new
ZuulRoute
(
"foo"
,
"/foo/**"
,
"foo"
,
null
,
false
,
null
));
this
.
properties
.
setStripPrefix
(
false
);
...
...
@@ -120,8 +119,8 @@ public class DiscoveryClientRouteLocatorTests {
@Test
public
void
testGetMatchingPathWithLocalPrefixStripping
()
throws
Exception
{
DiscoveryClientRouteLocator
routeLocator
=
new
DiscoveryClientRouteLocator
(
"/"
,
this
.
discovery
,
this
.
properties
);
DiscoveryClientRouteLocator
routeLocator
=
new
DiscoveryClientRouteLocator
(
"/"
,
this
.
discovery
,
this
.
properties
);
this
.
properties
.
getRoutes
().
put
(
"foo"
,
new
ZuulRoute
(
"/foo/**"
,
"foo"
));
this
.
properties
.
setStripPrefix
(
false
);
this
.
properties
.
setPrefix
(
"/proxy"
);
...
...
@@ -133,8 +132,8 @@ public class DiscoveryClientRouteLocatorTests {
@Test
public
void
testGetMatchingPathWithGlobalPrefixStripping
()
throws
Exception
{
DiscoveryClientRouteLocator
routeLocator
=
new
DiscoveryClientRouteLocator
(
"/"
,
this
.
discovery
,
this
.
properties
);
DiscoveryClientRouteLocator
routeLocator
=
new
DiscoveryClientRouteLocator
(
"/"
,
this
.
discovery
,
this
.
properties
);
this
.
properties
.
getRoutes
().
put
(
"foo"
,
new
ZuulRoute
(
"foo"
,
"/foo/**"
,
"foo"
,
null
,
false
,
null
));
this
.
properties
.
setPrefix
(
"/proxy"
);
...
...
@@ -146,8 +145,8 @@ public class DiscoveryClientRouteLocatorTests {
@Test
public
void
testGetMatchingPathWithRoutePrefixStripping
()
throws
Exception
{
DiscoveryClientRouteLocator
routeLocator
=
new
DiscoveryClientRouteLocator
(
"/"
,
this
.
discovery
,
this
.
properties
);
DiscoveryClientRouteLocator
routeLocator
=
new
DiscoveryClientRouteLocator
(
"/"
,
this
.
discovery
,
this
.
properties
);
ZuulRoute
zuulRoute
=
new
ZuulRoute
(
"/foo/**"
);
zuulRoute
.
setStripPrefix
(
true
);
this
.
properties
.
getRoutes
().
put
(
"foo"
,
zuulRoute
);
...
...
@@ -160,8 +159,8 @@ public class DiscoveryClientRouteLocatorTests {
@Test
public
void
testGetMatchingPathWithoutMatchingIgnoredPattern
()
throws
Exception
{
DiscoveryClientRouteLocator
routeLocator
=
new
DiscoveryClientRouteLocator
(
"/"
,
this
.
discovery
,
this
.
properties
);
DiscoveryClientRouteLocator
routeLocator
=
new
DiscoveryClientRouteLocator
(
"/"
,
this
.
discovery
,
this
.
properties
);
this
.
properties
.
setIgnoredPatterns
(
Collections
.
singletonList
(
IGNOREDPATTERN
));
this
.
properties
.
getRoutes
().
put
(
"bar"
,
new
ZuulRoute
(
"/bar/**"
));
this
.
properties
.
init
();
...
...
@@ -173,8 +172,8 @@ public class DiscoveryClientRouteLocatorTests {
@Test
public
void
testGetMatchingPathWithMatchingIgnoredPattern
()
throws
Exception
{
DiscoveryClientRouteLocator
routeLocator
=
new
DiscoveryClientRouteLocator
(
"/"
,
this
.
discovery
,
this
.
properties
);
DiscoveryClientRouteLocator
routeLocator
=
new
DiscoveryClientRouteLocator
(
"/"
,
this
.
discovery
,
this
.
properties
);
this
.
properties
.
setIgnoredPatterns
(
Collections
.
singletonList
(
IGNOREDPATTERN
));
this
.
properties
.
getRoutes
().
put
(
"foo"
,
new
ZuulRoute
(
"/foo/**"
));
this
.
properties
.
init
();
...
...
@@ -184,9 +183,10 @@ public class DiscoveryClientRouteLocatorTests {
}
@Test
public
void
testGetMatchingPathWithMatchingIgnoredPatternWithPrefix
()
throws
Exception
{
DiscoveryClientRouteLocator
routeLocator
=
new
DiscoveryClientRouteLocator
(
"/"
,
this
.
discovery
,
this
.
properties
);
public
void
testGetMatchingPathWithMatchingIgnoredPatternWithPrefix
()
throws
Exception
{
DiscoveryClientRouteLocator
routeLocator
=
new
DiscoveryClientRouteLocator
(
"/"
,
this
.
discovery
,
this
.
properties
);
this
.
properties
.
setIgnoredPatterns
(
Collections
.
singletonList
(
IGNOREDPATTERN
));
this
.
properties
.
getRoutes
().
put
(
"foo"
,
new
ZuulRoute
(
"/foo/**"
));
this
.
properties
.
setPrefix
(
"/proxy"
);
...
...
@@ -198,9 +198,10 @@ public class DiscoveryClientRouteLocatorTests {
}
@Test
public
void
testGetMatchingPathWithMatchingIgnoredPatternWithServletPath
()
throws
Exception
{
DiscoveryClientRouteLocator
routeLocator
=
new
DiscoveryClientRouteLocator
(
"/app"
,
this
.
discovery
,
this
.
properties
);
public
void
testGetMatchingPathWithMatchingIgnoredPatternWithServletPath
()
throws
Exception
{
DiscoveryClientRouteLocator
routeLocator
=
new
DiscoveryClientRouteLocator
(
"/app"
,
this
.
discovery
,
this
.
properties
);
this
.
properties
.
setIgnoredPatterns
(
Collections
.
singletonList
(
IGNOREDPATTERN
));
this
.
properties
.
getRoutes
().
put
(
"foo"
,
new
ZuulRoute
(
"/foo/**"
));
this
.
properties
.
init
();
...
...
@@ -210,9 +211,10 @@ public class DiscoveryClientRouteLocatorTests {
}
@Test
public
void
testGetMatchingPathWithoutMatchingIgnoredPatternWithNoPrefixStripping
()
throws
Exception
{
DiscoveryClientRouteLocator
routeLocator
=
new
DiscoveryClientRouteLocator
(
"/"
,
this
.
discovery
,
this
.
properties
);
public
void
testGetMatchingPathWithoutMatchingIgnoredPatternWithNoPrefixStripping
()
throws
Exception
{
DiscoveryClientRouteLocator
routeLocator
=
new
DiscoveryClientRouteLocator
(
"/"
,
this
.
discovery
,
this
.
properties
);
this
.
properties
.
setIgnoredPatterns
(
Collections
.
singletonList
(
IGNOREDPATTERN
));
this
.
properties
.
getRoutes
().
put
(
"foo"
,
new
ZuulRoute
(
"foo"
,
"/foo/**"
,
"foo"
,
null
,
false
,
null
));
...
...
@@ -225,10 +227,12 @@ public class DiscoveryClientRouteLocatorTests {
}
@Test
public
void
testGetMatchingPathWithMatchingIgnoredPatternWithNoPrefixStripping
()
throws
Exception
{
DiscoveryClientRouteLocator
routeLocator
=
new
DiscoveryClientRouteLocator
(
"/"
,
this
.
discovery
,
this
.
properties
);
this
.
properties
.
setIgnoredPatterns
(
Collections
.
singletonList
(
"/proxy"
+
IGNOREDPATTERN
));
public
void
testGetMatchingPathWithMatchingIgnoredPatternWithNoPrefixStripping
()
throws
Exception
{
DiscoveryClientRouteLocator
routeLocator
=
new
DiscoveryClientRouteLocator
(
"/"
,
this
.
discovery
,
this
.
properties
);
this
.
properties
.
setIgnoredPatterns
(
Collections
.
singletonList
(
"/proxy"
+
IGNOREDPATTERN
));
this
.
properties
.
getRoutes
().
put
(
"foo"
,
new
ZuulRoute
(
"foo"
,
"/foo/**"
,
"foo"
,
null
,
false
,
null
));
this
.
properties
.
setStripPrefix
(
false
);
...
...
@@ -239,9 +243,10 @@ public class DiscoveryClientRouteLocatorTests {
}
@Test
public
void
testGetMatchingPathWithoutMatchingIgnoredPatternWithLocalPrefixStripping
()
throws
Exception
{
DiscoveryClientRouteLocator
routeLocator
=
new
DiscoveryClientRouteLocator
(
"/"
,
this
.
discovery
,
this
.
properties
);
public
void
testGetMatchingPathWithoutMatchingIgnoredPatternWithLocalPrefixStripping
()
throws
Exception
{
DiscoveryClientRouteLocator
routeLocator
=
new
DiscoveryClientRouteLocator
(
"/"
,
this
.
discovery
,
this
.
properties
);
this
.
properties
.
setIgnoredPatterns
(
Collections
.
singletonList
(
IGNOREDPATTERN
));
this
.
properties
.
getRoutes
().
put
(
"foo"
,
new
ZuulRoute
(
"/foo/**"
,
"foo"
));
this
.
properties
.
setStripPrefix
(
false
);
...
...
@@ -253,10 +258,12 @@ public class DiscoveryClientRouteLocatorTests {
}
@Test
public
void
testGetMatchingPathWithMatchingIgnoredPatternWithLocalPrefixStripping
()
throws
Exception
{
DiscoveryClientRouteLocator
routeLocator
=
new
DiscoveryClientRouteLocator
(
"/"
,
this
.
discovery
,
this
.
properties
);
this
.
properties
.
setIgnoredPatterns
(
Collections
.
singletonList
(
"/proxy"
+
IGNOREDPATTERN
));
public
void
testGetMatchingPathWithMatchingIgnoredPatternWithLocalPrefixStripping
()
throws
Exception
{
DiscoveryClientRouteLocator
routeLocator
=
new
DiscoveryClientRouteLocator
(
"/"
,
this
.
discovery
,
this
.
properties
);
this
.
properties
.
setIgnoredPatterns
(
Collections
.
singletonList
(
"/proxy"
+
IGNOREDPATTERN
));
this
.
properties
.
getRoutes
().
put
(
"foo"
,
new
ZuulRoute
(
"/foo/**"
,
"foo"
));
this
.
properties
.
setStripPrefix
(
false
);
this
.
properties
.
setPrefix
(
"/proxy"
);
...
...
@@ -266,9 +273,10 @@ public class DiscoveryClientRouteLocatorTests {
}
@Test
public
void
testGetMatchingPathWithoutMatchingIgnoredPatternWithGlobalPrefixStripping
()
throws
Exception
{
DiscoveryClientRouteLocator
routeLocator
=
new
DiscoveryClientRouteLocator
(
"/"
,
this
.
discovery
,
this
.
properties
);
public
void
testGetMatchingPathWithoutMatchingIgnoredPatternWithGlobalPrefixStripping
()
throws
Exception
{
DiscoveryClientRouteLocator
routeLocator
=
new
DiscoveryClientRouteLocator
(
"/"
,
this
.
discovery
,
this
.
properties
);
this
.
properties
.
setIgnoredPatterns
(
Collections
.
singletonList
(
IGNOREDPATTERN
));
this
.
properties
.
getRoutes
().
put
(
"foo"
,
new
ZuulRoute
(
"foo"
,
"/foo/**"
,
"foo"
,
null
,
false
,
null
));
...
...
@@ -280,10 +288,12 @@ public class DiscoveryClientRouteLocatorTests {
}
@Test
public
void
testGetMatchingPathWithMatchingIgnoredPatternWithGlobalPrefixStripping
()
throws
Exception
{
DiscoveryClientRouteLocator
routeLocator
=
new
DiscoveryClientRouteLocator
(
"/"
,
this
.
discovery
,
this
.
properties
);
this
.
properties
.
setIgnoredPatterns
(
Collections
.
singletonList
(
"/proxy"
+
IGNOREDPATTERN
));
public
void
testGetMatchingPathWithMatchingIgnoredPatternWithGlobalPrefixStripping
()
throws
Exception
{
DiscoveryClientRouteLocator
routeLocator
=
new
DiscoveryClientRouteLocator
(
"/"
,
this
.
discovery
,
this
.
properties
);
this
.
properties
.
setIgnoredPatterns
(
Collections
.
singletonList
(
"/proxy"
+
IGNOREDPATTERN
));
this
.
properties
.
getRoutes
().
put
(
"foo"
,
new
ZuulRoute
(
"foo"
,
"/foo/**"
,
"foo"
,
null
,
false
,
null
));
this
.
properties
.
setPrefix
(
"/proxy"
);
...
...
@@ -293,9 +303,10 @@ public class DiscoveryClientRouteLocatorTests {
}
@Test
public
void
testGetMatchingPathWithMatchingIgnoredPatternWithRoutePrefixStripping
()
throws
Exception
{
DiscoveryClientRouteLocator
routeLocator
=
new
DiscoveryClientRouteLocator
(
"/"
,
this
.
discovery
,
this
.
properties
);
public
void
testGetMatchingPathWithMatchingIgnoredPatternWithRoutePrefixStripping
()
throws
Exception
{
DiscoveryClientRouteLocator
routeLocator
=
new
DiscoveryClientRouteLocator
(
"/"
,
this
.
discovery
,
this
.
properties
);
ZuulRoute
zuulRoute
=
new
ZuulRoute
(
"/foo/**"
);
zuulRoute
.
setStripPrefix
(
true
);
this
.
properties
.
setIgnoredPatterns
(
Collections
.
singletonList
(
IGNOREDPATTERN
));
...
...
@@ -308,11 +319,11 @@ public class DiscoveryClientRouteLocatorTests {
@Test
public
void
testGetRoutes
()
{
DiscoveryClientRouteLocator
routeLocator
=
new
DiscoveryClientRouteLocator
(
"/"
,
this
.
discovery
,
this
.
properties
);
DiscoveryClientRouteLocator
routeLocator
=
new
DiscoveryClientRouteLocator
(
"/"
,
this
.
discovery
,
this
.
properties
);
this
.
properties
.
getRoutes
().
put
(
ASERVICE
,
new
ZuulRoute
(
"/"
+
ASERVICE
+
"/**"
));
this
.
properties
.
init
();
Map
<
String
,
String
>
routesMap
=
routeLocator
.
getRoutes
();
List
<
Route
>
routesMap
=
routeLocator
.
getRoutes
();
assertNotNull
(
"routesMap was null"
,
routesMap
);
assertFalse
(
"routesMap was empty"
,
routesMap
.
isEmpty
());
assertMapping
(
routesMap
,
ASERVICE
);
...
...
@@ -320,23 +331,23 @@ public class DiscoveryClientRouteLocatorTests {
@Test
public
void
testGetRoutesWithMapping
()
{
DiscoveryClientRouteLocator
routeLocator
=
new
DiscoveryClientRouteLocator
(
"/"
,
this
.
discovery
,
this
.
properties
);
DiscoveryClientRouteLocator
routeLocator
=
new
DiscoveryClientRouteLocator
(
"/"
,
this
.
discovery
,
this
.
properties
);
this
.
properties
.
getRoutes
().
put
(
ASERVICE
,
new
ZuulRoute
(
"/"
+
ASERVICE
+
"/**"
,
ASERVICE
));
this
.
properties
.
setPrefix
(
"/foo"
);
Map
<
String
,
String
>
routesMap
=
routeLocator
.
getRoutes
();
List
<
Route
>
routesMap
=
routeLocator
.
getRoutes
();
assertMapping
(
routesMap
,
ASERVICE
,
"foo/"
+
ASERVICE
);
}
@Test
public
void
testGetPhysicalRoutes
()
{
DiscoveryClientRouteLocator
routeLocator
=
new
DiscoveryClientRouteLocator
(
"/"
,
this
.
discovery
,
this
.
properties
);
DiscoveryClientRouteLocator
routeLocator
=
new
DiscoveryClientRouteLocator
(
"/"
,
this
.
discovery
,
this
.
properties
);
this
.
properties
.
getRoutes
().
put
(
ASERVICE
,
new
ZuulRoute
(
"/"
+
ASERVICE
+
"/**"
,
"http://"
+
ASERVICE
));
Map
<
String
,
String
>
routesMap
=
routeLocator
.
getRoutes
();
List
<
Route
>
routesMap
=
routeLocator
.
getRoutes
();
assertNotNull
(
"routesMap was null"
,
routesMap
);
assertFalse
(
"routesMap was empty"
,
routesMap
.
isEmpty
());
assertMapping
(
routesMap
,
"http://"
+
ASERVICE
,
ASERVICE
);
...
...
@@ -344,10 +355,10 @@ public class DiscoveryClientRouteLocatorTests {
@Test
public
void
testGetDefaultRoute
()
{
DiscoveryClientRouteLocator
routeLocator
=
new
DiscoveryClientRouteLocator
(
"/"
,
this
.
discovery
,
this
.
properties
);
DiscoveryClientRouteLocator
routeLocator
=
new
DiscoveryClientRouteLocator
(
"/"
,
this
.
discovery
,
this
.
properties
);
this
.
properties
.
getRoutes
().
put
(
ASERVICE
,
new
ZuulRoute
(
"/**"
,
ASERVICE
));
Map
<
String
,
String
>
routesMap
=
routeLocator
.
getRoutes
();
List
<
Route
>
routesMap
=
routeLocator
.
getRoutes
();
assertNotNull
(
"routesMap was null"
,
routesMap
);
assertFalse
(
"routesMap was empty"
,
routesMap
.
isEmpty
());
assertDefaultMapping
(
routesMap
,
ASERVICE
);
...
...
@@ -355,11 +366,11 @@ public class DiscoveryClientRouteLocatorTests {
@Test
public
void
testGetDefaultPhysicalRoute
()
{
DiscoveryClientRouteLocator
routeLocator
=
new
DiscoveryClientRouteLocator
(
"/"
,
this
.
discovery
,
this
.
properties
);
DiscoveryClientRouteLocator
routeLocator
=
new
DiscoveryClientRouteLocator
(
"/"
,
this
.
discovery
,
this
.
properties
);
this
.
properties
.
getRoutes
().
put
(
ASERVICE
,
new
ZuulRoute
(
"/**"
,
"http://"
+
ASERVICE
));
Map
<
String
,
String
>
routesMap
=
routeLocator
.
getRoutes
();
List
<
Route
>
routesMap
=
routeLocator
.
getRoutes
();
assertNotNull
(
"routesMap was null"
,
routesMap
);
assertFalse
(
"routesMap was empty"
,
routesMap
.
isEmpty
());
assertDefaultMapping
(
routesMap
,
"http://"
+
ASERVICE
);
...
...
@@ -367,50 +378,49 @@ public class DiscoveryClientRouteLocatorTests {
@Test
public
void
testIgnoreRoutes
()
{
DiscoveryClientRouteLocator
routeLocator
=
new
DiscoveryClientRouteLocator
(
"/"
,
this
.
discovery
,
this
.
properties
);
DiscoveryClientRouteLocator
routeLocator
=
new
DiscoveryClientRouteLocator
(
"/"
,
this
.
discovery
,
this
.
properties
);
this
.
properties
.
setIgnoredServices
(
Collections
.
singletonList
(
IGNOREDSERVICE
));
given
(
this
.
discovery
.
getServices
())
.
willReturn
(
Collections
.
singletonList
(
IGNOREDSERVICE
));
Map
<
String
,
String
>
routesMap
=
routeLocator
.
getRoutes
();
String
serviceId
=
routesMap
.
get
(
getMapping
(
IGNOREDSERVICE
));
assertNull
(
"routes did not ignore "
+
IGNOREDSERVICE
,
serviceId
);
given
(
this
.
discovery
.
getServices
())
.
willReturn
(
Collections
.
singletonList
(
IGNOREDSERVICE
));
List
<
Route
>
routesMap
=
routeLocator
.
getRoutes
();
assertNull
(
"routes did not ignore "
+
IGNOREDSERVICE
,
getRoute
(
routesMap
,
getMapping
(
IGNOREDSERVICE
))
);
}
@Test
public
void
testIgnoreRoutesWithPattern
()
{
DiscoveryClientRouteLocator
routeLocator
=
new
DiscoveryClientRouteLocator
(
"/"
,
this
.
discovery
,
this
.
properties
);
DiscoveryClientRouteLocator
routeLocator
=
new
DiscoveryClientRouteLocator
(
"/"
,
this
.
discovery
,
this
.
properties
);
this
.
properties
.
setIgnoredServices
(
Collections
.
singletonList
(
"ignore*"
));
given
(
this
.
discovery
.
getServices
())
.
willReturn
(
Collections
.
singletonList
(
IGNOREDSERVICE
));
Map
<
String
,
String
>
routesMap
=
routeLocator
.
getRoutes
();
String
serviceId
=
routesMap
.
get
(
getMapping
(
IGNOREDSERVICE
));
assertNull
(
"routes did not ignore "
+
IGNOREDSERVICE
,
serviceId
);
given
(
this
.
discovery
.
getServices
())
.
willReturn
(
Collections
.
singletonList
(
IGNOREDSERVICE
));
List
<
Route
>
routesMap
=
routeLocator
.
getRoutes
();
assertNull
(
"routes did not ignore "
+
IGNOREDSERVICE
,
getRoute
(
routesMap
,
getMapping
(
IGNOREDSERVICE
))
);
}
@Test
public
void
testIgnoreAllRoutes
()
{
DiscoveryClientRouteLocator
routeLocator
=
new
DiscoveryClientRouteLocator
(
"/"
,
this
.
discovery
,
this
.
properties
);
DiscoveryClientRouteLocator
routeLocator
=
new
DiscoveryClientRouteLocator
(
"/"
,
this
.
discovery
,
this
.
properties
);
this
.
properties
.
setIgnoredServices
(
Collections
.
singletonList
(
"*"
));
given
(
this
.
discovery
.
getServices
())
.
willReturn
(
Collections
.
singletonList
(
IGNOREDSERVICE
));
Map
<
String
,
String
>
routesMap
=
routeLocator
.
getRoutes
();
String
serviceId
=
routesMap
.
get
(
getMapping
(
IGNOREDSERVICE
));
assertNull
(
"routes did not ignore "
+
IGNOREDSERVICE
,
serviceId
);
given
(
this
.
discovery
.
getServices
())
.
willReturn
(
Collections
.
singletonList
(
IGNOREDSERVICE
));
List
<
Route
>
routesMap
=
routeLocator
.
getRoutes
();
assertNull
(
"routes did not ignore "
+
IGNOREDSERVICE
,
getRoute
(
routesMap
,
getMapping
(
IGNOREDSERVICE
))
);
}
@Test
public
void
testIgnoredRouteIncludedIfConfiguredAndDiscovered
()
{
this
.
properties
.
getRoutes
().
put
(
"foo"
,
new
ZuulRoute
(
"/foo/**"
));
DiscoveryClientRouteLocator
routeLocator
=
new
DiscoveryClientRouteLocator
(
"/"
,
this
.
discovery
,
this
.
properties
);
DiscoveryClientRouteLocator
routeLocator
=
new
DiscoveryClientRouteLocator
(
"/"
,
this
.
discovery
,
this
.
properties
);
this
.
properties
.
setIgnoredServices
(
Collections
.
singletonList
(
"*"
));
given
(
this
.
discovery
.
getServices
()).
willReturn
(
Collections
.
singletonList
(
"foo"
));
Map
<
String
,
String
>
routesMap
=
routeLocator
.
getRoutes
();
String
serviceId
=
routesMap
.
get
(
getMapping
(
"foo"
));
assertNotNull
(
"routes ignored foo"
,
serviceId
);
List
<
Route
>
routesMap
=
routeLocator
.
getRoutes
();
assertNotNull
(
"routes ignored foo"
,
getRoute
(
routesMap
,
"/foo/**"
));
}
@Test
...
...
@@ -419,12 +429,12 @@ public class DiscoveryClientRouteLocatorTests {
route
.
setStripPrefix
(
true
);
route
.
setRetryable
(
Boolean
.
TRUE
);
this
.
properties
.
getRoutes
().
put
(
"foo"
,
route
);
DiscoveryClientRouteLocator
routeLocator
=
new
DiscoveryClientRouteLocator
(
"/"
,
this
.
discovery
,
this
.
properties
);
DiscoveryClientRouteLocator
routeLocator
=
new
DiscoveryClientRouteLocator
(
"/"
,
this
.
discovery
,
this
.
properties
);
this
.
properties
.
setIgnoredServices
(
Collections
.
singletonList
(
"*"
));
given
(
this
.
discovery
.
getServices
()).
willReturn
(
Collections
.
singletonList
(
"foo"
));
LinkedHashMap
<
String
,
ZuulRoute
>
routes
=
routeLocator
.
locateRoutes
();
ZuulRoute
actual
=
routes
.
get
(
getMapping
(
"foo"
)
);
ZuulRoute
actual
=
routes
.
get
(
"/foo/**"
);
assertNotNull
(
"routes ignored foo"
,
actual
);
assertTrue
(
"stripPrefix is wrong"
,
actual
.
isStripPrefix
());
assertEquals
(
"retryable is wrong"
,
Boolean
.
TRUE
,
actual
.
getRetryable
());
...
...
@@ -432,13 +442,13 @@ public class DiscoveryClientRouteLocatorTests {
@Test
public
void
testIgnoredRouteNonServiceIdPathRemains
()
{
//This is how you setup a route defined like zuul.proxy.route.foo=/**
//
This is how you setup a route defined like zuul.proxy.route.foo=/**
ZuulRoute
route
=
new
ZuulRoute
(
"/**"
,
"foo"
);
route
.
setId
(
"foo"
);
this
.
properties
.
getRoutes
().
put
(
"foo"
,
route
);
DiscoveryClientRouteLocator
routeLocator
=
new
DiscoveryClientRouteLocator
(
"/"
,
this
.
discovery
,
this
.
properties
);
DiscoveryClientRouteLocator
routeLocator
=
new
DiscoveryClientRouteLocator
(
"/"
,
this
.
discovery
,
this
.
properties
);
this
.
properties
.
setIgnoredServices
(
Collections
.
singletonList
(
"*"
));
given
(
this
.
discovery
.
getServices
()).
willReturn
(
Collections
.
singletonList
(
"foo"
));
LinkedHashMap
<
String
,
ZuulRoute
>
routes
=
routeLocator
.
locateRoutes
();
...
...
@@ -451,24 +461,23 @@ public class DiscoveryClientRouteLocatorTests {
@Test
public
void
testIgnoredRouteIncludedIfConfiguredAndNotDiscovered
()
{
this
.
properties
.
getRoutes
()
.
put
(
"foo"
,
new
ZuulRoute
(
"/foo/**"
,
"http://foo.com"
));
DiscoveryClientRouteLocator
routeLocator
=
new
DiscoveryClientRouteLocator
(
"/"
,
this
.
discovery
,
this
.
properties
);
this
.
properties
.
getRoutes
()
.
put
(
"foo"
,
new
ZuulRoute
(
"/foo/**"
,
"http://foo.com"
));
DiscoveryClientRouteLocator
routeLocator
=
new
DiscoveryClientRouteLocator
(
"/"
,
this
.
discovery
,
this
.
properties
);
this
.
properties
.
setIgnoredServices
(
Collections
.
singletonList
(
"*"
));
given
(
this
.
discovery
.
getServices
()).
willReturn
(
Collections
.
singletonList
(
"bar"
));
Map
<
String
,
String
>
routesMap
=
routeLocator
.
getRoutes
();
String
id
=
routesMap
.
get
(
getMapping
(
"foo"
));
assertNotNull
(
"routes ignored foo"
,
id
);
List
<
Route
>
routesMap
=
routeLocator
.
getRoutes
();
assertNotNull
(
"routes ignored foo"
,
getRoute
(
routesMap
,
getMapping
(
"foo"
)));
}
@Test
public
void
testAutoRoutes
()
{
DiscoveryClientRouteLocator
routeLocator
=
new
DiscoveryClientRouteLocator
(
"/"
,
this
.
discovery
,
this
.
properties
);
given
(
this
.
discovery
.
getServices
())
.
willReturn
(
Collections
.
singletonList
(
MYSERVICE
));
Map
<
String
,
String
>
routesMap
=
routeLocator
.
getRoutes
();
DiscoveryClientRouteLocator
routeLocator
=
new
DiscoveryClientRouteLocator
(
"/"
,
this
.
discovery
,
this
.
properties
);
given
(
this
.
discovery
.
getServices
())
.
willReturn
(
Collections
.
singletonList
(
MYSERVICE
));
List
<
Route
>
routesMap
=
routeLocator
.
getRoutes
();
assertNotNull
(
"routesMap was null"
,
routesMap
);
assertFalse
(
"routesMap was empty"
,
routesMap
.
isEmpty
());
assertMapping
(
routesMap
,
MYSERVICE
);
...
...
@@ -476,14 +485,14 @@ public class DiscoveryClientRouteLocatorTests {
@Test
public
void
testAutoRoutesCanBeOverridden
()
{
ZuulRoute
route
=
new
ZuulRoute
(
"/"
+
MYSERVICE
+
"/**"
,
"http://example.com/"
+
MYSERVICE
);
ZuulRoute
route
=
new
ZuulRoute
(
"/"
+
MYSERVICE
+
"/**"
,
"http://example.com/"
+
MYSERVICE
);
this
.
properties
.
getRoutes
().
put
(
MYSERVICE
,
route
);
DiscoveryClientRouteLocator
routeLocator
=
new
DiscoveryClientRouteLocator
(
"/"
,
this
.
discovery
,
this
.
properties
);
given
(
this
.
discovery
.
getServices
())
.
willReturn
(
Collections
.
singletonList
(
MYSERVICE
));
Map
<
String
,
String
>
routesMap
=
routeLocator
.
getRoutes
();
DiscoveryClientRouteLocator
routeLocator
=
new
DiscoveryClientRouteLocator
(
"/"
,
this
.
discovery
,
this
.
properties
);
given
(
this
.
discovery
.
getServices
())
.
willReturn
(
Collections
.
singletonList
(
MYSERVICE
));
List
<
Route
>
routesMap
=
routeLocator
.
getRoutes
();
assertNotNull
(
"routesMap was null"
,
routesMap
);
assertFalse
(
"routesMap was empty"
,
routesMap
.
isEmpty
());
assertMapping
(
routesMap
,
"http://example.com/"
+
MYSERVICE
,
MYSERVICE
);
...
...
@@ -491,17 +500,19 @@ public class DiscoveryClientRouteLocatorTests {
@Test
public
void
testIgnoredLocalServiceByDefault
()
{
given
(
this
.
discovery
.
getServices
()).
willReturn
(
Collections
.
singletonList
(
MYSERVICE
));
given
(
this
.
discovery
.
getLocalServiceInstance
()).
willReturn
(
new
DefaultServiceInstance
(
MYSERVICE
,
"localhost"
,
80
,
false
));
given
(
this
.
discovery
.
getServices
())
.
willReturn
(
Collections
.
singletonList
(
MYSERVICE
));
given
(
this
.
discovery
.
getLocalServiceInstance
()).
willReturn
(
new
DefaultServiceInstance
(
MYSERVICE
,
"localhost"
,
80
,
false
));
DiscoveryClientRouteLocator
routeLocator
=
new
DiscoveryClientRouteLocator
(
"/"
,
this
.
discovery
,
this
.
properties
);
DiscoveryClientRouteLocator
routeLocator
=
new
DiscoveryClientRouteLocator
(
"/"
,
this
.
discovery
,
this
.
properties
);
LinkedHashMap
<
String
,
ZuulRoute
>
routes
=
routeLocator
.
locateRoutes
();
ZuulRoute
actual
=
routes
.
get
(
"/**"
);
assertNull
(
"routes didn't ignore "
+
MYSERVICE
,
actual
);
assertNull
(
"routes didn't ignore "
+
MYSERVICE
,
actual
);
Map
<
String
,
String
>
routesMap
=
routeLocator
.
getRoutes
();
List
<
Route
>
routesMap
=
routeLocator
.
getRoutes
();
assertNotNull
(
"routesMap was null"
,
routesMap
);
assertTrue
(
"routesMap was empty"
,
routesMap
.
isEmpty
());
}
...
...
@@ -510,12 +521,13 @@ public class DiscoveryClientRouteLocatorTests {
public
void
testIgnoredLocalServiceFalse
()
{
this
.
properties
.
setIgnoreLocalService
(
false
);
given
(
this
.
discovery
.
getServices
()).
willReturn
(
Collections
.
singletonList
(
MYSERVICE
));
given
(
this
.
discovery
.
getServices
())
.
willReturn
(
Collections
.
singletonList
(
MYSERVICE
));
DiscoveryClientRouteLocator
routeLocator
=
new
DiscoveryClientRouteLocator
(
"/"
,
this
.
discovery
,
this
.
properties
);
DiscoveryClientRouteLocator
routeLocator
=
new
DiscoveryClientRouteLocator
(
"/"
,
this
.
discovery
,
this
.
properties
);
Map
<
String
,
String
>
routesMap
=
routeLocator
.
getRoutes
();
List
<
Route
>
routesMap
=
routeLocator
.
getRoutes
();
assertNotNull
(
"routesMap was null"
,
routesMap
);
assertFalse
(
"routesMap was empty"
,
routesMap
.
isEmpty
());
assertMapping
(
routesMap
,
MYSERVICE
);
...
...
@@ -523,13 +535,15 @@ public class DiscoveryClientRouteLocatorTests {
@Test
public
void
testRegExServiceRouteMapperNoServiceIdMatches
()
{
given
(
this
.
discovery
.
getServices
()).
willReturn
(
Collections
.
singletonList
(
MYSERVICE
));
PatternServiceRouteMapper
regExServiceRouteMapper
=
new
PatternServiceRouteMapper
(
properties
.
getRegexMapper
().
getServicePattern
(),
properties
.
getRegexMapper
().
getRoutePattern
());
DiscoveryClientRouteLocator
routeLocator
=
new
DiscoveryClientRouteLocator
(
"/"
,
this
.
discovery
,
this
.
properties
,
regExServiceRouteMapper
);
Map
<
String
,
String
>
routesMap
=
routeLocator
.
getRoutes
();
given
(
this
.
discovery
.
getServices
())
.
willReturn
(
Collections
.
singletonList
(
MYSERVICE
));
PatternServiceRouteMapper
regExServiceRouteMapper
=
new
PatternServiceRouteMapper
(
this
.
properties
.
getRegexMapper
().
getServicePattern
(),
this
.
properties
.
getRegexMapper
().
getRoutePattern
());
DiscoveryClientRouteLocator
routeLocator
=
new
DiscoveryClientRouteLocator
(
"/"
,
this
.
discovery
,
this
.
properties
,
regExServiceRouteMapper
);
List
<
Route
>
routesMap
=
routeLocator
.
getRoutes
();
assertNotNull
(
"routesMap was null"
,
routesMap
);
assertFalse
(
"routesMap was empty"
,
routesMap
.
isEmpty
());
assertMapping
(
routesMap
,
MYSERVICE
);
...
...
@@ -537,38 +551,53 @@ public class DiscoveryClientRouteLocatorTests {
@Test
public
void
testRegExServiceRouteMapperServiceIdMatches
()
{
given
(
this
.
discovery
.
getServices
()).
willReturn
(
Collections
.
singletonList
(
"rest-service-v1"
));
PatternServiceRouteMapper
regExServiceRouteMapper
=
new
PatternServiceRouteMapper
(
properties
.
getRegexMapper
().
getServicePattern
(),
properties
.
getRegexMapper
().
getRoutePattern
());
DiscoveryClientRouteLocator
routeLocator
=
new
DiscoveryClientRouteLocator
(
"/"
,
this
.
discovery
,
this
.
properties
,
regExServiceRouteMapper
);
Map
<
String
,
String
>
routesMap
=
routeLocator
.
getRoutes
();
given
(
this
.
discovery
.
getServices
())
.
willReturn
(
Collections
.
singletonList
(
"rest-service-v1"
));
PatternServiceRouteMapper
regExServiceRouteMapper
=
new
PatternServiceRouteMapper
(
this
.
properties
.
getRegexMapper
().
getServicePattern
(),
this
.
properties
.
getRegexMapper
().
getRoutePattern
());
DiscoveryClientRouteLocator
routeLocator
=
new
DiscoveryClientRouteLocator
(
"/"
,
this
.
discovery
,
this
.
properties
,
regExServiceRouteMapper
);
List
<
Route
>
routesMap
=
routeLocator
.
getRoutes
();
assertNotNull
(
"routesMap was null"
,
routesMap
);
assertFalse
(
"routesMap was empty"
,
routesMap
.
isEmpty
());
assertMapping
(
routesMap
,
"rest-service-v1"
,
"v1/rest-service"
);
}
protected
void
assertMapping
(
Map
<
String
,
String
>
routesMap
,
String
serviceId
)
{
protected
void
assertMapping
(
List
<
Route
>
routesMap
,
String
serviceId
)
{
assertMapping
(
routesMap
,
serviceId
,
serviceId
);
}
protected
void
assertMapping
(
Map
<
String
,
String
>
routesMap
,
String
expectedRoute
,
protected
void
assertMapping
(
List
<
Route
>
routesMap
,
String
expectedRoute
,
String
key
)
{
String
mapping
=
getMapping
(
key
);
String
route
=
routesMap
.
get
(
mapping
);
assertEquals
(
"routesMap had wrong value for "
+
mapping
,
expectedRoute
,
route
);
Route
route
=
getRoute
(
routesMap
,
mapping
);
assertNotNull
(
"Could not find route for "
+
key
,
route
);
String
location
=
route
.
getLocation
();
assertEquals
(
"routesMap had wrong value for "
+
mapping
,
expectedRoute
,
location
);
}
private
String
getMapping
(
String
serviceId
)
{
return
"/"
+
serviceId
+
"/**"
;
}
protected
void
assertDefaultMapping
(
Map
<
String
,
String
>
routesMap
,
String
expectedRoute
)
{
protected
void
assertDefaultMapping
(
List
<
Route
>
routesMap
,
String
expectedRoute
)
{
String
mapping
=
"/**"
;
String
route
=
routesMap
.
get
(
mapping
);
String
route
=
getRoute
(
routesMap
,
mapping
).
getLocation
(
);
assertEquals
(
"routesMap had wrong value for "
+
mapping
,
expectedRoute
,
route
);
}
private
Route
getRoute
(
List
<
Route
>
routes
,
String
path
)
{
for
(
Route
route
:
routes
)
{
String
pattern
=
route
.
getPath
();
if
(
StringUtils
.
hasText
(
route
.
getPrefix
()))
{
pattern
=
route
.
getPrefix
()
+
route
.
getPath
();
}
if
(
path
.
equals
(
pattern
))
{
return
route
;
}
}
return
null
;
}
}
spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/zuul/web/ZuulHandlerMappingTests.java
View file @
f9fc8ba8
...
...
@@ -22,6 +22,7 @@ import org.junit.Before;
import
org.junit.Test
;
import
org.mockito.Mockito
;
import
org.springframework.boot.autoconfigure.web.ErrorController
;
import
org.springframework.cloud.netflix.zuul.filters.Route
;
import
org.springframework.cloud.netflix.zuul.filters.RouteLocator
;
import
org.springframework.mock.web.MockHttpServletRequest
;
...
...
@@ -53,8 +54,8 @@ public class ZuulHandlerMappingTests {
@Test
public
void
mappedPath
()
throws
Exception
{
Mockito
.
when
(
this
.
locator
.
getRoutes
())
.
thenReturn
(
Collections
.
singletonMap
(
"/foo/**"
,
"foo"
));
Mockito
.
when
(
this
.
locator
.
getRoutes
())
.
thenReturn
(
Collections
.
singletonList
(
new
Route
(
"foo"
,
"/foo/**"
,
"foo"
,
""
,
null
)
));
this
.
request
.
setServletPath
(
"/foo/"
);
this
.
mapping
.
setDirty
(
true
);
assertNotNull
(
this
.
mapping
.
getHandler
(
this
.
request
));
...
...
@@ -62,8 +63,8 @@ public class ZuulHandlerMappingTests {
@Test
public
void
defaultPath
()
throws
Exception
{
Mockito
.
when
(
this
.
locator
.
getRoutes
())
.
thenReturn
(
Collections
.
singletonMap
(
"/**"
,
"default"
));
Mockito
.
when
(
this
.
locator
.
getRoutes
())
.
thenReturn
(
Collections
.
singletonList
(
new
Route
(
"default"
,
"/**"
,
"foo"
,
""
,
null
)
));
;
this
.
request
.
setServletPath
(
"/"
);
this
.
mapping
.
setDirty
(
true
);
...
...
@@ -72,8 +73,8 @@ public class ZuulHandlerMappingTests {
@Test
public
void
errorPath
()
throws
Exception
{
Mockito
.
when
(
this
.
locator
.
getRoutes
())
.
thenReturn
(
Collections
.
singletonMap
(
"/**"
,
"default"
));
Mockito
.
when
(
this
.
locator
.
getRoutes
())
.
thenReturn
(
Collections
.
singletonList
(
new
Route
(
"default"
,
"/**"
,
"foo"
,
""
,
null
)
));
this
.
request
.
setServletPath
(
"/error"
);
this
.
mapping
.
setDirty
(
true
);
assertNull
(
this
.
mapping
.
getHandler
(
this
.
request
));
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment