From 2422a19cc7c29c96508a58dcd6712d895df6df72 Mon Sep 17 00:00:00 2001 From: Victoria Hall Date: Mon, 6 Jul 2026 13:48:47 -0500 Subject: [PATCH 1/3] Migrate durable function tests to emulator --- .../durable_functions/DurableFunctionsHttpStart/__init__.py | 0 .../durable_functions/DurableFunctionsHttpStart/function.json | 0 .../durable_functions/DurableFunctionsOrchestrator/__init__.py | 0 .../durable_functions/DurableFunctionsOrchestrator/function.json | 0 .../durable_functions/Hello/__init__.py | 0 .../durable_functions/Hello/function.json | 0 .../durable_functions/durable_functions_stein/function_app.py | 0 .../tests/{endtoend => emulator_tests}/test_durable_functions.py | 0 8 files changed, 0 insertions(+), 0 deletions(-) rename workers/tests/{endtoend => emulator_tests}/durable_functions/DurableFunctionsHttpStart/__init__.py (100%) rename workers/tests/{endtoend => emulator_tests}/durable_functions/DurableFunctionsHttpStart/function.json (100%) rename workers/tests/{endtoend => emulator_tests}/durable_functions/DurableFunctionsOrchestrator/__init__.py (100%) rename workers/tests/{endtoend => emulator_tests}/durable_functions/DurableFunctionsOrchestrator/function.json (100%) rename workers/tests/{endtoend => emulator_tests}/durable_functions/Hello/__init__.py (100%) rename workers/tests/{endtoend => emulator_tests}/durable_functions/Hello/function.json (100%) rename workers/tests/{endtoend => emulator_tests}/durable_functions/durable_functions_stein/function_app.py (100%) rename workers/tests/{endtoend => emulator_tests}/test_durable_functions.py (100%) diff --git a/workers/tests/endtoend/durable_functions/DurableFunctionsHttpStart/__init__.py b/workers/tests/emulator_tests/durable_functions/DurableFunctionsHttpStart/__init__.py similarity index 100% rename from workers/tests/endtoend/durable_functions/DurableFunctionsHttpStart/__init__.py rename to workers/tests/emulator_tests/durable_functions/DurableFunctionsHttpStart/__init__.py diff --git a/workers/tests/endtoend/durable_functions/DurableFunctionsHttpStart/function.json b/workers/tests/emulator_tests/durable_functions/DurableFunctionsHttpStart/function.json similarity index 100% rename from workers/tests/endtoend/durable_functions/DurableFunctionsHttpStart/function.json rename to workers/tests/emulator_tests/durable_functions/DurableFunctionsHttpStart/function.json diff --git a/workers/tests/endtoend/durable_functions/DurableFunctionsOrchestrator/__init__.py b/workers/tests/emulator_tests/durable_functions/DurableFunctionsOrchestrator/__init__.py similarity index 100% rename from workers/tests/endtoend/durable_functions/DurableFunctionsOrchestrator/__init__.py rename to workers/tests/emulator_tests/durable_functions/DurableFunctionsOrchestrator/__init__.py diff --git a/workers/tests/endtoend/durable_functions/DurableFunctionsOrchestrator/function.json b/workers/tests/emulator_tests/durable_functions/DurableFunctionsOrchestrator/function.json similarity index 100% rename from workers/tests/endtoend/durable_functions/DurableFunctionsOrchestrator/function.json rename to workers/tests/emulator_tests/durable_functions/DurableFunctionsOrchestrator/function.json diff --git a/workers/tests/endtoend/durable_functions/Hello/__init__.py b/workers/tests/emulator_tests/durable_functions/Hello/__init__.py similarity index 100% rename from workers/tests/endtoend/durable_functions/Hello/__init__.py rename to workers/tests/emulator_tests/durable_functions/Hello/__init__.py diff --git a/workers/tests/endtoend/durable_functions/Hello/function.json b/workers/tests/emulator_tests/durable_functions/Hello/function.json similarity index 100% rename from workers/tests/endtoend/durable_functions/Hello/function.json rename to workers/tests/emulator_tests/durable_functions/Hello/function.json diff --git a/workers/tests/endtoend/durable_functions/durable_functions_stein/function_app.py b/workers/tests/emulator_tests/durable_functions/durable_functions_stein/function_app.py similarity index 100% rename from workers/tests/endtoend/durable_functions/durable_functions_stein/function_app.py rename to workers/tests/emulator_tests/durable_functions/durable_functions_stein/function_app.py diff --git a/workers/tests/endtoend/test_durable_functions.py b/workers/tests/emulator_tests/test_durable_functions.py similarity index 100% rename from workers/tests/endtoend/test_durable_functions.py rename to workers/tests/emulator_tests/test_durable_functions.py From a3e33b64280171c714d6a09410c1606d6ecfaf07 Mon Sep 17 00:00:00 2001 From: Victoria Hall Date: Mon, 6 Jul 2026 14:15:01 -0500 Subject: [PATCH 2/3] fix tests directory --- workers/tests/emulator_tests/test_durable_functions.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/workers/tests/emulator_tests/test_durable_functions.py b/workers/tests/emulator_tests/test_durable_functions.py index 092583b0f..feed32ceb 100644 --- a/workers/tests/emulator_tests/test_durable_functions.py +++ b/workers/tests/emulator_tests/test_durable_functions.py @@ -38,7 +38,7 @@ def get_libraries_to_install(cls): @classmethod def get_script_dir(cls): - return testutils.E2E_TESTS_FOLDER / 'durable_functions' + return testutils.EMULATOR_TESTS_FOLDER / 'durable_functions' @testutils.retryable_test(3, 5) def test_durable(self): @@ -61,5 +61,5 @@ class TestDurableFunctionsStein(TestDurableFunctions): @classmethod def get_script_dir(cls): - return testutils.E2E_TESTS_FOLDER / 'durable_functions' / \ - 'durable_functions_stein' + return testutils.EMULATOR_TESTS_FOLDER / 'durable_functions' / \ + 'durable_functions_stein' From d34a0801c3eb4208363a445e451bc51fb635ffa9 Mon Sep 17 00:00:00 2001 From: Victoria Hall Date: Mon, 6 Jul 2026 15:22:54 -0500 Subject: [PATCH 3/3] remove docker consumption tests, free memory for unit tests --- eng/ci/docker-consumption-tests.yml | 37 ----------- eng/ci/official-build.yml | 4 -- eng/templates/jobs/ci-unit-tests.yml | 25 ++++++- .../jobs/ci-docker-consumption-tests.yml | 65 ------------------- 4 files changed, 24 insertions(+), 107 deletions(-) delete mode 100644 eng/ci/docker-consumption-tests.yml delete mode 100644 eng/templates/official/jobs/ci-docker-consumption-tests.yml diff --git a/eng/ci/docker-consumption-tests.yml b/eng/ci/docker-consumption-tests.yml deleted file mode 100644 index d1de145a0..000000000 --- a/eng/ci/docker-consumption-tests.yml +++ /dev/null @@ -1,37 +0,0 @@ -# CI only, does not trigger on PRs. -pr: none - -schedules: - - cron: "0 10 * * *" - displayName: Run everyday at 5 AM CST - branches: - include: - - dev - always: true - -resources: - repositories: - - repository: 1es - type: git - name: 1ESPipelineTemplates/1ESPipelineTemplates - ref: refs/tags/release - - repository: eng - type: git - name: engineering - ref: refs/tags/release - -variables: - - template: /eng/templates/utils/official-variables.yml@self - -extends: - template: v1/1ES.Unofficial.PipelineTemplate.yml@1es - parameters: - pool: - name: 1es-pool-azfunc - image: 1es-windows-2022 - os: windows - - stages: - - stage: RunDockerConsumptionTests - jobs: - - template: /eng/templates/official/jobs/ci-docker-consumption-tests.yml@self diff --git a/eng/ci/official-build.yml b/eng/ci/official-build.yml index b21ed773a..876ac571b 100644 --- a/eng/ci/official-build.yml +++ b/eng/ci/official-build.yml @@ -73,10 +73,6 @@ extends: PoolName: 1es-pool-azfunc ArtifactFeed: 'internal/PythonWorker_Internal_PublicPackages' NuGetServiceConnection: 'PythonWorker_Internal_PublicPackages' - - stage: RunWorkerDockerConsumptionTests - dependsOn: BuildPythonWorker - jobs: - - template: /eng/templates/official/jobs/ci-docker-consumption-tests.yml@self - stage: RunWorkerDockerDedicatedTests dependsOn: BuildPythonWorker jobs: diff --git a/eng/templates/jobs/ci-unit-tests.yml b/eng/templates/jobs/ci-unit-tests.yml index 5736307e5..06c3d9e35 100644 --- a/eng/templates/jobs/ci-unit-tests.yml +++ b/eng/templates/jobs/ci-unit-tests.yml @@ -44,7 +44,30 @@ jobs: echo "Disk space after cleanup:" df -h displayName: 'Free disk space' - + + - bash: | + echo "Memory before cleanup:" + free -h + + # Stop Docker daemon to reclaim memory used by the daemon itself + # (docker system prune above removes artifacts but the daemon stays resident) + sudo systemctl stop docker || true + sudo systemctl stop docker.socket || true + sudo systemctl stop containerd || true + + # Stop background services not needed for unit tests + sudo systemctl stop snapd || true + sudo systemctl stop unattended-upgrades || true + sudo systemctl stop packagekit || true + + # Drop Linux filesystem caches (page cache, dentries, inodes) + sudo sync + sudo sh -c 'echo 3 > /proc/sys/vm/drop_caches' || true + + echo "Memory after cleanup:" + free -h + displayName: 'Free memory' + - task: UsePythonVersion@0 inputs: versionSpec: $(PYTHON_VERSION) diff --git a/eng/templates/official/jobs/ci-docker-consumption-tests.yml b/eng/templates/official/jobs/ci-docker-consumption-tests.yml deleted file mode 100644 index d8ee29cbe..000000000 --- a/eng/templates/official/jobs/ci-docker-consumption-tests.yml +++ /dev/null @@ -1,65 +0,0 @@ -parameters: - PROJECT_DIRECTORY: 'workers' - -jobs: - - job: "TestPython" - displayName: "Run Python Docker Consumption Tests" - - pool: - name: 1es-pool-azfunc - image: 1es-ubuntu-22.04 - os: linux - - strategy: - matrix: - Python39: - PYTHON_VERSION: '3.9' - STORAGE_CONNECTION: $(LinuxStorageConnectionString39) - SQL_CONNECTION: $(LinuxSqlConnectionString39) - EVENTGRID_URI: $(LinuxEventGridTopicUriString39) - EVENTGRID_CONNECTION: $(LinuxEventGridConnectionKeyString39) - Python310: - PYTHON_VERSION: '3.10' - STORAGE_CONNECTION: $(LinuxStorageConnectionString310) - SQL_CONNECTION: $(LinuxSqlConnectionString310) - EVENTGRID_URI: $(LinuxEventGridTopicUriString310) - EVENTGRID_CONNECTION: $(LinuxEventGridConnectionKeyString310) - Python311: - PYTHON_VERSION: '3.11' - STORAGE_CONNECTION: $(LinuxStorageConnectionString311) - SQL_CONNECTION: $(LinuxSqlConnectionString311) - EVENTGRID_URI: $(LinuxEventGridTopicUriString311) - EVENTGRID_CONNECTION: $(LinuxEventGridConnectionKeyString311) - Python312: - PYTHON_VERSION: '3.12' - STORAGE_CONNECTION: $(LinuxStorageConnectionString312) - SQL_CONNECTION: $(LinuxSqlConnectionString312) - EVENTGRID_URI: $(LinuxEventGridTopicUriString312) - EVENTGRID_CONNECTION: $(LinuxEventGridConnectionKeyString312) - - steps: - - task: UsePythonVersion@0 - inputs: - versionSpec: $(PYTHON_VERSION) - - task: PipAuthenticate@1 - displayName: 'Pip Authenticate' - inputs: - artifactFeeds: 'internal/PythonWorker_Internal_PublicPackages' - - bash: | - chmod +x eng/scripts/install-dependencies.sh - - eng/scripts/install-dependencies.sh $(PYTHON_VERSION) ${{ parameters.PROJECT_DIRECTORY }} - cd ${{ parameters.PROJECT_DIRECTORY }}/tests - python -m invoke -c test_setup build-protos - displayName: 'Install dependencies' - - bash: | - python -m pytest --reruns 4 -vv --instafail tests/endtoend - env: - CONSUMPTION_DOCKER_TEST: "true" - AzureWebJobsStorage: $(STORAGE_CONNECTION) - STORAGE_CONNECTION: $(STORAGE_CONNECTION) - AzureWebJobsSqlConnectionString: $(SQL_CONNECTION) - AzureWebJobsEventGridTopicUri: $(EVENTGRID_URI) - AzureWebJobsEventGridConnectionKey: $(EVENTGRID_CONNECTION) - workingDirectory: $(Build.SourcesDirectory)/${{ parameters.PROJECT_DIRECTORY }} - displayName: "Running $(PYTHON_VERSION) Docker Consumption tests" \ No newline at end of file