in mozetl/graphics/graphics_telemetry_dashboard.py [0:0]
def web_gl_statistics_for_key(key):
histogram_pings = general_pings.filter(lambda p: p.get(key) is not None)
histogram_pings = repartition(histogram_pings)
# Note - we're counting sessions where WebGL succeeded or failed,
# rather than the raw number of times either succeeded or failed.
# Also note that we don't double-count systems where both is true.
# Instead we only count a session's successes if it had no failures.
failure_rdd = histogram_pings.filter(lambda p: p[key][0] > 0)
success_rdd = histogram_pings.filter(lambda p: p[key][0] == 0 and p[key][1] > 0)
failure_count = failure_rdd.count()
failure_by_os = map_x_to_count(failure_rdd, "OS")
failure_by_vendor = map_x_to_count(failure_rdd, "vendorID")
failure_by_device = map_x_to_count(failure_rdd, "deviceID")
failure_by_driver = map_x_to_count(failure_rdd, "driverVersion")
success_count = success_rdd.count()
success_by_os = map_x_to_count(success_rdd, "OS")
def get_compositor_any_os(p):
if p["OSName"] != "Windows":
# This data is not reliable yet - see bug 1247148.
return "unknown"
return get_compositor(p)
success_by_cc = success_rdd.map(lambda p: (get_compositor_any_os(p),)).countByKey()
return {
"successes": {
"count": success_count,
"os": success_by_os,
"compositors": success_by_cc,
},
"failures": {
"count": failure_count,
"os": failure_by_os,
"vendors": failure_by_vendor,
"devices": failure_by_device,
"drivers": failure_by_driver,
},
}