@Test public void testSealStream() throws ExecutionException, InterruptedException { when(this.mockControllerService.sealStream(any(), any())).thenReturn( CompletableFuture.completedFuture(Controller.UpdateStreamStatus.newBuilder() .setStatus(Controller.UpdateStreamStatus.Status.SUCCESS).build())); Assert.assertTrue(this.testController.sealStream("scope", "stream").join()); CompletableFuture.completedFuture(Controller.UpdateStreamStatus.newBuilder() .setStatus(Controller.UpdateStreamStatus.Status.FAILURE).build())); assertThrows("Expected ControllerFailureException", CompletableFuture.completedFuture(Controller.UpdateStreamStatus.newBuilder() .setStatus(Controller.UpdateStreamStatus.Status.STREAM_NOT_FOUND).build())); assertThrows("Expected IllegalArgumentException", CompletableFuture.completedFuture(Controller.UpdateStreamStatus.newBuilder() .setStatus(Controller.UpdateStreamStatus.Status.SCOPE_NOT_FOUND).build())); assertThrows("Expected IllegalArgumentException", CompletableFuture.completedFuture(Controller.UpdateStreamStatus.newBuilder() .setStatusValue(-1).build())); assertThrows("Expected ControllerFailureException",
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();
@java.lang.Override public int hashCode() { if (memoizedHashCode != 0) { return memoizedHashCode; } int hash = 41; hash = (19 * hash) + getDescriptor().hashCode(); hash = (37 * hash) + STATUS_FIELD_NUMBER; hash = (53 * hash) + status_; hash = (29 * hash) + unknownFields.hashCode(); memoizedHashCode = hash; return hash; }
this.controllerService.sealStream(ModelHelper.createStreamInfo(SCOPE1, STREAM1), result6); UpdateStreamStatus updateStreamStatus = result6.get(); assertEquals("Seal stream", UpdateStreamStatus.Status.SUCCESS, updateStreamStatus.getStatus());
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();
UpdateStreamStatus.newBuilder().setStatus(UpdateStreamStatus.Status.SUCCESS).build())); StreamState streamState = new StreamState().streamState(StreamState.StreamStateEnum.SEALED); Response response = addAuthHeaders(client.target(resourceURI).request()).buildPut(Entity.json(streamState)).invoke(); UpdateStreamStatus.newBuilder().setStatus(UpdateStreamStatus.Status.SCOPE_NOT_FOUND).build())); streamState = new StreamState().streamState(StreamState.StreamStateEnum.SEALED); response = addAuthHeaders(client.target(resourceURI).request()).buildPut(Entity.json(streamState)).invoke(); UpdateStreamStatus.newBuilder().setStatus(UpdateStreamStatus.Status.STREAM_NOT_FOUND).build())); streamState = new StreamState().streamState(StreamState.StreamStateEnum.SEALED); response = addAuthHeaders(client.target(resourceURI).request()).buildPut(Entity.json(streamState)).invoke(); UpdateStreamStatus.newBuilder().setStatus(UpdateStreamStatus.Status.FAILURE).build())); streamState = new StreamState().streamState(StreamState.StreamStateEnum.SEALED); response = addAuthHeaders(client.target(resourceURI).request()).buildPut(Entity.json(streamState)).invoke();
StreamObserver<UpdateStreamStatus> responseObserver) { if (request.getStreamInfo().getStream().equals("stream1")) { responseObserver.onNext(UpdateStreamStatus.newBuilder() .setStatus(UpdateStreamStatus.Status.SUCCESS) .build()); responseObserver.onCompleted(); } else if (request.getStreamInfo().getStream().equals("stream2")) { responseObserver.onNext(UpdateStreamStatus.newBuilder() .setStatus(UpdateStreamStatus.Status.FAILURE) .build()); responseObserver.onCompleted(); } else if (request.getStreamInfo().getStream().equals("stream3")) { responseObserver.onNext(UpdateStreamStatus.newBuilder() .setStatus(UpdateStreamStatus.Status.SCOPE_NOT_FOUND) .build()); responseObserver.onCompleted(); } else if (request.getStreamInfo().getStream().equals("stream4")) { responseObserver.onNext(UpdateStreamStatus.newBuilder() .setStatus(UpdateStreamStatus.Status.STREAM_NOT_FOUND) .build()); responseObserver.onCompleted(); } else if (request.getStreamInfo().getStream().equals("stream5")) { responseObserver.onNext(UpdateStreamStatus.newBuilder() .setStatus(UpdateStreamStatus.Status.UNRECOGNIZED) .build());
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 testUpdateStream() throws ExecutionException, InterruptedException { when(this.mockControllerService.updateStream(any(), any(), any())).thenReturn( CompletableFuture.completedFuture(Controller.UpdateStreamStatus.newBuilder() .setStatus(Controller.UpdateStreamStatus.Status.SUCCESS).build())); Assert.assertTrue(this.testController.updateStream("scope", "stream", StreamConfiguration.builder().build()).join()); CompletableFuture.completedFuture(Controller.UpdateStreamStatus.newBuilder() .setStatus(Controller.UpdateStreamStatus.Status.FAILURE).build())); assertThrows("Expected ControllerFailureException", CompletableFuture.completedFuture(Controller.UpdateStreamStatus.newBuilder() .setStatus(Controller.UpdateStreamStatus.Status.STREAM_NOT_FOUND).build())); assertThrows("Expected IllegalArgumentException", CompletableFuture.completedFuture(Controller.UpdateStreamStatus.newBuilder() .setStatus(Controller.UpdateStreamStatus.Status.SCOPE_NOT_FOUND).build())); assertThrows("Expected IllegalArgumentException", CompletableFuture.completedFuture(Controller.UpdateStreamStatus.newBuilder() .setStatusValue(-1).build())); assertThrows("Expected ControllerFailureException",
@io.grpc.stub.annotations.RpcMethod( fullMethodName = SERVICE_NAME + '/' + "sealStream", requestType = io.pravega.controller.stream.api.grpc.v1.Controller.StreamInfo.class, responseType = io.pravega.controller.stream.api.grpc.v1.Controller.UpdateStreamStatus.class, methodType = io.grpc.MethodDescriptor.MethodType.UNARY) public static io.grpc.MethodDescriptor<io.pravega.controller.stream.api.grpc.v1.Controller.StreamInfo, io.pravega.controller.stream.api.grpc.v1.Controller.UpdateStreamStatus> getSealStreamMethod() { io.grpc.MethodDescriptor<io.pravega.controller.stream.api.grpc.v1.Controller.StreamInfo, io.pravega.controller.stream.api.grpc.v1.Controller.UpdateStreamStatus> getSealStreamMethod; if ((getSealStreamMethod = ControllerServiceGrpc.getSealStreamMethod) == null) { synchronized (ControllerServiceGrpc.class) { if ((getSealStreamMethod = ControllerServiceGrpc.getSealStreamMethod) == null) { ControllerServiceGrpc.getSealStreamMethod = getSealStreamMethod = io.grpc.MethodDescriptor.<io.pravega.controller.stream.api.grpc.v1.Controller.StreamInfo, io.pravega.controller.stream.api.grpc.v1.Controller.UpdateStreamStatus>newBuilder() .setType(io.grpc.MethodDescriptor.MethodType.UNARY) .setFullMethodName(generateFullMethodName( "io.pravega.controller.stream.api.grpc.v1.ControllerService", "sealStream")) .setSampledToLocalTracing(true) .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller( io.pravega.controller.stream.api.grpc.v1.Controller.StreamInfo.getDefaultInstance())) .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller( io.pravega.controller.stream.api.grpc.v1.Controller.UpdateStreamStatus.getDefaultInstance())) .setSchemaDescriptor(new ControllerServiceMethodDescriptorSupplier("sealStream")) .build(); } } } return getSealStreamMethod; }
@io.grpc.stub.annotations.RpcMethod( fullMethodName = SERVICE_NAME + '/' + "truncateStream", requestType = io.pravega.controller.stream.api.grpc.v1.Controller.StreamCut.class, responseType = io.pravega.controller.stream.api.grpc.v1.Controller.UpdateStreamStatus.class, methodType = io.grpc.MethodDescriptor.MethodType.UNARY) public static io.grpc.MethodDescriptor<io.pravega.controller.stream.api.grpc.v1.Controller.StreamCut, io.pravega.controller.stream.api.grpc.v1.Controller.UpdateStreamStatus> getTruncateStreamMethod() { io.grpc.MethodDescriptor<io.pravega.controller.stream.api.grpc.v1.Controller.StreamCut, io.pravega.controller.stream.api.grpc.v1.Controller.UpdateStreamStatus> getTruncateStreamMethod; if ((getTruncateStreamMethod = ControllerServiceGrpc.getTruncateStreamMethod) == null) { synchronized (ControllerServiceGrpc.class) { if ((getTruncateStreamMethod = ControllerServiceGrpc.getTruncateStreamMethod) == null) { ControllerServiceGrpc.getTruncateStreamMethod = getTruncateStreamMethod = io.grpc.MethodDescriptor.<io.pravega.controller.stream.api.grpc.v1.Controller.StreamCut, io.pravega.controller.stream.api.grpc.v1.Controller.UpdateStreamStatus>newBuilder() .setType(io.grpc.MethodDescriptor.MethodType.UNARY) .setFullMethodName(generateFullMethodName( "io.pravega.controller.stream.api.grpc.v1.ControllerService", "truncateStream")) .setSampledToLocalTracing(true) .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller( io.pravega.controller.stream.api.grpc.v1.Controller.StreamCut.getDefaultInstance())) .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller( io.pravega.controller.stream.api.grpc.v1.Controller.UpdateStreamStatus.getDefaultInstance())) .setSchemaDescriptor(new ControllerServiceMethodDescriptorSupplier("truncateStream")) .build(); } } } return getTruncateStreamMethod; }
@io.grpc.stub.annotations.RpcMethod( fullMethodName = SERVICE_NAME + '/' + "updateStream", requestType = io.pravega.controller.stream.api.grpc.v1.Controller.StreamConfig.class, responseType = io.pravega.controller.stream.api.grpc.v1.Controller.UpdateStreamStatus.class, methodType = io.grpc.MethodDescriptor.MethodType.UNARY) public static io.grpc.MethodDescriptor<io.pravega.controller.stream.api.grpc.v1.Controller.StreamConfig, io.pravega.controller.stream.api.grpc.v1.Controller.UpdateStreamStatus> getUpdateStreamMethod() { io.grpc.MethodDescriptor<io.pravega.controller.stream.api.grpc.v1.Controller.StreamConfig, io.pravega.controller.stream.api.grpc.v1.Controller.UpdateStreamStatus> getUpdateStreamMethod; if ((getUpdateStreamMethod = ControllerServiceGrpc.getUpdateStreamMethod) == null) { synchronized (ControllerServiceGrpc.class) { if ((getUpdateStreamMethod = ControllerServiceGrpc.getUpdateStreamMethod) == null) { ControllerServiceGrpc.getUpdateStreamMethod = getUpdateStreamMethod = io.grpc.MethodDescriptor.<io.pravega.controller.stream.api.grpc.v1.Controller.StreamConfig, io.pravega.controller.stream.api.grpc.v1.Controller.UpdateStreamStatus>newBuilder() .setType(io.grpc.MethodDescriptor.MethodType.UNARY) .setFullMethodName(generateFullMethodName( "io.pravega.controller.stream.api.grpc.v1.ControllerService", "updateStream")) .setSampledToLocalTracing(true) .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller( io.pravega.controller.stream.api.grpc.v1.Controller.StreamConfig.getDefaultInstance())) .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller( io.pravega.controller.stream.api.grpc.v1.Controller.UpdateStreamStatus.getDefaultInstance())) .setSchemaDescriptor(new ControllerServiceMethodDescriptorSupplier("updateStream")) .build(); } } } return getUpdateStreamMethod; }
@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()); }
StreamObserver<UpdateStreamStatus> responseObserver) { if (request.getStreamInfo().getStream().equals("stream1")) { responseObserver.onNext(UpdateStreamStatus.newBuilder() .setStatus(UpdateStreamStatus.Status.SUCCESS) .build()); responseObserver.onCompleted(); } else if (request.getStreamInfo().getStream().equals("stream2")) { responseObserver.onNext(UpdateStreamStatus.newBuilder() .setStatus(UpdateStreamStatus.Status.FAILURE) .build()); responseObserver.onCompleted(); } else if (request.getStreamInfo().getStream().equals("stream3")) { responseObserver.onNext(UpdateStreamStatus.newBuilder() .setStatus(UpdateStreamStatus.Status.SCOPE_NOT_FOUND) .build()); responseObserver.onCompleted(); } else if (request.getStreamInfo().getStream().equals("stream4")) { responseObserver.onNext(UpdateStreamStatus.newBuilder() .setStatus(UpdateStreamStatus.Status.STREAM_NOT_FOUND) .build()); responseObserver.onCompleted(); } else if (request.getStreamInfo().getStream().equals("stream5")) { responseObserver.onNext(UpdateStreamStatus.newBuilder() .setStatus(UpdateStreamStatus.Status.UNRECOGNIZED) .build());
@Override public void sealStream(StreamInfo request, StreamObserver<UpdateStreamStatus> responseObserver) { if (request.getStream().equals("stream1")) { responseObserver.onNext(UpdateStreamStatus.newBuilder() .setStatus(UpdateStreamStatus.Status.SUCCESS) .build()); responseObserver.onCompleted(); } else if (request.getStream().equals("stream2")) { responseObserver.onNext(UpdateStreamStatus.newBuilder() .setStatus(UpdateStreamStatus.Status.FAILURE) .build()); responseObserver.onCompleted(); } else if (request.getStream().equals("stream3")) { responseObserver.onNext(UpdateStreamStatus.newBuilder() .setStatus(UpdateStreamStatus.Status.SCOPE_NOT_FOUND) .build()); responseObserver.onCompleted(); } else if (request.getStream().equals("stream4")) { responseObserver.onNext(UpdateStreamStatus.newBuilder() .setStatus(UpdateStreamStatus.Status.STREAM_NOT_FOUND) .build()); responseObserver.onCompleted(); } else { responseObserver.onError(Status.INTERNAL.withDescription("Server error").asRuntimeException()); } }
@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()); } }); }
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()); } }); }