Xray-core/transport/internet/domainsocket/listener_test.go

95 lines
2.1 KiB
Go
Raw Normal View History

2021-09-20 13:00:55 +00:00
//go:build !windows && !android
// +build !windows,!android
2020-11-25 11:01:53 +00:00
package domainsocket_test
import (
"context"
"runtime"
"testing"
2020-12-04 01:36:16 +00:00
"github.com/xtls/xray-core/common"
"github.com/xtls/xray-core/common/buf"
"github.com/xtls/xray-core/common/net"
"github.com/xtls/xray-core/transport/internet"
. "github.com/xtls/xray-core/transport/internet/domainsocket"
"github.com/xtls/xray-core/transport/internet/stat"
2020-11-25 11:01:53 +00:00
)
func TestListen(t *testing.T) {
ctx := context.Background()
streamSettings := &internet.MemoryStreamConfig{
ProtocolName: "domainsocket",
ProtocolSettings: &Config{
Path: "/tmp/ts3",
},
}
listener, err := Listen(ctx, nil, net.Port(0), streamSettings, func(conn stat.Connection) {
2020-11-25 11:01:53 +00:00
defer conn.Close()
b := buf.New()
defer b.Release()
common.Must2(b.ReadFrom(conn))
b.WriteString("Response")
common.Must2(conn.Write(b.Bytes()))
})
common.Must(err)
defer listener.Close()
conn, err := Dial(ctx, net.Destination{}, streamSettings)
common.Must(err)
defer conn.Close()
common.Must2(conn.Write([]byte("Request")))
b := buf.New()
defer b.Release()
common.Must2(b.ReadFrom(conn))
if b.String() != "RequestResponse" {
t.Error("expected response as 'RequestResponse' but got ", b.String())
}
}
func TestListenAbstract(t *testing.T) {
if runtime.GOOS != "linux" {
return
}
ctx := context.Background()
streamSettings := &internet.MemoryStreamConfig{
ProtocolName: "domainsocket",
ProtocolSettings: &Config{
Path: "/tmp/ts3",
Abstract: true,
},
}
listener, err := Listen(ctx, nil, net.Port(0), streamSettings, func(conn stat.Connection) {
2020-11-25 11:01:53 +00:00
defer conn.Close()
b := buf.New()
defer b.Release()
common.Must2(b.ReadFrom(conn))
b.WriteString("Response")
common.Must2(conn.Write(b.Bytes()))
})
common.Must(err)
defer listener.Close()
conn, err := Dial(ctx, net.Destination{}, streamSettings)
common.Must(err)
defer conn.Close()
common.Must2(conn.Write([]byte("Request")))
b := buf.New()
defer b.Release()
common.Must2(b.ReadFrom(conn))
if b.String() != "RequestResponse" {
t.Error("expected response as 'RequestResponse' but got ", b.String())
}
}