package memory import ( "testing" "git.yeij.top/AskaEth/Cyrene_v2/internal/runtime/embedding" ) // TestEmbeddingTimeoutFitsReviewBudget 钉住一条**跨包**口径:embedding 单次调用的 // 独立超时必须严格小于入库前审查的单条总预算(defaultReviewTimeout = 20s)。 // // 这不是风格问题:2026-10-07 实测的故障形态就是「端点主机写成 localhost → 先试 // IPv6 ::1 → 连接等系统超时(Windows 上约 21s)」,一次 embedding 失败正好吃光 20s // 预算,整条审查超时(`memory/review: context deadline exceeded`),排在后面的 T1 // 灰区判定连执行机会都没有。地址规范化(embedding.normalizeEndpointURL)治的是根, // 本断言守的是「就算再有新的卡死来源,也得先把预算留给后续步骤」。 // // embedding 侧同一口径也有一条钉值测试(api_url_test.go),两边互为护栏。 func TestEmbeddingTimeoutFitsReviewBudget(t *testing.T) { t.Parallel() if embedding.DefaultRequestTimeout <= 0 { t.Fatalf("embedding.DefaultRequestTimeout = %s, 必须为正", embedding.DefaultRequestTimeout) } if embedding.DefaultRequestTimeout >= defaultReviewTimeout { t.Fatalf("embedding 单次超时 %s 必须严格小于审查总预算 %s", embedding.DefaultRequestTimeout, defaultReviewTimeout) } }