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

Function TestTunnel_PeerUpdate

vpn/tunnel_internal_test.go:191–266  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

189}
190
191func TestTunnel_PeerUpdate(t *testing.T) {
192 t.Parallel()
193
194 ctx := testutil.Context(t, testutil.WaitShort)
195
196 wsID1 := uuid.UUID{1}
197 wsID2 := uuid.UUID{2}
198
199 client := newFakeClient(ctx, t)
200 conn := newFakeConn(tailnet.WorkspaceUpdate{
201 UpsertedWorkspaces: []*tailnet.Workspace{
202 {
203 ID: wsID1,
204 },
205 {
206 ID: wsID2,
207 },
208 },
209 }, time.Time{})
210
211 tun, mgr := setupTunnel(t, ctx, client, quartz.NewMock(t))
212
213 errCh := make(chan error, 1)
214 var resp *TunnelMessage
215 go func() {
216 r, err := mgr.unaryRPC(ctx, &ManagerMessage{
217 Msg: &ManagerMessage_Start{
218 Start: &StartRequest{
219 TunnelFileDescriptor: 2,
220 CoderUrl: "https://coder.example.com",
221 ApiToken: "fakeToken",
222 },
223 },
224 })
225 resp = r
226 errCh <- err
227 }()
228 testutil.RequireSend(ctx, t, client.ch, conn)
229 err := testutil.TryReceive(ctx, t, errCh)
230 require.NoError(t, err)
231 _, ok := resp.Msg.(*TunnelMessage_Start)
232 require.True(t, ok)
233
234 // When: we inform the tunnel of a WorkspaceUpdate
235 err = tun.Update(tailnet.WorkspaceUpdate{
236 UpsertedWorkspaces: []*tailnet.Workspace{
237 {
238 ID: wsID2,
239 },
240 },
241 })
242 require.NoError(t, err)
243 // Then: the tunnel sends a PeerUpdate message
244 req := testutil.TryReceive(ctx, t, mgr.requests)
245 require.Nil(t, req.msg.Rpc)
246 require.NotNil(t, req.msg.GetPeerUpdate())
247 require.Len(t, req.msg.GetPeerUpdate().UpsertedWorkspaces, 1)
248 require.Equal(t, wsID2[:], req.msg.GetPeerUpdate().UpsertedWorkspaces[0].Id)

Callers

nothing calls this directly

Calls 12

GetPeerUpdateMethod · 0.95
ContextFunction · 0.92
RequireSendFunction · 0.92
TryReceiveFunction · 0.92
newFakeConnFunction · 0.85
setupTunnelFunction · 0.85
unaryRPCMethod · 0.80
newFakeClientFunction · 0.70
UpdateMethod · 0.65
GetPeerUpdateMethod · 0.45
LenMethod · 0.45
EqualMethod · 0.45

Tested by

no test coverage detected