Files
orbit/internal/storage/mysql/task_delay_test.go

35 lines
1.1 KiB
Go

package mysql
import (
"encoding/json"
"testing"
"git.yuntuo.hk/k2safe/orbit/pulse/service"
)
func TestRelativeDelayPreservesLegacySubmissionDigest(t *testing.T) {
// 升级前已规范化的实际请求形状;新可选字段为零时不能改变原幂等摘要。
legacy := json.RawMessage(`{"queue_id":"11111111111111111111111111111111","handler":"object.prepare","handler_version":"v1","payload_version":"v1","payload":{"n":9007199254740993},"task_timeout_ms":86400000,"recovery_safety":"RECONCILE_ONLY","retry":{"max_attempts":1,"initial_delay_ms":0,"max_delay_ms":0,"attempt_timeout_ms":30000}}`)
var in service.SubmitInput
if err := json.Unmarshal(legacy, &in); err != nil {
t.Fatal(err)
}
in, err := service.NormalizeSubmit(in)
if err != nil {
t.Fatal(err)
}
want, err := requestDigest(legacy)
if err != nil {
t.Fatal(err)
}
got, err := requestDigest(in)
if err != nil || got != want {
t.Fatal("zero delay changed a legacy request identity", err)
}
in.DelayMS = 1000
changed, err := requestDigest(in)
if err != nil || changed == want {
t.Fatal("nonzero delay missing from request identity", err)
}
}