Skip to content

Commit 114aead

Browse files
authored
DAG-1963 get the correct suite file in burn_in for non-generated tasks (#44)
1 parent 0b406d1 commit 114aead

File tree

6 files changed

+98
-14
lines changed

6 files changed

+98
-14
lines changed

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
# Changelog
2+
## 0.5.1 - 2022-08-12
3+
* Fix parsing the suite name from evergreen.yml for burn_in_* tasks.
24

35
## 0.5.0 - 2022-08-01
46

Cargo.lock

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "mongo-task-generator"
3-
version = "0.5.0"
3+
version = "0.5.1"
44
repository = "https://github.com/mongodb/mongo-task-generator"
55
authors = ["Decision Automation Group <[email protected]>"]
66
edition = "2018"

src/evergreen/evg_config_utils.rs

Lines changed: 90 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ use shrub_rs::models::params::ParamValue;
99
use shrub_rs::models::{commands::FunctionCall, task::EvgTask, variant::BuildVariant};
1010

1111
use crate::evergreen_names::{
12-
ENTERPRISE_MODULE, GENERATE_RESMOKE_TASKS, IS_FUZZER, LINUX, MACOS, WINDOWS,
12+
ENTERPRISE_MODULE, GENERATE_RESMOKE_TASKS, IS_FUZZER, LINUX, MACOS, RUN_RESMOKE_TESTS, WINDOWS,
1313
};
1414
use crate::utils::task_name::remove_gen_suffix;
1515

@@ -308,11 +308,18 @@ impl EvgConfigUtils for EvgConfigUtilsImpl {
308308
///
309309
/// Name of task the given resmoke suite executes.
310310
fn find_suite_name<'a>(&self, task: &'a EvgTask) -> &'a str {
311-
let suite = self.get_gen_task_var(task, "suite");
312-
if let Some(suite) = suite {
313-
suite
311+
let optional_vars = get_resmoke_vars(task);
312+
313+
let generated_task_name = remove_gen_suffix(&task.name);
314+
315+
if let Some(vars) = optional_vars {
316+
if let Some(ParamValue::String(suite_var)) = vars.get("suite") {
317+
suite_var
318+
} else {
319+
generated_task_name
320+
}
314321
} else {
315-
remove_gen_suffix(&task.name)
322+
generated_task_name
316323
}
317324
}
318325

@@ -654,6 +661,38 @@ fn get_generate_resmoke_func(task: &EvgTask) -> Option<&FunctionCall> {
654661
}
655662
}
656663

