mirror of
https://github.com/rustfs/rustfs.git
synced 2026-09-09 05:36:24 +00:00
test(scanner): harden measured ABBA evidence claims (#7491)
Reject measured Scanner/Heal ABBA manifests whose mixed-version evidence uses the same baseline and candidate source revision or binary hash. Require crash fault modes and profile artifact names to match the exact supported sets, rejecting missing, duplicate, and unknown values. Update harness fixtures and regression coverage for same-build mixed-version claims and exact-set release evidence fields. Co-authored-by: zhi22915 <qiuzgang@gmail.com>
This commit is contained in:
@@ -168,7 +168,14 @@ class ScannerAbbaTest(unittest.TestCase):
|
||||
def measured_manifest(self):
|
||||
manifest = copy.deepcopy(self.manifest)
|
||||
manifest.update(evidence="measured", duration_seconds=900)
|
||||
manifest["candidate"]["revision"] = "b" * 40
|
||||
candidate_binary = self.root / "candidate-python"
|
||||
candidate_binary.write_bytes(self.binary.read_bytes() + b"\n")
|
||||
candidate_binary.chmod(0o755)
|
||||
manifest["candidate"] = {
|
||||
"binary": str(candidate_binary),
|
||||
"sha256": harness.digest(candidate_binary),
|
||||
"revision": "b" * 40,
|
||||
}
|
||||
manifest["release_evidence"] = {
|
||||
"topology": {
|
||||
"nodes": 3,
|
||||
@@ -548,6 +555,12 @@ class ScannerAbbaTest(unittest.TestCase):
|
||||
"missing crash": lambda manifest: manifest["release_evidence"]["crash_restart"].update(
|
||||
fault_modes=["process-restart"],
|
||||
),
|
||||
"unknown crash": lambda manifest: manifest["release_evidence"]["crash_restart"].update(
|
||||
fault_modes=["process-restart", "process-crash-restart", "kernel-panic"],
|
||||
),
|
||||
"duplicate crash": lambda manifest: manifest["release_evidence"]["crash_restart"].update(
|
||||
fault_modes=["process-restart", "process-restart", "process-crash-restart"],
|
||||
),
|
||||
"clean crash marker": lambda manifest: manifest["release_evidence"]["crash_restart"].update(
|
||||
unclean_shutdown_marker=False,
|
||||
),
|
||||
@@ -555,9 +568,24 @@ class ScannerAbbaTest(unittest.TestCase):
|
||||
"missing candidate": lambda manifest: manifest["release_evidence"]["mixed_version"].update(
|
||||
participating_revisions=["a" * 40, "c" * 40],
|
||||
),
|
||||
"same mixed revision": lambda manifest: manifest["candidate"].update(
|
||||
revision=manifest["baseline"]["revision"],
|
||||
),
|
||||
"same mixed binary": lambda manifest: manifest["candidate"].update(
|
||||
binary=manifest["baseline"]["binary"],
|
||||
sha256=manifest["baseline"]["sha256"],
|
||||
),
|
||||
"missing profile": lambda manifest: manifest["release_evidence"]["profile"].update(
|
||||
required_artifacts=["allocation-profile", "flamegraph", "rss-samples"],
|
||||
),
|
||||
"unknown profile": lambda manifest: manifest["release_evidence"]["profile"].update(
|
||||
required_artifacts=["allocation-profile", "flamegraph", "rss-samples", "save-frequency", "heapdump"],
|
||||
),
|
||||
"duplicate profile": lambda manifest: manifest["release_evidence"]["profile"].update(
|
||||
required_artifacts=[
|
||||
"allocation-profile", "flamegraph", "rss-samples", "save-frequency", "flamegraph",
|
||||
],
|
||||
),
|
||||
"bad profile hash": lambda manifest: manifest["release_evidence"]["profile"].update(
|
||||
profiler_config_sha256="not-a-sha",
|
||||
),
|
||||
|
||||
Reference in New Issue
Block a user