@Test(groups = "unit") public void should_create_proper_unavailable_exception() { UnavailableException e = new UnavailableException(address1, LOCAL_QUORUM, 3, 2); assertThat(e.getMessage()) .isEqualTo( "Not enough replicas available for query at consistency LOCAL_QUORUM (3 required but only 2 alive)"); assertThat(e.getConsistencyLevel()).isEqualTo(LOCAL_QUORUM); assertThat(e.getAliveReplicas()).isEqualTo(2); assertThat(e.getRequiredReplicas()).isEqualTo(3); assertThat(e.getAddress()).isEqualTo(address1); assertThat(e.getHost()).isEqualTo(address1.getAddress()); e = e.copy(address2); assertThat(e.getMessage()) .isEqualTo( "Not enough replicas available for query at consistency LOCAL_QUORUM (3 required but only 2 alive)"); assertThat(e.getConsistencyLevel()).isEqualTo(LOCAL_QUORUM); assertThat(e.getAliveReplicas()).isEqualTo(2); assertThat(e.getRequiredReplicas()).isEqualTo(3); assertThat(e.getAddress()).isEqualTo(address2); assertThat(e.getHost()).isEqualTo(address2.getAddress()); }
@Test(groups = "short") public void should_throw_proper_unavailable_exception() { simulateError(1, unavailable); try { query(); fail("expected an UnavailableException"); } catch (UnavailableException e) { assertThat(e.getMessage()) .isEqualTo( "Not enough replicas available for query at consistency LOCAL_ONE (1 required but only 0 alive)"); assertThat(e.getConsistencyLevel()).isEqualTo(LOCAL_ONE); assertThat(e.getAliveReplicas()).isEqualTo(0); assertThat(e.getRequiredReplicas()).isEqualTo(1); assertThat(e.getAddress()).isEqualTo(host1.getSocketAddress()); assertThat(e.getHost()).isEqualTo(host1.getAddress()); } }
@Test(groups = "short") public void should_rethrow_on_unavailable_if_CAS() { simulateError(1, unavailable, new UnavailableConfig(1, 0, SERIAL)); simulateError(2, unavailable, new UnavailableConfig(1, 0, SERIAL)); try { query(); fail("expected an UnavailableException"); } catch (UnavailableException e) { assertThat(e.getConsistencyLevel()).isEqualTo(ConsistencyLevel.SERIAL); } assertOnUnavailableWasCalled(2); assertThat(errors.getRetries().getCount()).isEqualTo(1); assertThat(errors.getUnavailables().getCount()).isEqualTo(2); assertThat(errors.getRetriesOnUnavailable().getCount()).isEqualTo(1); assertQueried(1, 1); assertQueried(2, 1); assertQueried(3, 0); }
@Test(groups = "short") public void should_rethrow_on_unavailable_if_CAS() { simulateError(1, unavailable, new UnavailableConfig(1, 0, LOCAL_SERIAL)); simulateError(2, unavailable, new UnavailableConfig(1, 0, LOCAL_SERIAL)); try { query(); Assert.fail("expected an UnavailableException"); } catch (UnavailableException e) { assertThat(e.getConsistencyLevel()).isEqualTo(ConsistencyLevel.LOCAL_SERIAL); } assertOnUnavailableWasCalled(2); assertThat(errors.getRetries().getCount()).isEqualTo(1); assertThat(errors.getUnavailables().getCount()).isEqualTo(2); assertThat(errors.getRetriesOnUnavailable().getCount()).isEqualTo(1); assertQueried(1, 1); assertQueried(2, 1); assertQueried(3, 0); } }
/** * Ensures that when handling an unavailable with {@link DowngradingConsistencyRetryPolicy} that a * retry is reattempted with a {@link ConsistencyLevel} that matches min(received * acknowledgements, THREE) and is only retried once. * * @param alive The number of received acknowledgements to use in unavailable. * @param expectedDowngradedCL The consistency level that is expected to be used on the retry. * @test_category retry_policy */ @Test(groups = "short", dataProvider = "consistencyLevels") public void should_retry_once_on_same_host_with_reduced_consistency_level_on_unavailable( int alive, ConsistencyLevel expectedDowngradedCL) { simulateError(1, unavailable, new UnavailableConfig(alive + 1, alive)); try { query(); fail("expected an UnavailableException"); } catch (UnavailableException e) { assertThat(e.getConsistencyLevel()).isEqualTo(expectedDowngradedCL); } assertOnUnavailableWasCalled(2); assertThat(errors.getRetries().getCount()).isEqualTo(1); assertThat(errors.getUnavailables().getCount()).isEqualTo(2); assertThat(errors.getRetriesOnUnavailable().getCount()).isEqualTo(1); assertQueried(1, 2); assertQueried(2, 0); assertQueried(3, 0); }
retryPolicy.onUnavailable( statement, ue.getConsistencyLevel(), ue.getRequiredReplicas(), ue.getAliveReplicas(),
@Test(groups = "unit") public void should_create_proper_unavailable_exception() { UnavailableException e = new UnavailableException(address1, LOCAL_QUORUM, 3, 2); assertThat(e.getMessage()) .isEqualTo( "Not enough replicas available for query at consistency LOCAL_QUORUM (3 required but only 2 alive)"); assertThat(e.getConsistencyLevel()).isEqualTo(LOCAL_QUORUM); assertThat(e.getAliveReplicas()).isEqualTo(2); assertThat(e.getRequiredReplicas()).isEqualTo(3); assertThat(e.getAddress()).isEqualTo(address1); assertThat(e.getHost()).isEqualTo(address1.getAddress()); e = e.copy(address2); assertThat(e.getMessage()) .isEqualTo( "Not enough replicas available for query at consistency LOCAL_QUORUM (3 required but only 2 alive)"); assertThat(e.getConsistencyLevel()).isEqualTo(LOCAL_QUORUM); assertThat(e.getAliveReplicas()).isEqualTo(2); assertThat(e.getRequiredReplicas()).isEqualTo(3); assertThat(e.getAddress()).isEqualTo(address2); assertThat(e.getHost()).isEqualTo(address2.getAddress()); }
@Test(groups = "short") public void should_throw_proper_unavailable_exception() { simulateError(1, unavailable); try { query(); fail("expected an UnavailableException"); } catch (UnavailableException e) { assertThat(e.getMessage()) .isEqualTo( "Not enough replicas available for query at consistency LOCAL_ONE (1 required but only 0 alive)"); assertThat(e.getConsistencyLevel()).isEqualTo(LOCAL_ONE); assertThat(e.getAliveReplicas()).isEqualTo(0); assertThat(e.getRequiredReplicas()).isEqualTo(1); assertThat(e.getAddress()).isEqualTo(host1.getSocketAddress()); assertThat(e.getHost()).isEqualTo(host1.getAddress()); } }
@Test(groups = "short") public void should_rethrow_on_unavailable_if_CAS() { simulateError(1, unavailable, new UnavailableConfig(1, 0, SERIAL)); simulateError(2, unavailable, new UnavailableConfig(1, 0, SERIAL)); try { query(); fail("expected an UnavailableException"); } catch (UnavailableException e) { assertThat(e.getConsistencyLevel()).isEqualTo(ConsistencyLevel.SERIAL); } assertOnUnavailableWasCalled(2); assertThat(errors.getRetries().getCount()).isEqualTo(1); assertThat(errors.getUnavailables().getCount()).isEqualTo(2); assertThat(errors.getRetriesOnUnavailable().getCount()).isEqualTo(1); assertQueried(1, 1); assertQueried(2, 1); assertQueried(3, 0); }
@Test(groups = "short") public void should_rethrow_on_unavailable_if_CAS() { simulateError(1, unavailable, new UnavailableConfig(1, 0, LOCAL_SERIAL)); simulateError(2, unavailable, new UnavailableConfig(1, 0, LOCAL_SERIAL)); try { query(); Assert.fail("expected an UnavailableException"); } catch (UnavailableException e) { assertThat(e.getConsistencyLevel()).isEqualTo(ConsistencyLevel.LOCAL_SERIAL); } assertOnUnavailableWasCalled(2); assertThat(errors.getRetries().getCount()).isEqualTo(1); assertThat(errors.getUnavailables().getCount()).isEqualTo(2); assertThat(errors.getRetriesOnUnavailable().getCount()).isEqualTo(1); assertQueried(1, 1); assertQueried(2, 1); assertQueried(3, 0); } }
/** * Ensures that when handling an unavailable with {@link DowngradingConsistencyRetryPolicy} that a * retry is reattempted with a {@link ConsistencyLevel} that matches min(received * acknowledgements, THREE) and is only retried once. * * @param alive The number of received acknowledgements to use in unavailable. * @param expectedDowngradedCL The consistency level that is expected to be used on the retry. * @test_category retry_policy */ @Test(groups = "short", dataProvider = "consistencyLevels") public void should_retry_once_on_same_host_with_reduced_consistency_level_on_unavailable( int alive, ConsistencyLevel expectedDowngradedCL) { simulateError(1, unavailable, new UnavailableConfig(alive + 1, alive)); try { query(); fail("expected an UnavailableException"); } catch (UnavailableException e) { assertThat(e.getConsistencyLevel()).isEqualTo(expectedDowngradedCL); } assertOnUnavailableWasCalled(2); assertThat(errors.getRetries().getCount()).isEqualTo(1); assertThat(errors.getUnavailables().getCount()).isEqualTo(2); assertThat(errors.getRetriesOnUnavailable().getCount()).isEqualTo(1); assertQueried(1, 2); assertQueried(2, 0); assertQueried(3, 0); }
UnavailableException ue = (UnavailableException) err.infos; retry = retryPolicy.onUnavailable(statement, ue.getConsistencyLevel(), ue.getRequiredReplicas(), ue.getAliveReplicas(),
UnavailableException ue = (UnavailableException) err.infos; retry = retryPolicy.onUnavailable(statement, ue.getConsistencyLevel(), ue.getRequiredReplicas(), ue.getAliveReplicas(),
UnavailableException ue = (UnavailableException) err.infos; retry = retryPolicy.onUnavailable(statement, ue.getConsistencyLevel(), ue.getRequiredReplicas(), ue.getAliveReplicas(),
ue.getConsistencyLevel(), ue.getRequiredReplicas(), ue.getAliveReplicas(),