You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@beam.apache.org by da...@apache.org on 2024/11/18 17:04:38 UTC

(beam) branch master updated: Enable Dataflow managed service for Python tests (#33134)

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

damccorm pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/beam.git


The following commit(s) were added to refs/heads/master by this push:
     new de6965aea6e Enable Dataflow managed service for Python tests (#33134)
de6965aea6e is described below

commit de6965aea6e1a6cc1c35875b7d9cbc097acfb655
Author: Ahmed Abualsaud <65...@users.noreply.github.com>
AuthorDate: Mon Nov 18 12:04:31 2024 -0500

    Enable Dataflow managed service for Python tests (#33134)
    
    * Enable Python Managed Tests on Dataflow
    
    * trigger tests
    
    * fix
    
    * copy over annotations
    
    * write to GCS
    
    * fix lint error
    
    * fix format error
    
    * trigger direct runner tests
    
    * lint
---
 .../beam_PostCommit_Python_Xlang_IO_Dataflow.json  |  2 +-
 .../beam_PostCommit_Python_Xlang_IO_Direct.json    |  2 +-
 sdks/python/apache_beam/transforms/external.py     |  1 +
 .../transforms/managed_iceberg_it_test.py          | 30 ++++++++++------------
 4 files changed, 16 insertions(+), 19 deletions(-)

diff --git a/.github/trigger_files/beam_PostCommit_Python_Xlang_IO_Dataflow.json b/.github/trigger_files/beam_PostCommit_Python_Xlang_IO_Dataflow.json
index b2683333323..c537844dc84 100644
--- a/.github/trigger_files/beam_PostCommit_Python_Xlang_IO_Dataflow.json
+++ b/.github/trigger_files/beam_PostCommit_Python_Xlang_IO_Dataflow.json
@@ -1,4 +1,4 @@
 {
   "comment": "Modify this file in a trivial way to cause this test suite to run",
-  "modification": 2
+  "modification": 3
 }
diff --git a/.github/trigger_files/beam_PostCommit_Python_Xlang_IO_Direct.json b/.github/trigger_files/beam_PostCommit_Python_Xlang_IO_Direct.json
index e3d6056a5de..b2683333323 100644
--- a/.github/trigger_files/beam_PostCommit_Python_Xlang_IO_Direct.json
+++ b/.github/trigger_files/beam_PostCommit_Python_Xlang_IO_Direct.json
@@ -1,4 +1,4 @@
 {
   "comment": "Modify this file in a trivial way to cause this test suite to run",
-  "modification": 1
+  "modification": 2
 }
diff --git a/sdks/python/apache_beam/transforms/external.py b/sdks/python/apache_beam/transforms/external.py
index 83c439ca8dd..cdf5d874d7f 100644
--- a/sdks/python/apache_beam/transforms/external.py
+++ b/sdks/python/apache_beam/transforms/external.py
@@ -923,6 +923,7 @@ class ExternalTransform(ptransform.PTransform):
             for tag,
             pcoll in self._expanded_transform.outputs.items()
         },
+        annotations=self._expanded_transform.annotations,
         environment_id=self._expanded_transform.environment_id)
 
 
diff --git a/sdks/python/apache_beam/transforms/managed_iceberg_it_test.py b/sdks/python/apache_beam/transforms/managed_iceberg_it_test.py
index 0dfa2aa19c5..a09203f313e 100644
--- a/sdks/python/apache_beam/transforms/managed_iceberg_it_test.py
+++ b/sdks/python/apache_beam/transforms/managed_iceberg_it_test.py
@@ -16,15 +16,13 @@
 #
 
 import os
-import secrets
-import shutil
-import tempfile
 import time
 import unittest
 
 import pytest
 
 import apache_beam as beam
+from apache_beam.testing.test_pipeline import TestPipeline
 from apache_beam.testing.util import assert_that
 from apache_beam.testing.util import equal_to
 
@@ -35,17 +33,15 @@ from apache_beam.testing.util import equal_to
     "EXPANSION_JARS environment var is not provided, "
     "indicating that jars have not been built")
 class ManagedIcebergIT(unittest.TestCase):
-  def setUp(self):
-    self._tempdir = tempfile.mkdtemp()
-    if not os.path.exists(self._tempdir):
-      os.mkdir(self._tempdir)
-    test_warehouse_name = 'test_warehouse_%d_%s' % (
-        int(time.time()), secrets.token_hex(3))
-    self.warehouse_path = os.path.join(self._tempdir, test_warehouse_name)
-    os.mkdir(self.warehouse_path)
+  WAREHOUSE = "gs://temp-storage-for-end-to-end-tests/xlang-python-using-java"
 
-  def tearDown(self):
-    shutil.rmtree(self._tempdir, ignore_errors=False)
+  def setUp(self):
+    self.test_pipeline = TestPipeline(is_integration_test=True)
+    self.args = self.test_pipeline.get_full_options_as_args()
+    self.args.extend([
+        '--experiments=enable_managed_transforms',
+        '--dataflow_endpoint=https://dataflow-staging.sandbox.googleapis.com',
+    ])
 
   def _create_row(self, num: int):
     return beam.Row(
@@ -57,24 +53,24 @@ class ManagedIcebergIT(unittest.TestCase):
 
   def test_write_read_pipeline(self):
     iceberg_config = {
-        "table": "test.write_read",
+        "table": "test_iceberg_write_read.test_" + str(int(time.time())),
         "catalog_name": "default",
         "catalog_properties": {
             "type": "hadoop",
-            "warehouse": f"file://{self.warehouse_path}",
+            "warehouse": self.WAREHOUSE,
         }
     }
 
     rows = [self._create_row(i) for i in range(100)]
     expected_dicts = [row.as_dict() for row in rows]
 
-    with beam.Pipeline() as write_pipeline:
+    with beam.Pipeline(argv=self.args) as write_pipeline:
       _ = (
           write_pipeline
           | beam.Create(rows)
           | beam.managed.Write(beam.managed.ICEBERG, config=iceberg_config))
 
-    with beam.Pipeline() as read_pipeline:
+    with beam.Pipeline(argv=self.args) as read_pipeline:
       output_dicts = (
           read_pipeline
           | beam.managed.Read(beam.managed.ICEBERG, config=iceberg_config)