|
29 | 29 | BigQueryDeleteDatasetOperator,
|
30 | 30 | )
|
31 | 31 | from airflow.providers.google.cloud.transfers.gcs_to_bigquery import GCSToBigQueryOperator
|
| 32 | +from airflow.utils.trigger_rule import TriggerRule |
32 | 33 |
|
33 |
| -DATASET_NAME = os.environ.get("GCP_DATASET_NAME", 'airflow_test') |
34 |
| -TABLE_NAME = os.environ.get("GCP_TABLE_NAME", 'gcs_to_bq_table') |
| 34 | +ENV_ID = os.environ.get("SYSTEM_TESTS_ENV_ID") |
| 35 | +DAG_ID = "gcs_to_bigquery_operator" |
| 36 | + |
| 37 | +DATASET_NAME = f"dataset_{DAG_ID}_{ENV_ID}" |
| 38 | +TABLE_NAME = "test" |
| 39 | +PROJECT_ID = os.environ.get("SYSTEM_TESTS_GCP_PROJECT") |
35 | 40 |
|
36 | 41 | with models.DAG(
|
37 |
| - dag_id='example_gcs_to_bigquery_operator', |
| 42 | + dag_id=DAG_ID, |
| 43 | + schedule_interval='@once', |
38 | 44 | start_date=datetime(2021, 1, 1),
|
39 | 45 | catchup=False,
|
40 |
| - schedule_interval='@once', |
41 |
| - tags=['example'], |
| 46 | + tags=['example', "gcs"], |
42 | 47 | ) as dag:
|
43 | 48 | create_test_dataset = BigQueryCreateEmptyDatasetOperator(
|
44 |
| - task_id='create_airflow_test_dataset', dataset_id=DATASET_NAME |
| 49 | + task_id='create_airflow_test_dataset', dataset_id=DATASET_NAME, project_id=PROJECT_ID |
45 | 50 | )
|
46 | 51 |
|
47 | 52 | # [START howto_operator_gcs_to_bigquery]
|
|
62 | 67 | task_id='delete_airflow_test_dataset',
|
63 | 68 | dataset_id=DATASET_NAME,
|
64 | 69 | delete_contents=True,
|
| 70 | + trigger_rule=TriggerRule.ALL_DONE, |
| 71 | + ) |
| 72 | + |
| 73 | + ( |
| 74 | + # TEST SETUP |
| 75 | + create_test_dataset |
| 76 | + # TEST BODY |
| 77 | + >> load_csv |
| 78 | + # TEST TEARDOWN |
| 79 | + >> delete_test_dataset |
65 | 80 | )
|
66 | 81 |
|
67 |
| -create_test_dataset >> load_csv >> delete_test_dataset |
| 82 | + from tests.system.utils.watcher import watcher |
| 83 | + |
| 84 | + # This test needs watcher in order to properly mark success/failure |
| 85 | + # when "tearDown" task with trigger rule is part of the DAG |
| 86 | + list(dag.tasks) >> watcher() |
| 87 | + |
| 88 | +from tests.system.utils import get_test_run # noqa: E402 |
| 89 | + |
| 90 | +# Needed to run the example DAG with pytest (see: tests/system/README.md#run_via_pytest) |
| 91 | +test_run = get_test_run(dag) |
0 commit comments