From 5868cfc4908bf5fc453a5323c28e0e517282af64 Mon Sep 17 00:00:00 2001 From: Tim Wiederhake Date: Mon, 4 Jan 2021 12:30:13 +0100 Subject: [PATCH] cpu-cpuid: Remove xmltodict usage in parseCPU 'xmltodict' is a Python module that is not installed by default. Replace it, so the dependencies of cpu-gather.py do not change when both scripts are merged. Signed-off-by: Tim Wiederhake Reviewed-by: Jiri Denemark --- tests/cputestdata/cpu-cpuid.py | 35 +++++++++++----------------------- 1 file changed, 11 insertions(+), 24 deletions(-) diff --git a/tests/cputestdata/cpu-cpuid.py b/tests/cputestdata/cpu-cpuid.py index 2db0552b12..ebf8cdee7e 100755 --- a/tests/cputestdata/cpu-cpuid.py +++ b/tests/cputestdata/cpu-cpuid.py @@ -4,7 +4,6 @@ import argparse import os import sys import json -import xmltodict import xml.etree.ElementTree @@ -105,31 +104,19 @@ def parseQemu(path, features): def parseCPUData(path): - cpuData = {} - with open(path, "rb") as f: - data = xmltodict.parse(f) - - for leaf in data["cpudata"]["cpuid"]: - feature = {"type": "cpuid"} - feature["eax_in"] = int(leaf["@eax_in"], 0) - feature["ecx_in"] = int(leaf["@ecx_in"], 0) - for reg in ["eax", "ebx", "ecx", "edx"]: - feature[reg] = int(leaf["@" + reg], 0) + cpuData = dict() + for f in xml.etree.ElementTree.parse(path).getroot(): + if f.tag == "cpuid": + reg_list = ["eax_in", "ecx_in", "eax", "ebx", "ecx", "edx"] + elif f.tag == "msr": + reg_list = ["index", "eax", "edx"] + else: + continue + feature = {"type": f.tag} + for reg in reg_list: + feature[reg] = int(f.attrib.get(reg, "0"), 0) addFeature(cpuData, feature) - - if "msr" in data["cpudata"]: - if not isinstance(data["cpudata"]["msr"], list): - data["cpudata"]["msr"] = [data["cpudata"]["msr"]] - - for msr in data["cpudata"]["msr"]: - feature = {"type": "msr"} - feature["index"] = int(msr["@index"], 0) - feature["edx"] = int(msr["@edx"], 0) - feature["eax"] = int(msr["@eax"], 0) - - addFeature(cpuData, feature) - return cpuData