feat: add durable relative task delays and outage recovery regression
This commit is contained in:
34
internal/storage/mysql/task_delay_test.go
Normal file
34
internal/storage/mysql/task_delay_test.go
Normal file
@@ -0,0 +1,34 @@
|
||||
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)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user