package grpcall import ( "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) { if resp, err := gc.Invoke("User.UserResourceStatus", "TestInt64Value", `123`, nil); err != nil { t.Error(err) } else { t.Log(resp.Data()) } } func TestInvokeServStream(t *testing.T) { if resp, err := gc.Invoke("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) { if resp, err := gc.Invoke("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 } }