glean/tools/analysis/ping-patterns
Michael Droettboom e9e56be7bf
[doc only] Spellcheck all the things (#723)
2020-02-20 18:34:15 +05:30
..
README.md [doc only] Spellcheck all the things (#723) 2020-02-20 18:34:15 +05:30
config.py Add license headers 2019-12-11 11:13:00 -05:00
ping-patterns.py Add license headers 2019-12-11 11:13:00 -05:00

README.md

This directory contains a tool to analyze the patterns of baseline and metrics pings received on a per-client basis in Fenix. These pattern analyses are then summarized in a single plot showing various patterns and issues found in the data.

Requirements

A recent version of matplotlib.

Collecting input data

The input data is created using the following Redash query:

SELECT
  client_info.client_id,
  DATE(submission_timestamp) AS date,
  'metrics' as ping_type,
  client_info.app_display_version AS app_version,
  client_info.telemetry_sdk_build AS telemetry_sdk_build,
  client_info.android_sdk_version AS sdk,
  ping_info.start_time AS start_time,
  ping_info.end_time AS end_time,
  0 AS duration,
  ping_info.seq AS seq
FROM
  org_mozilla_fenix_nightly.metrics
WHERE
  DATE(submission_timestamp) > "2019-11-01"
UNION ALL
SELECT
  client_info.client_id,
  DATE(submission_timestamp) AS date,
  'baseline' as ping_type,
  client_info.app_display_version AS app_version,
  client_info.telemetry_sdk_build AS telemetry_sdk_build,
  client_info.android_sdk_version AS sdk,
  ping_info.start_time AS start_time,
  ping_info.end_time AS end_time,
  metrics.timespan.glean_baseline_duration.value AS duration,
  ping_info.seq AS seq
FROM
  org_mozilla_fenix_nightly.baseline
WHERE
  DATE(submission_timestamp) > "2019-11-01"

This query is also available here.

Save the result of the query as a .csv file to use as input to this script.

Configuring the script

Configuration is performed by editing the config.py script. There are comments as to what the fields do there.

Running the script

To run the script, pass the input dataset and the output directory on the commandline.

$ ./ping-patterns.py dataset.csv plots

Output

The output directory will contain one .svg file per client with a timeline of the baseline and metrics pings received from that client.

Baseline pings are in blue. The thick part of the line represents the active session as returned in the baseline.duration metric.

Metrics pings are in red. Issues found with metrics pings are notated with a number to the right. Hover over the number to display a tooltip with further information about the issue.

Gray vertical lines are midnight local time. Dashed gray vertical lines are 04:00 local time.

Green vertical lines indicate the first ping coming from an interesting revision that contains a related fix.