test-gate: split host 4 ways and root 5 ways; weights that fit parallel tests
On main CI (e3fd2e02) the gate step took 206 s: host ran 149 s as one process inside "rest", and root's three shards ran 84-113 s because three new DBForward tests take 165 s of root's 302 s and were unweighted. TEST_SPLIT now deals internal/host 4 ways and root 5 ways beside console's 8. test-weights.sh now: - rewrites only the packages it is given and keeps the other rows (it used to replace the whole file); - records tests of 0.25 s or more, not only 1 s or more; - divides a t.Parallel test's time by 8, since it overlaps with its neighbours. Weighting it in full put the heavy serial tests together and left host's shard 0 at 106 s beside 24-40 s for the rest. Unweighted tests now count as 0.05 s, not 0.2 s: host's 2,500 small serial tests average about 0.025 s. Weights for host and root are measured today on tmpfs; console's rows are unchanged. Locally the host and root splits passed twice and once; shard times are within about 30% of each other.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
3 files changed,
+207
−28
.amadan/test-gate.sh+3 −3.amadan/test-weights.sh+45 −15.amadan/test-weights.tsv+159 −10
CI passed — run details
CI log
=== gate ===
.amadan/test-gate.sh
=== launchctx (1 s)
ok amadan.net/carlos/platform.git/launchctx 0.012s
? amadan.net/carlos/platform.git/launchctx/controlname [no test files]
? amadan.net/carlos/platform.git/launchctx/wireid [no test files]
=== vet (18 s)
=== gofmt (1 s)
gofmt -l .: clean
=== rest (71 s)
? github.com/carlosframework/platform/cmd/changelog [no test files]
ok github.com/carlosframework/platform/cmd/console 3.743s
ok github.com/carlosframework/platform/cmd/moveprobe 11.830s
ok github.com/carlosframework/platform/cmd/zddprobe 0.729s
ok github.com/carlosframework/platform/internal/activator 58.683s
ok github.com/carlosframework/platform/internal/agentsock 0.022s
ok github.com/carlosframework/platform/internal/alerting 0.009s
ok github.com/carlosframework/platform/internal/analytics 0.039s
ok github.com/carlosframework/platform/internal/appconfig 2.993s
ok github.com/carlosframework/platform/internal/apperr 0.161s
ok github.com/carlosframework/platform/internal/applog 0.312s
ok github.com/carlosframework/platform/internal/assetcache 0.220s
ok github.com/carlosframework/platform/internal/awsinv 0.010s
ok github.com/carlosframework/platform/internal/boxchoice 0.014s
ok github.com/carlosframework/platform/internal/boxid 0.708s
? github.com/carlosframework/platform/internal/boxid/boxidtest [no test files]
? github.com/carlosframework/platform/internal/boxid/internal/signtest [no test files]
ok github.com/carlosframework/platform/internal/boxvolumes 0.016s
ok github.com/carlosframework/platform/internal/caps 0.058s
ok github.com/carlosframework/platform/internal/certwarm 0.005s
ok github.com/carlosframework/platform/internal/cgroup 0.780s
ok github.com/carlosframework/platform/internal/changelog 0.570s
ok github.com/carlosframework/platform/internal/claimactivation 1.225s
ok github.com/carlosframework/platform/internal/clamd 0.065s
? github.com/carlosframework/platform/internal/cliflag [no test files]
? github.com/carlosframework/platform/internal/controlname [no test files]
? github.com/carlosframework/platform/internal/controlsock [no test files]
ok github.com/carlosframework/platform/internal/dbdoor 8.506s
ok github.com/carlosframework/platform/internal/dbdoor/dbdoortest 0.017s
ok github.com/carlosframework/platform/internal/dbquery 0.016s
ok github.com/carlosframework/platform/internal/dbreads 2.230s
? github.com/carlosframework/platform/internal/dbreads/dbreadstest [no test files]
ok github.com/carlosframework/platform/internal/dbverify 0.012s
ok github.com/carlosframework/platform/internal/dnsrec 0.005s
ok github.com/carlosframework/platform/internal/docsite 0.013s
ok github.com/carlosframework/platform/internal/domains 2.841s
ok github.com/carlosframework/platform/internal/doorkey 0.010s
ok github.com/carlosframework/platform/internal/economics 0.006s
ok github.com/carlosframework/platform/internal/edge 45.519s
? github.com/carlosframework/platform/internal/edgeproof [no test files]
ok github.com/carlosframework/platform/internal/edgesfile 0.019s
ok github.com/carlosframework/platform/internal/fleetapi 0.212s
ok github.com/carlosframework/platform/internal/gate 1.723s
ok github.com/carlosframework/platform/internal/genselect 0.043s
ok github.com/carlosframework/platform/internal/geo 0.032s
ok github.com/carlosframework/platform/internal/geoip 0.032s
ok github.com/carlosframework/platform/internal/historyreadback 0.255s
ok github.com/carlosframework/platform/internal/hostactors 6.113s
ok github.com/carlosframework/platform/internal/hostactors/awsmembership 0.005s
ok github.com/carlosframework/platform/internal/hostbox 2.703s
ok github.com/carlosframework/platform/internal/hostclaim 0.660s
ok github.com/carlosframework/platform/internal/hostenv 0.004s
ok github.com/carlosframework/platform/internal/hostevidence 0.005s
ok github.com/carlosframework/platform/internal/hostexec 5.186s
ok github.com/carlosframework/platform/internal/hostfence 0.088s
ok github.com/carlosframework/platform/internal/hostfiles 10.466s
ok github.com/carlosframework/platform/internal/hostfloor 0.025s
ok github.com/carlosframework/platform/internal/hostguard 1.026s
ok github.com/carlosframework/platform/internal/hostops 1.805s
? github.com/carlosframework/platform/internal/hostops/fencerelease [no test files]
ok github.com/carlosframework/platform/internal/hostops/internal/fencerelease 0.005s
ok github.com/carlosframework/platform/internal/hostquarantine 0.004s
ok github.com/carlosframework/platform/internal/hostrelocate 0.569s
ok github.com/carlosframework/platform/internal/hostresolve 0.213s
ok github.com/carlosframework/platform/internal/hostwrite 0.003s
ok github.com/carlosframework/platform/internal/infraview 0.005s
ok github.com/carlosframework/platform/internal/instancectl 5.256s
ok github.com/carlosframework/platform/internal/instanceexec 2.853s
ok github.com/carlosframework/platform/internal/instancefs 0.027s
ok github.com/carlosframework/platform/internal/instancekey 0.002s
ok github.com/carlosframework/platform/internal/instanceupdates 0.013s
ok github.com/carlosframework/platform/internal/layout 1.594s
ok github.com/carlosframework/platform/internal/lbhealth 0.003s
ok github.com/carlosframework/platform/internal/lease 10.147s
ok github.com/carlosframework/platform/internal/lease/leasetest 0.467s
ok github.com/carlosframework/platform/internal/ledger 0.024s
ok github.com/carlosframework/platform/internal/mail 0.245s
ok github.com/carlosframework/platform/internal/maintenance 0.120s
ok github.com/carlosframework/platform/internal/maintenanceexec 5.605s
ok github.com/carlosframework/platform/internal/maintenanceguard 0.143s
ok github.com/carlosframework/platform/internal/metrics 0.019s
ok github.com/carlosframework/platform/internal/moves 23.164s
ok github.com/carlosframework/platform/internal/moves/archive 0.923s
ok github.com/carlosframework/platform/internal/objstore 0.252s
ok github.com/carlosframework/platform/internal/ops 0.200s
ok github.com/carlosframework/platform/internal/park 0.199s
ok github.com/carlosframework/platform/internal/plans 0.006s
ok github.com/carlosframework/platform/internal/privatefile 0.005s
ok github.com/carlosframework/platform/internal/provision 24.989s
ok github.com/carlosframework/platform/internal/publicrelease 0.008s
? github.com/carlosframework/platform/internal/regionname [no test files]
ok github.com/carlosframework/platform/internal/registry 5.589s
ok github.com/carlosframework/platform/internal/relay 7.233s
ok github.com/carlosframework/platform/internal/release 26.443s
ok github.com/carlosframework/platform/internal/rollout 3.774s
ok github.com/carlosframework/platform/internal/rolloutwords 0.003s
ok github.com/carlosframework/platform/internal/rootaws 0.008s
ok github.com/carlosframework/platform/internal/rootparticipation 0.059s
ok github.com/carlosframework/platform/internal/rootstate 0.027s
ok github.com/carlosframework/platform/internal/runs 0.592s
ok github.com/carlosframework/platform/internal/s3compat 0.005s
ok github.com/carlosframework/platform/internal/safefile 0.004s
ok github.com/carlosframework/platform/internal/schedule 2.570s
ok github.com/carlosframework/platform/internal/seeds 0.010s
ok github.com/carlosframework/platform/internal/sim/engines 2.059s
ok github.com/carlosframework/platform/internal/sim/hostlife 9.430s
ok github.com/carlosframework/platform/internal/sim/litestreamfacts 4.231s
ok github.com/carlosframework/platform/internal/status 0.062s
ok github.com/carlosframework/platform/internal/steering 0.008s
ok github.com/carlosframework/platform/internal/stopevidence 0.105s
ok github.com/carlosframework/platform/internal/svcrole 0.002s
ok github.com/carlosframework/platform/internal/telemetry 0.004s
ok github.com/carlosframework/platform/internal/termfence 0.004s
ok github.com/carlosframework/platform/internal/tunnelclient 0.005s
ok github.com/carlosframework/platform/internal/unixdial 0.002s
ok github.com/carlosframework/platform/internal/updatewords 0.004s
ok github.com/carlosframework/platform/internal/usage 0.005s
ok github.com/carlosframework/platform/internal/version 0.002s
ok github.com/carlosframework/platform/internal/vet 1.617s
=== internal_console@0 (77 s)
ok github.com/carlosframework/platform/internal/console 75.521s
=== internal_console@1 (51 s)
ok github.com/carlosframework/platform/internal/console 49.292s
=== internal_console@2 (45 s)
ok github.com/carlosframework/platform/internal/console 42.677s
=== internal_console@3 (43 s)
ok github.com/carlosframework/platform/internal/console 41.059s
=== internal_console@4 (44 s)
ok github.com/carlosframework/platform/internal/console 42.128s
=== internal_console@5 (44 s)
ok github.com/carlosframework/platform/internal/console 41.995s
=== internal_console@6 (47 s)
ok github.com/carlosframework/platform/internal/console 44.660s
=== internal_console@7 (49 s)
ok github.com/carlosframework/platform/internal/console 47.224s
=== internal_host@0 (65 s)
ok github.com/carlosframework/platform/internal/host 62.863s
=== internal_host@1 (29 s)
ok github.com/carlosframework/platform/internal/host 27.472s
=== internal_host@2 (30 s)
ok github.com/carlosframework/platform/internal/host 28.732s
=== internal_host@3 (32 s)
ok github.com/carlosframework/platform/internal/host 29.914s
=== root@0 (70 s)
ok github.com/carlosframework/platform 68.800s
=== root@1 (49 s)
ok github.com/carlosframework/platform 48.027s
=== root@2 (60 s)
ok github.com/carlosframework/platform 58.932s
=== root@3 (52 s)
ok github.com/carlosframework/platform 50.605s
=== root@4 (55 s)
ok github.com/carlosframework/platform 53.536s
=== cross ===
--- shard 0 of 5 ---
cross-compiling darwin/arm64
--- shard 1 of 5 ---
cross-compiling darwin/amd64
--- shard 2 of 5 ---
cross-compiling linux/arm64
linux/arm64 carlos binary: 50659490 bytes (ceiling 52000000)
--- shard 3 of 5 ---
cross-compiling windows/amd64
--- shard 4 of 5 ---
cross-compiling windows/arm64
=== minio-contract ===
minio contract: arm64, minio RELEASE.2025-09-07T16-13-09Z, mc RELEASE.2025-08-13T08-35-41Z
minio: downloading https://github.com/minio/minio/releases/download/RELEASE.2025-09-07T16-13-09Z/minio.linux-arm64.RELEASE.2025-09-07T16-13-09Z
minio: downloaded, digest verified
mc: downloading https://github.com/minio/mc/releases/download/RELEASE.2025-08-13T08-35-41Z/mc.linux-arm64.RELEASE.2025-08-13T08-35-41Z
mc: downloaded, digest verified
minio healthy on 127.0.0.1:20999
Added `local` successfully.
Bucket created successfully `local/contract-bucket`.
Bucket created successfully `local/denied-bucket`.
Created policy `contract-only` successfully.
Added user `scopeduser` successfully.
Attached Policies: [contract-only]
To User: scopeduser
buckets and scoped user ready
=== RUN TestDeliveredContractMinio
=== RUN TestDeliveredContractMinio/put
=== RUN TestDeliveredContractMinio/get_round-trips_the_body
=== RUN TestDeliveredContractMinio/list_shows_the_key
=== RUN TestDeliveredContractMinio/head_and_list_agree_on_the_version
=== RUN TestDeliveredContractMinio/the_app_cannot_tag_its_own_object
=== RUN TestDeliveredContractMinio/the_app_cannot_tag_its_own_object/not_by_PutObjectTagging
=== RUN TestDeliveredContractMinio/the_app_cannot_tag_its_own_object/and_not_by_x-amz-tagging_on_upload
=== RUN TestDeliveredContractMinio/the_app_cannot_tag_by_any_other_route
=== RUN TestDeliveredContractMinio/the_app_cannot_tag_by_any_other_route/not_by_CreateMultipartUpload
=== RUN TestDeliveredContractMinio/the_app_cannot_tag_by_any_other_route/not_by_CopyObject_with_a_REPLACE_tagging_directive
=== RUN TestDeliveredContractMinio/the_app_cannot_tag_by_any_other_route/but_multipart_itself_is_allowed
=== RUN TestDeliveredContractMinio/the_app_cannot_tag_by_any_other_route/and_copy_itself_is_allowed
=== RUN TestDeliveredContractMinio/the_app_cannot_tag_by_any_other_route/a_POST-policy_forged_tag_with_a_matching_version_is_still_not_a_verdict
=== RUN TestDeliveredContractMinio/the_app_cannot_tag_by_any_other_route/and_an_ordinary_tagged-with-something-else_upload_is_allowed
=== RUN TestDeliveredContractMinio/delete_removes_it
=== RUN TestDeliveredContractMinio/cross-bucket_denial
--- PASS: TestDeliveredContractMinio (0.02s)
--- PASS: TestDeliveredContractMinio/put (0.00s)
--- PASS: TestDeliveredContractMinio/get_round-trips_the_body (0.00s)
--- PASS: TestDeliveredContractMinio/list_shows_the_key (0.00s)
--- PASS: TestDeliveredContractMinio/head_and_list_agree_on_the_version (0.00s)
--- PASS: TestDeliveredContractMinio/the_app_cannot_tag_its_own_object (0.00s)
--- PASS: TestDeliveredContractMinio/the_app_cannot_tag_its_own_object/not_by_PutObjectTagging (0.00s)
--- PASS: TestDeliveredContractMinio/the_app_cannot_tag_its_own_object/and_not_by_x-amz-tagging_on_upload (0.00s)
--- PASS: TestDeliveredContractMinio/the_app_cannot_tag_by_any_other_route (0.01s)
--- PASS: TestDeliveredContractMinio/the_app_cannot_tag_by_any_other_route/not_by_CreateMultipartUpload (0.00s)
--- PASS: TestDeliveredContractMinio/the_app_cannot_tag_by_any_other_route/not_by_CopyObject_with_a_REPLACE_tagging_directive (0.00s)
--- PASS: TestDeliveredContractMinio/the_app_cannot_tag_by_any_other_route/but_multipart_itself_is_allowed (0.00s)
--- PASS: TestDeliveredContractMinio/the_app_cannot_tag_by_any_other_route/and_copy_itself_is_allowed (0.00s)
--- PASS: TestDeliveredContractMinio/the_app_cannot_tag_by_any_other_route/a_POST-policy_forged_tag_with_a_matching_version_is_still_not_a_verdict (0.00s)
--- PASS: TestDeliveredContractMinio/the_app_cannot_tag_by_any_other_route/and_an_ordinary_tagged-with-something-else_upload_is_allowed (0.00s)
--- PASS: TestDeliveredContractMinio/delete_removes_it (0.00s)
--- PASS: TestDeliveredContractMinio/cross-bucket_denial (0.00s)
PASS
ok github.com/carlosframework/platform/internal/objstore 0.023s
=== RUN TestT4StorageProbeMinio
2026/10/24 23:59:06 moves: T4: STORE: list: operation error S3: ListObjectsV2, https response error StatusCode: 403, RequestID: 18E19CA214A58AE4, HostID: 7c420053e0fbcd7f41653fdd92ffa2802c903d05303b1aa15adc2e8bb65d183f, api error SignatureDoesNotMatch: The request signature we calculated does not match the signature you provided. Check your key and signing method.
--- PASS: TestT4StorageProbeMinio (0.01s)
PASS
ok github.com/carlosframework/platform/internal/host 0.022s
=== RUN TestS3StoreMinioContract
=== RUN TestS3StoreMinioContract/conditional_get_and_etag_listing
=== RUN TestS3StoreMinioContract/bump_through_every_mutation_path
--- PASS: TestS3StoreMinioContract (0.02s)
--- PASS: TestS3StoreMinioContract/conditional_get_and_etag_listing (0.01s)
--- PASS: TestS3StoreMinioContract/bump_through_every_mutation_path (0.01s)
PASS
ok github.com/carlosframework/platform/internal/release 0.029s
Bucket created successfully `local/dbf-deploy`.
Bucket created successfully `local/dbf-data-ie`.
Bucket created successfully `local/dbf-data-uk`.
local/dbf-deploy versioning is enabled
Created policy `dbf-console` successfully.
Created policy `dbf-ukbox` successfully.
Added user `dbfconsole` successfully.
Added user `dbfukbox` successfully.
Attached Policies: [dbf-console]
To User: dbfconsole
Attached Policies: [dbf-ukbox]
To User: dbfukbox
=== RUN TestDBForwardMinio
2026/10/24 23:59:08 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/24 23:59:08 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/24 23:59:08 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/24 23:59:08 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000002
2026/10/24 23:59:08 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000002 maxTXID=0000000000000002 size=370
2026/10/24 23:59:08 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000002 txid.db=0000000000000002
2026/10/24 23:59:08 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000002 txid.db=0000000000000003
2026/10/24 23:59:08 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000003 maxTXID=0000000000000003 size=454
2026/10/24 23:59:08 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000003 txid.db=0000000000000003
2026/10/24 23:59:08 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000000 txid.db=0000000000000001
2026/10/24 23:59:08 INFO ltx file uploaded system=store db=source.db replica=file level=0 minTXID=0000000000000001 maxTXID=0000000000000001 size=720
2026/10/24 23:59:08 INFO replica sync system=store db=source.db replica=file txid.replica=0000000000000001 txid.db=0000000000000001
2026/10/24 23:59:09 console: CARLOS_SECRETS_PUBKEY is unset, so no region outside the home can be chosen automatically
2026/10/24 23:59:09 console: could not notify member@example.com of a CLI token issue: keymail: lookup member@example.com: keymail: GET /api/federation/lookup?addr=member%40example.com&from=console%40127.0.0.1%3A45201: could not determine target mailbox
agent.go:135: dbreads: dbr_etlaiwr3dgenyo3givzazrfr7q: planned 1 files (720 bytes) and restored to 1 in 9ms
agent.go:135: dbreads: dbr_etlaiwr3dgenyo3givzazrfr7q: output 5 bytes in 1 confirmed chunks in 1ms
2026/10/24 23:59:10 console: db read dbr_etlaiwr3dgenyo3givzazrfr7q: relayed 1 chunks (102 bytes) in 1.004s, ended done
agent.go:135: dbreads: dbr_ntmqycp2g5fhoyke7bddvi7s4u: planned 3 files (1544 bytes) and restored to 3 in 9ms
agent.go:135: dbreads: dbr_ntmqycp2g5fhoyke7bddvi7s4u: output 5 bytes in 1 confirmed chunks in 1ms
2026/10/24 23:59:11 console: db read dbr_ntmqycp2g5fhoyke7bddvi7s4u: relayed 1 chunks (102 bytes) in 1.004s, ended done
agent.go:135: dbreads: dbr_js27r5pw224ms7qejcci4f3meq: planned 3 files (1544 bytes) and held through 3 in 8ms
agent.go:135: dbreads: dbr_js27r5pw224ms7qejcci4f3meq: output 1544 bytes in 1 confirmed chunks in 1ms
2026/10/24 23:59:12 console: db read dbr_js27r5pw224ms7qejcci4f3meq: relayed 1 chunks (1641 bytes) in 1.004s, ended done
=== RUN TestDBForwardMinio/by_disconnect
=== NAME TestDBForwardMinio
agent.go:135: dbreads: dbr_kzzsyhplznvlk672gq3ypyh6ga: planned 3 files (1544 bytes) and restored to 3 in 9ms
2026/10/24 23:59:12 console: db read dbr_kzzsyhplznvlk672gq3ypyh6ga: relayed 0 chunks (0 bytes) in 11ms, ended client gone
agent.go:135: dbreads: dbr_kzzsyhplznvlk672gq3ypyh6ga: output 5 bytes in 1 confirmed chunks in 26ms
=== RUN TestDBForwardMinio/by_timeout
=== NAME TestDBForwardMinio
agent.go:135: dbreads: dbr_mfxr3oynbcxh4yo7gxgpd6vlym: planned 3 files (1544 bytes) and restored to 3 in 10ms
2026/10/24 23:59:32 console: db read dbr_mfxr3oynbcxh4yo7gxgpd6vlym: relayed 0 chunks (0 bytes) in 19.809s, ended no-result
agent.go:135: dbreads: dbr_mfxr3oynbcxh4yo7gxgpd6vlym: output 5 bytes in 1 confirmed chunks in 19.792s
--- PASS: TestDBForwardMinio (23.15s)
--- PASS: TestDBForwardMinio/by_disconnect (0.14s)
--- PASS: TestDBForwardMinio/by_timeout (19.92s)
PASS
ok github.com/carlosframework/platform/internal/console 23.170s
minio contract: PASS
diff --git a/.amadan/test-gate.sh b/.amadan/test-gate.sh| index f1f02c9cd..1b1ae46f6 100755 |
| --- a/.amadan/test-gate.sh |
| +++ b/.amadan/test-gate.sh |
| @@ -33,7 +33,7 @@ |
| # next) can surface here. That is a bug in the test, not in the split. |
| set -eu |
| -: "${TEST_SPLIT=./internal/console=8 .=3}" |
| +: "${TEST_SPLIT=./internal/console=8 ./internal/host=4 .=5}" |
| weights=$(pwd)/.amadan/test-weights.tsv |
| # A shard count that is not a whole number of at least 1 would take a |
| @@ -192,10 +192,10 @@ for spec in $TEST_SPLIT; do |
| fi |
| # Longest-processing-time first: heaviest test onto the least-loaded |
| - # shard. Unweighted tests count as 0.2 s. |
| + # shard. Unweighted tests count as 0.05 s (see test-weights.sh). |
| awk -v pkg="$pkg" -v n="$shards" -F '\t' ' |
| FILENAME == ARGV[1] { if ($1 == pkg) w[$2] = $3; next } |
| - { print (($0 in w) ? w[$0] : 0.2) "\t" $0 } |
| + { print (($0 in w) ? w[$0] : 0.05) "\t" $0 } |
| ' "$weights" "$out/list-$tag" | sort -t "$(printf '\t')" -k1,1gr -k2,2 | |
| awk -v n="$shards" -F '\t' ' |
| { |
diff --git a/.amadan/test-weights.sh b/.amadan/test-weights.sh| index 651e4a271..6efc4c14a 100755 |
| --- a/.amadan/test-weights.sh |
| +++ b/.amadan/test-weights.sh |
| @@ -7,9 +7,15 @@ |
| # .amadan/test-weights.sh console.json root.json |
| # |
| # Measure on a quiet machine with the temp root on tmpfs, as CI has it, or |
| -# the fsync-heavy tests weigh several times what they do there. Only |
| -# top-level tests of a second or more are kept; everything else is dealt |
| -# as short, which is what it is. |
| +# the fsync-heavy tests weigh several times what they do there. |
| +# |
| +# Only the packages in the given files are rewritten; rows for other |
| +# packages are kept. A top-level test of a quarter-second or more gets a |
| +# row. A test that called t.Parallel (its JSON has a "pause") overlaps |
| +# with its neighbours, so its weight is its time divided by 8, roughly |
| +# what it adds to its shard's wall clock. Everything unlisted is dealt as |
| +# short (test-gate.sh counts it as 0.05 s), which is what it is: host's |
| +# 2,500 small serial tests average about 0.025 s. |
| set -eu |
| [ $# -gt 0 ] || { |
| @@ -18,20 +24,44 @@ set -eu |
| } |
| out=.amadan/test-weights.tsv |
| +tab=$(printf '\t') |
| +new=$(mktemp "${TMPDIR:-/tmp}/test-weights-XXXXXX") |
| +trap 'rm -f "$new" "$out.tmp"' EXIT |
| +cat "$@" | awk ' |
| + /"Test":"/ { |
| + if (!match($0, /"Test":"[^"]*"/)) next |
| + test = substr($0, RSTART + 8, RLENGTH - 9) |
| + if (index(test, "/")) next |
| + if (!match($0, /"Package":"[^"]*"/)) next |
| + pkg = substr($0, RSTART + 11, RLENGTH - 12) |
| + key = pkg "\t" test |
| + if ($0 ~ /"Action":"pause"/) { parallel[key] = 1; next } |
| + if ($0 !~ /"Action":"(pass|fail)"/) next |
| + if (!match($0, /"Elapsed":[0-9.]+/)) next |
| + secs[key] = substr($0, RSTART + 10, RLENGTH - 10) + 0 |
| + } |
| + END { |
| + for (k in secs) { |
| + w = (k in parallel) ? secs[k] / 8 : secs[k] |
| + if (w >= 0.25) printf "%s\t%.2f\n", k, w |
| + } |
| + # A package line with no weighted test still marks its rows as replaced. |
| + for (k in secs) { split(k, f, "\t"); seen[f[1]] = 1 } |
| + for (p in seen) printf "#pkg\t%s\n", p |
| + } |
| +' >"$new" |
| { |
| printf '# package\ttest\tseconds (.amadan/test-weights.sh, %s)\n' "$(date -u +%Y-%m-%d)" |
| - cat "$@" | awk ' |
| - /"Action":"(pass|fail)"/ && /"Test":"/ { |
| - if (!match($0, /"Test":"[^"]*"/)) next |
| - test = substr($0, RSTART + 8, RLENGTH - 9) |
| - if (index(test, "/")) next |
| - if (!match($0, /"Package":"[^"]*"/)) next |
| - pkg = substr($0, RSTART + 11, RLENGTH - 12) |
| - if (!match($0, /"Elapsed":[0-9.]+/)) next |
| - secs = substr($0, RSTART + 10, RLENGTH - 10) + 0 |
| - if (secs >= 1) printf "%s\t%s\t%.1f\n", pkg, test, secs |
| - } |
| - ' | sort -t "$(printf '\t')" -k1,1 -k3,3gr |
| + { |
| + grep -v '^#pkg' "$new" |
| + if [ -f "$out" ]; then |
| + awk -F "$tab" -v newf="$new" ' |
| + BEGIN { while ((getline l < newf) > 0) { split(l, f, "\t"); if (f[1] == "#pkg") replaced[f[2]] = 1 } } |
| + /^#/ { next } |
| + !($1 in replaced) |
| + ' "$out" |
| + fi |
| + } | sort -t "$tab" -k1,1 -k3,3gr |
| } >"$out.tmp" |
| mv "$out.tmp" "$out" |
| echo "wrote $out: $(($(wc -l <"$out") - 1)) weighted tests" |
diff --git a/.amadan/test-weights.tsv b/.amadan/test-weights.tsv| index 6241b5499..374c15546 100644 |
| --- a/.amadan/test-weights.tsv |
| +++ b/.amadan/test-weights.tsv |
| @@ -1,4 +1,71 @@ |
| -# package test seconds (.amadan/test-weights.sh, 2026-10-21) |
| +# package test seconds (.amadan/test-weights.sh, 2026-10-24) |
| +github.com/carlosframework/platform TestDBForwardPrintsNothingForABadAnswer 67.13 |
| +github.com/carlosframework/platform TestDBForwardThroughTheBackhaulHop 55.06 |
| +github.com/carlosframework/platform TestDBForwardLongRequestThroughTheEdge 42.79 |
| +github.com/carlosframework/platform TestMovesStringsAreRecorded 9.39 |
| +github.com/carlosframework/platform TestCanaryCreateMakesAOneLabelHost 8.25 |
| +github.com/carlosframework/platform TestE2EDomainsAttachThroughDeploy 8.18 |
| +github.com/carlosframework/platform TestCanaryRegionReusesACanaryPastTheListCap 6.61 |
| +github.com/carlosframework/platform TestAuthCLI 5.05 |
| +github.com/carlosframework/platform TestRunEmailEnableFlowCustomDomainPrintsRecordsAndPolls 5.02 |
| +github.com/carlosframework/platform TestMovesGateBitesOnTheRealRecord 4.39 |
| +github.com/carlosframework/platform TestE2ELogsThroughConsole 4.04 |
| +github.com/carlosframework/platform TestMovesApprovedCopyIsApplied 3.91 |
| +github.com/carlosframework/platform TestMovesLegacyExemptionsAreLegacy 3.42 |
| +github.com/carlosframework/platform TestDBForwardParityThroughTheCLI 3.31 |
| +github.com/carlosframework/platform TestDBForwardPullParityThroughTheCLI 3.18 |
| +github.com/carlosframework/platform TestMovesSinksAreSentences 3.00 |
| +github.com/carlosframework/platform TestMovesSinkAllowListIsHonest 2.99 |
| +github.com/carlosframework/platform TestMovesFunctionValuesAreNotSinks 2.63 |
| +github.com/carlosframework/platform TestMovesHomeRegionCallSiteInventory 2.42 |
| +github.com/carlosframework/platform TestSharedCarlosLocation 2.26 |
| +github.com/carlosframework/platform TestCanaryTooLongForOneLabelRefusesBeforeAnyWrite 2.11 |
| +github.com/carlosframework/platform TestE2EDeployThroughConsole 2.06 |
| +github.com/carlosframework/platform TestDeployExitsHonestlyWhenDNSIsNotPointingYet 2.02 |
| +github.com/carlosframework/platform TestDeployStaticRedeployWithRecordGetsDNSGuidance 2.02 |
| +github.com/carlosframework/platform TestResolveModeExpiredOffersRelogin 2.02 |
| +github.com/carlosframework/platform TestAuthLoginStoresACredential 2.01 |
| +github.com/carlosframework/platform TestAuthLoginUsesConfiguredDefault 2.01 |
| +github.com/carlosframework/platform TestAuthWhoamiPrintsMemberships 2.01 |
| +github.com/carlosframework/platform TestConsoleMovedOfferLogsInAndRepointsConfig 2.01 |
| +github.com/carlosframework/platform TestResolveModeOffersLoginAndContinues 2.01 |
| +github.com/carlosframework/platform TestResolveModeUnconfiguredPromptsForURL 2.01 |
| +github.com/carlosframework/platform TestWaitForDomainVerifiedSucceeds 2.00 |
| +github.com/carlosframework/platform TestDBForwardPullInterruptedLeavesNothing 1.99 |
| +github.com/carlosframework/platform TestDBForwardMixedVersions 1.91 |
| +github.com/carlosframework/platform TestDBForwardPullSavesNothingForABadAnswer 1.81 |
| +github.com/carlosframework/platform TestPlan13NoDirectPlacementEngineComparison 1.70 |
| +github.com/carlosframework/platform TestE2EDBThroughConsole 1.49 |
| +github.com/carlosframework/platform TestWatchRolloutListFailuresTimeOutNamingTheList 1.20 |
| +github.com/carlosframework/platform TestAuthLoginDenied 1.00 |
| +github.com/carlosframework/platform TestDBForwardPullOnAQueryOnlyConsole 0.97 |
| +github.com/carlosframework/platform TestDeployWatchReadsTheConsolesList 0.90 |
| +github.com/carlosframework/platform TestDBForwardRefusesSQLThatIsNotUTF8 0.88 |
| +github.com/carlosframework/platform TestEndToEndSmoke 0.70 |
| +github.com/carlosframework/platform TestCanaryRegionRefusesBeforeAnyWrite 0.49 |
| +github.com/carlosframework/platform TestWatchRolloutFallbackGetsTheRemainingTime 0.41 |
| +github.com/carlosframework/platform TestRegionHAS3ClientsUseS3Compat 0.35 |
| +github.com/carlosframework/platform TestRouteCLI 0.33 |
| +github.com/carlosframework/platform TestTenantInheritsActivationSocket 0.31 |
| +github.com/carlosframework/platform TestWatchProbeMatchesAWholeToken 0.31 |
| +github.com/carlosframework/platform TestWatchRolloutAlwaysTruncatedNamesTheUnlistedHost 0.30 |
| +github.com/carlosframework/platform TestWatchRolloutDarkBoxNeverPollsOverHTTP 0.30 |
| +github.com/carlosframework/platform TestWatchRolloutFinalSurvivesADarkBoxButNotANewerBuild 0.30 |
| +github.com/carlosframework/platform TestWatchRolloutIdleSchedulerBeforeInstallIsPending 0.30 |
| +github.com/carlosframework/platform TestWatchRolloutIncompleteJoinIsNotNoReports 0.30 |
| +github.com/carlosframework/platform TestWatchRolloutLaterReportReclassifiesAURLLiveHost 0.30 |
| +github.com/carlosframework/platform TestWatchRolloutNeverPollsATargetMissingFromACompleteList 0.30 |
| +github.com/carlosframework/platform TestWatchRolloutNewerBuildNamesWhatIsInstalled 0.30 |
| +github.com/carlosframework/platform TestWatchRolloutOpenSettleHoldsTheWatch 0.30 |
| +github.com/carlosframework/platform TestWatchRolloutRefusingBoxIsPendingWithItsReason 0.30 |
| +github.com/carlosframework/platform TestWatchRolloutStopsPollingAURLHostThatDropsOffTheList 0.30 |
| +github.com/carlosframework/platform TestWatchRolloutUnknownUnavailableCodeIsNeverPolled 0.30 |
| +github.com/carlosframework/platform TestEnvironmentBundlesCLI 0.27 |
| +github.com/carlosframework/platform TestRouteAccountDefaultsToOpsAndAllOptsIn 0.26 |
| +github.com/carlosframework/platform TestRouteUnitStampsAnExistingRoute 0.26 |
| +github.com/carlosframework/platform TestFollowRunCtrlCWhileARequestIsInFlight 0.25 |
| +github.com/carlosframework/platform TestScopedKeysCLI 0.25 |
| +github.com/carlosframework/platform TestSeededWiredCopyIsApplied 0.25 |
| github.com/carlosframework/platform/internal/console TestClaimConsoleMutationInvariant 60.1 |
| github.com/carlosframework/platform/internal/console TestClaimConsoleMutationInvariantWitnesses 12.3 |
| github.com/carlosframework/platform/internal/console TestRetiringAnInstancePurgesItsMoveLogRows 9.3 |
| @@ -37,12 +104,94 @@ github.com/carlosframework/platform/internal/console TestAnIncompletePlacementRe |
| github.com/carlosframework/platform/internal/console TestClaimLossPagesScanProgressSurvivesRestartAndWraps 1.0 |
| github.com/carlosframework/platform/internal/console TestCreateDoorsRefuseWithNoRoomBeforeRegistering 1.0 |
| github.com/carlosframework/platform/internal/console TestDBReadRequestBoundClampsAForgedDeadline 1.0 |
| -github.com/carlosframework/platform TestDBForwardPrintsNothingForABadAnswer 67.0 |
| -github.com/carlosframework/platform TestDBForwardLongRequestThroughTheEdge 44.5 |
| -github.com/carlosframework/platform TestDBForwardThroughTheBackhaulHop 44.1 |
| -github.com/carlosframework/platform TestDBForwardPullParityThroughTheCLI 4.8 |
| -github.com/carlosframework/platform TestDBForwardParityThroughTheCLI 4.6 |
| -github.com/carlosframework/platform TestDBForwardPullInterruptedLeavesNothing 2.1 |
| -github.com/carlosframework/platform TestDBForwardMixedVersions 1.9 |
| -github.com/carlosframework/platform TestDBForwardPullSavesNothingForABadAnswer 1.8 |
| -github.com/carlosframework/platform TestDBForwardRefusesSQLThatIsNotUTF8 1.0 |
| +github.com/carlosframework/platform/internal/host TestClaimAckRefreshProductionClient 20.09 |
| +github.com/carlosframework/platform/internal/host TestStalledIndexGetKeepsReconcileWalking 5.03 |
| +github.com/carlosframework/platform/internal/host TestPlan14Fix5MainEquivalence 4.37 |
| +github.com/carlosframework/platform/internal/host TestPlan9D3ProbeReadinessRefusesOutsideTheContract 3.60 |
| +github.com/carlosframework/platform/internal/host TestServingParkNestedBindMount 2.33 |
| +github.com/carlosframework/platform/internal/host TestFilesSeedOrdinaryPreparationRestore 2.30 |
| +github.com/carlosframework/platform/internal/host TestRunInterruptedWhileItsStopIsRetriedEndsAt125 2.25 |
| +github.com/carlosframework/platform/internal/host TestRunTimesOutAtItsDeadlineNotAFullTimeoutLater 1.50 |
| +github.com/carlosframework/platform/internal/host TestOfflineLandConvergesAfterACrashAtEveryPoint 1.32 |
| +github.com/carlosframework/platform/internal/host TestPublishRecordReportsARetriedCreateAsPublished 1.32 |
| +github.com/carlosframework/platform/internal/host TestOfflineMoveE2E 1.25 |
| +github.com/carlosframework/platform/internal/host TestInstallRenameWaitsForTheFloorLock 1.12 |
| +github.com/carlosframework/platform/internal/host TestOfflineLandMendsWhatIsMissing 1.02 |
| +github.com/carlosframework/platform/internal/host TestRunTimesOut 1.00 |
| +github.com/carlosframework/platform/internal/host TestPlan14GenerationRegistryRows 0.99 |
| +github.com/carlosframework/platform/internal/host TestRootJoinTakesNothingFromItsTrigger 0.98 |
| +github.com/carlosframework/platform/internal/host TestOfflineLandFailsEachMismatch 0.85 |
| +github.com/carlosframework/platform/internal/host TestStep8CensusChangesReachOnlyClaimMode 0.75 |
| +github.com/carlosframework/platform/internal/host TestPlan11Rev3ObservesRealInitTenant 0.72 |
| +github.com/carlosframework/platform/internal/host TestPlan14RecoveryKnownRefusal 0.70 |
| +github.com/carlosframework/platform/internal/host TestCanaryPointerReadWhenTheTicksIndexPollFails 0.69 |
| +github.com/carlosframework/platform/internal/host TestRollbackRestartResetsThenRestarts 0.63 |
| +github.com/carlosframework/platform/internal/host TestPlan14TimerIntentionBeforeMaterialization 0.62 |
| +github.com/carlosframework/platform/internal/host TestContendedFloorLockDefersTheInstall 0.61 |
| +github.com/carlosframework/platform/internal/host TestPlan14RollbackCanonicalReadiness 0.61 |
| +github.com/carlosframework/platform/internal/host TestPlan9D3ServingReadinessIsUnchanged 0.60 |
| +github.com/carlosframework/platform/internal/host TestProbeRefusesForeignPeer 0.60 |
| +github.com/carlosframework/platform/internal/host TestServingParkLedgerKeepsLastStartedDatabase 0.56 |
| +github.com/carlosframework/platform/internal/host TestPlan14FirstRegistrationOperations 0.54 |
| +github.com/carlosframework/platform/internal/host TestPlan14Fix4AdoptPerHostFailureExitsZero 0.54 |
| +github.com/carlosframework/platform/internal/host TestRelocationInstallJournalWaitsForTheSweep 0.54 |
| +github.com/carlosframework/platform/internal/host TestHeldStageLockWaiterOnARemovedFileRetries 0.52 |
| +github.com/carlosframework/platform/internal/host TestPlan14ExecutionPreinstallationAuthority 0.52 |
| +github.com/carlosframework/platform/internal/host TestPlan14ExecutionServingTransport 0.52 |
| +github.com/carlosframework/platform/internal/host TestPublishRecordRefusesWhatEnrollmentWouldRefuse 0.52 |
| +github.com/carlosframework/platform/internal/host TestPlan14RootMigrationTimerAdoption 0.51 |
| +github.com/carlosframework/platform/internal/host TestPlan14SwapFailureSurvivesLegacyTampering 0.51 |
| +github.com/carlosframework/platform/internal/host TestConsoleDigestRefusesOversized 0.50 |
| +github.com/carlosframework/platform/internal/host TestHomeTargetFreshStateShowsOnlyTheHomeToken 0.49 |
| +github.com/carlosframework/platform/internal/host TestPlan14RecoveryRebindAuthority 0.49 |
| +github.com/carlosframework/platform/internal/host TestFilesSeedCombinedRecoveryAllowsUpdate 0.45 |
| +github.com/carlosframework/platform/internal/host TestSystemUnitsSelectPrevByTheSeedsFloor 0.45 |
| +github.com/carlosframework/platform/internal/host TestPlan12RecoveryRestoreSourceDatabase 0.44 |
| +github.com/carlosframework/platform/internal/host TestT7WaitsOutAPublicationsRollback 0.44 |
| +github.com/carlosframework/platform/internal/host TestJoiningServes503UntilItCanHostAndPublishesNoEdgesFile 0.43 |
| +github.com/carlosframework/platform/internal/host TestRunSystemInstallChannelTakesPolicyAndIdentityTogether 0.42 |
| +github.com/carlosframework/platform/internal/host TestProbeEnvPinCoversAnInstanceBoxVariable 0.41 |
| +github.com/carlosframework/platform/internal/host TestRelocationReplacementActivationRefuses 0.41 |
| +github.com/carlosframework/platform/internal/host TestRevertReplays 0.40 |
| +github.com/carlosframework/platform/internal/host TestHeldPublicationRechecksInsideTheFreeze 0.39 |
| +github.com/carlosframework/platform/internal/host TestPlan11Fix1NoProcessDerivesCoverage 0.39 |
| +github.com/carlosframework/platform/internal/host TestServingParkRetainedReplacementWriteFailures 0.39 |
| +github.com/carlosframework/platform/internal/host TestPlan14Fix4IncidentProductionWiring 0.38 |
| +github.com/carlosframework/platform/internal/host TestPlan14GenerationRequiredArtifacts 0.38 |
| +github.com/carlosframework/platform/internal/host TestPlan14OrdinaryDeleteParticipation 0.38 |
| +github.com/carlosframework/platform/internal/host TestPlan14RootDispatchRejectsRegistryMutation 0.38 |
| +github.com/carlosframework/platform/internal/host TestFilesSeedPreparationChangedController 0.37 |
| +github.com/carlosframework/platform/internal/host TestPlan14SignedNamedRecoveryAuthority 0.37 |
| +github.com/carlosframework/platform/internal/host TestR2LegacyLockContentionRetries 0.37 |
| +github.com/carlosframework/platform/internal/host TestPlan14GenerationLocalRecoveryObligations 0.36 |
| +github.com/carlosframework/platform/internal/host TestRelocationReplacementRefusesTheWrongStamp 0.36 |
| +github.com/carlosframework/platform/internal/host TestPlan14ActiveRecoveryProcessCrash 0.34 |
| +github.com/carlosframework/platform/internal/host TestPlan14ExecutionMigrationIsIndependent 0.34 |
| +github.com/carlosframework/platform/internal/host TestPlan14InstalledLaunchProgramEvidence 0.34 |
| +github.com/carlosframework/platform/internal/host TestPlan9Fix4RootAssemblyIgnoresReplacedLegacyDirectory 0.34 |
| +github.com/carlosframework/platform/internal/host TestPlan14ProofObservationRejectsForgedRegistry 0.33 |
| +github.com/carlosframework/platform/internal/host TestRelocationInstallKeyCheckRefusesWhatTheTenantPlants 0.32 |
| +github.com/carlosframework/platform/internal/host TestRestoreWaitsForTheFloorLock 0.32 |
| +github.com/carlosframework/platform/internal/host TestPlan14Fix4OrdinaryProductionWrapper 0.31 |
| +github.com/carlosframework/platform/internal/host TestPlan14ParticipationFlagOffUpdate 0.31 |
| +github.com/carlosframework/platform/internal/host TestRunEndedDuringASwitchWaitGetsItsOwnResult 0.30 |
| +github.com/carlosframework/platform/internal/host TestRunOutputIsBoundedWhenEveryChunkFails 0.30 |
| +github.com/carlosframework/platform/internal/host TestRunStagingEndsAtTheRunsDeadline 0.30 |
| +github.com/carlosframework/platform/internal/host TestRunWhoseResultNeverLandedLeavesTheEndingToTheCloseOut 0.30 |
| +github.com/carlosframework/platform/internal/host TestRunWithoutAResultIsNotDone 0.30 |
| +github.com/carlosframework/platform/internal/host TestR2NamedFallbackMatchesMain 0.29 |
| +github.com/carlosframework/platform/internal/host TestClaimProductionCensusInstallsThroughReconciler 0.28 |
| +github.com/carlosframework/platform/internal/host TestPlan14AdoptionCanonicalReadiness 0.28 |
| +github.com/carlosframework/platform/internal/host TestPlan14RollbackProcessCrash 0.28 |
| +github.com/carlosframework/platform/internal/host TestPlan14SignedActiveFixAuthority 0.27 |
| +github.com/carlosframework/platform/internal/host TestR3FallbackDoubleRestart 0.27 |
| +github.com/carlosframework/platform/internal/host TestR3StickyBindingErrorMasksCrash 0.27 |
| +github.com/carlosframework/platform/internal/host TestPlan14NamedUnitsWithoutDeploymentRecord 0.26 |
| +github.com/carlosframework/platform/internal/host TestPlan9Fix1ResetWorkerAppliesBackoff 0.26 |
| +github.com/carlosframework/platform/internal/host TestPlan12PendingRecoveryRejectsChangedIdentity 0.25 |
| +github.com/carlosframework/platform/internal/host TestPlan13RecoveryHomeReceipt 0.25 |
| +github.com/carlosframework/platform/internal/host TestPlan14BoundRestartShapeRefusal 0.25 |
| +github.com/carlosframework/platform/internal/host TestPlan14FenceViewDeadline 0.25 |
| +github.com/carlosframework/platform/internal/host TestPlan14ProofBindingProvenance 0.25 |
| +github.com/carlosframework/platform/internal/host TestRecoverCensusDeadlineReachesTheSignedBinaryProof 0.25 |
| +github.com/carlosframework/platform/internal/host TestRelocationInstallPublishesAndReadsUnderTheHeldStageLock 0.25 |