From 055c505c6d84269459c9d306496da324e05b44f3 Mon Sep 17 00:00:00 2001 From: kingwl Date: Tue, 18 Aug 2026 19:08:24 +0800 Subject: [PATCH] test(history): measure complete response parsing --- .../tests/history-transport.perf.client.ts | 28 +++++++++++-------- 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/packages/api/session-controller/tests/history-transport.perf.client.ts b/packages/api/session-controller/tests/history-transport.perf.client.ts index 9746e99b5a..134b1c7684 100644 --- a/packages/api/session-controller/tests/history-transport.perf.client.ts +++ b/packages/api/session-controller/tests/history-transport.perf.client.ts @@ -5,6 +5,7 @@ import { createServer, type Server } from 'node:http' import { performance } from 'node:perf_hooks' import { brotliCompressSync, gzipSync } from 'node:zlib' import { expect, it } from 'vitest' +import { z } from 'zod' import { createUserMessage } from '@deepseek-ai/dsh-llm' import type { HistoryEntry, HistoryRecord } from '@deepseek-ai/dsh-api-remotes/client' import { isChunkRow, packChunkRuns } from '@deepseek-ai/dsh-session/chunk-rows' @@ -78,6 +79,11 @@ interface PackedHistoryValue { readonly toSeq: number } +const rawSessionHistoryValueSchema: z.ZodType = z.object({ + events: z.array(historyEntrySchema), + hasMore: z.boolean(), +}) as unknown as z.ZodType + function timed(run: () => T): Timed { const start = performance.now() const value = run() @@ -370,9 +376,9 @@ it('reports packed history transport and exact replay costs', async () => { const packedTransfer = await loopbackTransfer(packedJson.value) const rawClientHeap = sampledPeakHeap((sample) => { - const parsed = JSON.parse(rawJson.value) as RawHistoryValue + const wire: unknown = JSON.parse(rawJson.value) sample() - for (const entry of parsed.events) historyEntrySchema.parse(entry) + const parsed = rawSessionHistoryValueSchema.parse(wire) sample() const prepared = conversationInputs(parsed.events) sample() @@ -381,9 +387,9 @@ it('reports packed history transport and exact replay costs', async () => { return digest(folded) }) const packedClientHeap = sampledPeakHeap((sample) => { - const parsed = JSON.parse(packedJson.value) as PackedHistoryValue + const wire: unknown = JSON.parse(packedJson.value) sample() - sessionHistoryValueSchema.parse(parsed) + const parsed = sessionHistoryValueSchema.parse(wire) as unknown as PackedHistoryValue sample() const prepared = conversationInputs(historyEntries(parsed.records)) sample() @@ -392,14 +398,12 @@ it('reports packed history transport and exact replay costs', async () => { return digest(folded) }) - const parsedRaw = timed(() => JSON.parse(rawJson.value) as RawHistoryValue) - const parsedPacked = timed(() => JSON.parse(packedJson.value) as PackedHistoryValue) - const rawValidation = timed(() => { - for (const entry of parsedRaw.value.events) historyEntrySchema.parse(entry) - }) - const packedValidation = timed(() => sessionHistoryValueSchema.parse(parsedPacked.value)) - const rawPreparation = timed(() => conversationInputs(parsedRaw.value.events)) - const packedPreparation = timed(() => conversationInputs(historyEntries(parsedPacked.value.records))) + const parsedRaw = timed((): unknown => JSON.parse(rawJson.value)) + const parsedPacked = timed((): unknown => JSON.parse(packedJson.value)) + const rawValidation = timed(() => rawSessionHistoryValueSchema.parse(parsedRaw.value)) + const packedValidation = timed(() => sessionHistoryValueSchema.parse(parsedPacked.value) as unknown as PackedHistoryValue) + const rawPreparation = timed(() => conversationInputs(rawValidation.value.events)) + const packedPreparation = timed(() => conversationInputs(historyEntries(packedValidation.value.records))) assemble(rawPreparation.value.slice(0, 1_000)) assemble(packedPreparation.value)