net/netcheck: don't mutate Client.TimeNow in AddReportHistoryForTest
AddReportHistoryForTest temporarily swapped out Client.TimeNow without holding any lock, racing with concurrent GetReport calls reading it from ReSTUN goroutines during tests. Instead, pass the current time to addReportHistoryAndSetPreferredDERP explicitly so the test helper never needs to touch the field. Fixes #20438 Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com> Change-Id: I9c4f0a2f9427b5f1d3e8b06a49f0d2b71c3ee8a4
This commit is contained in:
committed by
Brad Fitzpatrick
parent
b803ba048c
commit
55b1a4de74
@@ -468,7 +468,7 @@ func TestAddReportHistoryAndSetPreferredDERP(t *testing.T) {
|
||||
for _, s := range tt.steps {
|
||||
fakeTime = fakeTime.Add(s.after)
|
||||
rs.start = fakeTime.Add(-100 * time.Millisecond)
|
||||
c.addReportHistoryAndSetPreferredDERP(rs, s.r, dm.View())
|
||||
c.addReportHistoryAndSetPreferredDERP(rs, s.r, dm.View(), fakeTime)
|
||||
}
|
||||
lastReport := tt.steps[len(tt.steps)-1].r
|
||||
if got, want := len(c.prev), tt.wantPrevLen; got != want {
|
||||
@@ -522,7 +522,7 @@ func TestRecentReportsRetainFullNetcheck(t *testing.T) {
|
||||
regions = allRegions
|
||||
lastFull = now
|
||||
}
|
||||
c.addReportHistoryAndSetPreferredDERP(&reportState{c: c, start: now}, mkReport(regions), dm.View())
|
||||
c.addReportHistoryAndSetPreferredDERP(&reportState{c: c, start: now}, mkReport(regions), dm.View(), now)
|
||||
|
||||
// Recent latency must always cover every region, which is only
|
||||
// possible while a full report remains in c.prev.
|
||||
|
||||
Reference in New Issue
Block a user