@Test public void testCreateNoTags() throws Throwable { // create a non-elastic RP ResourcePoolState rp = createRp(); assertEquals(EnumSet.noneOf(ResourcePoolProperty.class), rp.properties); assertTrue(isNonElasticQuery(rp.query)); // create EPZ for the RP with no tags createEpz(rp.documentSelfLink); // verify RP is not elastic rp = getDocument(ResourcePoolState.class, rp.documentSelfLink); assertEquals(EnumSet.noneOf(ResourcePoolProperty.class), rp.properties); assertTrue(isNonElasticQuery(rp.query)); }
@Test public void testPutNoTags() throws Throwable { // create a non-elastic RP ResourcePoolState rp = createRp(); assertEquals(EnumSet.noneOf(ResourcePoolProperty.class), rp.properties); assertTrue(isNonElasticQuery(rp.query)); // create EPZ for the RP ElasticPlacementZoneState epz = createEpz(rp.documentSelfLink, "tag1", "tag2"); // verify RP is now elastic rp = getDocument(ResourcePoolState.class, rp.documentSelfLink); assertEquals(EnumSet.of(ResourcePoolProperty.ELASTIC), rp.properties); assertFalse(isNonElasticQuery(rp.query)); // add more tags through a put request epz.tagLinksToMatch.clear();; doPut(epz); // verify RP is not elastic rp = getDocument(ResourcePoolState.class, rp.documentSelfLink); assertEquals(EnumSet.noneOf(ResourcePoolProperty.class), rp.properties); assertTrue(isNonElasticQuery(rp.query)); }
@Test public void testCreateAndDelete() throws Throwable { // create a non-elastic RP ResourcePoolState rp = createRp(); assertEquals(EnumSet.noneOf(ResourcePoolProperty.class), rp.properties); assertTrue(isNonElasticQuery(rp.query)); // create EPZ for the RP String epzLink = createEpz(rp.documentSelfLink, "tag1", "tag2").documentSelfLink; // verify RP is now elastic rp = getDocument(ResourcePoolState.class, rp.documentSelfLink); assertEquals(EnumSet.of(ResourcePoolProperty.ELASTIC), rp.properties); assertFalse(isNonElasticQuery(rp.query)); // delete EPZ and verify RP is back to non-elastic delete(epzLink); rp = getDocument(ResourcePoolState.class, rp.documentSelfLink); assertEquals(EnumSet.noneOf(ResourcePoolProperty.class), rp.properties); assertTrue(isNonElasticQuery(rp.query)); }
@Test public void testPut() throws Throwable { // create a non-elastic RP ResourcePoolState rp = createRp(); assertEquals(EnumSet.noneOf(ResourcePoolProperty.class), rp.properties); assertTrue(isNonElasticQuery(rp.query)); // create EPZ for the RP ElasticPlacementZoneState epz = createEpz(rp.documentSelfLink, "tag1", "tag2"); // verify RP is now elastic rp = getDocument(ResourcePoolState.class, rp.documentSelfLink); assertEquals(EnumSet.of(ResourcePoolProperty.ELASTIC), rp.properties); assertFalse(isNonElasticQuery(rp.query)); // add more tags through a put request epz.tagLinksToMatch.add("tag3"); epz.tagLinksToMatch.add("tag4"); doPut(epz); // verify RP is updated with the new tags rp = getDocument(ResourcePoolState.class, rp.documentSelfLink); assertEquals(EnumSet.of(ResourcePoolProperty.ELASTIC), rp.properties); }
@Test public void testPatch() throws Throwable { // create a non-elastic RP ResourcePoolState rp = createRp(); assertEquals(EnumSet.noneOf(ResourcePoolProperty.class), rp.properties); assertTrue(isNonElasticQuery(rp.query)); // create EPZ for the RP String epzLink = createEpz(rp.documentSelfLink, "tag1", "tag2").documentSelfLink; // verify RP is now elastic rp = getDocument(ResourcePoolState.class, rp.documentSelfLink); assertEquals(EnumSet.of(ResourcePoolProperty.ELASTIC), rp.properties); assertFalse(isNonElasticQuery(rp.query)); // add more tags and verify RP query is updated patchEpz(epzLink, "tag3", "tag4"); rp = getDocument(ResourcePoolState.class, rp.documentSelfLink); assertEquals(EnumSet.of(ResourcePoolProperty.ELASTIC), rp.properties); }
@Test public void testPatchNoTags() throws Throwable { // create a non-elastic RP ResourcePoolState rp = createRp(); assertEquals(EnumSet.noneOf(ResourcePoolProperty.class), rp.properties); assertTrue(isNonElasticQuery(rp.query)); // create EPZ for the RP String epzLink = createEpz(rp.documentSelfLink, "tag1", "tag2").documentSelfLink; // verify RP is now elastic rp = getDocument(ResourcePoolState.class, rp.documentSelfLink); assertEquals(EnumSet.of(ResourcePoolProperty.ELASTIC), rp.properties); assertFalse(isNonElasticQuery(rp.query)); // add more tags and verify RP query is updated Map<String, Collection<Object>> itemsToRemove = new HashMap<>(); itemsToRemove.put(ElasticPlacementZoneState.FIELD_NAME_TAG_LINKS_TO_MATCH, new ArrayList<>(Arrays.asList("tag1", "tag2"))); ServiceStateCollectionUpdateRequest updateRequest = ServiceStateCollectionUpdateRequest .create(null, itemsToRemove); verifyOperation(Operation.createPatch(this.host, epzLink).setBody(updateRequest)); // verify EPZ has no tags ElasticPlacementZoneState newEpzState = getDocument(ElasticPlacementZoneState.class, epzLink); assertNotNull(newEpzState.tagLinksToMatch); assertTrue(newEpzState.tagLinksToMatch.isEmpty()); // verify RP is not elastic rp = getDocument(ResourcePoolState.class, rp.documentSelfLink); assertEquals(EnumSet.noneOf(ResourcePoolProperty.class), rp.properties); assertTrue(isNonElasticQuery(rp.query)); }
@Test public void testPatchNoChange() throws Throwable { // create a non-elastic RP ResourcePoolState rp = createRp(); assertEquals(EnumSet.noneOf(ResourcePoolProperty.class), rp.properties); assertTrue(isNonElasticQuery(rp.query)); // create EPZ for the RP String epzLink = createEpz(rp.documentSelfLink, "tag1", "tag2").documentSelfLink; ElasticPlacementZoneState patchState = new ElasticPlacementZoneState(); patchState.tagLinksToMatch = tagSet("tag1"); Operation patchOp = Operation.createPatch(host, epzLink).setBody(patchState).forceRemote(); Operation returnedOp = ((CompletableFuture<Operation>) host.sendWithDeferredResult(patchOp) .toCompletionStage()).get(60, TimeUnit.SECONDS); assertEquals(Operation.STATUS_CODE_NOT_MODIFIED, returnedOp.getStatusCode()); }