User: Rust is the product (option a). tools/edge-bench-rs moves to edge/
(crate edge; binaries edge-node, the worker, and edge-bench, the replay).
CI's new job edge runs cargo test and edge/check-fixtures.sh: both
RangeIndexers on three committed captures (edge/fixtures, 25k overview
lines each of a.b.models, a.b.ath and a.b.boneless in 5 chunks, 3.5 MB),
compared field by field with check.ts; deploy waits for it. The
TypeScript RangeIndexer stays as check.ts's reference. README: what it
is now; the benchmark findings as history.
Random names: looksRandom missed long tokens of capitals and digits
("51294P1CUKR2R35X", release 74539068, readable and a Newznab title).
12+ capitals and digits switching 6+ times between them are random
(COD4MW2REMASTERED switches 4 times, BEATLES1964REMASTER twice); both
implementations, identical on the fixtures.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
19 lines
880 B
Bash
Executable File
19 lines
880 B
Bash
Executable File
#!/bin/sh
|
|
# The Rust and TypeScript RangeIndexers on the committed captures (edge/fixtures: 25k
|
|
# overview lines each of a.b.models, a.b.ath and a.b.boneless, in 5 chunks), compared
|
|
# by check.ts field by field: exits non-zero on any difference. CI runs it; run it from
|
|
# the repository root after any change to either side.
|
|
set -eu
|
|
cd "$(dirname "$0")/.."
|
|
cargo build --release --quiet --manifest-path edge/Cargo.toml --bin edge-bench
|
|
out=$(mktemp -d)
|
|
trap 'rm -rf "$out"' EXIT
|
|
status=0
|
|
for capture in edge/fixtures/*/; do
|
|
name=$(basename "$capture")
|
|
edge/target/release/edge-bench "$capture" --batch-chunks 2 --idle 2 --dump "$out/$name.jsonl" --wire "$out/$name.wire.jsonl" >/dev/null 2>&1
|
|
echo "== $name"
|
|
node --import=@poppinss/ts-exec edge/check.ts "$capture" "$out/$name.jsonl" --wire "$out/$name.wire.jsonl" --batch-chunks 2 --idle 2 || status=1
|
|
done
|
|
exit $status
|