Skip to content

Commit d484a67

Browse files
committed
tests
1 parent 900b63c commit d484a67

File tree

15 files changed

+589
-146
lines changed

15 files changed

+589
-146
lines changed

agent/agent.go

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@ type Options struct {
6565
SSHMaxTimeout time.Duration
6666
TailnetListenPort uint16
6767
Subsystem codersdk.AgentSubsystem
68+
Addresses []netip.Prefix
6869

6970
PrometheusRegistry *prometheus.Registry
7071
}
@@ -112,6 +113,13 @@ func New(options Options) Agent {
112113
prometheusRegistry = prometheus.NewRegistry()
113114
}
114115

116+
if len(options.Addresses) == 0 {
117+
options.Addresses = []netip.Prefix{
118+
netip.PrefixFrom(tailnet.IP(), 128),
119+
netip.PrefixFrom(codersdk.WorkspaceAgentIP, 128),
120+
}
121+
}
122+
115123
ctx, cancelFunc := context.WithCancel(context.Background())
116124
a := &agent{
117125
tailnetListenPort: options.TailnetListenPort,
@@ -132,6 +140,7 @@ func New(options Options) Agent {
132140
connStatsChan: make(chan *agentsdk.Stats, 1),
133141
sshMaxTimeout: options.SSHMaxTimeout,
134142
subsystem: options.Subsystem,
143+
addresses: options.Addresses,
135144

136145
prometheusRegistry: prometheusRegistry,
137146
metrics: newAgentMetrics(prometheusRegistry),
@@ -175,6 +184,7 @@ type agent struct {
175184
lifecycleStates []agentsdk.PostLifecycleRequest
176185

177186
network *tailnet.Conn
187+
addresses []netip.Prefix
178188
connStatsChan chan *agentsdk.Stats
179189
latestStat atomic.Pointer[agentsdk.Stats]
180190

@@ -640,10 +650,7 @@ func (a *agent) trackConnGoroutine(fn func()) error {
640650

641651
func (a *agent) createTailnet(ctx context.Context, derpMap *tailcfg.DERPMap, disableDirectConnections bool) (_ *tailnet.Conn, err error) {
642652
network, err := tailnet.NewConn(&tailnet.Options{
643-
Addresses: []netip.Prefix{
644-
netip.PrefixFrom(tailnet.IP(), 128),
645-
netip.PrefixFrom(codersdk.WorkspaceAgentIP, 128),
646-
},
653+
Addresses: a.addresses,
647654
DERPMap: derpMap,
648655
Logger: a.logger.Named("tailnet"),
649656
ListenPort: a.tailnetListenPort,

agent/agent_test.go

Lines changed: 31 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ import (
4343
"cdr.dev/slog/sloggers/slogtest"
4444
"github.com/coder/coder/agent"
4545
"github.com/coder/coder/agent/agentssh"
46+
"github.com/coder/coder/agent/agenttest"
4647
"github.com/coder/coder/coderd/httpapi"
4748
"github.com/coder/coder/codersdk"
4849
"github.com/coder/coder/codersdk/agentsdk"
@@ -969,14 +970,14 @@ func TestAgent_Metadata(t *testing.T) {
969970

970971
var gotMd map[string]agentsdk.PostMetadataRequest
971972
require.Eventually(t, func() bool {
972-
gotMd = client.getMetadata()
973+
gotMd = client.GetMetadata()
973974
return len(gotMd) == 1
974975
}, testutil.WaitShort, testutil.IntervalMedium)
975976

976977
collectedAt := gotMd["greeting"].CollectedAt
977978

978979
require.Never(t, func() bool {
979-
gotMd = client.getMetadata()
980+
gotMd = client.GetMetadata()
980981
if len(gotMd) != 1 {
981982
panic("unexpected number of metadata")
982983
}
@@ -1000,7 +1001,7 @@ func TestAgent_Metadata(t *testing.T) {
10001001

10011002
var gotMd map[string]agentsdk.PostMetadataRequest
10021003
require.Eventually(t, func() bool {
1003-
gotMd = client.getMetadata()
1004+
gotMd = client.GetMetadata()
10041005
return len(gotMd) == 1
10051006
}, testutil.WaitShort, testutil.IntervalMedium)
10061007

@@ -1010,7 +1011,7 @@ func TestAgent_Metadata(t *testing.T) {
10101011
}
10111012

10121013
if !assert.Eventually(t, func() bool {
1013-
gotMd = client.getMetadata()
1014+
gotMd = client.GetMetadata()
10141015
return gotMd["greeting"].CollectedAt.After(collectedAt1)
10151016
}, testutil.WaitShort, testutil.IntervalMedium) {
10161017
t.Fatalf("expected metadata to be collected again")
@@ -1052,11 +1053,11 @@ func TestAgentMetadata_Timing(t *testing.T) {
10521053
}, 0)
10531054

10541055
require.Eventually(t, func() bool {
1055-
return len(client.getMetadata()) == 2
1056+
return len(client.GetMetadata()) == 2
10561057
}, testutil.WaitShort, testutil.IntervalMedium)
10571058

10581059
for start := time.Now(); time.Since(start) < testutil.WaitMedium; time.Sleep(testutil.IntervalMedium) {
1059-
md := client.getMetadata()
1060+
md := client.GetMetadata()
10601061
require.Len(t, md, 2, "got: %+v", md)
10611062

10621063
require.Equal(t, "hello\n", md["greeting"].Value)
@@ -1110,7 +1111,7 @@ func TestAgent_Lifecycle(t *testing.T) {
11101111

11111112
var got []codersdk.WorkspaceAgentLifecycle
11121113
assert.Eventually(t, func() bool {
1113-
got = client.getLifecycleStates()
1114+
got = client.GetLifecycleStates()
11141115
return len(got) > 0 && got[len(got)-1] == want[len(want)-1]
11151116
}, testutil.WaitShort, testutil.IntervalMedium)
11161117

@@ -1132,7 +1133,7 @@ func TestAgent_Lifecycle(t *testing.T) {
11321133

11331134
var got []codersdk.WorkspaceAgentLifecycle
11341135
assert.Eventually(t, func() bool {
1135-
got = client.getLifecycleStates()
1136+
got = client.GetLifecycleStates()
11361137
return len(got) > 0 && got[len(got)-1] == want[len(want)-1]
11371138
}, testutil.WaitShort, testutil.IntervalMedium)
11381139

@@ -1154,7 +1155,7 @@ func TestAgent_Lifecycle(t *testing.T) {
11541155

11551156
var got []codersdk.WorkspaceAgentLifecycle
11561157
assert.Eventually(t, func() bool {
1157-
got = client.getLifecycleStates()
1158+
got = client.GetLifecycleStates()
11581159
return len(got) > 0 && got[len(got)-1] == want[len(want)-1]
11591160
}, testutil.WaitShort, testutil.IntervalMedium)
11601161

@@ -1171,7 +1172,7 @@ func TestAgent_Lifecycle(t *testing.T) {
11711172

11721173
var ready []codersdk.WorkspaceAgentLifecycle
11731174
assert.Eventually(t, func() bool {
1174-
ready = client.getLifecycleStates()
1175+
ready = client.GetLifecycleStates()
11751176
return len(ready) > 0 && ready[len(ready)-1] == codersdk.WorkspaceAgentLifecycleReady
11761177
}, testutil.WaitShort, testutil.IntervalMedium)
11771178

@@ -1192,7 +1193,7 @@ func TestAgent_Lifecycle(t *testing.T) {
11921193

11931194
var got []codersdk.WorkspaceAgentLifecycle
11941195
assert.Eventually(t, func() bool {
1195-
got = client.getLifecycleStates()[len(ready):]
1196+
got = client.GetLifecycleStates()[len(ready):]
11961197
return len(got) > 0 && got[len(got)-1] == want[len(want)-1]
11971198
}, testutil.WaitShort, testutil.IntervalMedium)
11981199

@@ -1209,7 +1210,7 @@ func TestAgent_Lifecycle(t *testing.T) {
12091210

12101211
var ready []codersdk.WorkspaceAgentLifecycle
12111212
assert.Eventually(t, func() bool {
1212-
ready = client.getLifecycleStates()
1213+
ready = client.GetLifecycleStates()
12131214
return len(ready) > 0 && ready[len(ready)-1] == codersdk.WorkspaceAgentLifecycleReady
12141215
}, testutil.WaitShort, testutil.IntervalMedium)
12151216

@@ -1231,7 +1232,7 @@ func TestAgent_Lifecycle(t *testing.T) {
12311232

12321233
var got []codersdk.WorkspaceAgentLifecycle
12331234
assert.Eventually(t, func() bool {
1234-
got = client.getLifecycleStates()[len(ready):]
1235+
got = client.GetLifecycleStates()[len(ready):]
12351236
return len(got) > 0 && got[len(got)-1] == want[len(want)-1]
12361237
}, testutil.WaitShort, testutil.IntervalMedium)
12371238

@@ -1248,7 +1249,7 @@ func TestAgent_Lifecycle(t *testing.T) {
12481249

12491250
var ready []codersdk.WorkspaceAgentLifecycle
12501251
assert.Eventually(t, func() bool {
1251-
ready = client.getLifecycleStates()
1252+
ready = client.GetLifecycleStates()
12521253
return len(ready) > 0 && ready[len(ready)-1] == codersdk.WorkspaceAgentLifecycleReady
12531254
}, testutil.WaitShort, testutil.IntervalMedium)
12541255

@@ -1270,7 +1271,7 @@ func TestAgent_Lifecycle(t *testing.T) {
12701271

12711272
var got []codersdk.WorkspaceAgentLifecycle
12721273
assert.Eventually(t, func() bool {
1273-
got = client.getLifecycleStates()[len(ready):]
1274+
got = client.GetLifecycleStates()[len(ready):]
12741275
return len(got) > 0 && got[len(got)-1] == want[len(want)-1]
12751276
}, testutil.WaitShort, testutil.IntervalMedium)
12761277

@@ -1281,11 +1282,12 @@ func TestAgent_Lifecycle(t *testing.T) {
12811282
t.Parallel()
12821283
logger := slogtest.Make(t, nil).Leveled(slog.LevelDebug)
12831284
expected := "this-is-shutdown"
1285+
derpMap, _ := tailnettest.RunDERPAndSTUN(t)
12841286
client := &client{
12851287
t: t,
12861288
agentID: uuid.New(),
12871289
manifest: agentsdk.Manifest{
1288-
DERPMap: tailnettest.RunDERPAndSTUN(t),
1290+
DERPMap: derpMap,
12891291
StartupScript: "echo 1",
12901292
ShutdownScript: "echo " + expected,
12911293
},
@@ -1343,9 +1345,9 @@ func TestAgent_Startup(t *testing.T) {
13431345
Directory: "",
13441346
}, 0)
13451347
assert.Eventually(t, func() bool {
1346-
return client.getStartup().Version != ""
1348+
return client.GetStartup().Version != ""
13471349
}, testutil.WaitShort, testutil.IntervalFast)
1348-
require.Equal(t, "", client.getStartup().ExpandedDirectory)
1350+
require.Equal(t, "", client.GetStartup().ExpandedDirectory)
13491351
})
13501352

13511353
t.Run("HomeDirectory", func(t *testing.T) {
@@ -1357,11 +1359,11 @@ func TestAgent_Startup(t *testing.T) {
13571359
Directory: "~",
13581360
}, 0)
13591361
assert.Eventually(t, func() bool {
1360-
return client.getStartup().Version != ""
1362+
return client.GetStartup().Version != ""
13611363
}, testutil.WaitShort, testutil.IntervalFast)
13621364
homeDir, err := os.UserHomeDir()
13631365
require.NoError(t, err)
1364-
require.Equal(t, homeDir, client.getStartup().ExpandedDirectory)
1366+
require.Equal(t, homeDir, client.GetStartup().ExpandedDirectory)
13651367
})
13661368

13671369
t.Run("NotAbsoluteDirectory", func(t *testing.T) {
@@ -1373,11 +1375,11 @@ func TestAgent_Startup(t *testing.T) {
13731375
Directory: "coder/coder",
13741376
}, 0)
13751377
assert.Eventually(t, func() bool {
1376-
return client.getStartup().Version != ""
1378+
return client.GetStartup().Version != ""
13771379
}, testutil.WaitShort, testutil.IntervalFast)
13781380
homeDir, err := os.UserHomeDir()
13791381
require.NoError(t, err)
1380-
require.Equal(t, filepath.Join(homeDir, "coder/coder"), client.getStartup().ExpandedDirectory)
1382+
require.Equal(t, filepath.Join(homeDir, "coder/coder"), client.GetStartup().ExpandedDirectory)
13811383
})
13821384

13831385
t.Run("HomeEnvironmentVariable", func(t *testing.T) {
@@ -1389,11 +1391,11 @@ func TestAgent_Startup(t *testing.T) {
13891391
Directory: "$HOME",
13901392
}, 0)
13911393
assert.Eventually(t, func() bool {
1392-
return client.getStartup().Version != ""
1394+
return client.GetStartup().Version != ""
13931395
}, testutil.WaitShort, testutil.IntervalFast)
13941396
homeDir, err := os.UserHomeDir()
13951397
require.NoError(t, err)
1396-
require.Equal(t, homeDir, client.getStartup().ExpandedDirectory)
1398+
require.Equal(t, homeDir, client.GetStartup().ExpandedDirectory)
13971399
})
13981400
}
13991401

@@ -1532,7 +1534,7 @@ func TestAgent_Speedtest(t *testing.T) {
15321534
t.Skip("This test is relatively flakey because of Tailscale's speedtest code...")
15331535
ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitLong)
15341536
defer cancel()
1535-
derpMap := tailnettest.RunDERPAndSTUN(t)
1537+
derpMap, _ := tailnettest.RunDERPAndSTUN(t)
15361538
//nolint:dogsled
15371539
conn, _, _, _, _ := setupAgent(t, agentsdk.Manifest{
15381540
DERPMap: derpMap,
@@ -1553,7 +1555,7 @@ func TestAgent_Reconnect(t *testing.T) {
15531555

15541556
agentID := uuid.New()
15551557
statsCh := make(chan *agentsdk.Stats)
1556-
derpMap := tailnettest.RunDERPAndSTUN(t)
1558+
derpMap, _ := tailnettest.RunDERPAndSTUN(t)
15571559
client := &client{
15581560
t: t,
15591561
agentID: agentID,
@@ -1691,14 +1693,14 @@ func (c closeFunc) Close() error {
16911693

16921694
func setupAgent(t *testing.T, metadata agentsdk.Manifest, ptyTimeout time.Duration, opts ...func(agent.Options) agent.Options) (
16931695
*codersdk.WorkspaceAgentConn,
1694-
*client,
1696+
*agenttest.Client,
16951697
<-chan *agentsdk.Stats,
16961698
afero.Fs,
16971699
io.Closer,
16981700
) {
16991701
logger := slogtest.Make(t, nil).Leveled(slog.LevelDebug)
17001702
if metadata.DERPMap == nil {
1701-
metadata.DERPMap = tailnettest.RunDERPAndSTUN(t)
1703+
metadata.DERPMap, _ = tailnettest.RunDERPAndSTUN(t)
17021704
}
17031705
coordinator := tailnet.NewCoordinator(logger)
17041706
t.Cleanup(func() {
@@ -1707,13 +1709,7 @@ func setupAgent(t *testing.T, metadata agentsdk.Manifest, ptyTimeout time.Durati
17071709
agentID := uuid.New()
17081710
statsCh := make(chan *agentsdk.Stats, 50)
17091711
fs := afero.NewMemMapFs()
1710-
c := &client{
1711-
t: t,
1712-
agentID: agentID,
1713-
manifest: metadata,
1714-
statsChan: statsCh,
1715-
coordinator: coordinator,
1716-
}
1712+
c := agenttest.NewClient(t, agentID, metadata, statsCh, coordinator)
17171713

17181714
options := agent.Options{
17191715
Client: c,

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy