Skip to content

Commit d56f38d

Browse files
committed
Break shadowsocks2022 test into Tcp and Udp
- make test smaller - pickPort is more reliable for only Tcp or Udp
1 parent 7b72e19 commit d56f38d

1 file changed

Lines changed: 86 additions & 15 deletions

File tree

testing/scenarios/shadowsocks_test.go

Lines changed: 86 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -490,31 +490,34 @@ func TestShadowsocksNone(t *testing.T) {
490490
}
491491
}
492492

493-
func TestShadowsocks2022(t *testing.T) {
493+
func TestShadowsocks2022Tcp(t *testing.T) {
494494
for _, method := range shadowaead_2022.List {
495495
password := make([]byte, 32)
496496
rand.Read(password)
497497
t.Run(method, func(t *testing.T) {
498-
testShadowsocks2022(t, method, base64.StdEncoding.EncodeToString(password))
498+
testShadowsocks2022Tcp(t, method, base64.StdEncoding.EncodeToString(password))
499499
})
500500
}
501501
}
502502

503-
func testShadowsocks2022(t *testing.T, method string, password string) {
503+
func TestShadowsocks2022Udp(t *testing.T) {
504+
for _, method := range shadowaead_2022.List {
505+
password := make([]byte, 32)
506+
rand.Read(password)
507+
t.Run(method, func(t *testing.T) {
508+
testShadowsocks2022Udp(t, method, base64.StdEncoding.EncodeToString(password))
509+
})
510+
}
511+
}
512+
513+
func testShadowsocks2022Tcp(t *testing.T, method string, password string) {
504514
tcpServer := tcp.Server{
505515
MsgProcessor: xor,
506516
}
507517
dest, err := tcpServer.Start()
508518
common.Must(err)
509519
defer tcpServer.Close()
510520

511-
udpServer := udp.Server{
512-
MsgProcessor: xor,
513-
}
514-
udpDest, err := udpServer.Start()
515-
common.Must(err)
516-
defer udpServer.Close()
517-
518521
serverPort := tcp.PickPort()
519522
serverConfig := &core.Config{
520523
App: []*serial.TypedMessage{
@@ -532,7 +535,7 @@ func testShadowsocks2022(t *testing.T, method string, password string) {
532535
ProxySettings: serial.ToTypedMessage(&shadowsocks_2022.ServerConfig{
533536
Method: method,
534537
Key: password,
535-
Network: []net.Network{net.Network_TCP, net.Network_UDP},
538+
Network: []net.Network{net.Network_TCP},
536539
}),
537540
},
538541
},
@@ -544,7 +547,6 @@ func testShadowsocks2022(t *testing.T, method string, password string) {
544547
}
545548

546549
clientPort := tcp.PickPort()
547-
udpClientPort := udp.PickPort()
548550
clientConfig := &core.Config{
549551
App: []*serial.TypedMessage{
550552
serial.ToTypedMessage(&log.Config{
@@ -564,6 +566,78 @@ func testShadowsocks2022(t *testing.T, method string, password string) {
564566
Networks: []net.Network{net.Network_TCP},
565567
}),
566568
},
569+
},
570+
Outbound: []*core.OutboundHandlerConfig{
571+
{
572+
ProxySettings: serial.ToTypedMessage(&shadowsocks_2022.ClientConfig{
573+
Address: net.NewIPOrDomain(net.LocalHostIP),
574+
Port: uint32(serverPort),
575+
Method: method,
576+
Key: password,
577+
}),
578+
},
579+
},
580+
}
581+
582+
servers, err := InitializeServerConfigs(serverConfig, clientConfig)
583+
common.Must(err)
584+
defer CloseAllServers(servers)
585+
586+
var errGroup errgroup.Group
587+
for i := 0; i < 10; i++ {
588+
errGroup.Go(testTCPConn(clientPort, 10240*1024, time.Second*20))
589+
}
590+
591+
if err := errGroup.Wait(); err != nil {
592+
t.Error(err)
593+
}
594+
}
595+
596+
func testShadowsocks2022Udp(t *testing.T, method string, password string) {
597+
udpServer := udp.Server{
598+
MsgProcessor: xor,
599+
}
600+
udpDest, err := udpServer.Start()
601+
common.Must(err)
602+
defer udpServer.Close()
603+
604+
serverPort := udp.PickPort()
605+
serverConfig := &core.Config{
606+
App: []*serial.TypedMessage{
607+
serial.ToTypedMessage(&log.Config{
608+
ErrorLogLevel: clog.Severity_Debug,
609+
ErrorLogType: log.LogType_Console,
610+
}),
611+
},
612+
Inbound: []*core.InboundHandlerConfig{
613+
{
614+
ReceiverSettings: serial.ToTypedMessage(&proxyman.ReceiverConfig{
615+
PortList: &net.PortList{Range: []*net.PortRange{net.SinglePortRange(serverPort)}},
616+
Listen: net.NewIPOrDomain(net.LocalHostIP),
617+
}),
618+
ProxySettings: serial.ToTypedMessage(&shadowsocks_2022.ServerConfig{
619+
Method: method,
620+
Key: password,
621+
Network: []net.Network{net.Network_UDP},
622+
}),
623+
},
624+
},
625+
Outbound: []*core.OutboundHandlerConfig{
626+
{
627+
ProxySettings: serial.ToTypedMessage(&freedom.Config{}),
628+
},
629+
},
630+
}
631+
632+
udpClientPort := udp.PickPort()
633+
clientConfig := &core.Config{
634+
App: []*serial.TypedMessage{
635+
serial.ToTypedMessage(&log.Config{
636+
ErrorLogLevel: clog.Severity_Debug,
637+
ErrorLogType: log.LogType_Console,
638+
}),
639+
},
640+
Inbound: []*core.InboundHandlerConfig{
567641
{
568642
ReceiverSettings: serial.ToTypedMessage(&proxyman.ReceiverConfig{
569643
PortList: &net.PortList{Range: []*net.PortRange{net.SinglePortRange(udpClientPort)}},
@@ -593,9 +667,6 @@ func testShadowsocks2022(t *testing.T, method string, password string) {
593667
defer CloseAllServers(servers)
594668

595669
var errGroup errgroup.Group
596-
for i := 0; i < 10; i++ {
597-
errGroup.Go(testTCPConn(clientPort, 10240*1024, time.Second*20))
598-
}
599670
for i := 0; i < 10; i++ {
600671
errGroup.Go(testUDPConn(udpClientPort, 1024, time.Second*5))
601672
}

0 commit comments

Comments
 (0)