Files
linuxcncWebWASM/scripts/test_xyzac_trt_parity.py

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()