From 668cb445f58d0866de10d45140754a68f27f9229 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?K=C3=A9vin=20Dunglas?= Date: Tue, 21 Feb 2023 21:14:51 +0100 Subject: [PATCH 1/9] tests(ext-curl): fix HTTP/2 Server Push tests --- .github/actions/setup-caddy/action.yml | 13 ++++++ .github/workflows/push.yml | 6 +++ ext/curl/tests/Caddyfile | 11 +++++ ext/curl/tests/bug76675.phpt | 9 ++-- ext/curl/tests/bug77535.phpt | 9 ++-- ext/curl/tests/curl_pushfunction.phpt | 61 ++++++++++++++++++++++++++ 6 files changed, 97 insertions(+), 12 deletions(-) create mode 100644 .github/actions/setup-caddy/action.yml create mode 100644 ext/curl/tests/Caddyfile create mode 100644 ext/curl/tests/curl_pushfunction.phpt diff --git a/.github/actions/setup-caddy/action.yml b/.github/actions/setup-caddy/action.yml new file mode 100644 index 0000000000000..a24a231199fc8 --- /dev/null +++ b/.github/actions/setup-caddy/action.yml @@ -0,0 +1,13 @@ +name: Setup Caddy server +runs: + using: composite + steps: + - shell: bash + run: | + sudo apt-get install -y debian-keyring debian-archive-keyring apt-transport-https + curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg + curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list + sudo apt-get update + sudo apt-get install -y caddy + + sudo caddy start --config ext/curl/tests/Caddyfile diff --git a/.github/workflows/push.yml b/.github/workflows/push.yml index 4e92d3ebdb5f8..6891f84ce580a 100644 --- a/.github/workflows/push.yml +++ b/.github/workflows/push.yml @@ -42,6 +42,8 @@ jobs: uses: ./.github/actions/setup-mssql - name: Create Oracle container uses: ./.github/actions/setup-oracle + - name: Setup Caddy server + uses: ./.github/actions/setup-caddy - name: apt uses: ./.github/actions/apt-x64 - name: ccache @@ -66,6 +68,8 @@ jobs: uses: ./.github/actions/setup-x64 - name: Test uses: ./.github/actions/test-linux + env: + RUN_CADDY_TESTS: "1" - name: Test Tracing JIT uses: ./.github/actions/test-linux with: @@ -73,6 +77,8 @@ jobs: -d zend_extension=opcache.so -d opcache.enable_cli=1 -d opcache.jit_buffer_size=16M + env: + RUN_CADDY_TESTS: "1" - name: Verify generated files are up to date uses: ./.github/actions/verify-generated-files LINUX_X32: diff --git a/ext/curl/tests/Caddyfile b/ext/curl/tests/Caddyfile new file mode 100644 index 0000000000000..aa55445445883 --- /dev/null +++ b/ext/curl/tests/Caddyfile @@ -0,0 +1,11 @@ +{ + admin off + auto_https disable_redirects +} + +localhost + +# HTTP/2 Server Push +respond /serverpush "main response" +respond /serverpush/pushed "pushed response" +push /serverpush /serverpush/pushed diff --git a/ext/curl/tests/bug76675.phpt b/ext/curl/tests/bug76675.phpt index 02cdfe4d5710f..8881f126995eb 100644 --- a/ext/curl/tests/bug76675.phpt +++ b/ext/curl/tests/bug76675.phpt @@ -2,18 +2,15 @@ Bug #76675 (Segfault with H2 server push write/writeheader handlers) --EXTENSIONS-- curl ---XFAIL-- -http2.golang.org/serverpush is gone --SKIPIF-- --FILE-- --FILE-- curl, CURLOPT_HEADER, false); curl_setopt($this->curl, CURLOPT_RETURNTRANSFER, false); curl_setopt($this->curl, CURLOPT_FAILONERROR, false); - curl_setopt($this->curl, CURLOPT_URL, 'https://http2.golang.org/serverpush'); + curl_setopt($this->curl, CURLOPT_URL, 'https://localhost/serverpush'); curl_setopt($this->curl, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_2_0); curl_setopt($this->curl, CURLOPT_HEADERFUNCTION, function ($ch, $data) { return \strlen($data); diff --git a/ext/curl/tests/curl_pushfunction.phpt b/ext/curl/tests/curl_pushfunction.phpt new file mode 100644 index 0000000000000..948ffea7bfee4 --- /dev/null +++ b/ext/curl/tests/curl_pushfunction.phpt @@ -0,0 +1,61 @@ +--TEST-- +Test CURLMOPT_PUSHFUNCTION +--EXTENSIONS-- +curl +--SKIPIF-- + +--FILE-- + main response + [1] => pushed response +) From 348f2f386a086c6c10840ec2216edd8ab1a7fd81 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?K=C3=A9vin=20Dunglas?= Date: Fri, 24 Feb 2023 16:46:58 +0100 Subject: [PATCH 2/9] wip --- .github/workflows/push.yml | 2 -- ext/curl/tests/bug76675.phpt | 6 +++++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/.github/workflows/push.yml b/.github/workflows/push.yml index 6891f84ce580a..77b3a06ef5745 100644 --- a/.github/workflows/push.yml +++ b/.github/workflows/push.yml @@ -68,8 +68,6 @@ jobs: uses: ./.github/actions/setup-x64 - name: Test uses: ./.github/actions/test-linux - env: - RUN_CADDY_TESTS: "1" - name: Test Tracing JIT uses: ./.github/actions/test-linux with: diff --git a/ext/curl/tests/bug76675.phpt b/ext/curl/tests/bug76675.phpt index 8881f126995eb..00ab0b58eabd1 100644 --- a/ext/curl/tests/bug76675.phpt +++ b/ext/curl/tests/bug76675.phpt @@ -4,7 +4,11 @@ Bug #76675 (Segfault with H2 server push write/writeheader handlers) curl --SKIPIF-- Date: Fri, 24 Feb 2023 17:42:45 +0100 Subject: [PATCH 3/9] better Caddy install and detection --- .github/actions/setup-caddy/action.yml | 7 +------ ext/curl/tests/bug76675.phpt | 6 +----- ext/curl/tests/bug77535.phpt | 2 +- ext/curl/tests/curl_pushfunction.phpt | 2 +- 4 files changed, 4 insertions(+), 13 deletions(-) diff --git a/.github/actions/setup-caddy/action.yml b/.github/actions/setup-caddy/action.yml index a24a231199fc8..7a7f5f3a6e211 100644 --- a/.github/actions/setup-caddy/action.yml +++ b/.github/actions/setup-caddy/action.yml @@ -4,10 +4,5 @@ runs: steps: - shell: bash run: | - sudo apt-get install -y debian-keyring debian-archive-keyring apt-transport-https - curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg - curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list - sudo apt-get update - sudo apt-get install -y caddy - + sudo curl 'https://caddyserver.com/api/download?os=linux&arch=amd64' > /usr/bin/caddy sudo caddy start --config ext/curl/tests/Caddyfile diff --git a/ext/curl/tests/bug76675.phpt b/ext/curl/tests/bug76675.phpt index 00ab0b58eabd1..f733fb9d29200 100644 --- a/ext/curl/tests/bug76675.phpt +++ b/ext/curl/tests/bug76675.phpt @@ -4,11 +4,7 @@ Bug #76675 (Segfault with H2 server push write/writeheader handlers) curl --SKIPIF-- Date: Sat, 25 Feb 2023 15:43:50 +0100 Subject: [PATCH 4/9] try again --- .github/actions/setup-caddy/action.yml | 4 +++- .github/workflows/push.yml | 2 -- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/actions/setup-caddy/action.yml b/.github/actions/setup-caddy/action.yml index 7a7f5f3a6e211..8c3969bd28248 100644 --- a/.github/actions/setup-caddy/action.yml +++ b/.github/actions/setup-caddy/action.yml @@ -4,5 +4,7 @@ runs: steps: - shell: bash run: | - sudo curl 'https://caddyserver.com/api/download?os=linux&arch=amd64' > /usr/bin/caddy + set -x + sudo curl 'https://caddyserver.com/api/download?os=linux&arch=amd64' -o /usr/bin/caddy + sudo chmod +x /usr/bin/caddy sudo caddy start --config ext/curl/tests/Caddyfile diff --git a/.github/workflows/push.yml b/.github/workflows/push.yml index 77b3a06ef5745..f61340486f189 100644 --- a/.github/workflows/push.yml +++ b/.github/workflows/push.yml @@ -75,8 +75,6 @@ jobs: -d zend_extension=opcache.so -d opcache.enable_cli=1 -d opcache.jit_buffer_size=16M - env: - RUN_CADDY_TESTS: "1" - name: Verify generated files are up to date uses: ./.github/actions/verify-generated-files LINUX_X32: From 9ac253b9cf1cc00f6147870892e646c2f5b26de9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?K=C3=A9vin=20Dunglas?= Date: Sat, 25 Feb 2023 16:00:10 +0100 Subject: [PATCH 5/9] fix --- ext/curl/tests/bug76675.phpt | 2 +- ext/curl/tests/bug77535.phpt | 2 +- ext/curl/tests/curl_pushfunction.phpt | 8 +++++--- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/ext/curl/tests/bug76675.phpt b/ext/curl/tests/bug76675.phpt index f733fb9d29200..c28b6ddd72f7f 100644 --- a/ext/curl/tests/bug76675.phpt +++ b/ext/curl/tests/bug76675.phpt @@ -4,7 +4,7 @@ Bug #76675 (Segfault with H2 server push write/writeheader handlers) curl --SKIPIF-- --FILE-- Date: Mon, 27 Feb 2023 11:33:33 +0100 Subject: [PATCH 6/9] s/needing/needs/ --- ext/curl/tests/bug76675.phpt | 2 +- ext/curl/tests/bug77535.phpt | 2 +- ext/curl/tests/curl_pushfunction.phpt | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/ext/curl/tests/bug76675.phpt b/ext/curl/tests/bug76675.phpt index c28b6ddd72f7f..792dc4403094a 100644 --- a/ext/curl/tests/bug76675.phpt +++ b/ext/curl/tests/bug76675.phpt @@ -5,7 +5,7 @@ curl --SKIPIF-- Date: Wed, 1 Mar 2023 08:27:39 +0100 Subject: [PATCH 7/9] add missing dash --- ext/curl/tests/curl_pushfunction.phpt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ext/curl/tests/curl_pushfunction.phpt b/ext/curl/tests/curl_pushfunction.phpt index a4185887376cf..3bdd6524244dd 100644 --- a/ext/curl/tests/curl_pushfunction.phpt +++ b/ext/curl/tests/curl_pushfunction.phpt @@ -1,6 +1,6 @@ --TEST-- Test CURLMOPT_PUSHFUNCTION --CREDITS-- +--CREDITS-- Davey Shafik Kévin Dunglas --EXTENSIONS-- From b0911ccc42710fbb9d0c5ece76ad9092d7c14766 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?K=C3=A9vin=20Dunglas?= Date: Sat, 11 Mar 2023 00:11:09 +0100 Subject: [PATCH 8/9] better skipif --- ext/curl/tests/Caddyfile | 2 ++ ext/curl/tests/bug76675.phpt | 5 ++--- ext/curl/tests/bug77535.phpt | 5 ++--- ext/curl/tests/curl_pushfunction.phpt | 5 ++--- ext/curl/tests/skipif-nocaddy.inc | 12 ++++++++++++ 5 files changed, 20 insertions(+), 9 deletions(-) create mode 100644 ext/curl/tests/skipif-nocaddy.inc diff --git a/ext/curl/tests/Caddyfile b/ext/curl/tests/Caddyfile index aa55445445883..1c57c9af897ae 100644 --- a/ext/curl/tests/Caddyfile +++ b/ext/curl/tests/Caddyfile @@ -5,6 +5,8 @@ localhost +respond / "Caddy is up and running" + # HTTP/2 Server Push respond /serverpush "main response" respond /serverpush/pushed "pushed response" diff --git a/ext/curl/tests/bug76675.phpt b/ext/curl/tests/bug76675.phpt index 792dc4403094a..c45e7339aa95a 100644 --- a/ext/curl/tests/bug76675.phpt +++ b/ext/curl/tests/bug76675.phpt @@ -4,9 +4,8 @@ Bug #76675 (Segfault with H2 server push write/writeheader handlers) curl --SKIPIF-- Date: Mon, 3 Jul 2023 12:19:52 +0200 Subject: [PATCH 9/9] skip tests if libcurl < 8.1.0 --- ext/curl/tests/bug76675.phpt | 4 ++-- ext/curl/tests/bug77535.phpt | 4 ++-- ext/curl/tests/curl_pushfunction.phpt | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/ext/curl/tests/bug76675.phpt b/ext/curl/tests/bug76675.phpt index c45e7339aa95a..af624f462a69d 100644 --- a/ext/curl/tests/bug76675.phpt +++ b/ext/curl/tests/bug76675.phpt @@ -7,8 +7,8 @@ curl include 'skipif-nocaddy.inc'; $curl_version = curl_version(); -if ($curl_version['version_number'] < 0x073d00) { - exit("skip: test may crash with curl < 7.61.0"); +if ($curl_version['version_number'] < 0x080100) { + exit("skip: test may crash with curl < 8.1.0"); } ?> --FILE-- diff --git a/ext/curl/tests/bug77535.phpt b/ext/curl/tests/bug77535.phpt index d6834d742b84a..3698c9a51dc9d 100644 --- a/ext/curl/tests/bug77535.phpt +++ b/ext/curl/tests/bug77535.phpt @@ -7,8 +7,8 @@ curl include 'skipif-nocaddy.inc'; $curl_version = curl_version(); -if ($curl_version['version_number'] < 0x073d00) { - exit("skip: test may crash with curl < 7.61.0"); +if ($curl_version['version_number'] < 0x080100) { + exit("skip: test may crash with curl < 8.1.0"); } ?> --FILE-- diff --git a/ext/curl/tests/curl_pushfunction.phpt b/ext/curl/tests/curl_pushfunction.phpt index 85c1648954a13..6ab06cc1bf818 100644 --- a/ext/curl/tests/curl_pushfunction.phpt +++ b/ext/curl/tests/curl_pushfunction.phpt @@ -10,8 +10,8 @@ curl include 'skipif-nocaddy.inc'; $curl_version = curl_version(); -if ($curl_version['version_number'] < 0x073d00) { - exit("skip: test may crash with curl < 7.61.0"); +if ($curl_version['version_number'] < 0x080100) { + exit("skip: test may crash with curl < 8.1.0"); } ?> --FILE--