@elaraai/e3-api-tests 1.0.78 → 1.0.80
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/README.md +1 -1
- package/dist/src/fixtures.d.ts +77 -4
- package/dist/src/fixtures.d.ts.map +1 -1
- package/dist/src/fixtures.js +114 -9
- package/dist/src/fixtures.js.map +1 -1
- package/dist/src/index.d.ts +2 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +6 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/suites/cli.d.ts.map +1 -1
- package/dist/src/suites/cli.js +55 -3
- package/dist/src/suites/cli.js.map +1 -1
- package/dist/src/suites/dataflow.js +27 -27
- package/dist/src/suites/dataflow.js.map +1 -1
- package/dist/src/suites/dataset-pages.d.ts.map +1 -1
- package/dist/src/suites/dataset-pages.js +115 -30
- package/dist/src/suites/dataset-pages.js.map +1 -1
- package/dist/src/suites/dataset-transfer.d.ts.map +1 -1
- package/dist/src/suites/dataset-transfer.js +117 -29
- package/dist/src/suites/dataset-transfer.js.map +1 -1
- package/dist/src/suites/datasets.d.ts.map +1 -1
- package/dist/src/suites/datasets.js +0 -20
- package/dist/src/suites/datasets.js.map +1 -1
- package/dist/src/suites/functions.d.ts.map +1 -1
- package/dist/src/suites/functions.js +18 -3
- package/dist/src/suites/functions.js.map +1 -1
- package/dist/src/suites/package-transfer.d.ts.map +1 -1
- package/dist/src/suites/package-transfer.js +28 -1
- package/dist/src/suites/package-transfer.js.map +1 -1
- package/dist/src/suites/platform.d.ts.map +1 -1
- package/dist/src/suites/platform.js +6 -6
- package/dist/src/suites/platform.js.map +1 -1
- package/dist/src/suites/record-deploy.d.ts +8 -0
- package/dist/src/suites/record-deploy.d.ts.map +1 -0
- package/dist/src/suites/record-deploy.js +104 -0
- package/dist/src/suites/record-deploy.js.map +1 -0
- package/dist/src/suites/records-keyed.d.ts +8 -0
- package/dist/src/suites/records-keyed.d.ts.map +1 -0
- package/dist/src/suites/records-keyed.js +140 -0
- package/dist/src/suites/records-keyed.js.map +1 -0
- package/dist/src/suites/repository.d.ts.map +1 -1
- package/dist/src/suites/repository.js +62 -6
- package/dist/src/suites/repository.js.map +1 -1
- package/dist/src/suites/transfer.d.ts.map +1 -1
- package/dist/src/suites/transfer.js +6 -170
- package/dist/src/suites/transfer.js.map +1 -1
- package/dist/src/suites/workspaces.d.ts.map +1 -1
- package/dist/src/suites/workspaces.js +10 -11
- package/dist/src/suites/workspaces.js.map +1 -1
- package/package.json +10 -10
|
@@ -11,7 +11,7 @@ import { describe, it } from 'node:test';
|
|
|
11
11
|
import assert from 'node:assert/strict';
|
|
12
12
|
import { readFileSync } from 'node:fs';
|
|
13
13
|
import { IntegerType, StringType, encodeBeast2For, decodeBeast2For, variant } from '@elaraai/east';
|
|
14
|
-
import { packageImport, workspaceCreate, workspaceDeploy, workspaceStatus,
|
|
14
|
+
import { packageImport, workspaceCreate, workspaceDeploy, workspaceStatus, dataflowExecuteLaunch, dataflowExecute, dataflowExecutePoll, dataflowCancel, dataflowGraph, datasetSet, datasetGet, taskLogs, taskExecutionList, ApiError, } from '@elaraai/e3-api-client';
|
|
15
15
|
import { createPackageZip, createDiamondPackageZip, createFailingPackageZip, createSlowPackageZip, createParallelMixedPackageZip, createFailingDiamondPackageZip, createWideParallelPackageZip, createSlowDiamondPackageZip, } from '../fixtures.js';
|
|
16
16
|
import { assertDataflowSucceeded } from '../assertions.js';
|
|
17
17
|
import { waitFor } from '../cli.js';
|
|
@@ -43,7 +43,7 @@ function withDeployed(setup, createZip, pkgName, wsName) {
|
|
|
43
43
|
async function waitForRunning(baseUrl, repoName, workspace, opts) {
|
|
44
44
|
await waitFor(async () => {
|
|
45
45
|
try {
|
|
46
|
-
const state = await
|
|
46
|
+
const state = await dataflowExecutePoll(baseUrl, repoName, workspace, {}, opts);
|
|
47
47
|
return state.status.type === 'running';
|
|
48
48
|
}
|
|
49
49
|
catch {
|
|
@@ -131,11 +131,11 @@ export function dataflowTests(setup) {
|
|
|
131
131
|
const newest = every.map(e => e.startedAt).sort().at(-1);
|
|
132
132
|
assert.strictEqual(latest[0].startedAt, newest, 'the default item is the newest attempt');
|
|
133
133
|
});
|
|
134
|
-
it('
|
|
134
|
+
it('dataflowExecuteLaunch triggers execution (non-blocking)', async (t) => {
|
|
135
135
|
const ctx = await withSimpleExec(t);
|
|
136
136
|
const opts = await ctx.opts();
|
|
137
137
|
// Should return immediately
|
|
138
|
-
await
|
|
138
|
+
await dataflowExecuteLaunch(ctx.config.baseUrl, ctx.repoName, 'exec-ws', { force: true }, opts);
|
|
139
139
|
// Poll until execution completes
|
|
140
140
|
const maxWait = 60000;
|
|
141
141
|
const startTime = Date.now();
|
|
@@ -152,16 +152,16 @@ export function dataflowTests(setup) {
|
|
|
152
152
|
// Verify execution completed
|
|
153
153
|
assert.strictEqual(status.tasks[0].status.type, 'up-to-date');
|
|
154
154
|
});
|
|
155
|
-
it('
|
|
155
|
+
it('dataflowExecutePoll returns execution state', async (t) => {
|
|
156
156
|
const ctx = await withSimpleExec(t);
|
|
157
157
|
const opts = await ctx.opts();
|
|
158
158
|
// Start execution
|
|
159
|
-
await
|
|
159
|
+
await dataflowExecuteLaunch(ctx.config.baseUrl, ctx.repoName, 'exec-ws', { force: true }, opts);
|
|
160
160
|
// Poll execution state until complete
|
|
161
161
|
const maxWait = 60000;
|
|
162
162
|
const startTime = Date.now();
|
|
163
163
|
while (Date.now() - startTime < maxWait) {
|
|
164
|
-
const state = await
|
|
164
|
+
const state = await dataflowExecutePoll(ctx.config.baseUrl, ctx.repoName, 'exec-ws', {}, opts);
|
|
165
165
|
if (state.status.type === 'completed') {
|
|
166
166
|
assert.ok(state.summary, 'completed execution should have summary');
|
|
167
167
|
assert.strictEqual(state.summary.type, 'some');
|
|
@@ -233,13 +233,13 @@ export function dataflowTests(setup) {
|
|
|
233
233
|
const ctx = await withDiamond(t);
|
|
234
234
|
const opts = await ctx.opts();
|
|
235
235
|
// Start execution
|
|
236
|
-
await
|
|
236
|
+
await dataflowExecuteLaunch(ctx.config.baseUrl, ctx.repoName, 'diamond-ws', { force: true }, opts);
|
|
237
237
|
// Poll and collect events
|
|
238
238
|
const events = [];
|
|
239
239
|
const maxWait = 60000;
|
|
240
240
|
const startTime = Date.now();
|
|
241
241
|
while (Date.now() - startTime < maxWait) {
|
|
242
|
-
const state = await
|
|
242
|
+
const state = await dataflowExecutePoll(ctx.config.baseUrl, ctx.repoName, 'diamond-ws', { offset: events.length }, opts);
|
|
243
243
|
// Collect new events
|
|
244
244
|
events.push(...state.events);
|
|
245
245
|
if (state.status.type === 'completed' || state.status.type === 'failed') {
|
|
@@ -267,16 +267,16 @@ export function dataflowTests(setup) {
|
|
|
267
267
|
assert.strictEqual(result.tasks[0].name, 'failing');
|
|
268
268
|
assert.strictEqual(result.tasks[0].state.type, 'failed');
|
|
269
269
|
});
|
|
270
|
-
it('
|
|
270
|
+
it('dataflowExecutePoll shows failed status after task failure', async (t) => {
|
|
271
271
|
const ctx = await withFailing(t);
|
|
272
272
|
const opts = await ctx.opts();
|
|
273
273
|
// Start execution
|
|
274
|
-
await
|
|
274
|
+
await dataflowExecuteLaunch(ctx.config.baseUrl, ctx.repoName, 'fail-ws', { force: true }, opts);
|
|
275
275
|
// Poll until execution completes
|
|
276
276
|
const maxWait = 60000;
|
|
277
277
|
const startTime = Date.now();
|
|
278
278
|
while (Date.now() - startTime < maxWait) {
|
|
279
|
-
const state = await
|
|
279
|
+
const state = await dataflowExecutePoll(ctx.config.baseUrl, ctx.repoName, 'fail-ws', {}, opts);
|
|
280
280
|
if (state.status.type === 'failed') {
|
|
281
281
|
// Verify we have summary with failure count
|
|
282
282
|
assert.strictEqual(state.summary.type, 'some');
|
|
@@ -401,17 +401,17 @@ export function dataflowTests(setup) {
|
|
|
401
401
|
// Concurrent execution tests must remain serial within their describe
|
|
402
402
|
// because they test locking behavior with timing-sensitive operations
|
|
403
403
|
describe('concurrent execution', () => {
|
|
404
|
-
it('rejects second
|
|
404
|
+
it('rejects second dataflowExecuteLaunch while execution is running', async (t) => {
|
|
405
405
|
const ctx = await withSlow(t);
|
|
406
406
|
const opts = await ctx.opts();
|
|
407
407
|
// Start first execution (non-blocking)
|
|
408
|
-
await
|
|
408
|
+
await dataflowExecuteLaunch(ctx.config.baseUrl, ctx.repoName, 'slow-ws', { force: true }, opts);
|
|
409
409
|
// Wait until the execution is actually running (holds the lock)
|
|
410
410
|
await waitForRunning(ctx.config.baseUrl, ctx.repoName, 'slow-ws', opts);
|
|
411
411
|
// Try to start second execution - should fail with lock error
|
|
412
412
|
try {
|
|
413
|
-
await
|
|
414
|
-
assert.fail('Second
|
|
413
|
+
await dataflowExecuteLaunch(ctx.config.baseUrl, ctx.repoName, 'slow-ws', { force: true }, opts);
|
|
414
|
+
assert.fail('Second dataflowExecuteLaunch should have thrown an error');
|
|
415
415
|
}
|
|
416
416
|
catch (err) {
|
|
417
417
|
// Should get a lock error
|
|
@@ -424,7 +424,7 @@ export function dataflowTests(setup) {
|
|
|
424
424
|
const ctx = await withSlow(t);
|
|
425
425
|
const opts = await ctx.opts();
|
|
426
426
|
// Start first execution (non-blocking)
|
|
427
|
-
await
|
|
427
|
+
await dataflowExecuteLaunch(ctx.config.baseUrl, ctx.repoName, 'slow-ws', { force: true }, opts);
|
|
428
428
|
// Wait until the execution is actually running (holds the lock)
|
|
429
429
|
await waitForRunning(ctx.config.baseUrl, ctx.repoName, 'slow-ws', opts);
|
|
430
430
|
// Try blocking execute - should fail with lock error
|
|
@@ -442,7 +442,7 @@ export function dataflowTests(setup) {
|
|
|
442
442
|
const ctx = await withSlow(t);
|
|
443
443
|
const opts = await ctx.opts();
|
|
444
444
|
// Start slow execution
|
|
445
|
-
await
|
|
445
|
+
await dataflowExecuteLaunch(ctx.config.baseUrl, ctx.repoName, 'slow-ws', { force: true }, opts);
|
|
446
446
|
// Wait until the execution is actually running
|
|
447
447
|
await waitForRunning(ctx.config.baseUrl, ctx.repoName, 'slow-ws', opts);
|
|
448
448
|
// Cancel it
|
|
@@ -455,7 +455,7 @@ export function dataflowTests(setup) {
|
|
|
455
455
|
// honoured.
|
|
456
456
|
let finalStatus = '';
|
|
457
457
|
await waitFor(async () => {
|
|
458
|
-
const state = await
|
|
458
|
+
const state = await dataflowExecutePoll(ctx.config.baseUrl, ctx.repoName, 'slow-ws', {}, opts);
|
|
459
459
|
finalStatus = state.status.type;
|
|
460
460
|
return finalStatus !== 'running';
|
|
461
461
|
}, 60000);
|
|
@@ -475,13 +475,13 @@ export function dataflowTests(setup) {
|
|
|
475
475
|
}
|
|
476
476
|
});
|
|
477
477
|
});
|
|
478
|
-
// Concurrent set during execution - tests that datasetSet is not blocked by
|
|
478
|
+
// Concurrent set during execution - tests that datasetSet is not blocked by dataflowExecuteLaunch
|
|
479
479
|
describe('concurrent set during execution', () => {
|
|
480
480
|
it('datasetSet succeeds while dataflow is running', async (t) => {
|
|
481
481
|
const ctx = await withSlow(t);
|
|
482
482
|
const opts = await ctx.opts();
|
|
483
483
|
// Start slow execution (30s sleep task)
|
|
484
|
-
await
|
|
484
|
+
await dataflowExecuteLaunch(ctx.config.baseUrl, ctx.repoName, 'slow-ws', { force: true }, opts);
|
|
485
485
|
// Wait until the execution is actually running (holds the lock)
|
|
486
486
|
await waitForRunning(ctx.config.baseUrl, ctx.repoName, 'slow-ws', opts);
|
|
487
487
|
// datasetSet should succeed concurrently — not blocked by the dataflow lock
|
|
@@ -533,7 +533,7 @@ export function dataflowTests(setup) {
|
|
|
533
533
|
const inputPath = [variant('field', 'inputs'), variant('field', 'x')];
|
|
534
534
|
const mergePath = [variant('field', 'tasks'), variant('field', 'merge'), variant('field', 'output')];
|
|
535
535
|
// Start execution (non-blocking) — x defaults to 1
|
|
536
|
-
await
|
|
536
|
+
await dataflowExecuteLaunch(ctx.config.baseUrl, ctx.repoName, 'sdiamond-ws', { force: true }, opts);
|
|
537
537
|
// Wait for the test's TRUE precondition before changing the input:
|
|
538
538
|
// at least one task has actually STARTED (a `start` event exists),
|
|
539
539
|
// not merely "the execution is running" — on slow runners (Windows
|
|
@@ -541,7 +541,7 @@ export function dataflowTests(setup) {
|
|
|
541
541
|
// that lands before any task starts isn't a mid-flight change at
|
|
542
542
|
// all. The 3s task sleeps bound how late the set can land.
|
|
543
543
|
await waitFor(async () => {
|
|
544
|
-
const state = await
|
|
544
|
+
const state = await dataflowExecutePoll(ctx.config.baseUrl, ctx.repoName, 'sdiamond-ws', {}, opts);
|
|
545
545
|
return state.events.some((e) => e.type === 'start');
|
|
546
546
|
}, 60000);
|
|
547
547
|
await datasetSet(ctx.config.baseUrl, ctx.repoName, 'sdiamond-ws', inputPath, encode(19n), opts);
|
|
@@ -552,7 +552,7 @@ export function dataflowTests(setup) {
|
|
|
552
552
|
// transient `dataset_unassigned` instead of reading once and racing it.
|
|
553
553
|
let mergeValue;
|
|
554
554
|
await waitFor(async () => {
|
|
555
|
-
const state = await
|
|
555
|
+
const state = await dataflowExecutePoll(ctx.config.baseUrl, ctx.repoName, 'sdiamond-ws', {}, opts);
|
|
556
556
|
if (state.status.type !== 'completed' && state.status.type !== 'failed' && state.status.type !== 'aborted') {
|
|
557
557
|
return false;
|
|
558
558
|
}
|
|
@@ -746,17 +746,17 @@ export function dataflowTests(setup) {
|
|
|
746
746
|
});
|
|
747
747
|
});
|
|
748
748
|
describe('event pagination', { concurrency: false }, () => {
|
|
749
|
-
it('
|
|
749
|
+
it('dataflowExecutePoll supports event offset and limit', async (t) => {
|
|
750
750
|
const ctx = await withEvtPag(t);
|
|
751
751
|
const opts = await ctx.opts();
|
|
752
752
|
// Execute and wait for completion
|
|
753
753
|
await dataflowExecute(ctx.config.baseUrl, ctx.repoName, 'evtpag-ws', { force: true }, opts);
|
|
754
754
|
// Get first event only
|
|
755
|
-
const page1 = await
|
|
755
|
+
const page1 = await dataflowExecutePoll(ctx.config.baseUrl, ctx.repoName, 'evtpag-ws', { offset: 0, limit: 1 }, opts);
|
|
756
756
|
assert.strictEqual(page1.events.length, 1, 'Should return exactly 1 event');
|
|
757
757
|
assert.ok(page1.totalEvents >= 3n, `Expected at least 3 total events, got ${page1.totalEvents}`);
|
|
758
758
|
// Get second event
|
|
759
|
-
const page2 = await
|
|
759
|
+
const page2 = await dataflowExecutePoll(ctx.config.baseUrl, ctx.repoName, 'evtpag-ws', { offset: 1, limit: 1 }, opts);
|
|
760
760
|
assert.strictEqual(page2.events.length, 1, 'Should return exactly 1 event');
|
|
761
761
|
// Events should be different
|
|
762
762
|
const event1 = page1.events[0];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dataflow.js","sourceRoot":"","sources":["../../../src/suites/dataflow.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"dataflow.js","sourceRoot":"","sources":["../../../src/suites/dataflow.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dataset-pages.d.ts","sourceRoot":"","sources":["../../../src/suites/dataset-pages.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"dataset-pages.d.ts","sourceRoot":"","sources":["../../../src/suites/dataset-pages.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAyCH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AA0B7C;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,SAAS,CAAC,WAAW,CAAC,GAAG,IAAI,CAwSpE"}
|
|
@@ -7,14 +7,17 @@
|
|
|
7
7
|
*
|
|
8
8
|
* Element windows are exact for every collection kind — Array in stream
|
|
9
9
|
* order, Set/Dict in the canonical East key order, which v5 blobs hold on
|
|
10
|
-
* the wire (sorted, disjoint segments). Collection datasets are stored
|
|
11
|
-
*
|
|
10
|
+
* the wire (sorted, disjoint segments). Collection datasets are stored as
|
|
11
|
+
* segment objects under a manifest at every size, so segment addressing
|
|
12
|
+
* always works — and, for a Set or Dict, the boundaries are a pure function
|
|
13
|
+
* of the value, which is what the layout tests at the end of this suite hold
|
|
14
|
+
* the server to.
|
|
12
15
|
*/
|
|
13
16
|
import { describe, it } from 'node:test';
|
|
14
17
|
import assert from 'node:assert/strict';
|
|
15
18
|
import { readFileSync } from 'node:fs';
|
|
16
|
-
import { ArrayType, DictType, IntegerType, StringType, StructType, decodeBeast2For, encodeBeast2For, equalFor, variant, } from '@elaraai/east';
|
|
17
|
-
import { ApiError, packageImport, workspaceCreate, workspaceDeploy, datasetGetPage, datasetGetStatus, datasetSet, } from '@elaraai/e3-api-client';
|
|
19
|
+
import { ArrayType, DictType, IntegerType, SEGMENT_MAX_COUNT, StringType, StructType, decodeBeast2For, encodeBeast2For, equalFor, variant, } from '@elaraai/east';
|
|
20
|
+
import { ApiError, packageImport, workspaceCreate, workspaceDeploy, datasetGet, datasetGetPage, datasetGetStatus, datasetSet, } from '@elaraai/e3-api-client';
|
|
18
21
|
import { createTablePackageZip } from '../fixtures.js';
|
|
19
22
|
const RowType = StructType({ id: IntegerType, name: StringType });
|
|
20
23
|
const RowsType = ArrayType(RowType);
|
|
@@ -55,33 +58,38 @@ export function datasetPageTests(setup) {
|
|
|
55
58
|
it('element windows over a large array are exact across segment boundaries', async (t) => {
|
|
56
59
|
const ctx = await withTablePackage(t);
|
|
57
60
|
const opts = await ctx.opts();
|
|
58
|
-
//
|
|
59
|
-
|
|
61
|
+
// More rows than a segment may hold, so the value spans segments
|
|
62
|
+
// wherever the cut rule places them.
|
|
63
|
+
const rows = makeRows(SEGMENT_MAX_COUNT + 1000);
|
|
60
64
|
await datasetSet(ctx.config.baseUrl, ctx.repoName, 'pages-ws', rowsPath, encodeBeast2For(RowsType)(rows), opts);
|
|
61
|
-
// A window spanning the
|
|
62
|
-
const
|
|
63
|
-
|
|
65
|
+
// A window spanning the boundary between segments 0 and 1.
|
|
66
|
+
const first = await datasetGetPage(ctx.config.baseUrl, ctx.repoName, 'pages-ws', rowsPath, { segment: 0 }, opts);
|
|
67
|
+
const from = first.count - 100;
|
|
68
|
+
const page = await datasetGetPage(ctx.config.baseUrl, ctx.repoName, 'pages-ws', rowsPath, { offset: from, limit: 200 }, opts);
|
|
69
|
+
assert.equal(page.totalElements, rows.length);
|
|
64
70
|
assert.equal(page.totalExact, true);
|
|
65
|
-
assert.equal(page.offset,
|
|
71
|
+
assert.equal(page.offset, from);
|
|
66
72
|
assert.equal(page.count, 200);
|
|
67
73
|
assert.ok(page.segmentCount >= 2, `large array should be stored segmented, got ${page.segmentCount} segments`);
|
|
68
74
|
assert.ok(page.hash.length === 64, 'source content hash rides on the page');
|
|
69
75
|
const decoded = decodeBeast2For(RowsType)(page.data);
|
|
70
|
-
assert.ok(equalFor(RowsType)(decoded, rows.slice(
|
|
76
|
+
assert.ok(equalFor(RowsType)(decoded, rows.slice(from, from + 200)), 'page equals the expected slice');
|
|
71
77
|
// Tail clamp: a window past the end returns the available tail.
|
|
72
|
-
const tail = await datasetGetPage(ctx.config.baseUrl, ctx.repoName, 'pages-ws', rowsPath, { offset:
|
|
78
|
+
const tail = await datasetGetPage(ctx.config.baseUrl, ctx.repoName, 'pages-ws', rowsPath, { offset: rows.length - 100, limit: 1000 }, opts);
|
|
73
79
|
assert.equal(tail.count, 100);
|
|
74
|
-
assert.ok(equalFor(RowsType)(decodeBeast2For(RowsType)(tail.data), rows.slice(
|
|
80
|
+
assert.ok(equalFor(RowsType)(decodeBeast2For(RowsType)(tail.data), rows.slice(rows.length - 100)), 'tail page equals the expected slice');
|
|
75
81
|
});
|
|
76
|
-
it('segment windows return one
|
|
82
|
+
it('segment windows return one segment of an indexed blob', async (t) => {
|
|
77
83
|
const ctx = await withTablePackage(t);
|
|
78
84
|
const opts = await ctx.opts();
|
|
79
|
-
const rows = makeRows(
|
|
85
|
+
const rows = makeRows(SEGMENT_MAX_COUNT + 1000);
|
|
80
86
|
await datasetSet(ctx.config.baseUrl, ctx.repoName, 'pages-ws', rowsPath, encodeBeast2For(RowsType)(rows), opts);
|
|
87
|
+
const first = await datasetGetPage(ctx.config.baseUrl, ctx.repoName, 'pages-ws', rowsPath, { segment: 0 }, opts);
|
|
88
|
+
assert.equal(first.offset, 0);
|
|
81
89
|
const seg = await datasetGetPage(ctx.config.baseUrl, ctx.repoName, 'pages-ws', rowsPath, { segment: 1 }, opts);
|
|
82
|
-
assert.equal(seg.offset,
|
|
83
|
-
assert.
|
|
84
|
-
assert.ok(equalFor(RowsType)(decodeBeast2For(RowsType)(seg.data), rows.slice(
|
|
90
|
+
assert.equal(seg.offset, first.count, 'segment 1 starts where segment 0 ends');
|
|
91
|
+
assert.ok(seg.count > 0);
|
|
92
|
+
assert.ok(equalFor(RowsType)(decodeBeast2For(RowsType)(seg.data), rows.slice(seg.offset, seg.offset + seg.count)));
|
|
85
93
|
await rejectsWithDetail(() => datasetGetPage(ctx.config.baseUrl, ctx.repoName, 'pages-ws', rowsPath, { segment: 99 }, opts), /out of range/);
|
|
86
94
|
});
|
|
87
95
|
it('small collections are stored indexed too and page exactly', async (t) => {
|
|
@@ -116,23 +124,98 @@ export function datasetPageTests(setup) {
|
|
|
116
124
|
it('large dict windows page via the segment index in canonical key order', async (t) => {
|
|
117
125
|
const ctx = await withTablePackage(t);
|
|
118
126
|
const opts = await ctx.opts();
|
|
119
|
-
//
|
|
120
|
-
//
|
|
121
|
-
const
|
|
127
|
+
// Stored segmented + indexed, so windows decode only the touched
|
|
128
|
+
// segments via the verified fences.
|
|
129
|
+
const count = SEGMENT_MAX_COUNT + 1000;
|
|
130
|
+
const entries = Array.from({ length: count }, (_, i) => [`k${String(i).padStart(5, '0')}`, BigInt(i)]);
|
|
122
131
|
const lookup = new Map([...entries].reverse());
|
|
123
132
|
await datasetSet(ctx.config.baseUrl, ctx.repoName, 'pages-ws', lookupPath, encodeBeast2For(LookupType)(lookup), opts);
|
|
124
|
-
|
|
125
|
-
|
|
133
|
+
// Segment windows of a dict report exact totals too.
|
|
134
|
+
const seg = await datasetGetPage(ctx.config.baseUrl, ctx.repoName, 'pages-ws', lookupPath, { segment: 0 }, opts);
|
|
135
|
+
assert.equal(seg.totalElements, count);
|
|
136
|
+
assert.equal(seg.totalExact, true);
|
|
137
|
+
const from = seg.count - 5;
|
|
138
|
+
const page = await datasetGetPage(ctx.config.baseUrl, ctx.repoName, 'pages-ws', lookupPath, { offset: from, limit: 10 }, opts);
|
|
139
|
+
assert.equal(page.totalElements, count);
|
|
126
140
|
assert.equal(page.totalExact, true, 'segment counts are exact for Dict blobs');
|
|
127
141
|
assert.ok(page.segmentCount >= 2, `large dict should be stored segmented, got ${page.segmentCount} segments`);
|
|
128
|
-
assert.equal(page.offset,
|
|
142
|
+
assert.equal(page.offset, from);
|
|
129
143
|
assert.equal(page.count, 10);
|
|
130
144
|
const decoded = decodeBeast2For(LookupType)(page.data);
|
|
131
|
-
assert.deepEqual([...decoded.entries()], entries.slice(
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
145
|
+
assert.deepEqual([...decoded.entries()], entries.slice(from, from + 10), 'window crosses the segment boundary in canonical key order');
|
|
146
|
+
});
|
|
147
|
+
it('a dict segments the same whatever history produced it', async (t) => {
|
|
148
|
+
const ctx = await withTablePackage(t);
|
|
149
|
+
const opts = await ctx.opts();
|
|
150
|
+
// The property the segment-object layout rests on: the boundaries of a
|
|
151
|
+
// Set or Dict come from its keys, so two equal values are stored as the
|
|
152
|
+
// same segment objects under the same manifest — whatever was written
|
|
153
|
+
// before them. Without it a state shares nothing with its predecessor
|
|
154
|
+
// and every write costs the whole value again.
|
|
155
|
+
const entries = Array.from({ length: 3000 }, (_, i) => [`k${String(i).padStart(5, '0')}`, BigInt(i)]);
|
|
156
|
+
const ascending = new Map(entries);
|
|
157
|
+
const descending = new Map([...entries].reverse());
|
|
158
|
+
await datasetSet(ctx.config.baseUrl, ctx.repoName, 'pages-ws', lookupPath, encodeBeast2For(LookupType)(ascending), opts);
|
|
159
|
+
const first = await datasetGetStatus(ctx.config.baseUrl, ctx.repoName, 'pages-ws', lookupPath, opts);
|
|
160
|
+
// A different value in between, so nothing can be answered from a cache
|
|
161
|
+
// of the last write.
|
|
162
|
+
await datasetSet(ctx.config.baseUrl, ctx.repoName, 'pages-ws', lookupPath, encodeBeast2For(LookupType)(new Map(entries.slice(0, 500))), opts);
|
|
163
|
+
await datasetSet(ctx.config.baseUrl, ctx.repoName, 'pages-ws', lookupPath, encodeBeast2For(LookupType)(descending), opts);
|
|
164
|
+
const second = await datasetGetStatus(ctx.config.baseUrl, ctx.repoName, 'pages-ws', lookupPath, opts);
|
|
165
|
+
assert.equal(second.hash.type, 'some');
|
|
166
|
+
assert.deepEqual(second.hash, first.hash, 'equal values must be stored identically');
|
|
167
|
+
assert.deepEqual(second.segments, first.segments);
|
|
168
|
+
assert.deepEqual(second.size, first.size);
|
|
169
|
+
});
|
|
170
|
+
it('a one-row change re-cuts one segment and leaves the rest', async (t) => {
|
|
171
|
+
const ctx = await withTablePackage(t);
|
|
172
|
+
const opts = await ctx.opts();
|
|
173
|
+
/** Every segment window in order: where it starts, its size, its rows. */
|
|
174
|
+
const segmentWindows = async () => {
|
|
175
|
+
const status = await datasetGetStatus(ctx.config.baseUrl, ctx.repoName, 'pages-ws', lookupPath, opts);
|
|
176
|
+
const windows = [];
|
|
177
|
+
for (let i = 0; i < Number(status.segments.type === 'some' ? status.segments.value : 0n); i++) {
|
|
178
|
+
const page = await datasetGetPage(ctx.config.baseUrl, ctx.repoName, 'pages-ws', lookupPath, { segment: i }, opts);
|
|
179
|
+
windows.push({ offset: page.offset, count: page.count, rows: decodeBeast2For(LookupType)(page.data) });
|
|
180
|
+
}
|
|
181
|
+
return windows;
|
|
182
|
+
};
|
|
183
|
+
const entries = Array.from({ length: 3000 }, (_, i) => [`k${String(i).padStart(5, '0')}`, BigInt(i)]);
|
|
184
|
+
await datasetSet(ctx.config.baseUrl, ctx.repoName, 'pages-ws', lookupPath, encodeBeast2For(LookupType)(entries.reduce((m, [k, v]) => m.set(k, v), new Map())), opts);
|
|
185
|
+
const before = await datasetGetStatus(ctx.config.baseUrl, ctx.repoName, 'pages-ws', lookupPath, opts);
|
|
186
|
+
const windowsBefore = await segmentWindows();
|
|
187
|
+
assert.ok(windowsBefore.length >= 2, `the value spans segments, got ${windowsBefore.length}`);
|
|
188
|
+
const edited = new Map(entries);
|
|
189
|
+
edited.set('k01500', 999999n);
|
|
190
|
+
await datasetSet(ctx.config.baseUrl, ctx.repoName, 'pages-ws', lookupPath, encodeBeast2For(LookupType)(edited), opts);
|
|
191
|
+
const after = await datasetGetStatus(ctx.config.baseUrl, ctx.repoName, 'pages-ws', lookupPath, opts);
|
|
192
|
+
const windowsAfter = await segmentWindows();
|
|
193
|
+
assert.notDeepEqual(after.hash, before.hash, 'the value changed, so its address must');
|
|
194
|
+
assert.deepEqual(windowsAfter.map((w) => [w.offset, w.count]), windowsBefore.map((w) => [w.offset, w.count]), 'one changed row must not move a boundary');
|
|
195
|
+
const changed = windowsAfter.filter((w, i) => !equalFor(LookupType)(w.rows, windowsBefore[i].rows));
|
|
196
|
+
assert.equal(changed.length, 1, 'only the segment holding the row is re-cut');
|
|
197
|
+
assert.ok(changed[0].rows.has('k01500'), 'and it is the one holding the row');
|
|
198
|
+
// ...and the change is visible where it was made, with its neighbours
|
|
199
|
+
// untouched.
|
|
200
|
+
const page = await datasetGetPage(ctx.config.baseUrl, ctx.repoName, 'pages-ws', lookupPath, { offset: 1499, limit: 3 }, opts);
|
|
201
|
+
const decoded = decodeBeast2For(LookupType)(page.data);
|
|
202
|
+
assert.deepEqual([...decoded.entries()], [['k01499', 1499n], ['k01500', 999999n], ['k01501', 1501n]]);
|
|
203
|
+
});
|
|
204
|
+
it('a whole read of a manifest-backed dataset decodes to the value it was given', async (t) => {
|
|
205
|
+
const ctx = await withTablePackage(t);
|
|
206
|
+
const opts = await ctx.opts();
|
|
207
|
+
// The manifest round trip: the segments splice back into one blob that
|
|
208
|
+
// decodes equal to the whole encode of the same value.
|
|
209
|
+
const entries = Array.from({ length: 3000 }, (_, i) => [`k${String(i).padStart(5, '0')}`, BigInt(i)]);
|
|
210
|
+
const lookup = new Map(entries);
|
|
211
|
+
await datasetSet(ctx.config.baseUrl, ctx.repoName, 'pages-ws', lookupPath, encodeBeast2For(LookupType)(lookup), opts);
|
|
212
|
+
const whole = await datasetGet(ctx.config.baseUrl, ctx.repoName, 'pages-ws', lookupPath, opts);
|
|
213
|
+
const decoded = decodeBeast2For(LookupType)(whole.data);
|
|
214
|
+
assert.equal(decoded.size, 3000);
|
|
215
|
+
assert.deepEqual([...decoded.entries()], entries);
|
|
216
|
+
const status = await datasetGetStatus(ctx.config.baseUrl, ctx.repoName, 'pages-ws', lookupPath, opts);
|
|
217
|
+
assert.equal(status.rows.type, 'some');
|
|
218
|
+
assert.equal(status.rows.type === 'some' ? status.rows.value : 0n, 3000n, 'the status geometry comes from the manifest, with nothing decoded');
|
|
136
219
|
});
|
|
137
220
|
it('non-collection datasets and bad windows are refused', async (t) => {
|
|
138
221
|
const ctx = await withTablePackage(t);
|
|
@@ -157,7 +240,9 @@ export function datasetPageTests(setup) {
|
|
|
157
240
|
assert.ok(equalFor(RowsType)(decodeBeast2For(RowsType)(page.data), rows.slice(0, 10)));
|
|
158
241
|
assert.equal(page.hash, hash);
|
|
159
242
|
// The page is self-describing about the WHOLE dataset: totalBytes is
|
|
160
|
-
// the
|
|
243
|
+
// what the value costs in the store — every segment object plus the
|
|
244
|
+
// manifest naming them, the same number status reports — not the page's
|
|
245
|
+
// own bytes.
|
|
161
246
|
assert.equal(BigInt(page.totalBytes), status.size.type === 'some' ? status.size.value : -1n);
|
|
162
247
|
assert.ok(page.totalBytes > page.data.length, 'whole-blob bytes exceed one page');
|
|
163
248
|
// Header semantics via raw fetch: pinned ⇒ immutable, unpinned ⇒
|