/** * Fetch program-dataset access information for a dataset for a given period. * * @param datasetInstance dataset for which to fetch access information * @param start start time period * @param end end time period * @param filter filter to be applied on result set * @return program-dataset access information */ @Override public Set<Relation> getRelations(final DatasetId datasetInstance, final long start, final long end, final Predicate<Relation> filter) { return execute(input -> input.getRelations(datasetInstance, start, end, filter)); }
/** * Fetch program-dataset access information for a dataset for a given period. * * @param datasetInstance dataset for which to fetch access information * @param start start time period * @param end end time period * @param filter filter to be applied on result set * @return program-dataset access information */ @Override public Set<Relation> getRelations(final DatasetId datasetInstance, final long start, final long end, final Predicate<Relation> filter) { return execute(input -> input.getRelations(datasetInstance, start, end, filter)); }
/** * Fetch program-dataset access information for a program for a given period. * * @param program program for which to fetch access information * @param start start time period * @param end end time period * @param filter filter to be applied on result set * @return program-dataset access information */ @Override public Set<Relation> getRelations(final ProgramId program, final long start, final long end, final Predicate<Relation> filter) { return execute(input -> input.getRelations(program, start, end, filter)); }
/** * Fetch program-stream access information for a dataset for a given period. * * @param stream stream for which to fetch access information * @param start start time period * @param end end time period * @param filter filter to be applied on result set * @return program-stream access information */ @Override public Set<Relation> getRelations(final StreamId stream, final long start, final long end, final Predicate<Relation> filter) { return execute(input -> input.getRelations(stream, start, end, filter)); }
/** * Fetch program-dataset access information for a program for a given period. * * @param program program for which to fetch access information * @param start start time period * @param end end time period * @param filter filter to be applied on result set * @return program-dataset access information */ @Override public Set<Relation> getRelations(final ProgramId program, final long start, final long end, final Predicate<Relation> filter) { return execute(input -> input.getRelations(program, start, end, filter)); }
@Test public void testOneRelation() throws Exception { final LineageDataset lineageDataset = getLineageDataset("testOneRelation"); Assert.assertNotNull(lineageDataset); TransactionExecutor txnl = dsFrameworkUtil.newInMemoryTransactionExecutor((TransactionAware) lineageDataset); final RunId runId = RunIds.generate(10000); final DatasetId datasetInstance = new DatasetId("default", "dataset1"); final ProgramId program = new ProgramId("default", "app1", ProgramType.SERVICE, "service1"); final ProgramRunId run = program.run(runId.getId()); final long accessTimeMillis = System.currentTimeMillis(); txnl.execute(new TransactionExecutor.Subroutine() { @Override public void apply() throws Exception { lineageDataset.addAccess(run, datasetInstance, AccessType.READ, accessTimeMillis); } }); txnl.execute(() -> { Relation expected = new Relation(datasetInstance, program, AccessType.READ, runId); Set<Relation> relations = lineageDataset.getRelations(datasetInstance, 0, 100000, x -> true); Assert.assertEquals(1, relations.size()); Assert.assertEquals(expected, relations.iterator().next()); Assert.assertEquals(toSet(program, datasetInstance), lineageDataset.getEntitiesForRun(run)); Assert.assertEquals(ImmutableList.of(accessTimeMillis), lineageDataset.getAccessTimesForRun(run)); }); }
Assert.assertEquals( ImmutableSet.of(new Relation(datasetInstance1, program1, AccessType.READ, runId1)), lineageDataset.getRelations(datasetInstance1, 0, 100000, x -> true) ); new Relation(datasetInstance2, program3, AccessType.READ_WRITE, runId4) ), lineageDataset.getRelations(datasetInstance2, 0, 100000, x -> true) ); new Relation(datasetInstance2, program2, AccessType.WRITE, runId3) ), lineageDataset.getRelations(program2, 0, 100000, x -> true) ); new Relation(datasetInstance2, program2, AccessType.WRITE, runId3) ), lineageDataset.getRelations(datasetInstance2, 0, 35000, x -> true) );