docs: record verified HTTP2 proxy and rolling drain acceptance

This commit is contained in:
2026-09-23 11:18:25 +08:00
parent b54a303ccd
commit 59bf04a461
10 changed files with 499 additions and 8 deletions

View File

@@ -0,0 +1,42 @@
{
"testedCommit": "b54a303ccdc034cd3062e846c6c6b2c24e55ffaa",
"runnerSha256": "9ef2774b1d19c05f1ae8d9527665dba541561a7c677f9984a24e72d5bddb6ad5",
"startedAt": "2026-09-23T03:13:01.977797+00:00",
"cases": [
{
"case": "wallTimeout",
"status": "passed",
"expectedFailureExitCode": 1,
"runnerError": "Command '['/usr/bin/docker', 'run', '--rm', '--name', 'go-omni-http2-proxy-ba2aaeecdd00-build', '--cpus', '2', '--memory', '2048m', '--memory-swap', '2048m', '--pids-limit', '256', '--log-opt', 'max-size=10m', '--log-opt', 'max-file=1', '-v', '/root/go-omni-validation:/workspace:ro', '-v', '/tmp/goOmniHTTP2Proxyi0b0o9y6:/output', '-w', '/workspace', '-e', 'GOWORK=off', '-e', 'GOMAXPROCS=2', '-e', 'CGO_ENABLED=0', '-e', 'GOPROXY=https://goproxy.cn,direct', 'golang:1.25', 'sh', '-c', 'go version && go vet ./transport/http2 && go test -c -o /output/http2.test ./transport/http2']' timed out after 1.8251966070383787 seconds",
"cleanedContainers": [
"go-omni-http2-proxy-ba2aaeecdd00-build"
],
"preExistingContainersStillRunning": 7,
"remainingValidationContainers": []
},
{
"case": "sigterm",
"status": "passed",
"expectedFailureExitCode": 1,
"runnerError": "KeyboardInterrupt",
"cleanedContainers": [
"go-omni-http2-proxy-6307142e05ee-build"
],
"preExistingContainersStillRunning": 7,
"remainingValidationContainers": []
},
{
"case": "sighup",
"status": "passed",
"expectedFailureExitCode": 1,
"runnerError": "KeyboardInterrupt",
"cleanedContainers": [
"go-omni-http2-proxy-dcf3bd54fbe4-build"
],
"preExistingContainersStillRunning": 7,
"remainingValidationContainers": []
}
],
"status": "passed",
"finishedAt": "2026-09-23T03:13:06.934079+00:00"
}

View File

