ONNX
onnxruntime
onnx-mlir
quantization
fp32
ONNX_Models / tests /test_netron_exports.py
purejomo's picture
Finalize public ONNX/ONNX-MLIR validation release
ed3aeeb
Raw
History Blame Contribute Delete
4.68 kB
from __future__ import annotations
import csv
import json
from collections import Counter
from pathlib import Path
import pytest
from scripts.netron_capture_common import discover_slots, sha256
from scripts.validate_netron_exports import png_structure
ROOT = Path(__file__).resolve().parents[1]
REPORT = ROOT / "reports/graphs/netron"
pytestmark = pytest.mark.skipif(
not (REPORT / "netron_capture_inventory.csv").is_file(),
reason="optional Netron export package is not retained in the compact repository",
)
def read_csv(name: str) -> list[dict[str, str]]:
with (REPORT / name).open(newline="", encoding="utf-8") as handle:
return list(csv.DictReader(handle))
def test_input_inventory_has_42_onnx_variants() -> None:
rows = discover_slots(ROOT)
assert len(rows) == 42
assert len({row["model_id"] for row in rows}) == 21
assert Counter(row["artifact_status"] for row in rows) == {"AVAILABLE": 42}
assert Counter(row["format"] for row in rows if row["artifact_status"] == "AVAILABLE") == {
"onnx": 42,
}
def test_capture_inventory_and_canonical_pair_are_complete() -> None:
rows = read_csv("netron_capture_inventory.csv")
assert len(rows) == 42
assert Counter(row["capture_status"] for row in rows) == {"PASS": 42}
assert Counter(row["format"] for row in rows if row["capture_status"] == "PASS") == {
"onnx": 42,
}
canonical = [row for row in rows if row["canonical_s7_selected"].lower() == "true"]
assert len(canonical) == 42
assert all(row["capture_status"] == "PASS" for row in canonical)
def test_all_netron_exports_have_valid_png_chunks_and_metadata() -> None:
rows = read_csv("netron_capture_inventory.csv")
for row in rows:
metadata_path = ROOT / row["metadata_json"]
metadata = json.loads(metadata_path.read_text(encoding="utf-8"))
assert sha256(metadata_path) == row["metadata_json_sha256"]
if row["capture_status"] != "PASS":
assert metadata["status"] == "NOT_AVAILABLE"
continue
assert metadata["status"] == "PASS"
assert metadata["tool_versions"]["netron"] == "9.2.0"
assert metadata["policy"]["conversion_performed"] is False
assert metadata["policy"]["tflite_to_onnx_for_netron"] is False
assert metadata["policy"]["allocator_work_performed"] is False
output = ROOT / row["output_png"]
ui = ROOT / row["ui_proof_png"]
graph_png = png_structure(output)
ui_png = png_structure(ui)
assert sha256(output) == row["output_png_sha256"]
assert (graph_png["width"], graph_png["height"]) == (
int(row["output_png_width"]),
int(row["output_png_height"]),
)
assert (ui_png["width"], ui_png["height"]) == (1920, 1080)
def test_report_describes_direct_netron_export() -> None:
summary = json.loads((REPORT / "netron_capture_summary.json").read_text(encoding="utf-8"))
validation = json.loads((REPORT / "validation.json").read_text(encoding="utf-8"))
report = (REPORT / "netron_capture_report.md").read_text(encoding="utf-8")
assert summary["status"] == "PASS"
assert summary["counts"]["netron_exports_pass"] == 42
assert validation["status"] == "PASS"
assert validation["checks_failed"] == 0
assert "21개 모델의 FP32·공개 양자화 ONNX 42개" in report
def test_model_matrix_has_21_canonical_passes() -> None:
rows = read_csv("netron_model_matrix.csv")
assert len(rows) == 21
assert Counter(row["pair_netron_status"] for row in rows) == {"PASS": 21}
def test_artifact_manifest_checksums_are_current() -> None:
manifest_path = REPORT / "artifact_manifest.json"
manifest = json.loads(manifest_path.read_text(encoding="utf-8"))
assert manifest["status"] == "PASS"
assert manifest["failure_code"] is None
assert manifest["category_counts"]["netron_export_png"] == 42
assert manifest["category_counts"]["netron_ui_proof_png"] == 42
assert manifest["category_counts"]["capture_metadata"] == 42
assert "original_capture_log" not in manifest["category_counts"]
for record in manifest["files"]:
path = ROOT / record["path"]
assert path.is_file(), record["path"]
assert path.stat().st_size == record["bytes"], record["path"]
assert sha256(path) == record["sha256"], record["path"]
checksum_lines = (REPORT / "artifacts.sha256").read_text(encoding="utf-8").splitlines()
checksum_map = {line.split(" ", 1)[1]: line.split(" ", 1)[0] for line in checksum_lines}
assert checksum_map["reports/graphs/netron/artifact_manifest.json"] == sha256(manifest_path)