@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));
});
}