This is an automated email from the ASF dual-hosted git repository.

potiuk pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/airflow.git


The following commit(s) were added to refs/heads/main by this push:
     new ee80d4349d0 Remove redundant ML Engine system test (#72321)
ee80d4349d0 is described below

commit ee80d4349d0fdffdd3f266caeea53064fd62b113
Author: Ulada Zakharava <[email protected]>
AuthorDate: Tue Sep 8 22:29:10 2026 +0200

    Remove redundant ML Engine system test (#72321)
    
    Dedicated Vertex AI system Dags already exercise these operators and 
workflows, so retaining the legacy combined Dag adds duplicate cloud test cost.
---
 .../system/google/cloud/ml_engine/__init__.py      |  16 --
 .../google/cloud/ml_engine/example_mlengine.py     | 297 ---------------------
 2 files changed, 313 deletions(-)

diff --git a/providers/google/tests/system/google/cloud/ml_engine/__init__.py 
b/providers/google/tests/system/google/cloud/ml_engine/__init__.py
deleted file mode 100644
index 13a83393a91..00000000000
--- a/providers/google/tests/system/google/cloud/ml_engine/__init__.py
+++ /dev/null
@@ -1,16 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-#
-#   http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
diff --git 
a/providers/google/tests/system/google/cloud/ml_engine/example_mlengine.py 
b/providers/google/tests/system/google/cloud/ml_engine/example_mlengine.py
deleted file mode 100644
index 6fdeab14c1b..00000000000
--- a/providers/google/tests/system/google/cloud/ml_engine/example_mlengine.py
+++ /dev/null
@@ -1,297 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-#
-#   http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-"""
-Example Airflow DAG for Google ML Engine service.
-"""
-
-from __future__ import annotations
-
-import os
-from datetime import datetime
-
-from google.cloud.aiplatform import schema
-from google.protobuf.json_format import ParseDict
-from google.protobuf.struct_pb2 import Value
-
-from airflow import models
-from airflow.providers.google.cloud.operators.gcs import (
-    GCSCreateBucketOperator,
-    GCSDeleteBucketOperator,
-    GCSSynchronizeBucketsOperator,
-)
-from airflow.providers.google.cloud.operators.vertex_ai.batch_prediction_job 
import (
-    CreateBatchPredictionJobOperator,
-    DeleteBatchPredictionJobOperator,
-)
-from airflow.providers.google.cloud.operators.vertex_ai.custom_job import (
-    CreateCustomPythonPackageTrainingJobOperator,
-)
-from airflow.providers.google.cloud.operators.vertex_ai.dataset import (
-    CreateDatasetOperator,
-    DeleteDatasetOperator,
-)
-from airflow.providers.google.cloud.operators.vertex_ai.model_service import (
-    DeleteModelOperator,
-    DeleteModelVersionOperator,
-    GetModelOperator,
-    ListModelVersionsOperator,
-    SetDefaultVersionOnModelOperator,
-)
-from airflow.providers.standard.operators.bash import BashOperator
-
-try:
-    from airflow.sdk import TriggerRule
-except ImportError:
-    # Compatibility for Airflow < 3.1
-    from airflow.utils.trigger_rule import TriggerRule  # type: 
ignore[no-redef,attr-defined]
-
-PROJECT_ID = os.environ.get("SYSTEM_TESTS_GCP_PROJECT", "default")
-ENV_ID = os.environ.get("SYSTEM_TESTS_ENV_ID", "default")
-DAG_ID = "gcp_mlengine"
-REGION = "us-central1"
-
-PACKAGE_DISPLAY_NAME = f"package-{DAG_ID}-{ENV_ID}".replace("_", "-")
-MODEL_DISPLAY_NAME = f"model-{DAG_ID}-{ENV_ID}".replace("_", "-")
-JOB_DISPLAY_NAME = f"batch_job_{DAG_ID}_{ENV_ID}".replace("-", "_")
-
-RESOURCE_DATA_BUCKET = "airflow-system-tests-resources"
-CUSTOM_PYTHON_GCS_BUCKET_NAME = 
f"bucket_python_{DAG_ID}_{ENV_ID}".replace("_", "-")
-
-BQ_SOURCE = "bq://bigquery-public-data.ml_datasets.penguins"
-TABULAR_DATASET = {
-    "display_name": f"tabular-dataset-{ENV_ID}",
-    "metadata_schema_uri": schema.dataset.metadata.tabular,
-    "metadata": ParseDict(
-        {"input_config": {"bigquery_source": {"uri": BQ_SOURCE}}},
-        Value(),
-    ),
-}
-
-REPLICA_COUNT = 1
-MACHINE_TYPE = "n1-standard-4"
-ACCELERATOR_TYPE = "ACCELERATOR_TYPE_UNSPECIFIED"
-ACCELERATOR_COUNT = 0
-TRAINING_FRACTION_SPLIT = 0.7
-TEST_FRACTION_SPLIT = 0.15
-VALIDATION_FRACTION_SPLIT = 0.15
-
-PYTHON_PACKAGE_GCS_URI = 
f"gs://{CUSTOM_PYTHON_GCS_BUCKET_NAME}/vertex-ai/penguins_trainer_script-0.1.zip"
-PYTHON_MODULE_NAME = "penguins_trainer_script.task"
-
-TRAIN_IMAGE = "us-docker.pkg.dev/vertex-ai/training/tf-cpu.2-8:latest"
-DEPLOY_IMAGE = "us-docker.pkg.dev/vertex-ai/prediction/tf2-cpu.2-8:latest"
-
-
-with models.DAG(
-    dag_id=DAG_ID,
-    schedule="@once",
-    start_date=datetime(2021, 1, 1),
-    catchup=False,
-    tags=["example", "ml_engine"],
-) as dag:
-    create_bucket = GCSCreateBucketOperator(
-        task_id="create_bucket",
-        bucket_name=CUSTOM_PYTHON_GCS_BUCKET_NAME,
-        storage_class="REGIONAL",
-        location=REGION,
-    )
-
-    move_data_files = GCSSynchronizeBucketsOperator(
-        task_id="move_files_to_bucket",
-        source_bucket=RESOURCE_DATA_BUCKET,
-        source_object="vertex-ai/penguins-data",
-        destination_bucket=CUSTOM_PYTHON_GCS_BUCKET_NAME,
-        destination_object="vertex-ai",
-        recursive=True,
-    )
-    create_tabular_dataset = CreateDatasetOperator(
-        task_id="tabular_dataset",
-        dataset=TABULAR_DATASET,
-        region=REGION,
-        project_id=PROJECT_ID,
-    )
-    tabular_dataset_id = create_tabular_dataset.output["dataset_id"]
-
-    # [START howto_operator_create_custom_python_training_job_v1]
-    create_custom_python_package_training_job = 
CreateCustomPythonPackageTrainingJobOperator(
-        task_id="create_custom_python_package_training_job",
-        staging_bucket=f"gs://{CUSTOM_PYTHON_GCS_BUCKET_NAME}",
-        display_name=PACKAGE_DISPLAY_NAME,
-        python_package_gcs_uri=PYTHON_PACKAGE_GCS_URI,
-        python_module_name=PYTHON_MODULE_NAME,
-        container_uri=TRAIN_IMAGE,
-        model_serving_container_image_uri=DEPLOY_IMAGE,
-        bigquery_destination=f"bq://{PROJECT_ID}",
-        # run params
-        dataset_id=tabular_dataset_id,
-        model_display_name=MODEL_DISPLAY_NAME,
-        replica_count=REPLICA_COUNT,
-        machine_type=MACHINE_TYPE,
-        accelerator_type=ACCELERATOR_TYPE,
-        accelerator_count=ACCELERATOR_COUNT,
-        training_fraction_split=TRAINING_FRACTION_SPLIT,
-        validation_fraction_split=VALIDATION_FRACTION_SPLIT,
-        test_fraction_split=TEST_FRACTION_SPLIT,
-        region=REGION,
-        project_id=PROJECT_ID,
-    )
-    # [END howto_operator_create_custom_python_training_job_v1]
-    model_id_v1 = create_custom_python_package_training_job.output["model_id"]
-
-    # [START howto_operator_gcp_mlengine_get_model]
-    get_model = GetModelOperator(
-        task_id="get_model", region=REGION, project_id=PROJECT_ID, 
model_id=model_id_v1
-    )
-    # [END howto_operator_gcp_mlengine_get_model]
-
-    # [START howto_operator_gcp_mlengine_print_model]
-    get_model_result = BashOperator(
-        bash_command=f"echo {get_model.output}",
-        task_id="get_model_result",
-    )
-    # [END howto_operator_gcp_mlengine_print_model]
-
-    # [START howto_operator_create_custom_python_training_job_v2]
-    create_custom_python_package_training_job_v2 = 
CreateCustomPythonPackageTrainingJobOperator(
-        task_id="create_custom_python_package_training_job_v2",
-        staging_bucket=f"gs://{CUSTOM_PYTHON_GCS_BUCKET_NAME}",
-        display_name=PACKAGE_DISPLAY_NAME,
-        python_package_gcs_uri=PYTHON_PACKAGE_GCS_URI,
-        python_module_name=PYTHON_MODULE_NAME,
-        container_uri=TRAIN_IMAGE,
-        model_serving_container_image_uri=DEPLOY_IMAGE,
-        bigquery_destination=f"bq://{PROJECT_ID}",
-        parent_model=model_id_v1,
-        # run params
-        dataset_id=tabular_dataset_id,
-        model_display_name=MODEL_DISPLAY_NAME,
-        replica_count=REPLICA_COUNT,
-        machine_type=MACHINE_TYPE,
-        accelerator_type=ACCELERATOR_TYPE,
-        accelerator_count=ACCELERATOR_COUNT,
-        training_fraction_split=TRAINING_FRACTION_SPLIT,
-        validation_fraction_split=VALIDATION_FRACTION_SPLIT,
-        test_fraction_split=TEST_FRACTION_SPLIT,
-        region=REGION,
-        project_id=PROJECT_ID,
-    )
-    # [END howto_operator_create_custom_python_training_job_v2]
-    model_id_v2 = 
create_custom_python_package_training_job_v2.output["model_id"]
-
-    # [START howto_operator_gcp_mlengine_default_version]
-    set_default_version = SetDefaultVersionOnModelOperator(
-        task_id="set_default_version",
-        project_id=PROJECT_ID,
-        region=REGION,
-        model_id=model_id_v2,
-    )
-    # [END howto_operator_gcp_mlengine_default_version]
-
-    # [START howto_operator_gcp_mlengine_list_versions]
-    list_model_versions = ListModelVersionsOperator(
-        task_id="list_model_versions", region=REGION, project_id=PROJECT_ID, 
model_id=model_id_v2
-    )
-    # [END howto_operator_gcp_mlengine_list_versions]
-
-    # [START howto_operator_start_batch_prediction]
-    create_batch_prediction_job = CreateBatchPredictionJobOperator(
-        task_id="create_batch_prediction_job",
-        job_display_name=JOB_DISPLAY_NAME,
-        model_name=model_id_v2,
-        predictions_format="bigquery",
-        bigquery_source=BQ_SOURCE,
-        bigquery_destination_prefix=f"bq://{PROJECT_ID}",
-        region=REGION,
-        project_id=PROJECT_ID,
-        machine_type=MACHINE_TYPE,
-    )
-    # [END howto_operator_start_batch_prediction]
-
-    # [START howto_operator_gcp_mlengine_delete_version]
-    delete_model_version_1 = DeleteModelVersionOperator(
-        task_id="delete_model_version_1",
-        project_id=PROJECT_ID,
-        region=REGION,
-        model_id=model_id_v1,
-        trigger_rule=TriggerRule.ALL_DONE,
-    )
-    # [END howto_operator_gcp_mlengine_delete_version]
-
-    # [START howto_operator_gcp_mlengine_delete_model]
-    delete_model = DeleteModelOperator(
-        task_id="delete_model",
-        project_id=PROJECT_ID,
-        region=REGION,
-        model_id=model_id_v2,
-        trigger_rule=TriggerRule.ALL_DONE,
-    )
-    # [END howto_operator_gcp_mlengine_delete_model]
-
-    delete_batch_prediction_job = DeleteBatchPredictionJobOperator(
-        task_id="delete_batch_prediction_job",
-        
batch_prediction_job_id=create_batch_prediction_job.output["batch_prediction_job_id"],
-        region=REGION,
-        project_id=PROJECT_ID,
-        trigger_rule=TriggerRule.ALL_DONE,
-    )
-
-    delete_tabular_dataset = DeleteDatasetOperator(
-        task_id="delete_tabular_dataset",
-        dataset_id=tabular_dataset_id,
-        region=REGION,
-        project_id=PROJECT_ID,
-        trigger_rule=TriggerRule.ALL_DONE,
-    )
-
-    delete_bucket = GCSDeleteBucketOperator(
-        task_id="delete_bucket",
-        bucket_name=CUSTOM_PYTHON_GCS_BUCKET_NAME,
-        trigger_rule=TriggerRule.ALL_DONE,
-    )
-
-    (
-        # TEST SETUP
-        create_bucket
-        >> move_data_files
-        >> create_tabular_dataset
-        # TEST BODY
-        >> create_custom_python_package_training_job
-        >> create_custom_python_package_training_job_v2
-        >> create_batch_prediction_job
-        >> get_model
-        >> get_model_result
-        >> list_model_versions
-        >> set_default_version
-        # TEST TEARDOWN
-        >> delete_model_version_1
-        >> delete_model
-        >> delete_batch_prediction_job
-        >> delete_tabular_dataset
-        >> delete_bucket
-    )
-
-    from tests_common.test_utils.watcher import watcher
-
-    # This test needs watcher in order to properly mark success/failure
-    # when "tearDown" task with trigger rule is part of the DAG
-    list(dag.tasks) >> watcher()
-
-from tests_common.test_utils.system_tests import get_test_run  # noqa: E402
-
-# Needed to run the example DAG with pytest (see: 
contributing-docs/testing/system_tests.rst)
-test_run = get_test_run(dag)

Reply via email to