public RestResponse<InputStream> makePrintTopicRequest(final String ksql) { final KsqlRequest jsonRequest = new KsqlRequest(ksql, localProperties.toMap(), null); return postRequest("query", jsonRequest, Optional.empty(), false, r -> (InputStream) r.getEntity()); }
public RestResponse<KsqlEntityList> makeKsqlRequest(final String ksql) { final KsqlRequest jsonRequest = new KsqlRequest(ksql, localProperties.toMap(), null); return postRequest("ksql", jsonRequest, Optional.empty(), true, r -> r.readEntity(KsqlEntityList.class)); }
public RestResponse<QueryStream> makeQueryRequest(final String ksql) { final KsqlRequest jsonRequest = new KsqlRequest(ksql, localProperties.toMap(), null); final Optional<Integer> readTimeoutMs = Optional.of(QueryStream.READ_TIMEOUT_MS); return postRequest("query", jsonRequest, readTimeoutMs, false, QueryStream::new); }
private <T extends KsqlEntity> List<T> makeMultipleRequest( final String sql, final Class<T> expectedEntityType) { return makeMultipleRequest( new KsqlRequest(sql, Collections.emptyMap(), null), expectedEntityType); }
private KsqlErrorMessage makeFailingRequestWithSequenceNumber( final String ksql, final Long seqNum, final Code errorCode) { return makeFailingRequest(new KsqlRequest(ksql, Collections.emptyMap(), seqNum), errorCode); }
private <T extends KsqlEntity> T makeSingleRequestWithSequenceNumber( final String sql, final Long seqNum, final Class<T> expectedEntityType) { return makeSingleRequest( new KsqlRequest(sql, Collections.emptyMap(), seqNum), expectedEntityType); }
@Test public void shouldHandleNullProps() { assertThat(new KsqlRequest("sql", null, SOME_COMMAND_NUMBER).getStreamsProperties(), is(Collections.emptyMap())); }
void submitCommands(final String ...statements) { for (final String statement : statements) { final Response response = ksqlResource.handleKsqlStatements( new KsqlRequest(statement, Collections.emptyMap(), null)); assertThat(response.getStatus(), equalTo(200)); executeCommands(); } }
@Test public void shouldImplementHashCodeAndEqualsCorrectly() { new EqualsTester() .addEqualityGroup(new KsqlRequest("sql", SOME_PROPS, SOME_COMMAND_NUMBER), new KsqlRequest("sql", SOME_PROPS, SOME_COMMAND_NUMBER)) .addEqualityGroup(new KsqlRequest("different-sql", SOME_PROPS, SOME_COMMAND_NUMBER)) .addEqualityGroup(new KsqlRequest("sql", ImmutableMap.of(), SOME_COMMAND_NUMBER)) .addEqualityGroup(new KsqlRequest("sql", SOME_PROPS, null)) .testEquals(); }
@Test public void shouldNotWaitIfCommandSequenceNumberSpecified() throws Exception { // Given: replay(commandQueue); // When: testResource.streamQuery(new KsqlRequest(queryString, Collections.emptyMap(), null)); // Then: verify(commandQueue); }
@Test public void shouldHandleNullCommandNumber() { assertThat(new KsqlRequest("sql", SOME_PROPS, null).getCommandSequenceNumber(), is(Optional.empty())); }
@Test public void shouldHandleNullStatement() { assertThat(new KsqlRequest(null, SOME_PROPS, SOME_COMMAND_NUMBER).getKsql(), is("")); }
@Test public void shouldExecuteStreamingQueryWithV1ContentType() { final KsqlRequest request = new KsqlRequest( String.format("SELECT * from %s;", PAGE_VIEW_STREAM), Collections.emptyMap(), null); try (final Response response = restClient.target(REST_APP.getHttpListener()) .path("query") .request(Versions.KSQL_V1_JSON) .header("Content-Type", Versions.KSQL_V1_JSON) .post(Entity.json(request))) { assertEquals(Response.Status.OK.getStatusCode(), response.getStatus()); } }
@Test public void shouldExecuteStreamingQueryWithJsonContentType() { final KsqlRequest request = new KsqlRequest( String.format("SELECT * from %s;", PAGE_VIEW_STREAM), Collections.emptyMap(), null); try (final Response response = restClient.target(REST_APP.getHttpListener()) .path("query") .request(MediaType.APPLICATION_JSON_TYPE) .header("Content-Type", MediaType.APPLICATION_JSON_TYPE) .post(Entity.json(request))) { assertEquals(Response.Status.OK.getStatusCode(), response.getStatus()); } }
@Test public void shouldFailIfIsNotAcceptingStatements() throws Exception { // Given: final String queryString = "SELECT * FROM test_stream;"; reset(mockKsqlEngine); expect(mockKsqlEngine.isAcceptingStatements()).andReturn(false); replay(mockKsqlEngine); // When: final Response response = testResource.streamQuery(new KsqlRequest(queryString, Collections.emptyMap(), null)); // Then: assertThat(response.getStatus(), equalTo(Status.INTERNAL_SERVER_ERROR.getStatusCode())); final KsqlErrorMessage errorMessage = (KsqlErrorMessage)response.getEntity(); assertThat(errorMessage.getErrorCode(), equalTo(Errors.ERROR_CODE_SERVER_ERROR)); assertThat(errorMessage.getMessage(), containsString("Cluster has been terminated.")); }
@Test public void shouldListPropertiesWithOverrides() { // Given: final Map<String, Object> overrides = Collections.singletonMap("auto.offset.reset", "latest"); // When: final PropertiesList props = makeSingleRequest( new KsqlRequest("list properties;", overrides, null), PropertiesList.class); // Then: assertThat(props.getProperties().get("ksql.streams.auto.offset.reset"), is("latest")); assertThat(props.getOverwrittenProperties(), hasItem("ksql.streams.auto.offset.reset")); }
@Test public void shouldUpdateTheLastRequestTime() throws Exception { // Given: activenessRegistrar.updateLastRequestTime(); EasyMock.expectLastCall(); EasyMock.replay(activenessRegistrar); // When: testResource.streamQuery(new KsqlRequest(queryString, Collections.emptyMap(), null)); // Then: EasyMock.verify(activenessRegistrar); }
@Test public void shouldWaitIfCommandSequenceNumberSpecified() throws Exception { // Given: commandQueue.ensureConsumedPast(eq(3L), anyObject()); expectLastCall(); replay(commandQueue); // When: testResource.streamQuery(new KsqlRequest(queryString, Collections.emptyMap(), 3L)); // Then: verify(commandQueue); }
@Test public void shouldThrowOnInvalidPropertyValue() { // Given: final KsqlRequest request = new KsqlRequest( "sql", ImmutableMap.of( SINK_NUMBER_OF_REPLICAS_PROPERTY, "not-parsable" ), null); expectedException.expect(KsqlException.class); expectedException.expectMessage(containsString(SINK_NUMBER_OF_REPLICAS_PROPERTY)); expectedException.expectMessage(containsString("not-parsable")); // When: request.getStreamsProperties(); }
@Test public void shouldReturn400OnBadStatement() throws Exception { // Given: reset(mockStatementParser); expect(mockStatementParser.parseSingleStatement(anyString())) .andThrow(new IllegalArgumentException("some error message")); replay(mockStatementParser); // Expect expectedException.expect(KsqlRestException.class); expectedException.expect(exceptionStatusCode(is(Code.BAD_REQUEST))); expectedException.expect(exceptionKsqlErrorMessage(errorMessage(is("some error message")))); expectedException.expect( exceptionKsqlErrorMessage(errorCode(is(Errors.ERROR_CODE_BAD_STATEMENT)))); // When: testResource.streamQuery(new KsqlRequest("query", Collections.emptyMap(), null)); }