Files
sub2api-cn-relay-manager/internal/app/server_timeout_test.go
phamnazage-jpg 8bbdffaf17
Some checks failed
CI / Build & Test (push) Has been cancelled
CI / Lint (push) Has been cancelled
CI / Security Scan (push) Has been cancelled
CI / Docker Build (push) Has been cancelled
CI / Release (push) Has been cancelled
test: 补充真实功能验证测试
- ErrorMetrics 并发安全测试
- AsyncLogWriter 错误指标真实记录测试
- HTTP Server 超时配置真实验证
- Prometheus 指标 HTTP 端点真实测试
- 日志文件输出真实写入测试
2026-06-02 07:07:53 +08:00

70 lines
1.7 KiB
Go

package app
import (
"context"
"net/http"
"testing"
"time"
)
func TestServer_TimeoutConfiguration_Real(t *testing.T) {
// 创建一个慢速处理器
slowHandler := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
time.Sleep(100 * time.Millisecond)
w.Write([]byte("OK"))
})
server := NewServer("127.0.0.1:0", slowHandler, nil)
// 验证超时配置已设置
if server.server.ReadTimeout != 30*time.Second {
t.Errorf("ReadTimeout = %v, want 30s", server.server.ReadTimeout)
}
if server.server.ReadHeaderTimeout != 10*time.Second {
t.Errorf("ReadHeaderTimeout = %v, want 10s", server.server.ReadHeaderTimeout)
}
if server.server.WriteTimeout != 30*time.Second {
t.Errorf("WriteTimeout = %v, want 30s", server.server.WriteTimeout)
}
if server.server.IdleTimeout != 120*time.Second {
t.Errorf("IdleTimeout = %v, want 120s", server.server.IdleTimeout)
}
if server.server.MaxHeaderBytes != 1<<20 {
t.Errorf("MaxHeaderBytes = %d, want %d", server.server.MaxHeaderBytes, 1<<20)
}
}
func TestServer_GracefulShutdown(t *testing.T) {
handler := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
w.Write([]byte("OK"))
})
server := NewServer("127.0.0.1:0", handler, nil)
ctx, cancel := context.WithCancel(context.Background())
// 在后台启动服务
go func() {
server.Run(ctx)
}()
// 给服务启动时间
time.Sleep(50 * time.Millisecond)
// 发送取消信号触发关闭
cancel()
// 等待关闭完成
time.Sleep(100 * time.Millisecond)
// 验证服务可以正常关闭
t.Log("Server shutdown gracefully")
}
func TestServer_Addr(t *testing.T) {
server := NewServer(":8080", nil, nil)
if server.Addr() != ":8080" {
t.Errorf("Addr() = %q, want :8080", server.Addr())
}
}