grpcall/grpcall_test.go

119 lines
2.2 KiB
Go
Raw Normal View History

2023-05-30 17:30:06 +08:00
package grpcall
import (
"context"
"fmt"
"os"
"testing"
"google.golang.org/grpc"
)
var gc *Grpcall
func TestMain(m *testing.M) {
if _gc, err := NewGrpcall("127.0.0.1:8888", nil, grpc.WithInsecure()); err != nil {
// if _gc, err := NewGrpcall("192.168.0.6:6644", nil, grpc.WithInsecure()); err != nil {
panic(err)
} else {
gc = _gc
}
defer gc.Close()
// 执行测试
code := m.Run()
// 在这里执行一些清理工作,例如关闭数据库连接等
// 退出测试
os.Exit(code)
}
func TestGetServices(t *testing.T) {
t.Log(gc.GetServices())
}
func TestGetServiceMethods(t *testing.T) {
if s, err := gc.GetServices(); err != nil {
t.Error(err)
} else {
t.Log(gc.GetServiceMethods(s[0]))
}
}
func TestInvokeUnary(t *testing.T) {
ctx := context.Background()
if resp, err := gc.Invoke(ctx, "User.UserResourceStatus", "TestInt64Value", `123`, nil); err != nil {
t.Error(err)
} else {
t.Log(resp.Data())
}
}
func TestInvokeServStream(t *testing.T) {
ctx := context.Background()
if resp, err := gc.Invoke(ctx, "User.UserResourceStatus", "GetEvent", `{}`, nil); err != nil {
t.Error(err)
} else if recv, err := resp.Recv(); err != nil {
t.Error(err)
} else if done, err := resp.Done(); err != nil {
t.Error(err)
} else {
flag := make(chan bool)
go func() {
for {
select {
case msg := <-recv:
fmt.Println("msg", msg, resp.Header())
case err := <-done:
if err != nil {
t.Error(err)
}
flag <- true
return
}
}
}()
<-flag
}
}
func TestInvokeBidiStream(t *testing.T) {
ctx := context.Background()
if resp, err := gc.Invoke(ctx, "User.UserResourceStatus", "TestBidiStream", `"hello"`, nil); err != nil {
t.Error(err)
} else if send, err := resp.Send(); err != nil {
t.Error(err)
} else if recv, err := resp.Recv(); err != nil {
t.Error(err)
} else if done, err := resp.Done(); err != nil {
t.Error(err)
} else {
flag := make(chan bool)
go func() {
for {
select {
case msg := <-recv:
fmt.Println("msg", msg, resp.Header())
case err := <-done:
if err != nil {
t.Error(err)
}
flag <- true
return
}
}
}()
for i := 0; i < 10; i++ {
send <- fmt.Sprintf(`"abc %d"`, i)
}
<-flag
}
}