t5559: fix test failures with LIB_HTTPD_SSL

One test needs to be tweaked in order for t5559 to pass with SSL/TLS set
up. When we make our initial clone, we check that the curl trace of
requests is what we expected. But we need to fix two things:

  - along with ignoring "data" lines from the trace, we need to ignore
    "SSL data" lines

  - when TLS is used, the server is able to tell the client (via ALPN)
    that it supports HTTP/2 before the first HTTP request is made. So
    rather than request an upgrade using an HTTP header, it can just
    speak HTTP/2 immediately

With this patch, running:

  LIB_HTTPD_SSL=1 ./t5559-http-fetch-smart-http2.sh

works, whereas it did not before.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Jeff King 2023-02-23 06:07:29 -05:00 committed by Junio C Hamano
parent 3c14419c6b
commit 86190028a8

View File

@ -33,8 +33,19 @@ test_expect_success 'create http-accessible bare repository' '
setup_askpass_helper
test_expect_success 'clone http repository' '
if test_have_prereq HTTP2 && test "$HTTPD_PROTO" = "https"
then
# ALPN lets us immediately use HTTP/2; likewise, POSTs with
# bodies can use it because they do not need to upgrade
INITIAL_PROTO=HTTP/2
else
# either we are not using HTTP/2, or the initial
# request is sent via HTTP/1.1 and asks for upgrade
INITIAL_PROTO=HTTP/1.1
fi &&
cat >exp.raw <<-EOF &&
> GET /smart/repo.git/info/refs?service=git-upload-pack HTTP/1.1
> GET /smart/repo.git/info/refs?service=git-upload-pack $INITIAL_PROTO
> accept: */*
> accept-encoding: ENCODINGS
> accept-language: ko-KR, *;q=0.9
@ -44,25 +55,25 @@ test_expect_success 'clone http repository' '
< pragma: no-cache
< cache-control: no-cache, max-age=0, must-revalidate
< content-type: application/x-git-upload-pack-advertisement
> POST /smart/repo.git/git-upload-pack HTTP/1.1
> POST /smart/repo.git/git-upload-pack $INITIAL_PROTO
> accept-encoding: ENCODINGS
> content-type: application/x-git-upload-pack-request
> accept: application/x-git-upload-pack-result
> accept-language: ko-KR, *;q=0.9
{V2} > git-protocol: version=2
> content-length: xxx
< HTTP/1.1 200 OK
< $INITIAL_PROTO 200 OK
< pragma: no-cache
< cache-control: no-cache, max-age=0, must-revalidate
< content-type: application/x-git-upload-pack-result
{V2} > POST /smart/repo.git/git-upload-pack HTTP/1.1
{V2} > POST /smart/repo.git/git-upload-pack $INITIAL_PROTO
{V2} > accept-encoding: ENCODINGS
{V2} > content-type: application/x-git-upload-pack-request
{V2} > accept: application/x-git-upload-pack-result
{V2} > accept-language: ko-KR, *;q=0.9
{V2} > git-protocol: version=2
{V2} > content-length: xxx
{V2} < HTTP/1.1 200 OK
{V2} < $INITIAL_PROTO 200 OK
{V2} < pragma: no-cache
{V2} < cache-control: no-cache, max-age=0, must-revalidate
{V2} < content-type: application/x-git-upload-pack-result
@ -96,6 +107,8 @@ test_expect_success 'clone http repository' '
s/= Recv header://
/^<= Recv data/d
/^=> Send data/d
/^<= Recv SSL data/d
/^=> Send SSL data/d
/^$/d
/^< $/d