if (updateStreamStatus.getStatus() == UpdateStreamStatus.Status.SUCCESS) { log.info("Successfully sealed stream: {}", streamName); return Response.status(Status.OK).entity(updateStreamStateRequest).build(); } else if (updateStreamStatus.getStatus() == UpdateStreamStatus.Status.SCOPE_NOT_FOUND || updateStreamStatus.getStatus() == UpdateStreamStatus.Status.STREAM_NOT_FOUND) { log.warn("Scope: {} or Stream {} not found", scopeName, streamName); return Response.status(Status.NOT_FOUND).build();
updateStreamRequest); controllerService.updateStream(scopeName, streamName, streamConfiguration).thenApply(streamStatus -> { if (streamStatus.getStatus() == UpdateStreamStatus.Status.SUCCESS) { log.info("Successfully updated stream config for: {}/{}", scopeName, streamName); return Response.status(Status.OK) .entity(ModelHelper.encodeStreamResponse(scopeName, streamName, streamConfiguration)).build(); } else if (streamStatus.getStatus() == UpdateStreamStatus.Status.STREAM_NOT_FOUND || streamStatus.getStatus() == UpdateStreamStatus.Status.SCOPE_NOT_FOUND) { log.warn("Stream: {}/{} not found", scopeName, streamName); return Response.status(Status.NOT_FOUND).build();
public CompletableFuture<Boolean> truncateStream(final String scope, final String stream, final Map<Long, Long> streamCut) { return this.controller.truncateStream(scope, stream, streamCut).thenApply(x -> { switch (x.getStatus()) { case FAILURE: throw new ControllerFailureException("Failed to truncate stream: " + stream); case SCOPE_NOT_FOUND: throw new IllegalArgumentException("Scope does not exist: " + scope); case STREAM_NOT_FOUND: throw new IllegalArgumentException("Stream does not exist: " + stream); case SUCCESS: return true; default: throw new ControllerFailureException("Unknown return status truncating stream " + stream + " " + x.getStatus()); } }); }
this.controllerService.sealStream(ModelHelper.createStreamInfo(SCOPE1, STREAM1), result6); UpdateStreamStatus updateStreamStatus = result6.get(); assertEquals("Seal stream", UpdateStreamStatus.Status.SUCCESS, updateStreamStatus.getStatus());
this.controllerService.sealStream(ModelHelper.createStreamInfo(SCOPE1, STREAM1), result3); updateStreamStatus = result3.get(); assertEquals("Seal Stream", UpdateStreamStatus.Status.SUCCESS, updateStreamStatus.getStatus()); updateStreamStatus = result4.get(); assertEquals("Seal non-existent stream", UpdateStreamStatus.Status.STREAM_NOT_FOUND, updateStreamStatus.getStatus()); updateStreamStatus = result5.get(); assertEquals("Seal non-existent stream", UpdateStreamStatus.Status.STREAM_NOT_FOUND, updateStreamStatus.getStatus());
@Test public void truncateStreamTests() { CreateScopeStatus createScopeStatus; CreateStreamStatus createStreamStatus; final StreamConfiguration configuration1 = StreamConfiguration.builder().scalingPolicy(ScalingPolicy.fixed(4)).build(); // Create a test scope. ResultObserver<CreateScopeStatus> result1 = new ResultObserver<>(); this.controllerService.createScope(ModelHelper.createScopeInfo(SCOPE1), result1); createScopeStatus = result1.get(); assertEquals("Create Scope", CreateScopeStatus.Status.SUCCESS, createScopeStatus.getStatus()); // Create a test stream. ResultObserver<CreateStreamStatus> result2 = new ResultObserver<>(); this.controllerService.createStream(ModelHelper.decode(SCOPE1, STREAM1, configuration1), result2); createStreamStatus = result2.get(); assertEquals("Create stream", CreateStreamStatus.Status.SUCCESS, createStreamStatus.getStatus()); //Truncate the stream ResultObserver<UpdateStreamStatus> result3 = new ResultObserver<>(); this.controllerService.truncateStream(Controller.StreamCut.newBuilder() .setStreamInfo(StreamInfo.newBuilder() .setScope(SCOPE1) .setStream(STREAM1) .build()) .putCut(0, 0).putCut(1, 0).putCut(2, 0).putCut(3, 0).build(), result3); UpdateStreamStatus truncateStreamStatus = result3.get(); assertEquals(UpdateStreamStatus.Status.SUCCESS, truncateStreamStatus.getStatus()); }
@Override public CompletableFuture<Boolean> updateStream(String scope, String streamName, final StreamConfiguration streamConfig) { return this.controller.updateStream(scope, streamName, streamConfig).thenApply(x -> { switch (x.getStatus()) { case FAILURE: throw new ControllerFailureException("Failed to update stream: " + streamConfig); case SCOPE_NOT_FOUND: throw new IllegalArgumentException("Scope does not exist: " + streamConfig); case STREAM_NOT_FOUND: throw new IllegalArgumentException("Stream does not exist: " + streamConfig); case SUCCESS: return true; default: throw new ControllerFailureException("Unknown return status updating stream " + streamConfig + " " + x.getStatus()); } }); }
@Override public CompletableFuture<Boolean> sealStream(String scope, String streamName) { return this.controller.sealStream(scope, streamName).thenApply(x -> { switch (x.getStatus()) { case FAILURE: throw new ControllerFailureException("Failed to seal stream: " + streamName); case SCOPE_NOT_FOUND: throw new IllegalArgumentException("Scope does not exist: " + scope); case STREAM_NOT_FOUND: throw new IllegalArgumentException("Stream does not exist: " + streamName); case SUCCESS: return true; default: throw new ControllerFailureException("Unknown return status scealing stream " + streamName + " " + x.getStatus()); } }); }
@Test public void updateStreamTests() { createScopeAndStream(SCOPE1, STREAM1, ScalingPolicy.fixed(2)); final StreamConfiguration configuration2 = StreamConfiguration.builder() .scalingPolicy(ScalingPolicy.fixed(3)).build(); ResultObserver<UpdateStreamStatus> result2 = new ResultObserver<>(); this.controllerService.updateStream(ModelHelper.decode(SCOPE1, STREAM1, configuration2), result2); UpdateStreamStatus updateStreamStatus = result2.get(); Assert.assertEquals(updateStreamStatus.getStatus(), UpdateStreamStatus.Status.SUCCESS); // Update stream for non-existent stream. ResultObserver<UpdateStreamStatus> result3 = new ResultObserver<>(); final StreamConfiguration configuration3 = StreamConfiguration.builder().scalingPolicy(ScalingPolicy.fixed(1)).build(); this.controllerService.updateStream(ModelHelper.decode(SCOPE1, "unknownstream", configuration3), result3); updateStreamStatus = result3.get(); Assert.assertEquals(UpdateStreamStatus.Status.STREAM_NOT_FOUND, updateStreamStatus.getStatus()); }