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