Content-Length: 532480 | pFad | https://github.com/apache/airflow/commit/eb163c81d16532252d6196fd70c85e7ea6236279

D2 Fix GCS system tests (#19227) · apache/airflow@eb163c8 · GitHub
Skip to content

Commit eb163c8

Browse files
authored
Fix GCS system tests (#19227)
- Add '**/tmp/**' path to names of creating files - Add separate methods and fixtures for creating\deleting required files - Add `resource` key which disables uniform bucket level access to **GCSCreateBucketOperator**
1 parent 744d11b commit eb163c8

File tree

3 files changed

+63
-20
lines changed

3 files changed

+63
-20
lines changed

airflow/providers/google/cloud/example_dags/example_gcs.py

Lines changed: 22 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121

2222
import os
2323
from datetime import datetime
24+
from tempfile import gettempdir
2425

2526
from airflow import models
2627
from airflow.operators.bash import BashOperator
@@ -52,10 +53,17 @@
5253

5354
BUCKET_2 = os.environ.get("GCP_GCS_BUCKET_2", "test-gcs-example-bucket-2")
5455

55-
PATH_TO_TRANSFORM_SCRIPT = os.environ.get('GCP_GCS_PATH_TO_TRANSFORM_SCRIPT', 'test.py')
56-
PATH_TO_UPLOAD_FILE = os.environ.get("GCP_GCS_PATH_TO_UPLOAD_FILE", "test-gcs-example.txt")
56+
temp_dir_path = gettempdir()
57+
PATH_TO_TRANSFORM_SCRIPT = os.environ.get(
58+
"GCP_GCS_PATH_TO_TRANSFORM_SCRIPT", os.path.join(temp_dir_path, "transform_script.py")
59+
)
60+
PATH_TO_UPLOAD_FILE = os.environ.get(
61+
"GCP_GCS_PATH_TO_UPLOAD_FILE", os.path.join(temp_dir_path, "test-gcs-example-upload.txt")
62+
)
5763
PATH_TO_UPLOAD_FILE_PREFIX = os.environ.get("GCP_GCS_PATH_TO_UPLOAD_FILE_PREFIX", "test-gcs-")
58-
PATH_TO_SAVED_FILE = os.environ.get("GCP_GCS_PATH_TO_SAVED_FILE", "test-gcs-example-download.txt")
64+
PATH_TO_SAVED_FILE = os.environ.get(
65+
"GCP_GCS_PATH_TO_SAVED_FILE", os.path.join(temp_dir_path, "test-gcs-example-download.txt")
66+
)
5967

6068
BUCKET_FILE_LOCATION = PATH_TO_UPLOAD_FILE.rpartition("/")[-1]
6169

@@ -67,7 +75,16 @@
6775
tags=['example'],
6876
) as dag:
6977
create_bucket1 = GCSCreateBucketOperator(
70-
task_id="create_bucket1", bucket_name=BUCKET_1, project_id=PROJECT_ID
78+
task_id="create_bucket1",
79+
bucket_name=BUCKET_1,
80+
project_id=PROJECT_ID,
81+
resource={
82+
"iamConfiguration": {
83+
"uniformBucketLevelAccess": {
84+
"enabled": False,
85+
},
86+
},
87+
},
7188
)
7289

7390
create_bucket2 = GCSCreateBucketOperator(
@@ -179,7 +196,7 @@
179196
# [START howto_sensor_object_exists_task]
180197
gcs_object_exists = GCSObjectExistenceSensor(
181198
bucket=BUCKET_1,
182-
object=PATH_TO_UPLOAD_FILE,
199+
object=BUCKET_FILE_LOCATION,
183200
mode='poke',
184201
task_id="gcs_object_exists_task",
185202
)

tests/providers/google/cloud/operators/test_gcs_system.py

Lines changed: 28 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,26 +22,49 @@
2222
from tests.test_utils.gcp_system_helpers import CLOUD_DAG_FOLDER, GoogleSystemTest, provide_gcp_context
2323

2424

25+
@pytest.fixture(scope="module")
26+
def helper():
27+
return GcsSystemTestHelper()
28+
29+
30+
@pytest.fixture
31+
def file_to_upload(helper):
32+
helper.create_file_to_upload()
33+
yield
34+
helper.remove_file_to_upload()
35+
36+
37+
@pytest.fixture
38+
def script_to_transform(helper):
39+
helper.create_script_to_transform()
40+
yield
41+
helper.remove_script_to_transform()
42+
43+
44+
@pytest.fixture
45+
def saved_file(helper):
46+
# file is created by operator inside DAG
47+
yield
48+
helper.remove_saved_file()
49+
50+
2551
@pytest.mark.backend("mysql", "postgres")
2652
@pytest.mark.credential_file(GCP_GCS_KEY)
2753
class GoogleCloudStorageExampleDagsTest(GoogleSystemTest):
28-
helper = GcsSystemTestHelper()
29-
3054
@provide_gcp_context(GCP_GCS_KEY)
3155
def setUp(self):
3256
super().setUp()
33-
self.helper.create_test_file()
3457

3558
@provide_gcp_context(GCP_GCS_KEY)
3659
def tearDown(self):
37-
self.helper.remove_test_files()
38-
self.helper.remove_bucket()
3960
super().tearDown()
4061

4162
@provide_gcp_context(GCP_GCS_KEY)
63+
@pytest.mark.usefixtures("file_to_upload", "script_to_transform", "saved_file")
4264
def test_run_example_dag(self):
4365
self.run_dag('example_gcs', CLOUD_DAG_FOLDER)
4466

4567
@provide_gcp_context(GCP_GCS_KEY)
68+
@pytest.mark.usefixtures("file_to_upload")
4669
def test_run_example_gcs_sensor_dag(self):
4770
self.run_dag('example_gcs_sensors', CLOUD_DAG_FOLDER)

tests/providers/google/cloud/operators/test_gcs_system_helper.py

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -30,12 +30,12 @@
3030

3131
class GcsSystemTestHelper(CommandExecutor):
3232
@staticmethod
33-
def create_test_file():
34-
# Create test file for upload
33+
def create_file_to_upload():
3534
with open(PATH_TO_UPLOAD_FILE, "w+") as file:
3635
file.writelines(["This is a test file"])
3736

38-
# Create script for transform operator
37+
@staticmethod
38+
def create_script_to_transform():
3939
with open(PATH_TO_TRANSFORM_SCRIPT, "w+") as file:
4040
file.write(
4141
"""import sys
@@ -51,13 +51,16 @@ def create_test_file():
5151
)
5252

5353
@staticmethod
54-
def remove_test_files():
55-
if os.path.exists(PATH_TO_UPLOAD_FILE):
56-
os.remove(PATH_TO_UPLOAD_FILE)
57-
if os.path.exists(PATH_TO_SAVED_FILE):
58-
os.remove(PATH_TO_SAVED_FILE)
59-
if os.path.exists(PATH_TO_TRANSFORM_SCRIPT):
60-
os.remove(PATH_TO_TRANSFORM_SCRIPT)
54+
def remove_file_to_upload():
55+
os.remove(PATH_TO_UPLOAD_FILE)
56+
57+
@staticmethod
58+
def remove_script_to_transform():
59+
os.remove(PATH_TO_TRANSFORM_SCRIPT)
60+
61+
@staticmethod
62+
def remove_saved_file():
63+
os.remove(PATH_TO_SAVED_FILE)
6164

6265
def remove_bucket(self):
6366
self.execute_cmd(["gsutil", "rm", "-r", f"gs://{BUCKET_1}"])

0 commit comments

Comments
 (0)








ApplySandwichStrip

pFad - (p)hone/(F)rame/(a)nonymizer/(d)eclutterfier!      Saves Data!


--- a PPN by Garber Painting Akron. With Image Size Reduction included!

Fetched URL: https://github.com/apache/airflow/commit/eb163c81d16532252d6196fd70c85e7ea6236279

Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy