if (scopeStatus.getStatus() == DeleteScopeStatus.Status.SUCCESS) { log.info("Successfully deleted scope: {}", scopeName); return Response.status(Status.NO_CONTENT).build(); } else if (scopeStatus.getStatus() == DeleteScopeStatus.Status.SCOPE_NOT_FOUND) { log.warn("Scope: {} not found", scopeName); return Response.status(Status.NOT_FOUND).build(); } else if (scopeStatus.getStatus() == DeleteScopeStatus.Status.SCOPE_NOT_EMPTY) { log.warn("Cannot delete scope: {} with non-empty streams", scopeName); return Response.status(Status.PRECONDITION_FAILED).build();
@Override public CompletableFuture<Boolean> deleteScope(String scopeName) { return this.controller.deleteScope(scopeName).thenApply(x -> { switch (x.getStatus()) { case FAILURE: throw new ControllerFailureException("Failed to delete scope: " + scopeName); case SCOPE_NOT_EMPTY: throw new IllegalStateException("Scope " + scopeName + " is not empty."); case SCOPE_NOT_FOUND: return false; case SUCCESS: return true; default: throw new ControllerFailureException("Unknown return status deleting scope " + scopeName + " " + x.getStatus()); } }); }
@Test public void deleteTest() throws Exception { final String scope = "ScopeDelete"; final String stream = "StreamDelete"; final ScalingPolicy policy = ScalingPolicy.fixed(2); final StreamConfiguration configuration = StreamConfiguration.builder().scalingPolicy(policy).build(); long start = System.currentTimeMillis(); store.createScope(scope).get(); store.createStream(scope, stream, configuration, start, null, executor).get(); store.setState(scope, stream, State.ACTIVE, null, executor).get(); assertTrue(store.checkStreamExists(scope, stream).join()); store.deleteStream(scope, stream, null, executor).get(); assertFalse(store.checkStreamExists(scope, stream).join()); DeleteScopeStatus status = store.deleteScope(scope).join(); assertEquals(status.getStatus(), DeleteScopeStatus.Status.SUCCESS); }
this.controllerService.deleteScope(ModelHelper.createScopeInfo(SCOPE3), result2); deleteScopeStatus = result2.get(); assertEquals("Delete Empty scope", DeleteScopeStatus.Status.SUCCESS, deleteScopeStatus.getStatus()); deleteScopeStatus = result7.get(); assertEquals("Verify that Scope3 is infact deleted", DeleteScopeStatus.Status.SCOPE_NOT_FOUND, deleteScopeStatus.getStatus()); this.controllerService.deleteScope(ModelHelper.createScopeInfo(SCOPE2), result5); deleteScopeStatus = result5.get(); assertEquals("Delete non empty scope", DeleteScopeStatus.Status.SCOPE_NOT_EMPTY, deleteScopeStatus.getStatus()); deleteScopeStatus = result6.get(); assertEquals("Delete non existent scope", DeleteScopeStatus.Status.SCOPE_NOT_FOUND, deleteScopeStatus.getStatus());
@Test public void testZkDeleteScope() throws Exception { // create new scope final StreamMetadataStore store = new ZKStreamMetadataStore(cli, executor); final String scopeName = "Scope1"; store.createScope(scopeName).get(); // Delete empty scope Scope1 CompletableFuture<DeleteScopeStatus> deleteScopeStatus = store.deleteScope(scopeName); assertEquals("Delete Empty Scope", DeleteScopeStatus.Status.SUCCESS, deleteScopeStatus.get().getStatus()); // Delete non-existent scope Scope2 CompletableFuture<DeleteScopeStatus> deleteScopeStatus2 = store.deleteScope("Scope2"); assertEquals("Delete non-existent Scope", DeleteScopeStatus.Status.SCOPE_NOT_FOUND, deleteScopeStatus2.get().getStatus()); // Delete non-empty scope Scope3 store.createScope("Scope3").get(); final ScalingPolicy policy = ScalingPolicy.fixed(5); final StreamConfiguration streamConfig = StreamConfiguration.builder().scalingPolicy(policy).build(); store.createStream("Scope3", "Stream3", streamConfig, System.currentTimeMillis(), null, executor).get(); store.setState("Scope3", "Stream3", State.ACTIVE, null, executor).get(); CompletableFuture<DeleteScopeStatus> deleteScopeStatus3 = store.deleteScope("Scope3"); assertEquals("Delete non-empty Scope", DeleteScopeStatus.Status.SCOPE_NOT_EMPTY, deleteScopeStatus3.get().getStatus()); }