+++ /dev/null
-package plugin
-
-import (
- "context"
- "reflect"
- "testing"
-
- "github.com/hashicorp/go-plugin/test/grpc"
- "google.golang.org/grpc"
-)
-
-func TestGRPCClient_App(t *testing.T) {
- client, server := TestPluginGRPCConn(t, map[string]Plugin{
- "test": new(testInterfacePlugin),
- })
- defer client.Close()
- defer server.Stop()
-
- raw, err := client.Dispense("test")
- if err != nil {
- t.Fatalf("err: %s", err)
- }
-
- impl, ok := raw.(testInterface)
- if !ok {
- t.Fatalf("bad: %#v", raw)
- }
-
- result := impl.Double(21)
- if result != 42 {
- t.Fatalf("bad: %#v", result)
- }
-
- err = impl.Bidirectional()
- if err != nil {
- t.Fatal(err)
- }
-}
-
-func TestGRPCConn_BidirectionalPing(t *testing.T) {
- conn, _ := TestGRPCConn(t, func(s *grpc.Server) {
- grpctest.RegisterPingPongServer(s, &pingPongServer{})
- })
- defer conn.Close()
- pingPongClient := grpctest.NewPingPongClient(conn)
-
- pResp, err := pingPongClient.Ping(context.Background(), &grpctest.PingRequest{})
- if err != nil {
- t.Fatal(err)
- }
- if pResp.Msg != "pong" {
- t.Fatal("Bad PingPong")
- }
-}
-
-func TestGRPCC_Stream(t *testing.T) {
- client, server := TestPluginGRPCConn(t, map[string]Plugin{
- "test": new(testInterfacePlugin),
- })
- defer client.Close()
- defer server.Stop()
-
- raw, err := client.Dispense("test")
- if err != nil {
- t.Fatalf("err: %s", err)
- }
-
- impl, ok := raw.(testStreamer)
- if !ok {
- t.Fatalf("bad: %#v", raw)
- }
-
- expected := []int32{21, 22, 23, 24, 25, 26}
- result, err := impl.Stream(21, 27)
- if err != nil {
- t.Fatal(err)
- }
-
- if !reflect.DeepEqual(result, expected) {
- t.Fatalf("expected: %v\ngot: %v", expected, result)
- }
-}
-
-func TestGRPCClient_Ping(t *testing.T) {
- client, server := TestPluginGRPCConn(t, map[string]Plugin{
- "test": new(testInterfacePlugin),
- })
- defer client.Close()
- defer server.Stop()
-
- // Run a couple pings
- if err := client.Ping(); err != nil {
- t.Fatalf("err: %s", err)
- }
- if err := client.Ping(); err != nil {
- t.Fatalf("err: %s", err)
- }
-
- // Close the remote end
- server.server.Stop()
-
- // Test ping fails
- if err := client.Ping(); err == nil {
- t.Fatal("should error")
- }
-}