From 7708dd7914a3e25cdc324b959ebe862afeab2e8e Mon Sep 17 00:00:00 2001 From: Brennan Benson <79079362+brennanb2025@users.noreply.github.com> Date: Tue, 4 Aug 2026 03:19:49 -0700 Subject: [PATCH] test(mobile): advance past the probe grace in late-reply liveness tests MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit These six tests assert that a late reply to an already-timed-out request counts as control-plane liveness, but only advanced 8s past the reply — inside the two-extension grace, which absorbs the difference either way. Forcing TimedOutControlRequestIndex.consume to return false left all six green. 16.5s clears the grace without reaching the 28s periodic-probe demote, so they now go red when the late reply stops counting. --- mobile/src/transport/mobile-relay-rpc-session.test.ts | 4 ++-- mobile/src/transport/rpc-client-request-deadline.test.ts | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/mobile/src/transport/mobile-relay-rpc-session.test.ts b/mobile/src/transport/mobile-relay-rpc-session.test.ts index 40f54646ddb..2cb835fa7dd 100644 --- a/mobile/src/transport/mobile-relay-rpc-session.test.ts +++ b/mobile/src/transport/mobile-relay-rpc-session.test.ts @@ -346,7 +346,7 @@ describe('mobile relay RPC session', () => { JSON.stringify({ id: timedOutRequest.id, ok: true, result: {}, _meta: {} }) ) - await vi.advanceTimersByTimeAsync(8_000) + await vi.advanceTimersByTimeAsync(16_500) expect(session.getState()).toBe('connected') expect(fakes.close).not.toHaveBeenCalled() } finally { @@ -817,7 +817,7 @@ describe('mobile relay RPC session', () => { fakes.linkOptions!.onText( JSON.stringify({ id: timedOutRequest.id, ok: true, result: {}, _meta: {} }) ) - await vi.advanceTimersByTimeAsync(8_000) + await vi.advanceTimersByTimeAsync(16_500) expect(session.getState()).toBe('connected') expect(fakes.close).not.toHaveBeenCalled() diff --git a/mobile/src/transport/rpc-client-request-deadline.test.ts b/mobile/src/transport/rpc-client-request-deadline.test.ts index d2fd4705384..207427c1032 100644 --- a/mobile/src/transport/rpc-client-request-deadline.test.ts +++ b/mobile/src/transport/rpc-client-request-deadline.test.ts @@ -240,7 +240,7 @@ describe('mobile rpc-client request deadline', () => { expect(sentRequest(socket, 'status.get')).toBeDefined() socket.receive(`encrypted:${JSON.stringify({ id: timedOutRequest.id, ok: true, result: {} })}`) - await vi.advanceTimersByTimeAsync(8_000) + await vi.advanceTimersByTimeAsync(16_500) expect(socket.close).not.toHaveBeenCalled() expect(client.getState()).toBe('connected') @@ -265,7 +265,7 @@ describe('mobile rpc-client request deadline', () => { client.notifyForeground() socket.receive(`encrypted:${JSON.stringify({ id: timedOutRequest.id, ok: true, result: {} })}`) - await vi.advanceTimersByTimeAsync(8_000) + await vi.advanceTimersByTimeAsync(16_500) expect(socket.close).not.toHaveBeenCalled() expect(client.getState()).toBe('connected') @@ -392,7 +392,7 @@ describe('mobile rpc-client request deadline', () => { expect(sentRequests(socket, 'status.get')).toHaveLength(2) socket.receive(`encrypted:${JSON.stringify({ id: stalledRequest.id, ok: true, result: {} })}`) - await vi.advanceTimersByTimeAsync(8_000) + await vi.advanceTimersByTimeAsync(16_500) expect(client.getState()).toBe('connected') expect(socket.close).not.toHaveBeenCalled() client.close() @@ -420,7 +420,7 @@ describe('mobile rpc-client request deadline', () => { expect(sentRequests(socket, 'status.get')).toHaveLength(2) socket.receive(`encrypted:${JSON.stringify({ id: firstProbe.id, ok: true, result: {} })}`) - await vi.advanceTimersByTimeAsync(8_000) + await vi.advanceTimersByTimeAsync(16_500) expect(client.getState()).toBe('connected') expect(socket.close).not.toHaveBeenCalled() client.close()