@powersync/service-core-tests 0.0.0-dev-20260602073133 → 0.0.0-dev-20260909133214

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.
Files changed (53) hide show
  1. package/CHANGELOG.md +112 -4
  2. package/dist/test-utils/AbstractStreamTestContext.d.ts +7 -6
  3. package/dist/test-utils/AbstractStreamTestContext.js +28 -25
  4. package/dist/test-utils/AbstractStreamTestContext.js.map +1 -1
  5. package/dist/test-utils/StorageDataHelpers.d.ts +6 -5
  6. package/dist/test-utils/StorageDataHelpers.js +40 -2
  7. package/dist/test-utils/StorageDataHelpers.js.map +1 -1
  8. package/dist/test-utils/bucket-validation.d.ts +3 -3
  9. package/dist/test-utils/bucket-validation.js +3 -3
  10. package/dist/test-utils/general-utils.d.ts +16 -3
  11. package/dist/test-utils/general-utils.js +37 -4
  12. package/dist/test-utils/general-utils.js.map +1 -1
  13. package/dist/test-utils/storage-combinations.d.ts +13 -0
  14. package/dist/test-utils/storage-combinations.js +26 -0
  15. package/dist/test-utils/storage-combinations.js.map +1 -0
  16. package/dist/test-utils/stream_utils.d.ts +0 -1
  17. package/dist/test-utils/stream_utils.js +0 -10
  18. package/dist/test-utils/stream_utils.js.map +1 -1
  19. package/dist/test-utils/test-utils-index.d.ts +1 -0
  20. package/dist/test-utils/test-utils-index.js +1 -0
  21. package/dist/test-utils/test-utils-index.js.map +1 -1
  22. package/dist/tests/register-compacting-tests.js +36 -29
  23. package/dist/tests/register-compacting-tests.js.map +1 -1
  24. package/dist/tests/register-data-storage-checkpoint-tests.js +138 -14
  25. package/dist/tests/register-data-storage-checkpoint-tests.js.map +1 -1
  26. package/dist/tests/register-data-storage-data-tests.js +205 -138
  27. package/dist/tests/register-data-storage-data-tests.js.map +1 -1
  28. package/dist/tests/register-data-storage-parameter-tests.js +44 -42
  29. package/dist/tests/register-data-storage-parameter-tests.js.map +1 -1
  30. package/dist/tests/register-parameter-compacting-tests.js +3 -2
  31. package/dist/tests/register-parameter-compacting-tests.js.map +1 -1
  32. package/dist/tests/register-sync-tests.js +404 -86
  33. package/dist/tests/register-sync-tests.js.map +1 -1
  34. package/dist/tests/util.d.ts +8 -2
  35. package/dist/tests/util.js +12 -0
  36. package/dist/tests/util.js.map +1 -1
  37. package/package.json +5 -6
  38. package/src/test-utils/AbstractStreamTestContext.ts +31 -27
  39. package/src/test-utils/StorageDataHelpers.ts +52 -8
  40. package/src/test-utils/bucket-validation.ts +3 -3
  41. package/src/test-utils/general-utils.ts +62 -10
  42. package/src/test-utils/storage-combinations.ts +51 -0
  43. package/src/test-utils/stream_utils.ts +0 -11
  44. package/src/test-utils/test-utils-index.ts +1 -0
  45. package/src/tests/register-compacting-tests.ts +55 -32
  46. package/src/tests/register-data-storage-checkpoint-tests.ts +171 -14
  47. package/src/tests/register-data-storage-data-tests.ts +251 -150
  48. package/src/tests/register-data-storage-parameter-tests.ts +58 -42
  49. package/src/tests/register-parameter-compacting-tests.ts +3 -2
  50. package/src/tests/register-sync-tests.ts +443 -88
  51. package/src/tests/util.ts +15 -2
  52. package/tsconfig.json +1 -4
  53. package/tsconfig.tsbuildinfo +1 -1
@@ -2,5 +2,4 @@ import { utils } from '@powersync/service-core';
2
2
  export declare function putOp(table: string, data: Record<string, any>): Partial<utils.OplogEntry>;
3
3
  export declare function removeOp(table: string, id: string): Partial<utils.OplogEntry>;
4
4
  export declare function compareIds(a: utils.OplogEntry, b: utils.OplogEntry): number;
5
- export declare function oneFromAsync<T>(source: Iterable<T> | AsyncIterable<T>): Promise<T>;
6
5
  export declare function fromAsync<T>(source: Iterable<T> | AsyncIterable<T>): Promise<T[]>;
