@GET @PropertyFiltering @Path("/lbcleanup") @Operation(summary = "Retrieve the list of tasks being cleaned from load balancers.") public Iterable<String> getLbCleanupRequests( @Parameter(hidden = true) @Auth SingularityUser user, @Parameter(description = "Fetched a cached version of this data to limit expensive operations") @QueryParam("useWebCache") Boolean useWebCache) { return authorizationHelper.filterAuthorizedRequestIds(user, requestManager.getLbCleanupRequestIds(), SingularityAuthorizationScope.READ, useWebCache(useWebCache)); } }
@Test public void testPauseLbCleanup() { initLoadBalancedRequest(); initFirstDeploy(); requestManager.saveLbCleanupRequest(new SingularityRequestLbCleanup(requestId, Sets.newHashSet("test"), "/basepath", Collections.<String>emptyList(), Optional.<SingularityLoadBalancerUpdate>absent())); requestManager.pause(request, System.currentTimeMillis(), Optional.<String>absent(), Optional.<String>absent()); testingLbClient.setNextBaragonRequestState(BaragonRequestState.WAITING); cleaner.drainCleanupQueue(); Assert.assertTrue(!requestManager.getLbCleanupRequestIds().isEmpty()); Optional<SingularityLoadBalancerUpdate> lbUpdate = requestManager.getLbCleanupRequest(requestId).get().getLoadBalancerUpdate(); Assert.assertTrue(lbUpdate.isPresent()); Assert.assertTrue(lbUpdate.get().getLoadBalancerState() == BaragonRequestState.WAITING); testingLbClient.setNextBaragonRequestState(BaragonRequestState.FAILED); cleaner.drainCleanupQueue(); Assert.assertTrue(!requestManager.getLbCleanupRequestIds().isEmpty()); lbUpdate = requestManager.getLbCleanupRequest(requestId).get().getLoadBalancerUpdate(); Assert.assertTrue(lbUpdate.isPresent()); Assert.assertTrue(lbUpdate.get().getLoadBalancerState() == BaragonRequestState.FAILED); testingLbClient.setNextBaragonRequestState(BaragonRequestState.SUCCESS); cleaner.drainCleanupQueue(); Assert.assertTrue(requestManager.getLbCleanupRequestIds().isEmpty()); }
@Test public void testLbCleanupSkippedOnSkipRemoveFlag() { configuration.setDeleteRemovedRequestsFromLoadBalancer(true); initLoadBalancedRequest(); initLoadBalancedDeploy(); startTask(firstDeploy); boolean removeFromLoadBalancer = false; SingularityDeleteRequestRequest deleteRequest = new SingularityDeleteRequestRequest(Optional.absent(), Optional.absent(), Optional.of(removeFromLoadBalancer)); requestResource.deleteRequest(requestId, Optional.of(deleteRequest), singularityUser); testingLbClient.setNextBaragonRequestState(BaragonRequestState.WAITING); Assert.assertFalse("Tasks should get cleaned up", requestManager.getCleanupRequests().isEmpty()); cleaner.drainCleanupQueue(); killKilledTasks(); Assert.assertFalse("The request should get cleaned up", requestManager.getCleanupRequests().isEmpty()); cleaner.drainCleanupQueue(); Assert.assertTrue("The request should not be removed from the load balancer", requestManager.getLbCleanupRequestIds().isEmpty()); }
@Test public void testLbCleanupOccursOnRequestDelete() { configuration.setDeleteRemovedRequestsFromLoadBalancer(true); initLoadBalancedRequest(); initLoadBalancedDeploy(); startTask(firstDeploy); requestResource.deleteRequest(requestId, Optional.absent(), singularityUser); testingLbClient.setNextBaragonRequestState(BaragonRequestState.WAITING); Assert.assertFalse("Tasks should get cleaned up", requestManager.getCleanupRequests().isEmpty()); cleaner.drainCleanupQueue(); killKilledTasks(); Assert.assertFalse("The request should get cleaned up", requestManager.getCleanupRequests().isEmpty()); cleaner.drainCleanupQueue(); Assert.assertFalse("The request should get removed from the load balancer", requestManager.getLbCleanupRequestIds().isEmpty()); }
@GET @PropertyFiltering @Path("/lbcleanup") @Operation(summary = "Retrieve the list of tasks being cleaned from load balancers.") public Iterable<String> getLbCleanupRequests( @Parameter(hidden = true) @Auth SingularityUser user, @Parameter(description = "Fetched a cached version of this data to limit expensive operations") @QueryParam("useWebCache") Boolean useWebCache) { return authorizationHelper.filterAuthorizedRequestIds(user, requestManager.getLbCleanupRequestIds(), SingularityAuthorizationScope.READ, useWebCache(useWebCache)); } }
@Test public void testPauseLbCleanup() { initLoadBalancedRequest(); initFirstDeploy(); requestManager.saveLbCleanupRequest(new SingularityRequestLbCleanup(requestId, Sets.newHashSet("test"), "/basepath", Collections.<String>emptyList(), Optional.<SingularityLoadBalancerUpdate>absent())); requestManager.pause(request, System.currentTimeMillis(), Optional.<String>absent(), Optional.<String>absent()); testingLbClient.setNextBaragonRequestState(BaragonRequestState.WAITING); cleaner.drainCleanupQueue(); Assert.assertTrue(!requestManager.getLbCleanupRequestIds().isEmpty()); Optional<SingularityLoadBalancerUpdate> lbUpdate = requestManager.getLbCleanupRequest(requestId).get().getLoadBalancerUpdate(); Assert.assertTrue(lbUpdate.isPresent()); Assert.assertTrue(lbUpdate.get().getLoadBalancerState() == BaragonRequestState.WAITING); testingLbClient.setNextBaragonRequestState(BaragonRequestState.FAILED); cleaner.drainCleanupQueue(); Assert.assertTrue(!requestManager.getLbCleanupRequestIds().isEmpty()); lbUpdate = requestManager.getLbCleanupRequest(requestId).get().getLoadBalancerUpdate(); Assert.assertTrue(lbUpdate.isPresent()); Assert.assertTrue(lbUpdate.get().getLoadBalancerState() == BaragonRequestState.FAILED); testingLbClient.setNextBaragonRequestState(BaragonRequestState.SUCCESS); cleaner.drainCleanupQueue(); Assert.assertTrue(requestManager.getLbCleanupRequestIds().isEmpty()); }
@Test public void testLbCleanupSkippedOnSkipRemoveFlag() { configuration.setDeleteRemovedRequestsFromLoadBalancer(true); initLoadBalancedRequest(); initLoadBalancedDeploy(); startTask(firstDeploy); boolean removeFromLoadBalancer = false; SingularityDeleteRequestRequest deleteRequest = new SingularityDeleteRequestRequest(Optional.absent(), Optional.absent(), Optional.of(removeFromLoadBalancer)); requestResource.deleteRequest(requestId, Optional.of(deleteRequest), singularityUser); testingLbClient.setNextBaragonRequestState(BaragonRequestState.WAITING); Assert.assertFalse("Tasks should get cleaned up", requestManager.getCleanupRequests().isEmpty()); cleaner.drainCleanupQueue(); killKilledTasks(); Assert.assertFalse("The request should get cleaned up", requestManager.getCleanupRequests().isEmpty()); cleaner.drainCleanupQueue(); Assert.assertTrue("The request should not be removed from the load balancer", requestManager.getLbCleanupRequestIds().isEmpty()); }
@Test public void testLbCleanupOccursOnRequestDelete() { configuration.setDeleteRemovedRequestsFromLoadBalancer(true); initLoadBalancedRequest(); initLoadBalancedDeploy(); startTask(firstDeploy); requestResource.deleteRequest(requestId, Optional.absent(), singularityUser); testingLbClient.setNextBaragonRequestState(BaragonRequestState.WAITING); Assert.assertFalse("Tasks should get cleaned up", requestManager.getCleanupRequests().isEmpty()); cleaner.drainCleanupQueue(); killKilledTasks(); Assert.assertFalse("The request should get cleaned up", requestManager.getCleanupRequests().isEmpty()); cleaner.drainCleanupQueue(); Assert.assertFalse("The request should get removed from the load balancer", requestManager.getLbCleanupRequestIds().isEmpty()); }