Path: blob/master/src/packages/backend/conat/test/persist/persist-client-restarts.test.ts
1451 views
/*1Tests of persist client.23pnpm test ./persist-client.test.ts45*/67import {8before,9after,10connect,11restartServer,12restartPersistServer,13wait,14} from "@cocalc/backend/conat/test/setup";15import { stream } from "@cocalc/conat/persist/client";16import { messageData } from "@cocalc/conat/core/client";1718beforeAll(before);1920describe("restarting the network and/or persist server, but with no delay afterwards", () => {21let client, s1;2223it("creates a client, stream and test data", async () => {24client = connect();25s1 = stream({26client,27user: { hub_id: "x" },28storage: { path: "hub/network" },29});30await s1.set({31key: "test",32messageData: messageData("data"),33});34const mesg = await s1.get({ key: "test" });35expect(mesg.data).toBe("data");36});3738it("restart conat networking", async () => {39await restartServer();40});4142it("it start working again after restart of socketio server only, though we expect some errors", async () => {43try {44await s1.get({ key: "test", timeout: 500 });45} catch (err) {46expect(`${err}`).toMatch(/timeout|subscribers|disconnected/);47}48await wait({49until: async () => {50try {51await s1.get({ key: "test", timeout: 500 });52return true;53} catch {54return false;55}56},57});58const mesg = await s1.get({ key: "test" });59expect(mesg.data).toBe("data");60});6162it("restarts just persist server", () => {63restartPersistServer();64});6566it("it starts working again after restart after persist server only, though we expect some errors", async () => {67await wait({68until: async () => {69try {70await s1.set({71key: "test-5",72messageData: messageData("data", { headers: { foo: "bar" } }),73timeout: 500,74});75return true;76} catch (err) {77return false;78}79},80});81const mesg = await s1.get({ key: "test-5" });82expect(mesg.data).toBe("data");83});8485it("restarts BOTH the socketio server and the persist server", () => {86restartServer();87restartPersistServer();88});8990it("it starts working again after restart of BOTH servers, though we expect some errors", async () => {91await wait({92until: async () => {93try {94await s1.set({95key: "test-10",96messageData: messageData("data", { headers: { foo: "bar" } }),97timeout: 500,98});99return true;100} catch (err) {101return false;102}103},104});105const mesg = await s1.get({ key: "test-10" });106expect(mesg.data).toBe("data");107});108});109110afterAll(after);111112113