Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 9 additions & 2 deletions app/verify/signals.py
Original file line number Diff line number Diff line change
Expand Up @@ -110,8 +110,15 @@ def cpu_signals(rec: dict[str, Any], now_year: int) -> list[Signal]:
_cmp_ge("threads_ge_cores", rec.get("threads"), rec.get("cores"), hard=True),
_cmp_ge("boost_ge_base", rec.get("boost_clock_ghz"), rec.get("base_clock_ghz"), hard=True),
_cmp_ge("max_tdp_ge_tdp", rec.get("max_tdp_w"), rec.get("tdp_w"), hard=False),
_cmp_ge("passmark_multi_ge_single", rec.get("passmark_cpu_mark"),
rec.get("passmark_single"), hard=False),
# No passmark_cpu_mark vs passmark_single check: PassMark's CPU Mark and
# its Single Thread Rating are separately normalised scales, so their
# magnitudes are not comparable. The old check read that as a defect —
# it failed 51 of 51 single-core parts, and its failures tracked absolute
# weakness rather than parallelism (failing median CPU Mark 641 vs 19,657
# for passing), with near-ties at the boundary (Core 2 Duo E8600: 1378 vs
# 1388). It only ever "held" because modern CPU Marks are large.
# Cinebench and Geekbench below DO report both figures on one scale, so
# multi >= single is a real expectation there.
_cmp_ge("cb23_multi_ge_single", rec.get("cinebench_r23_multi"),
rec.get("cinebench_r23_single"), hard=False),
_cmp_ge("gb_multi_ge_single", rec.get("geekbench_multi"),
Expand Down
14 changes: 14 additions & 0 deletions tests/verify/test_signals.py
Original file line number Diff line number Diff line change
Expand Up @@ -122,3 +122,17 @@ def test_core_count_under_the_wrong_vendor_field_fails():
def test_core_count_in_the_right_field_passes():
rec = {"manufacturer": "amd", "stream_processors": 2048, "release_date": "2020-01-01"}
assert _named(signals.gpu_signals(rec, NOW), "vendor_core_field").result == "pass"


def test_passmark_figures_are_not_compared():
"""CPU Mark and Single Thread Rating are separately normalised PassMark
scales; a single-core part legitimately scores lower on the first."""
rec = {"cores": 1, "threads": 1, "passmark_cpu_mark": 195, "passmark_single": 301}
names = {s.name for s in signals.cpu_signals(rec, NOW)}
assert "passmark_multi_ge_single" not in names


def test_cinebench_multi_below_single_still_fails():
"""One scale, so multi < single there really is a defect."""
rec = {"cores": 8, "threads": 16, "cinebench_r23_multi": 900, "cinebench_r23_single": 1500}
assert _named(signals.cpu_signals(rec, NOW), "cb23_multi_ge_single").result == "fail"
Loading