Verify body is still sent during post retry

This commit is contained in:
Spencer Gibb
2019-07-03 15:23:03 -04:00
parent 7471a41fde
commit d17630f4f2

View File

@@ -46,6 +46,7 @@ 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.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@@ -83,7 +84,7 @@ public class RetryGatewayFilterFactoryIntegrationTests extends BaseWebClientTest
@Test
public void retryFilterPost() {
testClient.post().uri("/retry?key=post")
testClient.post().uri("/retrypost?key=post&expectedbody=Hello")
.header(HttpHeaders.HOST, "www.retryjava.org").syncBody("Hello")
.exchange().expectStatus().isOk().expectBody(String.class).isEqualTo("3");
}
@@ -119,7 +120,7 @@ public class RetryGatewayFilterFactoryIntegrationTests extends BaseWebClientTest
@RequestMapping("/httpbin/retryalwaysfail")
public ResponseEntity<String> retryalwaysfail(@RequestParam("key") String key,
@RequestParam(name = "count", defaultValue = "3") int count) {
AtomicInteger num = map.computeIfAbsent(key, s -> new AtomicInteger());
AtomicInteger num = getCount(key);
int i = num.incrementAndGet();
log.warn("Retry count: " + i);
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
@@ -127,10 +128,24 @@ public class RetryGatewayFilterFactoryIntegrationTests extends BaseWebClientTest
.body("permanently broken");
}
@RequestMapping("/httpbin/retrypost")
public ResponseEntity<String> retry(@RequestParam("key") String key,
@RequestParam(name = "count", defaultValue = "3") int count,
@RequestParam("expectedbody") String expectedbody, @RequestBody String body) {
ResponseEntity<String> response = retry(key, count);
if (!expectedbody.equals(body)) {
AtomicInteger num = getCount(key);
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
.header("X-Retry-Count", String.valueOf(num))
.body("bodys did not match on try" + num);
}
return response;
}
@RequestMapping("/httpbin/retry")
public ResponseEntity<String> retry(@RequestParam("key") String key,
@RequestParam(name = "count", defaultValue = "3") int count) {
AtomicInteger num = map.computeIfAbsent(key, s -> new AtomicInteger());
AtomicInteger num = getCount(key);
int i = num.incrementAndGet();
log.warn("Retry count: " + i);
String body = String.valueOf(i);
@@ -142,6 +157,10 @@ public class RetryGatewayFilterFactoryIntegrationTests extends BaseWebClientTest
.body(body);
}
AtomicInteger getCount(@RequestParam("key") String key) {
return map.computeIfAbsent(key, s -> new AtomicInteger());
}
@Bean
public RouteLocator hystrixRouteLocator(RouteLocatorBuilder builder) {
return builder.routes()