@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 is not reattempted if no replicas are alive. * * @test_category retry_policy */ @Test(groups = "short") public void should_rethrow_if_no_hosts_alive_on_unavailable() { simulateError(1, unavailable, new UnavailableConfig(1, 0)); try { query(); fail("expected an UnavailableException"); } catch (UnavailableException e) { /*expected*/ } assertOnUnavailableWasCalled(1); assertThat(errors.getRetries().getCount()).isEqualTo(0); assertThat(errors.getUnavailables().getCount()).isEqualTo(1); assertThat(errors.getRetriesOnUnavailable().getCount()).isEqualTo(0); assertQueried(1, 1); assertQueried(2, 0); 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); }
@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); } }
@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); }
/** * Ensures that when handling an unavailable with {@link DowngradingConsistencyRetryPolicy} that a * retry is is not reattempted if no replicas are alive. * * @test_category retry_policy */ @Test(groups = "short") public void should_rethrow_if_no_hosts_alive_on_unavailable() { simulateError(1, unavailable, new UnavailableConfig(1, 0)); try { query(); fail("expected an UnavailableException"); } catch (UnavailableException e) { /*expected*/ } assertOnUnavailableWasCalled(1); assertThat(errors.getRetries().getCount()).isEqualTo(0); assertThat(errors.getUnavailables().getCount()).isEqualTo(1); assertThat(errors.getRetriesOnUnavailable().getCount()).isEqualTo(0); assertQueried(1, 1); assertQueried(2, 0); 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); }