feat: add durable schedule management and multi-node crash recovery
This commit is contained in:
38
internal/timezone/zone_test.go
Normal file
38
internal/timezone/zone_test.go
Normal file
@@ -0,0 +1,38 @@
|
||||
package timezone
|
||||
|
||||
import (
|
||||
"crypto/sha256"
|
||||
"fmt"
|
||||
"testing"
|
||||
"time"
|
||||
)
|
||||
|
||||
func TestFrozenSnapshot(t *testing.T) {
|
||||
if got := fmt.Sprintf("%x", sha256.Sum256(data)); got != "b2d18a7c8fa8142097a48c99609fb3c92db5ee98bc740294e57eab8ae9f94779" {
|
||||
t.Fatal("snapshot changed without a new version")
|
||||
}
|
||||
t.Setenv("ZONEINFO", t.TempDir())
|
||||
for _, name := range []string{"UTC", "Asia/Shanghai", "America/New_York", "Australia/Lord_Howe", "Pacific/Apia"} {
|
||||
zone, err := Load(name, Version)
|
||||
if err != nil || zone == nil {
|
||||
t.Fatalf("load %s: %v", name, err)
|
||||
}
|
||||
again, err := Load(name, Version)
|
||||
if err != nil || again != zone {
|
||||
t.Fatal("cache changed")
|
||||
}
|
||||
}
|
||||
zone, _ := Load("Asia/Shanghai", Version)
|
||||
_, offset := time.Date(2026, 1, 1, 0, 0, 0, 0, zone).Zone()
|
||||
if offset != 8*3600 {
|
||||
t.Fatal("wrong frozen zone")
|
||||
}
|
||||
for _, name := range []string{"", "Local", "../UTC", "/etc/localtime"} {
|
||||
if _, err := Load(name, Version); err == nil {
|
||||
t.Fatal("accepted external timezone")
|
||||
}
|
||||
}
|
||||
if _, err := Load("UTC", "unavailable-version"); err == nil {
|
||||
t.Fatal("silently upgraded frozen version")
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user