@Override @Synchronized public CompletableFuture<CreateScopeStatus> createScope(final String scopeName) { if (!scopes.containsKey(scopeName)) { InMemoryScope scope = new InMemoryScope(scopeName); scope.createScope(); scopes.put(scopeName, scope); return CompletableFuture.completedFuture(CreateScopeStatus.newBuilder().setStatus( CreateScopeStatus.Status.SUCCESS).build()); } else { return CompletableFuture.completedFuture(CreateScopeStatus.newBuilder().setStatus( CreateScopeStatus.Status.SCOPE_EXISTS).build()); } }
/** * Controller Service API to create scope. * * @param scope Name of scope to be created. * @return Status of create scope. */ public CompletableFuture<CreateScopeStatus> createScope(final String scope) { Exceptions.checkNotNullOrEmpty(scope, "scope"); try { NameUtils.validateScopeName(scope); } catch (IllegalArgumentException | NullPointerException e) { log.warn("Create scope failed due to invalid scope name {}", scope); return CompletableFuture.completedFuture(CreateScopeStatus.newBuilder().setStatus( CreateScopeStatus.Status.INVALID_SCOPE_NAME).build()); } return streamStore.createScope(scope); }
/** * Create a scope with given name. * * @param scopeName Name of scope to created. * @return CreateScopeStatus future. */ @Override public CompletableFuture<CreateScopeStatus> createScope(final String scopeName) { return getScope(scopeName).createScope().handle((result, ex) -> { if (ex == null) { return CreateScopeStatus.newBuilder().setStatus(CreateScopeStatus.Status.SUCCESS).build(); } if (ex instanceof StoreException.DataExistsException || ex.getCause() instanceof StoreException.DataExistsException) { return CreateScopeStatus.newBuilder().setStatus(CreateScopeStatus.Status.SCOPE_EXISTS).build(); } else { log.debug("Create scope failed due to ", ex); return CreateScopeStatus.newBuilder().setStatus(CreateScopeStatus.Status.FAILURE).build(); } }); }
CreateScopeStatus.newBuilder().setStatus(CreateScopeStatus.Status.SUCCESS).build())); Response response = addAuthHeaders(client.target(resourceURI).request()).buildPost(Entity.json(createScopeRequest)).invoke(); assertEquals("Create Scope response code", 201, response.getStatus()); CreateScopeStatus.newBuilder().setStatus(CreateScopeStatus.Status.SCOPE_EXISTS).build())); response = addAuthHeaders(client.target(resourceURI).request()).buildPost(Entity.json(createScopeRequest)).invoke(); assertEquals("Create Scope response code", 409, response.getStatus()); CreateScopeStatus.newBuilder().setStatus(CreateScopeStatus.Status.FAILURE).build())); response = addAuthHeaders(client.target(resourceURI).request()).buildPost(Entity.json(createScopeRequest)).invoke(); assertEquals("Create Scope response code", 500, response.getStatus()); CreateScopeStatus.newBuilder().setStatus(CreateScopeStatus.Status.SCOPE_EXISTS).build())); createScopeRequest.setScopeName("_system"); response = addAuthHeaders(client.target(resourceURI).request()).buildPost(Entity.json(createScopeRequest)).invoke();
@Test public void testCreateScope() throws ExecutionException, InterruptedException { when(this.mockControllerService.createScope(any())).thenReturn( CompletableFuture.completedFuture(Controller.CreateScopeStatus.newBuilder() .setStatus(Controller.CreateScopeStatus.Status.SUCCESS).build())); Assert.assertTrue(this.testController.createScope("scope").join()); when(this.mockControllerService.createScope(any())).thenReturn( CompletableFuture.completedFuture(Controller.CreateScopeStatus.newBuilder() .setStatus(Controller.CreateScopeStatus.Status.SCOPE_EXISTS).build())); Assert.assertFalse(this.testController.createScope("scope").join()); when(this.mockControllerService.createScope(any())).thenReturn( CompletableFuture.completedFuture(Controller.CreateScopeStatus.newBuilder() .setStatus(Controller.CreateScopeStatus.Status.FAILURE).build())); assertThrows("Expected ControllerFailureException", () -> this.testController.createScope("scope").join(), ex -> ex instanceof ControllerFailureException); when(this.mockControllerService.createScope(any())).thenReturn( CompletableFuture.completedFuture(Controller.CreateScopeStatus.newBuilder() .setStatus(Controller.CreateScopeStatus.Status.INVALID_SCOPE_NAME).build())); assertThrows("Expected IllegalArgumentException", () -> this.testController.createScope("scope").join(), ex -> ex instanceof IllegalArgumentException); when(this.mockControllerService.createScope(any())).thenReturn( CompletableFuture.completedFuture(Controller.CreateScopeStatus.newBuilder() .setStatusValue(-1).build())); assertThrows("Expected ControllerFailureException", () -> this.testController.createScope("scope").join(), ex -> ex instanceof ControllerFailureException); }
@Override public void createScope(ScopeInfo request, StreamObserver<CreateScopeStatus> responseObserver) { if (request.getScope().equals("scope1")) { responseObserver.onNext(CreateScopeStatus.newBuilder().setStatus( CreateScopeStatus.Status.SUCCESS).build()); responseObserver.onCompleted(); } else if (request.getScope().equals("scope2")) { responseObserver.onNext(CreateScopeStatus.newBuilder().setStatus( CreateScopeStatus.Status.FAILURE).build()); responseObserver.onCompleted(); } else if (request.getScope().equals("scope3")) { responseObserver.onNext(CreateScopeStatus.newBuilder() .setStatus(CreateScopeStatus.Status.INVALID_SCOPE_NAME) .build()); responseObserver.onCompleted(); } else if (request.getScope().equals("scope4")) { responseObserver.onNext(CreateScopeStatus.newBuilder() .setStatus(CreateScopeStatus.Status.SCOPE_EXISTS) .build()); responseObserver.onCompleted(); } else { responseObserver.onError(Status.INTERNAL.withDescription("Server error").asRuntimeException()); } }
public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder() {
@Override public void createScope(io.pravega.controller.stream.api.grpc.v1.Controller.ScopeInfo request, io.grpc.stub.StreamObserver<io.pravega.controller.stream.api.grpc.v1.Controller.CreateScopeStatus> responseObserver) { responseObserver.onNext(Controller.CreateScopeStatus.newBuilder().build()); } };