From cfa30855b26ad4aba81ce7750da9c7524bbd9f68 Mon Sep 17 00:00:00 2001 From: Doug Patti Date: Fri, 2 Apr 2021 16:28:27 -0400 Subject: [PATCH] add test for queue mechanics This tests a specific situation where multiple requests are queued, but the server wants to close the connection after the first. --- lib_test/test_server_connection.ml | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/lib_test/test_server_connection.ml b/lib_test/test_server_connection.ml index c5e9a52d..79dd2684 100644 --- a/lib_test/test_server_connection.ml +++ b/lib_test/test_server_connection.ml @@ -836,6 +836,23 @@ let test_multiple_async_requests_in_single_read () = reader_ready t; ;; +let test_multiple_requests_in_single_read_with_close () = + let reqs_handled = ref 0 in + let t = + create (fun reqd -> + reqs_handled := !reqs_handled + 1; + let response = Response.create `OK ~headers:Headers.connection_close in + Reqd.respond_with_string reqd response "") + in + let reqs = + request_to_string (Request.create `GET "/") ^ + request_to_string (Request.create `GET "/") + in + read_string t reqs; + reader_closed t; + Alcotest.(check int) "fired handler of first requests" 1 !reqs_handled +;; + let test_parse_failure_after_checkpoint () = let error_queue = ref None in let error_handler ?request:_ error _start_response = @@ -905,6 +922,7 @@ let tests = ; "bad request", `Quick, test_bad_request ; "multiple requests in single read", `Quick, test_multiple_requests_in_single_read ; "multiple async requests in single read", `Quick, test_multiple_async_requests_in_single_read + ; "multiple requests with connection close", `Quick, test_multiple_requests_in_single_read_with_close ; "parse failure after checkpoint", `Quick, test_parse_failure_after_checkpoint ; "response finished before body read", `Quick, test_response_finished_before_body_read ]