@@ -0,0 +1,142 @@
{
"status": "passed",
"startedAt": "2026-09-23T03:10:31.408631+00:00",
"testedCommit": "b54a303ccdc034cd3062e846c6c6b2c24e55ffaa",
"workingTreeStatus": "",
"sourceSha256": {
"go.mod": "28d68eb2c0a019cceea884e88ab2335f44ad930e1890e28871638f4b073b4f86",
"go.sum": "d9c2a5d0de94f08bd18a14a9626f9dda559c245d89bf8a689e32acbd2136fb05",
"scripts/verifyHTTP2Proxy.py": "9ef2774b1d19c05f1ae8d9527665dba541561a7c677f9984a24e72d5bddb6ad5",
"transport/http2/admission_test.go": "342a7d02bba508100a207b77246ca92e0fa04dd5f8e4a27091a01866b6750d39",
"transport/http2/flowControl_test.go": "595b2e937cef2142ff6b6386116e338d874d0fe49e63d80f6de2e1268378dba2",
"transport/http2/frameObserver.go": "fcdf431f8269ad9cfd65dd14102ce5c42ac8c4b8b833ed42c4ae15f2a7c7f14c",
"transport/http2/lifecycle_test.go": "370a16de8b20248bb78021ab338b9f62ec51f733f270c0fa92f48b1a3ccb9eae",
"transport/http2/mixedSoak_test.go": "2111737fe0405bc809bf06325573f7356160ae7fcaebcce06dcd94b2d9e7dccd",
"transport/http2/proxy_test.go": "808d0fa7e6c3b0237b1adf4a71a4f30ae2dbc7d1a9d53fab164cda33b15c9d69",
"transport/http2/server.go": "aeecdc3aec42219862d70ec788bef5df332189895555bc5d390849a51bd0fbfb",
"transport/http2/server_test.go": "c4613e77fa885b6362c06c393937c7dcf9a7ffb4a9a32f85e21fc2f741de81a6",
"transport/http2/soak_test.go": "52baa37e37dba497c579b6b55d723bda866ac57676254dc878c511345acc5af2"
},
"repetitions": 3,
"race": false,
"containerLimits": {
"cpus": 2,
"memoryBytes": 2147483648,
"memoryAndSwapBytes": 2147483648,
"pidsLimit": 256
},
"wallTimeoutSeconds": 600,
"imageIds": {
"golang:1.25": "sha256:699337d620559a59b4a2bb298ad59611e535d2ee755a34cf2d2a98f37578dc80",
"nginx:1.30.5-alpine": "sha256:bf3201ab56f23e5954646379c775d511fc466e9f11376d9725361064ad07ed35"
},
"notes": [
"Compiler and integration stages run sequentially; at most one 2-CPU/2-GiB validation container is active.",
"The integration container has network=none, no published ports and a read-only root filesystem. Client, Nginx and origins communicate over loopback inside that container.",
"Both TLS legs validate certificates; invalid upstream CA and hostname must fail before reaching the handler.",
"HTTP/2 is verified independently on both legs. This is a functional integration test, not a throughput benchmark or a live Cloudflare deployment.",
"Single-process Nginx fixture with generated test certificates. Rolling drain switches between old and backup origins; this does not test Nginx master/worker configuration reloads or live Cloudflare routing."
],
"proxyVersions": [
"nginx version: nginx/1.30.5"
],
"results": [
"tlsAndReuse reusedRequests=32 upstreamConnections=1 invalidTrustStatus=502 invalidNameStatus=502 recovered=true",
"timeoutAndCancellation timeoutStatus=504 canceledHandlers=2 recovered=true stats={AcceptedConnections:3 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:0 RSTStreams:0 GoAwayFrames:0 ActiveConnections:1 ActiveRequests:0}",
"goAwayAndRollingDrain oldRequests=2 newRequests=20 heldPostCompleted=true duplicateHandlers=0 oldStats={AcceptedConnections:1 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:1 RSTStreams:0 GoAwayFrames:1 ActiveConnections:0 ActiveRequests:0}",
"tlsAndReuse reusedRequests=32 upstreamConnections=1 invalidTrustStatus=502 invalidNameStatus=502 recovered=true",
"timeoutAndCancellation timeoutStatus=504 canceledHandlers=2 recovered=true stats={AcceptedConnections:3 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:0 RSTStreams:0 GoAwayFrames:0 ActiveConnections:1 ActiveRequests:0}",
"goAwayAndRollingDrain oldRequests=2 newRequests=20 heldPostCompleted=true duplicateHandlers=0 oldStats={AcceptedConnections:1 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:1 RSTStreams:0 GoAwayFrames:1 ActiveConnections:0 ActiveRequests:0}",
"tlsAndReuse reusedRequests=32 upstreamConnections=1 invalidTrustStatus=502 invalidNameStatus=502 recovered=true",
"timeoutAndCancellation timeoutStatus=504 canceledHandlers=2 recovered=true stats={AcceptedConnections:3 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:0 RSTStreams:0 GoAwayFrames:0 ActiveConnections:1 ActiveRequests:0}",
"goAwayAndRollingDrain oldRequests=2 newRequests=20 heldPostCompleted=true duplicateHandlers=0 oldStats={AcceptedConnections:1 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:1 RSTStreams:0 GoAwayFrames:1 ActiveConnections:0 ActiveRequests:0}"
],
"goVersion": "go1.25.14",
"platform": "linux/amd64",
"commands": [
[
"/usr/bin/docker",
"run",
"--rm",
"--name",
"go-omni-http2-proxy-52da1679e6df-build",
"--cpus",
"2",
"--memory",
"2048m",
"--memory-swap",
"2048m",
"--pids-limit",
"256",
"--log-opt",
"max-size=10m",
"--log-opt",
"max-file=1",
"-v",
"/root/go-omni-validation:/workspace:ro",
"-v",
"/tmp/goOmniHTTP2Proxyk3cc3h1_:/output",
"-w",
"/workspace",
"-e",
"GOWORK=off",
"-e",
"GOMAXPROCS=2",
"-e",
"CGO_ENABLED=0",
"-e",
"GOPROXY=https://goproxy.cn,direct",
"golang:1.25",
"sh",
"-c",
"go version && go vet ./transport/http2 && go test -c -o /output/http2.test ./transport/http2"
],
[
"/usr/bin/docker",
"run",
"--rm",
"--name",
"go-omni-http2-proxy-52da1679e6df-check",
"--cpus",
"2",
"--memory",
"2048m",
"--memory-swap",
"2048m",
"--pids-limit",
"256",
"--log-opt",
"max-size=10m",
"--log-opt",
"max-file=1",
"--network",
"none",
"--read-only",
"--tmpfs",
"/tmp:rw,nosuid,noexec,size=128m",
"-v",
"/tmp/goOmniHTTP2Proxyk3cc3h1_:/test:ro",
"--entrypoint",
"/test/http2.test",
"-e",
"GO_OMNI_HTTP2_PROXY_TEST=1",
"-e",
"GOMAXPROCS=2",
"nginx:1.30.5-alpine",
"-test.v",
"-test.run",
"^TestNginxHTTP2Proxy$",
"-test.timeout",
"120s",
"-test.count",
"3"
]
],
"cleanedContainers": [
"go-omni-http2-proxy-52da1679e6df-build",
"go-omni-http2-proxy-52da1679e6df-check"
],
"finishedAt": "2026-09-23T03:11:00.363119+00:00",
"logSha256": "1263ceb8ce7b65f542898e17031ba56127672d363defd0ee6520199fa1927472",
"preExistingContainersStillRunning": 7
}

