From abd7a7857710d62548e191901d9bbf40b5539fe1 Mon Sep 17 00:00:00 2001 From: Victoria Hall Date: Tue, 7 Jul 2026 14:37:45 -0500 Subject: [PATCH 1/4] fix eventgrid variables --- .../official/jobs/ci-custom-image-tests.yml | 1 - eng/templates/official/jobs/ci-e2e-tests.yml | 16 ++++++------ .../emulator_tests/test_durable_functions.py | 5 ++-- .../test_dependency_isolation_functions.py | 4 +-- .../endtoend/test_eventgrid_functions.py | 6 ++--- workers/tests/endtoend/test_http_v2.py | 8 +++--- .../tests/endtoend/test_warmup_functions.py | 8 +++--- .../test_worker_process_count_functions.py | 14 ++++------ .../unittests/test_shared_memory_manager.py | 26 +++++++++++-------- workers/tests/utils/constants.py | 1 - workers/tests/utils/testutils.py | 19 ++++---------- 11 files changed, 44 insertions(+), 64 deletions(-) diff --git a/eng/templates/official/jobs/ci-custom-image-tests.yml b/eng/templates/official/jobs/ci-custom-image-tests.yml index 8bf854858..69afa0411 100644 --- a/eng/templates/official/jobs/ci-custom-image-tests.yml +++ b/eng/templates/official/jobs/ci-custom-image-tests.yml @@ -29,7 +29,6 @@ jobs: python -m pytest --reruns 4 -vv --instafail tests/endtoend env: DEDICATED_DOCKER_TEST: $(CUSTOM_DED_IMAGE) - CONSUMPTION_DOCKER_TEST: $(CUSTOM_CON_IMAGE) IMAGE_NAME: $(CUSTOM_IMAGE_NAME) AzureWebJobsStorage: $(LinuxStorageConnectionString311) AzureWebJobsCosmosDBConnectionString: $(LinuxCosmosDBConnectionString311) diff --git a/eng/templates/official/jobs/ci-e2e-tests.yml b/eng/templates/official/jobs/ci-e2e-tests.yml index aec4f667b..f63d8f88c 100644 --- a/eng/templates/official/jobs/ci-e2e-tests.yml +++ b/eng/templates/official/jobs/ci-e2e-tests.yml @@ -39,16 +39,16 @@ jobs: EVENTGRID_CONNECTION: $(LinuxEventGridConnectionKeyString312) Python313: PYTHON_VERSION: '3.13' - STORAGE_CONNECTION: $(LinuxStorageConnectionString312) - SQL_CONNECTION: $(LinuxSqlConnectionString312) - EVENTGRID_URI: $(LinuxEventGridTopicUriString312) - EVENTGRID_CONNECTION: $(LinuxEventGridConnectionKeyString312) + STORAGE_CONNECTION: $(LinuxStorageConnectionString36) + SQL_CONNECTION: $(LinuxSqlConnectionString37) + EVENTGRID_URI: $(LinuxEventGridTopicUriString36) + EVENTGRID_CONNECTION: $(LinuxEventGridConnectionKeyString36) Python314: PYTHON_VERSION: '3.14' - STORAGE_CONNECTION: $(LinuxStorageConnectionString312) - SQL_CONNECTION: $(LinuxSqlConnectionString312) - EVENTGRID_URI: $(LinuxEventGridTopicUriString312) - EVENTGRID_CONNECTION: $(LinuxEventGridConnectionKeyString312) + STORAGE_CONNECTION: $(LinuxStorageConnectionString37) + SQL_CONNECTION: $(LinuxSqlConnectionString37) + EVENTGRID_URI: $(LinuxEventGridTopicUriString37) + EVENTGRID_CONNECTION: $(LinuxEventGridConnectionKeyString37) steps: - bash: | echo "Disk space before cleanup:" diff --git a/workers/tests/emulator_tests/test_durable_functions.py b/workers/tests/emulator_tests/test_durable_functions.py index feed32ceb..7d81f8fe7 100644 --- a/workers/tests/emulator_tests/test_durable_functions.py +++ b/workers/tests/emulator_tests/test_durable_functions.py @@ -7,13 +7,12 @@ import requests from tests.utils import testutils -from tests.utils.constants import CONSUMPTION_DOCKER_TEST, DEDICATED_DOCKER_TEST +from tests.utils.constants import DEDICATED_DOCKER_TEST from azure_functions_worker.utils.common import is_envvar_true -@skipIf(is_envvar_true(DEDICATED_DOCKER_TEST) - or is_envvar_true(CONSUMPTION_DOCKER_TEST), +@skipIf(is_envvar_true(DEDICATED_DOCKER_TEST), "Docker tests cannot retrieve port needed for a webhook") class TestDurableFunctions(testutils.WebHostTestCase): diff --git a/workers/tests/endtoend/test_dependency_isolation_functions.py b/workers/tests/endtoend/test_dependency_isolation_functions.py index 7df6604fa..8981d272b 100644 --- a/workers/tests/endtoend/test_dependency_isolation_functions.py +++ b/workers/tests/endtoend/test_dependency_isolation_functions.py @@ -9,7 +9,6 @@ from requests import Response from tests.utils import testutils from tests.utils.constants import ( - CONSUMPTION_DOCKER_TEST, DEDICATED_DOCKER_TEST, PYAZURE_INTEGRATION_TEST, ) @@ -19,8 +18,7 @@ REQUEST_TIMEOUT_SEC = 5 -@skipIf(is_envvar_true(DEDICATED_DOCKER_TEST) - or is_envvar_true(CONSUMPTION_DOCKER_TEST), +@skipIf(is_envvar_true(DEDICATED_DOCKER_TEST), 'Docker tests do not work with dependency isolation ') class TestGRPCandProtobufDependencyIsolationOnDedicated( testutils.WebHostTestCase): diff --git a/workers/tests/endtoend/test_eventgrid_functions.py b/workers/tests/endtoend/test_eventgrid_functions.py index fb1e091e2..6c435f259 100644 --- a/workers/tests/endtoend/test_eventgrid_functions.py +++ b/workers/tests/endtoend/test_eventgrid_functions.py @@ -6,11 +6,10 @@ import requests from tests.utils import testutils -from tests.utils.constants import DEDICATED_DOCKER_TEST, CONSUMPTION_DOCKER_TEST +from tests.utils.constants import DEDICATED_DOCKER_TEST from azure_functions_worker.utils.common import is_envvar_true -@unittest.skip("Temporary skip") class TestEventGridFunctions(testutils.WebHostTestCase): @classmethod @@ -93,8 +92,7 @@ def test_eventgrid_trigger(self): else: break - @unittest.skipIf(is_envvar_true(DEDICATED_DOCKER_TEST) - or is_envvar_true(CONSUMPTION_DOCKER_TEST), + @unittest.skipIf(is_envvar_true(DEDICATED_DOCKER_TEST), 'EventGrid connection string not available in docker tests') def test_eventgrid_output_binding(self): """test event_grid output binding diff --git a/workers/tests/endtoend/test_http_v2.py b/workers/tests/endtoend/test_http_v2.py index 4b2378b9b..7780232c1 100644 --- a/workers/tests/endtoend/test_http_v2.py +++ b/workers/tests/endtoend/test_http_v2.py @@ -8,7 +8,7 @@ import requests from tests.utils import testutils -from tests.utils.constants import CONSUMPTION_DOCKER_TEST, DEDICATED_DOCKER_TEST +from tests.utils.constants import DEDICATED_DOCKER_TEST # This app setting is only present for Python < 3.13 from azure_functions_worker.constants import PYTHON_ENABLE_INIT_INDEXING @@ -21,8 +21,7 @@ REQUEST_TIMEOUT_SEC = 5 -@unittest.skipIf(is_envvar_true(DEDICATED_DOCKER_TEST) - or is_envvar_true(CONSUMPTION_DOCKER_TEST), +@unittest.skipIf(is_envvar_true(DEDICATED_DOCKER_TEST), "Tests are flaky when running on Docker") @unittest.skipIf(sys.version_info.minor < 8, "HTTPv2" "is only supported for 3.8+.") @@ -197,8 +196,7 @@ def send_request(): self.assertEqual(content, complete_data) -@unittest.skipIf(is_envvar_true(DEDICATED_DOCKER_TEST) - or is_envvar_true(CONSUMPTION_DOCKER_TEST), +@unittest.skipIf(is_envvar_true(DEDICATED_DOCKER_TEST), "Tests are flaky when running on Docker") @unittest.skipIf(sys.version_info.minor >= 13, "App Setting is not needed for 3.13+") diff --git a/workers/tests/endtoend/test_warmup_functions.py b/workers/tests/endtoend/test_warmup_functions.py index b33eee26f..f284af979 100644 --- a/workers/tests/endtoend/test_warmup_functions.py +++ b/workers/tests/endtoend/test_warmup_functions.py @@ -5,13 +5,12 @@ from unittest import skipIf from tests.utils import testutils -from tests.utils.constants import CONSUMPTION_DOCKER_TEST, DEDICATED_DOCKER_TEST +from tests.utils.constants import DEDICATED_DOCKER_TEST from azure_functions_worker.utils.common import is_envvar_true -@skipIf(is_envvar_true(DEDICATED_DOCKER_TEST) - or is_envvar_true(CONSUMPTION_DOCKER_TEST), +@skipIf(is_envvar_true(DEDICATED_DOCKER_TEST), "Docker tests cannot call admin functions") class TestWarmupFunctions(testutils.WebHostTestCase): """Test the Warmup Trigger in the local webhost. @@ -36,8 +35,7 @@ def check_log_warmup(self, host_out: typing.List[str]): self.assertEqual(host_out.count("Function App instance is warm"), 1) -@skipIf(is_envvar_true(DEDICATED_DOCKER_TEST) - or is_envvar_true(CONSUMPTION_DOCKER_TEST), +@skipIf(is_envvar_true(DEDICATED_DOCKER_TEST), "Docker tests cannot call admin functions") class TestWarmupFunctionsStein(TestWarmupFunctions): diff --git a/workers/tests/endtoend/test_worker_process_count_functions.py b/workers/tests/endtoend/test_worker_process_count_functions.py index 44abcd2e2..54957fb5a 100644 --- a/workers/tests/endtoend/test_worker_process_count_functions.py +++ b/workers/tests/endtoend/test_worker_process_count_functions.py @@ -8,11 +8,10 @@ from tests.utils import testutils from azure_functions_worker.utils.common import is_envvar_true -from tests.utils.constants import CONSUMPTION_DOCKER_TEST, DEDICATED_DOCKER_TEST +from tests.utils.constants import DEDICATED_DOCKER_TEST -@skipIf(is_envvar_true(DEDICATED_DOCKER_TEST) - or is_envvar_true(CONSUMPTION_DOCKER_TEST), +@skipIf(is_envvar_true(DEDICATED_DOCKER_TEST), "Tests are flaky when running on Docker") class TestWorkerProcessCount(testutils.WebHostTestCase): """Test the Http Trigger with setting up the python worker process count @@ -70,8 +69,7 @@ def http_req(res_num): self.assertTrue(time_diff_in_seconds < 1) -@skipIf(is_envvar_true(DEDICATED_DOCKER_TEST) - or is_envvar_true(CONSUMPTION_DOCKER_TEST), +@skipIf(is_envvar_true(DEDICATED_DOCKER_TEST), "Tests are flaky when running on Docker") class TestWorkerProcessCountStein(TestWorkerProcessCount): @classmethod @@ -80,8 +78,7 @@ def get_script_dir(cls): 'http_functions_stein' -@skipIf(is_envvar_true(DEDICATED_DOCKER_TEST) - or is_envvar_true(CONSUMPTION_DOCKER_TEST), +@skipIf(is_envvar_true(DEDICATED_DOCKER_TEST), "Tests are flaky when running on Docker") class TestWorkerProcessCountWithBlueprintStein(TestWorkerProcessCount): @classmethod @@ -90,8 +87,7 @@ def get_script_dir(cls): 'functions_in_blueprint_only' -@skipIf(is_envvar_true(DEDICATED_DOCKER_TEST) - or is_envvar_true(CONSUMPTION_DOCKER_TEST), +@skipIf(is_envvar_true(DEDICATED_DOCKER_TEST), "Tests are flaky when running on Docker") class TestWorkerProcessCountWithBlueprintDiffDirStein(TestWorkerProcessCount): @classmethod diff --git a/workers/tests/unittests/test_shared_memory_manager.py b/workers/tests/unittests/test_shared_memory_manager.py index ca3cb6088..4cfb03aa9 100644 --- a/workers/tests/unittests/test_shared_memory_manager.py +++ b/workers/tests/unittests/test_shared_memory_manager.py @@ -191,12 +191,13 @@ def test_large_invalid_bytes_input_support(self): be transfered over shared memory. The input is bytes of larger than the allowed size. """ + class _LargeBytes(bytes): + """Stub that reports a 2GB+ length without allocating real memory.""" + def __len__(self): + return consts.MAX_BYTES_FOR_SHARED_MEM_TRANSFER + 10 + manager = SharedMemoryManager() - content_size = consts.MAX_BYTES_FOR_SHARED_MEM_TRANSFER + 10 - # Not using get_random_bytes to avoid slowing down for creating a large - # random input - content = b'x01' * content_size - bytes_datum = bind_meta.Datum(type='bytes', value=content) + bytes_datum = bind_meta.Datum(type='bytes', value=_LargeBytes()) is_supported = manager.is_supported(bytes_datum) self.assertFalse(is_supported) @@ -219,13 +220,16 @@ def test_large_invalid_string_input_support(self): be transfered over shared memory. The input is string of larger than the allowed size. """ + class _LargeString(str): + """Stub that reports a 2GB+ equivalent length without allocating real memory.""" + def __len__(self): + return math.floor( + (consts.MAX_BYTES_FOR_SHARED_MEM_TRANSFER + 10) + / consts.SIZE_OF_CHAR_BYTES + ) + manager = SharedMemoryManager() - content_size = consts.MAX_BYTES_FOR_SHARED_MEM_TRANSFER + 10 - num_chars = math.floor(content_size / consts.SIZE_OF_CHAR_BYTES) - # Not using get_random_string to avoid slowing down for creating a large - # random input - content = 'a' * num_chars - string_datum = bind_meta.Datum(type='string', value=content) + string_datum = bind_meta.Datum(type='string', value=_LargeString()) is_supported = manager.is_supported(string_datum) self.assertFalse(is_supported) diff --git a/workers/tests/utils/constants.py b/workers/tests/utils/constants.py index dfd791264..f78f133d8 100644 --- a/workers/tests/utils/constants.py +++ b/workers/tests/utils/constants.py @@ -78,7 +78,6 @@ ARCHIVE_WEBHOST_LOGS = "ARCHIVE_WEBHOST_LOGS" # CI test constants -CONSUMPTION_DOCKER_TEST = "CONSUMPTION_DOCKER_TEST" DEDICATED_DOCKER_TEST = "DEDICATED_DOCKER_TEST" # Master key used in the webhost Secrets/host.json template; required to call diff --git a/workers/tests/utils/testutils.py b/workers/tests/utils/testutils.py index 4a9dda6d3..638225e9d 100644 --- a/workers/tests/utils/testutils.py +++ b/workers/tests/utils/testutils.py @@ -35,7 +35,6 @@ import requests from tests.utils.constants import ( ARCHIVE_WEBHOST_LOGS, - CONSUMPTION_DOCKER_TEST, DEDICATED_DOCKER_TEST, EXTENSIONS_CSPROJ_TEMPLATE, MASTER_KEY, @@ -47,7 +46,6 @@ ) from tests.utils.testutils_docker import ( DockerConfigs, - WebHostConsumption, WebHostDedicated, ) @@ -145,8 +143,7 @@ class AsyncTestCase(unittest.TestCase, metaclass=AsyncTestCaseMeta): class WebHostTestCaseMeta(type(unittest.TestCase)): def __new__(mcls, name, bases, dct): - if is_envvar_true(DEDICATED_DOCKER_TEST) \ - or is_envvar_true(CONSUMPTION_DOCKER_TEST): + if is_envvar_true(DEDICATED_DOCKER_TEST): return super().__new__(mcls, name, bases, dct) for attrname, attr in dct.items(): @@ -216,13 +213,10 @@ def get_environment_variables(cls): @classmethod def docker_tests_enabled(self) -> (bool, str): """ - Returns True if the environment variables - CONSUMPTION_DOCKER_TEST or DEDICATED_DOCKER_TEST - is enabled else returns False + Returns True if the environment variable + DEDICATED_DOCKER_TEST is enabled else returns False """ - if is_envvar_true(CONSUMPTION_DOCKER_TEST): - return True, CONSUMPTION_DOCKER_TEST - elif is_envvar_true(DEDICATED_DOCKER_TEST): + if is_envvar_true(DEDICATED_DOCKER_TEST): return True, DEDICATED_DOCKER_TEST else: return False, None @@ -243,10 +237,7 @@ def setUpClass(cls): script_path=script_dir, libraries=cls.get_libraries_to_install(), env=cls.get_environment_variables() or {}) - if sku == CONSUMPTION_DOCKER_TEST: - cls.webhost = \ - WebHostConsumption(docker_configs).spawn_container() - elif sku == DEDICATED_DOCKER_TEST: + if sku == DEDICATED_DOCKER_TEST: cls.webhost = \ WebHostDedicated(docker_configs).spawn_container() else: From eb524891b4f017df604c67897d71e0ff3ec67a6e Mon Sep 17 00:00:00 2001 From: Victoria Hall Date: Tue, 7 Jul 2026 16:12:27 -0500 Subject: [PATCH 2/4] lint --- workers/tests/unittests/test_shared_memory_manager.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/workers/tests/unittests/test_shared_memory_manager.py b/workers/tests/unittests/test_shared_memory_manager.py index 4cfb03aa9..66edb2459 100644 --- a/workers/tests/unittests/test_shared_memory_manager.py +++ b/workers/tests/unittests/test_shared_memory_manager.py @@ -221,7 +221,7 @@ def test_large_invalid_string_input_support(self): The input is string of larger than the allowed size. """ class _LargeString(str): - """Stub that reports a 2GB+ equivalent length without allocating real memory.""" + """Stub that reports a 2GB+ length without allocating real memory.""" def __len__(self): return math.floor( (consts.MAX_BYTES_FOR_SHARED_MEM_TRANSFER + 10) From 4b1a7834d6b51a6c99f252fd75b56dedc079affe Mon Sep 17 00:00:00 2001 From: Victoria Hall Date: Wed, 8 Jul 2026 10:16:07 -0500 Subject: [PATCH 3/4] remove WebhostConsumption class --- workers/tests/utils/testutils_docker.py | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/workers/tests/utils/testutils_docker.py b/workers/tests/utils/testutils_docker.py index 05d3545df..fdc200069 100644 --- a/workers/tests/utils/testutils_docker.py +++ b/workers/tests/utils/testutils_docker.py @@ -204,17 +204,6 @@ def create_container(self, image_repo: str, image_url: str, return WebHostProxy(run_process, self._addr) -class WebHostConsumption(WebHostDockerContainerBase): - - def __init__(self, configs: DockerConfigs): - self.configs = configs - - def spawn_container(self): - return self.create_container(_MESH_IMAGE_REPO, - _MESH_IMAGE_URL, - self.configs) - - class WebHostDedicated(WebHostDockerContainerBase): def __init__(self, configs: DockerConfigs): From 1110e5e1f8ee0b41bb7ad2691ffe8c2676e465a8 Mon Sep 17 00:00:00 2001 From: Victoria Hall Date: Wed, 8 Jul 2026 11:21:52 -0500 Subject: [PATCH 4/4] updating variables --- eng/templates/official/jobs/ci-e2e-tests.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/eng/templates/official/jobs/ci-e2e-tests.yml b/eng/templates/official/jobs/ci-e2e-tests.yml index f63d8f88c..23a6480b4 100644 --- a/eng/templates/official/jobs/ci-e2e-tests.yml +++ b/eng/templates/official/jobs/ci-e2e-tests.yml @@ -39,16 +39,16 @@ jobs: EVENTGRID_CONNECTION: $(LinuxEventGridConnectionKeyString312) Python313: PYTHON_VERSION: '3.13' - STORAGE_CONNECTION: $(LinuxStorageConnectionString36) - SQL_CONNECTION: $(LinuxSqlConnectionString37) - EVENTGRID_URI: $(LinuxEventGridTopicUriString36) - EVENTGRID_CONNECTION: $(LinuxEventGridConnectionKeyString36) - Python314: - PYTHON_VERSION: '3.14' STORAGE_CONNECTION: $(LinuxStorageConnectionString37) SQL_CONNECTION: $(LinuxSqlConnectionString37) EVENTGRID_URI: $(LinuxEventGridTopicUriString37) EVENTGRID_CONNECTION: $(LinuxEventGridConnectionKeyString37) + Python314: + PYTHON_VERSION: '3.14' + STORAGE_CONNECTION: $(LinuxStorageConnectionString38) + SQL_CONNECTION: $(LinuxSqlConnectionString38) + EVENTGRID_URI: $(LinuxEventGridTopicUriString38) + EVENTGRID_CONNECTION: $(LinuxEventGridConnectionKeyString38) steps: - bash: | echo "Disk space before cleanup:"