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

[PATCH 09/20] t5551: handle v2 protocol in upload-pack service test

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

We perform a clone and a fetch, and then check that we saw the expected requests in Apache's access log. In the v2 protocol, there will be one extra request to /git-upload-pack for each operation (since the initial /info/refs probe is just used to upgrade the protocol).

As a result, this test is a noop unless the use of the v0 protocol is forced. Which means that hardly anybody runs it, since you have to do so manually.

Let's update it to handle v2 and run it always. We could do this by just conditionally adding in the extra POST lines. But if we look at the origin of the test in 7da4e2280c (test smart http fetch and push, 2009-10-30), the point is really just to make sure that the smart git-upload-pack service was used at all. So rather than counting up the individual requests, let's just make sure we saw each of the expected types. This is a bit looser, but makes maintenance easier.

Since we're now matching with grep, we can also loosen the HTTP/1.1 match, which allows this test to pass when run with HTTP/2 via t5559. That lets:

  GIT_TEST_PROTOCOL_VERSION=0 ./t5559-http-fetch-smart-http2.sh

run to completion, which previously failed (and of course it works if you use v2, as well).

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
---
 t/t5551-http-fetch-smart.sh | 16 +++-------------
 1 file changed, 3 insertions(+), 13 deletions(-)
diff --git a/t/t5551-http-fetch-smart.sh b/t/t5551-http-fetch-smart.sh
index 9d99cefb92..b912958518 100755
--- a/t/t5551-http-fetch-smart.sh
+++ b/t/t5551-http-fetch-smart.sh
@@ -143,19 +143,9 @@ test_expect_success 'fetch changes via http' '
 '
 
 test_expect_success 'used upload-pack service' '
-	cat >exp <<-\EOF &&
-	GET  /smart/repo.git/info/refs?service=git-upload-pack HTTP/1.1 200
-	POST /smart/repo.git/git-upload-pack HTTP/1.1 200
-	GET  /smart/repo.git/info/refs?service=git-upload-pack HTTP/1.1 200
-	POST /smart/repo.git/git-upload-pack HTTP/1.1 200
-	EOF
-
-	# NEEDSWORK: If the overspecification of the expected result is reduced, we
-	# might be able to run this test in all protocol versions.
-	if test "$GIT_TEST_PROTOCOL_VERSION" = 0
-	then
-		check_access_log exp
-	fi
+	strip_access_log >log &&
+	grep "GET  /smart/repo.git/info/refs?service=git-upload-pack HTTP/[0-9.]* 200" log &&
+	grep "POST /smart/repo.git/git-upload-pack HTTP/[0-9.]* 200" log
 '
 
 test_expect_success 'follow redirects (301)' '
-- 
2.40.0-rc0-32-ga0f05f6840
Previous: Junio C HamanoNext: Junio C Hamano
Message 9 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.