Files
sub2api-overdraft/backend/internal/service/grok_stream_idle_test.go
IanShaw027 ec9e733606 feat(grok): stream idle 换号、team+model 冷却与 RT 刷新打散
- Grok 流默认启用上游读空闲超时,首包前返回可 failover 错误并短冷却
- 同 team_id 账号在 429/free-usage 后对同模型共享进程内冷却,粘连与选号均过滤
- TokenRefreshService 已覆盖 Grok;NeedsRefresh 增加按账号稳定 jitter 防 stampede
2026-08-07 13:56:38 +08:00

26 lines
761 B
Go

//go:build unit
package service
import (
"testing"
"time"
"github.com/stretchr/testify/require"
)
func TestResolveGrokStreamIdleTimeout(t *testing.T) {
require.Equal(t, 90*time.Second, resolveGrokStreamIdleTimeout(90))
require.Equal(t, defaultGrokStreamIdleTimeout, resolveGrokStreamIdleTimeout(0))
require.Equal(t, defaultGrokStreamIdleTimeout, resolveGrokStreamIdleTimeout(-1))
}
func TestGrokStreamIdleFailoverError(t *testing.T) {
account := &Account{ID: 1, Platform: PlatformGrok, Type: AccountTypeOAuth}
err := grokStreamIdleFailoverError(account, 180*time.Second)
require.NotNil(t, err)
require.Equal(t, 502, err.StatusCode)
require.True(t, err.SafeToFailoverAfterWrite)
require.Contains(t, string(err.ResponseBody), "empty_upstream")
}