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  }