fix(archive): BAK-05 Report liefert existing_in_storage fuer BAK-08
Report enthielt bisher nur Abweichungen. BAK-08 braucht eine deterministisch sortierte Liste bestaetigt existierender Objekte als Stichprobengrundlage, nicht nur "keine Abweichung". Ergaenzt vor BAK-08-Start, real neu getestet (9/9) und auf 131 erneut ausgeloest.
This commit is contained in:
@@ -89,6 +89,38 @@ func TestReconcile_ExistingButCorruptedObjectProducesNoFinding(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
// TestReconcile_ExistingInStorageIsStableSamplingBasis ist der Nachweis,
|
||||
// dass Reconcile eine deterministisch sortierte Liste ALLER bestaetigt
|
||||
// existierenden Objekte liefert (DB-Eintrag UND Storage-Objekt vorhanden)
|
||||
// - dies ist die Stichprobengrundlage, die Archive BAK-08 weiterverwendet,
|
||||
// ohne selbst neu zu sortieren/filtern.
|
||||
func TestReconcile_ExistingInStorageIsStableSamplingBasis(t *testing.T) {
|
||||
db := []DBEntry{
|
||||
{StorageKey: "documents/z/revisions/r1", DocumentID: "z", RevisionID: "r1"},
|
||||
{StorageKey: "documents/a/revisions/r1", DocumentID: "a", RevisionID: "r1"},
|
||||
{StorageKey: "documents/fehlt/revisions/r1", DocumentID: "fehlt", RevisionID: "r1"},
|
||||
}
|
||||
storage := []string{
|
||||
"documents/z/revisions/r1",
|
||||
"documents/a/revisions/r1",
|
||||
}
|
||||
|
||||
report := Reconcile(db, storage)
|
||||
|
||||
want := []string{"documents/a/revisions/r1", "documents/z/revisions/r1"}
|
||||
if len(report.ExistingInStorage) != len(want) {
|
||||
t.Fatalf("erwartet %d bestaetigt existierende objekte, habe %d: %+v", len(want), len(report.ExistingInStorage), report.ExistingInStorage)
|
||||
}
|
||||
for i, w := range want {
|
||||
if report.ExistingInStorage[i].StorageKey != w {
|
||||
t.Fatalf("sortierreihenfolge falsch: %v, want beginnend mit %v", report.ExistingInStorage, want)
|
||||
}
|
||||
}
|
||||
if len(report.MissingInStorage) != 1 || report.MissingInStorage[0].StorageKey != "documents/fehlt/revisions/r1" {
|
||||
t.Fatalf("missing_in_storage unerwartet: %+v", report.MissingInStorage)
|
||||
}
|
||||
}
|
||||
|
||||
// TestReconcile_DeterministicOrdering ist der Nachweis fuer die
|
||||
// Stabilitaets-Anforderung: gleiche Eingabe liefert bei mehreren Laeufen
|
||||
// IMMER dieselbe Reihenfolge (Voraussetzung dafuer, dass Archive BAK-08
|
||||
|
||||
Reference in New Issue
Block a user