View File

@@ -0,0 +1,40 @@
go version go1.25.14 linux/amd64
go: downloading golang.org/x/net v0.25.0
go: downloading golang.org/x/text v0.15.0
=== RUN TestNginxHTTP2Proxy
proxy_test.go:37: proxyVersion=nginx version: nginx/1.30.5
=== RUN TestNginxHTTP2Proxy/TLSAndConnectionReuse
proxy_test.go:163: proxyResult=tlsAndReuse reusedRequests=32 upstreamConnections=1 invalidTrustStatus=502 invalidNameStatus=502 recovered=true
=== RUN TestNginxHTTP2Proxy/TimeoutAndCancellation
proxy_test.go:206: proxyResult=timeoutAndCancellation timeoutStatus=504 canceledHandlers=2 recovered=true stats={AcceptedConnections:3 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:0 RSTStreams:0 GoAwayFrames:0 ActiveConnections:1 ActiveRequests:0}
=== RUN TestNginxHTTP2Proxy/GoAwayAndRollingDrain
proxy_test.go:281: proxyResult=goAwayAndRollingDrain oldRequests=2 newRequests=20 heldPostCompleted=true duplicateHandlers=0 oldStats={AcceptedConnections:1 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:1 RSTStreams:0 GoAwayFrames:1 ActiveConnections:0 ActiveRequests:0}
--- PASS: TestNginxHTTP2Proxy (1.03s)
--- PASS: TestNginxHTTP2Proxy/TLSAndConnectionReuse (0.39s)
--- PASS: TestNginxHTTP2Proxy/TimeoutAndCancellation (0.42s)
--- PASS: TestNginxHTTP2Proxy/GoAwayAndRollingDrain (0.22s)
=== RUN TestNginxHTTP2Proxy
proxy_test.go:37: proxyVersion=nginx version: nginx/1.30.5
=== RUN TestNginxHTTP2Proxy/TLSAndConnectionReuse
proxy_test.go:163: proxyResult=tlsAndReuse reusedRequests=32 upstreamConnections=1 invalidTrustStatus=502 invalidNameStatus=502 recovered=true
=== RUN TestNginxHTTP2Proxy/TimeoutAndCancellation
proxy_test.go:206: proxyResult=timeoutAndCancellation timeoutStatus=504 canceledHandlers=2 recovered=true stats={AcceptedConnections:3 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:0 RSTStreams:0 GoAwayFrames:0 ActiveConnections:1 ActiveRequests:0}
=== RUN TestNginxHTTP2Proxy/GoAwayAndRollingDrain
proxy_test.go:281: proxyResult=goAwayAndRollingDrain oldRequests=2 newRequests=20 heldPostCompleted=true duplicateHandlers=0 oldStats={AcceptedConnections:1 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:1 RSTStreams:0 GoAwayFrames:1 ActiveConnections:0 ActiveRequests:0}
--- PASS: TestNginxHTTP2Proxy (0.81s)
--- PASS: TestNginxHTTP2Proxy/TLSAndConnectionReuse (0.17s)
--- PASS: TestNginxHTTP2Proxy/TimeoutAndCancellation (0.45s)
--- PASS: TestNginxHTTP2Proxy/GoAwayAndRollingDrain (0.20s)
=== RUN TestNginxHTTP2Proxy
proxy_test.go:37: proxyVersion=nginx version: nginx/1.30.5
=== RUN TestNginxHTTP2Proxy/TLSAndConnectionReuse
proxy_test.go:163: proxyResult=tlsAndReuse reusedRequests=32 upstreamConnections=1 invalidTrustStatus=502 invalidNameStatus=502 recovered=true
=== RUN TestNginxHTTP2Proxy/TimeoutAndCancellation
proxy_test.go:206: proxyResult=timeoutAndCancellation timeoutStatus=504 canceledHandlers=2 recovered=true stats={AcceptedConnections:3 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:0 RSTStreams:0 GoAwayFrames:0 ActiveConnections:1 ActiveRequests:0}
=== RUN TestNginxHTTP2Proxy/GoAwayAndRollingDrain
proxy_test.go:281: proxyResult=goAwayAndRollingDrain oldRequests=2 newRequests=20 heldPostCompleted=true duplicateHandlers=0 oldStats={AcceptedConnections:1 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:1 RSTStreams:0 GoAwayFrames:1 ActiveConnections:0 ActiveRequests:0}
--- PASS: TestNginxHTTP2Proxy (0.89s)
--- PASS: TestNginxHTTP2Proxy/TLSAndConnectionReuse (0.21s)
--- PASS: TestNginxHTTP2Proxy/TimeoutAndCancellation (0.44s)
--- PASS: TestNginxHTTP2Proxy/GoAwayAndRollingDrain (0.23s)
PASS

