Avoid reverse DNS delays in CI TLS fixture

This commit is contained in:
2026-09-12 15:30:50 +03:00
parent d886a8a523
commit f8de824752
+14 -3
View File
@@ -6,6 +6,7 @@ import ipaddress
import json
import pathlib
import socket
import socketserver
import ssl
import struct
import subprocess
@@ -36,6 +37,8 @@ state = json.loads((root / "MusicBridgeTests/state-v1.json").read_text())
class Handler(http.server.BaseHTTPRequestHandler):
protocol_version = "HTTP/1.1"
def do_GET(self):
if self.path == "/v1/events":
accept = base64.b64encode(hashlib.sha1(
@@ -58,17 +61,25 @@ class Handler(http.server.BaseHTTPRequestHandler):
fixtures = {}
class Server(http.server.ThreadingHTTPServer):
def server_bind(self):
# HTTPServer's reverse DNS lookup can stall on hosted runner addresses.
socketserver.TCPServer.server_bind(self)
self.server_name, self.server_port = self.server_address
for name, days in (("valid", "1825"), ("expired", "-1")):
print(f"Generating {name} certificate for {address}", flush=True)
key, csr, cert = (work / (name + suffix) for suffix in (".key", ".csr", ".pem"))
subprocess.run(["openssl", "req", "-new", "-newkey", "rsa:2048", "-nodes", "-config", str(config),
"-keyout", str(key), "-out", str(csr)], check=True, capture_output=True)
"-keyout", str(key), "-out", str(csr)], check=True, capture_output=True, timeout=15)
subprocess.run(["openssl", "x509", "-req", "-in", str(csr), "-signkey", str(key), "-sha256",
"-days", days, "-extfile", str(config), "-extensions", "ext", "-out", str(cert)],
check=True, capture_output=True)
check=True, capture_output=True, timeout=15)
context = ssl.SSLContext(ssl.PROTOCOL_TLS_SERVER)
context.minimum_version = ssl.TLSVersion.TLSv1_2
context.load_cert_chain(cert, key)
server = http.server.ThreadingHTTPServer((address, 0), Handler)
server = Server((address, 0), Handler)
server.socket = context.wrap_socket(server.socket, server_side=True)
threading.Thread(target=server.serve_forever, daemon=True).start()
fixtures[name] = {"endpoint": f"https://{address}:{server.server_port}",