git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH 06/20] t5551: handle HTTP/2 when checking curl trace

From
Junio C Hamano <gitster@pobox.com>
Date
Feb 28, 2023, 23:38 UTC
Message-ID
<20230228233913.684853-6-gitster@pobox.com>
In-Reply-To
<20230228233913.684853-1-gitster@pobox.com>
From: Jeff King <peff@peff.net>

We check that the curl trace of a clone has the lines we expect, but this won't work when we run the test under t5559, because a few details are different under HTTP/2 (but nobody noticed because it only happens when you manually set GIT_TEST_PROTOCOL_VERSION to "0").

We can handle both HTTP protocols with a few tweaks:
  - we'll drop the HTTP "101 Switching Protocols" response, as well as
    various protocol upgrade headers. These details aren't interesting
    to us. We just want to make sure the correct protocol was used (and
    we do in the main request/response lines).
  - successful HTTP/2 responses just say "200" and not "200 OK"; we can
    normalize these
  - replace HTTP/1.1 with a variable in the request/response lines. We
    can use the existing $HTTP_PROTO for this, as it's already set to
    "HTTP/2" when appropriate. We do need to tweak the fallback value to
    "HTTP/1.1" to match what curl will write (prior to this patch, the
    fallback value didn't matter at all; we only checked if it was the
    literal string "HTTP/2").

Note that several lines still expect HTTP/1.1 unconditionally. The first request does so because the client requests an upgrade during the request. The POST request and response do so because you can't do an upgrade if there is a request body. (This will all be different if we trigger HTTP/2 via ALPN, but the tests aren't yet capable of that).

This is enough to let:
  GIT_TEST_PROTOCOL_VERSION=0 ./t5559-http-fetch-smart-http2.sh

pass the "clone http repository" test (but there are some other failures later on).

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
---
 t/t5551-http-fetch-smart.sh | 14 +++++++++++---
 1 file changed, 11 insertions(+), 3 deletions(-)
diff --git a/t/t5551-http-fetch-smart.sh b/t/t5551-http-fetch-smart.sh
index a81f852cbf..716c9dbb69 100755
--- a/t/t5551-http-fetch-smart.sh
+++ b/t/t5551-http-fetch-smart.sh
@@ -1,6 +1,6 @@
 #!/bin/sh
 
-: ${HTTP_PROTO:=HTTP}
+: ${HTTP_PROTO:=HTTP/1.1}
 test_description="test smart fetching over http via http-backend ($HTTP_PROTO)"
 GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
 export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
@@ -33,13 +33,13 @@ test_expect_success 'create http-accessible bare repository' '
 setup_askpass_helper
 
 test_expect_success 'clone http repository' '
-	cat >exp <<-\EOF &&
+	cat >exp <<-EOF &&
 	> GET /smart/repo.git/info/refs?service=git-upload-pack HTTP/1.1
 	> accept: */*
 	> accept-encoding: ENCODINGS
 	> accept-language: ko-KR, *;q=0.9
 	> pragma: no-cache
-	< HTTP/1.1 200 OK
+	< $HTTP_PROTO 200 OK
 	< pragma: no-cache
 	< cache-control: no-cache, max-age=0, must-revalidate
 	< content-type: application/x-git-upload-pack-advertisement
@@ -83,6 +83,14 @@ test_expect_success 'clone http repository' '
 			s/^/> /
 		}
 
+		/^< HTTP/ {
+			s/200$/200 OK/
+		}
+		/^< HTTP\\/1.1 101/d
+		/^[><] connection: /d
+		/^[><] upgrade: /d
+		/^> http2-settings: /d
+
 		/^> user-agent: /d
 		/^> host: /d
 		/^> POST /,$ {
-- 
2.40.0-rc0-32-ga0f05f6840
Previous: Junio C HamanoNext: Junio C Hamano
Message 6 of 10 in “t5541: run "used receive-pack service" test earlier”
  1. 01/20 t5541: run "used receive-pack service" test earlierJunio C Hamano, Feb 28, 2023
  2. 02/20 t5541: stop marking "used receive-pack service" test as v0 onlyJunio C Hamano, Feb 28, 2023
  3. 03/20 t5541: simplify and move "no empty path components" testJunio C Hamano, Feb 28, 2023
  4. 04/20 t5551: drop redundant grep for Accept-LanguageJunio C Hamano, Feb 28, 2023
  5. 05/20 t5551: lower-case headers in expected curl traceJunio C Hamano, Feb 28, 2023
  6. 06/20 t5551: handle HTTP/2 when checking curl traceJunio C Hamano, Feb 28, 2023
  7. 07/20 t5551: stop forcing clone to run with v0 protocolJunio C Hamano, Feb 28, 2023
  8. 08/20 t5551: handle v2 protocol when checking curl traceJunio C Hamano, Feb 28, 2023
  9. 09/20 t5551: handle v2 protocol in upload-pack service testJunio C Hamano, Feb 28, 2023
  10. Junio C HamanoFeb 28, 2023

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.