diff --git a/simulator/generation/property.rs b/simulator/generation/property.rs index 4f1537423..bab6da6fe 100644 --- a/simulator/generation/property.rs +++ b/simulator/generation/property.rs @@ -715,24 +715,44 @@ impl ArbitraryFrom<(&SimulatorEnv, &InteractionStats)> for Property { frequency( vec![ ( - f64::min(remaining_.read, remaining_.write), + if !env.opts.disable_insert_values_select { + f64::min(remaining_.read, remaining_.write) + } else { + 0.0 + }, Box::new(|rng: &mut R| property_insert_values_select(rng, env, &remaining_)), ), ( - remaining_.create / 2.0, + if !env.opts.disable_double_create_failure { + remaining_.create / 2.0 + } else { + 0.0 + }, Box::new(|rng: &mut R| property_double_create_failure(rng, env, &remaining_)), ), ( - remaining_.read, + if !env.opts.disable_select_limit { + remaining_.read + } else { + 0.0 + }, Box::new(|rng: &mut R| property_select_limit(rng, env)), ), ( - f64::min(remaining_.read, remaining_.write).min(remaining_.delete), + if !env.opts.disable_delete_select { + f64::min(remaining_.read, remaining_.write).min(remaining_.delete) + } else { + 0.0 + }, Box::new(|rng: &mut R| property_delete_select(rng, env, &remaining_)), ), ( - // remaining_.drop, - 0.0, + if !env.opts.disable_drop_select { + // remaining_.drop + 0.0 + } else { + 0.0 + }, Box::new(|rng: &mut R| property_drop_select(rng, env, &remaining_)), ), ( diff --git a/simulator/runner/cli.rs b/simulator/runner/cli.rs index 2102faab6..c76d7367d 100644 --- a/simulator/runner/cli.rs +++ b/simulator/runner/cli.rs @@ -58,6 +58,24 @@ pub struct SimulatorCLI { pub disable_create_index: bool, #[clap(long, help = "disable DROP Statement", default_value_t = false)] pub disable_drop: bool, + #[clap( + long, + help = "disable Insert-Values-Select Property", + default_value_t = false + )] + pub disable_insert_values_select: bool, + #[clap( + long, + help = "disable Double-Create-Failure Property", + default_value_t = false + )] + pub disable_double_create_failure: bool, + #[clap(long, help = "disable Select-Limit Property", default_value_t = false)] + pub disable_select_limit: bool, + #[clap(long, help = "disable Delete-Select Property", default_value_t = false)] + pub disable_delete_select: bool, + #[clap(long, help = "disable Drop-Select Property", default_value_t = false)] + pub disable_drop_select: bool, #[clap( long, help = "disable Select-Select-Optimizer Property", diff --git a/simulator/runner/env.rs b/simulator/runner/env.rs index 69e31b11e..b5a06d046 100644 --- a/simulator/runner/env.rs +++ b/simulator/runner/env.rs @@ -111,6 +111,11 @@ impl SimulatorEnv { drop_percent, update_percent, disable_select_optimizer: cli_opts.disable_select_optimizer, + disable_insert_values_select: cli_opts.disable_insert_values_select, + disable_double_create_failure: cli_opts.disable_double_create_failure, + disable_select_limit: cli_opts.disable_select_limit, + disable_delete_select: cli_opts.disable_delete_select, + disable_drop_select: cli_opts.disable_drop_select, page_size: 4096, // TODO: randomize this too max_interactions: rng.gen_range(cli_opts.minimum_tests..=cli_opts.maximum_tests), max_time_simulation: cli_opts.maximum_time, @@ -218,6 +223,11 @@ pub(crate) struct SimulatorOpts { pub(crate) drop_percent: f64, pub(crate) disable_select_optimizer: bool, + pub(crate) disable_insert_values_select: bool, + pub(crate) disable_double_create_failure: bool, + pub(crate) disable_select_limit: bool, + pub(crate) disable_delete_select: bool, + pub(crate) disable_drop_select: bool, pub(crate) max_interactions: usize, pub(crate) page_size: usize,