mirror of https://github.com/v2ray/v2ray-core
remove dependency on assert lib
parent
986c80fcda
commit
40796b9f9c
|
@ -2,14 +2,12 @@ package scenarios
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"crypto/rand"
|
|
||||||
"fmt"
|
"fmt"
|
||||||
"io"
|
"io"
|
||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/google/go-cmp/cmp"
|
"github.com/google/go-cmp/cmp"
|
||||||
|
|
||||||
"google.golang.org/grpc"
|
"google.golang.org/grpc"
|
||||||
|
|
||||||
"v2ray.com/core"
|
"v2ray.com/core"
|
||||||
|
@ -500,23 +498,8 @@ func TestCommanderStats(t *testing.T) {
|
||||||
}
|
}
|
||||||
defer CloseAllServers(servers)
|
defer CloseAllServers(servers)
|
||||||
|
|
||||||
conn, err := net.DialTCP("tcp", nil, &net.TCPAddr{
|
if err := testTCPConn(clientPort, 10240*1024, time.Second*20)(); err != nil {
|
||||||
IP: []byte{127, 0, 0, 1},
|
t.Fatal(err)
|
||||||
Port: int(clientPort),
|
|
||||||
})
|
|
||||||
assert(err, IsNil)
|
|
||||||
defer conn.Close() // nolint: errcheck
|
|
||||||
|
|
||||||
payload := make([]byte, 10240*1024)
|
|
||||||
rand.Read(payload)
|
|
||||||
|
|
||||||
nBytes, err := conn.Write([]byte(payload))
|
|
||||||
assert(err, IsNil)
|
|
||||||
assert(nBytes, Equals, len(payload))
|
|
||||||
|
|
||||||
response := readFrom(conn, time.Second*20, 10240*1024)
|
|
||||||
if r := cmp.Diff(response, xor([]byte(payload))); r != "" {
|
|
||||||
t.Fatal("failed to read response: ", r)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
cmdConn, err := grpc.Dial(fmt.Sprintf("127.0.0.1:%d", cmdPort), grpc.WithInsecure(), grpc.WithBlock())
|
cmdConn, err := grpc.Dial(fmt.Sprintf("127.0.0.1:%d", cmdPort), grpc.WithInsecure(), grpc.WithBlock())
|
||||||
|
|
|
@ -44,6 +44,17 @@ func readFrom(conn net.Conn, timeout time.Duration, length int) []byte {
|
||||||
return b[:n]
|
return b[:n]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func readFrom2(conn net.Conn, timeout time.Duration, length int) ([]byte, error) {
|
||||||
|
b := make([]byte, length)
|
||||||
|
deadline := time.Now().Add(timeout)
|
||||||
|
conn.SetReadDeadline(deadline)
|
||||||
|
n, err := io.ReadFull(conn, b[:length])
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return b[:n], nil
|
||||||
|
}
|
||||||
|
|
||||||
func InitializeServerConfigs(configs ...*core.Config) ([]*exec.Cmd, error) {
|
func InitializeServerConfigs(configs ...*core.Config) ([]*exec.Cmd, error) {
|
||||||
servers := make([]*exec.Cmd, 0, 10)
|
servers := make([]*exec.Cmd, 0, 10)
|
||||||
|
|
||||||
|
@ -160,7 +171,10 @@ func testTCPConn(port net.Port, payloadSize int, timeout time.Duration) func() e
|
||||||
return errors.New("expect ", len(payload), " written, but actually ", nBytes)
|
return errors.New("expect ", len(payload), " written, but actually ", nBytes)
|
||||||
}
|
}
|
||||||
|
|
||||||
response := readFrom(conn, timeout, payloadSize)
|
response, err := readFrom2(conn, timeout, payloadSize)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
if r := cmp.Diff(response, xor(payload)); r != "" {
|
if r := cmp.Diff(response, xor(payload)); r != "" {
|
||||||
return errors.New(r)
|
return errors.New(r)
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,10 +2,12 @@ package scenarios
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"testing"
|
"testing"
|
||||||
|
"time"
|
||||||
|
|
||||||
"v2ray.com/core"
|
"v2ray.com/core"
|
||||||
"v2ray.com/core/app/log"
|
"v2ray.com/core/app/log"
|
||||||
"v2ray.com/core/app/proxyman"
|
"v2ray.com/core/app/proxyman"
|
||||||
|
"v2ray.com/core/common"
|
||||||
clog "v2ray.com/core/common/log"
|
clog "v2ray.com/core/common/log"
|
||||||
"v2ray.com/core/common/net"
|
"v2ray.com/core/common/net"
|
||||||
"v2ray.com/core/common/protocol"
|
"v2ray.com/core/common/protocol"
|
||||||
|
@ -22,13 +24,11 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestDokodemoTCP(t *testing.T) {
|
func TestDokodemoTCP(t *testing.T) {
|
||||||
assert := With(t)
|
|
||||||
|
|
||||||
tcpServer := tcp.Server{
|
tcpServer := tcp.Server{
|
||||||
MsgProcessor: xor,
|
MsgProcessor: xor,
|
||||||
}
|
}
|
||||||
dest, err := tcpServer.Start()
|
dest, err := tcpServer.Start()
|
||||||
assert(err, IsNil)
|
common.Must(err)
|
||||||
defer tcpServer.Close()
|
defer tcpServer.Close()
|
||||||
|
|
||||||
userID := protocol.NewID(uuid.New())
|
userID := protocol.NewID(uuid.New())
|
||||||
|
@ -110,28 +110,14 @@ func TestDokodemoTCP(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
servers, err := InitializeServerConfigs(serverConfig, clientConfig)
|
servers, err := InitializeServerConfigs(serverConfig, clientConfig)
|
||||||
assert(err, IsNil)
|
common.Must(err)
|
||||||
|
defer CloseAllServers(servers)
|
||||||
|
|
||||||
for port := clientPort; port <= clientPort+clientPortRange; port++ {
|
for port := clientPort; port <= clientPort+clientPortRange; port++ {
|
||||||
conn, err := net.DialTCP("tcp", nil, &net.TCPAddr{
|
if err := testTCPConn(net.Port(port), 1024, time.Second*2)(); err != nil {
|
||||||
IP: []byte{127, 0, 0, 1},
|
t.Error(err)
|
||||||
Port: int(port),
|
}
|
||||||
})
|
|
||||||
assert(err, IsNil)
|
|
||||||
|
|
||||||
payload := "dokodemo request."
|
|
||||||
nBytes, err := conn.Write([]byte(payload))
|
|
||||||
assert(err, IsNil)
|
|
||||||
assert(nBytes, Equals, len(payload))
|
|
||||||
|
|
||||||
response := make([]byte, 1024)
|
|
||||||
nBytes, err = conn.Read(response)
|
|
||||||
assert(err, IsNil)
|
|
||||||
assert(response[:nBytes], Equals, xor([]byte(payload)))
|
|
||||||
assert(conn.Close(), IsNil)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
CloseAllServers(servers)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestDokodemoUDP(t *testing.T) {
|
func TestDokodemoUDP(t *testing.T) {
|
||||||
|
|
|
@ -1,16 +1,17 @@
|
||||||
package scenarios
|
package scenarios
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"crypto/rand"
|
|
||||||
"io"
|
"io"
|
||||||
"sync"
|
|
||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"golang.org/x/sync/errgroup"
|
||||||
|
|
||||||
"v2ray.com/core"
|
"v2ray.com/core"
|
||||||
"v2ray.com/core/app/log"
|
"v2ray.com/core/app/log"
|
||||||
"v2ray.com/core/app/policy"
|
"v2ray.com/core/app/policy"
|
||||||
"v2ray.com/core/app/proxyman"
|
"v2ray.com/core/app/proxyman"
|
||||||
|
"v2ray.com/core/common"
|
||||||
clog "v2ray.com/core/common/log"
|
clog "v2ray.com/core/common/log"
|
||||||
"v2ray.com/core/common/net"
|
"v2ray.com/core/common/net"
|
||||||
"v2ray.com/core/common/protocol"
|
"v2ray.com/core/common/protocol"
|
||||||
|
@ -22,7 +23,6 @@ import (
|
||||||
"v2ray.com/core/proxy/vmess/inbound"
|
"v2ray.com/core/proxy/vmess/inbound"
|
||||||
"v2ray.com/core/proxy/vmess/outbound"
|
"v2ray.com/core/proxy/vmess/outbound"
|
||||||
"v2ray.com/core/testing/servers/tcp"
|
"v2ray.com/core/testing/servers/tcp"
|
||||||
. "v2ray.com/ext/assert"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func startQuickClosingTCPServer() (net.Listener, error) {
|
func startQuickClosingTCPServer() (net.Listener, error) {
|
||||||
|
@ -45,10 +45,8 @@ func startQuickClosingTCPServer() (net.Listener, error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestVMessClosing(t *testing.T) {
|
func TestVMessClosing(t *testing.T) {
|
||||||
assert := With(t)
|
|
||||||
|
|
||||||
tcpServer, err := startQuickClosingTCPServer()
|
tcpServer, err := startQuickClosingTCPServer()
|
||||||
assert(err, IsNil)
|
common.Must(err)
|
||||||
defer tcpServer.Close()
|
defer tcpServer.Close()
|
||||||
|
|
||||||
dest := net.DestinationFromAddr(tcpServer.Addr())
|
dest := net.DestinationFromAddr(tcpServer.Addr())
|
||||||
|
@ -148,36 +146,20 @@ func TestVMessClosing(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
servers, err := InitializeServerConfigs(serverConfig, clientConfig)
|
servers, err := InitializeServerConfigs(serverConfig, clientConfig)
|
||||||
assert(err, IsNil)
|
common.Must(err)
|
||||||
|
|
||||||
defer CloseAllServers(servers)
|
defer CloseAllServers(servers)
|
||||||
|
|
||||||
conn, err := net.DialTCP("tcp", nil, &net.TCPAddr{
|
if err := testTCPConn(clientPort, 1024, time.Second*2)(); err != io.EOF {
|
||||||
IP: []byte{127, 0, 0, 1},
|
t.Error(err)
|
||||||
Port: int(clientPort),
|
}
|
||||||
})
|
|
||||||
assert(err, IsNil)
|
|
||||||
|
|
||||||
conn.SetDeadline(time.Now().Add(time.Second * 2))
|
|
||||||
|
|
||||||
nBytes, err := conn.Write([]byte("test payload"))
|
|
||||||
assert(nBytes, GreaterThan, 0)
|
|
||||||
assert(err, IsNil)
|
|
||||||
|
|
||||||
resp := make([]byte, 1024)
|
|
||||||
nBytes, err = conn.Read(resp)
|
|
||||||
assert(err, Equals, io.EOF)
|
|
||||||
assert(nBytes, Equals, 0)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestZeroBuffer(t *testing.T) {
|
func TestZeroBuffer(t *testing.T) {
|
||||||
assert := With(t)
|
|
||||||
|
|
||||||
tcpServer := tcp.Server{
|
tcpServer := tcp.Server{
|
||||||
MsgProcessor: xor,
|
MsgProcessor: xor,
|
||||||
}
|
}
|
||||||
dest, err := tcpServer.Start()
|
dest, err := tcpServer.Start()
|
||||||
assert(err, IsNil)
|
common.Must(err)
|
||||||
defer tcpServer.Close()
|
defer tcpServer.Close()
|
||||||
|
|
||||||
userID := protocol.NewID(uuid.New())
|
userID := protocol.NewID(uuid.New())
|
||||||
|
@ -272,31 +254,14 @@ func TestZeroBuffer(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
servers, err := InitializeServerConfigs(serverConfig, clientConfig)
|
servers, err := InitializeServerConfigs(serverConfig, clientConfig)
|
||||||
assert(err, IsNil)
|
common.Must(err)
|
||||||
defer CloseAllServers(servers)
|
defer CloseAllServers(servers)
|
||||||
|
|
||||||
var wg sync.WaitGroup
|
var errg errgroup.Group
|
||||||
wg.Add(10)
|
|
||||||
for i := 0; i < 10; i++ {
|
for i := 0; i < 10; i++ {
|
||||||
go func() {
|
errg.Go(testTCPConn(clientPort, 10240*1024, time.Second*20))
|
||||||
conn, err := net.DialTCP("tcp", nil, &net.TCPAddr{
|
}
|
||||||
IP: []byte{127, 0, 0, 1},
|
if err := errg.Wait(); err != nil {
|
||||||
Port: int(clientPort),
|
t.Error(err)
|
||||||
})
|
|
||||||
assert(err, IsNil)
|
|
||||||
|
|
||||||
payload := make([]byte, 10240*1024)
|
|
||||||
rand.Read(payload)
|
|
||||||
|
|
||||||
nBytes, err := conn.Write([]byte(payload))
|
|
||||||
assert(err, IsNil)
|
|
||||||
assert(nBytes, Equals, len(payload))
|
|
||||||
|
|
||||||
response := readFrom(conn, time.Second*20, 10240*1024)
|
|
||||||
assert(response, Equals, xor([]byte(payload)))
|
|
||||||
assert(conn.Close(), IsNil)
|
|
||||||
wg.Done()
|
|
||||||
}()
|
|
||||||
}
|
}
|
||||||
wg.Wait()
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -439,13 +439,11 @@ func TestShadowsocksChacha20Poly1305TCP(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestShadowsocksAES256GCMTCP(t *testing.T) {
|
func TestShadowsocksAES256GCMTCP(t *testing.T) {
|
||||||
assert := With(t)
|
|
||||||
|
|
||||||
tcpServer := tcp.Server{
|
tcpServer := tcp.Server{
|
||||||
MsgProcessor: xor,
|
MsgProcessor: xor,
|
||||||
}
|
}
|
||||||
dest, err := tcpServer.Start()
|
dest, err := tcpServer.Start()
|
||||||
assert(err, IsNil)
|
common.Must(err)
|
||||||
defer tcpServer.Close()
|
defer tcpServer.Close()
|
||||||
|
|
||||||
account := serial.ToTypedMessage(&shadowsocks.Account{
|
account := serial.ToTypedMessage(&shadowsocks.Account{
|
||||||
|
@ -526,34 +524,17 @@ func TestShadowsocksAES256GCMTCP(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
servers, err := InitializeServerConfigs(serverConfig, clientConfig)
|
servers, err := InitializeServerConfigs(serverConfig, clientConfig)
|
||||||
assert(err, IsNil)
|
common.Must(err)
|
||||||
|
defer CloseAllServers(servers)
|
||||||
|
|
||||||
var wg sync.WaitGroup
|
var errg errgroup.Group
|
||||||
wg.Add(10)
|
|
||||||
for i := 0; i < 10; i++ {
|
for i := 0; i < 10; i++ {
|
||||||
go func() {
|
errg.Go(testTCPConn(clientPort, 10240*1024, time.Second*20))
|
||||||
conn, err := net.DialTCP("tcp", nil, &net.TCPAddr{
|
|
||||||
IP: []byte{127, 0, 0, 1},
|
|
||||||
Port: int(clientPort),
|
|
||||||
})
|
|
||||||
assert(err, IsNil)
|
|
||||||
|
|
||||||
payload := make([]byte, 10240*1024)
|
|
||||||
rand.Read(payload)
|
|
||||||
|
|
||||||
nBytes, err := conn.Write([]byte(payload))
|
|
||||||
assert(err, IsNil)
|
|
||||||
assert(nBytes, Equals, len(payload))
|
|
||||||
|
|
||||||
response := readFrom(conn, time.Second*20, 10240*1024)
|
|
||||||
assert(response, Equals, xor([]byte(payload)))
|
|
||||||
assert(conn.Close(), IsNil)
|
|
||||||
wg.Done()
|
|
||||||
}()
|
|
||||||
}
|
}
|
||||||
wg.Wait()
|
|
||||||
|
|
||||||
CloseAllServers(servers)
|
if err := errg.Wait(); err != nil {
|
||||||
|
t.Error(err)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestShadowsocksAES128GCMUDP(t *testing.T) {
|
func TestShadowsocksAES128GCMUDP(t *testing.T) {
|
||||||
|
@ -880,30 +861,7 @@ func TestShadowsocksNone(t *testing.T) {
|
||||||
|
|
||||||
var errg errgroup.Group
|
var errg errgroup.Group
|
||||||
for i := 0; i < 10; i++ {
|
for i := 0; i < 10; i++ {
|
||||||
errg.Go(func() error {
|
errg.Go(testTCPConn(clientPort, 10240*1024, time.Second*20))
|
||||||
conn, err := net.DialTCP("tcp", nil, &net.TCPAddr{
|
|
||||||
IP: []byte{127, 0, 0, 1},
|
|
||||||
Port: int(clientPort),
|
|
||||||
})
|
|
||||||
common.Must(err)
|
|
||||||
defer conn.Close()
|
|
||||||
|
|
||||||
payload := make([]byte, 10240*1024)
|
|
||||||
rand.Read(payload)
|
|
||||||
|
|
||||||
nBytes, err := conn.Write([]byte(payload))
|
|
||||||
common.Must(err)
|
|
||||||
|
|
||||||
if nBytes != len(payload) {
|
|
||||||
return errors.New("only part of payload is written: ", nBytes)
|
|
||||||
}
|
|
||||||
|
|
||||||
response := readFrom(conn, time.Second*20, 10240*1024)
|
|
||||||
if r := cmp.Diff(response, xor(payload)); r != "" {
|
|
||||||
return errors.New(r)
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := errg.Wait(); err != nil {
|
if err := errg.Wait(); err != nil {
|
||||||
|
|
|
@ -2,6 +2,7 @@ package scenarios
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"testing"
|
"testing"
|
||||||
|
"time"
|
||||||
|
|
||||||
xproxy "golang.org/x/net/proxy"
|
xproxy "golang.org/x/net/proxy"
|
||||||
socks4 "h12.io/socks"
|
socks4 "h12.io/socks"
|
||||||
|
@ -9,6 +10,7 @@ import (
|
||||||
"v2ray.com/core"
|
"v2ray.com/core"
|
||||||
"v2ray.com/core/app/proxyman"
|
"v2ray.com/core/app/proxyman"
|
||||||
"v2ray.com/core/app/router"
|
"v2ray.com/core/app/router"
|
||||||
|
"v2ray.com/core/common"
|
||||||
"v2ray.com/core/common/net"
|
"v2ray.com/core/common/net"
|
||||||
"v2ray.com/core/common/protocol"
|
"v2ray.com/core/common/protocol"
|
||||||
"v2ray.com/core/common/serial"
|
"v2ray.com/core/common/serial"
|
||||||
|
@ -22,13 +24,11 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestSocksBridgeTCP(t *testing.T) {
|
func TestSocksBridgeTCP(t *testing.T) {
|
||||||
assert := With(t)
|
|
||||||
|
|
||||||
tcpServer := tcp.Server{
|
tcpServer := tcp.Server{
|
||||||
MsgProcessor: xor,
|
MsgProcessor: xor,
|
||||||
}
|
}
|
||||||
dest, err := tcpServer.Start()
|
dest, err := tcpServer.Start()
|
||||||
assert(err, IsNil)
|
common.Must(err)
|
||||||
defer tcpServer.Close()
|
defer tcpServer.Close()
|
||||||
|
|
||||||
serverPort := tcp.PickPort()
|
serverPort := tcp.PickPort()
|
||||||
|
@ -96,26 +96,12 @@ func TestSocksBridgeTCP(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
servers, err := InitializeServerConfigs(serverConfig, clientConfig)
|
servers, err := InitializeServerConfigs(serverConfig, clientConfig)
|
||||||
assert(err, IsNil)
|
common.Must(err)
|
||||||
|
defer CloseAllServers(servers)
|
||||||
|
|
||||||
conn, err := net.DialTCP("tcp", nil, &net.TCPAddr{
|
if err := testTCPConn(clientPort, 1024, time.Second*2)(); err != nil {
|
||||||
IP: []byte{127, 0, 0, 1},
|
t.Error(err)
|
||||||
Port: int(clientPort),
|
}
|
||||||
})
|
|
||||||
assert(err, IsNil)
|
|
||||||
|
|
||||||
payload := "test payload"
|
|
||||||
nBytes, err := conn.Write([]byte(payload))
|
|
||||||
assert(err, IsNil)
|
|
||||||
assert(nBytes, Equals, len(payload))
|
|
||||||
|
|
||||||
response := make([]byte, 1024)
|
|
||||||
nBytes, err = conn.Read(response)
|
|
||||||
assert(err, IsNil)
|
|
||||||
assert(response[:nBytes], Equals, xor([]byte(payload)))
|
|
||||||
assert(conn.Close(), IsNil)
|
|
||||||
|
|
||||||
CloseAllServers(servers)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestSocksBridageUDP(t *testing.T) {
|
func TestSocksBridageUDP(t *testing.T) {
|
||||||
|
|
|
@ -1,20 +1,16 @@
|
||||||
package scenarios
|
package scenarios
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"crypto/rand"
|
|
||||||
"crypto/x509"
|
"crypto/x509"
|
||||||
"runtime"
|
"runtime"
|
||||||
"sync"
|
|
||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/google/go-cmp/cmp"
|
|
||||||
"golang.org/x/sync/errgroup"
|
"golang.org/x/sync/errgroup"
|
||||||
|
|
||||||
"v2ray.com/core"
|
"v2ray.com/core"
|
||||||
"v2ray.com/core/app/proxyman"
|
"v2ray.com/core/app/proxyman"
|
||||||
"v2ray.com/core/common"
|
"v2ray.com/core/common"
|
||||||
"v2ray.com/core/common/errors"
|
|
||||||
"v2ray.com/core/common/net"
|
"v2ray.com/core/common/net"
|
||||||
"v2ray.com/core/common/protocol"
|
"v2ray.com/core/common/protocol"
|
||||||
"v2ray.com/core/common/protocol/tls/cert"
|
"v2ray.com/core/common/protocol/tls/cert"
|
||||||
|
@ -31,7 +27,6 @@ import (
|
||||||
"v2ray.com/core/transport/internet/http"
|
"v2ray.com/core/transport/internet/http"
|
||||||
"v2ray.com/core/transport/internet/tls"
|
"v2ray.com/core/transport/internet/tls"
|
||||||
"v2ray.com/core/transport/internet/websocket"
|
"v2ray.com/core/transport/internet/websocket"
|
||||||
. "v2ray.com/ext/assert"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestSimpleTLSConnection(t *testing.T) {
|
func TestSimpleTLSConnection(t *testing.T) {
|
||||||
|
@ -129,34 +124,7 @@ func TestSimpleTLSConnection(t *testing.T) {
|
||||||
common.Must(err)
|
common.Must(err)
|
||||||
defer CloseAllServers(servers)
|
defer CloseAllServers(servers)
|
||||||
|
|
||||||
var errg errgroup.Group
|
if err := testTCPConn(clientPort, 1024, time.Second*2)(); err != nil {
|
||||||
errg.Go(func() error {
|
|
||||||
conn, err := net.DialTCP("tcp", nil, &net.TCPAddr{
|
|
||||||
IP: []byte{127, 0, 0, 1},
|
|
||||||
Port: int(clientPort),
|
|
||||||
})
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
defer conn.Close()
|
|
||||||
|
|
||||||
payload := make([]byte, 1024)
|
|
||||||
common.Must2(rand.Read(payload))
|
|
||||||
|
|
||||||
nBytes, err := conn.Write([]byte(payload))
|
|
||||||
common.Must(err)
|
|
||||||
if nBytes != len(payload) {
|
|
||||||
return errors.New("expected ", len(payload), " written, but actually ", nBytes)
|
|
||||||
}
|
|
||||||
|
|
||||||
response := readFrom(conn, time.Second*2, len(payload))
|
|
||||||
if r := cmp.Diff(response, xor(payload)); r != "" {
|
|
||||||
return errors.New(r)
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
})
|
|
||||||
|
|
||||||
if err := errg.Wait(); err != nil {
|
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -171,17 +139,15 @@ func TestAutoIssuingCertificate(t *testing.T) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
assert := With(t)
|
|
||||||
|
|
||||||
tcpServer := tcp.Server{
|
tcpServer := tcp.Server{
|
||||||
MsgProcessor: xor,
|
MsgProcessor: xor,
|
||||||
}
|
}
|
||||||
dest, err := tcpServer.Start()
|
dest, err := tcpServer.Start()
|
||||||
assert(err, IsNil)
|
common.Must(err)
|
||||||
defer tcpServer.Close()
|
defer tcpServer.Close()
|
||||||
|
|
||||||
caCert, err := cert.Generate(nil, cert.Authority(true), cert.KeyUsage(x509.KeyUsageDigitalSignature|x509.KeyUsageKeyEncipherment|x509.KeyUsageCertSign))
|
caCert, err := cert.Generate(nil, cert.Authority(true), cert.KeyUsage(x509.KeyUsageDigitalSignature|x509.KeyUsageKeyEncipherment|x509.KeyUsageCertSign))
|
||||||
assert(err, IsNil)
|
common.Must(err)
|
||||||
certPEM, keyPEM := caCert.ToPEM()
|
certPEM, keyPEM := caCert.ToPEM()
|
||||||
|
|
||||||
userID := protocol.NewID(uuid.New())
|
userID := protocol.NewID(uuid.New())
|
||||||
|
@ -276,36 +242,22 @@ func TestAutoIssuingCertificate(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
servers, err := InitializeServerConfigs(serverConfig, clientConfig)
|
servers, err := InitializeServerConfigs(serverConfig, clientConfig)
|
||||||
assert(err, IsNil)
|
common.Must(err)
|
||||||
|
defer CloseAllServers(servers)
|
||||||
|
|
||||||
for i := 0; i < 10; i++ {
|
for i := 0; i < 10; i++ {
|
||||||
conn, err := net.DialTCP("tcp", nil, &net.TCPAddr{
|
if err := testTCPConn(clientPort, 1024, time.Second*2)(); err != nil {
|
||||||
IP: []byte{127, 0, 0, 1},
|
t.Error(err)
|
||||||
Port: int(clientPort),
|
}
|
||||||
})
|
|
||||||
assert(err, IsNil)
|
|
||||||
|
|
||||||
payload := "dokodemo request."
|
|
||||||
nBytes, err := conn.Write([]byte(payload))
|
|
||||||
assert(err, IsNil)
|
|
||||||
assert(nBytes, Equals, len(payload))
|
|
||||||
|
|
||||||
response := readFrom(conn, time.Second*2, len(payload))
|
|
||||||
assert(response, Equals, xor([]byte(payload)))
|
|
||||||
assert(conn.Close(), IsNil)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
CloseAllServers(servers)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestTLSOverKCP(t *testing.T) {
|
func TestTLSOverKCP(t *testing.T) {
|
||||||
assert := With(t)
|
|
||||||
|
|
||||||
tcpServer := tcp.Server{
|
tcpServer := tcp.Server{
|
||||||
MsgProcessor: xor,
|
MsgProcessor: xor,
|
||||||
}
|
}
|
||||||
dest, err := tcpServer.Start()
|
dest, err := tcpServer.Start()
|
||||||
assert(err, IsNil)
|
common.Must(err)
|
||||||
defer tcpServer.Close()
|
defer tcpServer.Close()
|
||||||
|
|
||||||
userID := protocol.NewID(uuid.New())
|
userID := protocol.NewID(uuid.New())
|
||||||
|
@ -394,34 +346,20 @@ func TestTLSOverKCP(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
servers, err := InitializeServerConfigs(serverConfig, clientConfig)
|
servers, err := InitializeServerConfigs(serverConfig, clientConfig)
|
||||||
assert(err, IsNil)
|
common.Must(err)
|
||||||
|
defer CloseAllServers(servers)
|
||||||
|
|
||||||
conn, err := net.DialTCP("tcp", nil, &net.TCPAddr{
|
if err := testTCPConn(clientPort, 1024, time.Second*2)(); err != nil {
|
||||||
IP: []byte{127, 0, 0, 1},
|
t.Error(err)
|
||||||
Port: int(clientPort),
|
}
|
||||||
})
|
|
||||||
assert(err, IsNil)
|
|
||||||
|
|
||||||
payload := "dokodemo request."
|
|
||||||
nBytes, err := conn.Write([]byte(payload))
|
|
||||||
assert(err, IsNil)
|
|
||||||
assert(nBytes, Equals, len(payload))
|
|
||||||
|
|
||||||
response := readFrom(conn, time.Second*2, len(payload))
|
|
||||||
assert(response, Equals, xor([]byte(payload)))
|
|
||||||
assert(conn.Close(), IsNil)
|
|
||||||
|
|
||||||
CloseAllServers(servers)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestTLSOverWebSocket(t *testing.T) {
|
func TestTLSOverWebSocket(t *testing.T) {
|
||||||
assert := With(t)
|
|
||||||
|
|
||||||
tcpServer := tcp.Server{
|
tcpServer := tcp.Server{
|
||||||
MsgProcessor: xor,
|
MsgProcessor: xor,
|
||||||
}
|
}
|
||||||
dest, err := tcpServer.Start()
|
dest, err := tcpServer.Start()
|
||||||
assert(err, IsNil)
|
common.Must(err)
|
||||||
defer tcpServer.Close()
|
defer tcpServer.Close()
|
||||||
|
|
||||||
userID := protocol.NewID(uuid.New())
|
userID := protocol.NewID(uuid.New())
|
||||||
|
@ -519,40 +457,21 @@ func TestTLSOverWebSocket(t *testing.T) {
|
||||||
common.Must(err)
|
common.Must(err)
|
||||||
defer CloseAllServers(servers)
|
defer CloseAllServers(servers)
|
||||||
|
|
||||||
var wg sync.WaitGroup
|
var errg errgroup.Group
|
||||||
for i := 0; i < 10; i++ {
|
for i := 0; i < 10; i++ {
|
||||||
wg.Add(1)
|
errg.Go(testTCPConn(clientPort, 10240*1024, time.Second*20))
|
||||||
go func() {
|
}
|
||||||
defer wg.Done()
|
if err := errg.Wait(); err != nil {
|
||||||
|
t.Error(err)
|
||||||
conn, err := net.DialTCP("tcp", nil, &net.TCPAddr{
|
|
||||||
IP: []byte{127, 0, 0, 1},
|
|
||||||
Port: int(clientPort),
|
|
||||||
})
|
|
||||||
common.Must(err)
|
|
||||||
|
|
||||||
payload := make([]byte, 10240*1024)
|
|
||||||
rand.Read(payload)
|
|
||||||
nBytes, err := conn.Write([]byte(payload))
|
|
||||||
assert(err, IsNil)
|
|
||||||
assert(nBytes, Equals, len(payload))
|
|
||||||
|
|
||||||
response := readFrom(conn, time.Second*20, len(payload))
|
|
||||||
assert(response, Equals, xor([]byte(payload)))
|
|
||||||
assert(conn.Close(), IsNil)
|
|
||||||
}()
|
|
||||||
}
|
}
|
||||||
wg.Wait()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestHTTP2(t *testing.T) {
|
func TestHTTP2(t *testing.T) {
|
||||||
assert := With(t)
|
|
||||||
|
|
||||||
tcpServer := tcp.Server{
|
tcpServer := tcp.Server{
|
||||||
MsgProcessor: xor,
|
MsgProcessor: xor,
|
||||||
}
|
}
|
||||||
dest, err := tcpServer.Start()
|
dest, err := tcpServer.Start()
|
||||||
assert(err, IsNil)
|
common.Must(err)
|
||||||
defer tcpServer.Close()
|
defer tcpServer.Close()
|
||||||
|
|
||||||
userID := protocol.NewID(uuid.New())
|
userID := protocol.NewID(uuid.New())
|
||||||
|
@ -659,32 +578,14 @@ func TestHTTP2(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
servers, err := InitializeServerConfigs(serverConfig, clientConfig)
|
servers, err := InitializeServerConfigs(serverConfig, clientConfig)
|
||||||
assert(err, IsNil)
|
common.Must(err)
|
||||||
|
defer CloseAllServers(servers)
|
||||||
|
|
||||||
var wg sync.WaitGroup
|
var errg errgroup.Group
|
||||||
for i := 0; i < 10; i++ {
|
for i := 0; i < 10; i++ {
|
||||||
wg.Add(1)
|
errg.Go(testTCPConn(clientPort, 10240*1024, time.Second*20))
|
||||||
go func() {
|
}
|
||||||
defer wg.Done()
|
if err := errg.Wait(); err != nil {
|
||||||
|
t.Error(err)
|
||||||
conn, err := net.DialTCP("tcp", nil, &net.TCPAddr{
|
|
||||||
IP: []byte{127, 0, 0, 1},
|
|
||||||
Port: int(clientPort),
|
|
||||||
})
|
|
||||||
assert(err, IsNil)
|
|
||||||
|
|
||||||
payload := make([]byte, 10240*1024)
|
|
||||||
rand.Read(payload)
|
|
||||||
nBytes, err := conn.Write([]byte(payload))
|
|
||||||
assert(err, IsNil)
|
|
||||||
assert(nBytes, Equals, len(payload))
|
|
||||||
|
|
||||||
response := readFrom(conn, time.Second*20, len(payload))
|
|
||||||
assert(response, Equals, xor([]byte(payload)))
|
|
||||||
assert(conn.Close(), IsNil)
|
|
||||||
}()
|
|
||||||
}
|
}
|
||||||
wg.Wait()
|
|
||||||
|
|
||||||
CloseAllServers(servers)
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,7 +7,6 @@ import (
|
||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/google/go-cmp/cmp"
|
|
||||||
"golang.org/x/sync/errgroup"
|
"golang.org/x/sync/errgroup"
|
||||||
"v2ray.com/core"
|
"v2ray.com/core"
|
||||||
"v2ray.com/core/app/log"
|
"v2ray.com/core/app/log"
|
||||||
|
@ -498,13 +497,11 @@ func TestVMessGCMUDP(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestVMessChacha20(t *testing.T) {
|
func TestVMessChacha20(t *testing.T) {
|
||||||
assert := With(t)
|
|
||||||
|
|
||||||
tcpServer := tcp.Server{
|
tcpServer := tcp.Server{
|
||||||
MsgProcessor: xor,
|
MsgProcessor: xor,
|
||||||
}
|
}
|
||||||
dest, err := tcpServer.Start()
|
dest, err := tcpServer.Start()
|
||||||
assert(err, IsNil)
|
common.Must(err)
|
||||||
defer tcpServer.Close()
|
defer tcpServer.Close()
|
||||||
|
|
||||||
userID := protocol.NewID(uuid.New())
|
userID := protocol.NewID(uuid.New())
|
||||||
|
@ -590,44 +587,25 @@ func TestVMessChacha20(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
servers, err := InitializeServerConfigs(serverConfig, clientConfig)
|
servers, err := InitializeServerConfigs(serverConfig, clientConfig)
|
||||||
assert(err, IsNil)
|
common.Must(err)
|
||||||
|
defer CloseAllServers(servers)
|
||||||
|
|
||||||
var wg sync.WaitGroup
|
var errg errgroup.Group
|
||||||
wg.Add(10)
|
|
||||||
for i := 0; i < 10; i++ {
|
for i := 0; i < 10; i++ {
|
||||||
go func() {
|
errg.Go(testTCPConn(clientPort, 10240*1024, time.Second*20))
|
||||||
conn, err := net.DialTCP("tcp", nil, &net.TCPAddr{
|
|
||||||
IP: []byte{127, 0, 0, 1},
|
|
||||||
Port: int(clientPort),
|
|
||||||
})
|
|
||||||
assert(err, IsNil)
|
|
||||||
|
|
||||||
payload := make([]byte, 10240*1024)
|
|
||||||
rand.Read(payload)
|
|
||||||
|
|
||||||
nBytes, err := conn.Write([]byte(payload))
|
|
||||||
assert(err, IsNil)
|
|
||||||
assert(nBytes, Equals, len(payload))
|
|
||||||
|
|
||||||
response := readFrom(conn, time.Second*20, 10240*1024)
|
|
||||||
assert(response, Equals, xor([]byte(payload)))
|
|
||||||
assert(conn.Close(), IsNil)
|
|
||||||
wg.Done()
|
|
||||||
}()
|
|
||||||
}
|
}
|
||||||
wg.Wait()
|
|
||||||
|
|
||||||
CloseAllServers(servers)
|
if err := errg.Wait(); err != nil {
|
||||||
|
t.Error(err)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestVMessNone(t *testing.T) {
|
func TestVMessNone(t *testing.T) {
|
||||||
assert := With(t)
|
|
||||||
|
|
||||||
tcpServer := tcp.Server{
|
tcpServer := tcp.Server{
|
||||||
MsgProcessor: xor,
|
MsgProcessor: xor,
|
||||||
}
|
}
|
||||||
dest, err := tcpServer.Start()
|
dest, err := tcpServer.Start()
|
||||||
assert(err, IsNil)
|
common.Must(err)
|
||||||
defer tcpServer.Close()
|
defer tcpServer.Close()
|
||||||
|
|
||||||
userID := protocol.NewID(uuid.New())
|
userID := protocol.NewID(uuid.New())
|
||||||
|
@ -713,46 +691,24 @@ func TestVMessNone(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
servers, err := InitializeServerConfigs(serverConfig, clientConfig)
|
servers, err := InitializeServerConfigs(serverConfig, clientConfig)
|
||||||
assert(err, IsNil)
|
common.Must(err)
|
||||||
|
defer CloseAllServers(servers)
|
||||||
|
|
||||||
var wg sync.WaitGroup
|
var errg errgroup.Group
|
||||||
wg.Add(10)
|
|
||||||
for i := 0; i < 10; i++ {
|
for i := 0; i < 10; i++ {
|
||||||
go func() {
|
errg.Go(testTCPConn(clientPort, 1024*1024, time.Second*30))
|
||||||
defer wg.Done()
|
}
|
||||||
|
if err := errg.Wait(); err != nil {
|
||||||
conn, err := net.DialTCP("tcp", nil, &net.TCPAddr{
|
t.Error(err)
|
||||||
IP: []byte{127, 0, 0, 1},
|
|
||||||
Port: int(clientPort),
|
|
||||||
})
|
|
||||||
assert(err, IsNil)
|
|
||||||
|
|
||||||
payload := make([]byte, 1024*1024)
|
|
||||||
rand.Read(payload)
|
|
||||||
|
|
||||||
nBytes, err := conn.Write(payload)
|
|
||||||
assert(err, IsNil)
|
|
||||||
assert(nBytes, Equals, len(payload))
|
|
||||||
|
|
||||||
response := readFrom(conn, time.Second*30, 1024*1024)
|
|
||||||
|
|
||||||
assert(response, Equals, xor(payload))
|
|
||||||
assert(conn.Close(), IsNil)
|
|
||||||
}()
|
|
||||||
}
|
}
|
||||||
wg.Wait()
|
|
||||||
|
|
||||||
CloseAllServers(servers)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestVMessKCP(t *testing.T) {
|
func TestVMessKCP(t *testing.T) {
|
||||||
assert := With(t)
|
|
||||||
|
|
||||||
tcpServer := tcp.Server{
|
tcpServer := tcp.Server{
|
||||||
MsgProcessor: xor,
|
MsgProcessor: xor,
|
||||||
}
|
}
|
||||||
dest, err := tcpServer.Start()
|
dest, err := tcpServer.Start()
|
||||||
assert(err, IsNil)
|
common.Must(err)
|
||||||
defer tcpServer.Close()
|
defer tcpServer.Close()
|
||||||
|
|
||||||
userID := protocol.NewID(uuid.New())
|
userID := protocol.NewID(uuid.New())
|
||||||
|
@ -846,36 +802,16 @@ func TestVMessKCP(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
servers, err := InitializeServerConfigs(serverConfig, clientConfig)
|
servers, err := InitializeServerConfigs(serverConfig, clientConfig)
|
||||||
assert(err, IsNil)
|
common.Must(err)
|
||||||
defer CloseAllServers(servers)
|
defer CloseAllServers(servers)
|
||||||
|
|
||||||
var wg sync.WaitGroup
|
var errg errgroup.Group
|
||||||
for i := 0; i < 10; i++ {
|
for i := 0; i < 10; i++ {
|
||||||
wg.Add(1)
|
errg.Go(testTCPConn(clientPort, 10240*1024, time.Minute*2))
|
||||||
go func() {
|
}
|
||||||
defer wg.Done()
|
if err := errg.Wait(); err != nil {
|
||||||
|
t.Error(err)
|
||||||
conn, err := net.DialTCP("tcp", nil, &net.TCPAddr{
|
|
||||||
IP: []byte{127, 0, 0, 1},
|
|
||||||
Port: int(clientPort),
|
|
||||||
})
|
|
||||||
assert(err, IsNil)
|
|
||||||
defer conn.Close()
|
|
||||||
|
|
||||||
payload := make([]byte, 10240*1024)
|
|
||||||
rand.Read(payload)
|
|
||||||
|
|
||||||
nBytes, err := conn.Write(payload)
|
|
||||||
assert(err, IsNil)
|
|
||||||
assert(nBytes, Equals, len(payload))
|
|
||||||
|
|
||||||
response := readFrom(conn, time.Minute*2, 10240*1024)
|
|
||||||
if r := cmp.Diff(response, xor(payload)); r != "" {
|
|
||||||
t.Error(r)
|
|
||||||
}
|
|
||||||
}()
|
|
||||||
}
|
}
|
||||||
wg.Wait()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestVMessKCPLarge(t *testing.T) {
|
func TestVMessKCPLarge(t *testing.T) {
|
||||||
|
|
Loading…
Reference in New Issue