|
|
@@ -0,0 +1,91 @@
|
|
|
+package scenarios
|
|
|
+
|
|
|
+import (
|
|
|
+ "context"
|
|
|
+ "os"
|
|
|
+ "testing"
|
|
|
+ "time"
|
|
|
+
|
|
|
+ "github.com/v2fly/v2ray-core/v5/common"
|
|
|
+ "github.com/v2fly/v2ray-core/v5/testing/servers/tcp"
|
|
|
+
|
|
|
+ _ "github.com/v2fly/v2ray-core/v5/main/distro/all"
|
|
|
+)
|
|
|
+
|
|
|
+func TestGRPCDefault(t *testing.T) {
|
|
|
+ tcpServer := tcp.Server{
|
|
|
+ MsgProcessor: xor,
|
|
|
+ }
|
|
|
+ dest, err := tcpServer.Start()
|
|
|
+ common.Must(err)
|
|
|
+ defer tcpServer.Close()
|
|
|
+
|
|
|
+ coreInst, InstMgrIfce := NewInstanceManagerCoreInstance()
|
|
|
+ defer coreInst.Close()
|
|
|
+
|
|
|
+ common.Must(InstMgrIfce.AddInstance(
|
|
|
+ context.TODO(),
|
|
|
+ "grpc_client",
|
|
|
+ common.Must2(os.ReadFile("config/grpc_client.json")).([]byte),
|
|
|
+ "jsonv5"))
|
|
|
+
|
|
|
+ common.Must(InstMgrIfce.AddInstance(
|
|
|
+ context.TODO(),
|
|
|
+ "grpc_server",
|
|
|
+ common.Must2(os.ReadFile("config/grpc_server.json")).([]byte),
|
|
|
+ "jsonv5"))
|
|
|
+
|
|
|
+ common.Must(InstMgrIfce.StartInstance(context.TODO(), "grpc_server"))
|
|
|
+ common.Must(InstMgrIfce.StartInstance(context.TODO(), "grpc_client"))
|
|
|
+
|
|
|
+ defer func() {
|
|
|
+ common.Must(InstMgrIfce.StopInstance(context.TODO(), "grpc_server"))
|
|
|
+ common.Must(InstMgrIfce.StopInstance(context.TODO(), "grpc_client"))
|
|
|
+ common.Must(InstMgrIfce.UntrackInstance(context.TODO(), "grpc_server"))
|
|
|
+ common.Must(InstMgrIfce.UntrackInstance(context.TODO(), "grpc_client"))
|
|
|
+ coreInst.Close()
|
|
|
+ }()
|
|
|
+
|
|
|
+ if err := testTCPConnViaSocks(17784, dest.Port, 1024, time.Second*2)(); err != nil {
|
|
|
+ t.Error(err)
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+func TestGRPCWithServiceName(t *testing.T) {
|
|
|
+ tcpServer := tcp.Server{
|
|
|
+ MsgProcessor: xor,
|
|
|
+ }
|
|
|
+ dest, err := tcpServer.Start()
|
|
|
+ common.Must(err)
|
|
|
+ defer tcpServer.Close()
|
|
|
+
|
|
|
+ coreInst, InstMgrIfce := NewInstanceManagerCoreInstance()
|
|
|
+ defer coreInst.Close()
|
|
|
+
|
|
|
+ common.Must(InstMgrIfce.AddInstance(
|
|
|
+ context.TODO(),
|
|
|
+ "grpc_client",
|
|
|
+ common.Must2(os.ReadFile("config/grpc_servicename_client.json")).([]byte),
|
|
|
+ "jsonv5"))
|
|
|
+
|
|
|
+ common.Must(InstMgrIfce.AddInstance(
|
|
|
+ context.TODO(),
|
|
|
+ "grpc_server",
|
|
|
+ common.Must2(os.ReadFile("config/grpc_servicename_server.json")).([]byte),
|
|
|
+ "jsonv5"))
|
|
|
+
|
|
|
+ common.Must(InstMgrIfce.StartInstance(context.TODO(), "grpc_server"))
|
|
|
+ common.Must(InstMgrIfce.StartInstance(context.TODO(), "grpc_client"))
|
|
|
+
|
|
|
+ defer func() {
|
|
|
+ common.Must(InstMgrIfce.StopInstance(context.TODO(), "grpc_server"))
|
|
|
+ common.Must(InstMgrIfce.StopInstance(context.TODO(), "grpc_client"))
|
|
|
+ common.Must(InstMgrIfce.UntrackInstance(context.TODO(), "grpc_server"))
|
|
|
+ common.Must(InstMgrIfce.UntrackInstance(context.TODO(), "grpc_client"))
|
|
|
+ coreInst.Close()
|
|
|
+ }()
|
|
|
+
|
|
|
+ if err := testTCPConnViaSocks(17794, dest.Port, 1024, time.Second*2)(); err != nil {
|
|
|
+ t.Error(err)
|
|
|
+ }
|
|
|
+}
|