xref: /aosp_15_r20/external/cronet/components/metrics/metrics_data_validation.cc (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
1 // Copyright 2021 The Chromium Authors
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #include "components/metrics/metrics_data_validation.h"
6 
7 #include "base/feature_list.h"
8 #include "base/metrics/field_trial_params.h"
9 #include "base/numerics/safe_conversions.h"
10 
11 namespace metrics {
12 namespace internal {
13 
14 // Used to assess the reliability of field trial data by injecting different
15 // levels of effects to pseudo metrics. These pseudo metrics are just mirrors of
16 // some existing metrics.
17 BASE_FEATURE(kPseudoMetricsEffectFeature,
18              "UMAPseudoMetricsEffect",
19              base::FEATURE_DISABLED_BY_DEFAULT);
20 
21 // The multiplicative factor to apply to all samples. Modified samples will be
22 // recorded in a pseudo metric alongside with the real metric.
23 const base::FeatureParam<double> kMultiplicativeFactor{
24     &kPseudoMetricsEffectFeature, "multiplicative_factor", 1.0};
25 
26 // The additive factor to apply to every samples. For time metrics, we'll add
27 // |additive_factor| milliseconds to samples. Modified samples will be recorded
28 // in a pseudo metric alongside with the real metric.
29 const base::FeatureParam<double> kAdditiveFactor{&kPseudoMetricsEffectFeature,
30                                                  "additive_factor", 0};
31 
32 }  // namespace internal
33 
34 BASE_FEATURE(kNonUniformityValidationFeature,
35              "UMANonUniformityLogNormal",
36              base::FEATURE_DISABLED_BY_DEFAULT);
37 
38 const base::FeatureParam<double> kLogNormalMean{
39     &kNonUniformityValidationFeature, "mean", 4.605};
40 const base::FeatureParam<double> kLogNormalDelta{
41     &kNonUniformityValidationFeature, "delta", 0};
42 const base::FeatureParam<double> kLogNormalStdDev{
43     &kNonUniformityValidationFeature, "stdDev", 1.238};
44 
GetPseudoMetricsSample(double sample)45 double GetPseudoMetricsSample(double sample) {
46   return sample * internal::kMultiplicativeFactor.Get() +
47          internal::kAdditiveFactor.Get();
48 }
49 
GetPseudoMetricsSample(base::TimeDelta sample)50 base::TimeDelta GetPseudoMetricsSample(base::TimeDelta sample) {
51   return sample * internal::kMultiplicativeFactor.Get() +
52          base::Milliseconds(internal::kAdditiveFactor.Get());
53 }
54 
55 }  // namespace metrics
56