cojson 0.18.36 → 0.18.38
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.turbo/turbo-build.log +1 -1
- package/CHANGELOG.md +18 -0
- package/dist/coValueCore/SessionMap.d.ts +5 -3
- package/dist/coValueCore/SessionMap.d.ts.map +1 -1
- package/dist/coValueCore/SessionMap.js +19 -9
- package/dist/coValueCore/SessionMap.js.map +1 -1
- package/dist/coValueCore/coValueCore.d.ts +5 -2
- package/dist/coValueCore/coValueCore.d.ts.map +1 -1
- package/dist/coValueCore/coValueCore.js +24 -4
- package/dist/coValueCore/coValueCore.js.map +1 -1
- package/dist/coValueCore/verifiedState.d.ts +1 -3
- package/dist/coValueCore/verifiedState.d.ts.map +1 -1
- package/dist/coValueCore/verifiedState.js +10 -14
- package/dist/coValueCore/verifiedState.js.map +1 -1
- package/dist/coValues/group.d.ts +2 -1
- package/dist/coValues/group.d.ts.map +1 -1
- package/dist/coValues/group.js +21 -18
- package/dist/coValues/group.js.map +1 -1
- package/dist/exports.d.ts +5 -4
- package/dist/exports.d.ts.map +1 -1
- package/dist/exports.js +3 -3
- package/dist/exports.js.map +1 -1
- package/dist/permissions.d.ts +0 -1
- package/dist/permissions.d.ts.map +1 -1
- package/dist/permissions.js +83 -89
- package/dist/permissions.js.map +1 -1
- package/dist/queue/LocalTransactionsSyncQueue.d.ts.map +1 -1
- package/dist/queue/LocalTransactionsSyncQueue.js +1 -18
- package/dist/queue/LocalTransactionsSyncQueue.js.map +1 -1
- package/dist/sync.d.ts.map +1 -1
- package/dist/sync.js +8 -0
- package/dist/sync.js.map +1 -1
- package/dist/tests/StorageApiAsync.test.js +8 -8
- package/dist/tests/coValueCore.isStreaming.test.js +30 -40
- package/dist/tests/coValueCore.isStreaming.test.js.map +1 -1
- package/dist/tests/coValueCore.newContentSince.test.js +242 -132
- package/dist/tests/coValueCore.newContentSince.test.js.map +1 -1
- package/dist/tests/group.inheritance.test.js +47 -1
- package/dist/tests/group.inheritance.test.js.map +1 -1
- package/dist/tests/group.invite.test.js +4 -9
- package/dist/tests/group.invite.test.js.map +1 -1
- package/dist/tests/sync.auth.test.js +6 -6
- package/dist/tests/sync.load.test.js +11 -75
- package/dist/tests/sync.load.test.js.map +1 -1
- package/dist/tests/sync.mesh.test.js +2 -2
- package/dist/tests/sync.storage.test.js +22 -48
- package/dist/tests/sync.storage.test.js.map +1 -1
- package/dist/tests/sync.storageAsync.test.js +121 -71
- package/dist/tests/sync.storageAsync.test.js.map +1 -1
- package/dist/tests/sync.upload.test.js +11 -75
- package/dist/tests/sync.upload.test.js.map +1 -1
- package/dist/tests/testUtils.d.ts +4 -1
- package/dist/tests/testUtils.d.ts.map +1 -1
- package/dist/tests/testUtils.js +11 -0
- package/dist/tests/testUtils.js.map +1 -1
- package/package.json +3 -3
- package/src/coValueCore/SessionMap.ts +25 -15
- package/src/coValueCore/coValueCore.ts +32 -2
- package/src/coValueCore/verifiedState.ts +11 -20
- package/src/coValues/group.ts +28 -24
- package/src/exports.ts +5 -2
- package/src/permissions.ts +98 -119
- package/src/queue/LocalTransactionsSyncQueue.ts +1 -20
- package/src/sync.ts +9 -0
- package/src/tests/StorageApiAsync.test.ts +8 -8
- package/src/tests/coValueCore.isStreaming.test.ts +84 -91
- package/src/tests/coValueCore.newContentSince.test.ts +246 -141
- package/src/tests/group.inheritance.test.ts +61 -0
- package/src/tests/group.invite.test.ts +4 -21
- package/src/tests/sync.auth.test.ts +6 -6
- package/src/tests/sync.load.test.ts +11 -79
- package/src/tests/sync.mesh.test.ts +2 -2
- package/src/tests/sync.storage.test.ts +22 -51
- package/src/tests/sync.storageAsync.test.ts +159 -76
- package/src/tests/sync.upload.test.ts +11 -78
- package/src/tests/testUtils.ts +16 -0
|
@@ -7,6 +7,7 @@ import {
|
|
|
7
7
|
createThreeConnectedNodes,
|
|
8
8
|
createTwoConnectedNodes,
|
|
9
9
|
loadCoValueOrFail,
|
|
10
|
+
setupTestAccount,
|
|
10
11
|
setupTestNode,
|
|
11
12
|
} from "./testUtils";
|
|
12
13
|
import { expectMap } from "../coValue.js";
|
|
@@ -1161,4 +1162,64 @@ describe("extend with role mapping", () => {
|
|
|
1161
1162
|
expect(map.get("test")).toEqual("Written from the admin");
|
|
1162
1163
|
expect(mapOnNode2.get("test")).toEqual("Written from the admin");
|
|
1163
1164
|
});
|
|
1165
|
+
|
|
1166
|
+
test("if an account is revoked on the child but still a member of the parent, transactions should be considered valid", async () => {
|
|
1167
|
+
const alice = await setupTestAccount({
|
|
1168
|
+
connected: true,
|
|
1169
|
+
});
|
|
1170
|
+
const bob = await setupTestAccount({
|
|
1171
|
+
connected: true,
|
|
1172
|
+
});
|
|
1173
|
+
const charlie = await setupTestAccount({
|
|
1174
|
+
connected: true,
|
|
1175
|
+
});
|
|
1176
|
+
|
|
1177
|
+
const group = alice.node.createGroup();
|
|
1178
|
+
const parentGroup = alice.node.createGroup();
|
|
1179
|
+
|
|
1180
|
+
const bobInAlice = await loadCoValueOrFail(alice.node, bob.accountID);
|
|
1181
|
+
group.addMember(bobInAlice, "admin");
|
|
1182
|
+
group.extend(parentGroup, "admin");
|
|
1183
|
+
parentGroup.addMember(bobInAlice, "admin");
|
|
1184
|
+
|
|
1185
|
+
const groupInBob = await loadCoValueOrFail(bob.node, group.id);
|
|
1186
|
+
groupInBob.removeMember(bob.node.getCurrentAgent());
|
|
1187
|
+
|
|
1188
|
+
const charlieInBob = await loadCoValueOrFail(bob.node, charlie.accountID);
|
|
1189
|
+
groupInBob.addMember(charlieInBob, "reader");
|
|
1190
|
+
|
|
1191
|
+
expect(groupInBob.roleOf(charlie.accountID)).toBe("reader");
|
|
1192
|
+
});
|
|
1193
|
+
|
|
1194
|
+
test("if an account is revoked on the parent, their old transactions on the child should stay valid", async () => {
|
|
1195
|
+
const alice = await setupTestAccount({
|
|
1196
|
+
connected: true,
|
|
1197
|
+
});
|
|
1198
|
+
const bob = await setupTestAccount({
|
|
1199
|
+
connected: true,
|
|
1200
|
+
});
|
|
1201
|
+
const charlie = await setupTestAccount({
|
|
1202
|
+
connected: true,
|
|
1203
|
+
});
|
|
1204
|
+
|
|
1205
|
+
const group = alice.node.createGroup();
|
|
1206
|
+
const parentGroup = alice.node.createGroup();
|
|
1207
|
+
|
|
1208
|
+
const bobInAlice = await loadCoValueOrFail(alice.node, bob.accountID);
|
|
1209
|
+
group.extend(parentGroup, "admin");
|
|
1210
|
+
parentGroup.addMember(bobInAlice, "admin");
|
|
1211
|
+
|
|
1212
|
+
const groupInBob = await loadCoValueOrFail(bob.node, group.id);
|
|
1213
|
+
const parentGroupInBob = await loadCoValueOrFail(bob.node, parentGroup.id);
|
|
1214
|
+
const charlieInBob = await loadCoValueOrFail(bob.node, charlie.accountID);
|
|
1215
|
+
groupInBob.addMember(charlieInBob, "reader");
|
|
1216
|
+
|
|
1217
|
+
await new Promise((r) => setTimeout(r, 10));
|
|
1218
|
+
|
|
1219
|
+
parentGroupInBob.removeMember(bob.node.getCurrentAgent());
|
|
1220
|
+
|
|
1221
|
+
const groupInCharlie = await loadCoValueOrFail(charlie.node, group.id);
|
|
1222
|
+
|
|
1223
|
+
expect(groupInCharlie.roleOf(charlie.accountID)).toBe("reader");
|
|
1224
|
+
});
|
|
1164
1225
|
});
|
|
@@ -346,15 +346,9 @@ describe("Group invites", () => {
|
|
|
346
346
|
});
|
|
347
347
|
|
|
348
348
|
const group = admin.node.createGroup();
|
|
349
|
-
const person = group.createMap({
|
|
350
|
-
name: "John Doe",
|
|
351
|
-
});
|
|
352
349
|
|
|
353
350
|
// First add member as admin
|
|
354
|
-
const memberAccount = await loadCoValueOrFail(
|
|
355
|
-
member.node,
|
|
356
|
-
member.accountID,
|
|
357
|
-
);
|
|
351
|
+
const memberAccount = await loadCoValueOrFail(admin.node, member.accountID);
|
|
358
352
|
group.addMember(memberAccount, "admin");
|
|
359
353
|
|
|
360
354
|
// Create a reader invite
|
|
@@ -367,8 +361,6 @@ describe("Group invites", () => {
|
|
|
367
361
|
expect(groupOnMemberNode.roleOf(member.accountID)).toEqual("admin");
|
|
368
362
|
});
|
|
369
363
|
|
|
370
|
-
logger.setLevel(LogLevel.DEBUG);
|
|
371
|
-
|
|
372
364
|
test("invites should be able to upgrade the role of an existing member", async () => {
|
|
373
365
|
const admin = await setupTestAccount({
|
|
374
366
|
connected: true,
|
|
@@ -381,10 +373,7 @@ describe("Group invites", () => {
|
|
|
381
373
|
const group = admin.node.createGroup();
|
|
382
374
|
|
|
383
375
|
// First add member as reader
|
|
384
|
-
const memberAccount = await loadCoValueOrFail(
|
|
385
|
-
member.node,
|
|
386
|
-
member.accountID,
|
|
387
|
-
);
|
|
376
|
+
const memberAccount = await loadCoValueOrFail(admin.node, member.accountID);
|
|
388
377
|
group.addMember(memberAccount, "reader");
|
|
389
378
|
|
|
390
379
|
// Create an admin invite
|
|
@@ -401,10 +390,7 @@ describe("Group invites", () => {
|
|
|
401
390
|
const reader = await setupTestAccount({
|
|
402
391
|
connected: true,
|
|
403
392
|
});
|
|
404
|
-
const readerAccount = await loadCoValueOrFail(
|
|
405
|
-
member.node,
|
|
406
|
-
reader.accountID,
|
|
407
|
-
);
|
|
393
|
+
const readerAccount = await loadCoValueOrFail(admin.node, reader.accountID);
|
|
408
394
|
groupOnMemberNode.addMember(readerAccount, "reader");
|
|
409
395
|
});
|
|
410
396
|
|
|
@@ -423,10 +409,7 @@ describe("Group invites", () => {
|
|
|
423
409
|
});
|
|
424
410
|
|
|
425
411
|
// First add member as reader
|
|
426
|
-
const memberAccount = await loadCoValueOrFail(
|
|
427
|
-
member.node,
|
|
428
|
-
member.accountID,
|
|
429
|
-
);
|
|
412
|
+
const memberAccount = await loadCoValueOrFail(admin.node, member.accountID);
|
|
430
413
|
group.addMember(memberAccount, "reader");
|
|
431
414
|
await group.removeMember(memberAccount);
|
|
432
415
|
|
|
@@ -53,7 +53,7 @@ describe("LocalNode auth sync", () => {
|
|
|
53
53
|
}),
|
|
54
54
|
).toMatchInlineSnapshot(`
|
|
55
55
|
[
|
|
56
|
-
"client -> server | CONTENT Account header: true new: After: 0 New: 3
|
|
56
|
+
"client -> server | CONTENT Account header: true new: After: 0 New: 3",
|
|
57
57
|
"client -> server | CONTENT ProfileGroup header: true new: After: 0 New: 5",
|
|
58
58
|
"client -> server | CONTENT Profile header: true new: After: 0 New: 1",
|
|
59
59
|
"client -> server | CONTENT Account header: false new: After: 3 New: 1",
|
|
@@ -116,9 +116,9 @@ describe("LocalNode auth sync", () => {
|
|
|
116
116
|
}),
|
|
117
117
|
).toMatchInlineSnapshot(`
|
|
118
118
|
[
|
|
119
|
-
"client -> server | CONTENT Account header: true new: After: 0 New: 3
|
|
120
|
-
"client -> server | CONTENT Root header: true new:
|
|
121
|
-
"client -> server | CONTENT Profile header: true new:
|
|
119
|
+
"client -> server | CONTENT Account header: true new: After: 0 New: 3",
|
|
120
|
+
"client -> server | CONTENT Root header: true new: ",
|
|
121
|
+
"client -> server | CONTENT Profile header: true new: ",
|
|
122
122
|
"client -> server | CONTENT Root header: false new: After: 0 New: 1",
|
|
123
123
|
"client -> server | CONTENT Profile header: false new: After: 0 New: 1",
|
|
124
124
|
"client -> server | CONTENT Account header: false new: After: 3 New: 2",
|
|
@@ -176,7 +176,7 @@ describe("LocalNode auth sync", () => {
|
|
|
176
176
|
}),
|
|
177
177
|
).toMatchInlineSnapshot(`
|
|
178
178
|
[
|
|
179
|
-
"creation-node -> server | CONTENT Account header: true new: After: 0 New: 3
|
|
179
|
+
"creation-node -> server | CONTENT Account header: true new: After: 0 New: 3",
|
|
180
180
|
"creation-node -> server | CONTENT ProfileGroup header: true new: After: 0 New: 5",
|
|
181
181
|
"creation-node -> server | CONTENT Profile header: true new: After: 0 New: 1",
|
|
182
182
|
"creation-node -> server | CONTENT Account header: false new: After: 3 New: 1",
|
|
@@ -246,7 +246,7 @@ describe("LocalNode auth sync", () => {
|
|
|
246
246
|
}),
|
|
247
247
|
).toMatchInlineSnapshot(`
|
|
248
248
|
[
|
|
249
|
-
"creation-node -> server | CONTENT Account header: true new: After: 0 New: 3
|
|
249
|
+
"creation-node -> server | CONTENT Account header: true new: After: 0 New: 3",
|
|
250
250
|
"creation-node -> server | CONTENT ProfileGroup header: true new: After: 0 New: 5",
|
|
251
251
|
"creation-node -> server | CONTENT Profile header: true new: After: 0 New: 1",
|
|
252
252
|
"creation-node -> server | CONTENT Account header: false new: After: 3 New: 1",
|
|
@@ -9,6 +9,7 @@ import {
|
|
|
9
9
|
SyncMessagesLog,
|
|
10
10
|
TEST_NODE_CONFIG,
|
|
11
11
|
blockMessageTypeOnOutgoingPeer,
|
|
12
|
+
fillCoMapWithLargeData,
|
|
12
13
|
getSyncServerConnectedPeer,
|
|
13
14
|
loadCoValueOrFail,
|
|
14
15
|
setupTestAccount,
|
|
@@ -547,17 +548,7 @@ describe("loading coValues from server", () => {
|
|
|
547
548
|
|
|
548
549
|
const largeMap = group.createMap();
|
|
549
550
|
|
|
550
|
-
|
|
551
|
-
const dataSize = 1 * 1024 * 1024;
|
|
552
|
-
const chunkSize = 1024; // 1KB chunks
|
|
553
|
-
const chunks = dataSize / chunkSize;
|
|
554
|
-
|
|
555
|
-
const value = Buffer.alloc(chunkSize, `value$`).toString("base64");
|
|
556
|
-
|
|
557
|
-
for (let i = 0; i < chunks; i++) {
|
|
558
|
-
const key = `key${i}`;
|
|
559
|
-
largeMap.set(key, value, "trusting");
|
|
560
|
-
}
|
|
551
|
+
fillCoMapWithLargeData(largeMap);
|
|
561
552
|
|
|
562
553
|
const client = setupTestNode({
|
|
563
554
|
connected: true,
|
|
@@ -576,37 +567,13 @@ describe("loading coValues from server", () => {
|
|
|
576
567
|
[
|
|
577
568
|
"client -> server | LOAD Map sessions: empty",
|
|
578
569
|
"server -> client | CONTENT Group header: true new: After: 0 New: 5",
|
|
579
|
-
"server -> client | CONTENT Map header: true new: After: 0 New: 73 expectContentUntil: header/
|
|
570
|
+
"server -> client | CONTENT Map header: true new: After: 0 New: 73 expectContentUntil: header/200",
|
|
580
571
|
"server -> client | CONTENT Map header: false new: After: 73 New: 73",
|
|
581
|
-
"server -> client | CONTENT Map header: false new: After: 146 New:
|
|
582
|
-
"server -> client | CONTENT Map header: false new: After: 219 New: 73",
|
|
583
|
-
"server -> client | CONTENT Map header: false new: After: 292 New: 73",
|
|
584
|
-
"server -> client | CONTENT Map header: false new: After: 365 New: 73",
|
|
585
|
-
"server -> client | CONTENT Map header: false new: After: 438 New: 73",
|
|
586
|
-
"server -> client | CONTENT Map header: false new: After: 511 New: 73",
|
|
587
|
-
"server -> client | CONTENT Map header: false new: After: 584 New: 73",
|
|
588
|
-
"server -> client | CONTENT Map header: false new: After: 657 New: 73",
|
|
589
|
-
"server -> client | CONTENT Map header: false new: After: 730 New: 73",
|
|
590
|
-
"server -> client | CONTENT Map header: false new: After: 803 New: 73",
|
|
591
|
-
"server -> client | CONTENT Map header: false new: After: 876 New: 73",
|
|
592
|
-
"server -> client | CONTENT Map header: false new: After: 949 New: 73",
|
|
593
|
-
"server -> client | CONTENT Map header: false new: After: 1022 New: 2",
|
|
572
|
+
"server -> client | CONTENT Map header: false new: After: 146 New: 54",
|
|
594
573
|
"client -> server | KNOWN Group sessions: header/5",
|
|
595
574
|
"client -> server | KNOWN Map sessions: header/73",
|
|
596
575
|
"client -> server | KNOWN Map sessions: header/146",
|
|
597
|
-
"client -> server | KNOWN Map sessions: header/
|
|
598
|
-
"client -> server | KNOWN Map sessions: header/292",
|
|
599
|
-
"client -> server | KNOWN Map sessions: header/365",
|
|
600
|
-
"client -> server | KNOWN Map sessions: header/438",
|
|
601
|
-
"client -> server | KNOWN Map sessions: header/511",
|
|
602
|
-
"client -> server | KNOWN Map sessions: header/584",
|
|
603
|
-
"client -> server | KNOWN Map sessions: header/657",
|
|
604
|
-
"client -> server | KNOWN Map sessions: header/730",
|
|
605
|
-
"client -> server | KNOWN Map sessions: header/803",
|
|
606
|
-
"client -> server | KNOWN Map sessions: header/876",
|
|
607
|
-
"client -> server | KNOWN Map sessions: header/949",
|
|
608
|
-
"client -> server | KNOWN Map sessions: header/1022",
|
|
609
|
-
"client -> server | KNOWN Map sessions: header/1024",
|
|
576
|
+
"client -> server | KNOWN Map sessions: header/200",
|
|
610
577
|
]
|
|
611
578
|
`);
|
|
612
579
|
});
|
|
@@ -625,23 +592,12 @@ describe("loading coValues from server", () => {
|
|
|
625
592
|
const mapOnClient = await loadCoValueOrFail(client.node, largeMap.id);
|
|
626
593
|
|
|
627
594
|
// Generate a large amount of data (about 100MB)
|
|
628
|
-
|
|
629
|
-
const chunkSize = 1024; // 1KB chunks
|
|
630
|
-
const chunks = dataSize / chunkSize;
|
|
631
|
-
|
|
632
|
-
const value = Buffer.alloc(chunkSize, `value$`).toString("base64");
|
|
633
|
-
|
|
634
|
-
for (let i = 0; i < chunks; i++) {
|
|
635
|
-
const key = `key${i}`;
|
|
636
|
-
largeMap.set(key, value, "trusting");
|
|
637
|
-
}
|
|
595
|
+
fillCoMapWithLargeData(largeMap);
|
|
638
596
|
|
|
639
597
|
await waitFor(() => {
|
|
640
598
|
expect(mapOnClient.core.knownState()).toEqual(largeMap.core.knownState());
|
|
641
599
|
});
|
|
642
600
|
|
|
643
|
-
expect(mapOnClient.get(`key${chunks - 1}`)).toEqual(value);
|
|
644
|
-
|
|
645
601
|
expect(
|
|
646
602
|
SyncMessagesLog.getMessages({
|
|
647
603
|
Group: group.core,
|
|
@@ -654,36 +610,12 @@ describe("loading coValues from server", () => {
|
|
|
654
610
|
"server -> client | CONTENT Map header: true new: ",
|
|
655
611
|
"client -> server | KNOWN Group sessions: header/5",
|
|
656
612
|
"client -> server | KNOWN Map sessions: header/0",
|
|
657
|
-
"server -> client | CONTENT Map header: false new: After: 0 New: 73 expectContentUntil: header/
|
|
613
|
+
"server -> client | CONTENT Map header: false new: After: 0 New: 73 expectContentUntil: header/200",
|
|
658
614
|
"server -> client | CONTENT Map header: false new: After: 73 New: 73",
|
|
659
|
-
"server -> client | CONTENT Map header: false new: After: 146 New:
|
|
660
|
-
"server -> client | CONTENT Map header: false new: After: 219 New: 73",
|
|
661
|
-
"server -> client | CONTENT Map header: false new: After: 292 New: 73",
|
|
662
|
-
"server -> client | CONTENT Map header: false new: After: 365 New: 73",
|
|
663
|
-
"server -> client | CONTENT Map header: false new: After: 438 New: 73",
|
|
664
|
-
"server -> client | CONTENT Map header: false new: After: 511 New: 73",
|
|
665
|
-
"server -> client | CONTENT Map header: false new: After: 584 New: 73",
|
|
666
|
-
"server -> client | CONTENT Map header: false new: After: 657 New: 73",
|
|
667
|
-
"server -> client | CONTENT Map header: false new: After: 730 New: 73",
|
|
668
|
-
"server -> client | CONTENT Map header: false new: After: 803 New: 73",
|
|
669
|
-
"server -> client | CONTENT Map header: false new: After: 876 New: 73",
|
|
670
|
-
"server -> client | CONTENT Map header: false new: After: 949 New: 73",
|
|
671
|
-
"server -> client | CONTENT Map header: false new: After: 1022 New: 2",
|
|
615
|
+
"server -> client | CONTENT Map header: false new: After: 146 New: 54",
|
|
672
616
|
"client -> server | KNOWN Map sessions: header/73",
|
|
673
617
|
"client -> server | KNOWN Map sessions: header/146",
|
|
674
|
-
"client -> server | KNOWN Map sessions: header/
|
|
675
|
-
"client -> server | KNOWN Map sessions: header/292",
|
|
676
|
-
"client -> server | KNOWN Map sessions: header/365",
|
|
677
|
-
"client -> server | KNOWN Map sessions: header/438",
|
|
678
|
-
"client -> server | KNOWN Map sessions: header/511",
|
|
679
|
-
"client -> server | KNOWN Map sessions: header/584",
|
|
680
|
-
"client -> server | KNOWN Map sessions: header/657",
|
|
681
|
-
"client -> server | KNOWN Map sessions: header/730",
|
|
682
|
-
"client -> server | KNOWN Map sessions: header/803",
|
|
683
|
-
"client -> server | KNOWN Map sessions: header/876",
|
|
684
|
-
"client -> server | KNOWN Map sessions: header/949",
|
|
685
|
-
"client -> server | KNOWN Map sessions: header/1022",
|
|
686
|
-
"client -> server | KNOWN Map sessions: header/1024",
|
|
618
|
+
"client -> server | KNOWN Map sessions: header/200",
|
|
687
619
|
]
|
|
688
620
|
`);
|
|
689
621
|
});
|
|
@@ -1386,8 +1318,8 @@ describe("loading coValues from server", () => {
|
|
|
1386
1318
|
}),
|
|
1387
1319
|
).toMatchInlineSnapshot(`
|
|
1388
1320
|
[
|
|
1389
|
-
"client -> server | CONTENT Group header: true new: After: 0 New: 3
|
|
1390
|
-
"client -> server | CONTENT ParentGroup header: true new: After: 0 New: 5
|
|
1321
|
+
"client -> server | CONTENT Group header: true new: After: 0 New: 3",
|
|
1322
|
+
"client -> server | CONTENT ParentGroup header: true new: After: 0 New: 5",
|
|
1391
1323
|
"client -> server | CONTENT Group header: false new: After: 3 New: 2",
|
|
1392
1324
|
"client -> server | CONTENT ParentGroup header: false new: After: 5 New: 2",
|
|
1393
1325
|
"client -> server | CONTENT Map header: true new: After: 0 New: 1",
|
|
@@ -152,8 +152,8 @@ describe("multiple clients syncing with the a cloud-like server mesh", () => {
|
|
|
152
152
|
}),
|
|
153
153
|
).toMatchInlineSnapshot(`
|
|
154
154
|
[
|
|
155
|
-
"edge-france -> storage | CONTENT Group header: true new: After: 0 New: 3
|
|
156
|
-
"edge-france -> core | CONTENT Group header: true new: After: 0 New: 3
|
|
155
|
+
"edge-france -> storage | CONTENT Group header: true new: After: 0 New: 3",
|
|
156
|
+
"edge-france -> core | CONTENT Group header: true new: After: 0 New: 3",
|
|
157
157
|
"edge-france -> storage | CONTENT ParentGroup header: true new: After: 0 New: 5",
|
|
158
158
|
"edge-france -> core | CONTENT ParentGroup header: true new: After: 0 New: 5",
|
|
159
159
|
"edge-france -> storage | CONTENT Group header: false new: After: 3 New: 2",
|
|
@@ -8,12 +8,12 @@ import {
|
|
|
8
8
|
vi,
|
|
9
9
|
} from "vitest";
|
|
10
10
|
|
|
11
|
-
import { setMaxRecommendedTxSize } from "../config";
|
|
12
11
|
import { emptyKnownState } from "../exports";
|
|
13
12
|
import {
|
|
14
13
|
SyncMessagesLog,
|
|
15
14
|
TEST_NODE_CONFIG,
|
|
16
15
|
createTestMetricReader,
|
|
16
|
+
fillCoMapWithLargeData,
|
|
17
17
|
loadCoValueOrFail,
|
|
18
18
|
setupTestNode,
|
|
19
19
|
tearDownTestMetricReader,
|
|
@@ -29,7 +29,6 @@ describe("client with storage syncs with server", () => {
|
|
|
29
29
|
|
|
30
30
|
beforeEach(async () => {
|
|
31
31
|
SyncMessagesLog.clear();
|
|
32
|
-
setMaxRecommendedTxSize(100 * 1024);
|
|
33
32
|
jazzCloud = setupTestNode({
|
|
34
33
|
isSyncServer: true,
|
|
35
34
|
});
|
|
@@ -338,7 +337,6 @@ describe("client syncs with a server with storage", () => {
|
|
|
338
337
|
});
|
|
339
338
|
|
|
340
339
|
test("loading a large coValue from storage", async () => {
|
|
341
|
-
setMaxRecommendedTxSize(1000);
|
|
342
340
|
const client = setupTestNode();
|
|
343
341
|
|
|
344
342
|
client.connectToSyncServer({
|
|
@@ -354,15 +352,7 @@ describe("client syncs with a server with storage", () => {
|
|
|
354
352
|
|
|
355
353
|
const largeMap = group.createMap();
|
|
356
354
|
|
|
357
|
-
|
|
358
|
-
const chunks = 100;
|
|
359
|
-
|
|
360
|
-
const value = "1".repeat(10);
|
|
361
|
-
|
|
362
|
-
for (let i = 0; i < chunks; i++) {
|
|
363
|
-
const key = `key${i}`;
|
|
364
|
-
largeMap.set(key, value, "trusting");
|
|
365
|
-
}
|
|
355
|
+
fillCoMapWithLargeData(largeMap);
|
|
366
356
|
|
|
367
357
|
await largeMap.core.waitForSync();
|
|
368
358
|
|
|
@@ -382,28 +372,20 @@ describe("client syncs with a server with storage", () => {
|
|
|
382
372
|
[
|
|
383
373
|
"client -> storage | CONTENT Group header: true new: After: 0 New: 5",
|
|
384
374
|
"client -> server | CONTENT Group header: true new: After: 0 New: 5",
|
|
385
|
-
"client -> storage | CONTENT Map header: true new: After: 0 New:
|
|
386
|
-
"client -> server | CONTENT Map header: true new: After: 0 New:
|
|
387
|
-
"client -> storage | CONTENT Map header: false new: After:
|
|
388
|
-
"client -> server | CONTENT Map header: false new: After:
|
|
389
|
-
"client -> storage | CONTENT Map header: false new: After:
|
|
390
|
-
"client -> server | CONTENT Map header: false new: After:
|
|
391
|
-
"client -> storage | CONTENT Map header: false new: After: 63 New: 21",
|
|
392
|
-
"client -> server | CONTENT Map header: false new: After: 63 New: 21",
|
|
393
|
-
"client -> storage | CONTENT Map header: false new: After: 84 New: 16",
|
|
394
|
-
"client -> server | CONTENT Map header: false new: After: 84 New: 16",
|
|
375
|
+
"client -> storage | CONTENT Map header: true new: After: 0 New: 73 expectContentUntil: header/200",
|
|
376
|
+
"client -> server | CONTENT Map header: true new: After: 0 New: 73 expectContentUntil: header/200",
|
|
377
|
+
"client -> storage | CONTENT Map header: false new: After: 73 New: 73",
|
|
378
|
+
"client -> server | CONTENT Map header: false new: After: 73 New: 73",
|
|
379
|
+
"client -> storage | CONTENT Map header: false new: After: 146 New: 54",
|
|
380
|
+
"client -> server | CONTENT Map header: false new: After: 146 New: 54",
|
|
395
381
|
"server -> client | KNOWN Group sessions: header/5",
|
|
396
382
|
"server -> storage | CONTENT Group header: true new: After: 0 New: 5",
|
|
397
|
-
"server -> client | KNOWN Map sessions: header/
|
|
398
|
-
"server -> storage | CONTENT Map header: true new: After: 0 New:
|
|
399
|
-
"server -> client | KNOWN Map sessions: header/
|
|
400
|
-
"server -> storage | CONTENT Map header: false new: After:
|
|
401
|
-
"server -> client | KNOWN Map sessions: header/
|
|
402
|
-
"server -> storage | CONTENT Map header: false new: After:
|
|
403
|
-
"server -> client | KNOWN Map sessions: header/84",
|
|
404
|
-
"server -> storage | CONTENT Map header: false new: After: 63 New: 21",
|
|
405
|
-
"server -> client | KNOWN Map sessions: header/100",
|
|
406
|
-
"server -> storage | CONTENT Map header: false new: After: 84 New: 16",
|
|
383
|
+
"server -> client | KNOWN Map sessions: header/73",
|
|
384
|
+
"server -> storage | CONTENT Map header: true new: After: 0 New: 73",
|
|
385
|
+
"server -> client | KNOWN Map sessions: header/146",
|
|
386
|
+
"server -> storage | CONTENT Map header: false new: After: 73 New: 73",
|
|
387
|
+
"server -> client | KNOWN Map sessions: header/200",
|
|
388
|
+
"server -> storage | CONTENT Map header: false new: After: 146 New: 54",
|
|
407
389
|
]
|
|
408
390
|
`);
|
|
409
391
|
|
|
@@ -456,14 +438,12 @@ describe("client syncs with a server with storage", () => {
|
|
|
456
438
|
"client -> storage | LOAD Map sessions: empty",
|
|
457
439
|
"storage -> client | CONTENT Group header: true new: After: 0 New: 5",
|
|
458
440
|
"client -> server | LOAD Group sessions: header/5",
|
|
459
|
-
"storage -> client | CONTENT Map header: true new: After: 0 New:
|
|
460
|
-
"client -> server | LOAD Map sessions: header/
|
|
441
|
+
"storage -> client | CONTENT Map header: true new: After: 0 New: 73 expectContentUntil: header/200",
|
|
442
|
+
"client -> server | LOAD Map sessions: header/200",
|
|
461
443
|
"server -> client | KNOWN Group sessions: header/5",
|
|
462
|
-
"server -> client | KNOWN Map sessions: header/
|
|
463
|
-
"storage -> client | CONTENT Map header: true new: After:
|
|
464
|
-
"storage -> client | CONTENT Map header: true new: After:
|
|
465
|
-
"storage -> client | CONTENT Map header: true new: After: 63 New: 21",
|
|
466
|
-
"storage -> client | CONTENT Map header: true new: After: 84 New: 16",
|
|
444
|
+
"server -> client | KNOWN Map sessions: header/200",
|
|
445
|
+
"storage -> client | CONTENT Map header: true new: After: 73 New: 73",
|
|
446
|
+
"storage -> client | CONTENT Map header: true new: After: 146 New: 54",
|
|
467
447
|
]
|
|
468
448
|
`);
|
|
469
449
|
});
|
|
@@ -485,16 +465,7 @@ describe("client syncs with a server with storage", () => {
|
|
|
485
465
|
const largeMap = group.createMap();
|
|
486
466
|
|
|
487
467
|
// Generate a large amount of data (about 100MB)
|
|
488
|
-
|
|
489
|
-
const chunkSize = 1024; // 1KB chunks
|
|
490
|
-
const chunks = dataSize / chunkSize;
|
|
491
|
-
|
|
492
|
-
const value = Buffer.alloc(chunkSize, `value$`).toString("base64");
|
|
493
|
-
|
|
494
|
-
for (let i = 0; i < chunks; i++) {
|
|
495
|
-
const key = `key${i}`;
|
|
496
|
-
largeMap.set(key, value, "trusting");
|
|
497
|
-
}
|
|
468
|
+
fillCoMapWithLargeData(largeMap);
|
|
498
469
|
|
|
499
470
|
await largeMap.core.waitForSync();
|
|
500
471
|
|
|
@@ -738,8 +709,8 @@ describe("client syncs with a server with storage", () => {
|
|
|
738
709
|
}),
|
|
739
710
|
).toMatchInlineSnapshot(`
|
|
740
711
|
[
|
|
741
|
-
"client -> server | CONTENT Group header: true new: After: 0 New: 3
|
|
742
|
-
"client -> server | CONTENT Map header: true new:
|
|
712
|
+
"client -> server | CONTENT Group header: true new: After: 0 New: 3",
|
|
713
|
+
"client -> server | CONTENT Map header: true new: ",
|
|
743
714
|
"client -> server | CONTENT Group header: false new: After: 3 New: 2",
|
|
744
715
|
"client -> server | CONTENT Map header: false new: After: 0 New: 1",
|
|
745
716
|
"server -> client | KNOWN Group sessions: header/3",
|