linetest: waiting_for_quiet needs the full watched window (R-1250)
gates / gates (push) Successful in 1m35s
gates / gates (push) Successful in 1m35s
The live proof found a fresh agent answering waiting before it had watched one minute; a quiet box's torrent app would be held for nothing.
This commit is contained in:
@@ -336,6 +336,9 @@ func (t *Tester) WaitingForQuiet() bool {
|
||||
t.mu.Lock()
|
||||
samples := append([]txSample(nil), t.samples...)
|
||||
t.mu.Unlock()
|
||||
if len(samples) < QuietMinutes+1 {
|
||||
return false // not yet watched for 10 minutes (a fresh start): not known to be busy, so no hold
|
||||
}
|
||||
q, _ := quiet(samples)
|
||||
return !q
|
||||
}
|
||||
|
||||
@@ -549,3 +549,26 @@ func TestQuietBoxIsNotWaiting(t *testing.T) {
|
||||
t.Fatal("ten quiet minutes: the weekly Tick runs; waiting_for_quiet must be false")
|
||||
}
|
||||
}
|
||||
|
||||
// Live proof 2026-10-24 (demo-hp): a freshly started tester answered waiting_for_quiet before it had watched a single
|
||||
// minute, so a quiet box's torrent app would be held for nothing. Waiting needs the full window, seen busy.
|
||||
func TestFreshTesterIsNotWaiting(t *testing.T) {
|
||||
r := &rig{run: &fakeRunner{}, gate: &fakeGate{}, now: time.Date(2026, 10, 20, 12, 0, 0, 0, time.UTC), tunnel: true}
|
||||
r.t = New(r.run, func() (netip.Addr, bool) { return netip.MustParseAddr("10.77.0.1"), r.tunnel }, r.gate,
|
||||
func() (uint64, error) { return r.tx, nil }, "host-x", filepath.Join(t.TempDir(), "line-test.json"), nil)
|
||||
r.t.loc = time.UTC
|
||||
r.t.now = func() time.Time { return r.now }
|
||||
if r.t.WaitingForQuiet() {
|
||||
t.Fatal("no minute watched yet: waiting_for_quiet must be false")
|
||||
}
|
||||
for i := 0; i < QuietMinutes; i++ {
|
||||
r.minute(600_000_000)
|
||||
}
|
||||
if r.t.WaitingForQuiet() {
|
||||
t.Fatal("10 samples are 9 minutes: still not a full window")
|
||||
}
|
||||
r.minute(600_000_000)
|
||||
if !r.t.WaitingForQuiet() {
|
||||
t.Fatal("a full busy window: waiting_for_quiet must be true")
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user