Skip to content

Commit cc7d25c

Browse files
committed
Try to fix flaky test
1 parent c4a3537 commit cc7d25c

File tree

1 file changed

+93
-89
lines changed

1 file changed

+93
-89
lines changed

spring-boot-admin-server/src/test/java/de/codecentric/boot/admin/server/web/AbstractInstancesProxyControllerIntegrationTest.java

Lines changed: 93 additions & 89 deletions
Original file line numberDiff line numberDiff line change
@@ -70,8 +70,8 @@ public abstract class AbstractInstancesProxyControllerIntegrationTest {
7070
.dynamicPort()
7171
.extensions(new ConnectionCloseExtension()));
7272

73-
private static WebTestClient client;
74-
private static String instanceId;
73+
private WebTestClient client;
74+
private String instanceId;
7575

7676
@BeforeClass
7777
public static void setUp() {
@@ -85,12 +85,12 @@ public static void tearDown() {
8585

8686
public void setUpClient(ConfigurableApplicationContext context) {
8787
int localPort = context.getEnvironment().getProperty("local.server.port", Integer.class, 0);
88-
client = WebTestClient.bindToServer()
89-
.baseUrl("http://localhost:" + localPort)
90-
.responseTimeout(Duration.ofSeconds(10))
91-
.build();
88+
this.client = WebTestClient.bindToServer()
89+
.baseUrl("http://localhost:" + localPort)
90+
.responseTimeout(Duration.ofSeconds(10))
91+
.build();
9292

93-
String managementUrl = "http://localhost:" + wireMock.port() + "/mgmt";
93+
String managementUrl = "http://localhost:" + this.wireMock.port() + "/mgmt";
9494
//@formatter:off
9595
String actuatorIndex = "{ \"_links\": { " +
9696
"\"env\": { \"href\": \"" + managementUrl + "/env\", \"templated\": false }," +
@@ -99,128 +99,132 @@ public void setUpClient(ConfigurableApplicationContext context) {
9999
"\"timeout\": { \"href\": \"" + managementUrl + "/timeout\", \"templated\": false }" +
100100
" } }";
101101
//@formatter:on
102-
wireMock.stubFor(get(urlEqualTo("/mgmt/health")).willReturn(ok("{ \"status\" : \"UP\" }").withHeader(CONTENT_TYPE,
102+
this.wireMock.stubFor(get(urlEqualTo("/mgmt/health")).willReturn(ok("{ \"status\" : \"UP\" }").withHeader(
103+
CONTENT_TYPE,
103104
ActuatorMediaType.V2_JSON
104105
)));
105-
wireMock.stubFor(get(urlEqualTo("/mgmt/info")).willReturn(ok("{ }").withHeader(CONTENT_TYPE,
106+
this.wireMock.stubFor(get(urlEqualTo("/mgmt/info")).willReturn(ok("{ }").withHeader(
107+
CONTENT_TYPE,
106108
ACTUATOR_CONTENT_TYPE
107109
)));
108-
wireMock.stubFor(options(urlEqualTo("/mgmt/env")).willReturn(ok().withHeader(ALLOW,
110+
this.wireMock.stubFor(options(urlEqualTo("/mgmt/env")).willReturn(ok().withHeader(
111+
ALLOW,
109112
HttpMethod.HEAD.name(),
110113
HttpMethod.GET.name(),
111114
HttpMethod.OPTIONS.name()
112115
)));
113-
wireMock.stubFor(get(urlEqualTo("/mgmt")).willReturn(ok(actuatorIndex).withHeader(CONTENT_TYPE,
116+
this.wireMock.stubFor(get(urlEqualTo("/mgmt")).willReturn(ok(actuatorIndex).withHeader(
117+
CONTENT_TYPE,
114118
ACTUATOR_CONTENT_TYPE
115119
)));
116-
wireMock.stubFor(get(urlEqualTo("/mgmt/invalid")).willReturn(aResponse().withFault(Fault.EMPTY_RESPONSE)));
117-
wireMock.stubFor(get(urlEqualTo("/mgmt/timeout")).willReturn(ok().withFixedDelay(10000)));
118-
wireMock.stubFor(get(urlEqualTo("/mgmt/test")).willReturn(ok("{ \"foo\" : \"bar\" }").withHeader(CONTENT_TYPE,
120+
this.wireMock.stubFor(get(urlEqualTo("/mgmt/invalid")).willReturn(aResponse().withFault(Fault.EMPTY_RESPONSE)));
121+
this.wireMock.stubFor(get(urlEqualTo("/mgmt/timeout")).willReturn(ok().withFixedDelay(10000)));
122+
this.wireMock.stubFor(get(urlEqualTo("/mgmt/test")).willReturn(ok("{ \"foo\" : \"bar\" }").withHeader(
123+
CONTENT_TYPE,
119124
ACTUATOR_CONTENT_TYPE
120125
)));
121-
wireMock.stubFor(get(urlEqualTo("/mgmt/test/has%20spaces")).willReturn(ok("{ \"foo\" : \"bar-with-spaces\" }").withHeader(CONTENT_TYPE,
122-
ACTUATOR_CONTENT_TYPE
123-
)));
124-
wireMock.stubFor(post(urlEqualTo("/mgmt/test")).willReturn(ok()));
125-
wireMock.stubFor(delete(urlEqualTo("/mgmt/test")).willReturn(serverError().withBody(
126+
this.wireMock.stubFor(get(urlEqualTo("/mgmt/test/has%20spaces")).willReturn(ok(
127+
"{ \"foo\" : \"bar-with-spaces\" }").withHeader(CONTENT_TYPE, ACTUATOR_CONTENT_TYPE)));
128+
this.wireMock.stubFor(post(urlEqualTo("/mgmt/test")).willReturn(ok()));
129+
this.wireMock.stubFor(delete(urlEqualTo("/mgmt/test")).willReturn(serverError().withBody(
126130
"{\"error\": \"You're doing it wrong!\"}").withHeader(CONTENT_TYPE, ACTUATOR_CONTENT_TYPE)));
127131

128-
instanceId = registerInstance(managementUrl);
132+
this.instanceId = registerInstance(managementUrl);
129133
}
130134

131135
@Test
132136
public void should_return_status_503_404() {
133137
//503 on invalid instance
134-
client.get()
135-
.uri("/instances/{instanceId}/actuator/info", "UNKNOWN")
136-
.accept(ACTUATOR_V2_MEDIATYPE)
137-
.exchange()
138-
.expectStatus()
139-
.isEqualTo(HttpStatus.SERVICE_UNAVAILABLE);
138+
this.client.get()
139+
.uri("/instances/{instanceId}/actuator/info", "UNKNOWN")
140+
.accept(ACTUATOR_V2_MEDIATYPE)
141+
.exchange()
142+
.expectStatus()
143+
.isEqualTo(HttpStatus.SERVICE_UNAVAILABLE);
140144

141145
//404 on non-existent endpoint
142-
client.get()
143-
.uri("/instances/{instanceId}/actuator/not-exist", instanceId)
144-
.accept(ACTUATOR_V2_MEDIATYPE)
145-
.exchange()
146-
.expectStatus()
147-
.isEqualTo(HttpStatus.NOT_FOUND);
146+
this.client.get()
147+
.uri("/instances/{instanceId}/actuator/not-exist", this.instanceId)
148+
.accept(ACTUATOR_V2_MEDIATYPE)
149+
.exchange()
150+
.expectStatus()
151+
.isEqualTo(HttpStatus.NOT_FOUND);
148152
}
149153

150154
@Test
151155
public void should_return_status_502_504() {
152156
//502 on invalid response
153-
client.get()
154-
.uri("/instances/{instanceId}/actuator/invalid", instanceId)
155-
.accept(ACTUATOR_V2_MEDIATYPE)
156-
.exchange()
157-
.expectStatus()
158-
.isEqualTo(HttpStatus.BAD_GATEWAY);
157+
this.client.get()
158+
.uri("/instances/{instanceId}/actuator/invalid", this.instanceId)
159+
.accept(ACTUATOR_V2_MEDIATYPE)
160+
.exchange()
161+
.expectStatus()
162+
.isEqualTo(HttpStatus.BAD_GATEWAY);
159163

160164
//504 on read timeout
161-
client.get()
162-
.uri("/instances/{instanceId}/actuator/timeout", instanceId)
163-
.accept(ACTUATOR_V2_MEDIATYPE)
164-
.exchange()
165-
.expectStatus()
166-
.isEqualTo(HttpStatus.GATEWAY_TIMEOUT);
165+
this.client.get()
166+
.uri("/instances/{instanceId}/actuator/timeout", this.instanceId)
167+
.accept(ACTUATOR_V2_MEDIATYPE)
168+
.exchange()
169+
.expectStatus()
170+
.isEqualTo(HttpStatus.GATEWAY_TIMEOUT);
167171
}
168172

169173
@Test
170174
public void should_forward_requests() {
171-
client.options()
172-
.uri("/instances/{instanceId}/actuator/env", instanceId)
173-
.accept(ACTUATOR_V2_MEDIATYPE)
174-
.exchange()
175-
.expectStatus()
176-
.isEqualTo(HttpStatus.OK)
177-
.expectHeader()
178-
.valueEquals(ALLOW, HttpMethod.HEAD.name(), HttpMethod.GET.name(), HttpMethod.OPTIONS.name());
175+
this.client.options()
176+
.uri("/instances/{instanceId}/actuator/env", this.instanceId)
177+
.accept(ACTUATOR_V2_MEDIATYPE)
178+
.exchange()
179+
.expectStatus()
180+
.isEqualTo(HttpStatus.OK)
181+
.expectHeader()
182+
.valueEquals(ALLOW, HttpMethod.HEAD.name(), HttpMethod.GET.name(), HttpMethod.OPTIONS.name());
179183

180-
client.get()
181-
.uri("/instances/{instanceId}/actuator/test", instanceId)
182-
.accept(ACTUATOR_V2_MEDIATYPE)
183-
.exchange()
184-
.expectStatus()
185-
.isEqualTo(HttpStatus.OK)
186-
.expectBody(String.class)
187-
.isEqualTo("{ \"foo\" : \"bar\" }");
184+
this.client.get()
185+
.uri("/instances/{instanceId}/actuator/test", this.instanceId)
186+
.accept(ACTUATOR_V2_MEDIATYPE)
187+
.exchange()
188+
.expectStatus()
189+
.isEqualTo(HttpStatus.OK)
190+
.expectBody(String.class)
191+
.isEqualTo("{ \"foo\" : \"bar\" }");
188192

189-
client.post()
190-
.uri("/instances/{instanceId}/actuator/test", instanceId)
191-
.syncBody("PAYLOAD")
192-
.exchange()
193-
.expectStatus()
194-
.isEqualTo(HttpStatus.OK);
193+
this.client.post()
194+
.uri("/instances/{instanceId}/actuator/test", this.instanceId)
195+
.syncBody("PAYLOAD")
196+
.exchange()
197+
.expectStatus()
198+
.isEqualTo(HttpStatus.OK);
195199

196-
wireMock.verify(postRequestedFor(urlEqualTo("/mgmt/test")).withRequestBody(equalTo("PAYLOAD")));
200+
this.wireMock.verify(postRequestedFor(urlEqualTo("/mgmt/test")).withRequestBody(equalTo("PAYLOAD")));
197201

198-
client.delete()
199-
.uri("/instances/{instanceId}/actuator/test", instanceId)
200-
.exchange()
201-
.expectStatus()
202-
.isEqualTo(HttpStatus.INTERNAL_SERVER_ERROR)
203-
.expectBody(String.class)
204-
.isEqualTo("{\"error\": \"You're doing it wrong!\"}");
202+
this.client.delete()
203+
.uri("/instances/{instanceId}/actuator/test", this.instanceId)
204+
.exchange()
205+
.expectStatus()
206+
.isEqualTo(HttpStatus.INTERNAL_SERVER_ERROR)
207+
.expectBody(String.class)
208+
.isEqualTo("{\"error\": \"You're doing it wrong!\"}");
205209

206-
wireMock.verify(postRequestedFor(urlEqualTo("/mgmt/test")).withRequestBody(equalTo("PAYLOAD")));
210+
this.wireMock.verify(postRequestedFor(urlEqualTo("/mgmt/test")).withRequestBody(equalTo("PAYLOAD")));
207211
}
208212

209213
@Test
210214
public void should_forward_requests_with_spaces_in_path() {
211-
client.get()
212-
.uri("/instances/{instanceId}/actuator/test/has spaces", instanceId)
213-
.accept(ACTUATOR_V2_MEDIATYPE)
214-
.exchange()
215-
.expectStatus()
216-
.isEqualTo(HttpStatus.OK)
217-
.expectBody(String.class)
218-
.isEqualTo("{ \"foo\" : \"bar-with-spaces\" }");
215+
this.client.get()
216+
.uri("/instances/{instanceId}/actuator/test/has spaces", this.instanceId)
217+
.accept(ACTUATOR_V2_MEDIATYPE)
218+
.exchange()
219+
.expectStatus()
220+
.isEqualTo(HttpStatus.OK)
221+
.expectBody(String.class)
222+
.isEqualTo("{ \"foo\" : \"bar-with-spaces\" }");
219223

220-
wireMock.verify(getRequestedFor(urlEqualTo("/mgmt/test/has%20spaces")));
224+
this.wireMock.verify(getRequestedFor(urlEqualTo("/mgmt/test/has%20spaces")));
221225
}
222226

223-
private static String registerInstance(String managementUrl) {
227+
private String registerInstance(String managementUrl) {
224228
AtomicReference<String> instanceId = new AtomicReference<>();
225229
StepVerifier.create(getEventStream())
226230
.expectSubscription()
@@ -232,14 +236,14 @@ private static String registerInstance(String managementUrl) {
232236
return instanceId.get();
233237
}
234238

235-
private static String sendRegistration(String managementUrl) {
239+
private String sendRegistration(String managementUrl) {
236240
String registration = "{ \"name\": \"test\", \"healthUrl\": \"" +
237241
managementUrl +
238242
"/health\", \"managementUrl\": \"" +
239243
managementUrl +
240244
"\" }";
241245
//@formatter:off
242-
EntityExchangeResult<Map<String, Object>> result = client.post()
246+
EntityExchangeResult<Map<String, Object>> result = this.client.post()
243247
.uri("/instances")
244248
.accept(MediaType.APPLICATION_JSON).contentType(MediaType.APPLICATION_JSON)
245249
.syncBody(registration)
@@ -252,9 +256,9 @@ private static String sendRegistration(String managementUrl) {
252256
return result.getResponseBody().get("id").toString();
253257
}
254258

255-
private static Flux<Map<String, Object>> getEventStream() {
259+
private Flux<Map<String, Object>> getEventStream() {
256260
//@formatter:off
257-
return client.get().uri("/instances/events").accept(MediaType.TEXT_EVENT_STREAM)
261+
return this.client.get().uri("/instances/events").accept(MediaType.TEXT_EVENT_STREAM)
258262
.exchange()
259263
.expectStatus().isOk()
260264
.returnResult(RESPONSE_TYPE).getResponseBody();

0 commit comments

Comments
 (0)