// Copyright 2021 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "components/metrics/metrics_data_validation.h" #include "base/feature_list.h" #include "base/metrics/field_trial_params.h" #include "base/numerics/safe_conversions.h" namespace metrics { namespace internal { // Used to assess the reliability of field trial data by injecting different // levels of effects to pseudo metrics. These pseudo metrics are just mirrors of // some existing metrics. const base::Feature kPseudoMetricsEffectFeature{ "UMAPseudoMetricsEffect", base::FEATURE_DISABLED_BY_DEFAULT}; // The multiplicative factor to apply to all samples. Modified samples will be // recorded in a pseudo metric alongside with the real metric. const base::FeatureParam kMultiplicativeFactor{ &kPseudoMetricsEffectFeature, "multiplicative_factor", 1.0}; // The additive factor to apply to every samples. For time metrics, we'll add // |additive_factor| milliseconds to samples. Modified samples will be recorded // in a pseudo metric alongside with the real metric. const base::FeatureParam kAdditiveFactor{&kPseudoMetricsEffectFeature, "additive_factor", 0}; } // namespace internal const base::Feature kNonUniformityValidationFeature{ "UMANonUniformityLogNormal", base::FEATURE_DISABLED_BY_DEFAULT}; const base::FeatureParam kLogNormalMean{ &kNonUniformityValidationFeature, "mean", 4.605}; const base::FeatureParam kLogNormalDelta{ &kNonUniformityValidationFeature, "delta", 0}; const base::FeatureParam kLogNormalStdDev{ &kNonUniformityValidationFeature, "stdDev", 1.238}; double GetPseudoMetricsSample(double sample) { return sample * internal::kMultiplicativeFactor.Get() + internal::kAdditiveFactor.Get(); } base::TimeDelta GetPseudoMetricsSample(base::TimeDelta sample) { return sample * internal::kMultiplicativeFactor.Get() + base::Milliseconds(internal::kAdditiveFactor.Get()); } } // namespace metrics