in mozetl/graphics/graphics_telemetry_dashboard.py [0:0]
def validate(p):
name = p.get("environment/system/os/name") or "w"
version = p.get("environment/system/os/version") or "0"
if name == "Linux":
p["OSVersion"] = None
p["OS"] = "Linux"
p["OSName"] = "Linux"
elif name == "Windows_NT":
spmaj = p.get("environment/system/os/servicePackMajor") or "0"
p["OSVersion"] = version + "." + str(spmaj)
p["OS"] = "Windows-" + version + "." + str(spmaj)
p["OSName"] = "Windows"
elif name == "Darwin":
p["OSVersion"] = version
p["OS"] = "Darwin-" + version
p["OSName"] = "Darwin"
else:
p["OSVersion"] = version
p["OS"] = "{0}-{1}".format(name, version)
p["OSName"] = name
# Telemetry data isn't guaranteed to be well-formed so unfortunately
# we have to do some validation on it. If we get to the end, we set
# p['valid'] to True, and this gets filtered over later. In addition
# we have a wrapper below to help fetch strings that may be null.
if not p.get("environment/build/version", None):
return p
p["FxVersion"] = p["environment/build/version"].split(".")[0]
# Verify that we have at least one adapter.
try:
adapter = p["environment/system/gfx/adapters"][0]
except (KeyError, IndexError, TypeError):
return p
if adapter is None or not hasattr(adapter, "__getitem__"):
return p
def t(obj, key):
return obj.get(key, None) or "Unknown"
# We store the device ID as a vendor/device string, because the device ID
# alone is not enough to determine whether the key is unique.
#
# We also merge 'Intel Open Source Technology Center' with the device ID
# that should be reported, 0x8086, for simplicity.
vendor_id = t(adapter, "vendorID")
if vendor_id == "Intel Open Source Technology Center":
p["vendorID"] = "0x8086"
else:
p["vendorID"] = vendor_id
p["deviceID"] = "{0}/{1}".format(p["vendorID"], t(adapter, "deviceID"))
p["driverVersion"] = "{0}/{1}".format(p["vendorID"], t(adapter, "driverVersion"))
p["deviceAndDriver"] = "{0}/{1}".format(p["deviceID"], t(adapter, "driverVersion"))
p["driverVendor"] = adapter.get("driverVendor", None)
p["valid"] = True
return p