@Test public void testCreateSchedulerPlacementZoneWithTagsShouldFail() throws Throwable { ResourcePoolState resourcePoolState = createResourcePoolState( "scheduler-placement-zone-with-tags", true); addTags(resourcePoolState); try { createPlacementZone(resourcePoolState); Assert.fail("Should fail to create a scheduler placement zone with tags"); } catch (Exception ex) { verifyExceptionMessage(ex, TAG_LINKS_MUST_BE_EMPTY_MESSAGE); } }
private ComputeState createComputeState(ResourcePoolState placementZone) throws Throwable { return createComputeState(placementZone, false); }
private ResourcePoolState createPlacementZone(ResourcePoolState resourcePoolState) throws Throwable { return doPost(resourcePoolState, ResourcePoolService.FACTORY_LINK); }
private ResourcePoolState createPlacementZone(String placementZoneName, boolean isSchedulerZone) throws Throwable { ResourcePoolState resourcePoolState = createResourcePoolState(placementZoneName, isSchedulerZone); return createPlacementZone(resourcePoolState); }
@Test public void testCreateDockerPlacementZoneWithTagsShouldPass() throws Throwable { ResourcePoolState resourcePoolState = createResourcePoolState( "docker-placement-zone-with-tags", false); addTags(resourcePoolState); ResourcePoolState placementZone = createPlacementZone(resourcePoolState); assertNotNull("Created placement zone cannot be null", placementZone); }
@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 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); } }
@Test public void testPutSchedulerPZInUseToDockerPZShouldFail() 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 update the type of the zone to docker and issue a PUT. This should fail markDockerPlacementZone(createdPlacementZone); try { doPut(createdPlacementZone); Assert.fail( "PUT 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 testPutDockerPZInUseToSchedulerPZShouldFail() 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 update the type of the zone to scheduler and issue a PUT. This should fail markSchedulerPlacementZone(createdPlacementZone); try { doPut(createdPlacementZone); Assert.fail( "PUT 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 testPutSchedulerPlacementZoneWithTagsShouldFail() throws Throwable { // First create a scheduler placement zone. ResourcePoolState createdPlacementZone = createPlacementZone("scheduler-placement-zone", true); assertNotNull(createdPlacementZone); // Now update the created state with tags and PUT it. This should fail addTags(createdPlacementZone); try { doPut(createdPlacementZone); Assert.fail("PUT should fail for scheduler placement zone with tags"); } catch (Exception ex) { verifyExceptionMessage(ex, TAG_LINKS_MUST_BE_EMPTY_MESSAGE); } }
@Test public void testPutDockerPlacementZoneWithTagsShouldPass() throws Throwable { // First create a docker placement zone. ResourcePoolState createdPlacementZone = createPlacementZone("docker-placement-zone", false); assertNotNull(createdPlacementZone); // Now update the created state with tags and PUT it. This should pass addTags(createdPlacementZone); ResourcePoolState putState = doPut(createdPlacementZone); assertNotNull(putState); }
@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); }
@Before public void setUp() throws Throwable { // start services HostInitPhotonModelServiceConfig.startServices(host); HostInitComputeServicesConfig.startServices(host, true); // wait for needed services waitForServiceAvailability(ResourcePoolService.FACTORY_LINK); waitForServiceAvailability(ComputeService.FACTORY_LINK); defaultPlacementZone = createPlacementZone(DEFAULT_TEST_PLACEMENT_ZONE_NAME, false); }
private ResourcePoolState createResourcePoolState(String placementZoneName, boolean isSchedulerZone) { assertNotNull(placementZoneName); ResourcePoolState placementZone = new ResourcePoolState(); placementZone.id = placementZoneName; placementZone.name = placementZoneName; placementZone.documentSelfLink = ResourcePoolService.FACTORY_LINK + "/" + placementZone.id; if (isSchedulerZone) { markSchedulerPlacementZone(placementZone); } else { markDockerPlacementZone(placementZone); } return placementZone; }
@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 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); } }
private ComputeState createComputeState(ResourcePoolState placementZone, boolean isScheduler) throws Throwable { ComputeState computeState = new ComputeState(); computeState.address = "no-address"; computeState.descriptionLink = "no-description-link"; if (placementZone != null) { computeState.resourcePoolLink = placementZone.documentSelfLink; } else { computeState.resourcePoolLink = defaultPlacementZone.documentSelfLink; } computeState.customProperties = new HashMap<>(); computeState.customProperties.put(ComputeConstants.COMPUTE_CONTAINER_HOST_PROP_NAME, "true"); if (isScheduler) { computeState.customProperties.put(ContainerHostService.CONTAINER_HOST_TYPE_PROP_NAME, ContainerHostType.VCH.toString()); } else { computeState.customProperties.put(ContainerHostService.CONTAINER_HOST_TYPE_PROP_NAME, ContainerHostType.DOCKER.toString()); } return doPost(computeState, ComputeService.FACTORY_LINK); }