(factory-2305.B)hwid_tool: Improve debug output on HWID unmatch.
To provide complete information on what has been matched and why other data
failed, we should provide more messages for match results.
(cherry-pick from https://gerrit.chromium.org/gerrit/#change,24177)
BUG=chrome-os-partner:10002
TEST=gooftool -v 4 verify_hwid
Change-Id: I2184b93c328c5f6c659755a311913e01b57ecdb7
Reviewed-on: https://gerrit.chromium.org/gerrit/24213
Reviewed-by: Hung-Te Lin <hungte@chromium.org>
Reviewed-by: Jay Kim <yongjaek@chromium.org>
Tested-by: Jay Kim <yongjaek@chromium.org>
diff --git a/py/hwid_tool.py b/py/hwid_tool.py
index 7458706..203461b 100755
--- a/py/hwid_tool.py
+++ b/py/hwid_tool.py
@@ -534,6 +534,18 @@
values where the index values correspond to existing board data that
matches the probe results.
"""
+ def CompareMaps(caption, map1, map2):
+ if all(map2.get(c, None) == v for c, v in map1.items()):
+ return True
+ # Try to provide more debug information
+ logging.debug('Unmatchd set: %s', caption)
+ logging.debug('---')
+ for c, v1 in map2.items():
+ v2 = map2.get(c, None)
+ logging.debug('%s: Expected="%s", Probed="%s" (%s)', c, v1, v2,
+ 'matched' if (v1 == v2) else 'UNMATCHED')
+ logging.debug('---')
+
results = Obj(
matched_components={},
matched_volatiles=[],
@@ -552,13 +564,11 @@
for c, v in probe_results.volatiles.items()
if v in volatile_reference_map)
for volatile_tag, volatile_map in device.volatile_map.items():
- if (all(results.matched_volatiles.get(c, None) == v
- for c, v in volatile_map.items())
+ if (CompareMaps(volatile_tag, volatile_map, results.matched_volatiles)
and volatile_tag not in results.matched_volatile_tags):
- results.matched_volatile_tags.append(volatile_tag)
+ results.matched_volatile_tags.append(volatile_tag)
for initial_config_tag, ic_map in device.initial_config_map.items():
- if (all(probe_results.initial_configs.get(ic_class, None) == ic_value
- for ic_class, ic_value in ic_map.items())
+ if (CompareMaps(initial_config_tag, ic_map, probe_results.initial_configs)
and initial_config_tag not in results.matched_initial_config_tags):
results.matched_initial_config_tags.append(initial_config_tag)
return results