fix(http): honor configured request header deadlines

Signed-off-by: Feng Ruohang <rh@vonng.com>
(cherry picked from commit 0d48d32d7e038ae1ea5966f3d7e0cb86780a6311)
Signed-off-by: Feng Ruohang <rh@vonng.com>
This commit is contained in:
Feng Ruohang
2026-09-16 00:17:41 +08:00
parent aea3882c95
commit 055030ea53
74 changed files with 4386 additions and 3 deletions
@@ -0,0 +1,23 @@
=== RUN TestServerConnStateHook
=== RUN TestServerConnStateHook/tls=false
=== RUN TestServerConnStateHook/tls=true
--- PASS: TestServerConnStateHook (0.00s)
--- PASS: TestServerConnStateHook/tls=false (0.00s)
--- PASS: TestServerConnStateHook/tls=true (0.00s)
=== RUN TestServerHTTP2Deadlines
r8_compatibility_test.go:278: expected HTTP/2, got HTTP/1.1
r8_compatibility_test.go:293: unexpected HTTP/1.1 204 No Content
--- FAIL: TestServerHTTP2Deadlines (0.00s)
=== RUN TestServerEarlyBodyClose
=== RUN TestServerEarlyBodyClose/tls=false
=== PAUSE TestServerEarlyBodyClose/tls=false
=== RUN TestServerEarlyBodyClose/tls=true
=== PAUSE TestServerEarlyBodyClose/tls=true
=== CONT TestServerEarlyBodyClose/tls=false
=== CONT TestServerEarlyBodyClose/tls=true
--- PASS: TestServerEarlyBodyClose (0.00s)
--- PASS: TestServerEarlyBodyClose/tls=false (0.30s)
--- PASS: TestServerEarlyBodyClose/tls=true (0.30s)
FAIL
FAIL github.com/minio/minio/internal/http 0.959s
FAIL
@@ -0,0 +1,80 @@
=== RUN TestServerContinuousUpload
=== RUN TestServerContinuousUpload/tls=false/chunked=false/expect=false
=== PAUSE TestServerContinuousUpload/tls=false/chunked=false/expect=false
=== RUN TestServerContinuousUpload/tls=false/chunked=false/expect=true
=== PAUSE TestServerContinuousUpload/tls=false/chunked=false/expect=true
=== RUN TestServerContinuousUpload/tls=false/chunked=true/expect=false
=== PAUSE TestServerContinuousUpload/tls=false/chunked=true/expect=false
=== RUN TestServerContinuousUpload/tls=false/chunked=true/expect=true
=== PAUSE TestServerContinuousUpload/tls=false/chunked=true/expect=true
=== RUN TestServerContinuousUpload/tls=true/chunked=false/expect=false
=== PAUSE TestServerContinuousUpload/tls=true/chunked=false/expect=false
=== RUN TestServerContinuousUpload/tls=true/chunked=false/expect=true
=== PAUSE TestServerContinuousUpload/tls=true/chunked=false/expect=true
=== RUN TestServerContinuousUpload/tls=true/chunked=true/expect=false
=== PAUSE TestServerContinuousUpload/tls=true/chunked=true/expect=false
=== RUN TestServerContinuousUpload/tls=true/chunked=true/expect=true
=== PAUSE TestServerContinuousUpload/tls=true/chunked=true/expect=true
=== CONT TestServerContinuousUpload/tls=false/chunked=false/expect=false
=== CONT TestServerContinuousUpload/tls=true/chunked=false/expect=false
=== CONT TestServerContinuousUpload/tls=false/chunked=true/expect=false
=== CONT TestServerContinuousUpload/tls=false/chunked=true/expect=true
=== CONT TestServerContinuousUpload/tls=true/chunked=true/expect=true
=== CONT TestServerContinuousUpload/tls=true/chunked=false/expect=true
=== CONT TestServerContinuousUpload/tls=true/chunked=true/expect=false
=== CONT TestServerContinuousUpload/tls=false/chunked=false/expect=true
=== NAME TestServerContinuousUpload/tls=true/chunked=true/expect=false
r8_compatibility_test.go:181: continuous upload 1.293813708s > idle 300ms
=== NAME TestServerContinuousUpload/tls=true/chunked=false/expect=false
r8_compatibility_test.go:181: continuous upload 1.293742875s > idle 300ms
=== NAME TestServerContinuousUpload/tls=false/chunked=true/expect=false
r8_compatibility_test.go:181: continuous upload 1.297742459s > idle 300ms
=== NAME TestServerContinuousUpload/tls=true/chunked=false/expect=true
r8_compatibility_test.go:181: continuous upload 1.293691583s > idle 300ms
=== NAME TestServerContinuousUpload/tls=false/chunked=false/expect=true
r8_compatibility_test.go:181: continuous upload 1.296975334s > idle 300ms
=== NAME TestServerContinuousUpload/tls=false/chunked=true/expect=true
r8_compatibility_test.go:181: continuous upload 1.297091375s > idle 300ms
=== NAME TestServerContinuousUpload/tls=true/chunked=true/expect=true
r8_compatibility_test.go:181: continuous upload 1.293960709s > idle 300ms
=== NAME TestServerContinuousUpload/tls=false/chunked=false/expect=false
r8_compatibility_test.go:181: continuous upload 1.297880292s > idle 300ms
--- PASS: TestServerContinuousUpload (0.00s)
--- PASS: TestServerContinuousUpload/tls=false/chunked=true/expect=true (1.30s)
--- PASS: TestServerContinuousUpload/tls=false/chunked=false/expect=true (1.30s)
--- PASS: TestServerContinuousUpload/tls=true/chunked=true/expect=true (1.30s)
--- PASS: TestServerContinuousUpload/tls=true/chunked=false/expect=true (1.30s)
--- PASS: TestServerContinuousUpload/tls=true/chunked=true/expect=false (1.30s)
--- PASS: TestServerContinuousUpload/tls=false/chunked=false/expect=false (1.30s)
--- PASS: TestServerContinuousUpload/tls=true/chunked=false/expect=false (1.30s)
--- PASS: TestServerContinuousUpload/tls=false/chunked=true/expect=false (1.30s)
=== RUN TestServerIdleBodyDeadline
=== RUN TestServerIdleBodyDeadline/tls=false
=== PAUSE TestServerIdleBodyDeadline/tls=false
=== RUN TestServerIdleBodyDeadline/tls=true
=== PAUSE TestServerIdleBodyDeadline/tls=true
=== CONT TestServerIdleBodyDeadline/tls=false
=== CONT TestServerIdleBodyDeadline/tls=true
--- PASS: TestServerIdleBodyDeadline (0.00s)
--- PASS: TestServerIdleBodyDeadline/tls=false (0.45s)
--- PASS: TestServerIdleBodyDeadline/tls=true (0.45s)
=== RUN TestServerBackgroundReadNoDeadline
=== RUN TestServerBackgroundReadNoDeadline/tls=false/body=false
=== PAUSE TestServerBackgroundReadNoDeadline/tls=false/body=false
=== RUN TestServerBackgroundReadNoDeadline/tls=false/body=true
=== PAUSE TestServerBackgroundReadNoDeadline/tls=false/body=true
=== RUN TestServerBackgroundReadNoDeadline/tls=true/body=false
=== PAUSE TestServerBackgroundReadNoDeadline/tls=true/body=false
=== RUN TestServerBackgroundReadNoDeadline/tls=true/body=true
=== PAUSE TestServerBackgroundReadNoDeadline/tls=true/body=true
=== CONT TestServerBackgroundReadNoDeadline/tls=false/body=false
=== CONT TestServerBackgroundReadNoDeadline/tls=true/body=false
=== CONT TestServerBackgroundReadNoDeadline/tls=false/body=true
=== CONT TestServerBackgroundReadNoDeadline/tls=true/body=true
--- PASS: TestServerBackgroundReadNoDeadline (0.00s)
--- PASS: TestServerBackgroundReadNoDeadline/tls=false/body=false (0.70s)
--- PASS: TestServerBackgroundReadNoDeadline/tls=false/body=true (0.70s)
--- PASS: TestServerBackgroundReadNoDeadline/tls=true/body=false (0.70s)
--- PASS: TestServerBackgroundReadNoDeadline/tls=true/body=true (0.70s)
PASS
ok github.com/minio/minio/internal/http 2.983s
@@ -0,0 +1,11 @@
=== RUN TestReviewR8AbsoluteHeaderTimeout
=== RUN TestReviewR8AbsoluteHeaderTimeout/standard-net-http
r8_baseline_test.go:56: request rejected after header timeout: unexpected EOF
=== RUN TestReviewR8AbsoluteHeaderTimeout/silo-listener
r8_baseline_test.go:60: 100ms request-header deadline accepted header completed after 400ms: HTTP 204
--- FAIL: TestReviewR8AbsoluteHeaderTimeout (0.80s)
--- PASS: TestReviewR8AbsoluteHeaderTimeout/standard-net-http (0.40s)
--- FAIL: TestReviewR8AbsoluteHeaderTimeout/silo-listener (0.40s)
FAIL
FAIL github.com/minio/minio/internal/http 1.477s
FAIL
@@ -0,0 +1,63 @@
package http
import (
"bufio"
"context"
"io"
"net"
stdhttp "net/http"
"testing"
"time"
)
func TestReviewR8AbsoluteHeaderTimeout(t *testing.T) {
for _, wrapped := range []bool{false, true} {
name := "standard-net-http"
if wrapped {
name = "silo-listener"
}
t.Run(name, func(t *testing.T) {
handler := stdhttp.HandlerFunc(func(w stdhttp.ResponseWriter, r *stdhttp.Request) { w.WriteHeader(204) })
var addr string
if wrapped {
srv := NewServer([]string{"127.0.0.1:0"}).UseHandler(handler).
UseTCPOptions(TCPOptions{IdleTimeout: 2 * time.Second}).
UseReadHeaderTimeout(100 * time.Millisecond).UseReadTimeout(2 * time.Second).UseWriteTimeout(2 * time.Second)
serve, err := srv.Init(context.Background(), func(_ string, err error) { t.Error(err) })
if err != nil {
t.Fatal(err)
}
addr = srv.listener.Addr().String()
go serve()
defer srv.Server.Close()
} else {
ln, err := net.Listen("tcp", "127.0.0.1:0")
if err != nil {
t.Fatal(err)
}
srv := &stdhttp.Server{Handler: handler, ReadHeaderTimeout: 100 * time.Millisecond, ReadTimeout: 2 * time.Second, WriteTimeout: 2 * time.Second}
addr = ln.Addr().String()
go srv.Serve(ln)
defer srv.Close()
}
conn, err := net.DialTimeout("tcp", addr, time.Second)
if err != nil {
t.Fatal(err)
}
defer conn.Close()
conn.SetDeadline(time.Now().Add(3 * time.Second))
if _, err := io.WriteString(conn, "GET / HTTP/1.1\r\nHost: localhost\r\nX-Slow: "); err != nil {
t.Fatal(err)
}
time.Sleep(400 * time.Millisecond)
io.WriteString(conn, "done\r\nConnection: close\r\n\r\n")
resp, err := stdhttp.ReadResponse(bufio.NewReader(conn), nil)
if err != nil {
t.Logf("request rejected after header timeout: %v", err)
return
}
defer resp.Body.Close()
t.Errorf("100ms request-header deadline accepted header completed after 400ms: HTTP %d", resp.StatusCode)
})
}
}
@@ -0,0 +1,11 @@
{
"timestamp_utc": "2026-09-15T16:14:25.042607+00:00",
"reason": "parent requested cleanup of completed task-owned disposable artifacts; baseline runtime evidence and hash retained",
"deleted": [
{
"path": "/Users/vonng/tmp/silo-r8-01a0a5b9/silo-v1",
"size": 132390258,
"sha256": "ed8d30cb40832f854bd82b083b9d1ec3ee16a35598416a54ef2d48bde8384ffc"
}
]
}
@@ -0,0 +1,28 @@
=== RUN TestServerReadHeaderTimeoutConfig
=== RUN TestServerReadHeaderTimeoutConfig/default
r8_config_test.go:31: could not parse as duration for flag read-header-timeout: time: invalid duration ""
=== RUN TestServerReadHeaderTimeoutConfig/flag
r8_config_test.go:31: could not parse as duration for flag read-header-timeout: time: invalid duration ""
=== RUN TestServerReadHeaderTimeoutConfig/environment
r8_config_test.go:28: CLI read-header-timeout=170ms, expected=170ms
r8_config_test.go:33: parsed ReadHeaderTimeout = 0s, want 170ms
=== RUN TestServerReadHeaderTimeoutConfig/flag-over-environment
r8_config_test.go:28: CLI read-header-timeout=80ms, expected=80ms
r8_config_test.go:33: parsed ReadHeaderTimeout = 0s, want 80ms
=== RUN TestServerReadHeaderTimeoutConfig/yaml-retains-flag
r8_config_test.go:31: could not parse as duration for flag read-header-timeout: time: invalid duration ""
=== RUN TestServerReadHeaderTimeoutConfig/zero-fallback
r8_config_test.go:31: could not parse as duration for flag read-header-timeout: time: invalid duration ""
=== RUN TestServerReadHeaderTimeoutConfig/negative-disabled
r8_config_test.go:31: could not parse as duration for flag read-header-timeout: time: invalid duration ""
--- FAIL: TestServerReadHeaderTimeoutConfig (0.00s)
--- FAIL: TestServerReadHeaderTimeoutConfig/default (0.00s)
--- FAIL: TestServerReadHeaderTimeoutConfig/flag (0.00s)
--- FAIL: TestServerReadHeaderTimeoutConfig/environment (0.00s)
--- FAIL: TestServerReadHeaderTimeoutConfig/flag-over-environment (0.00s)
--- FAIL: TestServerReadHeaderTimeoutConfig/yaml-retains-flag (0.00s)
--- FAIL: TestServerReadHeaderTimeoutConfig/zero-fallback (0.00s)
--- FAIL: TestServerReadHeaderTimeoutConfig/negative-disabled (0.00s)
FAIL
FAIL github.com/minio/minio/cmd 1.629s
FAIL
@@ -0,0 +1,4 @@
# github.com/minio/minio/cmd [github.com/minio/minio/cmd.test]
../../../../tmp/silo-r8-01a0a5b9/config_deadline_test.go:26:52: undefined: serverFlags
FAIL github.com/minio/minio/cmd [build failed]
FAIL
@@ -0,0 +1,32 @@
=== RUN TestServerReadHeaderTimeoutConfig
=== RUN TestServerReadHeaderTimeoutConfig/default
r8_config_test.go:30: CLI read-header-timeout=30s, expected=30s
r8_config_test.go:35: parsed ReadHeaderTimeout = 0s, want 30s
=== RUN TestServerReadHeaderTimeoutConfig/flag
r8_config_test.go:30: CLI read-header-timeout=100ms, expected=100ms
r8_config_test.go:35: parsed ReadHeaderTimeout = 0s, want 100ms
=== RUN TestServerReadHeaderTimeoutConfig/environment
r8_config_test.go:30: CLI read-header-timeout=170ms, expected=170ms
r8_config_test.go:35: parsed ReadHeaderTimeout = 0s, want 170ms
=== RUN TestServerReadHeaderTimeoutConfig/flag-over-environment
r8_config_test.go:30: CLI read-header-timeout=80ms, expected=80ms
r8_config_test.go:35: parsed ReadHeaderTimeout = 0s, want 80ms
=== RUN TestServerReadHeaderTimeoutConfig/yaml-retains-flag
r8_config_test.go:30: CLI read-header-timeout=100ms, expected=100ms
r8_config_test.go:35: parsed ReadHeaderTimeout = 0s, want 100ms
=== RUN TestServerReadHeaderTimeoutConfig/zero-fallback
r8_config_test.go:30: CLI read-header-timeout=0s, expected=0s
=== RUN TestServerReadHeaderTimeoutConfig/negative-disabled
r8_config_test.go:30: CLI read-header-timeout=-1s, expected=-1s
r8_config_test.go:35: parsed ReadHeaderTimeout = 0s, want -1s
--- FAIL: TestServerReadHeaderTimeoutConfig (0.00s)
--- FAIL: TestServerReadHeaderTimeoutConfig/default (0.00s)
--- FAIL: TestServerReadHeaderTimeoutConfig/flag (0.00s)
--- FAIL: TestServerReadHeaderTimeoutConfig/environment (0.00s)
--- FAIL: TestServerReadHeaderTimeoutConfig/flag-over-environment (0.00s)
--- FAIL: TestServerReadHeaderTimeoutConfig/yaml-retains-flag (0.00s)
--- PASS: TestServerReadHeaderTimeoutConfig/zero-fallback (0.00s)
--- FAIL: TestServerReadHeaderTimeoutConfig/negative-disabled (0.00s)
FAIL
FAIL github.com/minio/minio/cmd 1.500s
FAIL
@@ -0,0 +1,36 @@
=== RUN TestServerConfigFile
=== RUN TestServerConfigFile/testdata/config/1.yaml
=== RUN TestServerConfigFile/testdata/config/2.yaml
=== RUN TestServerConfigFile/testdata/config/invalid.yaml
=== RUN TestServerConfigFile/testdata/config/invalid-types.yaml
=== RUN TestServerConfigFile/testdata/config/invalid-disks.yaml
--- PASS: TestServerConfigFile (0.00s)
--- PASS: TestServerConfigFile/testdata/config/1.yaml (0.00s)
--- PASS: TestServerConfigFile/testdata/config/2.yaml (0.00s)
--- PASS: TestServerConfigFile/testdata/config/invalid.yaml (0.00s)
--- PASS: TestServerConfigFile/testdata/config/invalid-types.yaml (0.00s)
--- PASS: TestServerConfigFile/testdata/config/invalid-disks.yaml (0.00s)
=== RUN TestServerReadHeaderTimeoutConfig
=== RUN TestServerReadHeaderTimeoutConfig/default
=== RUN TestServerReadHeaderTimeoutConfig/flag
=== RUN TestServerReadHeaderTimeoutConfig/environment
=== RUN TestServerReadHeaderTimeoutConfig/flag-over-environment
=== RUN TestServerReadHeaderTimeoutConfig/yaml-retains-flag
=== RUN TestServerReadHeaderTimeoutConfig/zero-fallback
=== RUN TestServerReadHeaderTimeoutConfig/zero-idle-default-header
=== RUN TestServerReadHeaderTimeoutConfig/negative-idle-default-header
=== RUN TestServerReadHeaderTimeoutConfig/fmt-gen-unregistered-duration
=== RUN TestServerReadHeaderTimeoutConfig/negative-disabled
--- PASS: TestServerReadHeaderTimeoutConfig (0.06s)
--- PASS: TestServerReadHeaderTimeoutConfig/default (0.01s)
--- PASS: TestServerReadHeaderTimeoutConfig/flag (0.00s)
--- PASS: TestServerReadHeaderTimeoutConfig/environment (0.00s)
--- PASS: TestServerReadHeaderTimeoutConfig/flag-over-environment (0.01s)
--- PASS: TestServerReadHeaderTimeoutConfig/yaml-retains-flag (0.00s)
--- PASS: TestServerReadHeaderTimeoutConfig/zero-fallback (0.04s)
--- PASS: TestServerReadHeaderTimeoutConfig/zero-idle-default-header (0.00s)
--- PASS: TestServerReadHeaderTimeoutConfig/negative-idle-default-header (0.00s)
--- PASS: TestServerReadHeaderTimeoutConfig/fmt-gen-unregistered-duration (0.00s)
--- PASS: TestServerReadHeaderTimeoutConfig/negative-disabled (0.00s)
PASS
ok github.com/minio/minio/cmd 2.462s
@@ -0,0 +1,8 @@
# github.com/minio/minio/cmd.test
/opt/homebrew/Cellar/go/1.27.1/libexec/pkg/tool/darwin_arm64/link: running cc failed: exit status 1
/usr/bin/cc -arch arm64 -Wl,-S -Wl,-x -Wl,-U,__dyld_get_dyld_header -o $WORK/b001/cmd.test -Qunused-arguments /var/folders/df/bfm8q07d7bv3kpjf1fjchq4m0000gn/T/go-link-2408312831/go.o /var/folders/df/bfm8q07d7bv3kpjf1fjchq4m0000gn/T/go-link-2408312831/000000.o /var/folders/df/bfm8q07d7bv3kpjf1fjchq4m0000gn/T/go-link-2408312831/000001.o /var/folders/df/bfm8q07d7bv3kpjf1fjchq4m0000gn/T/go-link-2408312831/000002.o /var/folders/df/bfm8q07d7bv3kpjf1fjchq4m0000gn/T/go-link-2408312831/000003.o /var/folders/df/bfm8q07d7bv3kpjf1fjchq4m0000gn/T/go-link-2408312831/000004.o /var/folders/df/bfm8q07d7bv3kpjf1fjchq4m0000gn/T/go-link-2408312831/000005.o /var/folders/df/bfm8q07d7bv3kpjf1fjchq4m0000gn/T/go-link-2408312831/000006.o /var/folders/df/bfm8q07d7bv3kpjf1fjchq4m0000gn/T/go-link-2408312831/000007.o /var/folders/df/bfm8q07d7bv3kpjf1fjchq4m0000gn/T/go-link-2408312831/000008.o /var/folders/df/bfm8q07d7bv3kpjf1fjchq4m0000gn/T/go-link-2408312831/000009.o /var/folders/df/bfm8q07d7bv3kpjf1fjchq4m0000gn/T/go-link-2408312831/000010.o /var/folders/df/bfm8q07d7bv3kpjf1fjchq4m0000gn/T/go-link-2408312831/000011.o /var/folders/df/bfm8q07d7bv3kpjf1fjchq4m0000gn/T/go-link-2408312831/000012.o /var/folders/df/bfm8q07d7bv3kpjf1fjchq4m0000gn/T/go-link-2408312831/000013.o /var/folders/df/bfm8q07d7bv3kpjf1fjchq4m0000gn/T/go-link-2408312831/000014.o /var/folders/df/bfm8q07d7bv3kpjf1fjchq4m0000gn/T/go-link-2408312831/000015.o /var/folders/df/bfm8q07d7bv3kpjf1fjchq4m0000gn/T/go-link-2408312831/000016.o /var/folders/df/bfm8q07d7bv3kpjf1fjchq4m0000gn/T/go-link-2408312831/000017.o /var/folders/df/bfm8q07d7bv3kpjf1fjchq4m0000gn/T/go-link-2408312831/000018.o /var/folders/df/bfm8q07d7bv3kpjf1fjchq4m0000gn/T/go-link-2408312831/000019.o /var/folders/df/bfm8q07d7bv3kpjf1fjchq4m0000gn/T/go-link-2408312831/000020.o /var/folders/df/bfm8q07d7bv3kpjf1fjchq4m0000gn/T/go-link-2408312831/000021.o /var/folders/df/bfm8q07d7bv3kpjf1fjchq4m0000gn/T/go-link-2408312831/000022.o /var/folders/df/bfm8q07d7bv3kpjf1fjchq4m0000gn/T/go-link-2408312831/000023.o /var/folders/df/bfm8q07d7bv3kpjf1fjchq4m0000gn/T/go-link-2408312831/000024.o /var/folders/df/bfm8q07d7bv3kpjf1fjchq4m0000gn/T/go-link-2408312831/000025.o /var/folders/df/bfm8q07d7bv3kpjf1fjchq4m0000gn/T/go-link-2408312831/000026.o /var/folders/df/bfm8q07d7bv3kpjf1fjchq4m0000gn/T/go-link-2408312831/000027.o /var/folders/df/bfm8q07d7bv3kpjf1fjchq4m0000gn/T/go-link-2408312831/000028.o /var/folders/df/bfm8q07d7bv3kpjf1fjchq4m0000gn/T/go-link-2408312831/000029.o /var/folders/df/bfm8q07d7bv3kpjf1fjchq4m0000gn/T/go-link-2408312831/000030.o /var/folders/df/bfm8q07d7bv3kpjf1fjchq4m0000gn/T/go-link-2408312831/000031.o /var/folders/df/bfm8q07d7bv3kpjf1fjchq4m0000gn/T/go-link-2408312831/000032.o /var/folders/df/bfm8q07d7bv3kpjf1fjchq4m0000gn/T/go-link-2408312831/000033.o -lresolv -O2 -g -O2 -g -O2 -g -O2 -g -framework CoreFoundation -framework IOKit -O2 -g -framework IOKit -O2 -g -framework CoreFoundation -framework Security -O2 -g -framework CoreServices -O2 -g -O2 -g -framework CoreFoundation -framework IOKit -O2 -g -framework CoreFoundation -framework CFNetwork -framework CoreFoundation -framework CFNetwork
ld: write() failed, errno=28 (No space left on device)
clang: error: linker command failed with exit code 1 (use -v to see invocation)
FAIL github.com/minio/minio/cmd [build failed]
FAIL
@@ -0,0 +1,39 @@
package cmd
import (
"os"
"testing"
"time"
"github.com/minio/cli"
xhttp "github.com/minio/minio/internal/http"
)
func TestServerReadHeaderTimeoutConfig(t *testing.T) {
for _,tc:=range []struct{name,env string;args []string;want time.Duration}{
{name:"default",want:xhttp.DefaultReadHeaderTimeout},
{name:"flag",args:[]string{"--read-header-timeout=100ms"},want:100*time.Millisecond},
{name:"environment",env:"170ms",want:170*time.Millisecond},
{name:"flag-over-environment",env:"170ms",args:[]string{"--read-header-timeout=80ms"},want:80*time.Millisecond},
{name:"yaml-retains-flag",args:[]string{"--config=testdata/config/1.yaml","--read-header-timeout=100ms"},want:100*time.Millisecond},
{name:"zero-fallback",args:[]string{"--read-header-timeout=0s"}},
{name:"negative-disabled",args:[]string{"--read-header-timeout=-1s"},want:-time.Second},
}{
t.Run(tc.name,func(t *testing.T){
for _,key:=range []string{"MINIO_ARGS","MINIO_VOLUMES","MINIO_ENDPOINTS","MINIO_CONFIG","MINIO_ERASURE_SET_DRIVE_COUNT"}{t.Setenv(key,"")}
t.Setenv("MINIO_READ_HEADER_TIMEOUT",tc.env)
if tc.env==""{if err:=os.Unsetenv("MINIO_READ_HEADER_TIMEOUT");err!=nil{t.Fatal(err)}}
t.Setenv("MINIO_IDLE_TIMEOUT","2s")
var got serverCtxt
called:=false
app:=cli.NewApp()
app.Commands=[]cli.Command{{Name:"server",Flags:serverCmd.Flags,Action:func(ctx *cli.Context)error{called=true;t.Logf("CLI read-header-timeout=%s, expected=%s",ctx.Duration("read-header-timeout"),tc.want);return buildServerCtxt(ctx,&got)}}}
args:=append([]string{"silo","server"},tc.args...)
args=append(args,t.TempDir())
if err:=app.Run(args);err!=nil{t.Fatal(err)}
if !called{t.Fatal("server action did not run")}
if got.ReadHeaderTimeout!=tc.want{t.Errorf("parsed ReadHeaderTimeout = %s, want %s",got.ReadHeaderTimeout,tc.want)}
if got.IdleTimeout!=2*time.Second{t.Errorf("parsed IdleTimeout = %s, want 2s",got.IdleTimeout)}
})
}
}
@@ -0,0 +1,213 @@
=== RUN TestStrictReadDeadline
=== RUN TestStrictReadDeadline/SetReadDeadline
=== RUN TestStrictReadDeadline/SetDeadline
--- PASS: TestStrictReadDeadline (0.00s)
--- PASS: TestStrictReadDeadline/SetReadDeadline (0.00s)
--- PASS: TestStrictReadDeadline/SetDeadline (0.00s)
=== RUN TestDefaultReadDeadlineStillRenews
--- PASS: TestDefaultReadDeadlineStillRenews (0.00s)
=== RUN TestStrictExpiredFutureReadDeadline
--- PASS: TestStrictExpiredFutureReadDeadline (0.06s)
=== RUN TestConcurrentStrictReadDeadline
--- PASS: TestConcurrentStrictReadDeadline (0.00s)
=== RUN TestStrictReadDeadlineRepeatedRenewal
--- PASS: TestStrictReadDeadlineRepeatedRenewal (0.91s)
=== RUN TestBuffConnReadTimeout
--- PASS: TestBuffConnReadTimeout (3.04s)
=== RUN TestBuffConnReadCheckTimeout
--- PASS: TestBuffConnReadCheckTimeout (0.50s)
PASS
ok github.com/minio/minio/internal/deadlineconn 5.927s
=== RUN TestCheckPortAvailability
check_port_test.go:31:
--- SKIP: TestCheckPortAvailability (0.00s)
=== RUN TestNewHTTPListener
--- PASS: TestNewHTTPListener (0.04s)
=== RUN TestHTTPListenerStartClose
--- PASS: TestHTTPListenerStartClose (0.03s)
=== RUN TestHTTPListenerAddr
--- PASS: TestHTTPListenerAddr (0.01s)
=== RUN TestHTTPListenerAddrs
--- PASS: TestHTTPListenerAddrs (0.02s)
=== RUN TestServerReadHeaderDeadline
=== RUN TestServerReadHeaderDeadline/tls=false/second=false/trickle=false
=== PAUSE TestServerReadHeaderDeadline/tls=false/second=false/trickle=false
=== RUN TestServerReadHeaderDeadline/tls=false/second=false/trickle=true
=== PAUSE TestServerReadHeaderDeadline/tls=false/second=false/trickle=true
=== RUN TestServerReadHeaderDeadline/tls=false/second=true/trickle=false
=== PAUSE TestServerReadHeaderDeadline/tls=false/second=true/trickle=false
=== RUN TestServerReadHeaderDeadline/tls=false/second=true/trickle=true
=== PAUSE TestServerReadHeaderDeadline/tls=false/second=true/trickle=true
=== RUN TestServerReadHeaderDeadline/tls=true/second=false/trickle=false
=== PAUSE TestServerReadHeaderDeadline/tls=true/second=false/trickle=false
=== RUN TestServerReadHeaderDeadline/tls=true/second=false/trickle=true
=== PAUSE TestServerReadHeaderDeadline/tls=true/second=false/trickle=true
=== RUN TestServerReadHeaderDeadline/tls=true/second=true/trickle=false
=== PAUSE TestServerReadHeaderDeadline/tls=true/second=true/trickle=false
=== RUN TestServerReadHeaderDeadline/tls=true/second=true/trickle=true
=== PAUSE TestServerReadHeaderDeadline/tls=true/second=true/trickle=true
=== CONT TestServerReadHeaderDeadline/tls=false/second=false/trickle=false
=== CONT TestServerReadHeaderDeadline/tls=true/second=false/trickle=false
=== CONT TestServerReadHeaderDeadline/tls=true/second=true/trickle=false
=== CONT TestServerReadHeaderDeadline/tls=false/second=false/trickle=true
=== CONT TestServerReadHeaderDeadline/tls=false/second=true/trickle=false
=== CONT TestServerReadHeaderDeadline/tls=false/second=true/trickle=true
=== CONT TestServerReadHeaderDeadline/tls=true/second=false/trickle=true
=== CONT TestServerReadHeaderDeadline/tls=true/second=true/trickle=true
--- PASS: TestServerReadHeaderDeadline (0.00s)
--- PASS: TestServerReadHeaderDeadline/tls=false/second=false/trickle=true (0.82s)
--- PASS: TestServerReadHeaderDeadline/tls=true/second=false/trickle=true (0.85s)
--- PASS: TestServerReadHeaderDeadline/tls=false/second=false/trickle=false (0.96s)
--- PASS: TestServerReadHeaderDeadline/tls=true/second=false/trickle=false (0.98s)
--- PASS: TestServerReadHeaderDeadline/tls=false/second=true/trickle=true (1.57s)
--- PASS: TestServerReadHeaderDeadline/tls=true/second=true/trickle=true (1.59s)
--- PASS: TestServerReadHeaderDeadline/tls=false/second=true/trickle=false (1.71s)
--- PASS: TestServerReadHeaderDeadline/tls=true/second=true/trickle=false (1.73s)
=== RUN TestServerKeepAliveDeadline
=== RUN TestServerKeepAliveDeadline/tls=false
=== PAUSE TestServerKeepAliveDeadline/tls=false
=== RUN TestServerKeepAliveDeadline/tls=true
=== PAUSE TestServerKeepAliveDeadline/tls=true
=== CONT TestServerKeepAliveDeadline/tls=false
=== CONT TestServerKeepAliveDeadline/tls=true
--- PASS: TestServerKeepAliveDeadline (0.00s)
--- PASS: TestServerKeepAliveDeadline/tls=false (1.52s)
--- PASS: TestServerKeepAliveDeadline/tls=true (1.53s)
=== RUN TestServerContinuousUpload
=== RUN TestServerContinuousUpload/tls=false/chunked=false/expect=false
=== PAUSE TestServerContinuousUpload/tls=false/chunked=false/expect=false
=== RUN TestServerContinuousUpload/tls=false/chunked=false/expect=true
=== PAUSE TestServerContinuousUpload/tls=false/chunked=false/expect=true
=== RUN TestServerContinuousUpload/tls=false/chunked=true/expect=false
=== PAUSE TestServerContinuousUpload/tls=false/chunked=true/expect=false
=== RUN TestServerContinuousUpload/tls=false/chunked=true/expect=true
=== PAUSE TestServerContinuousUpload/tls=false/chunked=true/expect=true
=== RUN TestServerContinuousUpload/tls=true/chunked=false/expect=false
=== PAUSE TestServerContinuousUpload/tls=true/chunked=false/expect=false
=== RUN TestServerContinuousUpload/tls=true/chunked=false/expect=true
=== PAUSE TestServerContinuousUpload/tls=true/chunked=false/expect=true
=== RUN TestServerContinuousUpload/tls=true/chunked=true/expect=false
=== PAUSE TestServerContinuousUpload/tls=true/chunked=true/expect=false
=== RUN TestServerContinuousUpload/tls=true/chunked=true/expect=true
=== PAUSE TestServerContinuousUpload/tls=true/chunked=true/expect=true
=== CONT TestServerContinuousUpload/tls=false/chunked=false/expect=false
=== CONT TestServerContinuousUpload/tls=true/chunked=true/expect=true
=== CONT TestServerContinuousUpload/tls=false/chunked=true/expect=true
=== CONT TestServerContinuousUpload/tls=false/chunked=true/expect=false
=== CONT TestServerContinuousUpload/tls=false/chunked=false/expect=true
=== CONT TestServerContinuousUpload/tls=true/chunked=false/expect=true
=== CONT TestServerContinuousUpload/tls=true/chunked=true/expect=false
=== CONT TestServerContinuousUpload/tls=true/chunked=false/expect=false
=== NAME TestServerContinuousUpload/tls=false/chunked=true/expect=false
server_deadline_test.go:261: continuous upload 1.312965334s > idle 300ms
=== NAME TestServerContinuousUpload/tls=false/chunked=true/expect=true
server_deadline_test.go:261: continuous upload 1.30790825s > idle 300ms
=== NAME TestServerContinuousUpload/tls=false/chunked=false/expect=false
server_deadline_test.go:261: continuous upload 1.32285075s > idle 300ms
=== NAME TestServerContinuousUpload/tls=false/chunked=false/expect=true
server_deadline_test.go:261: continuous upload 1.323004708s > idle 300ms
=== NAME TestServerContinuousUpload/tls=true/chunked=true/expect=true
server_deadline_test.go:261: continuous upload 1.322070417s > idle 300ms
=== NAME TestServerContinuousUpload/tls=true/chunked=false/expect=false
server_deadline_test.go:261: continuous upload 1.323585625s > idle 300ms
=== NAME TestServerContinuousUpload/tls=true/chunked=true/expect=false
server_deadline_test.go:261: continuous upload 1.323022875s > idle 300ms
=== NAME TestServerContinuousUpload/tls=true/chunked=false/expect=true
server_deadline_test.go:261: continuous upload 1.323094875s > idle 300ms
--- PASS: TestServerContinuousUpload (0.00s)
--- PASS: TestServerContinuousUpload/tls=false/chunked=true/expect=false (1.31s)
--- PASS: TestServerContinuousUpload/tls=false/chunked=true/expect=true (1.31s)
--- PASS: TestServerContinuousUpload/tls=false/chunked=false/expect=true (1.33s)
--- PASS: TestServerContinuousUpload/tls=false/chunked=false/expect=false (1.33s)
--- PASS: TestServerContinuousUpload/tls=true/chunked=true/expect=true (1.34s)
--- PASS: TestServerContinuousUpload/tls=true/chunked=false/expect=false (1.34s)
--- PASS: TestServerContinuousUpload/tls=true/chunked=true/expect=false (1.34s)
--- PASS: TestServerContinuousUpload/tls=true/chunked=false/expect=true (1.34s)
=== RUN TestServerDefaultIdleLongUpload
server_deadline_test.go:270: set SILO_TEST_LONG_UPLOAD=1 for >30s default-idle regression
--- SKIP: TestServerDefaultIdleLongUpload (0.00s)
=== RUN TestServerIdleBodyDeadline
=== RUN TestServerIdleBodyDeadline/tls=false
=== PAUSE TestServerIdleBodyDeadline/tls=false
=== RUN TestServerIdleBodyDeadline/tls=true
=== PAUSE TestServerIdleBodyDeadline/tls=true
=== CONT TestServerIdleBodyDeadline/tls=false
=== CONT TestServerIdleBodyDeadline/tls=true
--- PASS: TestServerIdleBodyDeadline (0.00s)
--- PASS: TestServerIdleBodyDeadline/tls=false (0.45s)
--- PASS: TestServerIdleBodyDeadline/tls=true (0.47s)
=== RUN TestServerBackgroundReadNoDeadline
=== RUN TestServerBackgroundReadNoDeadline/tls=false/body=false
=== PAUSE TestServerBackgroundReadNoDeadline/tls=false/body=false
=== RUN TestServerBackgroundReadNoDeadline/tls=false/body=true
=== PAUSE TestServerBackgroundReadNoDeadline/tls=false/body=true
=== RUN TestServerBackgroundReadNoDeadline/tls=true/body=false
=== PAUSE TestServerBackgroundReadNoDeadline/tls=true/body=false
=== RUN TestServerBackgroundReadNoDeadline/tls=true/body=true
=== PAUSE TestServerBackgroundReadNoDeadline/tls=true/body=true
=== CONT TestServerBackgroundReadNoDeadline/tls=true/body=false
=== CONT TestServerBackgroundReadNoDeadline/tls=false/body=true
=== CONT TestServerBackgroundReadNoDeadline/tls=true/body=true
=== CONT TestServerBackgroundReadNoDeadline/tls=false/body=false
--- PASS: TestServerBackgroundReadNoDeadline (0.00s)
--- PASS: TestServerBackgroundReadNoDeadline/tls=false/body=true (0.71s)
--- PASS: TestServerBackgroundReadNoDeadline/tls=true/body=false (0.71s)
--- PASS: TestServerBackgroundReadNoDeadline/tls=false/body=false (0.71s)
--- PASS: TestServerBackgroundReadNoDeadline/tls=true/body=true (0.72s)
=== RUN TestServerTLSHandshakeReadDeadline
2026/09/16 00:03:51 http: TLS handshake error from 127.0.0.1:57963: read tcp 127.0.0.1:57962->127.0.0.1:57963: i/o timeout
--- PASS: TestServerTLSHandshakeReadDeadline (0.20s)
=== RUN TestServerConnStateHook
=== RUN TestServerConnStateHook/tls=false
=== RUN TestServerConnStateHook/tls=true
--- PASS: TestServerConnStateHook (0.02s)
--- PASS: TestServerConnStateHook/tls=false (0.00s)
--- PASS: TestServerConnStateHook/tls=true (0.02s)
=== RUN TestServerHTTP2Deadlines
--- PASS: TestServerHTTP2Deadlines (0.43s)
=== RUN TestServerEarlyBodyClose
=== RUN TestServerEarlyBodyClose/tls=false
=== PAUSE TestServerEarlyBodyClose/tls=false
=== RUN TestServerEarlyBodyClose/tls=true
=== PAUSE TestServerEarlyBodyClose/tls=true
=== CONT TestServerEarlyBodyClose/tls=false
=== CONT TestServerEarlyBodyClose/tls=true
--- PASS: TestServerEarlyBodyClose (0.00s)
--- PASS: TestServerEarlyBodyClose/tls=false (0.30s)
--- PASS: TestServerEarlyBodyClose/tls=true (0.31s)
=== RUN TestServerPipelinedDeadline
=== RUN TestServerPipelinedDeadline/tls=false
=== RUN TestServerPipelinedDeadline/tls=true
--- PASS: TestServerPipelinedDeadline (1.31s)
--- PASS: TestServerPipelinedDeadline/tls=false (0.65s)
--- PASS: TestServerPipelinedDeadline/tls=true (0.66s)
=== RUN TestServerHijackedDeadline
=== RUN TestServerHijackedDeadline/tls=false
=== PAUSE TestServerHijackedDeadline/tls=false
=== RUN TestServerHijackedDeadline/tls=true
=== PAUSE TestServerHijackedDeadline/tls=true
=== CONT TestServerHijackedDeadline/tls=true
=== CONT TestServerHijackedDeadline/tls=false
--- PASS: TestServerHijackedDeadline (0.00s)
--- PASS: TestServerHijackedDeadline/tls=false (0.70s)
--- PASS: TestServerHijackedDeadline/tls=true (0.71s)
=== RUN TestServerContinuousDownload
=== RUN TestServerContinuousDownload/tls=false
=== PAUSE TestServerContinuousDownload/tls=false
=== RUN TestServerContinuousDownload/tls=true
=== PAUSE TestServerContinuousDownload/tls=true
=== CONT TestServerContinuousDownload/tls=true
=== CONT TestServerContinuousDownload/tls=false
server_deadline_test.go:619: continuous download 1.2963195s > idle 300ms
=== NAME TestServerContinuousDownload/tls=true
server_deadline_test.go:619: continuous download 1.295400042s > idle 300ms
--- PASS: TestServerContinuousDownload (0.00s)
--- PASS: TestServerContinuousDownload/tls=false (1.30s)
--- PASS: TestServerContinuousDownload/tls=true (1.31s)
=== RUN TestServerDefaultIdleLongDownload
server_deadline_test.go:626: set SILO_TEST_LONG_UPLOAD=1 for >30s default-idle transfer regressions
--- SKIP: TestServerDefaultIdleLongDownload (0.00s)
=== RUN TestNewServer
--- PASS: TestNewServer (0.00s)
PASS
ok github.com/minio/minio/internal/http 11.654s
@@ -0,0 +1,213 @@
=== RUN TestStrictReadDeadline
=== RUN TestStrictReadDeadline/SetReadDeadline
=== RUN TestStrictReadDeadline/SetDeadline
--- PASS: TestStrictReadDeadline (0.00s)
--- PASS: TestStrictReadDeadline/SetReadDeadline (0.00s)
--- PASS: TestStrictReadDeadline/SetDeadline (0.00s)
=== RUN TestDefaultReadDeadlineStillRenews
--- PASS: TestDefaultReadDeadlineStillRenews (0.00s)
=== RUN TestStrictExpiredFutureReadDeadline
--- PASS: TestStrictExpiredFutureReadDeadline (0.06s)
=== RUN TestConcurrentStrictReadDeadline
--- PASS: TestConcurrentStrictReadDeadline (0.00s)
=== RUN TestBuffConnReadTimeout
--- PASS: TestBuffConnReadTimeout (3.02s)
=== RUN TestBuffConnReadCheckTimeout
--- PASS: TestBuffConnReadCheckTimeout (0.50s)
PASS
ok github.com/minio/minio/internal/deadlineconn 5.330s
=== RUN TestCheckPortAvailability
check_port_test.go:31:
--- SKIP: TestCheckPortAvailability (0.00s)
=== RUN TestNewHTTPListener
--- PASS: TestNewHTTPListener (0.06s)
=== RUN TestHTTPListenerStartClose
--- PASS: TestHTTPListenerStartClose (0.05s)
=== RUN TestHTTPListenerAddr
--- PASS: TestHTTPListenerAddr (0.01s)
=== RUN TestHTTPListenerAddrs
--- PASS: TestHTTPListenerAddrs (0.00s)
=== RUN TestServerReadHeaderDeadline
=== RUN TestServerReadHeaderDeadline/tls=false/second=false/trickle=false
=== PAUSE TestServerReadHeaderDeadline/tls=false/second=false/trickle=false
=== RUN TestServerReadHeaderDeadline/tls=false/second=false/trickle=true
=== PAUSE TestServerReadHeaderDeadline/tls=false/second=false/trickle=true
=== RUN TestServerReadHeaderDeadline/tls=false/second=true/trickle=false
=== PAUSE TestServerReadHeaderDeadline/tls=false/second=true/trickle=false
=== RUN TestServerReadHeaderDeadline/tls=false/second=true/trickle=true
=== PAUSE TestServerReadHeaderDeadline/tls=false/second=true/trickle=true
=== RUN TestServerReadHeaderDeadline/tls=true/second=false/trickle=false
=== PAUSE TestServerReadHeaderDeadline/tls=true/second=false/trickle=false
=== RUN TestServerReadHeaderDeadline/tls=true/second=false/trickle=true
=== PAUSE TestServerReadHeaderDeadline/tls=true/second=false/trickle=true
=== RUN TestServerReadHeaderDeadline/tls=true/second=true/trickle=false
=== PAUSE TestServerReadHeaderDeadline/tls=true/second=true/trickle=false
=== RUN TestServerReadHeaderDeadline/tls=true/second=true/trickle=true
=== PAUSE TestServerReadHeaderDeadline/tls=true/second=true/trickle=true
=== CONT TestServerReadHeaderDeadline/tls=false/second=false/trickle=false
=== CONT TestServerReadHeaderDeadline/tls=false/second=true/trickle=true
=== CONT TestServerReadHeaderDeadline/tls=false/second=false/trickle=true
=== CONT TestServerReadHeaderDeadline/tls=false/second=true/trickle=false
=== CONT TestServerReadHeaderDeadline/tls=true/second=true/trickle=false
=== CONT TestServerReadHeaderDeadline/tls=true/second=true/trickle=true
=== CONT TestServerReadHeaderDeadline/tls=true/second=false/trickle=true
=== CONT TestServerReadHeaderDeadline/tls=true/second=false/trickle=false
--- PASS: TestServerReadHeaderDeadline (0.00s)
--- PASS: TestServerReadHeaderDeadline/tls=false/second=false/trickle=true (0.41s)
--- PASS: TestServerReadHeaderDeadline/tls=true/second=false/trickle=true (0.43s)
--- PASS: TestServerReadHeaderDeadline/tls=false/second=false/trickle=false (0.60s)
--- PASS: TestServerReadHeaderDeadline/tls=true/second=false/trickle=false (0.62s)
--- PASS: TestServerReadHeaderDeadline/tls=false/second=true/trickle=true (0.82s)
--- PASS: TestServerReadHeaderDeadline/tls=true/second=true/trickle=true (0.82s)
--- PASS: TestServerReadHeaderDeadline/tls=false/second=true/trickle=false (1.01s)
--- PASS: TestServerReadHeaderDeadline/tls=true/second=true/trickle=false (1.02s)
=== RUN TestServerKeepAliveDeadline
=== RUN TestServerKeepAliveDeadline/tls=false
=== PAUSE TestServerKeepAliveDeadline/tls=false
=== RUN TestServerKeepAliveDeadline/tls=true
=== PAUSE TestServerKeepAliveDeadline/tls=true
=== CONT TestServerKeepAliveDeadline/tls=true
=== CONT TestServerKeepAliveDeadline/tls=false
--- PASS: TestServerKeepAliveDeadline (0.00s)
--- PASS: TestServerKeepAliveDeadline/tls=false (1.51s)
--- PASS: TestServerKeepAliveDeadline/tls=true (1.52s)
=== RUN TestServerContinuousUpload
=== RUN TestServerContinuousUpload/tls=false/chunked=false/expect=false
=== PAUSE TestServerContinuousUpload/tls=false/chunked=false/expect=false
=== RUN TestServerContinuousUpload/tls=false/chunked=false/expect=true
=== PAUSE TestServerContinuousUpload/tls=false/chunked=false/expect=true
=== RUN TestServerContinuousUpload/tls=false/chunked=true/expect=false
=== PAUSE TestServerContinuousUpload/tls=false/chunked=true/expect=false
=== RUN TestServerContinuousUpload/tls=false/chunked=true/expect=true
=== PAUSE TestServerContinuousUpload/tls=false/chunked=true/expect=true
=== RUN TestServerContinuousUpload/tls=true/chunked=false/expect=false
=== PAUSE TestServerContinuousUpload/tls=true/chunked=false/expect=false
=== RUN TestServerContinuousUpload/tls=true/chunked=false/expect=true
=== PAUSE TestServerContinuousUpload/tls=true/chunked=false/expect=true
=== RUN TestServerContinuousUpload/tls=true/chunked=true/expect=false
=== PAUSE TestServerContinuousUpload/tls=true/chunked=true/expect=false
=== RUN TestServerContinuousUpload/tls=true/chunked=true/expect=true
=== PAUSE TestServerContinuousUpload/tls=true/chunked=true/expect=true
=== CONT TestServerContinuousUpload/tls=false/chunked=false/expect=false
=== CONT TestServerContinuousUpload/tls=true/chunked=false/expect=false
=== CONT TestServerContinuousUpload/tls=true/chunked=true/expect=false
=== CONT TestServerContinuousUpload/tls=true/chunked=true/expect=true
=== CONT TestServerContinuousUpload/tls=true/chunked=false/expect=true
=== CONT TestServerContinuousUpload/tls=false/chunked=false/expect=true
=== CONT TestServerContinuousUpload/tls=false/chunked=true/expect=false
=== CONT TestServerContinuousUpload/tls=false/chunked=true/expect=true
=== NAME TestServerContinuousUpload/tls=false/chunked=false/expect=false
server_deadline_test.go:259: continuous upload 1.299239125s > idle 300ms
=== NAME TestServerContinuousUpload/tls=false/chunked=true/expect=false
server_deadline_test.go:259: continuous upload 1.297586417s > idle 300ms
=== NAME TestServerContinuousUpload/tls=false/chunked=false/expect=true
server_deadline_test.go:259: continuous upload 1.308398125s > idle 300ms
=== NAME TestServerContinuousUpload/tls=true/chunked=false/expect=true
server_deadline_test.go:259: continuous upload 1.300855208s > idle 300ms
=== NAME TestServerContinuousUpload/tls=true/chunked=false/expect=false
server_deadline_test.go:259: continuous upload 1.30259925s > idle 300ms
=== NAME TestServerContinuousUpload/tls=true/chunked=true/expect=true
server_deadline_test.go:259: continuous upload 1.301167166s > idle 300ms
=== NAME TestServerContinuousUpload/tls=false/chunked=true/expect=true
server_deadline_test.go:259: continuous upload 1.309196541s > idle 300ms
=== NAME TestServerContinuousUpload/tls=true/chunked=true/expect=false
server_deadline_test.go:259: continuous upload 1.302837125s > idle 300ms
--- PASS: TestServerContinuousUpload (0.00s)
--- PASS: TestServerContinuousUpload/tls=false/chunked=false/expect=false (1.30s)
--- PASS: TestServerContinuousUpload/tls=false/chunked=true/expect=false (1.30s)
--- PASS: TestServerContinuousUpload/tls=false/chunked=false/expect=true (1.32s)
--- PASS: TestServerContinuousUpload/tls=true/chunked=false/expect=true (1.32s)
--- PASS: TestServerContinuousUpload/tls=true/chunked=false/expect=false (1.32s)
--- PASS: TestServerContinuousUpload/tls=true/chunked=true/expect=true (1.32s)
--- PASS: TestServerContinuousUpload/tls=false/chunked=true/expect=true (1.32s)
--- PASS: TestServerContinuousUpload/tls=true/chunked=true/expect=false (1.32s)
=== RUN TestServerDefaultIdleLongUpload
server_deadline_test.go:268: set SILO_TEST_LONG_UPLOAD=1 for >30s default-idle regression
--- SKIP: TestServerDefaultIdleLongUpload (0.00s)
=== RUN TestServerIdleBodyDeadline
=== RUN TestServerIdleBodyDeadline/tls=false
=== PAUSE TestServerIdleBodyDeadline/tls=false
=== RUN TestServerIdleBodyDeadline/tls=true
=== PAUSE TestServerIdleBodyDeadline/tls=true
=== CONT TestServerIdleBodyDeadline/tls=true
=== CONT TestServerIdleBodyDeadline/tls=false
--- PASS: TestServerIdleBodyDeadline (0.00s)
--- PASS: TestServerIdleBodyDeadline/tls=false (0.45s)
--- PASS: TestServerIdleBodyDeadline/tls=true (0.46s)
=== RUN TestServerBackgroundReadNoDeadline
=== RUN TestServerBackgroundReadNoDeadline/tls=false/body=false
=== PAUSE TestServerBackgroundReadNoDeadline/tls=false/body=false
=== RUN TestServerBackgroundReadNoDeadline/tls=false/body=true
=== PAUSE TestServerBackgroundReadNoDeadline/tls=false/body=true
=== RUN TestServerBackgroundReadNoDeadline/tls=true/body=false
=== PAUSE TestServerBackgroundReadNoDeadline/tls=true/body=false
=== RUN TestServerBackgroundReadNoDeadline/tls=true/body=true
=== PAUSE TestServerBackgroundReadNoDeadline/tls=true/body=true
=== CONT TestServerBackgroundReadNoDeadline/tls=false/body=false
=== CONT TestServerBackgroundReadNoDeadline/tls=false/body=true
=== CONT TestServerBackgroundReadNoDeadline/tls=true/body=false
=== CONT TestServerBackgroundReadNoDeadline/tls=true/body=true
--- PASS: TestServerBackgroundReadNoDeadline (0.00s)
--- PASS: TestServerBackgroundReadNoDeadline/tls=false/body=false (0.70s)
--- PASS: TestServerBackgroundReadNoDeadline/tls=false/body=true (0.70s)
--- PASS: TestServerBackgroundReadNoDeadline/tls=true/body=false (0.71s)
--- PASS: TestServerBackgroundReadNoDeadline/tls=true/body=true (0.71s)
=== RUN TestServerTLSHandshakeReadDeadline
2026/09/15 23:52:51 http: TLS handshake error from 127.0.0.1:54831: read tcp 127.0.0.1:54830->127.0.0.1:54831: i/o timeout
--- PASS: TestServerTLSHandshakeReadDeadline (0.20s)
=== RUN TestServerConnStateHook
=== RUN TestServerConnStateHook/tls=false
=== RUN TestServerConnStateHook/tls=true
--- PASS: TestServerConnStateHook (0.01s)
--- PASS: TestServerConnStateHook/tls=false (0.00s)
--- PASS: TestServerConnStateHook/tls=true (0.01s)
=== RUN TestServerHTTP2Deadlines
server_deadline_test.go:435: expected native HTTP/2 read timeout, got stream error: stream ID 5; INTERNAL_ERROR; i/o timeout
--- FAIL: TestServerHTTP2Deadlines (0.41s)
=== RUN TestServerEarlyBodyClose
=== RUN TestServerEarlyBodyClose/tls=false
=== PAUSE TestServerEarlyBodyClose/tls=false
=== RUN TestServerEarlyBodyClose/tls=true
=== PAUSE TestServerEarlyBodyClose/tls=true
=== CONT TestServerEarlyBodyClose/tls=true
=== CONT TestServerEarlyBodyClose/tls=false
--- PASS: TestServerEarlyBodyClose (0.00s)
--- PASS: TestServerEarlyBodyClose/tls=false (0.30s)
--- PASS: TestServerEarlyBodyClose/tls=true (0.31s)
=== RUN TestServerPipelinedDeadline
=== RUN TestServerPipelinedDeadline/tls=false
=== RUN TestServerPipelinedDeadline/tls=true
--- PASS: TestServerPipelinedDeadline (1.31s)
--- PASS: TestServerPipelinedDeadline/tls=false (0.65s)
--- PASS: TestServerPipelinedDeadline/tls=true (0.66s)
=== RUN TestServerHijackedDeadline
=== RUN TestServerHijackedDeadline/tls=false
=== PAUSE TestServerHijackedDeadline/tls=false
=== RUN TestServerHijackedDeadline/tls=true
=== PAUSE TestServerHijackedDeadline/tls=true
=== CONT TestServerHijackedDeadline/tls=false
=== CONT TestServerHijackedDeadline/tls=true
--- PASS: TestServerHijackedDeadline (0.00s)
--- PASS: TestServerHijackedDeadline/tls=false (0.70s)
--- PASS: TestServerHijackedDeadline/tls=true (0.71s)
=== RUN TestServerContinuousDownload
=== RUN TestServerContinuousDownload/tls=false
=== PAUSE TestServerContinuousDownload/tls=false
=== RUN TestServerContinuousDownload/tls=true
=== PAUSE TestServerContinuousDownload/tls=true
=== CONT TestServerContinuousDownload/tls=true
=== CONT TestServerContinuousDownload/tls=false
server_deadline_test.go:588: continuous download 1.298471834s > idle 300ms
=== NAME TestServerContinuousDownload/tls=true
server_deadline_test.go:588: continuous download 1.29483875s > idle 300ms
--- PASS: TestServerContinuousDownload (0.00s)
--- PASS: TestServerContinuousDownload/tls=false (1.30s)
--- PASS: TestServerContinuousDownload/tls=true (1.30s)
=== RUN TestServerDefaultIdleLongDownload
server_deadline_test.go:595: set SILO_TEST_LONG_UPLOAD=1 for >30s default-idle transfer regressions
--- SKIP: TestServerDefaultIdleLongDownload (0.00s)
=== RUN TestNewServer
--- PASS: TestNewServer (0.00s)
FAIL
FAIL github.com/minio/minio/internal/http 10.023s
FAIL
@@ -0,0 +1,211 @@
=== RUN TestStrictReadDeadline
=== RUN TestStrictReadDeadline/SetReadDeadline
=== RUN TestStrictReadDeadline/SetDeadline
--- PASS: TestStrictReadDeadline (0.00s)
--- PASS: TestStrictReadDeadline/SetReadDeadline (0.00s)
--- PASS: TestStrictReadDeadline/SetDeadline (0.00s)
=== RUN TestDefaultReadDeadlineStillRenews
--- PASS: TestDefaultReadDeadlineStillRenews (0.00s)
=== RUN TestStrictExpiredFutureReadDeadline
--- PASS: TestStrictExpiredFutureReadDeadline (0.06s)
=== RUN TestConcurrentStrictReadDeadline
--- PASS: TestConcurrentStrictReadDeadline (0.00s)
=== RUN TestBuffConnReadTimeout
--- PASS: TestBuffConnReadTimeout (3.00s)
=== RUN TestBuffConnReadCheckTimeout
--- PASS: TestBuffConnReadCheckTimeout (0.50s)
PASS
ok github.com/minio/minio/internal/deadlineconn 5.069s
=== RUN TestCheckPortAvailability
check_port_test.go:31:
--- SKIP: TestCheckPortAvailability (0.00s)
=== RUN TestNewHTTPListener
--- PASS: TestNewHTTPListener (0.01s)
=== RUN TestHTTPListenerStartClose
--- PASS: TestHTTPListenerStartClose (0.00s)
=== RUN TestHTTPListenerAddr
--- PASS: TestHTTPListenerAddr (0.00s)
=== RUN TestHTTPListenerAddrs
--- PASS: TestHTTPListenerAddrs (0.00s)
=== RUN TestServerReadHeaderDeadline
=== RUN TestServerReadHeaderDeadline/tls=false/second=false/trickle=false
=== PAUSE TestServerReadHeaderDeadline/tls=false/second=false/trickle=false
=== RUN TestServerReadHeaderDeadline/tls=false/second=false/trickle=true
=== PAUSE TestServerReadHeaderDeadline/tls=false/second=false/trickle=true
=== RUN TestServerReadHeaderDeadline/tls=false/second=true/trickle=false
=== PAUSE TestServerReadHeaderDeadline/tls=false/second=true/trickle=false
=== RUN TestServerReadHeaderDeadline/tls=false/second=true/trickle=true
=== PAUSE TestServerReadHeaderDeadline/tls=false/second=true/trickle=true
=== RUN TestServerReadHeaderDeadline/tls=true/second=false/trickle=false
=== PAUSE TestServerReadHeaderDeadline/tls=true/second=false/trickle=false
=== RUN TestServerReadHeaderDeadline/tls=true/second=false/trickle=true
=== PAUSE TestServerReadHeaderDeadline/tls=true/second=false/trickle=true
=== RUN TestServerReadHeaderDeadline/tls=true/second=true/trickle=false
=== PAUSE TestServerReadHeaderDeadline/tls=true/second=true/trickle=false
=== RUN TestServerReadHeaderDeadline/tls=true/second=true/trickle=true
=== PAUSE TestServerReadHeaderDeadline/tls=true/second=true/trickle=true
=== CONT TestServerReadHeaderDeadline/tls=false/second=false/trickle=false
=== CONT TestServerReadHeaderDeadline/tls=true/second=false/trickle=false
=== CONT TestServerReadHeaderDeadline/tls=true/second=true/trickle=false
=== CONT TestServerReadHeaderDeadline/tls=false/second=true/trickle=true
=== CONT TestServerReadHeaderDeadline/tls=true/second=false/trickle=true
=== CONT TestServerReadHeaderDeadline/tls=false/second=false/trickle=true
=== CONT TestServerReadHeaderDeadline/tls=true/second=true/trickle=true
=== CONT TestServerReadHeaderDeadline/tls=false/second=true/trickle=false
--- PASS: TestServerReadHeaderDeadline (0.00s)
--- PASS: TestServerReadHeaderDeadline/tls=false/second=false/trickle=true (0.81s)
--- PASS: TestServerReadHeaderDeadline/tls=true/second=false/trickle=true (0.83s)
--- PASS: TestServerReadHeaderDeadline/tls=false/second=false/trickle=false (0.95s)
--- PASS: TestServerReadHeaderDeadline/tls=true/second=false/trickle=false (0.96s)
--- PASS: TestServerReadHeaderDeadline/tls=false/second=true/trickle=true (1.56s)
--- PASS: TestServerReadHeaderDeadline/tls=true/second=true/trickle=true (1.57s)
--- PASS: TestServerReadHeaderDeadline/tls=false/second=true/trickle=false (1.70s)
--- PASS: TestServerReadHeaderDeadline/tls=true/second=true/trickle=false (1.71s)
=== RUN TestServerKeepAliveDeadline
=== RUN TestServerKeepAliveDeadline/tls=false
=== PAUSE TestServerKeepAliveDeadline/tls=false
=== RUN TestServerKeepAliveDeadline/tls=true
=== PAUSE TestServerKeepAliveDeadline/tls=true
=== CONT TestServerKeepAliveDeadline/tls=true
=== CONT TestServerKeepAliveDeadline/tls=false
--- PASS: TestServerKeepAliveDeadline (0.00s)
--- PASS: TestServerKeepAliveDeadline/tls=false (1.50s)
--- PASS: TestServerKeepAliveDeadline/tls=true (1.51s)
=== RUN TestServerContinuousUpload
=== RUN TestServerContinuousUpload/tls=false/chunked=false/expect=false
=== PAUSE TestServerContinuousUpload/tls=false/chunked=false/expect=false
=== RUN TestServerContinuousUpload/tls=false/chunked=false/expect=true
=== PAUSE TestServerContinuousUpload/tls=false/chunked=false/expect=true
=== RUN TestServerContinuousUpload/tls=false/chunked=true/expect=false
=== PAUSE TestServerContinuousUpload/tls=false/chunked=true/expect=false
=== RUN TestServerContinuousUpload/tls=false/chunked=true/expect=true
=== PAUSE TestServerContinuousUpload/tls=false/chunked=true/expect=true
=== RUN TestServerContinuousUpload/tls=true/chunked=false/expect=false
=== PAUSE TestServerContinuousUpload/tls=true/chunked=false/expect=false
=== RUN TestServerContinuousUpload/tls=true/chunked=false/expect=true
=== PAUSE TestServerContinuousUpload/tls=true/chunked=false/expect=true
=== RUN TestServerContinuousUpload/tls=true/chunked=true/expect=false
=== PAUSE TestServerContinuousUpload/tls=true/chunked=true/expect=false
=== RUN TestServerContinuousUpload/tls=true/chunked=true/expect=true
=== PAUSE TestServerContinuousUpload/tls=true/chunked=true/expect=true
=== CONT TestServerContinuousUpload/tls=false/chunked=false/expect=false
=== CONT TestServerContinuousUpload/tls=false/chunked=true/expect=true
=== CONT TestServerContinuousUpload/tls=true/chunked=false/expect=true
=== CONT TestServerContinuousUpload/tls=false/chunked=true/expect=false
=== CONT TestServerContinuousUpload/tls=true/chunked=true/expect=true
=== CONT TestServerContinuousUpload/tls=true/chunked=true/expect=false
=== CONT TestServerContinuousUpload/tls=true/chunked=false/expect=false
=== CONT TestServerContinuousUpload/tls=false/chunked=false/expect=true
=== NAME TestServerContinuousUpload/tls=false/chunked=true/expect=false
server_deadline_test.go:259: continuous upload 1.293135s > idle 300ms
=== NAME TestServerContinuousUpload/tls=false/chunked=true/expect=true
server_deadline_test.go:259: continuous upload 1.286289708s > idle 300ms
=== NAME TestServerContinuousUpload/tls=false/chunked=false/expect=true
server_deadline_test.go:259: continuous upload 1.286156s > idle 300ms
=== NAME TestServerContinuousUpload/tls=false/chunked=false/expect=false
server_deadline_test.go:259: continuous upload 1.288825375s > idle 300ms
=== NAME TestServerContinuousUpload/tls=true/chunked=false/expect=false
server_deadline_test.go:259: continuous upload 1.293748959s > idle 300ms
=== NAME TestServerContinuousUpload/tls=true/chunked=true/expect=false
server_deadline_test.go:259: continuous upload 1.293017291s > idle 300ms
=== NAME TestServerContinuousUpload/tls=true/chunked=true/expect=true
server_deadline_test.go:259: continuous upload 1.293105875s > idle 300ms
=== NAME TestServerContinuousUpload/tls=true/chunked=false/expect=true
server_deadline_test.go:259: continuous upload 1.292306625s > idle 300ms
--- PASS: TestServerContinuousUpload (0.00s)
--- PASS: TestServerContinuousUpload/tls=false/chunked=true/expect=false (1.29s)
--- PASS: TestServerContinuousUpload/tls=false/chunked=true/expect=true (1.29s)
--- PASS: TestServerContinuousUpload/tls=false/chunked=false/expect=false (1.29s)
--- PASS: TestServerContinuousUpload/tls=false/chunked=false/expect=true (1.29s)
--- PASS: TestServerContinuousUpload/tls=true/chunked=true/expect=false (1.31s)
--- PASS: TestServerContinuousUpload/tls=true/chunked=false/expect=true (1.31s)
--- PASS: TestServerContinuousUpload/tls=true/chunked=false/expect=false (1.31s)
--- PASS: TestServerContinuousUpload/tls=true/chunked=true/expect=true (1.31s)
=== RUN TestServerDefaultIdleLongUpload
server_deadline_test.go:268: set SILO_TEST_LONG_UPLOAD=1 for >30s default-idle regression
--- SKIP: TestServerDefaultIdleLongUpload (0.00s)
=== RUN TestServerIdleBodyDeadline
=== RUN TestServerIdleBodyDeadline/tls=false
=== PAUSE TestServerIdleBodyDeadline/tls=false
=== RUN TestServerIdleBodyDeadline/tls=true
=== PAUSE TestServerIdleBodyDeadline/tls=true
=== CONT TestServerIdleBodyDeadline/tls=false
=== CONT TestServerIdleBodyDeadline/tls=true
--- PASS: TestServerIdleBodyDeadline (0.00s)
--- PASS: TestServerIdleBodyDeadline/tls=false (0.45s)
--- PASS: TestServerIdleBodyDeadline/tls=true (0.46s)
=== RUN TestServerBackgroundReadNoDeadline
=== RUN TestServerBackgroundReadNoDeadline/tls=false/body=false
=== PAUSE TestServerBackgroundReadNoDeadline/tls=false/body=false
=== RUN TestServerBackgroundReadNoDeadline/tls=false/body=true
=== PAUSE TestServerBackgroundReadNoDeadline/tls=false/body=true
=== RUN TestServerBackgroundReadNoDeadline/tls=true/body=false
=== PAUSE TestServerBackgroundReadNoDeadline/tls=true/body=false
=== RUN TestServerBackgroundReadNoDeadline/tls=true/body=true
=== PAUSE TestServerBackgroundReadNoDeadline/tls=true/body=true
=== CONT TestServerBackgroundReadNoDeadline/tls=false/body=false
=== CONT TestServerBackgroundReadNoDeadline/tls=true/body=false
=== CONT TestServerBackgroundReadNoDeadline/tls=false/body=true
=== CONT TestServerBackgroundReadNoDeadline/tls=true/body=true
--- PASS: TestServerBackgroundReadNoDeadline (0.00s)
--- PASS: TestServerBackgroundReadNoDeadline/tls=false/body=false (0.70s)
--- PASS: TestServerBackgroundReadNoDeadline/tls=false/body=true (0.70s)
--- PASS: TestServerBackgroundReadNoDeadline/tls=true/body=false (0.71s)
--- PASS: TestServerBackgroundReadNoDeadline/tls=true/body=true (0.71s)
=== RUN TestServerTLSHandshakeReadDeadline
2026/09/15 23:53:59 http: TLS handshake error from 127.0.0.1:55169: read tcp 127.0.0.1:55168->127.0.0.1:55169: i/o timeout
--- PASS: TestServerTLSHandshakeReadDeadline (0.20s)
=== RUN TestServerConnStateHook
=== RUN TestServerConnStateHook/tls=false
=== RUN TestServerConnStateHook/tls=true
--- PASS: TestServerConnStateHook (0.01s)
--- PASS: TestServerConnStateHook/tls=false (0.00s)
--- PASS: TestServerConnStateHook/tls=true (0.01s)
=== RUN TestServerHTTP2Deadlines
--- PASS: TestServerHTTP2Deadlines (0.41s)
=== RUN TestServerEarlyBodyClose
=== RUN TestServerEarlyBodyClose/tls=false
=== PAUSE TestServerEarlyBodyClose/tls=false
=== RUN TestServerEarlyBodyClose/tls=true
=== PAUSE TestServerEarlyBodyClose/tls=true
=== CONT TestServerEarlyBodyClose/tls=true
=== CONT TestServerEarlyBodyClose/tls=false
--- PASS: TestServerEarlyBodyClose (0.00s)
--- PASS: TestServerEarlyBodyClose/tls=false (0.30s)
--- PASS: TestServerEarlyBodyClose/tls=true (0.31s)
=== RUN TestServerPipelinedDeadline
=== RUN TestServerPipelinedDeadline/tls=false
=== RUN TestServerPipelinedDeadline/tls=true
--- PASS: TestServerPipelinedDeadline (1.31s)
--- PASS: TestServerPipelinedDeadline/tls=false (0.65s)
--- PASS: TestServerPipelinedDeadline/tls=true (0.66s)
=== RUN TestServerHijackedDeadline
=== RUN TestServerHijackedDeadline/tls=false
=== PAUSE TestServerHijackedDeadline/tls=false
=== RUN TestServerHijackedDeadline/tls=true
=== PAUSE TestServerHijackedDeadline/tls=true
=== CONT TestServerHijackedDeadline/tls=false
=== CONT TestServerHijackedDeadline/tls=true
--- PASS: TestServerHijackedDeadline (0.00s)
--- PASS: TestServerHijackedDeadline/tls=false (0.70s)
--- PASS: TestServerHijackedDeadline/tls=true (0.71s)
=== RUN TestServerContinuousDownload
=== RUN TestServerContinuousDownload/tls=false
=== PAUSE TestServerContinuousDownload/tls=false
=== RUN TestServerContinuousDownload/tls=true
=== PAUSE TestServerContinuousDownload/tls=true
=== CONT TestServerContinuousDownload/tls=true
=== CONT TestServerContinuousDownload/tls=false
server_deadline_test.go:624: continuous download 1.297514833s > idle 300ms
=== NAME TestServerContinuousDownload/tls=true
server_deadline_test.go:624: continuous download 1.29253225s > idle 300ms
--- PASS: TestServerContinuousDownload (0.00s)
--- PASS: TestServerContinuousDownload/tls=false (1.30s)
--- PASS: TestServerContinuousDownload/tls=true (1.30s)
=== RUN TestServerDefaultIdleLongDownload
server_deadline_test.go:631: set SILO_TEST_LONG_UPLOAD=1 for >30s default-idle transfer regressions
--- SKIP: TestServerDefaultIdleLongDownload (0.00s)
=== RUN TestNewServer
--- PASS: TestNewServer (0.00s)
PASS
ok github.com/minio/minio/internal/http 11.525s
@@ -0,0 +1,34 @@
=== RUN TestServerDefaultIdleLongUpload
=== PAUSE TestServerDefaultIdleLongUpload
=== RUN TestServerDefaultIdleLongDownload
=== PAUSE TestServerDefaultIdleLongDownload
=== CONT TestServerDefaultIdleLongUpload
=== RUN TestServerDefaultIdleLongUpload/tls=false
=== PAUSE TestServerDefaultIdleLongUpload/tls=false
=== RUN TestServerDefaultIdleLongUpload/tls=true
=== PAUSE TestServerDefaultIdleLongUpload/tls=true
=== CONT TestServerDefaultIdleLongUpload/tls=false
=== CONT TestServerDefaultIdleLongDownload
=== RUN TestServerDefaultIdleLongDownload/tls=false
=== PAUSE TestServerDefaultIdleLongDownload/tls=false
=== RUN TestServerDefaultIdleLongDownload/tls=true
=== PAUSE TestServerDefaultIdleLongDownload/tls=true
=== CONT TestServerDefaultIdleLongDownload/tls=false
=== CONT TestServerDefaultIdleLongDownload/tls=true
=== CONT TestServerDefaultIdleLongUpload/tls=true
=== NAME TestServerDefaultIdleLongDownload/tls=true
server_deadline_test.go:601: continuous download 33.028469208s > idle 30s
=== NAME TestServerDefaultIdleLongDownload/tls=false
server_deadline_test.go:601: continuous download 33.033171416s > idle 30s
=== NAME TestServerDefaultIdleLongUpload/tls=true
server_deadline_test.go:274: continuous upload 33.028635792s > idle 30s
=== NAME TestServerDefaultIdleLongUpload/tls=false
server_deadline_test.go:274: continuous upload 33.033198583s > idle 30s
--- PASS: TestServerDefaultIdleLongDownload (0.00s)
--- PASS: TestServerDefaultIdleLongDownload/tls=true (33.03s)
--- PASS: TestServerDefaultIdleLongDownload/tls=false (33.03s)
--- PASS: TestServerDefaultIdleLongUpload (0.00s)
--- PASS: TestServerDefaultIdleLongUpload/tls=false (33.03s)
--- PASS: TestServerDefaultIdleLongUpload/tls=true (33.03s)
PASS
ok github.com/minio/minio/internal/http 34.193s
@@ -0,0 +1,3 @@
$ git diff --check 9ebe81c1b3611f9cc73e676b5b741c2be62c467a --
exit_code=0
+39
View File
@@ -0,0 +1,39 @@
=== RUN TestDisconnect
connection_test.go:90: Started server on 127.0.0.1:54773 URL: http://127.0.0.1:54773
connection_test.go:91: Started server on 127.0.0.1:54774 URL: http://127.0.0.1:54774
connection_test.go:46: Got a GET request for: /minio/grid/v1
connection_test.go:140: Roundtrip: sending request
connection_test.go:142: Roundtrip: 246.625µs [] remote disconnected
connection_test.go:46: Got a GET request for: /minio/grid/v1
connection_test.go:157: Resp: {[] remote disconnected} <nil>
connection_test.go:46: Got a GET request for: /minio/grid/v1
--- PASS: TestDisconnect (0.01s)
=== RUN TestSingleRoundtrip
=== RUN TestSingleRoundtrip/localToRemote
=== NAME TestSingleRoundtrip
grid_test.go:66: 1: server payload: 17 bytes.
=== NAME TestSingleRoundtrip/localToRemote
grid_test.go:90: Roundtrip: 141.625µs
=== RUN TestSingleRoundtrip/localToRemoteErr
=== NAME TestSingleRoundtrip
grid_test.go:71: 2: server payload: 17 bytes.
=== NAME TestSingleRoundtrip/localToRemoteErr
grid_test.go:97: Roundtrip: 187.625µs
grid_test.go:104: Roundtrip: 195.958µs
=== RUN TestSingleRoundtrip/localToRemoteHuge
=== NAME TestSingleRoundtrip
grid_test.go:66: 1: server payload: 1048576 bytes.
=== NAME TestSingleRoundtrip/localToRemoteHuge
grid_test.go:116: Roundtrip: 3.062792ms
=== RUN TestSingleRoundtrip/localToRemoteErrHuge
=== NAME TestSingleRoundtrip
grid_test.go:71: 2: server payload: 1024 bytes.
=== NAME TestSingleRoundtrip/localToRemoteErrHuge
grid_test.go:130: Roundtrip: 232.958µs
--- PASS: TestSingleRoundtrip (0.00s)
--- PASS: TestSingleRoundtrip/localToRemote (0.00s)
--- PASS: TestSingleRoundtrip/localToRemoteErr (0.00s)
--- PASS: TestSingleRoundtrip/localToRemoteHuge (0.00s)
--- PASS: TestSingleRoundtrip/localToRemoteErrHuge (0.00s)
PASS
ok github.com/minio/minio/internal/grid 0.622s
@@ -0,0 +1,195 @@
=== RUN TestStrictReadDeadline
=== RUN TestStrictReadDeadline/SetReadDeadline
=== RUN TestStrictReadDeadline/SetDeadline
--- PASS: TestStrictReadDeadline (0.00s)
--- PASS: TestStrictReadDeadline/SetReadDeadline (0.00s)
--- PASS: TestStrictReadDeadline/SetDeadline (0.00s)
=== RUN TestDefaultReadDeadlineStillRenews
--- PASS: TestDefaultReadDeadlineStillRenews (0.00s)
=== RUN TestStrictExpiredFutureReadDeadline
--- PASS: TestStrictExpiredFutureReadDeadline (0.06s)
=== RUN TestConcurrentStrictReadDeadline
--- PASS: TestConcurrentStrictReadDeadline (0.00s)
PASS
ok github.com/minio/minio/internal/deadlineconn 0.652s
=== RUN TestServerReadHeaderDeadline
=== RUN TestServerReadHeaderDeadline/tls=false/second=false/trickle=false
=== PAUSE TestServerReadHeaderDeadline/tls=false/second=false/trickle=false
=== RUN TestServerReadHeaderDeadline/tls=false/second=false/trickle=true
=== PAUSE TestServerReadHeaderDeadline/tls=false/second=false/trickle=true
=== RUN TestServerReadHeaderDeadline/tls=false/second=true/trickle=false
=== PAUSE TestServerReadHeaderDeadline/tls=false/second=true/trickle=false
=== RUN TestServerReadHeaderDeadline/tls=false/second=true/trickle=true
=== PAUSE TestServerReadHeaderDeadline/tls=false/second=true/trickle=true
=== RUN TestServerReadHeaderDeadline/tls=true/second=false/trickle=false
=== PAUSE TestServerReadHeaderDeadline/tls=true/second=false/trickle=false
=== RUN TestServerReadHeaderDeadline/tls=true/second=false/trickle=true
=== PAUSE TestServerReadHeaderDeadline/tls=true/second=false/trickle=true
=== RUN TestServerReadHeaderDeadline/tls=true/second=true/trickle=false
=== PAUSE TestServerReadHeaderDeadline/tls=true/second=true/trickle=false
=== RUN TestServerReadHeaderDeadline/tls=true/second=true/trickle=true
=== PAUSE TestServerReadHeaderDeadline/tls=true/second=true/trickle=true
=== CONT TestServerReadHeaderDeadline/tls=false/second=false/trickle=false
=== CONT TestServerReadHeaderDeadline/tls=true/second=false/trickle=false
=== CONT TestServerReadHeaderDeadline/tls=true/second=true/trickle=false
=== CONT TestServerReadHeaderDeadline/tls=false/second=true/trickle=false
=== CONT TestServerReadHeaderDeadline/tls=false/second=false/trickle=true
=== CONT TestServerReadHeaderDeadline/tls=true/second=false/trickle=true
=== CONT TestServerReadHeaderDeadline/tls=false/second=true/trickle=true
=== CONT TestServerReadHeaderDeadline/tls=true/second=true/trickle=true
--- PASS: TestServerReadHeaderDeadline (0.00s)
--- PASS: TestServerReadHeaderDeadline/tls=false/second=false/trickle=true (0.40s)
--- PASS: TestServerReadHeaderDeadline/tls=true/second=false/trickle=true (0.41s)
--- PASS: TestServerReadHeaderDeadline/tls=false/second=false/trickle=false (0.60s)
--- PASS: TestServerReadHeaderDeadline/tls=true/second=false/trickle=false (0.61s)
--- PASS: TestServerReadHeaderDeadline/tls=false/second=true/trickle=true (0.80s)
--- PASS: TestServerReadHeaderDeadline/tls=true/second=true/trickle=true (0.81s)
--- PASS: TestServerReadHeaderDeadline/tls=false/second=true/trickle=false (1.00s)
--- PASS: TestServerReadHeaderDeadline/tls=true/second=true/trickle=false (1.01s)
=== RUN TestServerKeepAliveDeadline
=== RUN TestServerKeepAliveDeadline/tls=false
=== PAUSE TestServerKeepAliveDeadline/tls=false
=== RUN TestServerKeepAliveDeadline/tls=true
=== PAUSE TestServerKeepAliveDeadline/tls=true
=== CONT TestServerKeepAliveDeadline/tls=false
=== CONT TestServerKeepAliveDeadline/tls=true
--- PASS: TestServerKeepAliveDeadline (0.00s)
--- PASS: TestServerKeepAliveDeadline/tls=true (1.50s)
--- PASS: TestServerKeepAliveDeadline/tls=false (1.50s)
=== RUN TestServerContinuousUpload
=== RUN TestServerContinuousUpload/tls=false/chunked=false/expect=false
=== PAUSE TestServerContinuousUpload/tls=false/chunked=false/expect=false
=== RUN TestServerContinuousUpload/tls=false/chunked=false/expect=true
=== PAUSE TestServerContinuousUpload/tls=false/chunked=false/expect=true
=== RUN TestServerContinuousUpload/tls=false/chunked=true/expect=false
=== PAUSE TestServerContinuousUpload/tls=false/chunked=true/expect=false
=== RUN TestServerContinuousUpload/tls=false/chunked=true/expect=true
=== PAUSE TestServerContinuousUpload/tls=false/chunked=true/expect=true
=== RUN TestServerContinuousUpload/tls=true/chunked=false/expect=false
=== PAUSE TestServerContinuousUpload/tls=true/chunked=false/expect=false
=== RUN TestServerContinuousUpload/tls=true/chunked=false/expect=true
=== PAUSE TestServerContinuousUpload/tls=true/chunked=false/expect=true
=== RUN TestServerContinuousUpload/tls=true/chunked=true/expect=false
=== PAUSE TestServerContinuousUpload/tls=true/chunked=true/expect=false
=== RUN TestServerContinuousUpload/tls=true/chunked=true/expect=true
=== PAUSE TestServerContinuousUpload/tls=true/chunked=true/expect=true
=== CONT TestServerContinuousUpload/tls=false/chunked=false/expect=false
=== CONT TestServerContinuousUpload/tls=true/chunked=false/expect=false
=== CONT TestServerContinuousUpload/tls=false/chunked=true/expect=false
=== CONT TestServerContinuousUpload/tls=false/chunked=false/expect=true
=== CONT TestServerContinuousUpload/tls=true/chunked=true/expect=false
=== CONT TestServerContinuousUpload/tls=true/chunked=true/expect=true
=== CONT TestServerContinuousUpload/tls=true/chunked=false/expect=true
=== CONT TestServerContinuousUpload/tls=false/chunked=true/expect=true
=== NAME TestServerContinuousUpload/tls=false/chunked=false/expect=true
server_deadline_test.go:259: continuous upload 1.296547458s > idle 300ms
=== NAME TestServerContinuousUpload/tls=false/chunked=true/expect=false
server_deadline_test.go:259: continuous upload 1.296906542s > idle 300ms
=== NAME TestServerContinuousUpload/tls=true/chunked=true/expect=false
server_deadline_test.go:259: continuous upload 1.293365791s > idle 300ms
=== NAME TestServerContinuousUpload/tls=true/chunked=true/expect=true
server_deadline_test.go:259: continuous upload 1.293554459s > idle 300ms
=== NAME TestServerContinuousUpload/tls=false/chunked=false/expect=false
server_deadline_test.go:259: continuous upload 1.296912417s > idle 300ms
=== NAME TestServerContinuousUpload/tls=true/chunked=false/expect=true
server_deadline_test.go:259: continuous upload 1.293226958s > idle 300ms
=== NAME TestServerContinuousUpload/tls=false/chunked=true/expect=true
server_deadline_test.go:259: continuous upload 1.295960125s > idle 300ms
=== NAME TestServerContinuousUpload/tls=true/chunked=false/expect=false
server_deadline_test.go:259: continuous upload 1.29373425s > idle 300ms
--- PASS: TestServerContinuousUpload (0.00s)
--- PASS: TestServerContinuousUpload/tls=true/chunked=true/expect=false (1.30s)
--- PASS: TestServerContinuousUpload/tls=false/chunked=true/expect=true (1.30s)
--- PASS: TestServerContinuousUpload/tls=true/chunked=false/expect=false (1.30s)
--- PASS: TestServerContinuousUpload/tls=false/chunked=false/expect=false (1.30s)
--- PASS: TestServerContinuousUpload/tls=false/chunked=true/expect=false (1.30s)
--- PASS: TestServerContinuousUpload/tls=false/chunked=false/expect=true (1.30s)
--- PASS: TestServerContinuousUpload/tls=true/chunked=false/expect=true (1.30s)
--- PASS: TestServerContinuousUpload/tls=true/chunked=true/expect=true (1.30s)
=== RUN TestServerDefaultIdleLongUpload
server_deadline_test.go:268: set SILO_TEST_LONG_UPLOAD=1 for >30s default-idle regression
--- SKIP: TestServerDefaultIdleLongUpload (0.00s)
=== RUN TestServerIdleBodyDeadline
=== RUN TestServerIdleBodyDeadline/tls=false
=== PAUSE TestServerIdleBodyDeadline/tls=false
=== RUN TestServerIdleBodyDeadline/tls=true
=== PAUSE TestServerIdleBodyDeadline/tls=true
=== CONT TestServerIdleBodyDeadline/tls=false
=== CONT TestServerIdleBodyDeadline/tls=true
--- PASS: TestServerIdleBodyDeadline (0.00s)
--- PASS: TestServerIdleBodyDeadline/tls=false (0.45s)
--- PASS: TestServerIdleBodyDeadline/tls=true (0.45s)
=== RUN TestServerBackgroundReadNoDeadline
=== RUN TestServerBackgroundReadNoDeadline/tls=false/body=false
=== PAUSE TestServerBackgroundReadNoDeadline/tls=false/body=false
=== RUN TestServerBackgroundReadNoDeadline/tls=false/body=true
=== PAUSE TestServerBackgroundReadNoDeadline/tls=false/body=true
=== RUN TestServerBackgroundReadNoDeadline/tls=true/body=false
=== PAUSE TestServerBackgroundReadNoDeadline/tls=true/body=false
=== RUN TestServerBackgroundReadNoDeadline/tls=true/body=true
=== PAUSE TestServerBackgroundReadNoDeadline/tls=true/body=true
=== CONT TestServerBackgroundReadNoDeadline/tls=false/body=false
=== CONT TestServerBackgroundReadNoDeadline/tls=true/body=false
=== CONT TestServerBackgroundReadNoDeadline/tls=false/body=true
=== CONT TestServerBackgroundReadNoDeadline/tls=true/body=true
--- PASS: TestServerBackgroundReadNoDeadline (0.00s)
--- PASS: TestServerBackgroundReadNoDeadline/tls=false/body=true (0.70s)
--- PASS: TestServerBackgroundReadNoDeadline/tls=false/body=false (0.70s)
--- PASS: TestServerBackgroundReadNoDeadline/tls=true/body=true (0.70s)
--- PASS: TestServerBackgroundReadNoDeadline/tls=true/body=false (0.70s)
=== RUN TestServerTLSHandshakeReadDeadline
2026/09/15 23:51:45 http: TLS handshake error from 127.0.0.1:54459: read tcp 127.0.0.1:54458->127.0.0.1:54459: i/o timeout
--- PASS: TestServerTLSHandshakeReadDeadline (0.20s)
=== RUN TestServerConnStateHook
=== RUN TestServerConnStateHook/tls=false
=== RUN TestServerConnStateHook/tls=true
--- PASS: TestServerConnStateHook (0.00s)
--- PASS: TestServerConnStateHook/tls=false (0.00s)
--- PASS: TestServerConnStateHook/tls=true (0.00s)
=== RUN TestServerHTTP2Deadlines
--- PASS: TestServerHTTP2Deadlines (0.40s)
=== RUN TestServerEarlyBodyClose
=== RUN TestServerEarlyBodyClose/tls=false
=== PAUSE TestServerEarlyBodyClose/tls=false
=== RUN TestServerEarlyBodyClose/tls=true
=== PAUSE TestServerEarlyBodyClose/tls=true
=== CONT TestServerEarlyBodyClose/tls=false
=== CONT TestServerEarlyBodyClose/tls=true
--- PASS: TestServerEarlyBodyClose (0.00s)
--- PASS: TestServerEarlyBodyClose/tls=false (0.30s)
--- PASS: TestServerEarlyBodyClose/tls=true (0.30s)
=== RUN TestServerPipelinedDeadline
=== RUN TestServerPipelinedDeadline/tls=false
=== RUN TestServerPipelinedDeadline/tls=true
--- PASS: TestServerPipelinedDeadline (1.30s)
--- PASS: TestServerPipelinedDeadline/tls=false (0.65s)
--- PASS: TestServerPipelinedDeadline/tls=true (0.65s)
=== RUN TestServerHijackedDeadline
=== RUN TestServerHijackedDeadline/tls=false
=== PAUSE TestServerHijackedDeadline/tls=false
=== RUN TestServerHijackedDeadline/tls=true
=== PAUSE TestServerHijackedDeadline/tls=true
=== CONT TestServerHijackedDeadline/tls=false
=== CONT TestServerHijackedDeadline/tls=true
--- PASS: TestServerHijackedDeadline (0.00s)
--- PASS: TestServerHijackedDeadline/tls=false (0.70s)
--- PASS: TestServerHijackedDeadline/tls=true (0.70s)
=== RUN TestServerContinuousDownload
=== RUN TestServerContinuousDownload/tls=false
=== PAUSE TestServerContinuousDownload/tls=false
=== RUN TestServerContinuousDownload/tls=true
=== PAUSE TestServerContinuousDownload/tls=true
=== CONT TestServerContinuousDownload/tls=false
=== CONT TestServerContinuousDownload/tls=true
=== NAME TestServerContinuousDownload/tls=false
server_deadline_test.go:587: continuous download 1.296415709s > idle 300ms
=== NAME TestServerContinuousDownload/tls=true
server_deadline_test.go:587: continuous download 1.294823375s > idle 300ms
--- PASS: TestServerContinuousDownload (0.00s)
--- PASS: TestServerContinuousDownload/tls=false (1.30s)
--- PASS: TestServerContinuousDownload/tls=true (1.30s)
=== RUN TestServerDefaultIdleLongDownload
server_deadline_test.go:594: set SILO_TEST_LONG_UPLOAD=1 for >30s default-idle transfer regressions
--- SKIP: TestServerDefaultIdleLongDownload (0.00s)
PASS
ok github.com/minio/minio/internal/http 9.965s
@@ -0,0 +1,31 @@
--- buildscripts/test-timeout.sh
+++ temporary/test-timeout-isolated.sh
@@ -31,8 +31,11 @@
fi
echo "Cleaning up instances of Silo"
- pkill silo || true
- pkill -9 silo || true
+ if [ -n "${pid:-}" ]; then
+ kill "$pid" 2>/dev/null || true
+ wait "$pid" 2>/dev/null || true
+ fi
+ if [ -f "$WORK_DIR/server1.log" ]; then cp "$WORK_DIR/server1.log" "$PWD/timeout-server.log"; fi
purge "$WORK_DIR"
if [ $# -ne 0 ]; then
exit $#
@@ -83,7 +86,7 @@
"$(git rev-parse --show-toplevel)/buildscripts/install-mcli.sh" "$PWD/mc"
fi
- "${SILO[@]}" --address ":$start_port" --read-header-timeout ${srv_hdr_timeout}s --idle-timeout ${srv_idle_timeout}s "${WORK_DIR}/disk/" >"${WORK_DIR}/server1.log" 2>&1 &
+ "${SILO[@]}" --address "127.0.0.1:$start_port" --read-header-timeout ${srv_hdr_timeout}s --idle-timeout ${srv_idle_timeout}s "${WORK_DIR}/disk/" >"${WORK_DIR}/server1.log" 2>&1 &
pid=$!
disown $pid
sleep 1
@@ -124,3 +127,5 @@
}
main "$@"
+
+catch
@@ -0,0 +1,6 @@
Cleaning up instances of Silo
Bucket created successfully `silo/testbucket`.
Access permission for `silo/testbucket` is set to `public`
mcli: <ERROR> Unable to stat `silo/testbucket/testobject`. Object does not exist.
mcli: <ERROR> Unable to stat `silo/testbucket/testobject`. Object does not exist.
mcli: <ERROR> Unable to stat `silo/testbucket/testobject`. Object does not exist.
@@ -0,0 +1,14 @@
{
"original_script": "buildscripts/test-timeout.sh",
"isolation_patch": "legacy-timeout-isolation.patch",
"working_directory": "/Users/vonng/tmp/silo-r8-01a0a5b9/legacy-timeout",
"binary_sha256": "6b982de3262c25e326280c739b4275444cf80c3eacae48f0942aa18fbb7cd654",
"client": "/opt/homebrew/bin/mcli RELEASE.2026-08-26T17-15-27Z (70a2950478e18e38eb68162317e4b5d34c6eb6d5)",
"netcat": "/usr/bin/nc via private netcat symlink",
"command": [
"/bin/bash",
"/Users/vonng/tmp/silo-r8-01a0a5b9/legacy-timeout/test-timeout-isolated.sh"
],
"exit_code": 255,
"elapsed_seconds": 67.029
}
@@ -0,0 +1 @@
0 issues.
@@ -0,0 +1,2 @@
Error: parallel golangci-lint is running
The command is terminated due to an error: parallel golangci-lint is running
+5
View File
@@ -0,0 +1,5 @@
internal/http/server_deadline_test.go:61:7: QF1008: could remove embedded field "Server" from selector (staticcheck)
srv.Server.Close()
^
1 issues:
* staticcheck: 1
@@ -0,0 +1,214 @@
=== RUN TestStrictReadDeadline
=== RUN TestStrictReadDeadline/SetReadDeadline
=== RUN TestStrictReadDeadline/SetDeadline
--- PASS: TestStrictReadDeadline (0.00s)
--- PASS: TestStrictReadDeadline/SetReadDeadline (0.00s)
--- PASS: TestStrictReadDeadline/SetDeadline (0.00s)
=== RUN TestDefaultReadDeadlineStillRenews
--- PASS: TestDefaultReadDeadlineStillRenews (0.00s)
=== RUN TestStrictExpiredFutureReadDeadline
--- PASS: TestStrictExpiredFutureReadDeadline (0.06s)
=== RUN TestConcurrentStrictReadDeadline
--- PASS: TestConcurrentStrictReadDeadline (0.00s)
=== RUN TestStrictReadDeadlineRepeatedRenewal
--- PASS: TestStrictReadDeadlineRepeatedRenewal (0.91s)
=== RUN TestBuffConnReadTimeout
--- PASS: TestBuffConnReadTimeout (3.01s)
=== RUN TestBuffConnReadCheckTimeout
--- PASS: TestBuffConnReadCheckTimeout (0.50s)
PASS
ok github.com/minio/minio/internal/deadlineconn 5.490s
=== RUN TestCheckPortAvailability
--- PASS: TestCheckPortAvailability (0.00s)
=== RUN TestInternodeDialReadDeadline
--- PASS: TestInternodeDialReadDeadline (1.31s)
=== RUN TestNewHTTPListener
--- PASS: TestNewHTTPListener (0.01s)
=== RUN TestHTTPListenerStartClose
--- PASS: TestHTTPListenerStartClose (0.00s)
=== RUN TestHTTPListenerAddr
--- PASS: TestHTTPListenerAddr (0.00s)
=== RUN TestHTTPListenerAddrs
--- PASS: TestHTTPListenerAddrs (0.00s)
=== RUN TestServerReadHeaderDeadline
=== RUN TestServerReadHeaderDeadline/tls=false/second=false/trickle=false
=== PAUSE TestServerReadHeaderDeadline/tls=false/second=false/trickle=false
=== RUN TestServerReadHeaderDeadline/tls=false/second=false/trickle=true
=== PAUSE TestServerReadHeaderDeadline/tls=false/second=false/trickle=true
=== RUN TestServerReadHeaderDeadline/tls=false/second=true/trickle=false
=== PAUSE TestServerReadHeaderDeadline/tls=false/second=true/trickle=false
=== RUN TestServerReadHeaderDeadline/tls=false/second=true/trickle=true
=== PAUSE TestServerReadHeaderDeadline/tls=false/second=true/trickle=true
=== RUN TestServerReadHeaderDeadline/tls=true/second=false/trickle=false
=== PAUSE TestServerReadHeaderDeadline/tls=true/second=false/trickle=false
=== RUN TestServerReadHeaderDeadline/tls=true/second=false/trickle=true
=== PAUSE TestServerReadHeaderDeadline/tls=true/second=false/trickle=true
=== RUN TestServerReadHeaderDeadline/tls=true/second=true/trickle=false
=== PAUSE TestServerReadHeaderDeadline/tls=true/second=true/trickle=false
=== RUN TestServerReadHeaderDeadline/tls=true/second=true/trickle=true
=== PAUSE TestServerReadHeaderDeadline/tls=true/second=true/trickle=true
=== CONT TestServerReadHeaderDeadline/tls=false/second=true/trickle=true
=== CONT TestServerReadHeaderDeadline/tls=true/second=false/trickle=false
=== CONT TestServerReadHeaderDeadline/tls=false/second=false/trickle=true
=== CONT TestServerReadHeaderDeadline/tls=false/second=true/trickle=false
=== CONT TestServerReadHeaderDeadline/tls=false/second=false/trickle=false
=== CONT TestServerReadHeaderDeadline/tls=true/second=true/trickle=false
=== CONT TestServerReadHeaderDeadline/tls=true/second=true/trickle=true
=== CONT TestServerReadHeaderDeadline/tls=true/second=false/trickle=true
--- PASS: TestServerReadHeaderDeadline (0.00s)
--- PASS: TestServerReadHeaderDeadline/tls=false/second=false/trickle=true (0.82s)
--- PASS: TestServerReadHeaderDeadline/tls=true/second=false/trickle=false (0.96s)
--- PASS: TestServerReadHeaderDeadline/tls=false/second=true/trickle=true (1.58s)
--- PASS: TestServerReadHeaderDeadline/tls=false/second=true/trickle=false (1.71s)
--- PASS: TestServerReadHeaderDeadline/tls=false/second=false/trickle=false (0.95s)
--- PASS: TestServerReadHeaderDeadline/tls=true/second=false/trickle=true (0.83s)
--- PASS: TestServerReadHeaderDeadline/tls=true/second=true/trickle=false (1.72s)
--- PASS: TestServerReadHeaderDeadline/tls=true/second=true/trickle=true (1.59s)
=== RUN TestServerKeepAliveDeadline
=== RUN TestServerKeepAliveDeadline/tls=false
=== PAUSE TestServerKeepAliveDeadline/tls=false
=== RUN TestServerKeepAliveDeadline/tls=true
=== PAUSE TestServerKeepAliveDeadline/tls=true
=== CONT TestServerKeepAliveDeadline/tls=true
=== CONT TestServerKeepAliveDeadline/tls=false
--- PASS: TestServerKeepAliveDeadline (0.00s)
--- PASS: TestServerKeepAliveDeadline/tls=false (1.52s)
--- PASS: TestServerKeepAliveDeadline/tls=true (1.52s)
=== RUN TestServerContinuousUpload
=== RUN TestServerContinuousUpload/tls=false/chunked=false/expect=false
=== PAUSE TestServerContinuousUpload/tls=false/chunked=false/expect=false
=== RUN TestServerContinuousUpload/tls=false/chunked=false/expect=true
=== PAUSE TestServerContinuousUpload/tls=false/chunked=false/expect=true
=== RUN TestServerContinuousUpload/tls=false/chunked=true/expect=false
=== PAUSE TestServerContinuousUpload/tls=false/chunked=true/expect=false
=== RUN TestServerContinuousUpload/tls=false/chunked=true/expect=true
=== PAUSE TestServerContinuousUpload/tls=false/chunked=true/expect=true
=== RUN TestServerContinuousUpload/tls=true/chunked=false/expect=false
=== PAUSE TestServerContinuousUpload/tls=true/chunked=false/expect=false
=== RUN TestServerContinuousUpload/tls=true/chunked=false/expect=true
=== PAUSE TestServerContinuousUpload/tls=true/chunked=false/expect=true
=== RUN TestServerContinuousUpload/tls=true/chunked=true/expect=false
=== PAUSE TestServerContinuousUpload/tls=true/chunked=true/expect=false
=== RUN TestServerContinuousUpload/tls=true/chunked=true/expect=true
=== PAUSE TestServerContinuousUpload/tls=true/chunked=true/expect=true
=== CONT TestServerContinuousUpload/tls=false/chunked=false/expect=false
=== CONT TestServerContinuousUpload/tls=false/chunked=true/expect=true
=== CONT TestServerContinuousUpload/tls=true/chunked=true/expect=true
=== CONT TestServerContinuousUpload/tls=true/chunked=false/expect=true
server_deadline_test.go:261: continuous upload 1.320011834s > idle 300ms
=== NAME TestServerContinuousUpload/tls=false/chunked=true/expect=true
server_deadline_test.go:261: continuous upload 1.33052725s > idle 300ms
=== NAME TestServerContinuousUpload/tls=false/chunked=false/expect=false
server_deadline_test.go:261: continuous upload 1.330741292s > idle 300ms
=== CONT TestServerContinuousUpload/tls=false/chunked=true/expect=false
=== CONT TestServerContinuousUpload/tls=false/chunked=false/expect=true
=== CONT TestServerContinuousUpload/tls=true/chunked=false/expect=false
=== NAME TestServerContinuousUpload/tls=true/chunked=true/expect=true
server_deadline_test.go:261: continuous upload 1.321011251s > idle 300ms
=== CONT TestServerContinuousUpload/tls=true/chunked=true/expect=false
=== NAME TestServerContinuousUpload/tls=false/chunked=false/expect=true
server_deadline_test.go:261: continuous upload 1.325489459s > idle 300ms
=== NAME TestServerContinuousUpload/tls=true/chunked=true/expect=false
server_deadline_test.go:261: continuous upload 1.315352084s > idle 300ms
=== NAME TestServerContinuousUpload/tls=false/chunked=true/expect=false
server_deadline_test.go:261: continuous upload 1.325666792s > idle 300ms
=== NAME TestServerContinuousUpload/tls=true/chunked=false/expect=false
server_deadline_test.go:261: continuous upload 1.315434542s > idle 300ms
--- PASS: TestServerContinuousUpload (0.00s)
--- PASS: TestServerContinuousUpload/tls=false/chunked=true/expect=true (1.33s)
--- PASS: TestServerContinuousUpload/tls=true/chunked=false/expect=true (1.33s)
--- PASS: TestServerContinuousUpload/tls=false/chunked=false/expect=false (1.33s)
--- PASS: TestServerContinuousUpload/tls=true/chunked=true/expect=true (1.33s)
--- PASS: TestServerContinuousUpload/tls=false/chunked=false/expect=true (1.33s)
--- PASS: TestServerContinuousUpload/tls=true/chunked=false/expect=false (1.33s)
--- PASS: TestServerContinuousUpload/tls=false/chunked=true/expect=false (1.33s)
--- PASS: TestServerContinuousUpload/tls=true/chunked=true/expect=false (1.33s)
=== RUN TestServerDefaultIdleLongUpload
server_deadline_test.go:270: set SILO_TEST_LONG_UPLOAD=1 for >30s default-idle regression
--- SKIP: TestServerDefaultIdleLongUpload (0.00s)
=== RUN TestServerIdleBodyDeadline
=== RUN TestServerIdleBodyDeadline/tls=false
=== PAUSE TestServerIdleBodyDeadline/tls=false
=== RUN TestServerIdleBodyDeadline/tls=true
=== PAUSE TestServerIdleBodyDeadline/tls=true
=== CONT TestServerIdleBodyDeadline/tls=false
=== CONT TestServerIdleBodyDeadline/tls=true
--- PASS: TestServerIdleBodyDeadline (0.00s)
--- PASS: TestServerIdleBodyDeadline/tls=false (0.45s)
--- PASS: TestServerIdleBodyDeadline/tls=true (0.46s)
=== RUN TestServerBackgroundReadNoDeadline
=== RUN TestServerBackgroundReadNoDeadline/tls=false/body=false
=== PAUSE TestServerBackgroundReadNoDeadline/tls=false/body=false
=== RUN TestServerBackgroundReadNoDeadline/tls=false/body=true
=== PAUSE TestServerBackgroundReadNoDeadline/tls=false/body=true
=== RUN TestServerBackgroundReadNoDeadline/tls=true/body=false
=== PAUSE TestServerBackgroundReadNoDeadline/tls=true/body=false
=== RUN TestServerBackgroundReadNoDeadline/tls=true/body=true
=== PAUSE TestServerBackgroundReadNoDeadline/tls=true/body=true
=== CONT TestServerBackgroundReadNoDeadline/tls=false/body=true
=== CONT TestServerBackgroundReadNoDeadline/tls=true/body=true
=== CONT TestServerBackgroundReadNoDeadline/tls=true/body=false
=== CONT TestServerBackgroundReadNoDeadline/tls=false/body=false
--- PASS: TestServerBackgroundReadNoDeadline (0.00s)
--- PASS: TestServerBackgroundReadNoDeadline/tls=false/body=false (0.70s)
--- PASS: TestServerBackgroundReadNoDeadline/tls=false/body=true (0.70s)
--- PASS: TestServerBackgroundReadNoDeadline/tls=true/body=true (0.71s)
--- PASS: TestServerBackgroundReadNoDeadline/tls=true/body=false (0.71s)
=== RUN TestServerTLSHandshakeReadDeadline
2026/09/15 16:04:28 http: TLS handshake error from 127.0.0.1:60010: read tcp 127.0.0.1:44841->127.0.0.1:60010: i/o timeout
--- PASS: TestServerTLSHandshakeReadDeadline (0.21s)
=== RUN TestServerConnStateHook
=== RUN TestServerConnStateHook/tls=false
=== RUN TestServerConnStateHook/tls=true
--- PASS: TestServerConnStateHook (0.01s)
--- PASS: TestServerConnStateHook/tls=false (0.00s)
--- PASS: TestServerConnStateHook/tls=true (0.01s)
=== RUN TestServerHTTP2Deadlines
--- PASS: TestServerHTTP2Deadlines (0.42s)
=== RUN TestServerEarlyBodyClose
=== RUN TestServerEarlyBodyClose/tls=false
=== PAUSE TestServerEarlyBodyClose/tls=false
=== RUN TestServerEarlyBodyClose/tls=true
=== PAUSE TestServerEarlyBodyClose/tls=true
=== CONT TestServerEarlyBodyClose/tls=false
=== CONT TestServerEarlyBodyClose/tls=true
--- PASS: TestServerEarlyBodyClose (0.00s)
--- PASS: TestServerEarlyBodyClose/tls=false (0.31s)
--- PASS: TestServerEarlyBodyClose/tls=true (0.31s)
=== RUN TestServerPipelinedDeadline
=== RUN TestServerPipelinedDeadline/tls=false
=== RUN TestServerPipelinedDeadline/tls=true
--- PASS: TestServerPipelinedDeadline (1.34s)
--- PASS: TestServerPipelinedDeadline/tls=false (0.66s)
--- PASS: TestServerPipelinedDeadline/tls=true (0.68s)
=== RUN TestServerHijackedDeadline
=== RUN TestServerHijackedDeadline/tls=false
=== PAUSE TestServerHijackedDeadline/tls=false
=== RUN TestServerHijackedDeadline/tls=true
=== PAUSE TestServerHijackedDeadline/tls=true
=== CONT TestServerHijackedDeadline/tls=true
=== CONT TestServerHijackedDeadline/tls=false
--- PASS: TestServerHijackedDeadline (0.00s)
--- PASS: TestServerHijackedDeadline/tls=false (0.70s)
--- PASS: TestServerHijackedDeadline/tls=true (0.71s)
=== RUN TestServerContinuousDownload
=== RUN TestServerContinuousDownload/tls=false
=== PAUSE TestServerContinuousDownload/tls=false
=== RUN TestServerContinuousDownload/tls=true
=== PAUSE TestServerContinuousDownload/tls=true
=== CONT TestServerContinuousDownload/tls=true
=== CONT TestServerContinuousDownload/tls=false
=== NAME TestServerContinuousDownload/tls=true
server_deadline_test.go:619: continuous download 1.306085084s > idle 300ms
=== NAME TestServerContinuousDownload/tls=false
server_deadline_test.go:619: continuous download 1.319082334s > idle 300ms
--- PASS: TestServerContinuousDownload (0.00s)
--- PASS: TestServerContinuousDownload/tls=true (1.32s)
--- PASS: TestServerContinuousDownload/tls=false (1.32s)
=== RUN TestServerDefaultIdleLongDownload
server_deadline_test.go:626: set SILO_TEST_LONG_UPLOAD=1 for >30s default-idle transfer regressions
--- SKIP: TestServerDefaultIdleLongDownload (0.00s)
=== RUN TestNewServer
--- PASS: TestNewServer (0.00s)
PASS
ok github.com/minio/minio/internal/http 15.196s
@@ -0,0 +1,212 @@
=== RUN TestStrictReadDeadline
=== RUN TestStrictReadDeadline/SetReadDeadline
=== RUN TestStrictReadDeadline/SetDeadline
--- PASS: TestStrictReadDeadline (0.00s)
--- PASS: TestStrictReadDeadline/SetReadDeadline (0.00s)
--- PASS: TestStrictReadDeadline/SetDeadline (0.00s)
=== RUN TestDefaultReadDeadlineStillRenews
--- PASS: TestDefaultReadDeadlineStillRenews (0.00s)
=== RUN TestStrictExpiredFutureReadDeadline
--- PASS: TestStrictExpiredFutureReadDeadline (0.06s)
=== RUN TestConcurrentStrictReadDeadline
--- PASS: TestConcurrentStrictReadDeadline (0.00s)
=== RUN TestBuffConnReadTimeout
--- PASS: TestBuffConnReadTimeout (3.01s)
=== RUN TestBuffConnReadCheckTimeout
--- PASS: TestBuffConnReadCheckTimeout (0.50s)
PASS
ok github.com/minio/minio/internal/deadlineconn 4.580s
=== RUN TestCheckPortAvailability
--- PASS: TestCheckPortAvailability (0.00s)
=== RUN TestInternodeDialReadDeadline
--- PASS: TestInternodeDialReadDeadline (1.31s)
=== RUN TestNewHTTPListener
--- PASS: TestNewHTTPListener (0.01s)
=== RUN TestHTTPListenerStartClose
--- PASS: TestHTTPListenerStartClose (0.00s)
=== RUN TestHTTPListenerAddr
--- PASS: TestHTTPListenerAddr (0.00s)
=== RUN TestHTTPListenerAddrs
--- PASS: TestHTTPListenerAddrs (0.00s)
=== RUN TestServerReadHeaderDeadline
=== RUN TestServerReadHeaderDeadline/tls=false/second=false/trickle=false
=== PAUSE TestServerReadHeaderDeadline/tls=false/second=false/trickle=false
=== RUN TestServerReadHeaderDeadline/tls=false/second=false/trickle=true
=== PAUSE TestServerReadHeaderDeadline/tls=false/second=false/trickle=true
=== RUN TestServerReadHeaderDeadline/tls=false/second=true/trickle=false
=== PAUSE TestServerReadHeaderDeadline/tls=false/second=true/trickle=false
=== RUN TestServerReadHeaderDeadline/tls=false/second=true/trickle=true
=== PAUSE TestServerReadHeaderDeadline/tls=false/second=true/trickle=true
=== RUN TestServerReadHeaderDeadline/tls=true/second=false/trickle=false
=== PAUSE TestServerReadHeaderDeadline/tls=true/second=false/trickle=false
=== RUN TestServerReadHeaderDeadline/tls=true/second=false/trickle=true
=== PAUSE TestServerReadHeaderDeadline/tls=true/second=false/trickle=true
=== RUN TestServerReadHeaderDeadline/tls=true/second=true/trickle=false
=== PAUSE TestServerReadHeaderDeadline/tls=true/second=true/trickle=false
=== RUN TestServerReadHeaderDeadline/tls=true/second=true/trickle=true
=== PAUSE TestServerReadHeaderDeadline/tls=true/second=true/trickle=true
=== CONT TestServerReadHeaderDeadline/tls=false/second=false/trickle=false
=== CONT TestServerReadHeaderDeadline/tls=false/second=true/trickle=true
=== CONT TestServerReadHeaderDeadline/tls=false/second=true/trickle=false
=== CONT TestServerReadHeaderDeadline/tls=true/second=true/trickle=true
=== CONT TestServerReadHeaderDeadline/tls=true/second=false/trickle=false
=== CONT TestServerReadHeaderDeadline/tls=false/second=false/trickle=true
=== CONT TestServerReadHeaderDeadline/tls=true/second=true/trickle=false
=== CONT TestServerReadHeaderDeadline/tls=true/second=false/trickle=true
--- PASS: TestServerReadHeaderDeadline (0.00s)
--- PASS: TestServerReadHeaderDeadline/tls=false/second=false/trickle=false (0.61s)
--- PASS: TestServerReadHeaderDeadline/tls=false/second=true/trickle=true (0.81s)
--- PASS: TestServerReadHeaderDeadline/tls=true/second=true/trickle=true (0.81s)
--- PASS: TestServerReadHeaderDeadline/tls=false/second=true/trickle=false (1.01s)
--- PASS: TestServerReadHeaderDeadline/tls=true/second=false/trickle=false (0.61s)
--- PASS: TestServerReadHeaderDeadline/tls=false/second=false/trickle=true (0.41s)
--- PASS: TestServerReadHeaderDeadline/tls=true/second=false/trickle=true (0.42s)
--- PASS: TestServerReadHeaderDeadline/tls=true/second=true/trickle=false (1.01s)
=== RUN TestServerKeepAliveDeadline
=== RUN TestServerKeepAliveDeadline/tls=false
=== PAUSE TestServerKeepAliveDeadline/tls=false
=== RUN TestServerKeepAliveDeadline/tls=true
=== PAUSE TestServerKeepAliveDeadline/tls=true
=== CONT TestServerKeepAliveDeadline/tls=true
=== CONT TestServerKeepAliveDeadline/tls=false
--- PASS: TestServerKeepAliveDeadline (0.00s)
--- PASS: TestServerKeepAliveDeadline/tls=true (1.52s)
--- PASS: TestServerKeepAliveDeadline/tls=false (1.52s)
=== RUN TestServerContinuousUpload
=== RUN TestServerContinuousUpload/tls=false/chunked=false/expect=false
=== PAUSE TestServerContinuousUpload/tls=false/chunked=false/expect=false
=== RUN TestServerContinuousUpload/tls=false/chunked=false/expect=true
=== PAUSE TestServerContinuousUpload/tls=false/chunked=false/expect=true
=== RUN TestServerContinuousUpload/tls=false/chunked=true/expect=false
=== PAUSE TestServerContinuousUpload/tls=false/chunked=true/expect=false
=== RUN TestServerContinuousUpload/tls=false/chunked=true/expect=true
=== PAUSE TestServerContinuousUpload/tls=false/chunked=true/expect=true
=== RUN TestServerContinuousUpload/tls=true/chunked=false/expect=false
=== PAUSE TestServerContinuousUpload/tls=true/chunked=false/expect=false
=== RUN TestServerContinuousUpload/tls=true/chunked=false/expect=true
=== PAUSE TestServerContinuousUpload/tls=true/chunked=false/expect=true
=== RUN TestServerContinuousUpload/tls=true/chunked=true/expect=false
=== PAUSE TestServerContinuousUpload/tls=true/chunked=true/expect=false
=== RUN TestServerContinuousUpload/tls=true/chunked=true/expect=true
=== PAUSE TestServerContinuousUpload/tls=true/chunked=true/expect=true
=== CONT TestServerContinuousUpload/tls=false/chunked=false/expect=true
=== CONT TestServerContinuousUpload/tls=true/chunked=true/expect=true
=== CONT TestServerContinuousUpload/tls=true/chunked=false/expect=false
=== CONT TestServerContinuousUpload/tls=false/chunked=false/expect=false
=== NAME TestServerContinuousUpload/tls=true/chunked=false/expect=false
server_deadline_test.go:259: continuous upload 1.317026792s > idle 300ms
=== NAME TestServerContinuousUpload/tls=false/chunked=false/expect=false
server_deadline_test.go:259: continuous upload 1.327268125s > idle 300ms
=== NAME TestServerContinuousUpload/tls=false/chunked=false/expect=true
server_deadline_test.go:259: continuous upload 1.327373417s > idle 300ms
=== NAME TestServerContinuousUpload/tls=true/chunked=true/expect=true
server_deadline_test.go:259: continuous upload 1.316941667s > idle 300ms
=== CONT TestServerContinuousUpload/tls=false/chunked=true/expect=false
=== CONT TestServerContinuousUpload/tls=true/chunked=false/expect=true
=== CONT TestServerContinuousUpload/tls=true/chunked=true/expect=false
=== CONT TestServerContinuousUpload/tls=false/chunked=true/expect=true
=== NAME TestServerContinuousUpload/tls=true/chunked=false/expect=true
server_deadline_test.go:259: continuous upload 1.299763501s > idle 300ms
=== NAME TestServerContinuousUpload/tls=false/chunked=true/expect=true
server_deadline_test.go:259: continuous upload 1.313516875s > idle 300ms
=== NAME TestServerContinuousUpload/tls=false/chunked=true/expect=false
server_deadline_test.go:259: continuous upload 1.314431001s > idle 300ms
=== NAME TestServerContinuousUpload/tls=true/chunked=true/expect=false
server_deadline_test.go:259: continuous upload 1.300043209s > idle 300ms
--- PASS: TestServerContinuousUpload (0.00s)
--- PASS: TestServerContinuousUpload/tls=false/chunked=false/expect=false (1.33s)
--- PASS: TestServerContinuousUpload/tls=false/chunked=false/expect=true (1.33s)
--- PASS: TestServerContinuousUpload/tls=true/chunked=false/expect=false (1.33s)
--- PASS: TestServerContinuousUpload/tls=true/chunked=true/expect=true (1.33s)
--- PASS: TestServerContinuousUpload/tls=false/chunked=true/expect=true (1.31s)
--- PASS: TestServerContinuousUpload/tls=false/chunked=true/expect=false (1.32s)
--- PASS: TestServerContinuousUpload/tls=true/chunked=true/expect=false (1.32s)
--- PASS: TestServerContinuousUpload/tls=true/chunked=false/expect=true (1.32s)
=== RUN TestServerDefaultIdleLongUpload
server_deadline_test.go:268: set SILO_TEST_LONG_UPLOAD=1 for >30s default-idle regression
--- SKIP: TestServerDefaultIdleLongUpload (0.00s)
=== RUN TestServerIdleBodyDeadline
=== RUN TestServerIdleBodyDeadline/tls=false
=== PAUSE TestServerIdleBodyDeadline/tls=false
=== RUN TestServerIdleBodyDeadline/tls=true
=== PAUSE TestServerIdleBodyDeadline/tls=true
=== CONT TestServerIdleBodyDeadline/tls=false
=== CONT TestServerIdleBodyDeadline/tls=true
--- PASS: TestServerIdleBodyDeadline (0.00s)
--- PASS: TestServerIdleBodyDeadline/tls=false (0.46s)
--- PASS: TestServerIdleBodyDeadline/tls=true (0.46s)
=== RUN TestServerBackgroundReadNoDeadline
=== RUN TestServerBackgroundReadNoDeadline/tls=false/body=false
=== PAUSE TestServerBackgroundReadNoDeadline/tls=false/body=false
=== RUN TestServerBackgroundReadNoDeadline/tls=false/body=true
=== PAUSE TestServerBackgroundReadNoDeadline/tls=false/body=true
=== RUN TestServerBackgroundReadNoDeadline/tls=true/body=false
=== PAUSE TestServerBackgroundReadNoDeadline/tls=true/body=false
=== RUN TestServerBackgroundReadNoDeadline/tls=true/body=true
=== PAUSE TestServerBackgroundReadNoDeadline/tls=true/body=true
=== CONT TestServerBackgroundReadNoDeadline/tls=false/body=false
=== CONT TestServerBackgroundReadNoDeadline/tls=true/body=false
=== CONT TestServerBackgroundReadNoDeadline/tls=false/body=true
=== CONT TestServerBackgroundReadNoDeadline/tls=true/body=true
--- PASS: TestServerBackgroundReadNoDeadline (0.00s)
--- PASS: TestServerBackgroundReadNoDeadline/tls=false/body=false (0.70s)
--- PASS: TestServerBackgroundReadNoDeadline/tls=false/body=true (0.70s)
--- PASS: TestServerBackgroundReadNoDeadline/tls=true/body=false (0.71s)
--- PASS: TestServerBackgroundReadNoDeadline/tls=true/body=true (0.71s)
=== RUN TestServerTLSHandshakeReadDeadline
2026/09/15 15:53:23 http: TLS handshake error from 127.0.0.1:45990: read tcp 127.0.0.1:34171->127.0.0.1:45990: i/o timeout
--- PASS: TestServerTLSHandshakeReadDeadline (0.20s)
=== RUN TestServerConnStateHook
=== RUN TestServerConnStateHook/tls=false
=== RUN TestServerConnStateHook/tls=true
--- PASS: TestServerConnStateHook (0.01s)
--- PASS: TestServerConnStateHook/tls=false (0.00s)
--- PASS: TestServerConnStateHook/tls=true (0.01s)
=== RUN TestServerHTTP2Deadlines
--- PASS: TestServerHTTP2Deadlines (0.42s)
=== RUN TestServerEarlyBodyClose
=== RUN TestServerEarlyBodyClose/tls=false
=== PAUSE TestServerEarlyBodyClose/tls=false
=== RUN TestServerEarlyBodyClose/tls=true
=== PAUSE TestServerEarlyBodyClose/tls=true
=== CONT TestServerEarlyBodyClose/tls=true
=== CONT TestServerEarlyBodyClose/tls=false
--- PASS: TestServerEarlyBodyClose (0.00s)
--- PASS: TestServerEarlyBodyClose/tls=false (0.31s)
--- PASS: TestServerEarlyBodyClose/tls=true (0.31s)
=== RUN TestServerPipelinedDeadline
=== RUN TestServerPipelinedDeadline/tls=false
=== RUN TestServerPipelinedDeadline/tls=true
--- PASS: TestServerPipelinedDeadline (1.33s)
--- PASS: TestServerPipelinedDeadline/tls=false (0.66s)
--- PASS: TestServerPipelinedDeadline/tls=true (0.67s)
=== RUN TestServerHijackedDeadline
=== RUN TestServerHijackedDeadline/tls=false
=== PAUSE TestServerHijackedDeadline/tls=false
=== RUN TestServerHijackedDeadline/tls=true
=== PAUSE TestServerHijackedDeadline/tls=true
=== CONT TestServerHijackedDeadline/tls=false
=== CONT TestServerHijackedDeadline/tls=true
--- PASS: TestServerHijackedDeadline (0.00s)
--- PASS: TestServerHijackedDeadline/tls=false (0.70s)
--- PASS: TestServerHijackedDeadline/tls=true (0.71s)
=== RUN TestServerContinuousDownload
=== RUN TestServerContinuousDownload/tls=false
=== PAUSE TestServerContinuousDownload/tls=false
=== RUN TestServerContinuousDownload/tls=true
=== PAUSE TestServerContinuousDownload/tls=true
=== CONT TestServerContinuousDownload/tls=false
=== CONT TestServerContinuousDownload/tls=true
server_deadline_test.go:588: continuous download 1.315636125s > idle 300ms
=== NAME TestServerContinuousDownload/tls=false
server_deadline_test.go:588: continuous download 1.324163209s > idle 300ms
--- PASS: TestServerContinuousDownload (0.00s)
--- PASS: TestServerContinuousDownload/tls=false (1.32s)
--- PASS: TestServerContinuousDownload/tls=true (1.32s)
=== RUN TestServerDefaultIdleLongDownload
server_deadline_test.go:595: set SILO_TEST_LONG_UPLOAD=1 for >30s default-idle transfer regressions
--- SKIP: TestServerDefaultIdleLongDownload (0.00s)
=== RUN TestNewServer
--- PASS: TestNewServer (0.00s)
PASS
ok github.com/minio/minio/internal/http 13.825s
@@ -0,0 +1,213 @@
=== RUN TestStrictReadDeadline
=== RUN TestStrictReadDeadline/SetReadDeadline
=== RUN TestStrictReadDeadline/SetDeadline
--- PASS: TestStrictReadDeadline (0.00s)
--- PASS: TestStrictReadDeadline/SetReadDeadline (0.00s)
--- PASS: TestStrictReadDeadline/SetDeadline (0.00s)
=== RUN TestDefaultReadDeadlineStillRenews
--- PASS: TestDefaultReadDeadlineStillRenews (0.00s)
=== RUN TestStrictExpiredFutureReadDeadline
--- PASS: TestStrictExpiredFutureReadDeadline (0.06s)
=== RUN TestConcurrentStrictReadDeadline
--- PASS: TestConcurrentStrictReadDeadline (0.00s)
=== RUN TestBuffConnReadTimeout
--- PASS: TestBuffConnReadTimeout (3.01s)
=== RUN TestBuffConnReadCheckTimeout
--- PASS: TestBuffConnReadCheckTimeout (0.51s)
PASS
ok github.com/minio/minio/internal/deadlineconn 4.583s
=== RUN TestCheckPortAvailability
--- PASS: TestCheckPortAvailability (0.01s)
=== RUN TestInternodeDialReadDeadline
--- PASS: TestInternodeDialReadDeadline (1.31s)
=== RUN TestNewHTTPListener
--- PASS: TestNewHTTPListener (0.01s)
=== RUN TestHTTPListenerStartClose
--- PASS: TestHTTPListenerStartClose (0.00s)
=== RUN TestHTTPListenerAddr
--- PASS: TestHTTPListenerAddr (0.00s)
=== RUN TestHTTPListenerAddrs
--- PASS: TestHTTPListenerAddrs (0.00s)
=== RUN TestServerReadHeaderDeadline
=== RUN TestServerReadHeaderDeadline/tls=false/second=false/trickle=false
=== PAUSE TestServerReadHeaderDeadline/tls=false/second=false/trickle=false
=== RUN TestServerReadHeaderDeadline/tls=false/second=false/trickle=true
=== PAUSE TestServerReadHeaderDeadline/tls=false/second=false/trickle=true
=== RUN TestServerReadHeaderDeadline/tls=false/second=true/trickle=false
=== PAUSE TestServerReadHeaderDeadline/tls=false/second=true/trickle=false
=== RUN TestServerReadHeaderDeadline/tls=false/second=true/trickle=true
=== PAUSE TestServerReadHeaderDeadline/tls=false/second=true/trickle=true
=== RUN TestServerReadHeaderDeadline/tls=true/second=false/trickle=false
=== PAUSE TestServerReadHeaderDeadline/tls=true/second=false/trickle=false
=== RUN TestServerReadHeaderDeadline/tls=true/second=false/trickle=true
=== PAUSE TestServerReadHeaderDeadline/tls=true/second=false/trickle=true
=== RUN TestServerReadHeaderDeadline/tls=true/second=true/trickle=false
=== PAUSE TestServerReadHeaderDeadline/tls=true/second=true/trickle=false
=== RUN TestServerReadHeaderDeadline/tls=true/second=true/trickle=true
=== PAUSE TestServerReadHeaderDeadline/tls=true/second=true/trickle=true
=== CONT TestServerReadHeaderDeadline/tls=false/second=false/trickle=true
=== CONT TestServerReadHeaderDeadline/tls=false/second=true/trickle=true
=== CONT TestServerReadHeaderDeadline/tls=false/second=true/trickle=false
=== CONT TestServerReadHeaderDeadline/tls=false/second=false/trickle=false
=== CONT TestServerReadHeaderDeadline/tls=true/second=true/trickle=true
=== CONT TestServerReadHeaderDeadline/tls=true/second=true/trickle=false
=== CONT TestServerReadHeaderDeadline/tls=true/second=false/trickle=true
=== CONT TestServerReadHeaderDeadline/tls=true/second=false/trickle=false
--- PASS: TestServerReadHeaderDeadline (0.00s)
--- PASS: TestServerReadHeaderDeadline/tls=false/second=false/trickle=true (0.83s)
--- PASS: TestServerReadHeaderDeadline/tls=false/second=false/trickle=false (0.95s)
--- PASS: TestServerReadHeaderDeadline/tls=false/second=true/trickle=true (1.57s)
--- PASS: TestServerReadHeaderDeadline/tls=false/second=true/trickle=false (1.71s)
--- PASS: TestServerReadHeaderDeadline/tls=true/second=false/trickle=true (0.83s)
--- PASS: TestServerReadHeaderDeadline/tls=true/second=true/trickle=true (1.58s)
--- PASS: TestServerReadHeaderDeadline/tls=true/second=true/trickle=false (1.71s)
--- PASS: TestServerReadHeaderDeadline/tls=true/second=false/trickle=false (0.96s)
=== RUN TestServerKeepAliveDeadline
=== RUN TestServerKeepAliveDeadline/tls=false
=== PAUSE TestServerKeepAliveDeadline/tls=false
=== RUN TestServerKeepAliveDeadline/tls=true
=== PAUSE TestServerKeepAliveDeadline/tls=true
=== CONT TestServerKeepAliveDeadline/tls=false
=== CONT TestServerKeepAliveDeadline/tls=true
--- PASS: TestServerKeepAliveDeadline (0.00s)
--- PASS: TestServerKeepAliveDeadline/tls=false (1.51s)
--- PASS: TestServerKeepAliveDeadline/tls=true (1.51s)
=== RUN TestServerContinuousUpload
=== RUN TestServerContinuousUpload/tls=false/chunked=false/expect=false
=== PAUSE TestServerContinuousUpload/tls=false/chunked=false/expect=false
=== RUN TestServerContinuousUpload/tls=false/chunked=false/expect=true
=== PAUSE TestServerContinuousUpload/tls=false/chunked=false/expect=true
=== RUN TestServerContinuousUpload/tls=false/chunked=true/expect=false
=== PAUSE TestServerContinuousUpload/tls=false/chunked=true/expect=false
=== RUN TestServerContinuousUpload/tls=false/chunked=true/expect=true
=== PAUSE TestServerContinuousUpload/tls=false/chunked=true/expect=true
=== RUN TestServerContinuousUpload/tls=true/chunked=false/expect=false
=== PAUSE TestServerContinuousUpload/tls=true/chunked=false/expect=false
=== RUN TestServerContinuousUpload/tls=true/chunked=false/expect=true
=== PAUSE TestServerContinuousUpload/tls=true/chunked=false/expect=true
=== RUN TestServerContinuousUpload/tls=true/chunked=true/expect=false
=== PAUSE TestServerContinuousUpload/tls=true/chunked=true/expect=false
=== RUN TestServerContinuousUpload/tls=true/chunked=true/expect=true
=== PAUSE TestServerContinuousUpload/tls=true/chunked=true/expect=true
=== CONT TestServerContinuousUpload/tls=false/chunked=true/expect=true
=== CONT TestServerContinuousUpload/tls=true/chunked=false/expect=false
=== CONT TestServerContinuousUpload/tls=true/chunked=true/expect=false
=== CONT TestServerContinuousUpload/tls=true/chunked=false/expect=true
=== NAME TestServerContinuousUpload/tls=true/chunked=true/expect=false
server_deadline_test.go:259: continuous upload 1.314443501s > idle 300ms
=== NAME TestServerContinuousUpload/tls=true/chunked=false/expect=true
server_deadline_test.go:259: continuous upload 1.313693959s > idle 300ms
=== NAME TestServerContinuousUpload/tls=false/chunked=true/expect=true
server_deadline_test.go:259: continuous upload 1.326107334s > idle 300ms
=== NAME TestServerContinuousUpload/tls=true/chunked=false/expect=false
server_deadline_test.go:259: continuous upload 1.314532709s > idle 300ms
=== CONT TestServerContinuousUpload/tls=false/chunked=false/expect=true
=== CONT TestServerContinuousUpload/tls=false/chunked=false/expect=false
=== CONT TestServerContinuousUpload/tls=false/chunked=true/expect=false
=== CONT TestServerContinuousUpload/tls=true/chunked=true/expect=true
=== NAME TestServerContinuousUpload/tls=false/chunked=false/expect=true
server_deadline_test.go:259: continuous upload 1.308128834s > idle 300ms
=== NAME TestServerContinuousUpload/tls=false/chunked=true/expect=false
server_deadline_test.go:259: continuous upload 1.308309709s > idle 300ms
=== NAME TestServerContinuousUpload/tls=false/chunked=false/expect=false
server_deadline_test.go:259: continuous upload 1.30837825s > idle 300ms
=== NAME TestServerContinuousUpload/tls=true/chunked=true/expect=true
server_deadline_test.go:259: continuous upload 1.297138459s > idle 300ms
--- PASS: TestServerContinuousUpload (0.00s)
--- PASS: TestServerContinuousUpload/tls=true/chunked=true/expect=false (1.33s)
--- PASS: TestServerContinuousUpload/tls=true/chunked=false/expect=true (1.33s)
--- PASS: TestServerContinuousUpload/tls=false/chunked=true/expect=true (1.33s)
--- PASS: TestServerContinuousUpload/tls=true/chunked=false/expect=false (1.33s)
--- PASS: TestServerContinuousUpload/tls=false/chunked=false/expect=true (1.31s)
--- PASS: TestServerContinuousUpload/tls=false/chunked=true/expect=false (1.31s)
--- PASS: TestServerContinuousUpload/tls=false/chunked=false/expect=false (1.31s)
--- PASS: TestServerContinuousUpload/tls=true/chunked=true/expect=true (1.31s)
=== RUN TestServerDefaultIdleLongUpload
server_deadline_test.go:268: set SILO_TEST_LONG_UPLOAD=1 for >30s default-idle regression
--- SKIP: TestServerDefaultIdleLongUpload (0.00s)
=== RUN TestServerIdleBodyDeadline
=== RUN TestServerIdleBodyDeadline/tls=false
=== PAUSE TestServerIdleBodyDeadline/tls=false
=== RUN TestServerIdleBodyDeadline/tls=true
=== PAUSE TestServerIdleBodyDeadline/tls=true
=== CONT TestServerIdleBodyDeadline/tls=false
=== CONT TestServerIdleBodyDeadline/tls=true
--- PASS: TestServerIdleBodyDeadline (0.00s)
--- PASS: TestServerIdleBodyDeadline/tls=false (0.45s)
--- PASS: TestServerIdleBodyDeadline/tls=true (0.46s)
=== RUN TestServerBackgroundReadNoDeadline
=== RUN TestServerBackgroundReadNoDeadline/tls=false/body=false
=== PAUSE TestServerBackgroundReadNoDeadline/tls=false/body=false
=== RUN TestServerBackgroundReadNoDeadline/tls=false/body=true
=== PAUSE TestServerBackgroundReadNoDeadline/tls=false/body=true
=== RUN TestServerBackgroundReadNoDeadline/tls=true/body=false
=== PAUSE TestServerBackgroundReadNoDeadline/tls=true/body=false
=== RUN TestServerBackgroundReadNoDeadline/tls=true/body=true
=== PAUSE TestServerBackgroundReadNoDeadline/tls=true/body=true
=== CONT TestServerBackgroundReadNoDeadline/tls=false/body=false
=== CONT TestServerBackgroundReadNoDeadline/tls=true/body=true
=== CONT TestServerBackgroundReadNoDeadline/tls=false/body=true
=== CONT TestServerBackgroundReadNoDeadline/tls=true/body=false
--- PASS: TestServerBackgroundReadNoDeadline (0.00s)
--- PASS: TestServerBackgroundReadNoDeadline/tls=false/body=false (0.71s)
--- PASS: TestServerBackgroundReadNoDeadline/tls=false/body=true (0.71s)
--- PASS: TestServerBackgroundReadNoDeadline/tls=true/body=false (0.71s)
--- PASS: TestServerBackgroundReadNoDeadline/tls=true/body=true (0.71s)
=== RUN TestServerTLSHandshakeReadDeadline
2026/09/15 15:55:04 http: TLS handshake error from 127.0.0.1:33250: read tcp 127.0.0.1:42477->127.0.0.1:33250: i/o timeout
--- PASS: TestServerTLSHandshakeReadDeadline (0.21s)
=== RUN TestServerConnStateHook
=== RUN TestServerConnStateHook/tls=false
=== RUN TestServerConnStateHook/tls=true
--- PASS: TestServerConnStateHook (0.01s)
--- PASS: TestServerConnStateHook/tls=false (0.00s)
--- PASS: TestServerConnStateHook/tls=true (0.01s)
=== RUN TestServerHTTP2Deadlines
--- PASS: TestServerHTTP2Deadlines (0.42s)
=== RUN TestServerEarlyBodyClose
=== RUN TestServerEarlyBodyClose/tls=false
=== PAUSE TestServerEarlyBodyClose/tls=false
=== RUN TestServerEarlyBodyClose/tls=true
=== PAUSE TestServerEarlyBodyClose/tls=true
=== CONT TestServerEarlyBodyClose/tls=false
=== CONT TestServerEarlyBodyClose/tls=true
--- PASS: TestServerEarlyBodyClose (0.00s)
--- PASS: TestServerEarlyBodyClose/tls=false (0.31s)
--- PASS: TestServerEarlyBodyClose/tls=true (0.31s)
=== RUN TestServerPipelinedDeadline
=== RUN TestServerPipelinedDeadline/tls=false
=== RUN TestServerPipelinedDeadline/tls=true
--- PASS: TestServerPipelinedDeadline (1.35s)
--- PASS: TestServerPipelinedDeadline/tls=false (0.67s)
--- PASS: TestServerPipelinedDeadline/tls=true (0.68s)
=== RUN TestServerHijackedDeadline
=== RUN TestServerHijackedDeadline/tls=false
=== PAUSE TestServerHijackedDeadline/tls=false
=== RUN TestServerHijackedDeadline/tls=true
=== PAUSE TestServerHijackedDeadline/tls=true
=== CONT TestServerHijackedDeadline/tls=true
=== CONT TestServerHijackedDeadline/tls=false
--- PASS: TestServerHijackedDeadline (0.00s)
--- PASS: TestServerHijackedDeadline/tls=false (0.70s)
--- PASS: TestServerHijackedDeadline/tls=true (0.71s)
=== RUN TestServerContinuousDownload
=== RUN TestServerContinuousDownload/tls=false
=== PAUSE TestServerContinuousDownload/tls=false
=== RUN TestServerContinuousDownload/tls=true
=== PAUSE TestServerContinuousDownload/tls=true
=== CONT TestServerContinuousDownload/tls=false
=== CONT TestServerContinuousDownload/tls=true
=== NAME TestServerContinuousDownload/tls=false
server_deadline_test.go:624: continuous download 1.327951834s > idle 300ms
=== NAME TestServerContinuousDownload/tls=true
server_deadline_test.go:624: continuous download 1.320759709s > idle 300ms
--- PASS: TestServerContinuousDownload (0.00s)
--- PASS: TestServerContinuousDownload/tls=false (1.33s)
--- PASS: TestServerContinuousDownload/tls=true (1.33s)
=== RUN TestServerDefaultIdleLongDownload
server_deadline_test.go:631: set SILO_TEST_LONG_UPLOAD=1 for >30s default-idle transfer regressions
--- SKIP: TestServerDefaultIdleLongDownload (0.00s)
=== RUN TestNewServer
--- PASS: TestNewServer (0.00s)
PASS
ok github.com/minio/minio/internal/http 14.683s
@@ -0,0 +1,10 @@
=== RUN TestReviewR8AbsoluteHeaderTimeout
=== RUN TestReviewR8AbsoluteHeaderTimeout/standard-net-http
r8_baseline_test.go:56: request rejected after header timeout: unexpected EOF
=== RUN TestReviewR8AbsoluteHeaderTimeout/silo-listener
r8_baseline_test.go:56: request rejected after header timeout: unexpected EOF
--- PASS: TestReviewR8AbsoluteHeaderTimeout (0.80s)
--- PASS: TestReviewR8AbsoluteHeaderTimeout/standard-net-http (0.40s)
--- PASS: TestReviewR8AbsoluteHeaderTimeout/silo-listener (0.40s)
PASS
ok github.com/minio/minio/internal/http 1.312s
@@ -0,0 +1,186 @@
[
{
"name": "vet-final",
"command": [
"go",
"vet",
"./internal/deadlineconn",
"./internal/http"
],
"started_at_utc": "2026-09-15T16:04:26.504181+00:00",
"exit_code": 0,
"log": "docs/investigations/r8/evidence/vet-final.log",
"log_sha256": "521e3dbf0e63e910c0025f52abf592799fe3a9e9329a7fc33cb9938df5578036"
},
{
"name": "tidy-final",
"command": [
"go",
"mod",
"tidy",
"-diff"
],
"started_at_utc": "2026-09-15T16:04:26.810955+00:00",
"exit_code": 0,
"log": "docs/investigations/r8/evidence/tidy-final.log",
"log_sha256": "3ad6ef5392ed3ed22d5b0fc1d5e04665208487b3fb168910457b8197ab507471"
},
{
"name": "whitespace-final",
"command": [
"git",
"diff",
"--check"
],
"started_at_utc": "2026-09-15T16:04:26.979546+00:00",
"exit_code": 0,
"log": "docs/investigations/r8/evidence/whitespace-final.log",
"log_sha256": "fa77ab6dcf895a30623113e37b6ee812c6cd35b0cbb9693a0c18de550e6b1cf6"
},
{
"name": "linux-race-final",
"command": "docker run --rm ... golang:1.27.1-bookworm go test -p 2 -race ./internal/deadlineconn ./internal/http -count=1 -v",
"exit_code": 0,
"platform": "linux/arm64",
"log": "docs/investigations/r8/evidence/linux-race-final.log",
"log_sha256": "484577f3b3820ecfc078b38dd808e048f52704a8c3ffc0dad9100bff26ead1f3"
},
{
"name": "darwin-race-final",
"command": "go test -race ./internal/deadlineconn ./internal/http -count=1 -v",
"exit_code": 0,
"platform": "darwin/arm64",
"log": "docs/investigations/r8/evidence/darwin-race-final.log",
"log_sha256": "e7f0bac82e1eb346ff53422bb2426995bcb7d5d06b1d81c1bb3cc8c2dcdc7774"
},
{
"name": "review-refinements",
"command": "go test -race ./internal/http ./internal/deadlineconn -run ^Test(ServerHTTP2Deadlines|StrictReadDeadlineRepeatedRenewal)$ -count=3 -v",
"exit_code": 0,
"platform": "darwin/arm64",
"log": "docs/investigations/r8/evidence/review-refinements.log",
"log_sha256": "c9b46f946cedcca88b8ed3dc7e465a4ad7836b4add338e42db3da7572be6a83b"
},
{
"name": "original-reproducer-fixed",
"command": "go test -overlay=/Users/vonng/tmp/silo-r8-01a0a5b9/baseline-overlay.json ./internal/http -run ^TestReviewR8AbsoluteHeaderTimeout$ -count=1 -v",
"exit_code": 0,
"platform": "darwin/arm64",
"log": "docs/investigations/r8/evidence/original-reproducer-fixed.log",
"log_sha256": "e787f5e5ad826518a39fdebbb43d28b6ceab36ed8e32267cf3a450af31ce9844"
},
{
"name": "default-30s-transfers",
"command": "SILO_TEST_LONG_UPLOAD=1 go test ./internal/http -run ^TestServerDefaultIdleLong -count=1 -v",
"exit_code": 0,
"platform": "darwin/arm64",
"log": "docs/investigations/r8/evidence/default-30s-transfers.log",
"log_sha256": "378defff78ae565e95d52830e5b11c1a01a0a11efc14c2822228ca366df58bc3"
},
{
"name": "grid",
"command": "go test ./internal/grid -run ^(TestSingleRoundtrip|TestDisconnect)$ -count=1 -v",
"exit_code": 0,
"platform": "darwin/arm64",
"log": "docs/investigations/r8/evidence/grid.log",
"log_sha256": "4f677621e0c927e7a37bbd4c8e29ec9c5879ae4aaaf185fe4c3e0a4c41c6ab10"
},
{
"name": "configuration-baseline",
"command": "go test -p 2 -overlay=/Users/vonng/tmp/silo-r8-01a0a5b9/config-overlay.json ./cmd -run ^TestServerReadHeaderTimeoutConfig$ -count=1 -v",
"exit_code": 1,
"expected_failure": true,
"platform": "darwin/arm64",
"log": "docs/investigations/r8/evidence/config-baseline.log",
"log_sha256": "cc7f7bf345ecfe52db414a785ac3727dc7bf88ec6493de13c1ced1d215e706d8"
},
{
"name": "runtime-v1",
"command": "python3 docs/investigations/r8/evidence/runtime_probe.py /Users/vonng/tmp/silo-r8-01a0a5b9/silo-v1 baseline /Users/vonng/tmp/silo-r8-01a0a5b9/runtime-v1",
"exit_code": 0,
"expected_behavior": "both configured sources still incorrectly accept delayed headers before the binding fix",
"platform": "darwin/arm64",
"log": "docs/investigations/r8/evidence/runtime-v1.json",
"log_sha256": "64808fb172e98e81c65c324f5bb967b91a931fa4a757508aa64aaac94b663ce1"
},
{
"name": "lint-initial",
"command": "golangci-lint run --allow-serial-runners --timeout=5m ./internal/deadlineconn ./internal/http",
"exit_code": 1,
"reason": "staticcheck requested the promoted srv.Close selector; fixed without behavior change",
"log": "docs/investigations/r8/evidence/lint.log",
"log_sha256": "3370461b3b426035790fccc8b862538f3740f3c8455277518872de6befa6990a"
},
{
"name": "configuration-fixed",
"command": "go test -p 2 ./cmd -run ^(TestServerReadHeaderTimeoutConfig|TestServerConfigFile)$ -count=1 -v",
"exit_code": 0,
"platform": "darwin/arm64",
"log": "docs/investigations/r8/evidence/config-fixed.log",
"log_sha256": "bf9b7b80ecaa011bcdd4e32d902c0e03d79dfa5f9016f6b43c65678542cc74bb"
},
{
"name": "build-v2",
"command": "go build -p 2 -o /Users/vonng/tmp/silo-r8-01a0a5b9/silo-v2 .",
"exit_code": 0,
"platform": "darwin/arm64",
"log": "docs/investigations/r8/evidence/build-v2.log",
"log_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
},
{
"name": "lint-final",
"command": "golangci-lint run --allow-serial-runners --timeout=5m ./internal/deadlineconn ./internal/http",
"exit_code": 0,
"platform": "darwin/arm64",
"log": "docs/investigations/r8/evidence/lint-final.log",
"log_sha256": "e92606b0bf483111dff0a120c315ea165821348f31365020e2468a0059095c47"
},
{
"name": "runtime-v2",
"command": "python3 docs/investigations/r8/evidence/runtime_probe.py /Users/vonng/tmp/silo-r8-01a0a5b9/silo-v2 fixed /Users/vonng/tmp/silo-r8-01a0a5b9/runtime-v2",
"exit_code": 0,
"platform": "darwin/arm64",
"log": "docs/investigations/r8/evidence/runtime-v2.json",
"log_sha256": "253b0c192a3267731bfc46545befe0b7fe07cee6f9c5785d10a03ff782189499"
},
{
"name": "configuration-race-extra",
"command": "go test -race -p 2 ./cmd -run ^TestServerReadHeaderTimeoutConfig$ -count=1 -v",
"exit_code": 1,
"blocked_by_environment": "Darwin external linker failed: errno=28 No space left on device",
"log": "docs/investigations/r8/evidence/config-race.log",
"log_sha256": "4cec7bba425217027939e01cce8d931a0ade98695bfb31529e71a2d748fc6295"
},
{
"name": "legacy-timeout",
"command": "/bin/bash /Users/vonng/tmp/silo-r8-01a0a5b9/legacy-timeout/test-timeout-isolated.sh",
"exit_code": 255,
"status": "supplementary S3 script blocked by host storage capacity; normal PUT independently returns HTTP 507 XMinioStorageFull",
"log": "docs/investigations/r8/evidence/legacy-timeout.log",
"diagnostic": "docs/investigations/r8/evidence/s3-capacity-probe.json",
"log_sha256": "64f838a6a726e5ed2145924ea6bdbfe6ccb4a05dc1977baaa9658e7024888af6"
},
{
"name": "s3-capacity-diagnostic",
"command": "python3 /Users/vonng/tmp/silo-r8-01a0a5b9/s3_capacity_probe.py",
"exit_code": 0,
"observed_http_status": 507,
"observed_s3_code": "XMinioStorageFull",
"log": "docs/investigations/r8/evidence/s3-capacity-probe.json",
"log_sha256": "51111b9d72437089c8642ef2e2c2b02cf9c81227ec9de9857ba938ea280d077a"
},
{
"name": "delivery-whitespace",
"command": [
"git",
"diff",
"--check",
"9ebe81c1b3611f9cc73e676b5b741c2be62c467a",
"--"
],
"exit_code": 0,
"log": "docs/investigations/r8/evidence/delivery-whitespace.log",
"log_sha256": "3a403d687fac110e2675ee7f86a4f8b3c095b54fa602535f9805a957c67b92c2",
"note": "R8 archive .gitattributes preserves raw .log/.patch whitespace; production and test source still checked normally."
}
]
@@ -0,0 +1,16 @@
=== RUN TestServerHTTP2Deadlines
--- PASS: TestServerHTTP2Deadlines (0.42s)
=== RUN TestServerHTTP2Deadlines
--- PASS: TestServerHTTP2Deadlines (0.41s)
=== RUN TestServerHTTP2Deadlines
--- PASS: TestServerHTTP2Deadlines (0.42s)
PASS
ok github.com/minio/minio/internal/http 3.003s
=== RUN TestStrictReadDeadlineRepeatedRenewal
--- PASS: TestStrictReadDeadlineRepeatedRenewal (0.90s)
=== RUN TestStrictReadDeadlineRepeatedRenewal
--- PASS: TestStrictReadDeadlineRepeatedRenewal (0.90s)
=== RUN TestStrictReadDeadlineRepeatedRenewal
--- PASS: TestStrictReadDeadlineRepeatedRenewal (0.90s)
PASS
ok github.com/minio/minio/internal/deadlineconn 4.915s
@@ -0,0 +1,27 @@
{
"binary": "/Users/vonng/tmp/silo-r8-01a0a5b9/silo-v1",
"binary_sha256": "ed8d30cb40832f854bd82b083b9d1ec3ee16a35598416a54ef2d48bde8384ffc",
"expected_rejection": false,
"cases": [
{
"source": "flag",
"header_timeout_ms": 100,
"idle_timeout_ms": 2000,
"header_completion_delay_ms": 400,
"rejected": false,
"status": "HTTP/1.1 200 OK",
"elapsed_seconds": 0.401,
"still_alive": true
},
{
"source": "environment",
"header_timeout_ms": 100,
"idle_timeout_ms": 2000,
"header_completion_delay_ms": 400,
"rejected": false,
"status": "HTTP/1.1 200 OK",
"elapsed_seconds": 0.408,
"still_alive": true
}
]
}
@@ -0,0 +1,27 @@
{
"binary": "/Users/vonng/tmp/silo-r8-01a0a5b9/silo-v2",
"binary_sha256": "6b982de3262c25e326280c739b4275444cf80c3eacae48f0942aa18fbb7cd654",
"expected_rejection": true,
"cases": [
{
"source": "flag",
"header_timeout_ms": 100,
"idle_timeout_ms": 2000,
"header_completion_delay_ms": 400,
"rejected": true,
"status": "",
"elapsed_seconds": 0.403,
"still_alive": true
},
{
"source": "environment",
"header_timeout_ms": 100,
"idle_timeout_ms": 2000,
"header_completion_delay_ms": 400,
"rejected": true,
"status": "",
"elapsed_seconds": 0.401,
"still_alive": true
}
]
}
@@ -0,0 +1,79 @@
"""Probe the compiled SILO CLI on disposable loopback-only single-disk servers."""
import hashlib
import json
import os
from pathlib import Path
import signal
import socket
import subprocess
import sys
import tempfile
import time
import urllib.request
binary = Path(sys.argv[1]).resolve()
expected_rejection = sys.argv[2] == 'fixed'
output_dir = Path(sys.argv[3]).resolve()
output_dir.mkdir(parents=True, exist_ok=True)
results = []
for source in ('flag', 'environment'):
with socket.socket() as reservation:
reservation.bind(('127.0.0.1', 0))
port = reservation.getsockname()[1]
data_dir = tempfile.mkdtemp(prefix=f'r8-{source}-', dir=output_dir)
env = {k: v for k, v in os.environ.items() if not k.startswith(('MINIO_', 'SILO_'))}
env.update(MINIO_ROOT_USER='r8localtest', MINIO_ROOT_PASSWORD='r8-local-disposable-test-only', MINIO_BROWSER='off')
args = [str(binary), 'server', f'--address=127.0.0.1:{port}', '--console-address=127.0.0.1:0', '--idle-timeout=2s']
if source == 'flag':
args.append('--read-header-timeout=100ms')
else:
env['MINIO_READ_HEADER_TIMEOUT'] = '100ms'
args.append(data_dir)
with (output_dir / f'{source}-server.log').open('w') as server_log:
proc = subprocess.Popen(args, env=env, stdout=server_log, stderr=subprocess.STDOUT)
try:
url = f'http://127.0.0.1:{port}/minio/health/live'
started = time.monotonic()
while True:
if proc.poll() is not None:
raise RuntimeError(f'{source}: server exited {proc.returncode}; see its log')
try:
with urllib.request.urlopen(url, timeout=1) as resp:
if resp.status == 200:
break
except Exception:
pass
if time.monotonic() - started > 30:
raise RuntimeError(f'{source}: startup timed out')
time.sleep(0.1)
with socket.create_connection(('127.0.0.1', port), timeout=2) as conn:
conn.settimeout(3)
conn.sendall(b'GET /minio/health/live HTTP/1.1\r\nHost: localhost\r\nConnection: close\r\nX-Slow: ')
before = time.monotonic()
time.sleep(0.4)
try:
conn.sendall(b'done\r\n\r\n')
data = conn.recv(4096)
except (BrokenPipeError, ConnectionResetError):
data = b''
rejected = not data
status_line = data.split(b'\r\n', 1)[0].decode('ascii', 'replace')
elapsed = time.monotonic() - before
with urllib.request.urlopen(url, timeout=2) as resp:
alive = resp.status == 200
result = dict(source=source, header_timeout_ms=100, idle_timeout_ms=2000,
header_completion_delay_ms=400, rejected=rejected, status=status_line,
elapsed_seconds=round(elapsed, 3), still_alive=alive)
results.append(result)
if rejected != expected_rejection or not alive:
raise AssertionError(result)
finally:
proc.send_signal(signal.SIGTERM)
try:
proc.wait(timeout=10)
except subprocess.TimeoutExpired:
proc.kill()
proc.wait(timeout=5)
report = dict(binary=str(binary), binary_sha256=hashlib.sha256(binary.read_bytes()).hexdigest(),
expected_rejection=expected_rejection, cases=results)
print(json.dumps(report, indent=2))
@@ -0,0 +1,4 @@
{
"status": 507,
"body": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Error><Code>XMinioStorageFull</Code><Message>Storage backend has reached its minimum free drive threshold. Please delete a few objects to proceed.</Message><Key>testobject</Key><BucketName>testbucket</BucketName><Resource>/testbucket/testobject</Resource><RequestId>18D58A9DC7CF7668</RequestId><HostId>04c30fe94f97d234a29260401af8d884660258a809670077dfa5454fa24cb0df</HostId></Error>"
}
@@ -0,0 +1,27 @@
from pathlib import Path
import os,subprocess,socket,tempfile,time,urllib.request,urllib.error,signal,json
root=Path('/Users/vonng/tmp/silo-r8-01a0a5b9/capacity-probe');root.mkdir(exist_ok=True)
with socket.socket() as reservation:
reservation.bind(('127.0.0.1',0));port=reservation.getsockname()[1]
env={k:v for k,v in os.environ.items() if not k.startswith(('MINIO_','MC_','SILO_'))}
env.update(MINIO_ROOT_USER='silo',MINIO_ROOT_PASSWORD='silo1234',MINIO_BROWSER='off',MINIO_CI_CD='1',MC_HOST_silo=f'http://silo:silo1234@127.0.0.1:{port}/')
url=f'http://127.0.0.1:{port}'
with (root/'server.log').open('w') as log:
proc=subprocess.Popen(['/Users/vonng/tmp/silo-r8-01a0a5b9/silo-v2','server',f'--address=127.0.0.1:{port}','--read-header-timeout=5s','--idle-timeout=5s',str(root/'data')],env=env,stdout=log,stderr=subprocess.STDOUT)
try:
for _ in range(100):
try:
with urllib.request.urlopen(url+'/minio/health/live',timeout=1):break
except Exception:time.sleep(.1)
cli=['/opt/homebrew/bin/mcli','--config-dir',str(root/'mcli')]
for args in [['mb','silo/testbucket'],['anonymous','set','public','silo/testbucket']]:
r=subprocess.run(cli+args,env=env,text=True,stdout=subprocess.PIPE,stderr=subprocess.STDOUT);assert r.returncode==0,r.stdout
req=urllib.request.Request(url+'/testbucket/testobject',data=b'x'*30,method='PUT')
try:
with urllib.request.urlopen(req,timeout=10) as response:result={'status':response.status,'body':response.read().decode()}
except urllib.error.HTTPError as error:result={'status':error.code,'body':error.read().decode()}
print(json.dumps(result,indent=2))
finally:
proc.send_signal(signal.SIGTERM)
try:proc.wait(timeout=10)
except subprocess.TimeoutExpired:proc.kill();proc.wait()
@@ -0,0 +1,3 @@
$ go mod tidy -diff
exit_code=0
@@ -0,0 +1,3 @@
$ go vet ./internal/deadlineconn ./internal/http
exit_code=0
@@ -0,0 +1,3 @@
$ git diff --check
exit_code=0