@elaraai/e3-api-tests 1.0.79 → 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.
Files changed (50) hide show
  1. package/README.md +1 -1
  2. package/dist/src/fixtures.d.ts +77 -4
  3. package/dist/src/fixtures.d.ts.map +1 -1
  4. package/dist/src/fixtures.js +114 -9
  5. package/dist/src/fixtures.js.map +1 -1
  6. package/dist/src/index.d.ts +2 -0
  7. package/dist/src/index.d.ts.map +1 -1
  8. package/dist/src/index.js +6 -0
  9. package/dist/src/index.js.map +1 -1
  10. package/dist/src/suites/cli.d.ts.map +1 -1
  11. package/dist/src/suites/cli.js +55 -3
  12. package/dist/src/suites/cli.js.map +1 -1
  13. package/dist/src/suites/dataflow.js +27 -27
  14. package/dist/src/suites/dataflow.js.map +1 -1
  15. package/dist/src/suites/dataset-pages.d.ts.map +1 -1
  16. package/dist/src/suites/dataset-pages.js +115 -30
  17. package/dist/src/suites/dataset-pages.js.map +1 -1
  18. package/dist/src/suites/dataset-transfer.d.ts.map +1 -1
  19. package/dist/src/suites/dataset-transfer.js +117 -29
  20. package/dist/src/suites/dataset-transfer.js.map +1 -1
  21. package/dist/src/suites/datasets.d.ts.map +1 -1
  22. package/dist/src/suites/datasets.js +0 -20
  23. package/dist/src/suites/datasets.js.map +1 -1
  24. package/dist/src/suites/functions.d.ts.map +1 -1
  25. package/dist/src/suites/functions.js +18 -3
  26. package/dist/src/suites/functions.js.map +1 -1
  27. package/dist/src/suites/package-transfer.d.ts.map +1 -1
  28. package/dist/src/suites/package-transfer.js +28 -1
  29. package/dist/src/suites/package-transfer.js.map +1 -1
  30. package/dist/src/suites/platform.d.ts.map +1 -1
  31. package/dist/src/suites/platform.js +6 -6
  32. package/dist/src/suites/platform.js.map +1 -1
  33. package/dist/src/suites/record-deploy.d.ts +8 -0
  34. package/dist/src/suites/record-deploy.d.ts.map +1 -0
  35. package/dist/src/suites/record-deploy.js +104 -0
  36. package/dist/src/suites/record-deploy.js.map +1 -0
  37. package/dist/src/suites/records-keyed.d.ts +8 -0
  38. package/dist/src/suites/records-keyed.d.ts.map +1 -0
  39. package/dist/src/suites/records-keyed.js +140 -0
  40. package/dist/src/suites/records-keyed.js.map +1 -0
  41. package/dist/src/suites/repository.d.ts.map +1 -1
  42. package/dist/src/suites/repository.js +62 -6
  43. package/dist/src/suites/repository.js.map +1 -1
  44. package/dist/src/suites/transfer.d.ts.map +1 -1
  45. package/dist/src/suites/transfer.js +6 -170
  46. package/dist/src/suites/transfer.js.map +1 -1
  47. package/dist/src/suites/workspaces.d.ts.map +1 -1
  48. package/dist/src/suites/workspaces.js +10 -11
  49. package/dist/src/suites/workspaces.js.map +1 -1
  50. 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, dataflowStart, dataflowExecute, dataflowExecution, dataflowCancel, dataflowGraph, datasetSet, datasetGet, taskLogs, taskExecutionList, ApiError, } from '@elaraai/e3-api-client';
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 dataflowExecution(baseUrl, repoName, workspace, {}, opts);
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('dataflowStart triggers execution (non-blocking)', async (t) => {
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 dataflowStart(ctx.config.baseUrl, ctx.repoName, 'exec-ws', { force: true }, opts);
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('dataflowExecution returns execution state', async (t) => {
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 dataflowStart(ctx.config.baseUrl, ctx.repoName, 'exec-ws', { force: true }, opts);
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 dataflowExecution(ctx.config.baseUrl, ctx.repoName, 'exec-ws', {}, opts);
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 dataflowStart(ctx.config.baseUrl, ctx.repoName, 'diamond-ws', { force: true }, opts);
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 dataflowExecution(ctx.config.baseUrl, ctx.repoName, 'diamond-ws', { offset: events.length }, opts);
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('dataflowExecution shows failed status after task failure', async (t) => {
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 dataflowStart(ctx.config.baseUrl, ctx.repoName, 'fail-ws', { force: true }, opts);
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 dataflowExecution(ctx.config.baseUrl, ctx.repoName, 'fail-ws', {}, opts);
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 dataflowStart while execution is running', async (t) => {
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 dataflowStart(ctx.config.baseUrl, ctx.repoName, 'slow-ws', { force: true }, opts);
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 dataflowStart(ctx.config.baseUrl, ctx.repoName, 'slow-ws', { force: true }, opts);
414
- assert.fail('Second dataflowStart should have thrown an error');
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 dataflowStart(ctx.config.baseUrl, ctx.repoName, 'slow-ws', { force: true }, opts);
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 dataflowStart(ctx.config.baseUrl, ctx.repoName, 'slow-ws', { force: true }, opts);
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 dataflowExecution(ctx.config.baseUrl, ctx.repoName, 'slow-ws', {}, opts);
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 dataflowStart
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 dataflowStart(ctx.config.baseUrl, ctx.repoName, 'slow-ws', { force: true }, opts);
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 dataflowStart(ctx.config.baseUrl, ctx.repoName, 'sdiamond-ws', { force: true }, opts);
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 dataflowExecution(ctx.config.baseUrl, ctx.repoName, 'sdiamond-ws', {}, opts);
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 dataflowExecution(ctx.config.baseUrl, ctx.repoName, 'sdiamond-ws', {}, opts);
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('dataflowExecution supports event offset and limit', async (t) => {
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 dataflowExecution(ctx.config.baseUrl, ctx.repoName, 'evtpag-ws', { offset: 0, limit: 1 }, opts);
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 dataflowExecution(ctx.config.baseUrl, ctx.repoName, 'evtpag-ws', { offset: 1, limit: 1 }, opts);
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;AAoCH,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,CAkMpE"}
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
- * segmented + indexed at every size, so segment addressing always works.
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
- // Above the segmentation threshold, so the server stores this indexed.
59
- const rows = makeRows(2500);
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 1000-element segment boundary.
62
- const page = await datasetGetPage(ctx.config.baseUrl, ctx.repoName, 'pages-ws', rowsPath, { offset: 900, limit: 200 }, opts);
63
- assert.equal(page.totalElements, 2500);
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, 900);
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(900, 1100)), 'page equals the expected 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: 2400, limit: 1000 }, opts);
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(2400)), 'tail page equals the expected 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 writer batch of an indexed blob', async (t) => {
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(2500);
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, 1000, 'segment 1 starts after segment 0');
83
- assert.equal(seg.count, 1000);
84
- assert.ok(equalFor(RowsType)(decodeBeast2For(RowsType)(seg.data), rows.slice(1000, 2000)));
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
- // Above the segmentation threshold: stored segmented + indexed, so
120
- // windows decode only the touched segments via the verified fences.
121
- const entries = Array.from({ length: 2500 }, (_, i) => [`k${String(i).padStart(4, '0')}`, BigInt(i)]);
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
- const page = await datasetGetPage(ctx.config.baseUrl, ctx.repoName, 'pages-ws', lookupPath, { offset: 995, limit: 10 }, opts);
125
- assert.equal(page.totalElements, 2500);
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, 995);
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(995, 1005), 'window crosses the segment boundary in canonical key order');
132
- // Segment windows of a dict report exact totals too.
133
- const seg = await datasetGetPage(ctx.config.baseUrl, ctx.repoName, 'pages-ws', lookupPath, { segment: 0 }, opts);
134
- assert.equal(seg.totalElements, 2500);
135
- assert.equal(seg.totalExact, true);
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 stored blob's size (what status reports), not the page's own.
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 ⇒