summaryrefslogtreecommitdiffhomepage
path: root/packages/app/src/context/global-sync/session-prefetch.test.ts
diff options
context:
space:
mode:
authorShoubhit Dash <[email protected]>2026-03-13 16:43:41 +0530
committerGitHub <[email protected]>2026-03-13 16:43:41 +0530
commit46ba9c81703fc6e7db7e623a607eeaab94fcd00f (patch)
tree15e7cb8c2f01e2fa56d83adef333520e57732de0 /packages/app/src/context/global-sync/session-prefetch.test.ts
parent80f91d3fd912b6fc8d476d1f1ae7d221c08d19e9 (diff)
downloadopencode-46ba9c81703fc6e7db7e623a607eeaab94fcd00f.tar.gz
opencode-46ba9c81703fc6e7db7e623a607eeaab94fcd00f.zip
perf(app): use cursor session history loading (#17329)
Diffstat (limited to 'packages/app/src/context/global-sync/session-prefetch.test.ts')
-rw-r--r--packages/app/src/context/global-sync/session-prefetch.test.ts49
1 files changed, 41 insertions, 8 deletions
diff --git a/packages/app/src/context/global-sync/session-prefetch.test.ts b/packages/app/src/context/global-sync/session-prefetch.test.ts
index f039b02ca..1ce833469 100644
--- a/packages/app/src/context/global-sync/session-prefetch.test.ts
+++ b/packages/app/src/context/global-sync/session-prefetch.test.ts
@@ -5,6 +5,7 @@ import {
getSessionPrefetch,
runSessionPrefetch,
setSessionPrefetch,
+ shouldSkipSessionPrefetch,
} from "./session-prefetch"
describe("session prefetch", () => {
@@ -16,11 +17,12 @@ describe("session prefetch", () => {
directory: "/tmp/a",
sessionID: "ses_1",
limit: 200,
+ cursor: "abc",
complete: false,
at: 123,
})
- expect(getSessionPrefetch("/tmp/a", "ses_1")).toEqual({ limit: 200, complete: false, at: 123 })
+ expect(getSessionPrefetch("/tmp/a", "ses_1")).toEqual({ limit: 200, cursor: "abc", complete: false, at: 123 })
expect(getSessionPrefetch("/tmp/b", "ses_1")).toBeUndefined()
clearSessionPrefetch("/tmp/a", ["ses_1"])
@@ -38,26 +40,57 @@ describe("session prefetch", () => {
sessionID: "ses_2",
task: async () => {
calls += 1
- return { limit: 100, complete: true, at: 456 }
+ return { limit: 100, cursor: "next", complete: true, at: 456 }
},
})
const [a, b] = await Promise.all([run(), run()])
expect(calls).toBe(1)
- expect(a).toEqual({ limit: 100, complete: true, at: 456 })
- expect(b).toEqual({ limit: 100, complete: true, at: 456 })
+ expect(a).toEqual({ limit: 100, cursor: "next", complete: true, at: 456 })
+ expect(b).toEqual({ limit: 100, cursor: "next", complete: true, at: 456 })
})
test("clears a whole directory", () => {
- setSessionPrefetch({ directory: "/tmp/d", sessionID: "ses_1", limit: 10, complete: true, at: 1 })
- setSessionPrefetch({ directory: "/tmp/d", sessionID: "ses_2", limit: 20, complete: false, at: 2 })
- setSessionPrefetch({ directory: "/tmp/e", sessionID: "ses_1", limit: 30, complete: true, at: 3 })
+ setSessionPrefetch({ directory: "/tmp/d", sessionID: "ses_1", limit: 10, cursor: "a", complete: true, at: 1 })
+ setSessionPrefetch({ directory: "/tmp/d", sessionID: "ses_2", limit: 20, cursor: "b", complete: false, at: 2 })
+ setSessionPrefetch({ directory: "/tmp/e", sessionID: "ses_1", limit: 30, cursor: "c", complete: true, at: 3 })
clearSessionPrefetchDirectory("/tmp/d")
expect(getSessionPrefetch("/tmp/d", "ses_1")).toBeUndefined()
expect(getSessionPrefetch("/tmp/d", "ses_2")).toBeUndefined()
- expect(getSessionPrefetch("/tmp/e", "ses_1")).toEqual({ limit: 30, complete: true, at: 3 })
+ expect(getSessionPrefetch("/tmp/e", "ses_1")).toEqual({ limit: 30, cursor: "c", complete: true, at: 3 })
+ })
+
+ test("refreshes stale first-page prefetched history", () => {
+ expect(
+ shouldSkipSessionPrefetch({
+ message: true,
+ info: { limit: 200, cursor: "x", complete: false, at: 1 },
+ chunk: 200,
+ now: 1 + 15_001,
+ }),
+ ).toBe(false)
+ })
+
+ test("keeps deeper or complete history cached", () => {
+ expect(
+ shouldSkipSessionPrefetch({
+ message: true,
+ info: { limit: 400, cursor: "x", complete: false, at: 1 },
+ chunk: 200,
+ now: 1 + 15_001,
+ }),
+ ).toBe(true)
+
+ expect(
+ shouldSkipSessionPrefetch({
+ message: true,
+ info: { limit: 120, complete: true, at: 1 },
+ chunk: 200,
+ now: 1 + 15_001,
+ }),
+ ).toBe(true)
})
})