| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- 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))
- }
- }
|