Structure
Producer
Contains files and directories related to a specific producer. Each producer should contain:
runnerdirectory containing files necessary to run testsscenariosdirectory containing scenario directoriesmaintainers.jsonfile with the list of people to notify in case of component failuresversions.jsonfile with supported OpenLineage and component versions
producer catalog structure
producer
└── example_producer
├── maintainers.json
├── versions.json
├── runner
│ └── ...
└── scenarios
├── ...
└── example_scenario
├── config.json
├── events
│ ├── ...
│ └── expected_event_structure_1.json
├── maintainers.json
├── scenario.md
└── test
└── scenario_test_script
Runner
Contains any scripts or resources necessary to run the producer tests.
Scenarios
The scenarios directory contains one or more subdirectories, each containing files related to a particular test scenario:
config.jsonfile with the scenario configurationscenario.mdfile with description of the scenariomaintainers.jsonfile with the list of people responsible for the scenario
Config
Each config file contains metadata for the tests in the scenario. There are three types of metadata:
-
Scenario scope config
- Scenario version filters: We may want to test many versions of the producer against many versions of OpenLineage, but not every test scenario needs to run for every version. These filters allow us to define minimum and maximum versions of OpenLineage or producer for which we want to run the scenario.
-
Test scope configs
- name: Name of the test
- path: Path to expected event this test will use
- test version filters: Define minimum and maximum versions of OpenLineage or producer. Semantic tests for filtered out tests will be skipped.
-
Test tags: They will be present in the report and reflected in compatibility tables
- facets: List of facets that the test checks
- lineage level: Indicates dataset lineage level
dataset→ No column level lineage availablecolumn→ Column level lineage availabletransformation→ Transformation info available
Example config
{
"component_versions": {
"min": "0.0.1",
"max": "9.99.9"
},
"openlineage_versions": {
"min": "0.0.1",
"max": "9.99.9"
},
"tests": [
{
"name": "name",
"path": "path/to/file.json",
"component_versions": {
"min": "0.0.1",
"max": "9.99.9"
},
"openlineage_versions": {
"min": "0.0.1",
"max": "9.99.9"
},
"tags": {
"facets": [
"list",
"of",
"supported",
"facets"
],
"lineage_level": {
"bigquery": [
"dataset",
"column",
"transformation"
]
}
}
}
]
}