MCPcopy Create free account
hub / github.com/coder/coder / TestProvisionerSDK

Function TestProvisionerSDK

provisionersdk/serve_test.go:23–146  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

21}
22
23func TestProvisionerSDK(t *testing.T) {
24 t.Parallel()
25 t.Run("ServeListener", func(t *testing.T) {
26 t.Parallel()
27 client, server := drpcsdk.MemTransportPipe()
28 defer client.Close()
29 defer server.Close()
30
31 ctx, cancelFunc := context.WithCancel(context.Background())
32 defer cancelFunc()
33 go func() {
34 err := provisionersdk.Serve(ctx, unimplementedServer{}, &provisionersdk.ServeOptions{
35 Listener: server,
36 WorkDirectory: t.TempDir(),
37 })
38 assert.NoError(t, err)
39 }()
40
41 api := proto.NewDRPCProvisionerClient(client)
42 s, err := api.Session(ctx)
43 require.NoError(t, err)
44 err = s.Send(&proto.Request{Type: &proto.Request_Config{Config: &proto.Config{}}})
45 require.NoError(t, err)
46
47 err = s.Send(&proto.Request{Type: &proto.Request_Init{Init: &proto.InitRequest{}}})
48 require.NoError(t, err)
49 _, err = s.Recv()
50 require.NoError(t, err)
51
52 err = s.Send(&proto.Request{Type: &proto.Request_Parse{Parse: &proto.ParseRequest{}}})
53 require.NoError(t, err)
54 msg, err := s.Recv()
55 require.NoError(t, err)
56 require.Equal(t, "unimplemented", msg.GetParse().GetError())
57
58 err = s.Send(&proto.Request{Type: &proto.Request_Plan{Plan: &proto.PlanRequest{}}})
59 require.NoError(t, err)
60 msg, err = s.Recv()
61 require.NoError(t, err)
62 // Plan has no error so that we're allowed to run Apply
63 require.Equal(t, "", msg.GetPlan().GetError())
64
65 err = s.Send(&proto.Request{Type: &proto.Request_Apply{Apply: &proto.ApplyRequest{}}})
66 require.NoError(t, err)
67 msg, err = s.Recv()
68 require.NoError(t, err)
69 require.Equal(t, "unimplemented", msg.GetApply().GetError())
70 })
71
72 t.Run("ServeClosedPipe", func(t *testing.T) {
73 t.Parallel()
74 client, server := drpcsdk.MemTransportPipe()
75 _ = client.Close()
76 _ = server.Close()
77
78 err := provisionersdk.Serve(context.Background(), unimplementedServer{}, &provisionersdk.ServeOptions{
79 Listener: server,
80 WorkDirectory: t.TempDir(),

Callers

nothing calls this directly

Calls 15

SessionMethod · 0.95
DRPCConnMethod · 0.95
MemTransportPipeFunction · 0.92
ServeFunction · 0.92
NewDRPCProvisionerClientFunction · 0.92
DefaultDRPCOptionsFunction · 0.92
FatalMethod · 0.80
RunMethod · 0.65
CloseMethod · 0.65
TempDirMethod · 0.65
SendMethod · 0.65
RecvMethod · 0.65

Tested by

no test coverage detected