void testProvidingCustomRetryPolicy()

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);
    }