Skip to content

Instantly share code, notes, and snippets.

@ekr
Created December 5, 2017 20:51
Show Gist options
  • Save ekr/598208b5399faf303453b10cb11647bf to your computer and use it in GitHub Desktop.
Save ekr/598208b5399faf303453b10cb11647bf to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{"cells":[{"cell_type":"code","source":["# Databricks notebook source\nimport json\nfrom moztelemetry import Dataset\n\n\n\ndef jsonToString(data):\n return json.dumps(data, indent=4, separators=(',', ': '))\n\ndef filterLogsByStatus(logs, status_list):\n return logs.filter(lambda x: x[\"payload\"][\"status\"] in status_list)\n\n\n\ndef successCriteriaAtLeastOne(test):\n if test is None:\n return None\n \n for r in test[\"results\"]:\n if r[\"event\"] in [\"load\", \"loadend\"]:\n return True\n\n return False\n\ndef successCriteriaFirstOne(test):\n if test is None:\n return None\n \n if len(test[\"results\"]) > 0:\n if test[\"results\"][0][\"event\"] in [\"load\", \"loadend\"]:\n return True\n\n return False\n\ndef rawCountSuccess(logs, successCriteria, label):\n finished_logs = filterLogsByStatus(logs, [\"finished\"])\n \n success = finished_logs.map(lambda x: successCriteria(findTestByLabel(x, label))).countByValue()\n \n total = sum(success.values())\n \n for k in success:\n success[k] = \"%d (%.1f%%)\" % (success[k], success[k] * 100.0 / total)\n \n print \"Success: %s\\n\\n\" % jsonToString(success)\n\ndef findTestByLabel(x, label):\n for t in x[\"payload\"][\"tests\"]:\n if t[\"label\"] == label:\n return t\n \n return None\n\n\ndef overallResults(logs):\n exp = [\"google-tls12\", \"google-tls13-exp\", \"google-tls13-draft-18\"]\n for e in exp:\n rawCountSuccess(logs, successCriteriaAtLeastOne, e)\n\n\n\n# COMMAND ----------\n\ndef overallResults(logs):\n exp = [\"google-tls12\", \"google-tls13-exp\", \"google-tls13-draft-18\"]\n for e in exp:\n print e\n rawCountSuccess(logs, successCriteriaAtLeastOne, e)\n\n\n\n# COMMAND ----------\n\ndef fetchLogs(channel, begin, end):\n dataset = Dataset.from_source('telemetry')\n\n d = (dataset.where(docType=\"tls13-middlebox-ghack\")\n .where(appName=\"Firefox\")\n .where(appUpdateChannel=channel)\n .where(submissionDate=lambda x: x >= begin and x <= end))\n\n logs = d.records(sc)\n\n return logs\n\n"],"metadata":{},"outputs":[],"execution_count":1},{"cell_type":"code","source":["logs = fetchLogs(\"beta\", \"20171126\", \"20171206\")"],"metadata":{},"outputs":[],"execution_count":2},{"cell_type":"code","source":["logs.count()"],"metadata":{},"outputs":[],"execution_count":3},{"cell_type":"code","source":["overallResults(logs)"],"metadata":{},"outputs":[],"execution_count":4}],"metadata":{"name":"TLS 1.3 Middlebox Ghack Beta","notebookId":3812},"nbformat":4,"nbformat_minor":0}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment