private void applyBatch(List<MetadataMutation> mutations) { try { Collection<MetadataChange> changes = storage.batch(mutations); for (MetadataChange change : changes) { publishAudit(change); } } catch (IOException e) { throw Throwables.propagate(e); } }
MetadataRecord dataset2Record = new MetadataRecord(dataset2, new Metadata(USER, tags(), dataset2UserProps)); mds.batch(ImmutableList.of(new Update(dataset1Record.getEntity(), dataset1Record.getMetadata()), new Update(dataset2Record.getEntity(), dataset2Record.getMetadata()))); mds.batch(ImmutableList.of(new Drop(service1), new Drop(dataset1), new Drop(dataset2)));
@Test public void testCrossNamespaceCustomSearch() throws Exception { MetadataStorage mds = getMetadataStorage(); String appName = "app"; MetadataEntity ns1App = new NamespaceId("ns1").app(appName).toMetadataEntity(); MetadataEntity ns2App = new NamespaceId("ns2").app(appName).toMetadataEntity(); Metadata meta = new Metadata(SYSTEM, props(ENTITY_NAME_KEY, appName)); MetadataRecord app1Record = new MetadataRecord(ns1App, meta); MetadataRecord app2Record = new MetadataRecord(ns2App, meta); mds.apply(new Update(ns1App, meta)); mds.apply(new Update(ns2App, meta)); assertInOrder(mds, SearchRequest.of("*").setSorting(new Sorting(ENTITY_NAME_KEY, Sorting.Order.ASC)).build(), app1Record, app2Record); // clean up mds.batch(ImmutableList.of(new Drop(ns1App), new Drop(ns2App))); }
MetadataRecord[] records = { record11, record12, record13, record21, record22 }; mds.batch(Arrays.stream(records) .map(record -> new Update(record.getEntity(), record.getMetadata())).collect(Collectors.toList())); mds.batch(ImmutableList.of( new Drop(ns1app1), new Drop(ns1app2), new Drop(ns1app3), new Drop(ns2app1), new Drop(ns2app2)));
@Test public void testCrossNamespaceDefaultSearch() throws IOException { MetadataStorage mds = getMetadataStorage(); NamespaceId ns1 = new NamespaceId("ns1"); NamespaceId ns2 = new NamespaceId("ns2"); MetadataEntity ns1app = ns1.app("a").toMetadataEntity(); MetadataEntity ns2app = ns2.app("a").toMetadataEntity(); MetadataRecord app1Record = new MetadataRecord(ns1app, new Metadata(USER, props("k1", "v1", "k2", "v2"))); MetadataRecord app2Record = new MetadataRecord(ns2app, new Metadata(USER, props("k1", "v1"))); mds.apply(new Update(ns1app, app1Record.getMetadata())); mds.apply(new Update(ns2app, app2Record.getMetadata())); assertResults(mds, SearchRequest.of("v1").build(), app1Record, app2Record); assertResults(mds, SearchRequest.of("v2").build(), app1Record); assertResults(mds, SearchRequest.of("*").build(), app1Record, app2Record); // clean up mds.batch(ImmutableList.of(new Drop(ns1app), new Drop(ns2app))); }
@Test public void testSearchDifferentNamespaces() throws IOException { MetadataStorage mds = getMetadataStorage(); final String ns1 = "ns1"; final NamespaceId ns1Id = new NamespaceId(ns1); final MetadataEntity artifact = ns1Id.artifact("artifact", "1.0").toMetadataEntity(); final MetadataEntity sysArtifact = NamespaceId.SYSTEM.artifact("artifact", "1.0").toMetadataEntity(); final String multiWordKey = "multiword"; final String multiWordValue = "aV1 av2 , - , av3 - av4_av5 av6"; Metadata meta = new Metadata(SYSTEM, props(multiWordKey, multiWordValue)); MetadataRecord artifactRecord = new MetadataRecord(artifact, meta); MetadataRecord sysArtifactRecord = new MetadataRecord(sysArtifact, meta); mds.apply(new Update(artifact, meta)); mds.apply(new Update(sysArtifact, meta)); // searching only user namespace should not return system entity assertResults(mds, SearchRequest.of("aV5").addNamespace(ns1).build(), artifactRecord); // searching only user namespace and system should return only the system entity assertResults(mds, SearchRequest.of("aV5").addSystemNamespace().build(), sysArtifactRecord); // searching only user namespace and system should return both entities assertResults(mds, SearchRequest.of("aV5").addNamespace(ns1).addSystemNamespace().build(), artifactRecord, sysArtifactRecord); // clean up mds.batch(ImmutableList.of(new Drop(artifact), new Drop(sysArtifact))); }
@Test public void testSearchOnTypes() throws Exception { MetadataStorage mds = getMetadataStorage(); MetadataEntity myDs = NamespaceId.DEFAULT.dataset("myDs").toMetadataEntity(); MetadataEntity myField1 = MetadataEntity.builder(myDs).appendAsType("field", "myField1").build(); MetadataEntity myField2 = MetadataEntity.builder(myDs).appendAsType("field", "myField2").build(); MetadataRecord record1 = new MetadataRecord(myField1, new Metadata(USER, props("testKey1", "testValue1"))); MetadataRecord record2 = new MetadataRecord(myField2, new Metadata(USER, props("testKey2", "testValue2"))); mds.apply(new Update(myField1, record1.getMetadata())); mds.apply(new Update(myField2, record2.getMetadata())); // Search for it based on value assertResults(mds, SearchRequest.of("field:myField1").build(), record1); // should return both fields assertResults(mds, SearchRequest.of("field:myFie*").build(), record1, record2); assertResults(mds, SearchRequest.of("field*").build(), record1, record2); // clean up mds.batch(ImmutableList.of(new Drop(myField1), new Drop(myField2))); }
file1Record = new MetadataRecord(file1, new Metadata(USER, tags("tag2", "tag5"))); mds.batch(ImmutableList.of(app1Record, app2Record, program1Record, dataset1Record, dataset2Record, file1Record) .stream().map(record -> new Update(record.getEntity(), record.getMetadata())) .collect(Collectors.toList())); mds.batch(entities.stream().map(Drop::new).collect(Collectors.toList()));
mds.batch(ImmutableList.of( new Drop(ns1app1), new Drop(ns1app2), new Drop(ns1app3), new Drop(ns2app1), new Drop(ns2app2)));
mds.batch(ImmutableList.of(new Drop(program), new Drop(dataset)));
mds.batch(ImmutableList.of(new Drop(program), new Drop(dataset)));
mds.batch(ImmutableList.of(new Drop(program), new Drop(artifact), new Drop(sysArtifact)));
mds.batch(ImmutableList.of(new Drop(service), new Drop(worker), new Drop(dataset), new Drop(hidden)));
mds.batch(ImmutableList.of( new Drop(app), new Drop(dataset), new Drop(program)));