private Metadata performRead(Read read) { try { return storage.read(read); } catch (IOException e) { throw Throwables.propagate(e); } }
private void verifyMetadataSelection(MetadataStorage mds, MetadataEntity entity, Metadata metadata, ImmutableSet<ScopedNameOfKind> selection) throws IOException { Assert.assertEquals(filterBy(metadata, selection), mds.read(new Read(entity, selection))); }
private void verifyFilteredMetadata(MetadataStorage mds, MetadataEntity entity, Metadata metadata, MetadataScope scope, MetadataKind kind) throws IOException { Assert.assertEquals(filterBy(metadata, scope, kind), mds.read(new Read(entity, scope, kind))); }
private void verifyMetadata(MetadataStorage mds, MetadataEntity entity, Metadata metadata) throws IOException { // verify entire metadata Assert.assertEquals(metadata, mds.read(new Read(entity))); // filter by scope verifyFilteredMetadata(mds, entity, metadata, SYSTEM, null); verifyFilteredMetadata(mds, entity, metadata, USER, null); // filter by kind verifyFilteredMetadata(mds, entity, metadata, null, PROPERTY); verifyFilteredMetadata(mds, entity, metadata, null, MetadataKind.TAG); // filter by kind and scope verifyFilteredMetadata(mds, entity, metadata, SYSTEM, PROPERTY); verifyFilteredMetadata(mds, entity, metadata, SYSTEM, MetadataKind.TAG); verifyFilteredMetadata(mds, entity, metadata, USER, PROPERTY); verifyFilteredMetadata(mds, entity, metadata, USER, MetadataKind.TAG); }
@Test public void testSearchOnTagsUpdate() throws IOException { MetadataStorage mds = getMetadataStorage(); MetadataEntity entity = NamespaceId.DEFAULT.app("appX").workflow("wtf").toMetadataEntity(); Metadata meta = new Metadata(SYSTEM, tags("tag1", "tag2")); mds.apply(new Update(entity, meta)); Assert.assertEquals(meta.getTags(SYSTEM), mds.read(new Read(entity, SYSTEM)).getTags(SYSTEM)); assertResults(mds, SearchRequest.of("tag1").build(), new MetadataRecord(entity, meta)); // add an more tags mds.apply(new Update(entity, new Metadata(SYSTEM, tags("tag3", "tag4")))); Set<String> newTags = tags("tag1", "tag2", "tag3", "tag4"); Metadata newMeta = new Metadata(SYSTEM, newTags); Assert.assertEquals(newTags, mds.read(new Read(entity, SYSTEM)).getTags(SYSTEM)); for (String expectedTag : newTags) { assertResults(mds, SearchRequest.of(expectedTag).build(), new MetadataRecord(entity, newMeta)); } // add an empty set of tags. This should have no effect on retrieval or search of tags mds.apply(new Update(entity, new Metadata(SYSTEM, tags()))); Assert.assertEquals(newTags, mds.read(new Read(entity, SYSTEM)).getTags(SYSTEM)); for (String expectedTag : newTags) { assertResults(mds, SearchRequest.of(expectedTag).build(), new MetadataRecord(entity, newMeta)); } // clean up mds.apply(new Drop(entity)); }
Assert.assertEquals(Metadata.EMPTY, mds.read(new Read(entity)));