metrics_data_validation.cc 2.1 KB

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