lolly/internal/http3/server_test.go

126 lines
2.9 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// Package http3 提供 HTTP/3 服务器功能的测试。
//
// 该文件测试 HTTP/3 服务器模块的各项功能,包括:
// - 服务器创建和配置验证
// - Alt-Svc 头部生成
// - 服务器统计信息获取
// - 运行状态检查
// - 服务器停止和优雅停止
//
// 作者xfy
package http3
import (
"crypto/tls"
"testing"
"github.com/valyala/fasthttp"
"rua.plus/lolly/internal/config"
)
// TestNewServer_NilConfig 测试空配置错误
func TestNewServer_NilConfig(t *testing.T) {
handler := func(_ *fasthttp.RequestCtx) {}
server, err := NewServer(nil, handler, &tls.Config{})
if err == nil {
t.Error("Expected error for nil config")
}
if server != nil {
t.Error("Expected nil server for nil config")
}
if err.Error() != "http3 config is nil" {
t.Errorf("Expected error message 'http3 config is nil', got: %v", err)
}
}
// TestNewServer_NilHandler 测试空 handler 错误
func TestNewServer_NilHandler(t *testing.T) {
cfg := &config.HTTP3Config{
Enabled: true,
Listen: ":443",
Enable0RTT: true,
}
server, err := NewServer(cfg, nil, &tls.Config{})
if err == nil {
t.Error("Expected error for nil handler")
}
if server != nil {
t.Error("Expected nil server for nil handler")
}
if err.Error() != "handler is nil" {
t.Errorf("Expected error message 'handler is nil', got: %v", err)
}
}
// TestNewServer_NilTLS 测试空 TLS 配置错误
func TestNewServer_NilTLS(t *testing.T) {
cfg := &config.HTTP3Config{
Enabled: true,
Listen: ":443",
Enable0RTT: true,
}
handler := func(_ *fasthttp.RequestCtx) {}
server, err := NewServer(cfg, handler, nil)
if err == nil {
t.Error("Expected error for nil TLS config")
}
if server != nil {
t.Error("Expected nil server for nil TLS config")
}
if err.Error() != "tls config is required for HTTP/3" {
t.Errorf("Expected error message 'tls config is required for HTTP/3', got: %v", err)
}
}
// TestNewServer_Success 测试成功创建服务器
func TestNewServer_Success(t *testing.T) {
cfg := &config.HTTP3Config{
Enabled: true,
Listen: ":443",
Enable0RTT: true,
MaxStreams: 100,
}
handler := func(_ *fasthttp.RequestCtx) {}
tlsConfig := &tls.Config{
Certificates: []tls.Certificate{},
}
server, err := NewServer(cfg, handler, tlsConfig)
if err != nil {
t.Errorf("Unexpected error: %v", err)
}
if server == nil {
t.Fatal("Expected non-nil server")
}
if server.config != cfg {
t.Error("Config not set correctly")
}
if server.handler == nil {
t.Error("Handler not set correctly")
}
if server.adapter == nil {
t.Error("Adapter not initialized")
}
if server.tlsConfig != tlsConfig {
t.Error("TLS config not set correctly")
}
if server.running {
t.Error("Server should not be running initially")
}
}
// TestStart_AlreadyRunning 测试启动已运行的服务器
// TestStart_InvalidListenAddress 测试无效监听地址