diff --git a/lading_payload/src/dogstatsd.rs b/lading_payload/src/dogstatsd.rs index 0d42d5e65..eed745059 100644 --- a/lading_payload/src/dogstatsd.rs +++ b/lading_payload/src/dogstatsd.rs @@ -113,15 +113,15 @@ impl Default for MetricWeights { #[serde(deny_unknown_fields)] #[cfg_attr(feature = "arbitrary", derive(arbitrary::Arbitrary))] pub struct ValueConf { - /// Odds out of 256 that the value will be a float and not an integer. - float_probability: f32, + /// Probability that the value will be a float and not an integer. + float_probability: Probability, range: ConfRange, } impl ValueConf { /// Create a new instance of `ValueConf` according to the args #[must_use] - pub fn new(float_probability: f32, range: ConfRange) -> Self { + pub fn new(float_probability: Probability, range: ConfRange) -> Self { Self { float_probability, range, @@ -136,7 +136,7 @@ impl ValueConf { impl Default for ValueConf { fn default() -> Self { Self { - float_probability: 0.5, // 50% + float_probability: Probability::try_new(0.5).expect("0.5 is in [0.0, 1.0]"), range: ConfRange::Inclusive { min: i64::MIN, max: i64::MAX, diff --git a/lading_payload/src/dogstatsd/common.rs b/lading_payload/src/dogstatsd/common.rs index 3ea307946..47bd77088 100644 --- a/lading_payload/src/dogstatsd/common.rs +++ b/lading_payload/src/dogstatsd/common.rs @@ -6,7 +6,7 @@ use rand::{ prelude::Distribution, }; -use crate::{Error, Generator}; +use crate::{Error, Generator, common::config::Probability}; use super::{ConfRange, ValueConf}; @@ -21,12 +21,12 @@ pub enum NumValue { #[derive(Clone, Debug)] pub(crate) enum NumValueGenerator { Constant { - float_probability: f32, + float_probability: Probability, int: i64, float: f64, }, Uniform { - float_probability: f32, + float_probability: Probability, int_distr: Uniform, float_distr: Uniform, }, @@ -67,7 +67,7 @@ impl<'a> Generator<'a> for NumValueGenerator { int, float, } => { - if prob < *float_probability { + if prob < float_probability.get() { Ok(NumValue::Float(*float)) } else { Ok(NumValue::Int(*int)) @@ -78,7 +78,7 @@ impl<'a> Generator<'a> for NumValueGenerator { int_distr, float_distr, } => { - if prob < *float_probability { + if prob < float_probability.get() { Ok(NumValue::Float(float_distr.sample(rng))) } else { Ok(NumValue::Int(int_distr.sample(rng)))