tanya/elasticilm/ilm_test.go
zhangkun9038@dingtalk.com 321e6a2402 测试ilm策略
2025-03-29 21:16:29 +08:00

57 lines
1.6 KiB
Go

package elasticilm
import (
"fmt"
// "math"
"testing"
"time"
)
// TestEnsureILMPolicy 测试 ensureILMPolicy 函数并生成退化阶段时间矩阵
func TestEnsureILMPolicy(t *testing.T) {
// 定义时间框架
timeFrames := []string{"1m", "3m", "5m", "15m", "30m", "1H", "2H", "4H", "6H", "12H", "1D", "2D", "5D", "1W"}
// 定义日期范围
startDate := time.Date(2018, 1, 1, 0, 0, 0, 0, time.UTC)
endDate := time.Date(2025, 3, 1, 0, 0, 0, 0, time.UTC)
currentDate := time.Date(2025, 4, 1, 0, 0, 0, 0, time.UTC)
// 初始化结果矩阵
results := make([][]string, 0)
// 遍历每个时间框架
for _, period := range timeFrames {
row := make([]string, 0)
// 遍历每个月
for d := startDate; !d.After(endDate); d = d.AddDate(0, 1, 0) {
daysDiff := int(currentDate.Sub(d).Hours() / 24)
// 默认配置
config := map[string]float64{
"timeDecayFactor": 0.5,
"periodGranularityFactor": 0.5,
"warmPhaseMultiplier": 1.0,
"coldPhaseMultiplier": 2.0,
"deletePhaseMultiplier": 3.0,
}
// 使用非线性冷却模型计算各个阶段的时间
warmDays, coldDays, deleteDays := NonLinearCoolingModel(daysDiff, period, config)
// 格式化结果
result := fmt.Sprintf("Warm: %d, Cold: %d, Delete: %d", warmDays, coldDays, deleteDays)
row = append(row, result)
}
results = append(results, row)
}
// 打印结果矩阵
for i, period := range timeFrames {
fmt.Printf("Time Frame: %s\n", period)
for j, result := range results[i] {
fmt.Printf(" Month: %s - %s\n", startDate.AddDate(0, j, 0).Format("2006-01"), result)
}
}
}