@@ -14,6 +14,8 @@ import (
14
14
"testing"
15
15
"time"
16
16
17
+ "cdr.dev/slog"
18
+
17
19
"github.com/stretchr/testify/assert"
18
20
"github.com/stretchr/testify/require"
19
21
"golang.zx2c4.com/wireguard/conn"
@@ -25,13 +27,25 @@ import (
25
27
"github.com/coder/coder/coderd/devtunnel"
26
28
)
27
29
30
+ const (
31
+ ipByte1 = 0xfc
32
+ ipByte2 = 0xca
33
+ wgPort = 48732
34
+ )
35
+
36
+ var (
37
+ serverIP = netip .AddrFrom16 ([16 ]byte {ipByte1 , ipByte2 , 15 : 0x1 })
38
+ dnsIP = netip .AddrFrom4 ([4 ]byte {1 , 1 , 1 , 1 })
39
+ clientIP = netip .AddrFrom16 ([16 ]byte {ipByte1 , ipByte2 , 15 : 0x2 })
40
+ )
41
+
28
42
// The tunnel leaks a few goroutines that aren't impactful to production scenarios.
29
43
// func TestMain(m *testing.M) {
30
44
// goleak.VerifyTestMain(m)
31
45
// }
32
46
33
47
// TestTunnel cannot run in parallel because we hardcode the UDP port used by the wireguard server.
34
- // nolint: tparallel
48
+ // nolint: paralleltest
35
49
func TestTunnel (t * testing.T ) {
36
50
ctx , cancelTun := context .WithCancel (context .Background ())
37
51
defer cancelTun ()
@@ -51,7 +65,7 @@ func TestTunnel(t *testing.T) {
51
65
fTunServer := newFakeTunnelServer (t )
52
66
cfg := fTunServer .config ()
53
67
54
- tun , errCh , err := devtunnel .NewWithConfig (ctx , slogtest .Make (t , nil ), cfg )
68
+ tun , errCh , err := devtunnel .NewWithConfig (ctx , slogtest .Make (t , nil ). Leveled ( slog . LevelDebug ) , cfg )
55
69
require .NoError (t , err )
56
70
t .Log (tun .URL )
57
71
@@ -99,18 +113,6 @@ type fakeTunnelServer struct {
99
113
server * httptest.Server
100
114
}
101
115
102
- const (
103
- ipByte1 = 0xfc
104
- ipByte2 = 0xca
105
- wgPort = 48732
106
- )
107
-
108
- var (
109
- serverIP = netip .AddrFrom16 ([16 ]byte {ipByte1 , ipByte2 , 15 : 0x1 })
110
- dnsIP = netip .AddrFrom4 ([4 ]byte {1 , 1 , 1 , 1 })
111
- clientIP = netip .AddrFrom16 ([16 ]byte {ipByte1 , ipByte2 , 15 : 0x2 })
112
- )
113
-
114
116
func newFakeTunnelServer (t * testing.T ) * fakeTunnelServer {
115
117
priv , err := wgtypes .GeneratePrivateKey ()
116
118
privBytes := [32 ]byte (priv )
@@ -123,14 +125,15 @@ func newFakeTunnelServer(t *testing.T) *fakeTunnelServer {
123
125
1280 ,
124
126
)
125
127
require .NoError (t , err )
126
- dev := device .NewDevice (tun , conn .NewDefaultBind (), device .NewLogger (device .LogLevelVerbose , "" ))
128
+ dev := device .NewDevice (tun , conn .NewDefaultBind (), device .NewLogger (device .LogLevelVerbose , "server " ))
127
129
err = dev .IpcSet (fmt .Sprintf (`private_key=%s
128
130
listen_port=%d` ,
129
131
hex .EncodeToString (privBytes [:]),
130
132
wgPort ,
131
133
))
132
134
require .NoError (t , err )
133
135
t .Cleanup (func () {
136
+ dev .RemoveAllPeers ()
134
137
dev .Close ()
135
138
})
136
139
@@ -193,7 +196,7 @@ allowed_ip=%s/128`,
193
196
PublicKey : device .NoisePublicKey (pub ),
194
197
Tunnel : devtunnel.Node {
195
198
HostnameHTTPS : strings .TrimPrefix (f .server .URL , "https://" ),
196
- HostnameWireguard : "::1 " ,
199
+ HostnameWireguard : "localhost " ,
197
200
WireguardPort : wgPort ,
198
201
},
199
202
HTTPClient : f .server .Client (),
0 commit comments