@@ -17,16 +17,6 @@ export function removeOp(table, id) {
17
17
  export function compareIds(a, b) {
18
18
  return a.object_id.localeCompare(b.object_id);
19
19
  }
20
- export async function oneFromAsync(source) {
21
- const items = [];
22
- for await (const item of source) {
23
- items.push(item);
24
- }
25
- if (items.length != 1) {
26
- throw new Error(`One item expected, got: ${items.length}`);
27
- }
28
- return items[0];
29
- }
30
20
  export async function fromAsync(source) {
31
21
  const items = [];
32
22
  for await (const item of source) {
@@ -1 +1 @@
1
- {"version":3,"file":"stream_utils.js","sourceRoot":"","sources":["../../src/test-utils/stream_utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAErD,MAAM,UAAU,KAAK,CAAC,KAAa,EAAE,IAAyB;IAC5D,OAAO;QACL,EAAE,EAAE,KAAK;QACT,WAAW,EAAE,KAAK;QAClB,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,6CAA6C;QACzE,IAAI,EAAE,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC;KAC9B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,KAAa,EAAE,EAAU;IAChD,OAAO;QACL,EAAE,EAAE,QAAQ;QACZ,WAAW,EAAE,KAAK;QAClB,SAAS,EAAE,MAAM,CAAC,EAAE,CAAC;KACtB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,CAAmB,EAAE,CAAmB;IACjE,OAAO,CAAC,CAAC,SAAU,CAAC,aAAa,CAAC,CAAC,CAAC,SAAU,CAAC,CAAC;AAClD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAAI,MAAsC;IAC1E,MAAM,KAAK,GAAQ,EAAE,CAAC;IACtB,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;QAChC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnB,CAAC;IACD,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CAAC,2BAA2B,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;IAC7D,CAAC;IACD,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAAI,MAAsC;IACvE,MAAM,KAAK,GAAQ,EAAE,CAAC;IACtB,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;QAChC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnB,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
1
+ {"version":3,"file":"stream_utils.js","sourceRoot":"","sources":["../../src/test-utils/stream_utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAErD,MAAM,UAAU,KAAK,CAAC,KAAa,EAAE,IAAyB;IAC5D,OAAO;QACL,EAAE,EAAE,KAAK;QACT,WAAW,EAAE,KAAK;QAClB,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,6CAA6C;QACzE,IAAI,EAAE,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC;KAC9B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,KAAa,EAAE,EAAU;IAChD,OAAO;QACL,EAAE,EAAE,QAAQ;QACZ,WAAW,EAAE,KAAK;QAClB,SAAS,EAAE,MAAM,CAAC,EAAE,CAAC;KACtB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,CAAmB,EAAE,CAAmB;IACjE,OAAO,CAAC,CAAC,SAAU,CAAC,aAAa,CAAC,CAAC,CAAC,SAAU,CAAC,CAAC;AAClD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAAI,MAAsC;IACvE,MAAM,KAAK,GAAQ,EAAE,CAAC;IACtB,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;QAChC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnB,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -2,5 +2,6 @@ export * from './AbstractStreamTestContext.js';
2
2
  export * from './bucket-validation.js';
3
3
  export * from './general-utils.js';
4
4
  export * from './MetricsHelper.js';
5
+ export * from './storage-combinations.js';
5
6
  export * from './StorageDataHelpers.js';
6
7
  export * from './stream_utils.js';
@@ -2,6 +2,7 @@ export * from './AbstractStreamTestContext.js';
2
2
  export * from './bucket-validation.js';
3
3
  export * from './general-utils.js';
4
4
  export * from './MetricsHelper.js';
5
+ export * from './storage-combinations.js';
5
6
  export * from './StorageDataHelpers.js';
6
7
  export * from './stream_utils.js';
7
8
  //# sourceMappingURL=test-utils-index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"test-utils-index.js","sourceRoot":"","sources":["../../src/test-utils/test-utils-index.ts"],"names":[],"mappings":"AAAA,cAAc,gCAAgC,CAAC;AAC/C,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,yBAAyB,CAAC;AACxC,cAAc,mBAAmB,CAAC"}
1
+ {"version":3,"file":"test-utils-index.js","sourceRoot":"","sources":["../../src/test-utils/test-utils-index.ts"],"names":[],"mappings":"AAAA,cAAc,gCAAgC,CAAC;AAC/C,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yBAAyB,CAAC;AACxC,cAAc,mBAAmB,CAAC"}
@@ -2,7 +2,7 @@ import { addChecksums, storage, updateSyncRulesFromYaml } from '@powersync/servi
2
2
  import { expect, test } from 'vitest';
3
3
  import * as test_utils from '../test-utils/test-utils-index.js';
4
4
  import { bucketRequest } from '../test-utils/test-utils-index.js';
5
- import { bucketRequestMap, bucketRequests } from './util.js';
5
+ import { bucketRequestMap, bucketRequests, compactActive } from './util.js';
6
6
  export function registerCompactTests(config) {
7
7
  const generateStorageFactory = config.factory;
8
8
  test('compacting (1)', async () => {
@@ -13,6 +13,7 @@ bucket_definitions:
13
13
  data: [select * from test]
14
14
  `));
15
15
  const bucketStorage = factory.getInstance(syncRules);
16
+ const syncRulesContent = syncRules.syncConfigContent[0];
16
17
  await using writer = await bucketStorage.createWriter(test_utils.BATCH_OPTIONS);
17
18
  const testTable = await test_utils.resolveTestTable(writer, 'test', ['id'], config);
18
19
  await writer.markAllSnapshotDone('1/1');
@@ -43,10 +44,10 @@ bucket_definitions:
43
44
  await writer.commit('1/1');
44
45
  await writer.flush();
45
46
  const checkpoint = writer.last_flushed_op;
46
- const request = bucketRequest(syncRules, 'global[]');
47
- const batchBefore = await test_utils.oneFromAsync(bucketStorage.getBucketDataBatch(checkpoint, [request]));
47
+ const request = bucketRequest(syncRulesContent, 'global[]');
48
+ const batchBefore = await test_utils.getSingleBatchItem(bucketStorage.getBucketDataBatch(test_utils.testCheckpoint(checkpoint), [request]));
48
49
  const dataBefore = batchBefore.chunkData.data;
49
- const checksumBefore = await bucketStorage.getChecksums(checkpoint, [request]);
50
+ const checksumBefore = await bucketStorage.getChecksums(test_utils.testCheckpoint(checkpoint), [request]);
50
51
  expect(dataBefore).toMatchObject([
51
52
  {
52
53
  object_id: 't1',
@@ -65,18 +66,18 @@ bucket_definitions:
65
66
  }
66
67
  ]);
67
68
  expect(batchBefore.targetOp).toEqual(null);
68
- await bucketStorage.compact({
69
+ await compactActive(factory, {
69
70
  clearBatchLimit: 2,
70
71
  moveBatchLimit: 1,
71
72
  moveBatchQueryLimit: 1,
72
73
  minBucketChanges: 1,
73
74
  minChangeRatio: 0
74
75
  });
75
- const batchAfter = await test_utils.oneFromAsync(bucketStorage.getBucketDataBatch(checkpoint, [request]));
76
+ const batchAfter = await test_utils.getSingleBatchItem(bucketStorage.getBucketDataBatch(test_utils.testCheckpoint(checkpoint), [request]));
76
77
  const dataAfter = batchAfter.chunkData.data;
77
- const checksumAfter = await bucketStorage.getChecksums(checkpoint, [request]);
78
+ const checksumAfter = await bucketStorage.getChecksums(test_utils.testCheckpoint(checkpoint), [request]);
78
79
  bucketStorage.clearChecksumCache();
79
- const checksumAfter2 = await bucketStorage.getChecksums(checkpoint, [request]);
80
+ const checksumAfter2 = await bucketStorage.getChecksums(test_utils.testCheckpoint(checkpoint), [request]);
80
81
  expect(batchAfter.targetOp).toEqual(3n);
81
82
  expect(dataAfter).toMatchObject([
82
83
  dataBefore[0],
@@ -104,6 +105,7 @@ bucket_definitions:
104
105
  data: [select * from test]
105
106
  `));
106
107
  const bucketStorage = factory.getInstance(syncRules);
108
+ const syncRulesContent = syncRules.syncConfigContent[0];
107
109
  await using writer = await bucketStorage.createWriter(test_utils.BATCH_OPTIONS);
108
110
  const testTable = await test_utils.resolveTestTable(writer, 'test', ['id'], config);
109
111
  await writer.markAllSnapshotDone('1/1');
@@ -142,10 +144,10 @@ bucket_definitions:
142
144
  await writer.commit('1/1');
143
145
  await writer.flush();
144
146
  const checkpoint = writer.last_flushed_op;
145
- const request = bucketRequest(syncRules, 'global[]');
146
- const batchBefore = await test_utils.oneFromAsync(bucketStorage.getBucketDataBatch(checkpoint, [request]));
147
+ const request = bucketRequest(syncRulesContent, 'global[]');
148
+ const batchBefore = await test_utils.getSingleBatchItem(bucketStorage.getBucketDataBatch(test_utils.testCheckpoint(checkpoint), [request]));
147
149
  const dataBefore = batchBefore.chunkData.data;
148
- const checksumBefore = await bucketStorage.getChecksums(checkpoint, [request]);
150
+ const checksumBefore = await bucketStorage.getChecksums(test_utils.testCheckpoint(checkpoint), [request]);
149
151
  // op_id sequence depends on the storage implementation
150
152
  expect(dataBefore).toMatchObject([
151
153
  {
@@ -165,17 +167,17 @@ bucket_definitions:
165
167
  op: 'PUT'
166
168
  }
167
169
  ]);
168
- await bucketStorage.compact({
170
+ await compactActive(factory, {
169
171
  clearBatchLimit: 2,
170
172
  moveBatchLimit: 1,
171
173
  moveBatchQueryLimit: 1,
172
174
  minBucketChanges: 1,
173
175
  minChangeRatio: 0
174
176
  });
175
- const batchAfter = await test_utils.oneFromAsync(bucketStorage.getBucketDataBatch(checkpoint, [request]));
177
+ const batchAfter = await test_utils.getSingleBatchItem(bucketStorage.getBucketDataBatch(test_utils.testCheckpoint(checkpoint), [request]));
176
178
  const dataAfter = batchAfter.chunkData.data;
177
179
  bucketStorage.clearChecksumCache();
178
- const checksumAfter = await bucketStorage.getChecksums(checkpoint, [request]);
180
+ const checksumAfter = await bucketStorage.getChecksums(test_utils.testCheckpoint(checkpoint), [request]);
179
181
  expect(batchAfter.targetOp).toBeLessThanOrEqual(checkpoint);
180
182
  expect(dataAfter).toMatchObject([
181
183
  {
@@ -202,6 +204,7 @@ bucket_definitions:
202
204
  data: [select * from test]
203
205
  `));
204
206
  const bucketStorage = factory.getInstance(syncRules);
207
+ const syncRulesContent = syncRules.syncConfigContent[0];
205
208
  await using writer = await bucketStorage.createWriter(test_utils.BATCH_OPTIONS);
206
209
  const testTable = await test_utils.resolveTestTable(writer, 'test', ['id'], config);
207
210
  await writer.markAllSnapshotDone('1/1');
@@ -232,7 +235,7 @@ bucket_definitions:
232
235
  await writer.commit('1/1');
233
236
  await writer.flush();
234
237
  const checkpoint1 = writer.last_flushed_op;
235
- const request = bucketRequest(syncRules, 'global[]');
238
+ const request = bucketRequest(syncRulesContent, 'global[]');
236
239
  await using writer2 = await bucketStorage.createWriter(test_utils.BATCH_OPTIONS);
237
240
  const testTable2 = await test_utils.resolveTestTable(writer2, 'test', ['id'], config);
238
241
  await writer2.save({
@@ -246,17 +249,17 @@ bucket_definitions:
246
249
  await writer2.commit('2/1');
247
250
  await writer2.flush();
248
251
  const checkpoint2 = writer2.last_flushed_op;
249
- await bucketStorage.compact({
252
+ await compactActive(factory, {
250
253
  clearBatchLimit: 2,
251
254
  moveBatchLimit: 1,
252
255
  moveBatchQueryLimit: 1,
253
256
  minBucketChanges: 1,
254
257
  minChangeRatio: 0
255
258
  });
256
- const batchAfter = await test_utils.oneFromAsync(bucketStorage.getBucketDataBatch(checkpoint2, [request]));
259
+ const batchAfter = await test_utils.getSingleBatchItem(bucketStorage.getBucketDataBatch(test_utils.testCheckpoint(checkpoint2), [request]));
257
260
  const dataAfter = batchAfter.chunkData.data;
258
261
  await bucketStorage.clearChecksumCache();
259
- const checksumAfter = await bucketStorage.getChecksums(checkpoint2, [request]);
262
+ const checksumAfter = await bucketStorage.getChecksums(test_utils.testCheckpoint(checkpoint2), [request]);
260
263
  expect(dataAfter).toMatchObject([
261
264
  {
262
265
  op: 'CLEAR'
@@ -279,6 +282,7 @@ bucket_definitions:
279
282
  data:
280
283
  - select * from test where b = bucket.b`));
281
284
  const bucketStorage = factory.getInstance(syncRules);
285
+ const syncRulesContent = syncRules.syncConfigContent[0];
282
286
  await using writer = await bucketStorage.createWriter(test_utils.BATCH_OPTIONS);
283
287
  const testTable = await test_utils.resolveTestTable(writer, 'test', ['id'], config);
284
288
  await writer.markAllSnapshotDone('1/1');
@@ -344,14 +348,14 @@ bucket_definitions:
344
348
  }
345
349
  await writer.flush();
346
350
  const checkpoint = writer.last_flushed_op;
347
- await bucketStorage.compact({
351
+ await compactActive(factory, {
348
352
  clearBatchLimit: 100,
349
353
  moveBatchLimit: 100,
350
354
  moveBatchQueryLimit: 100, // Larger limit for a larger window of operations
351
355
  minBucketChanges: 1,
352
356
  minChangeRatio: 0
353
357
  });
354
- const batchAfter = await test_utils.fromAsync(bucketStorage.getBucketDataBatch(checkpoint, bucketRequestMap(syncRules, [
358
+ const batchAfter = await test_utils.getBatchArray(bucketStorage.getBucketDataBatch(test_utils.testCheckpoint(checkpoint), bucketRequestMap(syncRulesContent, [
355
359
  ['grouped["b1"]', 0n],
356
360
  ['grouped["b2"]', 0n]
357
361
  ])));
@@ -388,6 +392,7 @@ bucket_definitions:
388
392
  data: [select * from test]
389
393
  `));
390
394
  const bucketStorage = factory.getInstance(syncRules);
395
+ const syncRulesContent = syncRules.syncConfigContent[0];
391
396
  await using writer = await bucketStorage.createWriter(test_utils.BATCH_OPTIONS);
392
397
  const testTable = await test_utils.resolveTestTable(writer, 'test', ['id'], config);
393
398
  await writer.markAllSnapshotDone('1/1');
@@ -417,7 +422,7 @@ bucket_definitions:
417
422
  });
418
423
  await writer.commit('1/1');
419
424
  await writer.flush();
420
- await bucketStorage.compact({
425
+ await compactActive(factory, {
421
426
  clearBatchLimit: 2,
422
427
  moveBatchLimit: 1,
423
428
  moveBatchQueryLimit: 1,
@@ -437,9 +442,9 @@ bucket_definitions:
437
442
  await writer2.commit('2/1');
438
443
  await writer2.flush();
439
444
  const checkpoint2 = writer2.last_flushed_op;
440
- const request = bucketRequest(syncRules, 'global[]');
445
+ const request = bucketRequest(syncRulesContent, 'global[]');
441
446
  await bucketStorage.clearChecksumCache();
442
- const checksumAfter = await bucketStorage.getChecksums(checkpoint2, [request]);
447
+ const checksumAfter = await bucketStorage.getChecksums(test_utils.testCheckpoint(checkpoint2), [request]);
443
448
  const globalChecksum = checksumAfter.get(request.bucket);
444
449
  expect(globalChecksum).toMatchObject({
445
450
  bucket: request.bucket,
@@ -456,6 +461,7 @@ bucket_definitions:
456
461
  data: [select * from test]
457
462
  `));
458
463
  const bucketStorage = factory.getInstance(syncRules);
464
+ const syncRulesContent = syncRules.syncConfigContent[0];
459
465
  await using writer = await bucketStorage.createWriter(test_utils.BATCH_OPTIONS);
460
466
  const testTable = await test_utils.resolveTestTable(writer, 'test', ['id'], config);
461
467
  await writer.markAllSnapshotDone('1/1');
@@ -478,7 +484,7 @@ bucket_definitions:
478
484
  await writer.commit('1/1');
479
485
  await writer.flush();
480
486
  // Get checksums here just to populate the cache
481
- await bucketStorage.getChecksums(writer.last_flushed_op, bucketRequests(syncRules, ['global[]']));
487
+ await bucketStorage.getChecksums(test_utils.testCheckpoint(writer.last_flushed_op), bucketRequests(syncRulesContent, ['global[]']));
482
488
  await using writer2 = await bucketStorage.createWriter(test_utils.BATCH_OPTIONS);
483
489
  const testTable2 = await test_utils.resolveTestTable(writer2, 'test', ['id'], config);
484
490
  await writer2.save({
@@ -491,7 +497,7 @@ bucket_definitions:
491
497
  });
492
498
  await writer2.commit('2/1');
493
499
  await writer2.flush();
494
- await bucketStorage.compact({
500
+ await compactActive(factory, {
495
501
  clearBatchLimit: 20,
496
502
  moveBatchLimit: 10,
497
503
  moveBatchQueryLimit: 10,
@@ -499,9 +505,9 @@ bucket_definitions:
499
505
  minChangeRatio: 0
500
506
  });
501
507
  const checkpoint2 = writer2.last_flushed_op;
502
- const request = bucketRequest(syncRules, 'global[]');
508
+ const request = bucketRequest(syncRulesContent, 'global[]');
503
509
  // Check that the checksum was correctly updated with the clear operation after having a cached checksum
504
- const checksumAfter = await bucketStorage.getChecksums(checkpoint2, [request]);
510
+ const checksumAfter = await bucketStorage.getChecksums(test_utils.testCheckpoint(checkpoint2), [request]);
505
511
  const globalChecksum = checksumAfter.get(request.bucket);
506
512
  expect(globalChecksum).toMatchObject({
507
513
  bucket: request.bucket,
@@ -518,6 +524,7 @@ bucket_definitions:
518
524
  data: [select * from test]
519
525
  `));
520
526
  const bucketStorage = factory.getInstance(syncRules);
527
+ const syncRulesContent = syncRules.syncConfigContent[0];
521
528
  await using writer = await bucketStorage.createWriter(test_utils.BATCH_OPTIONS);
522
529
  const testTable = await test_utils.resolveTestTable(writer, 'test', ['id'], config);
523
530
  await writer.markAllSnapshotDone('1/1');
@@ -544,13 +551,13 @@ bucket_definitions:
544
551
  const checkpointBeforeCompact = await bucketStorage.getCheckpoint();
545
552
  expect(checkpointBeforeCompact.checkpoint).toEqual(checkpoint1);
546
553
  // With default options, Postgres compaction should use the active checkpoint.
547
- await bucketStorage.compact({
554
+ await compactActive(factory, {
548
555
  moveBatchLimit: 1,
549
556
  moveBatchQueryLimit: 1,
550
557
  minBucketChanges: 1,
551
558
  minChangeRatio: 0
552
559
  });
553
- const batchAfterDefaultCompact = await test_utils.oneFromAsync(bucketStorage.getBucketDataBatch(checkpoint2, bucketRequestMap(syncRules, [['global[]', 0n]])));
560
+ const batchAfterDefaultCompact = await test_utils.getSingleBatchItem(bucketStorage.getBucketDataBatch(test_utils.testCheckpoint(checkpoint2), bucketRequestMap(syncRulesContent, [['global[]', 0n]])));
554
561
  // Operation 1 should remain a PUT because op_id=2 is above the default maxOpId checkpoint.
555
562
  expect(batchAfterDefaultCompact.chunkData.data).toMatchObject([
556
563
  { op_id: '1', op: 'PUT', object_id: 't1' },
@@ -1 +1 @@
1
- {"version":3,"file":"register-compacting-tests.js","sourceRoot":"","sources":["../../src/tests/register-compacting-tests.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"register-compacting-tests.js","sourceRoot":"","sources":["../../src/tests/register-compacting-tests.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import { storage, updateSyncRulesFromYaml } from '@powersync/service-core';
2
2
  import { expect, test } from 'vitest';
3
3
  import * as test_utils from '../test-utils/test-utils-index.js';
4
+ import { compactActive } from './util.js';
4
5
  /**
5
6
  * @example
6
7
  * ```TypeScript
@@ -28,10 +29,13 @@ bucket_definitions:
28
29
  const abortController = new AbortController();
29
30
  context.onTestFinished(() => abortController.abort());
30
31
  const iter = bucketStorage
31
- .watchCheckpointChanges({ user_id: 'user1', signal: abortController.signal })[Symbol.asyncIterator]();
32
+ .watchCheckpointChanges({
33
+ user_id: 'user1',
34
+ signal: abortController.signal
35
+ })[Symbol.asyncIterator]();
32
36
  await using writer = await bucketStorage.createWriter(test_utils.BATCH_OPTIONS);
33
37
  await writer.markAllSnapshotDone('1/1');
34
- const writeCheckpoint = await bucketStorage.createManagedWriteCheckpoint({
38
+ const writeCheckpoint = await createManagedWriteCheckpoint(bucketStorage, {
35
39
  heads: { '1': '5/0' },
36
40
  user_id: 'user1'
37
41
  });
@@ -64,7 +68,10 @@ bucket_definitions:
64
68
  const abortController = new AbortController();
65
69
  context.onTestFinished(() => abortController.abort());
66
70
  const iter = bucketStorage
67
- .watchCheckpointChanges({ user_id: 'user1', signal: abortController.signal })[Symbol.asyncIterator]();
71
+ .watchCheckpointChanges({
72
+ user_id: 'user1',
73
+ signal: abortController.signal
74
+ })[Symbol.asyncIterator]();
68
75
  await writer.keepalive('5/0');
69
76
  const result = await iter.next();
70
77
  expect(result).toMatchObject({
@@ -77,12 +84,12 @@ bucket_definitions:
77
84
  writeCheckpoint: null
78
85
  }
79
86
  });
80
- const writeCheckpoint = await bucketStorage.createManagedWriteCheckpoint({
87
+ const writeCheckpoint = await createManagedWriteCheckpoint(bucketStorage, {
81
88
  heads: { '1': '6/0' },
82
89
  user_id: 'user1'
83
90
  });
84
91
  // We have to trigger a new keepalive after the checkpoint, at least to cover postgres storage.
85
- // This is what is effetively triggered with RouteAPI.createReplicationHead().
92
+ // This is what is effectively triggered by RouteAPI.createReplicationHead().
86
93
  // MongoDB storage doesn't explicitly need this anymore.
87
94
  await writer.keepalive('6/0');
88
95
  let result2 = await iter.next();
@@ -101,7 +108,7 @@ bucket_definitions:
101
108
  }
102
109
  });
103
110
  });
104
- test('custom write checkpoints - checkpoint after write', async (context) => {
111
+ test('managed write checkpoints - client supplied ids are monotonic', async () => {
105
112
  await using factory = await generateStorageFactory();
106
113
  const r = await factory.configureSyncRules(updateSyncRulesFromYaml(`
107
114
  bucket_definitions:
@@ -112,13 +119,73 @@ bucket_definitions:
112
119
  storageVersion
113
120
  }));
114
121
  const bucketStorage = factory.getInstance(r.persisted_sync_rules);
115
- bucketStorage.setWriteCheckpointMode(storage.WriteCheckpointMode.CUSTOM);
122
+ const first = await createManagedWriteCheckpointResult(bucketStorage, {
123
+ user_id: 'user1',
124
+ heads: { '1': '5/0' },
125
+ checkpoint_request_id: 42n
126
+ });
127
+ expect(first.writeCheckpoints.get('user1')).toEqual(42n);
128
+ expect(first.shouldAdvance).toBe(true);
129
+ await expect(bucketStorage.lastWriteCheckpoint({ user_id: 'user1', heads: { '1': '5/0' } })).resolves.toEqual(42n);
130
+ const stale = await createManagedWriteCheckpointResult(bucketStorage, {
131
+ user_id: 'user1',
132
+ heads: { '1': '8/0' },
133
+ checkpoint_request_id: 41n
134
+ });
135
+ expect(stale.writeCheckpoints.get('user1')).toEqual(42n);
136
+ // The stored checkpoint is unchanged but has not been processed by replication
137
+ // yet, so the source marker must still be forced (e.g. for a retry after a
138
+ // previous attempt failed to advance the marker).
139
+ expect(stale.shouldAdvance).toBe(true);
140
+ await expect(bucketStorage.lastWriteCheckpoint({ user_id: 'user1', heads: { '1': '6/0' } })).resolves.toEqual(42n);
141
+ const retried = await createManagedWriteCheckpointResult(bucketStorage, {
142
+ user_id: 'user1',
143
+ heads: { '1': '8/0' },
144
+ checkpoint_request_id: 42n
145
+ });
146
+ expect(retried.writeCheckpoints.get('user1')).toEqual(42n);
147
+ // Same as above: the duplicate request still points at a pending checkpoint.
148
+ expect(retried.shouldAdvance).toBe(true);
149
+ await expect(bucketStorage.lastWriteCheckpoint({ user_id: 'user1', heads: { '1': '6/0' } })).resolves.toEqual(42n);
150
+ const advanced = await createManagedWriteCheckpointResult(bucketStorage, {
151
+ user_id: 'user1',
152
+ heads: { '1': '8/0' },
153
+ checkpoint_request_id: 43n
154
+ });
155
+ expect(advanced.writeCheckpoints.get('user1')).toEqual(43n);
156
+ expect(advanced.shouldAdvance).toBe(true);
157
+ await expect(bucketStorage.lastWriteCheckpoint({ user_id: 'user1', heads: { '1': '7/0' } })).resolves.toBeNull();
158
+ await expect(bucketStorage.lastWriteCheckpoint({ user_id: 'user1', heads: { '1': '8/0' } })).resolves.toEqual(43n);
159
+ const generated = await createManagedWriteCheckpointResult(bucketStorage, {
160
+ user_id: 'user1',
161
+ heads: { '1': '9/0' }
162
+ });
163
+ expect(generated.writeCheckpoints.get('user1')).toEqual(44n);
164
+ expect(generated.shouldAdvance).toBe(true);
165
+ });
166
+ test.runIf((storageVersion ?? 1) < 3)('custom write checkpoints - checkpoint after write', async (context) => {
167
+ await using factory = await generateStorageFactory();
168
+ const r = await factory.configureSyncRules(updateSyncRulesFromYaml(`
169
+ bucket_definitions:
170
+ mybucket:
171
+ data: []
172
+ `, {
173
+ validate: false,
174
+ storageVersion
175
+ }));
176
+ const bucketStorage = factory.getInstance(r.persisted_sync_rules);
177
+ bucketStorage.setWriteCheckpointMode({
178
+ mode: storage.WriteCheckpointMode.CUSTOM
179
+ });
116
180
  await using writer = await bucketStorage.createWriter(test_utils.BATCH_OPTIONS);
117
181
  await writer.markAllSnapshotDone('1/1');
118
182
  const abortController = new AbortController();
119
183
  context.onTestFinished(() => abortController.abort());
120
184
  const iter = bucketStorage
121
- .watchCheckpointChanges({ user_id: 'user1', signal: abortController.signal })[Symbol.asyncIterator]();
185
+ .watchCheckpointChanges({
186
+ user_id: 'user1',
187
+ signal: abortController.signal
188
+ })[Symbol.asyncIterator]();
122
189
  writer.addCustomWriteCheckpoint({
123
190
  checkpoint: 5n,
124
191
  user_id: 'user1'
@@ -136,7 +203,7 @@ bucket_definitions:
136
203
  }
137
204
  });
138
205
  });
139
- test('custom write checkpoints - standalone checkpoint', async (context) => {
206
+ test.runIf((storageVersion ?? 1) < 3)('custom write checkpoints - standalone checkpoint', async (context) => {
140
207
  await using factory = await generateStorageFactory();
141
208
  const r = await factory.configureSyncRules(updateSyncRulesFromYaml(`
142
209
  bucket_definitions:
@@ -147,13 +214,18 @@ bucket_definitions:
147
214
  storageVersion
148
215
  }));
149
216
  const bucketStorage = factory.getInstance(r.persisted_sync_rules);
150
- bucketStorage.setWriteCheckpointMode(storage.WriteCheckpointMode.CUSTOM);
217
+ bucketStorage.setWriteCheckpointMode({
218
+ mode: storage.WriteCheckpointMode.CUSTOM
219
+ });
151
220
  await using writer = await bucketStorage.createWriter(test_utils.BATCH_OPTIONS);
152
221
  await writer.markAllSnapshotDone('1/1');
153
222
  const abortController = new AbortController();
154
223
  context.onTestFinished(() => abortController.abort());
155
224
  const iter = bucketStorage
156
- .watchCheckpointChanges({ user_id: 'user1', signal: abortController.signal })[Symbol.asyncIterator]();
225
+ .watchCheckpointChanges({
226
+ user_id: 'user1',
227
+ signal: abortController.signal
228
+ })[Symbol.asyncIterator]();
157
229
  // Flush to clear state
158
230
  await writer.flush();
159
231
  writer.addCustomWriteCheckpoint({
@@ -173,7 +245,7 @@ bucket_definitions:
173
245
  }
174
246
  });
175
247
  });
176
- test('custom write checkpoints - write after checkpoint', async (context) => {
248
+ test.runIf((storageVersion ?? 1) < 3)('custom write checkpoints - write after checkpoint', async (context) => {
177
249
  await using factory = await generateStorageFactory();
178
250
  const r = await factory.configureSyncRules(updateSyncRulesFromYaml(`
179
251
  bucket_definitions:
@@ -184,13 +256,18 @@ bucket_definitions:
184
256
  storageVersion
185
257
  }));
186
258
  const bucketStorage = factory.getInstance(r.persisted_sync_rules);
187
- bucketStorage.setWriteCheckpointMode(storage.WriteCheckpointMode.CUSTOM);
259
+ bucketStorage.setWriteCheckpointMode({
260
+ mode: storage.WriteCheckpointMode.CUSTOM
261
+ });
188
262
  await using writer = await bucketStorage.createWriter(test_utils.BATCH_OPTIONS);
189
263
  await writer.markAllSnapshotDone('1/1');
190
264
  const abortController = new AbortController();
191
265
  context.onTestFinished(() => abortController.abort());
192
266
  const iter = bucketStorage
193
- .watchCheckpointChanges({ user_id: 'user1', signal: abortController.signal })[Symbol.asyncIterator]();
267
+ .watchCheckpointChanges({
268
+ user_id: 'user1',
269
+ signal: abortController.signal
270
+ })[Symbol.asyncIterator]();
194
271
  await writer.keepalive('5/0');
195
272
  const result = await iter.next();
196
273
  expect(result).toMatchObject({
@@ -237,5 +314,52 @@ bucket_definitions:
237
314
  }
238
315
  });
239
316
  });
317
+ test.runIf((storageVersion ?? 1) < 3)('custom write checkpoints - checkpoint request markers are temporary', async () => {
318
+ await using factory = await generateStorageFactory();
319
+ const r = await factory.configureSyncRules(updateSyncRulesFromYaml(`
320
+ bucket_definitions:
321
+ mybucket:
322
+ data: []
323
+ `, {
324
+ validate: false,
325
+ storageVersion
326
+ }));
327
+ const bucketStorage = factory.getInstance(r.persisted_sync_rules);
328
+ bucketStorage.setWriteCheckpointMode({
329
+ mode: storage.WriteCheckpointMode.CUSTOM
330
+ });
331
+ await using writer = await bucketStorage.createWriter(test_utils.BATCH_OPTIONS);
332
+ await writer.markAllSnapshotDone('1/1');
333
+ writer.addCustomWriteCheckpoint({
334
+ checkpoint: 5n,
335
+ user_id: 'persistent'
336
+ });
337
+ writer.addCustomWriteCheckpoint({
338
+ checkpoint: 6n,
339
+ user_id: 'temporary',
340
+ checkpoint_requested_at: new Date('2024-01-01T00:00:00.000Z')
341
+ });
342
+ await writer.flush();
343
+ await writer.keepalive('1/1');
344
+ await expect(bucketStorage.lastWriteCheckpoint({ user_id: 'persistent' })).resolves.toEqual(5n);
345
+ await expect(bucketStorage.lastWriteCheckpoint({ user_id: 'temporary' })).resolves.toEqual(6n);
346
+ await compactActive(factory, {
347
+ compactBuckets: [],
348
+ deleteCheckpointRequestsBefore: new Date(Date.now() + 1_000)
349
+ });
350
+ await expect(bucketStorage.lastWriteCheckpoint({ user_id: 'persistent' })).resolves.toEqual(5n);
351
+ await expect(bucketStorage.lastWriteCheckpoint({ user_id: 'temporary' })).resolves.toBeNull();
352
+ });
353
+ }
354
+ async function createManagedWriteCheckpoint(bucketStorage, checkpoint) {
355
+ const result = await createManagedWriteCheckpointResult(bucketStorage, checkpoint);
356
+ const writeCheckpoint = result.writeCheckpoints.get(checkpoint.user_id);
357
+ expect(writeCheckpoint).not.toBeUndefined();
358
+ return writeCheckpoint;
359
+ }
360
+ async function createManagedWriteCheckpointResult(bucketStorage, checkpoint) {
361
+ const result = await bucketStorage.createManagedWriteCheckpoints([checkpoint]);
362
+ expect(result.writeCheckpoints.get(checkpoint.user_id)).not.toBeUndefined();
363
+ return result;
240
364
  }
241
365
  //# sourceMappingURL=register-data-storage-checkpoint-tests.js.map