Skip to content

Commit 347b968

Browse files
committed
gh-135056: Remove test_extra_response_headers_concurrent_requests
1 parent 597b973 commit 347b968

1 file changed

Lines changed: 1 addition & 77 deletions

File tree

Lib/test/test_httpservers.py

Lines changed: 1 addition & 77 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
"""
66

77
from http.server import BaseHTTPRequestHandler, HTTPServer, HTTPSServer, \
8-
SimpleHTTPRequestHandler, ThreadingHTTPServer
8+
SimpleHTTPRequestHandler
99
from http import server, HTTPStatus
1010

1111
import contextlib
@@ -965,82 +965,6 @@ def test_multiple_requests_dont_duplicate_extra_response_headers(self):
965965
self.assertEqual(response.status, 200)
966966
self.assertEqual(response.getheader("x-test"), 'test-value')
967967

968-
def test_extra_response_headers_concurrent_requests(self):
969-
N_THREADS = 8
970-
971-
with mock.patch.object(
972-
self.request_handler,
973-
"extra_response_headers",
974-
[("x-test", "test-value")],
975-
):
976-
threaded_server = ThreadingHTTPServer(
977-
("localhost", 0), self.request_handler
978-
)
979-
host, port = threaded_server.socket.getsockname()
980-
server_thread = threading.Thread(
981-
target=threaded_server.serve_forever, args=(0.05,), daemon=True
982-
)
983-
# Clean up the server thread and server resources after the test,
984-
# with a timeout to prevent hanging, even if the finally block fails.
985-
self.addCleanup(server_thread.join, support.SHORT_TIMEOUT)
986-
self.addCleanup(threaded_server.server_close)
987-
self.addCleanup(threaded_server.shutdown)
988-
server_thread.start()
989-
results = []
990-
errors = []
991-
lock = threading.Lock()
992-
993-
def make_request():
994-
try:
995-
conn = http.client.HTTPConnection(host, port, timeout=15)
996-
conn.request("GET", self.base_url + "/")
997-
resp = conn.getresponse()
998-
resp.read()
999-
with lock:
1000-
results.append((resp.status, resp.getheaders()))
1001-
conn.close()
1002-
except Exception as e:
1003-
# Catch exceptions in child threads and save them.
1004-
with lock:
1005-
errors.append(e)
1006-
1007-
try:
1008-
threads = [
1009-
threading.Thread(target=make_request)
1010-
for _ in range(N_THREADS)
1011-
]
1012-
for t in threads:
1013-
t.start()
1014-
for t in threads:
1015-
t.join(timeout=15)
1016-
finally:
1017-
threaded_server.shutdown()
1018-
threaded_server.server_close()
1019-
server_thread.join(timeout=support.SHORT_TIMEOUT)
1020-
1021-
# Only raise errors in the main thread, just the first one.
1022-
if errors:
1023-
raise errors[0]
1024-
1025-
self.assertEqual(len(results), N_THREADS)
1026-
for status, headers in results:
1027-
self.assertEqual(status, 200)
1028-
# Server, Date, Content-type, Content-Length, x-test
1029-
self.assertEqual(len(headers), 5)
1030-
header_map = {k.lower(): v for k, v in headers}
1031-
self.assertIn("server", header_map)
1032-
self.assertIn("date", header_map)
1033-
self.assertTrue(
1034-
header_map["content-type"].startswith("text/html")
1035-
)
1036-
self.assertGreater(int(header_map["content-length"]), 0)
1037-
# x-test must appear exactly once, not duplicated
1038-
x_test_values = [
1039-
v for k, v in headers if k.lower() == "x-test"
1040-
]
1041-
self.assertEqual(x_test_values, ["test-value"])
1042-
1043-
1044968

1045969
class SocketlessRequestHandler(SimpleHTTPRequestHandler):
1046970
def __init__(self, directory=None):

0 commit comments

Comments
 (0)