req.addNamespace(namespaceId.getNamespace());
assertInOrder(mds, SearchRequest.of("value1 multiword:av2").addNamespace(ns).build(), service1Record, dataset2Record); assertInOrder(mds, SearchRequest.of("value1 sValue*").addNamespace(ns).setLimit(Integer.MAX_VALUE).build(), dataset2Record, dataset1Record, service1Record); assertResults(mds, SearchRequest.of("*").addNamespace(ns).setLimit(Integer.MAX_VALUE).build(), dataset2Record, dataset1Record, service1Record);
assertResults(mds, SearchRequest.of("tags:*").addNamespace(ns1).build(), app1Record, program1Record, dataset1Record, dataset2Record, file1Record); assertResults(mds, SearchRequest.of("tags:tag1*").addNamespace(ns1).build(), app1Record, program1Record, dataset1Record); assertResults(mds, SearchRequest.of(" tAGS : tag1 ").addNamespace(ns1).build(), app1Record, program1Record); assertResults(mds, SearchRequest.of("tags:tag5").addNamespace(ns1).build(), file1Record); assertResults(mds, SearchRequest.of("tags:tag2").addNamespace(ns1).build(), app1Record, dataset1Record, dataset2Record, file1Record); assertResults(mds, SearchRequest.of("tags:tag4").addNamespace(ns1).build(), dataset2Record); assertResults(mds, SearchRequest.of("tags:tag33").addNamespace(ns1).build(), dataset1Record); assertResults(mds, SearchRequest.of("tag12-tag33").addNamespace(ns1).build(), dataset1Record); assertResults(mds, SearchRequest.of(" tag33 ").addNamespace(ns1).build(), dataset1Record); assertResults(mds, SearchRequest.of("tags:tag3*").addNamespace(ns1).build(), app1Record, dataset1Record);
assertResults(mds, SearchRequest.of("name*").addNamespace(ns1).setLimit(3).build(), appRecord, datasetRecord, programRecord); assertInOrder(mds, SearchRequest.of("*").addNamespace(ns1).setLimit(2) .setSorting(new Sorting(ENTITY_NAME_KEY, Sorting.Order.ASC)).build(), programRecord, datasetRecord); assertInOrder(mds, SearchRequest.of("*").addNamespace(ns1).setOffset(1).setLimit(2) .setSorting(new Sorting(ENTITY_NAME_KEY, Sorting.Order.ASC)).build(), datasetRecord, appRecord); assertInOrder(mds, SearchRequest.of("*").addNamespace(ns1).setLimit(2) .setSorting(new Sorting(ENTITY_NAME_KEY, Sorting.Order.DESC)).build(), appRecord, datasetRecord); assertInOrder(mds, SearchRequest.of("*").addNamespace(ns1).setOffset(2).setLimit(1) .setSorting(new Sorting(ENTITY_NAME_KEY, Sorting.Order.DESC)).build(), programRecord); assertInOrder(mds, SearchRequest.of("*").addNamespace(ns1).setLimit(1).setCursorRequested(true) .setSorting(new Sorting(ENTITY_NAME_KEY, Sorting.Order.ASC)).build(), programRecord); Assert.assertNotNull(response.getCursor()); response = assertInOrder(mds, SearchRequest.of("*").addNamespace(ns1).setLimit(1).setCursorRequested(true) .setCursor(response.getCursor()).setSorting(new Sorting(ENTITY_NAME_KEY, Sorting.Order.ASC)) .build(), Assert.assertNotNull(response.getCursor());
assertResults(mds, SearchRequest.of("aV5").addNamespace(ns1).addSystemNamespace().build(), programRecord, sysArtifactRecord); assertResults(mds, SearchRequest.of("aV5").addNamespace(ns1).addType(TYPE_PROGRAM).build(), programRecord); assertResults(mds, SearchRequest.of("multiword:aV5").addNamespace(ns1).addType(TYPE_PROGRAM).build(), programRecord); .addNamespace(ns1).addSystemNamespace().addType(TYPE_ARTIFACT).build(), sysArtifactRecord); assertResults(mds, SearchRequest.of("multiword:aV4").addNamespace(ns2).addSystemNamespace().build(), artifactRecord, sysArtifactRecord); assertEmpty(mds, SearchRequest.of("aV*").addNamespace(ns2).addSystemNamespace().addType(TYPE_PROGRAM).build()); assertResults(mds, SearchRequest.of("av*").addNamespace("ns3").addSystemNamespace().build(), sysArtifactRecord);
assertEmpty(mds, SearchRequest.of("value2*").addNamespace("ns12").build());
assertResults(mds, SearchRequest.of("tag*").addNamespace(ns).setLimit(Integer.MAX_VALUE).build(), datasetRecord, streamRecord, serviceRecord); assertResults(mds, SearchRequest.of("tag*").addNamespace(ns).setShowHidden(true).build(), hiddenRecord, datasetRecord, streamRecord, serviceRecord); assertResults(mds, SearchRequest.of("tag*").addNamespace(ns).setLimit(2).setCursorRequested(true).build(), datasetRecord, streamRecord); assertResults(mds, SearchRequest.of("tag*").addNamespace(ns).setOffset(1).setLimit(2).build(), streamRecord, serviceRecord); assertResults(mds, SearchRequest.of("tag*").addNamespace(ns).setOffset(1).setLimit(3).setShowHidden(true).build(), datasetRecord, streamRecord, serviceRecord); assertResults(mds, SearchRequest.of("tag*").addNamespace(ns).setOffset(2).setLimit(2).build(), serviceRecord); assertEmpty(mds, SearchRequest.of("tag*").addNamespace(ns).setOffset(4).setLimit(2).build()); assertResults(mds, SearchRequest.of("tag*").addNamespace(ns).setOffset(1).build(), streamRecord, serviceRecord);
assertEmpty(mds, SearchRequest.of("key1:value1").addNamespace("ns12").build());
@Test public void testUpdateSearch() throws IOException { MetadataStorage mds = getMetadataStorage(); final String ns = "ns"; final MetadataEntity program = new NamespaceId(ns).app("app1").worker("wk1").toMetadataEntity(); Metadata meta = new Metadata(USER, tags("tag1", "tag2"), props("key1", "value1", "key2", "value2")); MetadataRecord programRecord = new MetadataRecord(program, meta); mds.apply(new Update(program, meta)); assertResults(mds, SearchRequest.of("value1").addNamespace(ns).build(), programRecord); assertResults(mds, SearchRequest.of("value2").addNamespace(ns).build(), programRecord); assertResults(mds, SearchRequest.of("tag2").addNamespace(ns).build(), programRecord); mds.apply(new Update(program, new Metadata(USER, props("key1", "value3")))); mds.apply(new Remove(program, ImmutableSet.of(new ScopedNameOfKind(PROPERTY, USER, "key2"), new ScopedNameOfKind(TAG, USER, "tag2")))); programRecord = new MetadataRecord(program, new Metadata(USER, tags("tag1"), props("key1", "value3"))); // Searching for value1 should be empty assertEmpty(mds, SearchRequest.of("value1").addNamespace(ns).build()); // Instead key1 has value value3 now assertResults(mds, SearchRequest.of("value3").addNamespace(ns).build(), programRecord); // key2 and tag2 were deleted assertEmpty(mds, SearchRequest.of("value2").addNamespace(ns).build()); assertEmpty(mds, SearchRequest.of("tag2").addNamespace(ns).build()); // tag1 is still here assertResults(mds, SearchRequest.of("tag1").addNamespace(ns).build(), programRecord); // clean up mds.apply(new Drop(program)); }
@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))); }
public Builder addSystemNamespace() { return this.addNamespace(NamespaceId.SYSTEM.getNamespace()); }