Skip to content
This repository was archived by the owner on Aug 30, 2024. It is now read-only.

Commit b87b4c6

Browse files
committed
Add logger to wsnet listener
1 parent 1294dd9 commit b87b4c6

File tree

4 files changed

+33
-19
lines changed

4 files changed

+33
-19
lines changed

internal/cmd/agent.go

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,15 @@
11
package cmd
22

33
import (
4-
"context"
5-
"log"
64
"net/url"
75
"os"
86
"os/signal"
97
"syscall"
108

9+
// We use slog here since agent runs in the background and we can benefit
10+
// from structured logging.
11+
"cdr.dev/slog"
12+
"cdr.dev/slog/sloggers/sloghuman"
1113
"github.com/spf13/cobra"
1214
"golang.org/x/xerrors"
1315

@@ -46,7 +48,10 @@ coder agent start
4648
coder agent start --coder-url https://my-coder.com --token xxxx-xxxx
4749
`,
4850
RunE: func(cmd *cobra.Command, args []string) error {
49-
ctx := cmd.Context()
51+
var (
52+
ctx = cmd.Context()
53+
log = slog.Make(sloghuman.Sink(os.Stderr)).Leveled(slog.LevelDebug)
54+
)
5055
if coderURL == "" {
5156
var ok bool
5257
coderURL, ok = os.LookupEnv("CODER_URL")
@@ -73,20 +78,23 @@ coder agent start --coder-url https://my-coder.com --token xxxx-xxxx
7378
}
7479
}
7580

76-
listener, err := wsnet.Listen(context.Background(), wsnet.ListenEndpoint(u, token), token)
81+
log.Info(ctx, "starting wsnet listener", slog.F("coder_access_url", u.String()))
82+
listener, err := wsnet.Listen(ctx, log, wsnet.ListenEndpoint(u, token), token)
7783
if err != nil {
7884
return xerrors.Errorf("listen: %w", err)
7985
}
86+
defer func() {
87+
err := listener.Close()
88+
if err != nil {
89+
log.Error(ctx, "close listener", slog.Error(err))
90+
}
91+
}()
8092

8193
// Block until user sends SIGINT or SIGTERM
8294
sigs := make(chan os.Signal, 1)
8395
signal.Notify(sigs, syscall.SIGINT, syscall.SIGTERM)
8496
<-sigs
8597

86-
if err = listener.Close(); err != nil {
87-
log.Panic(err)
88-
}
89-
9098
return nil
9199
},
92100
}

wsnet/dial_test.go

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import (
1212
"testing"
1313
"time"
1414

15+
"cdr.dev/slog/sloggers/slogtest"
1516
"github.com/pion/ice/v2"
1617
"github.com/pion/webrtc/v3"
1718
)
@@ -55,7 +56,7 @@ func TestDial(t *testing.T) {
5556
t.Parallel()
5657

5758
connectAddr, listenAddr := createDumbBroker(t)
58-
_, err := Listen(context.Background(), listenAddr, "")
59+
_, err := Listen(context.Background(), slogtest.Make(t, nil), listenAddr, "")
5960
if err != nil {
6061
t.Error(err)
6162
return
@@ -75,7 +76,7 @@ func TestDial(t *testing.T) {
7576
t.Parallel()
7677

7778
connectAddr, listenAddr := createDumbBroker(t)
78-
_, err := Listen(context.Background(), listenAddr, "")
79+
_, err := Listen(context.Background(), slogtest.Make(t, nil), listenAddr, "")
7980
if err != nil {
8081
t.Error(err)
8182
return
@@ -106,7 +107,7 @@ func TestDial(t *testing.T) {
106107
t.Parallel()
107108

108109
connectAddr, listenAddr := createDumbBroker(t)
109-
_, err := Listen(context.Background(), listenAddr, "")
110+
_, err := Listen(context.Background(), slogtest.Make(t, nil), listenAddr, "")
110111
if err != nil {
111112
t.Error(err)
112113
return
@@ -145,7 +146,7 @@ func TestDial(t *testing.T) {
145146
}()
146147

147148
connectAddr, listenAddr := createDumbBroker(t)
148-
_, err = Listen(context.Background(), listenAddr, "")
149+
_, err = Listen(context.Background(), slogtest.Make(t, nil), listenAddr, "")
149150
if err != nil {
150151
t.Error(err)
151152
return
@@ -184,7 +185,7 @@ func TestDial(t *testing.T) {
184185
_, _ = listener.Accept()
185186
}()
186187
connectAddr, listenAddr := createDumbBroker(t)
187-
srv, err := Listen(context.Background(), listenAddr, "")
188+
srv, err := Listen(context.Background(), slogtest.Make(t, nil), listenAddr, "")
188189
if err != nil {
189190
t.Error(err)
190191
return
@@ -211,7 +212,7 @@ func TestDial(t *testing.T) {
211212
t.Parallel()
212213

213214
connectAddr, listenAddr := createDumbBroker(t)
214-
_, err := Listen(context.Background(), listenAddr, "")
215+
_, err := Listen(context.Background(), slogtest.Make(t, nil), listenAddr, "")
215216
if err != nil {
216217
t.Error(err)
217218
return
@@ -245,7 +246,7 @@ func TestDial(t *testing.T) {
245246
}()
246247

247248
connectAddr, listenAddr := createDumbBroker(t)
248-
_, err = Listen(context.Background(), listenAddr, "")
249+
_, err = Listen(context.Background(), slogtest.Make(t, nil), listenAddr, "")
249250
if err != nil {
250251
t.Error(err)
251252
return
@@ -282,7 +283,7 @@ func TestDial(t *testing.T) {
282283
t.Parallel()
283284

284285
connectAddr, listenAddr := createDumbBroker(t)
285-
_, err := Listen(context.Background(), listenAddr, "")
286+
_, err := Listen(context.Background(), slogtest.Make(t, nil), listenAddr, "")
286287
if err != nil {
287288
t.Error(err)
288289
return
@@ -333,7 +334,7 @@ func BenchmarkThroughput(b *testing.B) {
333334
}
334335
}()
335336
connectAddr, listenAddr := createDumbBroker(b)
336-
_, err = Listen(context.Background(), listenAddr, "")
337+
_, err = Listen(context.Background(), slogtest.Make(b, nil), listenAddr, "")
337338
if err != nil {
338339
b.Error(err)
339340
return

wsnet/listen.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import (
1717
"nhooyr.io/websocket"
1818

1919
"cdr.dev/coder-cli/coder-sdk"
20+
"cdr.dev/slog"
2021
)
2122

2223
// Codes for DialChannelResponse.
@@ -41,12 +42,14 @@ type DialChannelResponse struct {
4142

4243
// Listen connects to the broker proxies connections to the local net.
4344
// Close will end all RTC connections.
44-
func Listen(ctx context.Context, broker string, turnProxyAuthToken string) (io.Closer, error) {
45+
func Listen(ctx context.Context, log slog.Logger, broker string, turnProxyAuthToken string) (io.Closer, error) {
4546
l := &listener{
47+
log: log,
4648
broker: broker,
4749
connClosers: make([]io.Closer, 0),
4850
turnProxyAuthToken: turnProxyAuthToken,
4951
}
52+
5053
// We do a one-off dial outside of the loop to ensure the initial
5154
// connection is successful. If not, there's likely an error the
5255
// user needs to act on.
@@ -89,6 +92,7 @@ type listener struct {
8992
broker string
9093
turnProxyAuthToken string
9194

95+
log slog.Logger
9296
acceptError error
9397
ws *websocket.Conn
9498
connClosers []io.Closer

wsnet/listen_test.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import (
88
"testing"
99
"time"
1010

11+
"cdr.dev/slog/sloggers/slogtest"
1112
"nhooyr.io/websocket"
1213
)
1314

@@ -45,7 +46,7 @@ func TestListen(t *testing.T) {
4546
addr := listener.Addr()
4647
broker := fmt.Sprintf("http://%s/", addr.String())
4748

48-
_, err = Listen(context.Background(), broker, "")
49+
_, err = Listen(context.Background(), slogtest.Make(t, nil), broker, "")
4950
if err != nil {
5051
t.Error(err)
5152
return

0 commit comments

Comments
 (0)