mirror of
https://github.com/XTLS/Xray-core.git
synced 2025-12-18 13:14:36 +03:00
Some checks are pending
Build and Release / build (arm, 7, linux) (push) Blocked by required conditions
Build and Release / build (arm, 7, openbsd) (push) Blocked by required conditions
Build and Release / build (arm, 7, windows) (push) Blocked by required conditions
Build and Release / build (arm64, android) (push) Blocked by required conditions
Build and Release / build (arm64, darwin) (push) Blocked by required conditions
Build and Release / build (arm64, freebsd) (push) Blocked by required conditions
Build and Release / build (arm64, linux) (push) Blocked by required conditions
Build and Release / build (arm64, openbsd) (push) Blocked by required conditions
Build and Release / build (arm64, windows) (push) Blocked by required conditions
Build and Release / build (loong64, linux) (push) Blocked by required conditions
Build and Release / build (mips, linux) (push) Blocked by required conditions
Build and Release / build (mips64, linux) (push) Blocked by required conditions
Build and Release / build (mips64le, linux) (push) Blocked by required conditions
Build and Release / build (mipsle, linux) (push) Blocked by required conditions
Build and Release / build (ppc64, linux) (push) Blocked by required conditions
Build and Release / build (ppc64le, linux) (push) Blocked by required conditions
Build and Release / build (riscv64, linux) (push) Blocked by required conditions
Build and Release / build (s390x, linux) (push) Blocked by required conditions
Test / test (macos-latest) (push) Waiting to run
Test / test (ubuntu-latest) (push) Waiting to run
Test / test (windows-latest) (push) Waiting to run
Build docker image / build-image (push) Waiting to run
Build and Release / prepare (push) Waiting to run
Build and Release / build (386, freebsd, , ) (push) Blocked by required conditions
Build and Release / build (386, linux, , ) (push) Blocked by required conditions
Build and Release / build (386, openbsd, , ) (push) Blocked by required conditions
Build and Release / build (386, windows, , ) (push) Blocked by required conditions
Build and Release / build (386, windows, 1.21.4, win7-32) (push) Blocked by required conditions
Build and Release / build (amd64, darwin, , ) (push) Blocked by required conditions
Build and Release / build (amd64, freebsd, , ) (push) Blocked by required conditions
Build and Release / build (amd64, linux, , ) (push) Blocked by required conditions
Build and Release / build (amd64, openbsd, , ) (push) Blocked by required conditions
Build and Release / build (amd64, windows, , ) (push) Blocked by required conditions
Build and Release / build (amd64, windows, 1.21.4, win7-64) (push) Blocked by required conditions
Build and Release / build (arm, 5, linux) (push) Blocked by required conditions
Build and Release / build (arm, 6, linux) (push) Blocked by required conditions
Build and Release / build (arm, 7, freebsd) (push) Blocked by required conditions
Fixes https://github.com/XTLS/Xray-core/discussions/4113#discussioncomment-11492833
93 lines
2.1 KiB
Go
93 lines
2.1 KiB
Go
package splithttp_test
|
|
|
|
import (
|
|
"context"
|
|
"testing"
|
|
|
|
. "github.com/xtls/xray-core/transport/internet/splithttp"
|
|
)
|
|
|
|
type fakeRoundTripper struct{}
|
|
|
|
func (f *fakeRoundTripper) IsClosed() bool {
|
|
return false
|
|
}
|
|
|
|
func TestMaxConnections(t *testing.T) {
|
|
xmuxConfig := XmuxConfig{
|
|
MaxConnections: &RangeConfig{From: 4, To: 4},
|
|
}
|
|
|
|
xmuxManager := NewXmuxManager(xmuxConfig, func() XmuxConn {
|
|
return &fakeRoundTripper{}
|
|
})
|
|
|
|
xmuxClients := make(map[interface{}]struct{})
|
|
for i := 0; i < 8; i++ {
|
|
xmuxClients[xmuxManager.GetXmuxClient(context.Background())] = struct{}{}
|
|
}
|
|
|
|
if len(xmuxClients) != 4 {
|
|
t.Error("did not get 4 distinct clients, got ", len(xmuxClients))
|
|
}
|
|
}
|
|
|
|
func TestCMaxReuseTimes(t *testing.T) {
|
|
xmuxConfig := XmuxConfig{
|
|
CMaxReuseTimes: &RangeConfig{From: 2, To: 2},
|
|
}
|
|
|
|
xmuxManager := NewXmuxManager(xmuxConfig, func() XmuxConn {
|
|
return &fakeRoundTripper{}
|
|
})
|
|
|
|
xmuxClients := make(map[interface{}]struct{})
|
|
for i := 0; i < 64; i++ {
|
|
xmuxClients[xmuxManager.GetXmuxClient(context.Background())] = struct{}{}
|
|
}
|
|
|
|
if len(xmuxClients) != 32 {
|
|
t.Error("did not get 32 distinct clients, got ", len(xmuxClients))
|
|
}
|
|
}
|
|
|
|
func TestMaxConcurrency(t *testing.T) {
|
|
xmuxConfig := XmuxConfig{
|
|
MaxConcurrency: &RangeConfig{From: 2, To: 2},
|
|
}
|
|
|
|
xmuxManager := NewXmuxManager(xmuxConfig, func() XmuxConn {
|
|
return &fakeRoundTripper{}
|
|
})
|
|
|
|
xmuxClients := make(map[interface{}]struct{})
|
|
for i := 0; i < 64; i++ {
|
|
xmuxClient := xmuxManager.GetXmuxClient(context.Background())
|
|
xmuxClient.OpenUsage.Add(1)
|
|
xmuxClients[xmuxClient] = struct{}{}
|
|
}
|
|
|
|
if len(xmuxClients) != 32 {
|
|
t.Error("did not get 32 distinct clients, got ", len(xmuxClients))
|
|
}
|
|
}
|
|
|
|
func TestDefault(t *testing.T) {
|
|
xmuxConfig := XmuxConfig{}
|
|
|
|
xmuxManager := NewXmuxManager(xmuxConfig, func() XmuxConn {
|
|
return &fakeRoundTripper{}
|
|
})
|
|
|
|
xmuxClients := make(map[interface{}]struct{})
|
|
for i := 0; i < 64; i++ {
|
|
xmuxClient := xmuxManager.GetXmuxClient(context.Background())
|
|
xmuxClient.OpenUsage.Add(1)
|
|
xmuxClients[xmuxClient] = struct{}{}
|
|
}
|
|
|
|
if len(xmuxClients) != 1 {
|
|
t.Error("did not get 1 distinct clients, got ", len(xmuxClients))
|
|
}
|
|
}
|