You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
154 lines
3.3 KiB
154 lines
3.3 KiB
package rpc |
|
|
|
import ( |
|
"context" |
|
"net" |
|
"sync" |
|
"testing" |
|
"time" |
|
|
|
"go-common/library/conf/env" |
|
"go-common/library/naming" |
|
"go-common/library/naming/discovery" |
|
xtime "go-common/library/time" |
|
|
|
. "github.com/smartystreets/goconvey/convey" |
|
) |
|
|
|
var c = &discovery.Config{ |
|
Nodes: []string{"api.bilibili.co"}, |
|
Zone: "sh001", |
|
Env: "test", |
|
Key: "0c4b8fe3ff35a4b6", |
|
Secret: "b370880d1aca7d3a289b9b9a7f4d6812", |
|
Host: "host_1", |
|
} |
|
|
|
var in = &naming.Instance{ |
|
AppID: "test2", |
|
Version: "1", |
|
Metadata: map[string]string{ |
|
"test": "1", |
|
"weight": "8", |
|
"color": "", |
|
"cluster": "red", |
|
}, |
|
} |
|
|
|
var in2 = &naming.Instance{ |
|
AppID: "test3", |
|
Version: "1", |
|
Metadata: map[string]string{ |
|
"test": "1", |
|
"weight": "8", |
|
"color": "", |
|
"cluster": "red", |
|
}, |
|
} |
|
|
|
var ( |
|
svrAddr1, svrAddr2, svrAddr3 string |
|
once1, once2, once3 sync.Once |
|
) |
|
|
|
type TestArgs struct { |
|
A, B int |
|
} |
|
|
|
type TestReply struct { |
|
C int |
|
} |
|
|
|
type TestTimeout struct { |
|
T time.Duration |
|
} |
|
|
|
type TestRPC int |
|
|
|
func startTestServer1() { |
|
svr := newServer() |
|
svr.RegisterName("RPC", new(TestRPC)) |
|
var l net.Listener |
|
l, svrAddr1 = listenTCP() |
|
go svr.Accept(l) |
|
} |
|
|
|
func TestDiscoveryCli(t *testing.T) { |
|
env.Hostname = "host_1" |
|
env.Zone = "sh001" |
|
once1.Do(startTestServer1) |
|
|
|
Convey("test discovery cli", t, func() { |
|
once1.Do(startTestServer1) |
|
in.Addrs = []string{scheme + "://" + svrAddr1} |
|
dis := discovery.New(c) |
|
_, err := dis.Register(context.TODO(), in) |
|
So(err, ShouldBeNil) |
|
cli := NewDiscoveryCli("test2", &ClientConfig{ |
|
Cluster: "", |
|
Timeout: xtime.Duration(time.Second), |
|
}) |
|
time.Sleep(time.Second * 2) |
|
args := &TestArgs{7, 8} |
|
reply := new(TestReply) |
|
err = cli.Call(context.TODO(), "RPC.Add", args, reply) |
|
So(err, ShouldBeNil) |
|
}) |
|
Convey("test discovery no zone", t, func() { |
|
env.Zone = "test2" |
|
cli := NewDiscoveryCli("test2", &ClientConfig{ |
|
Cluster: "", |
|
Timeout: xtime.Duration(time.Second), |
|
}) |
|
time.Sleep(time.Second * 2) |
|
args := &TestArgs{7, 8} |
|
reply := new(TestReply) |
|
err := cli.Call(context.TODO(), "RPC.Add", args, reply) |
|
So(err, ShouldBeNil) |
|
}) |
|
|
|
Convey("test discovery with color", t, func() { |
|
env.Zone = "test2" |
|
cli := NewDiscoveryCli("test2", &ClientConfig{ |
|
Color: "red", |
|
Timeout: xtime.Duration(time.Second), |
|
}) |
|
time.Sleep(time.Second * 2) |
|
args := &TestArgs{7, 8} |
|
reply := new(TestReply) |
|
err := cli.Call(context.TODO(), "RPC.Add", args, reply) |
|
So(err, ShouldBeNil) |
|
}) |
|
Convey("test discovery with cluster", t, func() { |
|
env.Zone = "test2" |
|
cli := NewDiscoveryCli("test2", &ClientConfig{ |
|
Cluster: "red", |
|
Timeout: xtime.Duration(time.Second), |
|
}) |
|
time.Sleep(time.Second * 2) |
|
args := &TestArgs{7, 8} |
|
reply := new(TestReply) |
|
err := cli.Call(context.TODO(), "RPC.Add", args, reply) |
|
So(err, ShouldBeNil) |
|
}) |
|
|
|
Convey("test conf Zone cli", t, func() { |
|
env.Zone = "testsh" |
|
once1.Do(startTestServer1) |
|
in2.Addrs = []string{scheme + "://" + svrAddr1} |
|
dis := discovery.New(c) |
|
_, err := dis.Register(context.TODO(), in2) |
|
So(err, ShouldBeNil) |
|
env.Zone = "sh001" |
|
cli := NewDiscoveryCli("test3", &ClientConfig{ |
|
Cluster: "", |
|
Timeout: xtime.Duration(time.Second), |
|
Zone: "testsh", |
|
}) |
|
time.Sleep(time.Second * 2) |
|
args := &TestArgs{7, 8} |
|
reply := new(TestReply) |
|
err = cli.Call(context.TODO(), "RPC.Add", args, reply) |
|
So(err, ShouldBeNil) |
|
}) |
|
}
|
|
|