void testProvidingCustomRetryPolicy()

in client/src/testFixtures/java/org/apache/cassandra/sidecar/client/SidecarClientTest.java [1404:1447]


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