We now collect targeting attributes from the Nimbus targeting context
into a set of metrics under the `nimbus_targeting_context` category.
Additionally, we also collect information about the Nimbus targeting
context's environment, i.e., things that are not attributes in the
context but are available, e.g., through the `prefIsUserSet` or
`preferenceValue` filters, in the `nimbus_targeting_environment`
category. Any errors encountered in evaluating the attributes or getting
pref values are recorded in metrics in the targeting environment.
Finally, we also optionally report the entire contents of the
`nimbus_targeting_context` category as a stringified JSON blob in a
metric, which is disabled by default, to enable debugging of targeting
context errors in the field.
Tests have been added in `test_targeting_context_metrics.py` which will
generate a dump of the targeting context metadata (i.e., what fields and
prefs are present) and compare them to the contents of `metrics.yaml`,
which will ensure the metric and targeting context stay in sync.
This patch does not limit the actual targeting context of Nimbus to
these attributes. That will be completed in a follow-up.
Differential Revision: https://phabricator.services.mozilla.com/D228908