@powersync/service-core-tests 0.0.0-dev-20250310210938 → 0.0.0-dev-20250312112247
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/CHANGELOG.md +6 -4
- package/dist/test-utils/metrics-utils.d.ts +2 -0
- package/dist/test-utils/metrics-utils.js +13 -0
- package/dist/test-utils/metrics-utils.js.map +1 -0
- package/dist/test-utils/test-utils-index.d.ts +1 -1
- package/dist/test-utils/test-utils-index.js +1 -1
- package/dist/tests/register-data-storage-tests.js +31 -15
- package/dist/tests/register-data-storage-tests.js.map +1 -1
- package/dist/tests/register-sync-tests.js +2 -4
- package/dist/tests/register-sync-tests.js.map +1 -1
- package/package.json +4 -5
- package/src/test-utils/metrics-utils.ts +14 -0
- package/src/test-utils/test-utils-index.ts +1 -1
- package/src/tests/register-data-storage-tests.ts +31 -15
- package/src/tests/register-sync-tests.ts +2 -4
- package/tsconfig.tsbuildinfo +1 -1
- package/dist/test-utils/MetricsHelper.d.ts +0 -12
- package/dist/test-utils/MetricsHelper.js +0 -42
- package/dist/test-utils/MetricsHelper.js.map +0 -1
- package/src/test-utils/MetricsHelper.ts +0 -54
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { getUuidReplicaIdentityBson, OplogEntry, storage } from '@powersync/service-core';
|
|
2
|
-
import { RequestParameters } from '@powersync/service-sync-rules';
|
|
2
|
+
import { ParameterLookup, RequestParameters } from '@powersync/service-sync-rules';
|
|
3
3
|
import { expect, test } from 'vitest';
|
|
4
4
|
import * as test_utils from '../test-utils/test-utils-index.js';
|
|
5
5
|
|
|
@@ -65,7 +65,9 @@ bucket_definitions:
|
|
|
65
65
|
});
|
|
66
66
|
});
|
|
67
67
|
|
|
68
|
-
const parameters = await bucketStorage.getParameterSets(result!.flushed_op, [
|
|
68
|
+
const parameters = await bucketStorage.getParameterSets(result!.flushed_op, [
|
|
69
|
+
ParameterLookup.normalized('mybucket', '1', ['user1'])
|
|
70
|
+
]);
|
|
69
71
|
expect(parameters).toEqual([
|
|
70
72
|
{
|
|
71
73
|
group_id: 'group1a'
|
|
@@ -110,7 +112,9 @@ bucket_definitions:
|
|
|
110
112
|
});
|
|
111
113
|
});
|
|
112
114
|
|
|
113
|
-
const parameters = await bucketStorage.getParameterSets(result2!.flushed_op, [
|
|
115
|
+
const parameters = await bucketStorage.getParameterSets(result2!.flushed_op, [
|
|
116
|
+
ParameterLookup.normalized('mybucket', '1', ['user1'])
|
|
117
|
+
]);
|
|
114
118
|
expect(parameters).toEqual([
|
|
115
119
|
{
|
|
116
120
|
group_id: 'group2'
|
|
@@ -118,7 +122,9 @@ bucket_definitions:
|
|
|
118
122
|
]);
|
|
119
123
|
|
|
120
124
|
// Use the checkpoint to get older data if relevant
|
|
121
|
-
const parameters2 = await bucketStorage.getParameterSets(result1!.flushed_op, [
|
|
125
|
+
const parameters2 = await bucketStorage.getParameterSets(result1!.flushed_op, [
|
|
126
|
+
ParameterLookup.normalized('mybucket', '1', ['user1'])
|
|
127
|
+
]);
|
|
122
128
|
expect(parameters2).toEqual([
|
|
123
129
|
{
|
|
124
130
|
group_id: 'group1'
|
|
@@ -183,8 +189,8 @@ bucket_definitions:
|
|
|
183
189
|
// There removal operation for the association of `list2`::`todo2` should not interfere with the new
|
|
184
190
|
// association of `list1`::`todo2`
|
|
185
191
|
const parameters = await bucketStorage.getParameterSets(result2!.flushed_op, [
|
|
186
|
-
|
|
187
|
-
|
|
192
|
+
ParameterLookup.normalized('mybucket', '1', ['list1']),
|
|
193
|
+
ParameterLookup.normalized('mybucket', '1', ['list2'])
|
|
188
194
|
]);
|
|
189
195
|
|
|
190
196
|
expect(parameters.sort((a, b) => (a.todo_id as string).localeCompare(b.todo_id as string))).toEqual([
|
|
@@ -230,11 +236,17 @@ bucket_definitions:
|
|
|
230
236
|
|
|
231
237
|
const checkpoint = result!.flushed_op;
|
|
232
238
|
|
|
233
|
-
const parameters1 = await bucketStorage.getParameterSets(checkpoint, [
|
|
239
|
+
const parameters1 = await bucketStorage.getParameterSets(checkpoint, [
|
|
240
|
+
ParameterLookup.normalized('mybucket', '1', [314n, 314, 3.14])
|
|
241
|
+
]);
|
|
234
242
|
expect(parameters1).toEqual([TEST_PARAMS]);
|
|
235
|
-
const parameters2 = await bucketStorage.getParameterSets(checkpoint, [
|
|
243
|
+
const parameters2 = await bucketStorage.getParameterSets(checkpoint, [
|
|
244
|
+
ParameterLookup.normalized('mybucket', '1', [314, 314n, 3.14])
|
|
245
|
+
]);
|
|
236
246
|
expect(parameters2).toEqual([TEST_PARAMS]);
|
|
237
|
-
const parameters3 = await bucketStorage.getParameterSets(checkpoint, [
|
|
247
|
+
const parameters3 = await bucketStorage.getParameterSets(checkpoint, [
|
|
248
|
+
ParameterLookup.normalized('mybucket', '1', [314n, 314, 3])
|
|
249
|
+
]);
|
|
238
250
|
expect(parameters3).toEqual([]);
|
|
239
251
|
});
|
|
240
252
|
|
|
@@ -286,7 +298,9 @@ bucket_definitions:
|
|
|
286
298
|
|
|
287
299
|
const checkpoint = result!.flushed_op;
|
|
288
300
|
|
|
289
|
-
const parameters1 = await bucketStorage.getParameterSets(checkpoint, [
|
|
301
|
+
const parameters1 = await bucketStorage.getParameterSets(checkpoint, [
|
|
302
|
+
ParameterLookup.normalized('mybucket', '1', [1152921504606846976n])
|
|
303
|
+
]);
|
|
290
304
|
expect(parameters1).toEqual([TEST_PARAMS]);
|
|
291
305
|
});
|
|
292
306
|
|
|
@@ -387,7 +401,7 @@ bucket_definitions:
|
|
|
387
401
|
const q1 = sync_rules.bucket_descriptors[0].parameter_queries[0];
|
|
388
402
|
|
|
389
403
|
const lookups = q1.getLookups(parameters);
|
|
390
|
-
expect(lookups).toEqual([
|
|
404
|
+
expect(lookups).toEqual([ParameterLookup.normalized('by_workspace', '1', ['u1'])]);
|
|
391
405
|
|
|
392
406
|
const parameter_sets = await bucketStorage.getParameterSets(checkpoint, lookups);
|
|
393
407
|
expect(parameter_sets).toEqual([{ workspace_id: 'workspace1' }]);
|
|
@@ -457,7 +471,7 @@ bucket_definitions:
|
|
|
457
471
|
const q1 = sync_rules.bucket_descriptors[0].parameter_queries[0];
|
|
458
472
|
|
|
459
473
|
const lookups = q1.getLookups(parameters);
|
|
460
|
-
expect(lookups).toEqual([
|
|
474
|
+
expect(lookups).toEqual([ParameterLookup.normalized('by_public_workspace', '1', [])]);
|
|
461
475
|
|
|
462
476
|
const parameter_sets = await bucketStorage.getParameterSets(checkpoint, lookups);
|
|
463
477
|
parameter_sets.sort((a, b) => JSON.stringify(a).localeCompare(JSON.stringify(b)));
|
|
@@ -546,7 +560,7 @@ bucket_definitions:
|
|
|
546
560
|
// Test intermediate values - could be moved to sync_rules.test.ts
|
|
547
561
|
const q1 = sync_rules.bucket_descriptors[0].parameter_queries[0];
|
|
548
562
|
const lookups1 = q1.getLookups(parameters);
|
|
549
|
-
expect(lookups1).toEqual([
|
|
563
|
+
expect(lookups1).toEqual([ParameterLookup.normalized('by_workspace', '1', [])]);
|
|
550
564
|
|
|
551
565
|
const parameter_sets1 = await bucketStorage.getParameterSets(checkpoint, lookups1);
|
|
552
566
|
parameter_sets1.sort((a, b) => JSON.stringify(a).localeCompare(JSON.stringify(b)));
|
|
@@ -554,7 +568,7 @@ bucket_definitions:
|
|
|
554
568
|
|
|
555
569
|
const q2 = sync_rules.bucket_descriptors[0].parameter_queries[1];
|
|
556
570
|
const lookups2 = q2.getLookups(parameters);
|
|
557
|
-
expect(lookups2).toEqual([
|
|
571
|
+
expect(lookups2).toEqual([ParameterLookup.normalized('by_workspace', '2', ['u1'])]);
|
|
558
572
|
|
|
559
573
|
const parameter_sets2 = await bucketStorage.getParameterSets(checkpoint, lookups2);
|
|
560
574
|
parameter_sets2.sort((a, b) => JSON.stringify(a).localeCompare(JSON.stringify(b)));
|
|
@@ -861,7 +875,9 @@ bucket_definitions:
|
|
|
861
875
|
|
|
862
876
|
const { checkpoint } = await bucketStorage.getCheckpoint();
|
|
863
877
|
|
|
864
|
-
const parameters = await bucketStorage.getParameterSets(checkpoint, [
|
|
878
|
+
const parameters = await bucketStorage.getParameterSets(checkpoint, [
|
|
879
|
+
ParameterLookup.normalized('mybucket', '1', ['user1'])
|
|
880
|
+
]);
|
|
865
881
|
expect(parameters).toEqual([]);
|
|
866
882
|
});
|
|
867
883
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { storage, sync, utils } from '@powersync/service-core';
|
|
2
2
|
import { JSONBig } from '@powersync/service-jsonbig';
|
|
3
3
|
import { RequestParameters } from '@powersync/service-sync-rules';
|
|
4
4
|
import path from 'path';
|
|
@@ -6,7 +6,6 @@ import * as timers from 'timers/promises';
|
|
|
6
6
|
import { fileURLToPath } from 'url';
|
|
7
7
|
import { expect, test } from 'vitest';
|
|
8
8
|
import * as test_utils from '../test-utils/test-utils-index.js';
|
|
9
|
-
import { METRICS_HELPER } from '../test-utils/test-utils-index.js';
|
|
10
9
|
|
|
11
10
|
const __filename = fileURLToPath(import.meta.url);
|
|
12
11
|
const __dirname = path.dirname(__filename);
|
|
@@ -31,8 +30,7 @@ export const SYNC_SNAPSHOT_PATH = path.resolve(__dirname, '../__snapshots/sync.t
|
|
|
31
30
|
* ```
|
|
32
31
|
*/
|
|
33
32
|
export function registerSyncTests(factory: storage.TestStorageFactory) {
|
|
34
|
-
|
|
35
|
-
const tracker = new sync.RequestTracker(METRICS_HELPER.metricsEngine);
|
|
33
|
+
const tracker = new sync.RequestTracker();
|
|
36
34
|
const syncContext = new sync.SyncContext({
|
|
37
35
|
maxBuckets: 10,
|
|
38
36
|
maxParameterQueryResults: 10,
|