View File

@@ -0,0 +1,147 @@
{
"status": "passed",
"startedAt": "2026-09-23T03:11:00.470197+00:00",
"testedCommit": "b54a303ccdc034cd3062e846c6c6b2c24e55ffaa",
"workingTreeStatus": "",
"sourceSha256": {
"go.mod": "28d68eb2c0a019cceea884e88ab2335f44ad930e1890e28871638f4b073b4f86",
"go.sum": "d9c2a5d0de94f08bd18a14a9626f9dda559c245d89bf8a689e32acbd2136fb05",
"scripts/verifyHTTP2Proxy.py": "9ef2774b1d19c05f1ae8d9527665dba541561a7c677f9984a24e72d5bddb6ad5",
"transport/http2/admission_test.go": "342a7d02bba508100a207b77246ca92e0fa04dd5f8e4a27091a01866b6750d39",
"transport/http2/flowControl_test.go": "595b2e937cef2142ff6b6386116e338d874d0fe49e63d80f6de2e1268378dba2",
"transport/http2/frameObserver.go": "fcdf431f8269ad9cfd65dd14102ce5c42ac8c4b8b833ed42c4ae15f2a7c7f14c",
"transport/http2/lifecycle_test.go": "370a16de8b20248bb78021ab338b9f62ec51f733f270c0fa92f48b1a3ccb9eae",
"transport/http2/mixedSoak_test.go": "2111737fe0405bc809bf06325573f7356160ae7fcaebcce06dcd94b2d9e7dccd",
"transport/http2/proxy_test.go": "808d0fa7e6c3b0237b1adf4a71a4f30ae2dbc7d1a9d53fab164cda33b15c9d69",
"transport/http2/server.go": "aeecdc3aec42219862d70ec788bef5df332189895555bc5d390849a51bd0fbfb",
"transport/http2/server_test.go": "c4613e77fa885b6362c06c393937c7dcf9a7ffb4a9a32f85e21fc2f741de81a6",
"transport/http2/soak_test.go": "52baa37e37dba497c579b6b55d723bda866ac57676254dc878c511345acc5af2"
},
"repetitions": 3,
"race": true,
"containerLimits": {
"cpus": 2,
"memoryBytes": 2147483648,
"memoryAndSwapBytes": 2147483648,
"pidsLimit": 256
},
"wallTimeoutSeconds": 600,
"imageIds": {
"golang:1.25": "sha256:699337d620559a59b4a2bb298ad59611e535d2ee755a34cf2d2a98f37578dc80",
"nginx:1.30.5": "sha256:0aa2d81d65bc0cac0407e738b8f07d312c8685a84225fcb4db7bcbdd8c9bdf11"
},
"notes": [
"Compiler and integration stages run sequentially; at most one 2-CPU/2-GiB validation container is active.",
"The integration container has network=none, no published ports and a read-only root filesystem. Client, Nginx and origins communicate over loopback inside that container.",
"Both TLS legs validate certificates; invalid upstream CA and hostname must fail before reaching the handler.",
"HTTP/2 is verified independently on both legs. This is a functional integration test, not a throughput benchmark or a live Cloudflare deployment.",
"Single-process Nginx fixture with generated test certificates. Rolling drain switches between old and backup origins; this does not test Nginx master/worker configuration reloads or live Cloudflare routing."
],
"proxyVersions": [
"nginx version: nginx/1.30.5"
],
"results": [
"tlsAndReuse reusedRequests=32 upstreamConnections=1 invalidTrustStatus=502 invalidNameStatus=502 recovered=true",
"timeoutAndCancellation timeoutStatus=504 canceledHandlers=2 recovered=true stats={AcceptedConnections:3 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:0 RSTStreams:0 GoAwayFrames:0 ActiveConnections:1 ActiveRequests:0}",
"goAwayAndRollingDrain oldRequests=2 newRequests=20 heldPostCompleted=true duplicateHandlers=0 oldStats={AcceptedConnections:1 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:1 RSTStreams:0 GoAwayFrames:1 ActiveConnections:0 ActiveRequests:0}",
"tlsAndReuse reusedRequests=32 upstreamConnections=1 invalidTrustStatus=502 invalidNameStatus=502 recovered=true",
"timeoutAndCancellation timeoutStatus=504 canceledHandlers=2 recovered=true stats={AcceptedConnections:3 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:0 RSTStreams:0 GoAwayFrames:0 ActiveConnections:1 ActiveRequests:0}",
"goAwayAndRollingDrain oldRequests=2 newRequests=20 heldPostCompleted=true duplicateHandlers=0 oldStats={AcceptedConnections:1 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:1 RSTStreams:0 GoAwayFrames:1 ActiveConnections:0 ActiveRequests:0}",
"tlsAndReuse reusedRequests=32 upstreamConnections=1 invalidTrustStatus=502 invalidNameStatus=502 recovered=true",
"timeoutAndCancellation timeoutStatus=504 canceledHandlers=2 recovered=true stats={AcceptedConnections:3 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:0 RSTStreams:0 GoAwayFrames:0 ActiveConnections:1 ActiveRequests:0}",
"goAwayAndRollingDrain oldRequests=2 newRequests=20 heldPostCompleted=true duplicateHandlers=0 oldStats={AcceptedConnections:1 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:1 RSTStreams:0 GoAwayFrames:1 ActiveConnections:0 ActiveRequests:0}"
],
"goVersion": "go1.25.14",
"platform": "linux/amd64",
"commands": [
[
"/usr/bin/docker",
"pull",
"nginx:1.30.5"
],
[
"/usr/bin/docker",
"run",
"--rm",
"--name",
"go-omni-http2-proxy-ca37da979ea6-build",
"--cpus",
"2",
"--memory",
"2048m",
"--memory-swap",
"2048m",
"--pids-limit",
"256",
"--log-opt",
"max-size=10m",
"--log-opt",
"max-file=1",
"-v",
"/root/go-omni-validation:/workspace:ro",
"-v",
"/tmp/goOmniHTTP2Proxy8ll9pvvs:/output",
"-w",
"/workspace",
"-e",
"GOWORK=off",
"-e",
"GOMAXPROCS=2",
"-e",
"CGO_ENABLED=1",
"-e",
"GOPROXY=https://goproxy.cn,direct",
"golang:1.25",
"sh",
"-c",
"go version && go vet ./transport/http2 && go test -race -c -o /output/http2.test ./transport/http2"
],
[
"/usr/bin/docker",
"run",
"--rm",
"--name",
"go-omni-http2-proxy-ca37da979ea6-check",
"--cpus",
"2",
"--memory",
"2048m",
"--memory-swap",
"2048m",
"--pids-limit",
"256",
"--log-opt",
"max-size=10m",
"--log-opt",
"max-file=1",
"--network",
"none",
"--read-only",
"--tmpfs",
"/tmp:rw,nosuid,noexec,size=128m",
"-v",
"/tmp/goOmniHTTP2Proxy8ll9pvvs:/test:ro",
"--entrypoint",
"/test/http2.test",
"-e",
"GO_OMNI_HTTP2_PROXY_TEST=1",
"-e",
"GOMAXPROCS=2",
"nginx:1.30.5",
"-test.v",
"-test.run",
"^TestNginxHTTP2Proxy$",
"-test.timeout",
"120s",
"-test.count",
"3"
]
],
"cleanedContainers": [
"go-omni-http2-proxy-ca37da979ea6-build",
"go-omni-http2-proxy-ca37da979ea6-check"
],
"finishedAt": "2026-09-23T03:12:51.684028+00:00",
"logSha256": "aaae7678dd4f882c51c008eaeb78afd897ccf2f7ba31c926a40839de755bb595",
"preExistingContainersStillRunning": 7
}

