in client/src/testFixtures/java/org/apache/cassandra/sidecar/client/SidecarClientTest.java [874:916]
void testProvidingCustomRetryPolicy() throws ExecutionException, InterruptedException, TimeoutException
{
String nodeSettingsAsString = "{\"partitioner\":\"test-partitioner\", \"releaseVersion\": \"4.0.0\"}";
MockResponse response = new MockResponse().setResponseCode(ACCEPTED.code()).setBody(nodeSettingsAsString);
enqueue(response);
RequestContext requestContext = client.requestBuilder()
.request(new NodeSettingsRequest())
.retryPolicy(new RetryPolicy()
{
@Override
public void onResponse(CompletableFuture<HttpResponse> responseFuture,
Request request,
HttpResponse response,
Throwable throwable,
int attempts,
boolean canRetryOnADifferentHost,
RetryAction retryAction)
{
if (response != null && response.statusCode() == ACCEPTED.code())
{
responseFuture.complete(response);
}
else
{
client.defaultRetryPolicy().onResponse(responseFuture,
request,
response,
throwable,
attempts,
canRetryOnADifferentHost,
retryAction);
}
}
})
.build();
NodeSettings result = client.<NodeSettings>executeRequestAsync(requestContext).get(30, TimeUnit.SECONDS);
assertThat(result).isNotNull();
assertThat(result.partitioner()).isEqualTo("test-partitioner");
assertThat(result.releaseVersion()).isEqualTo("4.0.0");
validateResponseServed(ApiEndpointsV1.NODE_SETTINGS_ROUTE);
}