if (scopeStatus.getStatus() == CreateScopeStatus.Status.SUCCESS) { log.info("Successfully created new scope: {}", createScopeRequest.getScopeName()); return Response.status(Status.CREATED). entity(new ScopeProperty().scopeName(createScopeRequest.getScopeName())).build(); } else if (scopeStatus.getStatus() == CreateScopeStatus.Status.SCOPE_EXISTS) { log.warn("Scope name: {} already exists", createScopeRequest.getScopeName()); return Response.status(Status.CONFLICT).build();
@Override public CompletableFuture<Boolean> createScope(final String scopeName) { return this.controller.createScope(scopeName).thenApply(x -> { switch (x.getStatus()) { case FAILURE: throw new ControllerFailureException("Failed to create scope: " + scopeName); case INVALID_SCOPE_NAME: throw new IllegalArgumentException("Illegal scope name: " + scopeName); case SCOPE_EXISTS: return false; case SUCCESS: return true; default: throw new ControllerFailureException("Unknown return status creating scope " + scopeName + " " + x.getStatus()); } }); }
assertEquals(Controller.CreateScopeStatus.Status.SUCCESS, scopeStatus.getStatus()); Controller.CreateStreamStatus streamStatus = consumer.createStream(SCOPE, STREAM, configuration1, start).get(); assertEquals(Controller.CreateStreamStatus.Status.SUCCESS, streamStatus.getStatus());
Assert.assertEquals(Controller.CreateScopeStatus.Status.SUCCESS, consumer.createScope(SCOPE).join().getStatus()); Assert.assertEquals(Controller.CreateStreamStatus.Status.SUCCESS, streamMetadataTasks.createStream(SCOPE, STREAM, configuration1, System.currentTimeMillis()).join());
Assert.assertEquals(Controller.CreateScopeStatus.Status.SUCCESS, consumer.createScope(SCOPE).join().getStatus()); Assert.assertEquals(Controller.CreateStreamStatus.Status.SUCCESS, streamMetadataTasks.createStream(SCOPE, STREAM, configuration1, System.currentTimeMillis()).join());
Assert.assertEquals(result.get().getStatus(), CreateScopeStatus.Status.SUCCESS);
this.controllerService.createScope(ModelHelper.createScopeInfo(SCOPE3), result1); createScopeStatus = result1.get(); assertEquals("Create Scope", CreateScopeStatus.Status.SUCCESS, createScopeStatus.getStatus()); this.controllerService.createScope(ModelHelper.createScopeInfo(SCOPE2), result3); createScopeStatus = result3.get(); assertEquals("Create Scope", CreateScopeStatus.Status.SUCCESS, createScopeStatus.getStatus());
this.controllerService.createScope(ModelHelper.createScopeInfo(SCOPE1), result1); createScopeStatus = result1.get(); assertEquals("Create Scope", CreateScopeStatus.Status.SUCCESS, createScopeStatus.getStatus());
this.controllerService.createScope(ModelHelper.createScopeInfo(SCOPE1), result1); createScopeStatus = result1.get(); assertEquals("Create Scope", CreateScopeStatus.Status.SUCCESS, createScopeStatus.getStatus());
assertEquals(Controller.CreateScopeStatus.Status.SUCCESS, scopeStatus.getStatus()); Controller.CreateStreamStatus streamStatus = consumer.createStream(SCOPE, STREAM, configuration1, start).get(); assertEquals(Controller.CreateStreamStatus.Status.SUCCESS, streamStatus.getStatus());
Assert.assertEquals(Controller.CreateScopeStatus.Status.SUCCESS, consumer.createScope(SCOPE).join().getStatus()); Assert.assertEquals(Controller.CreateStreamStatus.Status.SUCCESS, streamMetadataTasks.createStream(SCOPE, STREAM, configuration1, 0).join());
Assert.assertEquals(Controller.CreateScopeStatus.Status.SUCCESS, consumer.createScope(SCOPE).join().getStatus()); Assert.assertEquals(Controller.CreateStreamStatus.Status.SUCCESS, streamMetadataTasks.createStream(SCOPE, STREAM, configuration1, 0).join());
@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()); }
@Test public void createScopeTests() { CreateScopeStatus status; // region createScope ResultObserver<CreateScopeStatus> result1 = new ResultObserver<>(); this.controllerService.createScope(ModelHelper.createScopeInfo(SCOPE1), result1); status = result1.get(); assertEquals(status.getStatus(), CreateScopeStatus.Status.SUCCESS); ResultObserver<CreateScopeStatus> result2 = new ResultObserver<>(); this.controllerService.createScope(ModelHelper.createScopeInfo(SCOPE2), result2); status = result2.get(); assertEquals(status.getStatus(), CreateScopeStatus.Status.SUCCESS); // endregion // region duplicate create scope ResultObserver<CreateScopeStatus> result3 = new ResultObserver<>(); this.controllerService.createScope(ModelHelper.createScopeInfo(SCOPE2), result3); status = result3.get(); assertEquals(status.getStatus(), CreateScopeStatus.Status.SCOPE_EXISTS); // endregion // region with invalid scope with name "abc/def' ResultObserver<CreateScopeStatus> result4 = new ResultObserver<>(); this.controllerService.createScope(ModelHelper.createScopeInfo("abc/def"), result4); status = result4.get(); assertEquals(status.getStatus(), CreateScopeStatus.Status.INVALID_SCOPE_NAME); // endregion }
@Test public void testZkCreateScope() throws Exception { // create new scope test final StreamMetadataStore store = new ZKStreamMetadataStore(cli, executor); final String scopeName = "Scope1"; CompletableFuture<CreateScopeStatus> createScopeStatus = store.createScope(scopeName); // createScope returns null on success, and exception on failure assertEquals("Create new scope :", CreateScopeStatus.Status.SUCCESS, createScopeStatus.get().getStatus()); // create duplicate scope test createScopeStatus = store.createScope(scopeName); assertEquals("Create new scope :", CreateScopeStatus.Status.SCOPE_EXISTS, createScopeStatus.get().getStatus()); //listStreamsInScope test final String streamName1 = "Stream1"; final String streamName2 = "Stream2"; final ScalingPolicy policy = ScalingPolicy.fixed(5); StreamConfiguration streamConfig = StreamConfiguration.builder().scalingPolicy(policy).build(); StreamConfiguration streamConfig2 = StreamConfiguration.builder().scalingPolicy(policy).build(); store.createStream(scopeName, streamName1, streamConfig, System.currentTimeMillis(), null, executor).get(); store.setState(scopeName, streamName1, State.ACTIVE, null, executor).get(); store.createStream(scopeName, streamName2, streamConfig2, System.currentTimeMillis(), null, executor).get(); store.setState(scopeName, streamName2, State.ACTIVE, null, executor).get(); Map<String, StreamConfiguration> listOfStreams = store.listStreamsInScope(scopeName).get(); assertEquals("Size of list", 2, listOfStreams.size()); assertTrue("Name of stream at index zero", listOfStreams.containsKey("Stream1")); assertTrue("Name of stream at index one", listOfStreams.containsKey("Stream2")); }
protected void createScopeAndStream(String scope, String stream, ScalingPolicy scalingPolicy) { final StreamConfiguration configuration1 = StreamConfiguration.builder().scalingPolicy(scalingPolicy).build(); // Create a test scope. ResultObserver<CreateScopeStatus> result1 = new ResultObserver<>(); this.controllerService.createScope(ModelHelper.createScopeInfo(scope), result1); CreateScopeStatus 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(scope, stream, configuration1), result2); CreateStreamStatus createStreamStatus = result2.get(); assertEquals("Create stream", CreateStreamStatus.Status.SUCCESS, createStreamStatus.getStatus()); }