feat: schedule persistent archive jobs with console management

This commit is contained in:
2026-09-23 11:29:32 +08:00
parent 6eb429e21f
commit 0140c78ea7
32 changed files with 2077 additions and 20 deletions

View File

@@ -65,3 +65,28 @@ func TestMetricsAddressIsExplicitAndValidated(t *testing.T) {
}
}
}
func TestArchiveRuntimeRequiresBoundedPersistentVolumeConfig(t *testing.T) {
base := map[string]string{"ORBIT_MYSQL_DSN": "test"}
get := func(k string) string { return base[k] }
cfg, err := FromEnv(get)
if err != nil || cfg.ArchiveRoot != "" || cfg.ArchiveMaxBytes != 10<<30 {
t.Fatal(cfg, err)
}
base["ORBIT_ARCHIVE_ROOT"] = "/private/archive"
if _, err = FromEnv(get); err == nil {
t.Fatal("missing volume identity accepted")
}
base["ORBIT_ARCHIVE_STORAGE_ID"] = "11111111111111111111111111111111"
if _, err = FromEnv(get); err != nil {
t.Fatal(err)
}
for k, v := range map[string]string{"ORBIT_ARCHIVE_MAX_BYTES": "0", "ORBIT_ARCHIVE_TICK_INTERVAL": "100ms", "ORBIT_ARCHIVE_ROOT": "relative", "ORBIT_ARCHIVE_STORAGE_ID": "not-an-id"} {
old := base[k]
base[k] = v
if _, err = FromEnv(get); err == nil {
t.Fatal("bad archive config", k)
}
base[k] = old
}
}