@Test(groups = "short") public void should_log_queries_beyond_constant_threshold() throws Exception { // given slow.setLevel(DEBUG); queryLogger = builder().withConstantThreshold(10).build(); cluster.register(queryLogger); String query = "SELECT foo FROM bar"; primingClient.prime( queryBuilder().withQuery(query).withThen(then().withFixedDelay(100L)).build()); // when session.execute(query); // then String line = slowAppender.waitAndGet(5000); assertThat(line).contains("Query too slow").contains(ip).contains(query); }
private String generateJava349InsertStatement() { StringBuilder sb = new StringBuilder("INSERT INTO Java349 (mykey"); for (int i = 0; i < 1000; i++) { sb.append(", column").append(i); } sb.append(") VALUES (?"); for (int i = 0; i < 1000; i++) { sb.append(", ").append(i); } sb.append(");"); PrimingRequest preparedStatementPrime = PrimingRequest.preparedStatementBuilder() .withQuery(sb.toString()) .withThen(then().withVariableTypes(PrimitiveType.INT)) .build(); primingClient.prime(preparedStatementPrime); return sb.toString(); }
public PrimingRequest build() { if (query != null && queryPattern != null) { throw new IllegalStateException("Can't specify query and queryPattern"); } if (query == null && queryPattern == null) { throw new IllegalStateException("Must set either query or queryPattern for PrimingRequest"); } List<Consistency> consistencies = consistency == null ? null : Arrays.asList(consistency); if (then == null) { List<Map<String, ? extends Object>> rowsDefaultedToEmptyForSuccess = this.rows; if (result == Result.success && rows == null) { rowsDefaultedToEmptyForSuccess = Collections.emptyList(); } return new PrimingRequest(type, query, queryPattern, consistencies, rowsDefaultedToEmptyForSuccess, result, columnTypesMeta, variableTypesMeta, fixedDelay, config); } else { return new PrimingRequest(type, query, queryPattern, consistencies, then); } } }
public static Then.ThenBuilder andThen() { return then(); }
primingClient.prime(queryBuilder().withQuery(query).build()); LatencyAwarePolicy latencyAwarePolicy = LatencyAwarePolicy.builder(new RoundRobinPolicy()).withMininumMeasurements(1).build();
primingClient.prime(queryBuilder().withQuery(query).build()); LatencyAwarePolicy latencyAwarePolicy = LatencyAwarePolicy.builder(new RoundRobinPolicy()).withMininumMeasurements(1).build();
String query = "SELECT foo FROM bar"; primingClient.prime( queryBuilder().withQuery(query).withThen(then().withResult(result)).build());
private String generateJava349InsertStatement() { StringBuilder sb = new StringBuilder("INSERT INTO Java349 (mykey"); for (int i = 0; i < 1000; i++) { sb.append(", column").append(i); } sb.append(") VALUES (?"); for (int i = 0; i < 1000; i++) { sb.append(", ").append(i); } sb.append(");"); PrimingRequest preparedStatementPrime = PrimingRequest.preparedStatementBuilder() .withQuery(sb.toString()) .withThen(then().withVariableTypes(PrimitiveType.INT)) .build(); primingClient.prime(preparedStatementPrime); return sb.toString(); }
@BeforeMethod(groups = "short") public void setup() { primingClient.prime( queryBuilder().withQuery(query).withThen(then().withFixedDelay(100L)).build()); // Set default timeout too low cluster.getConfiguration().getSocketOptions().setReadTimeoutMillis(10); }
protected void simulateError(int hostNumber, Result result) { scassandras .node(hostNumber) .primingClient() .prime( PrimingRequest.queryBuilder() .withQuery("mock query") .withThen(then().withResult(result)) .build()); }
private void prime(int node, Result result) { sCluster .node(node) .primingClient() .prime( queryBuilder() .withQuery(QueryTracker.QUERY) .withThen(then().withResult(result)) .build()); }
protected void simulateError(int hostNumber, Result result, Config config) { PrimingRequest.Then.ThenBuilder then = then().withResult(result); PrimingRequestBuilder builder = PrimingRequest.queryBuilder().withQuery("mock query"); if (config != null) then = then.withConfig(config); builder = builder.withThen(then); scassandras.node(hostNumber).primingClient().prime(builder.build()); }
protected void simulateNormalResponse(int hostNumber) { scassandras .node(hostNumber) .primingClient() .prime( PrimingRequest.queryBuilder() .withQuery("mock query") .withThen(then().withRows(row("result", "result1"))) .build()); }
PrimingRequest.queryBuilder() .withQuery("SELECT * FROM system.peers") .withThen(then().withRows(rows).withColumnTypes(ScassandraCluster.SELECT_PEERS)) .build()); PrimingRequest.queryBuilder() .withQuery("SELECT * FROM system.peers_v2") .withThen(then().withResult(Result.invalid)) .build());
@Test(groups = "short") public void should_log_timed_out_queries() throws Exception { // given error.setLevel(DEBUG); queryLogger = builder().build(); cluster.register(queryLogger); cluster.getConfiguration().getSocketOptions().setReadTimeoutMillis(1); String query = "SELECT foo FROM bar"; primingClient.prime( queryBuilder().withQuery(query).withThen(then().withFixedDelay(100L)).build()); // when try { session.execute(query); fail("Should have thrown OperationTimedOutException"); } catch (OperationTimedOutException e) { // ok } // then String line = errorAppender.waitAndGet(5000); assertThat(line) .contains("Query error") .contains(ip) .contains(Integer.toString(scassandra.getBinaryPort())) .contains(query) .contains("Timed out waiting for server response"); }
primingClient.prime(queryBuilder().withQuery(fastQuery).build()); queryBuilder().withQuery(slowQuery).withThen(then().withFixedDelay(100L)).build());
@Test(groups = "short") public void should_fail_if_host_fails_query() { String query = "mock"; sCluster .node(1) .primingClient() .prime( PrimingRequest.queryBuilder() .withQuery(query) .withThen(then().withResult(Result.unavailable)) .build()); // given a statement with a host configured to fail the given query. Host host1 = TestUtils.findHost(cluster, 1); Statement statement = new SimpleStatement(query).setHost(host1); try { // when statement is executed an error should be raised. session.execute(statement); fail("Query should have failed"); } catch (NoHostAvailableException e) { // then the request should fail with a NHAE and no host was tried. assertThat(e.getErrors()).hasSize(1); assertThat(e.getErrors().values().iterator().next()).isInstanceOf(UnavailableException.class); } finally { verifyNoLbpInteractions(); } }
@Test(groups = "short") public void should_count_inflight_requests_metrics() { sCluster .node(1) .primingClient() .prime( PrimingRequest.queryBuilder() .withQuery("mock query") .withThen(then().withFixedDelay(100000L)) .build()); Cluster cluster = null; try { cluster = builder().build(); Session session = cluster.connect(); assertThat(cluster.getMetrics().getInFlightRequests().getValue()).isEqualTo(0); session.executeAsync("mock query"); session.executeAsync("mock query"); assertThat(cluster.getMetrics().getInFlightRequests().getValue()).isEqualTo(2); } finally { if (cluster != null) { cluster.close(); } } }
PrimingRequest.queryBuilder() .withQuery("USE \"slowks\"") .withThen(PrimingRequest.then().withFixedDelay(5000L)));
@Test(groups = "short") public void should_countdown_inflight_requests_metrics() { sCluster .node(1) .primingClient() .prime(PrimingRequest.queryBuilder().withQuery("mock query").withThen(then()).build()); Cluster cluster = null; try { cluster = builder().build(); Session session = cluster.connect(); assertThat(cluster.getMetrics().getInFlightRequests().getValue()).isEqualTo(0); session.executeAsync("mock query").getUninterruptibly(); session.executeAsync("mock query").getUninterruptibly(); assertThat(cluster.getMetrics().getInFlightRequests().getValue()).isEqualTo(0); } finally { if (cluster != null) { cluster.close(); } } } }