Fix tests

This commit is contained in:
世界
2024-11-18 18:59:19 +08:00
parent f2ec319fe1
commit e65926fd08
29 changed files with 492 additions and 457 deletions

View File

@@ -3,22 +3,36 @@ package main
import (
"net/netip"
"testing"
"time"
C "github.com/sagernet/sing-box/constant"
"github.com/sagernet/sing-box/option"
"github.com/sagernet/sing-quic/hysteria2"
"github.com/sagernet/sing/common"
F "github.com/sagernet/sing/common/format"
"github.com/sagernet/sing/common/json/badoption"
)
func TestHysteria2Self(t *testing.T) {
t.Run("self", func(t *testing.T) {
testHysteria2Self(t, "")
testHysteria2Self(t, "", false)
})
t.Run("self-salamander", func(t *testing.T) {
testHysteria2Self(t, "password")
testHysteria2Self(t, "password", false)
})
t.Run("self-hop", func(t *testing.T) {
testHysteria2Self(t, "", true)
})
t.Run("self-hop-salamander", func(t *testing.T) {
testHysteria2Self(t, "password", true)
})
}
func testHysteria2Self(t *testing.T, salamanderPassword string) {
func TestHysteria2Hop(t *testing.T) {
testHysteria2Self(t, "password", true)
}
func testHysteria2Self(t *testing.T, salamanderPassword string, portHop bool) {
_, certPem, keyPem := createSelfSignedCertificate(t, "example.org")
var obfs *option.Hysteria2Obfs
if salamanderPassword != "" {
@@ -27,23 +41,31 @@ func testHysteria2Self(t *testing.T, salamanderPassword string) {
Password: salamanderPassword,
}
}
var (
serverPorts []string
hopInterval time.Duration
)
if portHop {
serverPorts = []string{F.ToString(serverPort, ":", serverPort)}
hopInterval = 5 * time.Second
}
startInstance(t, option.Options{
Inbounds: []option.LegacyInbound{
Inbounds: []option.Inbound{
{
Type: C.TypeMixed,
Tag: "mixed-in",
MixedOptions: option.HTTPMixedInboundOptions{
Options: &option.HTTPMixedInboundOptions{
ListenOptions: option.ListenOptions{
Listen: option.NewListenAddress(netip.IPv4Unspecified()),
Listen: common.Ptr(badoption.Addr(netip.IPv4Unspecified())),
ListenPort: clientPort,
},
},
},
{
Type: C.TypeHysteria2,
Hysteria2Options: option.Hysteria2InboundOptions{
Options: &option.Hysteria2InboundOptions{
ListenOptions: option.ListenOptions{
Listen: option.NewListenAddress(netip.IPv4Unspecified()),
Listen: common.Ptr(badoption.Addr(netip.IPv4Unspecified())),
ListenPort: serverPort,
},
UpMbps: 100,
@@ -63,22 +85,24 @@ func testHysteria2Self(t *testing.T, salamanderPassword string) {
},
},
},
LegacyOutbounds: []option.LegacyOutbound{
Outbounds: []option.Outbound{
{
Type: C.TypeDirect,
},
{
Type: C.TypeHysteria2,
Tag: "hy2-out",
Hysteria2Options: option.Hysteria2OutboundOptions{
Options: &option.Hysteria2OutboundOptions{
ServerOptions: option.ServerOptions{
Server: "127.0.0.1",
ServerPort: serverPort,
},
UpMbps: 100,
DownMbps: 100,
Obfs: obfs,
Password: "password",
ServerPorts: serverPorts,
HopInterval: badoption.Duration(hopInterval),
UpMbps: 100,
DownMbps: 100,
Obfs: obfs,
Password: "password",
OutboundTLSOptionsContainer: option.OutboundTLSOptionsContainer{
TLS: &option.OutboundTLSOptions{
Enabled: true,
@@ -110,17 +134,21 @@ func testHysteria2Self(t *testing.T, salamanderPassword string) {
},
})
testSuitLargeUDP(t, clientPort, testPort)
if portHop {
time.Sleep(5 * time.Second)
testSuitLargeUDP(t, clientPort, testPort)
}
}
func TestHysteria2Inbound(t *testing.T) {
caPem, certPem, keyPem := createSelfSignedCertificate(t, "example.org")
startInstance(t, option.Options{
Inbounds: []option.LegacyInbound{
Inbounds: []option.Inbound{
{
Type: C.TypeHysteria2,
Hysteria2Options: option.Hysteria2InboundOptions{
Options: &option.Hysteria2InboundOptions{
ListenOptions: option.ListenOptions{
Listen: option.NewListenAddress(netip.IPv4Unspecified()),
Listen: common.Ptr(badoption.Addr(netip.IPv4Unspecified())),
ListenPort: serverPort,
},
Obfs: &option.Hysteria2Obfs{
@@ -167,21 +195,21 @@ func TestHysteria2Outbound(t *testing.T) {
},
})
startInstance(t, option.Options{
Inbounds: []option.LegacyInbound{
Inbounds: []option.Inbound{
{
Type: C.TypeMixed,
MixedOptions: option.HTTPMixedInboundOptions{
Options: &option.HTTPMixedInboundOptions{
ListenOptions: option.ListenOptions{
Listen: option.NewListenAddress(netip.IPv4Unspecified()),
Listen: common.Ptr(badoption.Addr(netip.IPv4Unspecified())),
ListenPort: clientPort,
},
},
},
},
LegacyOutbounds: []option.LegacyOutbound{
Outbounds: []option.Outbound{
{
Type: C.TypeHysteria2,
Hysteria2Options: option.Hysteria2OutboundOptions{
Options: &option.Hysteria2OutboundOptions{
ServerOptions: option.ServerOptions{
Server: "127.0.0.1",
ServerPort: serverPort,