View File

@@ -0,0 +1,67 @@
1.30.5: Pulling from library/nginx
757049f14b94: Pulling fs layer
af529266d394: Pulling fs layer
3a55ec62cf16: Pulling fs layer
2aa35770407f: Pulling fs layer
f3cb4f951034: Pulling fs layer
6b37362b3da7: Pulling fs layer
b9614c6dbd86: Pulling fs layer
2aa35770407f: Download complete
d6363fd2ac35: Download complete
3a55ec62cf16: Download complete
02ac47b2a7a6: Download complete
af529266d394: Download complete
757049f14b94: Download complete
f3cb4f951034: Download complete
6b37362b3da7: Download complete
6b37362b3da7: Pull complete
b9614c6dbd86: Download complete
3a55ec62cf16: Pull complete
f3cb4f951034: Pull complete
b9614c6dbd86: Pull complete
2aa35770407f: Pull complete
af529266d394: Pull complete
757049f14b94: Pull complete
Digest: sha256:0aa2d81d65bc0cac0407e738b8f07d312c8685a84225fcb4db7bcbdd8c9bdf11
Status: Downloaded newer image for nginx:1.30.5
docker.io/library/nginx:1.30.5
go version go1.25.14 linux/amd64
go: downloading golang.org/x/net v0.25.0
go: downloading golang.org/x/text v0.15.0
=== RUN TestNginxHTTP2Proxy
proxy_test.go:37: proxyVersion=nginx version: nginx/1.30.5
=== RUN TestNginxHTTP2Proxy/TLSAndConnectionReuse
proxy_test.go:163: proxyResult=tlsAndReuse reusedRequests=32 upstreamConnections=1 invalidTrustStatus=502 invalidNameStatus=502 recovered=true
=== RUN TestNginxHTTP2Proxy/TimeoutAndCancellation
proxy_test.go:206: proxyResult=timeoutAndCancellation timeoutStatus=504 canceledHandlers=2 recovered=true stats={AcceptedConnections:3 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:0 RSTStreams:0 GoAwayFrames:0 ActiveConnections:1 ActiveRequests:0}
=== RUN TestNginxHTTP2Proxy/GoAwayAndRollingDrain
proxy_test.go:281: proxyResult=goAwayAndRollingDrain oldRequests=2 newRequests=20 heldPostCompleted=true duplicateHandlers=0 oldStats={AcceptedConnections:1 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:1 RSTStreams:0 GoAwayFrames:1 ActiveConnections:0 ActiveRequests:0}
--- PASS: TestNginxHTTP2Proxy (0.92s)
--- PASS: TestNginxHTTP2Proxy/TLSAndConnectionReuse (0.31s)
--- PASS: TestNginxHTTP2Proxy/TimeoutAndCancellation (0.41s)
--- PASS: TestNginxHTTP2Proxy/GoAwayAndRollingDrain (0.19s)
=== RUN TestNginxHTTP2Proxy
proxy_test.go:37: proxyVersion=nginx version: nginx/1.30.5
=== RUN TestNginxHTTP2Proxy/TLSAndConnectionReuse
proxy_test.go:163: proxyResult=tlsAndReuse reusedRequests=32 upstreamConnections=1 invalidTrustStatus=502 invalidNameStatus=502 recovered=true
=== RUN TestNginxHTTP2Proxy/TimeoutAndCancellation
proxy_test.go:206: proxyResult=timeoutAndCancellation timeoutStatus=504 canceledHandlers=2 recovered=true stats={AcceptedConnections:3 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:0 RSTStreams:0 GoAwayFrames:0 ActiveConnections:1 ActiveRequests:0}
=== RUN TestNginxHTTP2Proxy/GoAwayAndRollingDrain
proxy_test.go:281: proxyResult=goAwayAndRollingDrain oldRequests=2 newRequests=20 heldPostCompleted=true duplicateHandlers=0 oldStats={AcceptedConnections:1 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:1 RSTStreams:0 GoAwayFrames:1 ActiveConnections:0 ActiveRequests:0}
--- PASS: TestNginxHTTP2Proxy (1.14s)
--- PASS: TestNginxHTTP2Proxy/TLSAndConnectionReuse (0.28s)
--- PASS: TestNginxHTTP2Proxy/TimeoutAndCancellation (0.56s)
--- PASS: TestNginxHTTP2Proxy/GoAwayAndRollingDrain (0.30s)
=== RUN TestNginxHTTP2Proxy
proxy_test.go:37: proxyVersion=nginx version: nginx/1.30.5
=== RUN TestNginxHTTP2Proxy/TLSAndConnectionReuse
proxy_test.go:163: proxyResult=tlsAndReuse reusedRequests=32 upstreamConnections=1 invalidTrustStatus=502 invalidNameStatus=502 recovered=true
=== RUN TestNginxHTTP2Proxy/TimeoutAndCancellation
proxy_test.go:206: proxyResult=timeoutAndCancellation timeoutStatus=504 canceledHandlers=2 recovered=true stats={AcceptedConnections:3 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:0 RSTStreams:0 GoAwayFrames:0 ActiveConnections:1 ActiveRequests:0}
=== RUN TestNginxHTTP2Proxy/GoAwayAndRollingDrain
proxy_test.go:281: proxyResult=goAwayAndRollingDrain oldRequests=2 newRequests=20 heldPostCompleted=true duplicateHandlers=0 oldStats={AcceptedConnections:1 RejectedConnections:0 RejectedRequests:0 ProtocolErrors:0 GoAwaySent:1 RSTStreams:0 GoAwayFrames:1 ActiveConnections:0 ActiveRequests:0}
--- PASS: TestNginxHTTP2Proxy (0.92s)
--- PASS: TestNginxHTTP2Proxy/TLSAndConnectionReuse (0.31s)
--- PASS: TestNginxHTTP2Proxy/TimeoutAndCancellation (0.44s)
--- PASS: TestNginxHTTP2Proxy/GoAwayAndRollingDrain (0.16s)
PASS