package translate import ( "errors" "testing" ) // 用线上真实的报错文本验证限流识别:识别不出来就不会重试,一次限流就把整篇译文废掉。 func TestIsThrottling(t *testing.T) { prodErr := errors.New(`translate request: SDK.ServerError ErrorCode: Throttling.User Recommend: https://api.aliyun.com/troubleshoot?q=Throttling.User&product=alimt RequestId: 019F3BB4-F581-5AEE-80BE-74DB1FB673E1 Message: Request was denied due to user flow control.`) if !isThrottling(prodErr) { t.Fatal("线上 Throttling.User 报错未被识别为限流,重试不会触发") } if !isThrottling(errors.New("Request was denied due to user flow control.")) { t.Error("flow control 文案应识别为限流") } // 非限流错误不应重试(例如参数错误),否则白白拖慢失败路径 if isThrottling(errors.New("translate failed: code=10004 msg=empty source text")) { t.Error("参数错误被误判为限流,会导致无谓重试") } if isThrottling(nil) { t.Error("nil 不应判为限流") } }