41 lines
1.6 KiB
Python
41 lines
1.6 KiB
Python
#!/usr/bin/env python3
|
|
import hashlib
|
|
import json
|
|
import subprocess
|
|
import unittest
|
|
from pathlib import Path
|
|
|
|
ROOT = Path(__file__).resolve().parents[1]
|
|
REPORT = ROOT / "coverage/xyzac-trt-trace-parity.report.json"
|
|
|
|
|
|
class XyzacParityTest(unittest.TestCase):
|
|
@classmethod
|
|
def setUpClass(cls):
|
|
subprocess.run(["python3", "scripts/compare_xyzac_native_wasm_trace.py"], cwd=ROOT, check=True)
|
|
cls.report = json.loads(REPORT.read_text(encoding="utf-8"))
|
|
|
|
def test_verified(self):
|
|
self.assertEqual(self.report["status"], "verified")
|
|
self.assertEqual(self.report["native_wasm"]["status"], "verified")
|
|
self.assertEqual(self.report["native_worker"]["status"], "verified")
|
|
self.assertEqual(self.report["first_divergent_tick"], None)
|
|
for comparison in ("native_wasm", "native_worker"):
|
|
for level in ("protocol", "control", "state", "canonical", "recovery"):
|
|
self.assertEqual(self.report[comparison]["levels"][level]["status"], "verified")
|
|
|
|
def test_first_divergence_positive_sample(self):
|
|
sample = self.report["positive_divergence_sample"]
|
|
self.assertTrue(sample["detected"])
|
|
self.assertEqual(sample["first_divergent_tick"], 2)
|
|
self.assertEqual(sample["difference_path"], "$[1].active_type")
|
|
|
|
def test_self_hash(self):
|
|
unsigned = dict(self.report)
|
|
actual = unsigned.pop("report_sha256")
|
|
self.assertEqual(actual, hashlib.sha256(json.dumps(unsigned, ensure_ascii=False, sort_keys=True, separators=(",", ":")).encode()).hexdigest())
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|