From c2aae63825492c81d65406884db9c42e9fd5ac25 Mon Sep 17 00:00:00 2001
From: Steven Silvester <steve.silvester@mongodb.com>
Date: Wed, 12 Mar 2025 13:18:48 -0500
Subject: [PATCH] PYTHON-5204 Convert Serverless tests to use new test scripts

---
 .evergreen/config.yml                     | 30 -----------------------
 .evergreen/generated_configs/tasks.yml    | 10 ++++++++
 .evergreen/generated_configs/variants.yml | 10 ++------
 .evergreen/scripts/generate_config.py     | 12 ++++++---
 .evergreen/scripts/setup_tests.py         |  1 +
 .evergreen/scripts/teardown_tests.py      |  6 ++++-
 6 files changed, 27 insertions(+), 42 deletions(-)

diff --git a/.evergreen/config.yml b/.evergreen/config.yml
index 54931dcb48..0626ac590c 100644
--- a/.evergreen/config.yml
+++ b/.evergreen/config.yml
@@ -394,29 +394,6 @@ post:
   - func: "cleanup"
 
 task_groups:
-  - name: serverless_task_group
-    setup_group_can_fail_task: true
-    setup_group_timeout_secs: 1800 # 30 minutes
-    setup_group:
-      - func: "fetch source"
-      - func: "setup system"
-      - command: subprocess.exec
-        params:
-          binary: bash
-          env:
-            VAULT_NAME: ${VAULT_NAME}
-          args:
-            - ${DRIVERS_TOOLS}/.evergreen/serverless/create-instance.sh
-    teardown_task:
-      - command: subprocess.exec
-        params:
-          binary: bash
-          args:
-            - ${DRIVERS_TOOLS}/.evergreen/serverless/delete-instance.sh
-      - func: "upload test results"
-    tasks:
-      - ".serverless"
-
   - name: testazureoidc_task_group
     setup_group:
       - func: fetch source
@@ -557,13 +534,6 @@ tasks:
         - func: "run server"
         - func: "run doctests"
 
-    - name: "test-serverless"
-      tags: ["serverless"]
-      commands:
-        - func: "run tests"
-          vars:
-            TEST_NAME: serverless
-
     - name: "test-enterprise-auth"
       tags: ["enterprise-auth"]
       commands:
diff --git a/.evergreen/generated_configs/tasks.yml b/.evergreen/generated_configs/tasks.yml
index 02ee29e6ed..889608d207 100644
--- a/.evergreen/generated_configs/tasks.yml
+++ b/.evergreen/generated_configs/tasks.yml
@@ -5822,3 +5822,13 @@ tasks:
       - noauth
       - nossl
       - sync_async
+
+  # Serverless tests
+  - name: test-serverless
+    commands:
+      - func: run tests
+        vars:
+          TEST_NAME: serverless
+          AUTH: auth
+          SSL: ssl
+    tags: [serverless]
diff --git a/.evergreen/generated_configs/variants.yml b/.evergreen/generated_configs/variants.yml
index 80f08bc7a4..3d21a91794 100644
--- a/.evergreen/generated_configs/variants.yml
+++ b/.evergreen/generated_configs/variants.yml
@@ -1238,27 +1238,21 @@ buildvariants:
   # Serverless tests
   - name: serverless-rhel8-python3.9
     tasks:
-      - name: serverless_task_group
+      - name: .serverless
     display_name: Serverless RHEL8 Python3.9
     run_on:
       - rhel87-small
     batchtime: 10080
     expansions:
-      TEST_NAME: serverless
-      AUTH: auth
-      SSL: ssl
       PYTHON_BINARY: /opt/python/3.9/bin/python3
   - name: serverless-rhel8-python3.13
     tasks:
-      - name: serverless_task_group
+      - name: .serverless
     display_name: Serverless RHEL8 Python3.13
     run_on:
       - rhel87-small
     batchtime: 10080
     expansions:
-      TEST_NAME: serverless
-      AUTH: auth
-      SSL: ssl
       PYTHON_BINARY: /opt/python/3.13/bin/python3
 
   # Stable api tests
diff --git a/.evergreen/scripts/generate_config.py b/.evergreen/scripts/generate_config.py
index 505c6de060..1020bd089f 100644
--- a/.evergreen/scripts/generate_config.py
+++ b/.evergreen/scripts/generate_config.py
@@ -645,8 +645,7 @@ def create_disable_test_commands_variants():
 def create_serverless_variants():
     host = DEFAULT_HOST
     batchtime = BATCHTIME_WEEK
-    expansions = dict(TEST_NAME="serverless", AUTH="auth", SSL="ssl")
-    tasks = ["serverless_task_group"]
+    tasks = [".serverless"]
     base_name = "Serverless"
     return [
         create_variant(
@@ -654,7 +653,6 @@ def create_serverless_variants():
             get_display_name(base_name, host, python=python),
             host=host,
             python=python,
-            expansions=expansions,
             batchtime=batchtime,
         )
         for python in MIN_MAX_PYTHON
@@ -938,6 +936,14 @@ def create_ocsp_tasks():
     return tasks
 
 
+def create_serverless_tasks():
+    vars = dict(TEST_NAME="serverless", AUTH="auth", SSL="ssl")
+    test_func = FunctionCall(func="run tests", vars=vars)
+    tags = ["serverless"]
+    task_name = "test-serverless"
+    return [EvgTask(name=task_name, tags=tags, commands=[test_func])]
+
+
 ##################
 # Generate Config
 ##################
diff --git a/.evergreen/scripts/setup_tests.py b/.evergreen/scripts/setup_tests.py
index b75a821c3a..5ffa935d31 100644
--- a/.evergreen/scripts/setup_tests.py
+++ b/.evergreen/scripts/setup_tests.py
@@ -167,6 +167,7 @@ def handle_test_env() -> None:
             DB_USER = config["ADL_USERNAME"]
             DB_PASSWORD = config["ADL_PASSWORD"]
         elif test_name == "serverless":
+            run_command(f"bash {DRIVERS_TOOLS}/.evergreen/serverless/setup.sh")
             config = read_env(f"{DRIVERS_TOOLS}/.evergreen/serverless/secrets-export.sh")
             DB_USER = config["SERVERLESS_ATLAS_USER"]
             DB_PASSWORD = config["SERVERLESS_ATLAS_PASSWORD"]
diff --git a/.evergreen/scripts/teardown_tests.py b/.evergreen/scripts/teardown_tests.py
index fedbdc2fe8..1be8327b69 100644
--- a/.evergreen/scripts/teardown_tests.py
+++ b/.evergreen/scripts/teardown_tests.py
@@ -26,7 +26,11 @@
 
 # Tear down ocsp if applicable.
 elif TEST_NAME == "ocsp":
-    run_command(f"bash {DRIVERS_TOOLS}/.evergreen/teardown.sh")
+    run_command(f"bash {DRIVERS_TOOLS}/.evergreen/ocsp/teardown.sh")
+
+# Tear down serverless if applicable.
+elif TEST_NAME == "serverless":
+    run_command(f"bash {DRIVERS_TOOLS}/.evergreen/serverless/teardown.sh")
 
 # Tear down auth_aws if applicable.
 # We do not run web-identity hosts on macos, because the hosts lack permissions,