@@ -2,33 +2,11 @@ package client
22
33import (
44 "fmt"
5- "io/ioutil"
6- "net/http"
7- "path/filepath"
85 "testing"
96
10- "github.com/docker/infrakit/pkg/rpc/server"
11- "github.com/docker/infrakit/pkg/spi"
127 "github.com/stretchr/testify/require"
138)
149
15- var apiSpec = spi.InterfaceSpec {
16- Name : "TestPlugin" ,
17- Version : "0.1.0" ,
18- }
19-
20- func startPluginServer (t * testing.T ) (server.Stoppable , string ) {
21- dir , err := ioutil .TempDir ("" , "infrakit_handshake_test" )
22- require .NoError (t , err )
23-
24- name := "instance"
25- socket := filepath .Join (dir , name )
26-
27- testServer , err := server .StartPluginAtPath (socket , & TestPlugin {spec : apiSpec })
28- require .NoError (t , err )
29- return testServer , socket
30- }
31-
3210func TestErrVersionMismatch (t * testing.T ) {
3311 var e error
3412
@@ -38,73 +16,3 @@ func TestErrVersionMismatch(t *testing.T) {
3816 e = fmt .Errorf ("untyped" )
3917 require .False (t , IsErrVersionMismatch (e ))
4018}
41-
42- func TestHandshakeSuccess (t * testing.T ) {
43- testServer , socket := startPluginServer (t )
44- defer testServer .Stop ()
45-
46- r , err := New (socket , apiSpec )
47- require .NoError (t , err )
48- client := rpcClient {client : r }
49- require .NoError (t , client .DoSomething ())
50- }
51-
52- func TestHandshakeFailVersion (t * testing.T ) {
53- testServer , socket := startPluginServer (t )
54- defer testServer .Stop ()
55-
56- r , err := New (socket , spi.InterfaceSpec {Name : "TestPlugin" , Version : "0.2.0" })
57- require .Error (t , err )
58-
59- client := rpcClient {client : r }
60- err = client .DoSomething ()
61- require .Error (t , err )
62- require .Equal (t , "Plugin supports TestPlugin interface version 0.1.0, client requires 0.2.0" , err .Error ())
63- }
64-
65- func TestHandshakeFailWrongAPI (t * testing.T ) {
66- testServer , socket := startPluginServer (t )
67- defer testServer .Stop ()
68-
69- r , err := New (socket , spi.InterfaceSpec {Name : "OtherPlugin" , Version : "0.1.0" })
70- require .Error (t , err )
71-
72- client := rpcClient {client : r }
73- err = client .DoSomething ()
74- require .Error (t , err )
75- require .Equal (t , "Plugin does not support interface OtherPlugin/0.1.0" , err .Error ())
76- }
77-
78- type rpcClient struct {
79- client Client
80- }
81-
82- func (c rpcClient ) DoSomething () error {
83- req := EmptyMessage {}
84- resp := EmptyMessage {}
85- return c .client .Call ("TestPlugin.DoSomething" , req , & resp )
86- }
87-
88- // TestPlugin is an RPC service for this unit test.
89- type TestPlugin struct {
90- spec spi.InterfaceSpec
91- }
92-
93- // ImplementedInterface returns the interface implemented by this RPC service.
94- func (p * TestPlugin ) ImplementedInterface () spi.InterfaceSpec {
95- return p .spec
96- }
97-
98- // Types returns the types
99- func (p * TestPlugin ) Types () []string {
100- return []string {"." }
101- }
102-
103- // EmptyMessage is an empty test message.
104- type EmptyMessage struct {
105- }
106-
107- // DoSomething is an empty test RPC.
108- func (p * TestPlugin ) DoSomething (_ * http.Request , req * EmptyMessage , resp * EmptyMessage ) error {
109- return nil
110- }
0 commit comments