@Test public void testUpdateDockerPlacementZoneWithTagsShouldPass() throws Throwable { // First create a scheduler placement zone. ResourcePoolState createdPlacementZone = createPlacementZone("docker-placement-zone", false); assertNotNull(createdPlacementZone); // Now create a PATCH with tags. This should pass ResourcePoolState patchState = new ResourcePoolState(); addTags(patchState); ResourcePoolState patchedState = doPatch(patchState, createdPlacementZone.documentSelfLink); assertNotNull(patchedState); }
@Test public void testUpdateEmptySchedulerPZToDockerPZShouldPass() throws Throwable { // First create a docker placement zone. ResourcePoolState createdPlacementZone = createPlacementZone("scheduler-placement-zone", true); assertNotNull(createdPlacementZone); // Now create a PATCH that updates its type to docker. This should pass ResourcePoolState patchState = new ResourcePoolState(); markDockerPlacementZone(patchState); ResourcePoolState patchedState = doPatch(patchState, createdPlacementZone.documentSelfLink); assertNotNull(patchedState); }
@Test public void testUpdateEmptyDockerPZToSchedulerPZShouldPass() throws Throwable { // First create a docker placement zone. ResourcePoolState createdPlacementZone = createPlacementZone("docker-placement-zone", false); assertNotNull(createdPlacementZone); // Now create a PATCH that updates its type to scheduler. This should pass ResourcePoolState patchState = new ResourcePoolState(); markSchedulerPlacementZone(patchState); ResourcePoolState patchedState = doPatch(patchState, createdPlacementZone.documentSelfLink); assertNotNull(patchedState); }
@Test public void testUpdateSchedulerPlacementZoneWithTagsShouldFail() throws Throwable { // First create a scheduler placement zone. ResourcePoolState createdPlacementZone = createPlacementZone("docker-placement-zone", true); assertNotNull(createdPlacementZone); // Now create a PATCH with tags. This should fail ResourcePoolState patchState = new ResourcePoolState(); addTags(patchState); try { doPatch(patchState, createdPlacementZone.documentSelfLink); Assert.fail("PATCH should fail to set tags for scheduler placement zone"); } catch (Exception ex) { verifyExceptionMessage(ex, TAG_LINKS_MUST_BE_EMPTY_MESSAGE); } }
@Test public void testUpdateDockerPZToSchedulerPZWithTagsShouldFail() throws Throwable { // First create a scheduler placement zone. ResourcePoolState createdPlacementZone = createPlacementZone( "docker-placement-zone-with-tags", false); assertNotNull(createdPlacementZone); // Now create a PATCH with tags. This should fail ResourcePoolState patchState = new ResourcePoolState(); markSchedulerPlacementZone(patchState); addTags(patchState); try { doPatch(patchState, createdPlacementZone.documentSelfLink); Assert.fail("PATCH should fail to set tags for scheduler placement zone"); } catch (Exception ex) { verifyExceptionMessage(ex, TAG_LINKS_MUST_BE_EMPTY_MESSAGE); } }
@Test public void testUpdateDockerPZInUseToSchedulerPZShouldFail() throws Throwable { // First create a docker placement zone. ResourcePoolState createdPlacementZone = createPlacementZone("docker-placement-zone", false); assertNotNull(createdPlacementZone); // Now create a compute state that uses this placement zone createComputeState(createdPlacementZone); // Now create a PATCH that updates the type of the zone to scheduler. This should fail ResourcePoolState patchState = new ResourcePoolState(); markSchedulerPlacementZone(patchState); try { doPatch(patchState, createdPlacementZone.documentSelfLink); Assert.fail( "PATCH should fail to update the type of a used " + "docker placement zone to a scheduler zone"); } catch (Exception ex) { verifyExceptionMessage(ex, SchedulerPlacementZoneInterceptor.NON_SCHEDULER_HOST_IN_PLACEMENT_ZONE_MESSAGE); } }
@Test public void testUpdateSchedulerPZInUseToDockerPZShouldFail() throws Throwable { // First create a docker placement zone. ResourcePoolState createdPlacementZone = createPlacementZone("scheduler-placement-zone", true); assertNotNull(createdPlacementZone); // Now create a compute state that uses this placement zone createComputeState(createdPlacementZone, true); // Now create a PATCH that updates the type of the zone to docker. This should fail ResourcePoolState patchState = new ResourcePoolState(); markDockerPlacementZone(patchState); try { doPatch(patchState, createdPlacementZone.documentSelfLink); Assert.fail( "PATCH should fail to update the type of a used " + "scheduler placement zone to a docker zone"); } catch (Exception ex) { verifyExceptionMessage(ex, SchedulerPlacementZoneInterceptor.SCHEDULER_HOSTS_IN_PLACEMENT_ZONE_MESSAGE); } }
@Test public void testUpdateDockerPZInUseByMultipleVicHostsToSchedulerPZShouldPass() throws Throwable { // First create a docker placement zone. ResourcePoolState createdPlacementZone = createPlacementZone("docker-placement-zone", false); assertNotNull(createdPlacementZone); // Now create 2 VIC hosts that use this placement zone. This can be achieved if the VIC // hosts were initially declared as docker but were later on marked as VIC createComputeState(createdPlacementZone); createComputeState(createdPlacementZone); // Now create a PATCH that updates the type of the zone to scheduler. This should fail // because there will be multiple container in the placement zone (even if they are all // schedulers) ResourcePoolState patchState = new ResourcePoolState(); markSchedulerPlacementZone(patchState); try { doPatch(patchState, createdPlacementZone.documentSelfLink); Assert.fail( "PATCH should fail to update the type of a docker placement " + "zone to a scheduler zone when the placement zone is in use by multiple scheduler hosts"); } catch (Exception ex) { verifyExceptionMessage(ex, SchedulerPlacementZoneInterceptor.MULTIPLE_HOSTS_IN_PLACEMENT_ZONE_MESSAGE); } }