mirror of
https://github.com/coder/coder.git
synced 2025-07-09 11:45:56 +00:00
fix: Avoid logging to stdout in devtunnel test (#3194)
The device keeps logging to the logger even after `dev.Close()` but doing that with `t.Log` is unsafe (test has ended). This is why `slogtest` was used. `dev.Close()` has a wait on encryption and decryption routines, however, these are left running even after the wait. The implementation uses the WaitGroups in a weird way.
This commit is contained in:
committed by
GitHub
parent
9bf5537b0f
commit
f34b5000cb
@ -73,8 +73,8 @@ func TestTunnel(t *testing.T) {
|
||||
err := server.Serve(tun.Listener)
|
||||
assert.Equal(t, http.ErrServerClosed, err)
|
||||
}()
|
||||
t.Cleanup(func() { _ = server.Close() })
|
||||
t.Cleanup(func() { tun.Listener.Close() })
|
||||
defer func() { _ = server.Close() }()
|
||||
defer func() { tun.Listener.Close() }()
|
||||
|
||||
require.Eventually(t, func() bool {
|
||||
res, err := fTunServer.requestHTTP()
|
||||
@ -116,9 +116,11 @@ type fakeTunnelServer struct {
|
||||
}
|
||||
|
||||
func newFakeTunnelServer(t *testing.T) *fakeTunnelServer {
|
||||
t.Helper()
|
||||
|
||||
priv, err := wgtypes.GeneratePrivateKey()
|
||||
privBytes := [32]byte(priv)
|
||||
require.NoError(t, err)
|
||||
privBytes := [32]byte(priv)
|
||||
pub := priv.PublicKey()
|
||||
pubBytes := [32]byte(pub)
|
||||
tun, tnet, err := netstack.CreateNetTUN(
|
||||
@ -127,17 +129,25 @@ func newFakeTunnelServer(t *testing.T) *fakeTunnelServer {
|
||||
1280,
|
||||
)
|
||||
require.NoError(t, err)
|
||||
dev := device.NewDevice(tun, conn.NewDefaultBind(), device.NewLogger(device.LogLevelVerbose, "server "))
|
||||
|
||||
ctx := context.Background()
|
||||
slogger := slogtest.Make(t, nil).Leveled(slog.LevelDebug).Named("server")
|
||||
logger := &device.Logger{
|
||||
Verbosef: slog.Stdlib(ctx, slogger, slog.LevelDebug).Printf,
|
||||
Errorf: slog.Stdlib(ctx, slogger, slog.LevelError).Printf,
|
||||
}
|
||||
dev := device.NewDevice(tun, conn.NewDefaultBind(), logger)
|
||||
t.Cleanup(func() {
|
||||
dev.RemoveAllPeers()
|
||||
dev.Close()
|
||||
slogger.Debug(ctx, "dev.Close()")
|
||||
})
|
||||
err = dev.IpcSet(fmt.Sprintf(`private_key=%s
|
||||
listen_port=%d`,
|
||||
hex.EncodeToString(privBytes[:]),
|
||||
wgPort,
|
||||
))
|
||||
require.NoError(t, err)
|
||||
t.Cleanup(func() {
|
||||
dev.RemoveAllPeers()
|
||||
dev.Close()
|
||||
})
|
||||
|
||||
err = dev.Up()
|
||||
require.NoError(t, err)
|
||||
|
Reference in New Issue
Block a user