package cloud import ( "errors" "testing" "time" ) // TestTencentRetryDelay 验证限频错误指数退避与最大重试次数。 // Logan.Li func TestTencentRetryDelay(t *testing.T) { rateLimitErr := &tencentAPIError{Code: "RequestLimitExceeded", Message: "frequency limit"} delay, retry := tencentRetryDelay(rateLimitErr, 0) if !retry || delay != 500*time.Millisecond { t.Fatalf("首次限频退避错误: retry=%v delay=%s", retry, delay) } delay, retry = tencentRetryDelay(rateLimitErr, 2) if !retry || delay != 2*time.Second { t.Fatalf("第三次限频退避错误: retry=%v delay=%s", retry, delay) } if _, retry = tencentRetryDelay(rateLimitErr, tencentMaxAttempts-1); retry { t.Fatal("达到最大次数后不应继续重试") } if _, retry = tencentRetryDelay(errors.New("鉴权失败"), 0); retry { t.Fatal("非限频错误不应重试") } } // TestBillingFetcherProviders 验证五家云厂商均已注册账单拉取器。 // Logan.Li func TestBillingFetcherProviders(t *testing.T) { for _, provider := range SupportedBillingProviders { if fetcher := NewBillingFetcher(provider, "ak", "sk"); fetcher == nil { t.Fatalf("云厂商 %s 未注册账单拉取器", provider) } } }