fix(test): grok QueryQuota 用例排除后台 /v1/models 同步请求,消除请求计数竞态

QueryQuota 返回前经 scheduleGrokObservedModelsSync 异步拉取 GET /v1/models,
该请求是否早于 upstream.snapshot() 落到 mock 取决于调度时序,三个精确断言
请求数的用例约 0.5% 偶发多出一条。新增 quotaSnapshot 只返回配额探测链路的
请求,三处断言改用它。
This commit is contained in:
feeeei
2026-08-24 12:02:53 +08:00
parent cbe258fd12
commit 3b81776429
@@ -301,6 +301,22 @@ func (u *grokHybridUpstream) snapshot() ([]*http.Request, [][]byte) {
return requests, bodies
}
// quotaSnapshot 返回配额探测链路的请求及请求体,不含 scheduleGrokObservedModelsSync
// 在 QueryQuota 返回后异步发出的 GET /v1/models:该请求是否已落到上游取决于调度时序。
func (u *grokHybridUpstream) quotaSnapshot() ([]*http.Request, [][]byte) {
requests, bodies := u.snapshot()
quotaRequests := make([]*http.Request, 0, len(requests))
quotaBodies := make([][]byte, 0, len(bodies))
for i, req := range requests {
if req.URL.Path == "/v1/models" {
continue
}
quotaRequests = append(quotaRequests, req)
quotaBodies = append(quotaBodies, bodies[i])
}
return quotaRequests, quotaBodies
}
func (r *grokQuotaProxyRepo) GetByID(_ context.Context, id int64) (*Proxy, error) {
r.calls++
return r.proxies[id], nil
@@ -741,7 +757,7 @@ func TestGrokQuotaServiceQueryQuotaFreeFallsBackToGrok45(t *testing.T) {
require.EqualValues(t, 2_000_000, *result.Snapshot.Tokens.Limit)
require.True(t, result.HeadersObserved)
requests, bodies := upstream.snapshot()
requests, bodies := upstream.quotaSnapshot()
require.Len(t, requests, 3)
responseCalls := 0
for i, req := range requests {
@@ -781,7 +797,7 @@ func TestGrokQuotaServiceQueryQuotaPaidBillingSkipsActiveProbe(t *testing.T) {
require.Empty(t, result.Model)
require.Nil(t, result.LocalUsage24h)
requests, _ := upstream.snapshot()
requests, _ := upstream.quotaSnapshot()
require.Len(t, requests, 2)
for _, req := range requests {
require.Equal(t, "/v1/billing", req.URL.Path)
@@ -806,7 +822,7 @@ func TestGrokQuotaServiceQueryQuotaCustomPaidMonthlyLimitSkipsActiveProbe(t *tes
require.InDelta(t, monthlyLimit, *result.Billing.MonthlyLimitCents, 1e-9)
require.Nil(t, result.Snapshot)
requests, _ := upstream.snapshot()
requests, _ := upstream.quotaSnapshot()
require.Len(t, requests, 2)
for _, req := range requests {
require.Equal(t, "/v1/billing", req.URL.Path)