Files
aiops/backend/cloud/tencent_test.go
T
Logan.Li 132fe9ba97 feat: 补全多云资产与账单同步
- 接入 AWS、华为云和 Azure 资产及账单 API

- 按原始币种隔离统计并修正账号服务器数

- 修复侧栏菜单展开后的滚动行为
2026-07-29 06:15:00 +08:00

38 lines
1.2 KiB
Go

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)
}
}
}