diff --git a/common/buf/io_test.go b/common/buf/io_test.go new file mode 100644 index 00000000..751dd619 --- /dev/null +++ b/common/buf/io_test.go @@ -0,0 +1,50 @@ +package buf_test + +import ( + "crypto/tls" + "io" + "testing" + + . "v2ray.com/core/common/buf" + "v2ray.com/core/common/net" + "v2ray.com/core/testing/servers/tcp" +) + +func TestWriterCreation(t *testing.T) { + tcpServer := tcp.Server{} + dest, err := tcpServer.Start() + if err != nil { + t.Fatal("failed to start tcp server: ", err) + } + defer tcpServer.Close() + + conn, err := net.Dial("tcp", dest.NetAddr()) + if err != nil { + t.Fatal("failed to dial a TCP connection: ", err) + } + defer conn.Close() + + { + writer := NewWriter(conn) + if _, ok := writer.(*BufferToBytesWriter); !ok { + t.Fatal("writer is not a BufferToBytesWriter") + } + + writer2 := NewWriter(writer.(io.Writer)) + if writer2 != writer { + t.Fatal("writer is not reused") + } + } + + tlsConn := tls.Client(conn, &tls.Config{ + InsecureSkipVerify: true, + }) + defer tlsConn.Close() + + { + writer := NewWriter(tlsConn) + if _, ok := writer.(*SequentialWriter); !ok { + t.Fatal("writer is not a SequentialWriter") + } + } +} diff --git a/common/net/system.go b/common/net/system.go index 17febb1c..e0ac4823 100644 --- a/common/net/system.go +++ b/common/net/system.go @@ -6,6 +6,7 @@ import "net" var DialTCP = net.DialTCP var DialUDP = net.DialUDP var DialUnix = net.DialUnix +var Dial = net.Dial var Listen = net.Listen var ListenTCP = net.ListenTCP