blob: d88752a3ac8281b8134c704a9e0a56c012eebdbf [file] [log] [blame]
// 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<double> 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<double> kAdditiveFactor{&kPseudoMetricsEffectFeature,
"additive_factor", 0};
} // namespace internal
const base::Feature kNonUniformityValidationFeature{
"UMANonUniformityLogNormal", base::FEATURE_DISABLED_BY_DEFAULT};
const base::FeatureParam<double> kLogNormalMean{
&kNonUniformityValidationFeature, "mean", 4.605};
const base::FeatureParam<double> kLogNormalDelta{
&kNonUniformityValidationFeature, "delta", 0};
const base::FeatureParam<double> kLogNormalStdDev{
&kNonUniformityValidationFeature, "stdDev", 1.238};
int GetPseudoMetricsSample(double sample) {
return base::saturated_cast<int>(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