| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
1 parent 597b973 commit 347b968
1 file changed
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -5,7 +5,7 @@ | |||
| 5 | 5 | """ | |
| 6 | 6 | ||
| 7 | 7 | from http.server import BaseHTTPRequestHandler, HTTPServer, HTTPSServer, \ | |
| 8 | - SimpleHTTPRequestHandler, ThreadingHTTPServer | ||
| 8 | + SimpleHTTPRequestHandler | ||
| 9 | 9 | from http import server, HTTPStatus | |
| 10 | 10 | ||
| 11 | 11 | import contextlib | |
@@ -965,82 +965,6 @@ def test_multiple_requests_dont_duplicate_extra_response_headers(self): | |||
| 965 | 965 | self.assertEqual(response.status, 200) | |
| 966 | 966 | self.assertEqual(response.getheader("x-test"), 'test-value') | |
| 967 | 967 | ||
| 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 | - | ||
| 1044 | 968 | ||
| 1045 | 969 | class SocketlessRequestHandler(SimpleHTTPRequestHandler): | |
| 1046 | 970 | def __init__(self, directory=None): | |
| Back | FazBrowse Home | New Git URL |
0 commit comments