PrimingRequest.queryBuilder() .withQuery("SELECT * FROM system.peers") .withThen(then().withRows(rows).withColumnTypes(ScassandraCluster.SELECT_PEERS)) .build());
PrimingRequest.queryBuilder() .withQuery("mock query") .withThen(then().withFixedDelay(1000L).withRows(row("result", "result1"))) .build()); try {
@Test(groups = "short") public void should_retry_on_client_timeout_if_statement_idempotent() { cluster.getConfiguration().getSocketOptions().setReadTimeoutMillis(1); try { scassandras .node(1) .primingClient() .prime( PrimingRequest.queryBuilder() .withQuery("mock query") .withThen(then().withFixedDelay(1000L).withRows(row("result", "result1"))) .build()); session.execute(new SimpleStatement("mock query").setIdempotent(true)); assertOnRequestErrorWasCalled(1, OperationTimedOutException.class); assertThat(errors.getClientTimeouts().getCount()).isEqualTo(1); assertThat(errors.getRetries().getCount()).isEqualTo(1); assertThat(errors.getRetriesOnClientTimeout().getCount()).isEqualTo(1); assertQueried(1, 1); assertQueried(2, 1); assertQueried(3, 0); } finally { cluster .getConfiguration() .getSocketOptions() .setReadTimeoutMillis(SocketOptions.DEFAULT_READ_TIMEOUT_MILLIS); } }
@Test(groups = "short") public void should_not_start_speculative_execution_if_first_execution_completes_successfully() { scassandras .node(1) .primingClient() .prime( PrimingRequest.queryBuilder() .withQuery("mock query") .withThen(then().withRows(row("result", "result1"))) .build()); long execStartCount = errors.getSpeculativeExecutions().getCount(); ResultSet rs = session.execute("mock query"); Row row = rs.one(); assertThat(row.getString("result")).isEqualTo("result1"); assertThat(errors.getSpeculativeExecutions().getCount()).isEqualTo(execStartCount); ExecutionInfo executionInfo = rs.getExecutionInfo(); assertThat(executionInfo.getTriedHosts()).containsOnly(host1); assertThat(executionInfo.getQueriedHost()).isEqualTo(host1); assertThat(executionInfo.getSpeculativeExecutions()).isEqualTo(0); assertThat(executionInfo.getSuccessfulExecutionIndex()).isEqualTo(0); }
protected void simulateNormalResponse(int hostNumber) { scassandras .node(hostNumber) .primingClient() .prime( PrimingRequest.queryBuilder() .withQuery("mock query") .withThen(then().withRows(row("result", "result1"))) .build()); }
then() .withColumnTypes(SELECT_LOCAL) .withRows(Collections.<Map<String, ?>>singletonList(row)) .build()) .build()); then() .withColumnTypes(SELECT_LOCAL_V2) .withRows(Collections.<Map<String, ?>>singletonList(row)) .build()) .build()); then() .withColumnTypes(SELECT_PEERS) .withRows(Collections.<Map<String, ?>>singletonList(row)) .build()) .build()); then() .withColumnTypes(SELECT_PEERS_V2) .withRows(Collections.<Map<String, ?>>singletonList(rowV2)) .build()) .build()); PrimingRequest.queryBuilder() .withQuery("SELECT * FROM system.peers") .withThen(then().withColumnTypes(SELECT_PEERS).withRows(rows.build()).build()) .build());
PrimingRequest.queryBuilder() .withQuery("mock query") .withThen(then().withRows(ImmutableMap.of("key", 1)).withFixedDelay(10000L)) .build()); primingClient.prime( PrimingRequest.queryBuilder() .withQuery("select c from test1 where k=1") .withThen(then().withRows(ImmutableMap.of("c", "hello"))) .build()); primingClient.prime( PrimingRequest.queryBuilder() .withQuery("select n from test2 where c='hello'") .withThen(then().withRows(ImmutableMap.of("n", "world"))) .build());
PrimingRequest.queryBuilder() .withQuery("SELECT * FROM system.peers") .withThen(then().withColumnTypes(SELECT_PEERS).withRows(rows).build()) .build());
PrimingRequest.queryBuilder() .withQuery("mock query") .withThen(then().withFixedDelay(1000L).withRows(row("result", "result1"))) .build()); scassandras PrimingRequest.queryBuilder() .withQuery("mock query") .withThen(then().withFixedDelay(1000L).withRows(row("result", "result2"))) .build()); scassandras PrimingRequest.queryBuilder() .withQuery("mock query") .withThen(then().withFixedDelay(1000L).withRows(row("result", "result3"))) .build()); try {
PrimingRequest.queryBuilder() .withQuery("mock query") .withThen(then().withFixedDelay(1000L).withRows(row("result", "result1"))) .build()); scassandras PrimingRequest.queryBuilder() .withQuery("mock query") .withThen(then().withFixedDelay(1000L).withRows(row("result", "result2"))) .build()); scassandras PrimingRequest.queryBuilder() .withQuery("mock query") .withThen(then().withFixedDelay(1000L).withRows(row("result", "result3"))) .build()); try {
PrimingRequest.queryBuilder() .withQuery("mock query") .withThen(then().withRows(row("result", "result1")).withFixedDelay(1000L)) .build()); PrimingRequest.queryBuilder() .withQuery("mock query") .withThen(then().withRows(row("result", "result2")).withFixedDelay(1000L)) .build()); PrimingRequest.queryBuilder() .withQuery("mock query") .withThen(then().withRows(row("result", "result3"))) .build()); long execStartCount = errors.getSpeculativeExecutions().getCount();
PrimingRequest.queryBuilder() .withQuery("mock query") .withThen(then().withRows(rows).withFixedDelay(10L)) .build());
PrimingRequest.queryBuilder() .withQuery("mock query") .withThen(then().withRows(row("result", "result1")).withFixedDelay(2000L)) .build());
PrimingRequest.queryBuilder() .withQuery("mock query") .withThen(then().withRows(row("result", "result1")).withFixedDelay(2000L)) .build()); PrimingRequest.queryBuilder() .withQuery("mock query") .withThen(then().withRows(row("result", "result3")).withFixedDelay(500L)) .build()); PrimingRequest.queryBuilder() .withQuery("mock query") .withThen(then().withRows(row("result", "result2")).withFixedDelay(2000L)) .build()); long execStartCount = errors.getSpeculativeExecutions().getCount();
.withQuery("mock query") .withConsistency(Consistency.ONE) .withThen(then().withRows(row("result", "result1"))) .build());
PrimingRequest.queryBuilder() .withQuery("mock query") .withThen(then().withFixedDelay(1000L).withRows(row("result", "result1"))) .build()); try {
PrimingRequest.queryBuilder() .withQuery("mock query") .withThen(then().withFixedDelay(1000L).withRows(row("result", "result1"))) .build()); try {
@Test(groups = "short") public void should_start_speculative_execution_if_first_execution_takes_too_long() { scassandras .node(1) .primingClient() .prime( PrimingRequest.queryBuilder() .withQuery("mock query") .withThen(then().withRows(row("result", "result1")).withFixedDelay(400L)) .build()); scassandras .node(2) .primingClient() .prime( PrimingRequest.queryBuilder() .withQuery("mock query") .withThen(then().withRows(row("result", "result2"))) .build()); long execStartCount = errors.getSpeculativeExecutions().getCount(); ResultSet rs = session.execute("mock query"); Row row = rs.one(); assertThat(row.getString("result")).isEqualTo("result2"); assertThat(errors.getSpeculativeExecutions().getCount()).isEqualTo(execStartCount + 1); ExecutionInfo executionInfo = rs.getExecutionInfo(); // triedHosts does not contain host1 because the request to it had not completed yet assertThat(executionInfo.getTriedHosts()).containsOnly(host2); assertThat(executionInfo.getQueriedHost()).isEqualTo(host2); assertThat(executionInfo.getSpeculativeExecutions()).isEqualTo(1); assertThat(executionInfo.getSuccessfulExecutionIndex()).isEqualTo(1); }
@Test(groups = "short") public void should_not_start_speculative_execution_if_first_execution_completes_successfully() { scassandras .node(1) .primingClient() .prime( PrimingRequest.queryBuilder() .withQuery("mock query") .withThen(then().withRows(row("result", "result1"))) .build()); long execStartCount = errors.getSpeculativeExecutions().getCount(); ResultSet rs = session.execute("mock query"); Row row = rs.one(); assertThat(row.getString("result")).isEqualTo("result1"); assertThat(errors.getSpeculativeExecutions().getCount()).isEqualTo(execStartCount); ExecutionInfo executionInfo = rs.getExecutionInfo(); assertThat(executionInfo.getTriedHosts()).containsOnly(host1); assertThat(executionInfo.getQueriedHost()).isEqualTo(host1); assertThat(executionInfo.getSpeculativeExecutions()).isEqualTo(0); assertThat(executionInfo.getSuccessfulExecutionIndex()).isEqualTo(0); }
protected void simulateNormalResponse(int hostNumber) { scassandras .node(hostNumber) .primingClient() .prime( PrimingRequest.queryBuilder() .withQuery("mock query") .withThen(then().withRows(row("result", "result1"))) .build()); }