Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
sagemathinc
GitHub Repository: sagemathinc/cocalc
Path: blob/master/src/packages/backend/conat/test/sync/connectivity.test.ts
1451 views
1
/*
2
Tests that various sync functionality works after restarting the conat server.
3
4
pnpm test ./connectivity.test.ts
5
6
*/
7
8
import { dkv } from "@cocalc/backend/conat/sync";
9
import {
10
before,
11
after,
12
restartServer,
13
restartPersistServer,
14
setDefaultTimeouts,
15
} from "@cocalc/backend/conat/test/setup";
16
17
beforeAll(before);
18
19
describe("test that dkv survives server restart", () => {
20
let kv;
21
const name = `test-${Math.random()}`;
22
23
it("restarts the conat socketio server to make sure that works", async () => {
24
// some tests below will randomly sometimes take longer than 5s without this:
25
setDefaultTimeouts({ request: 250, publish: 250 });
26
await restartServer();
27
});
28
29
it("creates the dkv and does a basic test", async () => {
30
kv = await dkv({ name });
31
kv.a = 10;
32
expect(kv.a).toEqual(10);
33
await kv.save();
34
expect(kv.hasUnsavedChanges()).toBe(false);
35
});
36
37
it("restart the socketio server and confirm that dkv still works", async () => {
38
await restartServer();
39
kv.b = 7;
40
expect(kv.b).toEqual(7);
41
await kv.save();
42
expect(kv.hasUnsavedChanges()).toBe(false);
43
});
44
45
it("restart again (without await) the socketio server and confirm that dkv still works", async () => {
46
restartServer();
47
kv.b = 77;
48
expect(kv.b).toEqual(77);
49
await kv.save();
50
expect(kv.hasUnsavedChanges()).toBe(false);
51
});
52
53
it("restart persist server", async () => {
54
await restartPersistServer();
55
kv.b = 123;
56
expect(kv.b).toEqual(123);
57
await kv.save();
58
expect(kv.hasUnsavedChanges()).toBe(false);
59
});
60
61
jest.setTimeout(10000);
62
it("restart both servers at once", async () => {
63
await Promise.all([restartPersistServer(), restartServer()]);
64
kv.b = 389;
65
expect(kv.b).toEqual(389);
66
await kv.save();
67
expect(kv.hasUnsavedChanges()).toBe(false);
68
});
69
});
70
71
afterAll(after);
72
73