|
4 | 4 | import java.util.Collections; |
5 | 5 | import java.util.LinkedHashSet; |
6 | 6 |
|
| 7 | +import com.netflix.loadbalancer.ILoadBalancer; |
| 8 | +import com.netflix.loadbalancer.Server; |
7 | 9 | import org.junit.Before; |
8 | 10 | import org.junit.Test; |
9 | 11 | import org.junit.runner.RunWith; |
|
15 | 17 | import org.springframework.cloud.client.ServiceInstance; |
16 | 18 | import org.springframework.cloud.client.loadbalancer.LoadBalancerClient; |
17 | 19 | import org.springframework.cloud.gateway.support.NotFoundException; |
| 20 | +import org.springframework.cloud.netflix.ribbon.RibbonLoadBalancerClient; |
| 21 | +import org.springframework.cloud.netflix.ribbon.RibbonLoadBalancerContext; |
| 22 | +import org.springframework.cloud.netflix.ribbon.SpringClientFactory; |
18 | 23 | import org.springframework.http.HttpMethod; |
19 | 24 | import org.springframework.mock.http.server.reactive.MockServerHttpRequest; |
20 | 25 | import org.springframework.mock.web.server.MockServerWebExchange; |
@@ -196,18 +201,20 @@ private ServerWebExchange testFilter(MockServerHttpRequest request, URI uri) { |
196 | 201 | ServerWebExchange exchange = MockServerWebExchange.from(request); |
197 | 202 | exchange.getAttributes().put(GATEWAY_REQUEST_URL_ATTR, uri); |
198 | 203 |
|
199 | | - GatewayFilterChain filterChain = mock(GatewayFilterChain.class); |
200 | | - |
201 | 204 | ArgumentCaptor<ServerWebExchange> captor = ArgumentCaptor.forClass(ServerWebExchange.class); |
202 | | - when(filterChain.filter(captor.capture())).thenReturn(Mono.empty()); |
| 205 | + when(chain.filter(captor.capture())).thenReturn(Mono.empty()); |
| 206 | + |
| 207 | + SpringClientFactory clientFactory = mock(SpringClientFactory.class); |
| 208 | + ILoadBalancer loadBalancer = mock(ILoadBalancer.class); |
| 209 | + |
| 210 | + when(clientFactory.getLoadBalancerContext("service1")).thenReturn(new RibbonLoadBalancerContext(loadBalancer)); |
| 211 | + when(clientFactory.getLoadBalancer("service1")).thenReturn(loadBalancer); |
| 212 | + when(loadBalancer.chooseServer(any())).thenReturn(new Server("service1-host1", 8081)); |
203 | 213 |
|
204 | | - LoadBalancerClient loadBalancerClient = mock(LoadBalancerClient.class); |
205 | | - when(loadBalancerClient.choose("service1")). |
206 | | - thenReturn(new DefaultServiceInstance("service1", "service1-host1", 8081, |
207 | | - false, Collections.emptyMap())); |
| 214 | + RibbonLoadBalancerClient client = new RibbonLoadBalancerClient(clientFactory); |
208 | 215 |
|
209 | | - LoadBalancerClientFilter filter = new LoadBalancerClientFilter(loadBalancerClient); |
210 | | - filter.filter(exchange, filterChain); |
| 216 | + LoadBalancerClientFilter filter = new LoadBalancerClientFilter(client); |
| 217 | + filter.filter(exchange, chain); |
211 | 218 |
|
212 | 219 | return captor.getValue(); |
213 | 220 | } |
|
0 commit comments