Path: blob/master/src/packages/backend/conat/test/sync/dstream-stress.test.ts
1712 views
import { dstream } from "@cocalc/backend/conat/sync";1import { before, after, client, wait } from "@cocalc/backend/conat/test/setup";23const log = process.env.VERBOSE ? console.log : (..._args) => {};45beforeAll(before);67jest.setTimeout(10000);89describe("a stress test", () => {10const name = `test-${Math.random()}`;11const pushCount = 2000;12let s;13it(`creates an ephemeral stream and pushes ${pushCount} messages`, async () => {14const start = Date.now();15s = await dstream({16client,17name,18noAutosave: true,19ephemeral: true,20});21for (let i = 0; i < pushCount; i++) {22s.push({ i });23}24expect(s.length).toBe(pushCount);25// NOTE: warning -- this is **MUCH SLOWER**, e.g., 10x slower,26// running under jest, hence why count is small.27await s.save();28expect(s.length).toBe(pushCount);29log(30"write",31Math.round((1000 * pushCount) / (Date.now() - start)),32"messages per second",33);34});3536it("deletes all of the messages we just wrote", async () => {37const start = Date.now();38await s.delete({ seqs: s.seqs() });39await s.save();40await wait({ until: () => s.length == 0 });41expect(s.length).toBe(0);42log(43"delete",44Math.round((1000 * pushCount) / (Date.now() - start)),45"messages per second",46);47});48});4950afterAll(after);515253