t3-code-android-nightly/.repos/alchemy-effect/packages/alchemy/test/Git/ZlibProbe.local.test.ts
Julius Marminge 6f9cea00ae
chore(refs): sync Effect and Alchemy references to 4.0.1 and beta.80 (#16170)
Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-05 13:22:30 -07:00

79 lines
2.6 KiB
TypeScript

import * as Alchemy from "@/index.ts";
import * as Cloudflare from "@/Cloudflare";
import * as Test from "@/Test/Alchemy";
import { expect } from "alchemy-test";
import * as Effect from "effect/Effect";
import * as HttpClient from "effect/http/HttpClient";
import ZlibProbeWorker from "./fixtures/zlib-probe-worker.ts";
const state = Alchemy.inMemoryState();
const { test, beforeAll, afterAll, deploy, destroy } = Test.make({
providers: Cloudflare.providers(),
state,
dev: true,
});
const Stack = Alchemy.Stack(
"ZlibProbeStack",
{ providers: Cloudflare.providers(), state },
Effect.gen(function* () {
const worker = yield* ZlibProbeWorker;
return { url: worker.url.as<string>() };
}),
);
const stack = beforeAll(deploy(Stack));
afterAll(destroy(Stack));
test(
"workerd node:zlib keeps the synchronous exact-span inflate the pack parser relies on",
Effect.gen(function* () {
const { url } = yield* stack;
const client = yield* HttpClient.HttpClient;
const res = yield* client.get(`${url}/?path=probe`);
for (const path of [
"processChunk",
"processChunkReuse",
"info",
"plain",
"stream",
"sha1",
"copy",
"jsloop",
"effect",
"deflate6",
"deflate1",
]) {
const n = path.startsWith("deflate") ? 200 : 2000;
yield* client
.get(`${url}/?path=${path}&n=50`)
.pipe(Effect.flatMap((r) => r.json));
const t0 = performance.now();
const r = (yield* client
.get(`${url}/?path=${path}&n=${n}`)
.pipe(Effect.flatMap((r) => r.json))) as { ok: number; error?: string };
const ms = performance.now() - t0;
console.log(
`[zlib-local] ${path.padEnd(12)} ok ${r.ok}/${n} in ${ms.toFixed(0)}ms → ${(ms / n).toFixed(3)} ms/entry${r.error ? ` error: ${r.error}` : ""}`,
);
}
const body = (yield* res.json) as {
hasProcessChunk: boolean;
info?: { outLen: number; bytesWritten: number; expectedConsumed: number };
contentLen: number;
};
console.log("[zlib-probe]", JSON.stringify(body));
expect(res.status).toBe(200);
// PackParser's per-entry inflate takes the synchronous `_processChunk`
// fast path (Zlib.ts); a workerd without it falls back to a streaming
// inflater measured ~50x slower per object. Pin it.
expect(body.hasProcessChunk).toBe(true);
expect(body.info?.outLen).toBe(body.contentLen);
expect(body.info?.bytesWritten).toBe(body.info?.expectedConsumed);
}),
{
tags: ["provider:cloudflare", "provider:cloudflare:worker", "local"],
timeout: 60_000,
},
);