github.com/ipfans/trojan-go@v0.11.0/tunnel/mux/mux_test.go (about) 1 package mux 2 3 import ( 4 "context" 5 "testing" 6 7 "github.com/ipfans/trojan-go/common" 8 "github.com/ipfans/trojan-go/config" 9 "github.com/ipfans/trojan-go/test/util" 10 "github.com/ipfans/trojan-go/tunnel/freedom" 11 "github.com/ipfans/trojan-go/tunnel/transport" 12 ) 13 14 func TestMux(t *testing.T) { 15 muxCfg := &Config{ 16 Mux: MuxConfig{ 17 Enabled: true, 18 Concurrency: 8, 19 IdleTimeout: 60, 20 }, 21 } 22 ctx := config.WithConfig(context.Background(), Name, muxCfg) 23 24 port := common.PickPort("tcp", "127.0.0.1") 25 transportConfig := &transport.Config{ 26 LocalHost: "127.0.0.1", 27 LocalPort: port, 28 RemoteHost: "127.0.0.1", 29 RemotePort: port, 30 } 31 ctx = config.WithConfig(ctx, transport.Name, transportConfig) 32 ctx = config.WithConfig(ctx, freedom.Name, &freedom.Config{}) 33 34 tcpClient, err := transport.NewClient(ctx, nil) 35 common.Must(err) 36 tcpServer, err := transport.NewServer(ctx, nil) 37 common.Must(err) 38 39 common.Must(err) 40 41 muxTunnel := Tunnel{} 42 muxClient, _ := muxTunnel.NewClient(ctx, tcpClient) 43 muxServer, _ := muxTunnel.NewServer(ctx, tcpServer) 44 45 conn1, err := muxClient.DialConn(nil, nil) 46 common.Must2(conn1.Write(util.GeneratePayload(1024))) 47 common.Must(err) 48 buf := [1024]byte{} 49 conn2, err := muxServer.AcceptConn(nil) 50 common.Must(err) 51 common.Must2(conn2.Read(buf[:])) 52 if !util.CheckConn(conn1, conn2) { 53 t.Fail() 54 } 55 conn1.Close() 56 conn2.Close() 57 muxClient.Close() 58 muxServer.Close() 59 }