Uranium follow-ups from #13545
维护者通常 2 天内回复
@bneradt 已经在做这个了。
开始于 2026年10月21日。
评估
这个 Issue 还没有评估数据。
描述
#13545 moved the end-to-end suite from AuTest to Uranium. It was merged with review items still open, so that master would stop drifting from the branch. This issue tracks those items. The first two matter most: the first gets harder to fix with every new test, and the second is already broken.
Do these first
- Procedural tests don't check diags.log for errors. AuTest's
MakeATSProcessfailed any test whosediags.logcontainedERROR:,FATAL:orUnrecognized configuration value, unless the test setdisable_log_checks. Uranium only does this for replay manifests (tests/tools/uranium/replay.py:805-811). A procedural test'sATS.close()checks onlyFATAL:(tests/tools/uranium/services/ats.py:649). Sodisable_log_checks=is accepted and ignored, even thoughh2/origin_test_helpers.py:30documents it as replacing the default checks. Fix: haveATS.close()apply the same three exclusions unlessdisable_log_checksis set, and add a framework self-test where a procedural test withERROR:in diags goes red. Some tests will then needdisable_log_checks=True. Also mention it in.claude/skills/convert-autest-to-urtest/SKILL.md. -
contrib/docker/ubuntu/resolute/Dockerfile:87no longer configures. It still passes-DENABLE_AUTEST=OFF, whichCMakeLists.txt:167-168now turns into a fatal error. Switch it toENABLE_URTEST.
Assertions lost in conversion
-
remap/test_virtualhost_remap.py:110-112. The refused reload runs without-mand expects exit 0, andwait_for_status(..., "fail")is a substring match that always succeeds. Changingctx.failtoctx.completeatsrc/proxy/VirtualHost.cc:545leaves the test green. Assert the task status from the JSON-RPC response, or restore-mwithexpected_return_codes=(2,). -
remap/replay/remap_https.test.yamlchecks status codes only, where the AuTest checked eight runs against gold files. It also sendsContent-Length: 0from every origin, so the plaintext chunked path that #13763 meant to keep is gone. Bothremap-https-200_2.goldfiles are now unreferenced. -
tls/test_tls_sni_groups.py:116-121,129-134pins-tls1_2/-tls1_3on the client, so it no longer proves the server enforcesvalid_tls_versions_in. -
tls/test_tls_resumption_scope.py:221-224,261-262checks only thetraffic_ctlexit code. The AuTests also required thesni.yamlandssl_multicert.yamlreload tasks. The client-CA scope case counts only^200 bbb.example.com$in squid.log, where the AuTest allowed nobbb.example.comline at all. -
pluginTest/slice/test_slice_stale_generation.py:258-261. The regex alternation isn't grouped, so only one branch requireskey mixed. -
pluginTest/rate_limit/rate_limit_sni_exclude.test.yamlcan't tell an excluded SNI from a limited one on admission. Add an exclude forLimiter on limited.example.com is excluded. This gap came over from the AuTest. -
pluginTest/rate_limit/test_rate_limit_sni_queue.pychecks onlyQueueing the VCand_active <= _limit|received signal. The AuTest also requiredEnabling queued VCand excludedRejecting connectionandReleasing a slot, active entities == [0-9]{4,}(#13406, #13681, #13721). Without them, the test stays green when the holder never releases its slot and the release path goes unexercised. Restore all three insni_queue_scenario.pyfor the queue client.
Framework
- The sandbox-name collision guard crashes under xdist.
tests/tools/uranium/plugin.py:123-128raisesUsageErroron every worker, so a-n 2run with two files that both definetest_sameends inINTERNALERROR(assert not crashitem). Do the check on the controller, or skip it whenhasattr(config, "workerinput"). -
plugin.py:105catches onlyBlockingIOError. Anflockthat fails withENOLCKon a user-supplied--sandboxescapes asINTERNALERROR. CatchOSErrorand raise aUsageErrorthat names the directory. - Sandbox names drop the file path (
runtime.py:186-194), so two files that both definetest_fooshare one directory across selective runs. Add the module stem to the name, or document it. -
runtime.py:168-183.item_sandboxandprocedural_sandboxare identical, anditem_sandboxnever readsreplay_path. Revertingparent=inreplay.pyleaves the self-tests green, so add a self-test that does. -
tests/tools/uranium/tests/test_replay.py:29coversstop_after_clientonly asFalseandTrue, never with the key absent. -
jsonrpc/config_reload_helpers.py:81.wait_for_statusmatches summary text, so a root task increatedcan return early. The fixedsleep(15)checks intest_config_reload_dedup.py,test_config_reload_reserve_subtask.pyandtest_config_reload_full_smoke.pyhave the same weakness. -
tools/uranium/tests/test_config.py:100-111no longer pins the test inventory. Add a check that no*.test.pyremains undertests/uranium_tests.
Docs and stale references
-
doc/developer-guide/testing/config-reload-ext.en.rstdocumentsTest.AddConfigReload(), which no longer exists, anddoc/developer-guide/config-reload-framework.en.rst:1194-1208names the oldconfig_reload_*.test.pyfiles. -
doc/developer-guide/api/functions/TSHttpHookAdd.en.rst:148-149still namestest_hooks.test.py. -
plugins/experimental/jax_fingerprint/README:154,161still says AuTests. -
ci/rat-exclude.txt:79namestests/uranium_tests/autest-site/min_cfg, which doesn't exist. The files are intests/tools/uranium/min_cfg. -
tests/README.md:130-131still says to write tests as a scenario class withrun().
Check or clean up
-
tls/replay/dual_cert_default_ec_rsa.replay.yaml:24now listssigned-san-ec.pem,signed-san.pem, while master had RSA first. Confirm the reorder was intended, since the mixed layout is no longer tested. -
pluginTest/slice/replay/slice_body_headers.test.yaml:68-70addsConnection: closeto/dup_te, which master's replay didn't have. Confirm it isn't hiding a Uranium-only problem. - Orphaned files:
timeout/slow_server_uds.yaml(the UDS variant ofinactive_client_timeoutno longer runs),session_sharing/gold/200_two.gold,h2/gold/h2o-pool-reuse-metrics.gold. Either wire them up or delete them. - Running as root,
test_ssl_multicert_partial_reload.pyfails because the generated 0600 keys are owned by root, andtest_runroot_verifyinrunroot/test_runroot.pyfails because root can read the 0400 file.tests/urtest.shruns Podman as container root by default. -
tests/uv.lockis now committed on master (first time, via #13545), while 10.2.x and 10.1.x runuv syncwith no committed lock and resolve the newest versions on every CI run. Keeping the lock on master looks right: CI is reproducible and Dependabot can see it (it opened #13878 and #13879 for certifi and urllib3 within half an hour of the merge). Confirm the lock is intended, and note it intests/README.mdso people know to merge the Dependabot bumps.
- 主要语言
- C++
- 星标
- 2k
- 派生
- 882
- 平均合并
- 3 天 21 小时
- 30 天内合并 PR
- 101
环境准备
- 没有 Dockerfile 或 Docker Compose 文件
- 没有 Pull Request 模板
- 阅读贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
apache/trafficserver 的其他 Issue
-
Network Performance
难度 5/5 一周以上 新手友好度 42/100
apache/trafficserver#13890 ·
维护者通常 2 天内回复
-
Branch build clones: mirror stalls, clone timeout and controller memory可能已有人在做 @bryancall 于 11 天前认领。 未关闭CI
apache/trafficserver#13839 · 已指派 1 人 ·
维护者通常 2 天内回复
-
traffic_ctl: apply --error-level to config reload results可能已有人在做 @brbzull0 于 13 天前认领。 未关闭traffic_ctl
apache/trafficserver#13832 · 已指派 1 人 ·
维护者通常 2 天内回复
-
header_rewrite: rm-destination after set-destination URL crashes traffic_server可能已有人在做 @moonchen 于 20 天前认领。 未关闭Bug Crash header_rewrite Plugins
apache/trafficserver#13800 · 已指派 1 人 ·
维护者通常 2 天内回复
-
ssl_multicert: entries without dest_ip can override the default certificate可能已有人在做 @toxicteddy00077 于 7 天前认领。 未关闭Configuration SSL
难度 4/5 3-5 天 新手友好度 48/100
apache/trafficserver#13798 · 2 条评论 · 已指派 1 人 ·
维护者通常 2 天内回复
查看 apache/trafficserver 的全部 Issue
相似的 Issue
-
Rifle-variant weapon offsets are saved under the pistol's name [FRIK-093]可能已有人在做 @rollingrock 今天认领。 未关闭bug
难度 2/5 1-3 小时 新手友好度 72/100
rollingrock/Fallout-4-VR-Body#182 ·
-
[Bug] [Go] Ack returns nil when the server answers with a non-OK status可能已有人在做 @leizhiyuan 今天认领。 未关闭
难度 2/5 1-3 小时 新手友好度 84/100
apache/rocketmq-clients#1465 ·
维护者通常 2 天内回复
-
难度 1/5 1 小时以内 新手友好度 68/100
cp-algorithms/cp-algorithms#1738 ·
维护者通常 3 天内回复
-
难度 2/5 1-3 小时 新手友好度 72/100
KhronosGroup/Vulkan-Tutorial#534 ·
-
难度 2/5 1-3 小时 新手友好度 65/100
维护者通常 2 天内回复