|
5 | 5 |
|
6 | 6 | package marquez;
|
7 | 7 |
|
| 8 | +import static marquez.db.ColumnLineageTestUtils.getDatasetA; |
| 9 | +import static marquez.db.ColumnLineageTestUtils.getDatasetB; |
8 | 10 | import static org.assertj.core.api.Assertions.assertThat;
|
9 | 11 |
|
10 | 12 | import com.fasterxml.jackson.core.type.TypeReference;
|
|
22 | 24 | import java.util.Optional;
|
23 | 25 | import java.util.UUID;
|
24 | 26 | import java.util.concurrent.CompletableFuture;
|
| 27 | +import marquez.client.models.ColumnLineage; |
25 | 28 | import marquez.client.models.Dataset;
|
26 | 29 | import marquez.client.models.DatasetId;
|
27 | 30 | import marquez.client.models.DatasetVersion;
|
@@ -440,4 +443,49 @@ public void testApp_showsDeletedDatasetAfterReceivingNewVersion() throws IOExcep
|
440 | 443 | datasets = client.listDatasets(namespace);
|
441 | 444 | assertThat(datasets).hasSize(1);
|
442 | 445 | }
|
| 446 | + |
| 447 | + @Test |
| 448 | + public void testApp_getDatasetContainsColumnLineage() { |
| 449 | + LineageEvent event = |
| 450 | + new LineageEvent( |
| 451 | + "COMPLETE", |
| 452 | + Instant.now().atZone(ZoneId.systemDefault()), |
| 453 | + new LineageEvent.Run(UUID.randomUUID().toString(), null), |
| 454 | + new LineageEvent.Job("namespace", "job_name", null), |
| 455 | + List.of(getDatasetA()), |
| 456 | + List.of(getDatasetB()), |
| 457 | + "the_producer"); |
| 458 | + |
| 459 | + CompletableFuture<Integer> resp = |
| 460 | + this.sendLineage(Utils.toJson(event)) |
| 461 | + .thenApply(HttpResponse::statusCode) |
| 462 | + .whenComplete( |
| 463 | + (val, error) -> { |
| 464 | + if (error != null) { |
| 465 | + Assertions.fail("Could not complete request"); |
| 466 | + } |
| 467 | + }); |
| 468 | + resp.join(); |
| 469 | + |
| 470 | + // verify listDatasets contains column lineage |
| 471 | + List<ColumnLineage> columnLineage; |
| 472 | + |
| 473 | + columnLineage = |
| 474 | + client.listDatasets("namespace").stream() |
| 475 | + .filter(d -> d.getName().equals("dataset_b")) |
| 476 | + .findAny() |
| 477 | + .get() |
| 478 | + .getColumnLineage(); |
| 479 | + assertThat(columnLineage).hasSize(1); |
| 480 | + assertThat(columnLineage.get(0).getInputFields()).hasSize(2); |
| 481 | + |
| 482 | + // verify getDataset returns non-empty column lineage |
| 483 | + columnLineage = client.getDataset("namespace", "dataset_b").getColumnLineage(); |
| 484 | + assertThat(columnLineage).hasSize(1); |
| 485 | + assertThat(columnLineage.get(0).getInputFields()).hasSize(2); |
| 486 | + |
| 487 | + client.deleteJob("namespace", "job_name"); |
| 488 | + client.deleteDataset("namespace", "dataset_a"); |
| 489 | + client.deleteDataset("namespace", "dataset_b"); |
| 490 | + } |
443 | 491 | }
|
0 commit comments