MCPcopy Index your code
hub / github.com/coder/coder / createDERPClient

Function createDERPClient

enterprise/wsproxy/wsproxy_test.go:1041–1074  ·  view source on GitHub ↗

createDERPClient creates a DERP client and spawns a goroutine that reads from the client and sends the received packets to a channel. nolint:revive

(t *testing.T, ctx context.Context, name string, derpURL string)

Source from the content-addressed store, hash-verified

1039//
1040//nolint:revive
1041func createDERPClient(t *testing.T, ctx context.Context, name string, derpURL string) (*derphttp.Client, <-chan derp.ReceivedPacket) {
1042 t.Helper()
1043
1044 client, err := derphttp.NewClient(key.NewNode(), derpURL, func(format string, args ...any) {
1045 t.Logf(name+": "+format, args...)
1046 })
1047 require.NoError(t, err, "create client")
1048 t.Cleanup(func() {
1049 _ = client.Close()
1050 })
1051 err = client.Connect(ctx)
1052 require.NoError(t, err, "connect to DERP server")
1053
1054 ch := make(chan derp.ReceivedPacket, 1)
1055 go func() {
1056 defer close(ch)
1057 for {
1058 msg, err := client.Recv()
1059 if err != nil {
1060 t.Logf("Recv error: %v", err)
1061 return
1062 }
1063 switch msg := msg.(type) {
1064 case derp.ReceivedPacket:
1065 ch <- msg
1066 return
1067 default:
1068 // We don't care about other messages.
1069 }
1070 }
1071 }()
1072
1073 return client, ch
1074}
1075
1076// testDERPSend sends a message from src to dstKey and waits for it to be
1077// received on dstCh.

Callers 1

TestDERPMeshFunction · 0.85

Calls 6

CloseMethod · 0.95
HelperMethod · 0.65
LogfMethod · 0.65
CleanupMethod · 0.65
ConnectMethod · 0.65
RecvMethod · 0.65

Tested by

no test coverage detected