voucher/internal/pkg/script/script_test.go

158 lines
3.0 KiB
Go

package script
import (
"encoding/json"
"fmt"
"golang.org/x/sync/errgroup"
"testing"
"time"
"voucher/internal/biz/bo"
)
func Test_script(t *testing.T) {
startTime, err := time.Parse(time.DateTime, "2025-05-01 00:00:00")
if err != nil {
t.Error(err)
return
}
endTime, err := time.Parse(time.DateTime, "2025-05-01 02:00:03")
if err != nil {
t.Error(err)
return
}
duration := 5 * time.Hour
//requestUrl := URL
requestUrl := DEV_URL
if err = timeSliceQueryPush(startTime, endTime, duration, requestUrl); err != nil {
t.Error(err)
}
}
func Test_script2(t *testing.T) {
startTime, err := time.Parse(time.DateTime, "2025-05-31 00:00:00")
if err != nil {
t.Error(err)
return
}
endTime, err := time.Parse(time.DateTime, "2025-05-01 10:00:00")
if err != nil {
t.Error(err)
return
}
duration := 1 * time.Hour
requestUrl := SINGLE_URL
if err = pushWechatQuery(startTime, endTime, duration, requestUrl); err != nil {
t.Error(err)
}
}
func Test_moreTime(t *testing.T) {
startTime, err := time.Parse(time.DateTime, "2025-05-31 00:00:00")
if err != nil {
t.Error(err)
return
}
endTime, err := time.Parse(time.DateTime, "2025-05-31 10:00:00")
if err != nil {
t.Error(err)
return
}
//duration := 240 * time.Hour
duration := 1 * time.Hour
for start := startTime; start.Before(endTime); start = start.Add(duration) {
end := start.Add(duration) // 计算每次请求的结束时间
if end.After(endTime) {
end = endTime
}
// 创建请求体
requestBody := map[string]any{
"start_time": start.Format(time.DateTime),
"end_time": end.Format(time.DateTime),
"go_num": 2, // 并发数量
"time_slice_hours": 1, // 时间间隔
"product_no": "",
}
// 将请求体转换为 JSON 格式
bodyBytes, err2 := json.Marshal(requestBody)
if err2 != nil {
t.Error(err)
return
}
fmt.Printf("body:%s\n", string(bodyBytes))
}
}
func Test_goMoreTime(t *testing.T) {
startTime, err := time.Parse(time.DateTime, "2025-05-01 00:00:00")
if err != nil {
t.Error(err)
return
}
//endTime, err := time.Parse(time.DateTime, "2025-05-31 23:59:59")
endTime, err := time.Parse(time.DateTime, "2025-05-01 23:59:59")
if err != nil {
t.Error(err)
return
}
duration := 1 * time.Hour
eg := new(errgroup.Group)
eg.SetLimit(5)
for start := startTime; start.Before(endTime); start = start.Add(duration) {
end := start.Add(duration) // 计算每次请求的结束时间
if end.After(endTime) {
end = endTime
}
req := &bo.FindInBatchesUseBo{
StartTime: &start,
EndTime: &end,
}
// 将请求体转换为 JSON 格式
reqStr, err2 := json.Marshal(req)
if err2 != nil {
t.Error(err)
return
}
eg.Go(func() error {
// 任务逻辑...
time.Sleep(2 * time.Second)
return fmt.Errorf("任务失败")
})
fmt.Printf("%s\n", string(reqStr))
}
err = eg.Wait() // 仅返回第一个错误
if err != nil {
fmt.Println(err)
} else {
fmt.Println("所有任务完成")
}
}