summaryrefslogtreecommitdiffstats
path: root/packages/meshbay-hub/tests/harness
diff options
context:
space:
mode:
authorChristophe Besson <cbesson@gmail.com>2026-09-16 17:51:19 +0200
committerChristophe Besson <cbesson@gmail.com>2026-09-16 17:51:19 +0200
commit929bfcccf8928a30d86d48a8b0137db0dd4a1ee0 (patch)
treea22966059d22cccd60238752406f98a58304ec16 /packages/meshbay-hub/tests/harness
parentc35f3a73eb68cdd7c4179cded3d1ead63ec5a033 (diff)
downloadmeshbay-929bfcccf8928a30d86d48a8b0137db0dd4a1ee0.tar.gz
playlists: promise the count that holds when nothing compresses
The ceiling is 1200 tracks on a library that repeats and 660 on one that never does; the message said 1000, which would send a reader back into the wall at 660. It says 500, measured at both ends. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Diffstat (limited to 'packages/meshbay-hub/tests/harness')
-rwxr-xr-xpackages/meshbay-hub/tests/harness/playlist_store_probe.py26
1 files changed, 25 insertions, 1 deletions
diff --git a/packages/meshbay-hub/tests/harness/playlist_store_probe.py b/packages/meshbay-hub/tests/harness/playlist_store_probe.py
index 83c00ad..6421426 100755
--- a/packages/meshbay-hub/tests/harness/playlist_store_probe.py
+++ b/packages/meshbay-hub/tests/harness/playlist_store_probe.py
@@ -395,7 +395,31 @@ function fakeNode() {
bodyKind('measure'), USER, key);
sizes[n] = sealed.length;
}
- steps.push({ step: 'what a playlist costs sealed', sizes });
+
+ // The same, with nothing to compress. Fourteen words of vocabulary is a
+ // library that repeats itself; a real one does not, and deflate's whole
+ // saving here comes from repetition. This is the pessimistic bound, and the
+ // number a reader is told has to sit under *it*, not under the friendly one
+ // — the two differ by enough to matter.
+ const noise = (n) => [...crypto.getRandomValues(new Uint8Array(n))]
+ .map((b) => 'abcdefghijklmnopqrstuvwxyz '[b % 27]).join('');
+ const diverseTrack = (i) => {
+ const artist = noise(18);
+ const album = noise(22);
+ const title = noise(26);
+ return { id: hex(16), g: 'g1', hv: 1, n: `${i % 20} - ${title}.flac`,
+ s: 30000000 + i, p: `${artist}/${album}`, t: title, a: artist,
+ b: album, d: 180 + (i % 300), tn: (i % 20) + 1 };
+ };
+ const diverse = {};
+ for (const n of [100, 500, 1000]) {
+ const tracks = [];
+ for (let i = 0; i < n; i++) tracks.push(diverseTrack(i));
+ const sealed = await seal({ v: 1, id: 'measure', rev: 1, device: 'aaa', tracks },
+ bodyKind('measure'), USER, key);
+ diverse[n] = sealed.length;
+ }
+ steps.push({ step: 'what a playlist costs sealed', sizes, diverse });
// ── a playlist too large for one frame is named, not swallowed ────────
//