@@ -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