From b401c9246e879ae15f710be8a4fea38bcecd960f Mon Sep 17 00:00:00 2001 From: Matt Davis <6775756+nitzmahone@users.noreply.github.com> Date: Wed, 22 Apr 2026 11:06:48 -0700 Subject: [PATCH] Ensure ansible-galaxy test server shutdown (#86880) * Accidental reuse on test retry usually timed out prematurely --- test/integration/targets/ansible-galaxy/cleanup.yml | 4 ++++ .../targets/ansible-galaxy/files/testserver.py | 12 +++++++++++- test/integration/targets/ansible-galaxy/setup.yml | 8 +++++++- 3 files changed, 22 insertions(+), 2 deletions(-) diff --git a/test/integration/targets/ansible-galaxy/cleanup.yml b/test/integration/targets/ansible-galaxy/cleanup.yml index e80eeefbae8..c41a5cef7d8 100644 --- a/test/integration/targets/ansible-galaxy/cleanup.yml +++ b/test/integration/targets/ansible-galaxy/cleanup.yml @@ -3,6 +3,7 @@ git_install: '{{ lookup("file", lookup("env", "OUTPUT_DIR") + "/git_install.json") | from_json }}' openssl_install: '{{ lookup("file", lookup("env", "OUTPUT_DIR") + "/openssl_install.json") | from_json }}' ws_dir: '{{ lookup("file", lookup("env", "OUTPUT_DIR") + "/ws_dir.json") | from_json }}' + testserver_pid: '{{ lookup("file", ws_dir ~ "/testserver.json") | from_json }}' tasks: - name: cleanup include_tasks: "{{ cleanup_filename }}" @@ -12,6 +13,9 @@ loop_control: loop_var: cleanup_filename + - name: stop testserver + raw: kill -2 {{ testserver_pid }} + - name: Remove default collection directories file: path: "{{ item }}" diff --git a/test/integration/targets/ansible-galaxy/files/testserver.py b/test/integration/targets/ansible-galaxy/files/testserver.py index 077ae138c37..e755ce07f3a 100644 --- a/test/integration/targets/ansible-galaxy/files/testserver.py +++ b/test/integration/targets/ansible-galaxy/files/testserver.py @@ -1,9 +1,12 @@ from __future__ import annotations import http.server +import os +import pathlib import socketserver import ssl + if __name__ == '__main__': Handler = http.server.SimpleHTTPRequestHandler context = ssl.SSLContext() @@ -11,4 +14,11 @@ if __name__ == '__main__': httpd = socketserver.TCPServer(("", 4443), Handler) httpd.socket = context.wrap_socket(httpd.socket, server_side=True) - httpd.serve_forever() + pf = pathlib.Path('./testserver.json') + + try: + pf.write_text(str(os.getpid())) + httpd.serve_forever() + except BaseException: + pf.unlink(missing_ok=True) + raise diff --git a/test/integration/targets/ansible-galaxy/setup.yml b/test/integration/targets/ansible-galaxy/setup.yml index b4fb6d3b60c..1d9bbbddfed 100644 --- a/test/integration/targets/ansible-galaxy/setup.yml +++ b/test/integration/targets/ansible-galaxy/setup.yml @@ -42,7 +42,13 @@ async: 120 # this test set can take ~1m to run on FreeBSD (via Shippable) poll: 0 - - wait_for: port=4443 + - wait_for: + path: '{{ ws_dir }}/testserver.json' + timeout: 10 + + - wait_for: + port: 4443 + timeout: 10 - name: save results copy: