@powersync/service-core-tests 0.15.3 → 0.15.5
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 +38 -0
- package/dist/test-utils/MetricsHelper.js +1 -1
- package/dist/test-utils/MetricsHelper.js.map +1 -1
- package/dist/test-utils/StorageDataHelpers.d.ts +8 -0
- package/dist/test-utils/StorageDataHelpers.js +33 -0
- package/dist/test-utils/StorageDataHelpers.js.map +1 -0
- package/dist/test-utils/general-utils.d.ts +1 -1
- package/dist/test-utils/general-utils.js +1 -1
- package/dist/test-utils/test-utils-index.d.ts +1 -0
- package/dist/test-utils/test-utils-index.js +1 -0
- package/dist/test-utils/test-utils-index.js.map +1 -1
- package/dist/tests/register-data-storage-data-tests.js +18 -0
- package/dist/tests/register-data-storage-data-tests.js.map +1 -1
- package/dist/tests/register-data-storage-parameter-tests.js +434 -62
- package/dist/tests/register-data-storage-parameter-tests.js.map +1 -1
- package/dist/tests/register-parameter-compacting-tests.js +8 -8
- package/dist/tests/register-parameter-compacting-tests.js.map +1 -1
- package/dist/tests/register-sync-tests.js +66 -0
- package/dist/tests/register-sync-tests.js.map +1 -1
- package/dist/tests/tests-index.d.ts +4 -4
- package/dist/tests/tests-index.js +4 -4
- package/dist/tests/tests-index.js.map +1 -1
- package/package.json +6 -6
- package/src/test-utils/MetricsHelper.ts +1 -1
- package/src/test-utils/StorageDataHelpers.ts +44 -0
- package/src/test-utils/general-utils.ts +1 -1
- package/src/test-utils/test-utils-index.ts +1 -0
- package/src/tests/register-data-storage-data-tests.ts +22 -0
- package/src/tests/register-data-storage-parameter-tests.ts +517 -64
- package/src/tests/register-parameter-compacting-tests.ts +8 -9
- package/src/tests/register-sync-tests.ts +74 -0
- package/src/tests/tests-index.ts +4 -4
- package/tsconfig.tsbuildinfo +1 -1
|
@@ -2,7 +2,6 @@ import { storage, updateSyncRulesFromYaml } from '@powersync/service-core';
|
|
|
2
2
|
import { ScopedParameterLookup } 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
|
-
import { parameterLookupScope } from './util.js';
|
|
6
5
|
|
|
7
6
|
export function registerParameterCompactTests(config: storage.TestStorageConfig) {
|
|
8
7
|
const generateStorageFactory = config.factory;
|
|
@@ -45,8 +44,8 @@ bucket_definitions:
|
|
|
45
44
|
const lookup = ScopedParameterLookup.direct({ lookupName: 'test', queryId: '1', source: null as any }, ['t1']);
|
|
46
45
|
|
|
47
46
|
const checkpoint1 = await bucketStorage.getCheckpoint();
|
|
48
|
-
const parameters1 = await checkpoint1.getParameterSets([lookup]);
|
|
49
|
-
expect(parameters1).toEqual([{ id: 't1' }]);
|
|
47
|
+
const parameters1 = await checkpoint1.getParameterSets([lookup], 1000);
|
|
48
|
+
expect(parameters1).toEqual([{ lookup, rows: [{ id: 't1' }] }]);
|
|
50
49
|
|
|
51
50
|
await writer.save({
|
|
52
51
|
sourceTable: testTable,
|
|
@@ -71,16 +70,16 @@ bucket_definitions:
|
|
|
71
70
|
});
|
|
72
71
|
await writer.commit('1/2');
|
|
73
72
|
const checkpoint2 = await bucketStorage.getCheckpoint();
|
|
74
|
-
const parameters2 = await checkpoint2.getParameterSets([lookup]);
|
|
73
|
+
const parameters2 = await checkpoint2.getParameterSets([lookup], 1000);
|
|
75
74
|
expect(parameters2).toEqual([]);
|
|
76
75
|
|
|
77
76
|
const statsBefore = await bucketStorage.factory.getStorageMetrics();
|
|
78
77
|
await bucketStorage.compact({ compactParameterData: true });
|
|
79
78
|
|
|
80
79
|
// Check consistency
|
|
81
|
-
const parameters1b = await checkpoint1.getParameterSets([lookup]);
|
|
82
|
-
const parameters2b = await checkpoint2.getParameterSets([lookup]);
|
|
83
|
-
expect(parameters1b).toEqual([{ id: 't1' }]);
|
|
80
|
+
const parameters1b = await checkpoint1.getParameterSets([lookup], 1000);
|
|
81
|
+
const parameters2b = await checkpoint2.getParameterSets([lookup], 1000);
|
|
82
|
+
expect(parameters1b).toEqual([{ lookup, rows: [{ id: 't1' }] }]);
|
|
84
83
|
expect(parameters2b).toEqual([]);
|
|
85
84
|
|
|
86
85
|
// Check storage size
|
|
@@ -151,14 +150,14 @@ bucket_definitions:
|
|
|
151
150
|
const lookup = ScopedParameterLookup.direct({ lookupName: 'test', queryId: '1', source: null as any }, ['u1']);
|
|
152
151
|
|
|
153
152
|
const checkpoint1 = await bucketStorage.getCheckpoint();
|
|
154
|
-
const parameters1 = await checkpoint1.getParameterSets([lookup]);
|
|
153
|
+
const parameters1 = await checkpoint1.getParameterSets([lookup], 1000);
|
|
155
154
|
expect(parameters1).toEqual([]);
|
|
156
155
|
|
|
157
156
|
const statsBefore = await bucketStorage.factory.getStorageMetrics();
|
|
158
157
|
await bucketStorage.compact({ compactParameterData: true, compactParameterCacheLimit: cacheLimit });
|
|
159
158
|
|
|
160
159
|
// Check consistency
|
|
161
|
-
const parameters1b = await checkpoint1.getParameterSets([lookup]);
|
|
160
|
+
const parameters1b = await checkpoint1.getParameterSets([lookup], 1000);
|
|
162
161
|
expect(parameters1b).toEqual([]);
|
|
163
162
|
|
|
164
163
|
// Check storage size
|
|
@@ -177,6 +177,80 @@ bucket_definitions:
|
|
|
177
177
|
expect(lines).toMatchSnapshot();
|
|
178
178
|
});
|
|
179
179
|
|
|
180
|
+
test('can override priority when subscribing to stream', async () => {
|
|
181
|
+
await using f = await factory();
|
|
182
|
+
|
|
183
|
+
const syncRules = await updateSyncRules(f, {
|
|
184
|
+
content: `
|
|
185
|
+
config:
|
|
186
|
+
edition: 3
|
|
187
|
+
|
|
188
|
+
streams:
|
|
189
|
+
todos:
|
|
190
|
+
query: SELECT * FROM test WHERE id IN subscription.parameter('test_ids')
|
|
191
|
+
`
|
|
192
|
+
});
|
|
193
|
+
|
|
194
|
+
const bucketStorage = f.getInstance(syncRules);
|
|
195
|
+
await using writer = await bucketStorage.createWriter(test_utils.BATCH_OPTIONS);
|
|
196
|
+
const testTable = await test_utils.resolveTestTable(writer, 'test', ['id'], config);
|
|
197
|
+
|
|
198
|
+
await writer.markAllSnapshotDone('0/1');
|
|
199
|
+
await writer.save({
|
|
200
|
+
sourceTable: testTable,
|
|
201
|
+
tag: storage.SaveOperationTag.INSERT,
|
|
202
|
+
after: {
|
|
203
|
+
id: 'a',
|
|
204
|
+
description: 'Test 1'
|
|
205
|
+
},
|
|
206
|
+
afterReplicaId: 't1'
|
|
207
|
+
});
|
|
208
|
+
|
|
209
|
+
await writer.save({
|
|
210
|
+
sourceTable: testTable,
|
|
211
|
+
tag: storage.SaveOperationTag.INSERT,
|
|
212
|
+
after: {
|
|
213
|
+
id: 'b',
|
|
214
|
+
description: 'Test 2'
|
|
215
|
+
},
|
|
216
|
+
afterReplicaId: 'earlier'
|
|
217
|
+
});
|
|
218
|
+
|
|
219
|
+
await writer.commit('0/1');
|
|
220
|
+
|
|
221
|
+
const stream = sync.streamResponse({
|
|
222
|
+
syncContext,
|
|
223
|
+
bucketStorage,
|
|
224
|
+
syncRules: bucketStorage.getParsedSyncRules(test_utils.PARSE_OPTIONS),
|
|
225
|
+
params: {
|
|
226
|
+
buckets: [],
|
|
227
|
+
include_checksum: true,
|
|
228
|
+
raw_data: true,
|
|
229
|
+
streams: {
|
|
230
|
+
include_defaults: true,
|
|
231
|
+
subscriptions: [
|
|
232
|
+
{
|
|
233
|
+
stream: 'todos',
|
|
234
|
+
parameters: { test_ids: ['a'] },
|
|
235
|
+
override_priority: 0
|
|
236
|
+
},
|
|
237
|
+
{
|
|
238
|
+
stream: 'todos',
|
|
239
|
+
parameters: { test_ids: ['a', 'b'] },
|
|
240
|
+
override_priority: null
|
|
241
|
+
}
|
|
242
|
+
]
|
|
243
|
+
}
|
|
244
|
+
},
|
|
245
|
+
tracker,
|
|
246
|
+
token: new JwtPayload({ sub: '', exp: Date.now() / 1000 + 10 }),
|
|
247
|
+
isEncodingAsBson: false
|
|
248
|
+
});
|
|
249
|
+
|
|
250
|
+
const lines = await consumeCheckpointLines(stream);
|
|
251
|
+
expect(lines).toMatchSnapshot();
|
|
252
|
+
});
|
|
253
|
+
|
|
180
254
|
test('sync interrupts low-priority buckets on new checkpoints', async () => {
|
|
181
255
|
await using f = await factory();
|
|
182
256
|
|
package/src/tests/tests-index.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
export * from './register-bucket-validation-tests.js';
|
|
2
2
|
export * from './register-compacting-tests.js';
|
|
3
|
-
export * from './register-parameter-compacting-tests.js';
|
|
4
|
-
export * from './register-data-storage-parameter-tests.js';
|
|
5
|
-
export * from './register-data-storage-data-tests.js';
|
|
6
3
|
export * from './register-data-storage-checkpoint-tests.js';
|
|
4
|
+
export * from './register-data-storage-data-tests.js';
|
|
5
|
+
export * from './register-data-storage-parameter-tests.js';
|
|
7
6
|
export * from './register-migration-tests.js';
|
|
8
|
-
export * from './register-
|
|
7
|
+
export * from './register-parameter-compacting-tests.js';
|
|
9
8
|
export * from './register-report-tests.js';
|
|
9
|
+
export * from './register-sync-tests.js';
|
|
10
10
|
export * from './util.js';
|