| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 | // +build !wasmpackage buf_testimport (	"crypto/rand"	"net"	"testing"	"v2ray.com/core/common"	. "v2ray.com/core/common/buf"	"v2ray.com/core/common/compare"	"v2ray.com/core/testing/servers/tcp")func TestReadvReader(t *testing.T) {	tcpServer := &tcp.Server{		MsgProcessor: func(b []byte) []byte {			return b		},	}	dest, err := tcpServer.Start()	common.Must(err)	defer tcpServer.Close() // nolint: errcheck	conn, err := net.Dial("tcp", dest.NetAddr())	common.Must(err)	defer conn.Close() // nolint: errcheck	const size = 8192	data := make([]byte, 8192)	common.Must2(rand.Read(data))	go func() {		writer := NewWriter(conn)		var mb MultiBuffer		common.Must2(mb.Write(data))		if err := writer.WriteMultiBuffer(mb); err != nil {			t.Fatal("failed to write data: ", err)		}	}()	rawConn, err := conn.(*net.TCPConn).SyscallConn()	common.Must(err)	reader := NewReadVReader(conn, rawConn)	var rmb MultiBuffer	for {		mb, err := reader.ReadMultiBuffer()		if err != nil {			t.Fatal("unexpected error: ", err)		}		rmb.AppendMulti(mb)		if rmb.Len() == size {			break		}	}	rdata := make([]byte, size)	common.Must2(rmb.Read(rdata))	if err := compare.BytesEqualWithDetail(data, rdata); err != nil {		t.Fatal(err)	}}
 |