package services import "testing" // 查询并行度必须跟部署的 CPU 核数对齐。 // // 事故背景:曾经写死 8,而部署只有 4 核 → 多个子查询互相抢 CPU, // 实测 76% 的调度周期被限流,连 label values 都要 20 秒。 // 现在改成从 resourcesCPU 推导,用户在界面改 CPU 时并行度自动跟随。 func TestQueryParallelism(t *testing.T) { cases := []struct { cpu string want int }{ {"4", 4}, {"8", 8}, {"2", 2}, {"1", 2}, // 低于 2 核按 2 兜底 {"16", 12}, // 上限 12 {"", 4}, // 空值走默认 {"abc", 4}, // 非法值走默认 {"4000m", 4}, // 毫核写法 {"500m", 2}, // 0.5 核 → 向上取整 1 → 不低于 2 {"6000m", 6}, } for _, c := range cases { if got := queryParallelism(c.cpu); got != c.want { t.Errorf("queryParallelism(%q) = %d, want %d", c.cpu, got, c.want) } } }