664+
/// Get the vars passed to "generate resmoke task" or "run tests".
665+
///
666+
/// # Arguments
667+
///
668+
/// * `task` - Shrub task to query.
669+
///
670+
/// # Returns
671+
///
672+
/// vars forwarded to resmoke.py.
673+
fn get_resmoke_vars(task: &EvgTask) -> Option<&HashMap<String, ParamValue>> {
674+
let command = if let Some(commands) = &task.commands {
675+
commands.iter().find(|c| {
676+
if let Function(func) = c {
677+
return func.func == GENERATE_RESMOKE_TASKS || func.func == RUN_RESMOKE_TESTS;
678+
}
679+
false
680+
})
681+
} else {
682+
None
683+
};
684+
685+
if let Some(Function(func)) = command {
686+
if let Some(vars) = &func.vars {
687+
Some(vars)
688+
} else {
689+
None
690+
}
691+
} else {
692+
None
693+
}
694+
}
695+
657696
#[cfg(test)]
658697
mod tests {
659698
use maplit::btreemap;
@@ -706,7 +745,6 @@ mod tests {
706745
"var2".to_string() => ParamValue::from("value2"),
707746
},
708747
),
709-
fn_call("run tests"),
710748
]),
711749
..Default::default()
712750
};
@@ -728,7 +766,6 @@ mod tests {
728766
"var2".to_string() => ParamValue::from("value2"),
729767
},
730768
),
731-
fn_call("run tests"),
732769
]),
733770
..Default::default()
734771
};
@@ -739,7 +776,7 @@ mod tests {
739776

740777
// find_suite_name tests.
741778
#[test]
742-
fn test_find_suite_name_should_use_suite_var_if_it_exists() {
779+
fn test_find_suite_name_should_use_suite_var_for_generated_task_if_it_exists() {
743780
let evg_task = EvgTask {
744781
name: "my_task_gen".to_string(),
745782
commands: Some(vec![
@@ -752,7 +789,6 @@ mod tests {
752789
"var2".to_string() => ParamValue::from("value2"),
753790
},
754791
),
755-
fn_call("run tests"),
756792
]),
757793
..Default::default()
758794
};
@@ -761,8 +797,31 @@ mod tests {
761797
assert_eq!(evg_config_utils.find_suite_name(&evg_task), "my suite name");
762798
}
763799

800+
// find_suite_name tests.
764801
#[test]
765-
fn test_find_suite_name_should_use_task_name_if_no_var() {
802+
fn test_find_suite_name_should_use_suite_var_for_non_generated_task_if_it_exists() {
803+
let evg_task = EvgTask {
804+
name: "my_task".to_string(),
805+
commands: Some(vec![
806+
fn_call("hello world"),
807+
fn_call_with_params(
808+
"run tests",
809+
hashmap! {
810+
"var1".to_string() => ParamValue::from("value1"),
811+
"suite".to_string() => ParamValue::from("my suite name"),
812+
"var2".to_string() => ParamValue::from("value2"),
813+
},
814+
),
815+
]),
816+
..Default::default()
817+
};
818+
let evg_config_utils = EvgConfigUtilsImpl::new();
819+
820+
assert_eq!(evg_config_utils.find_suite_name(&evg_task), "my suite name");
821+
}
822+
823+
#[test]
824+
fn test_find_suite_name_should_use_task_name_for_generated_task_if_no_var() {
766825
let evg_task = EvgTask {
767826
name: "my_task_gen".to_string(),
768827
commands: Some(vec![
@@ -774,7 +833,27 @@ mod tests {
774833
"var2".to_string() => ParamValue::from("value2"),
775834
},
776835
),
777-
fn_call("run tests"),
836+
]),
837+
..Default::default()
838+
};
839+
let evg_config_utils = EvgConfigUtilsImpl::new();
840+
841+
assert_eq!(evg_config_utils.find_suite_name(&evg_task), "my_task");
842+
}
843+
844+
#[test]
845+
fn test_find_suite_name_should_use_task_name_for_non_generated_task_if_no_var() {
846+
let evg_task = EvgTask {
847+
name: "my_task".to_string(),
848+
commands: Some(vec![
849+
fn_call("hello world"),
850+
fn_call_with_params(
851+
"run_tests",
852+
hashmap! {
853+
"var1".to_string() => ParamValue::from("value1"),
854+
"var2".to_string() => ParamValue::from("value2"),
855+
},
856+
),
778857
]),
779858
..Default::default()
780859
};

src/evergreen_names.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,9 @@ pub const ADD_GIT_TAG: &str = "add git tag";
2929
// Functions for generating tasks.
3030
pub const GENERATE_RESMOKE_TASKS: &str = "generate resmoke tasks";
3131

32+
// Functions for invoking resmoke.py in a generated or non-generated task.
33+
pub const RUN_RESMOKE_TESTS: &str = "run tests";
34+
3235
// Tasks
3336
/// Name of display task to hide all "_gen" tasks behind.
3437
pub const GENERATOR_TASKS: &str = "generator_tasks";

src/resmoke/resmoke_suite.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ const SHARDED_CLUSTER_FIXTURE_NAME: &str = "ShardedClusterFixture";
1010
const REPLICA_SET_FIXTURE_NAME: &str = "ReplicaSetFixture";
1111

1212
/// Types of fixtures used by resmoke suites.
13-
#[derive(Debug, PartialEq, Clone)]
13+
#[derive(Debug, PartialEq, Eq, Clone)]
1414
pub enum SuiteFixtureType {
1515
/// A suite with no fixtures defined.
1616
Shell,

0 commit comments

Comments
 (0)