Make TestIdleCleanupKeepsActiveUser independent of timing (closes #181)
check / check (push) Waiting to run
check / check (push) Waiting to run
The test slept 500 ms, had active send PING, then asked for sessions last seen before now minus 500 ms. On a loaded host the PONG can take more than 500 ms to arrive, which puts active's last-seen time before that cutoff. The code is right: it records the time before it replies, to the nanosecond. The test now takes the cutoff after both users register and before active's PING, so the result follows from the order of events alone. Model: opus-5-5
This commit is contained in:
@@ -645,8 +645,6 @@ func TestNewPingTimes(t *testing.T) {
|
||||
func TestIdleCleanupKeepsActiveUser(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
const idleTimeout = 500 * time.Millisecond
|
||||
|
||||
env := newTestEnv(t)
|
||||
|
||||
active := env.dial(t)
|
||||
@@ -655,13 +653,17 @@ func TestIdleCleanupKeepsActiveUser(t *testing.T) {
|
||||
idle := env.dial(t)
|
||||
idle.register("idle")
|
||||
|
||||
time.Sleep(idleTimeout)
|
||||
// Both users were last seen before cutoff, and only active
|
||||
// sends a command after it, so the result does not depend
|
||||
// on how long the PONG takes to arrive.
|
||||
cutoff := time.Now()
|
||||
|
||||
active.sendAndExpect("PING :still here", "PONG")
|
||||
|
||||
// The idle cleanup in internal/handlers removes exactly
|
||||
// the users this returns.
|
||||
stale, err := env.database.GetStaleOrphanSessions(
|
||||
t.Context(), time.Now().Add(-idleTimeout),
|
||||
t.Context(), cutoff,
|
||||
)
|
||||
if err != nil {
|
||||
t.Fatalf("get stale sessions: %v", err)
|
||||
|
||||
Reference in New Issue
Block a user