From bc3f85069181f699542304644c41cabebf63643d Mon Sep 17 00:00:00 2001 From: Sean Lyons Date: Wed, 21 May 2025 19:10:15 +0000 Subject: [PATCH 1/2] add depenendencies for multiversion binary selection on burn-in task references --- src/task_types/burn_in_tests.rs | 46 +++++++++++++++++++++++++++++++-- 1 file changed, 44 insertions(+), 2 deletions(-) diff --git a/src/task_types/burn_in_tests.rs b/src/task_types/burn_in_tests.rs index 8f7e4ab..613a7b4 100644 --- a/src/task_types/burn_in_tests.rs +++ b/src/task_types/burn_in_tests.rs @@ -11,8 +11,8 @@ use std::{ use crate::evergreen::evg_config_utils::EvgConfigUtils; use crate::evergreen_names::{ - BURN_IN_TASKS, BURN_IN_TASK_NAME, COMPILE_VARIANT, VERSION_BURN_IN_GEN_TASK, - VERSION_GEN_VARIANT, + BURN_IN_TASKS, BURN_IN_TASK_NAME, COMPILE_VARIANT, MULTIVERSION_BINARY_SELECTION, + VERSION_BURN_IN_GEN_TASK, VERSION_GEN_VARIANT, }; use crate::{ evergreen_names::BURN_IN_BYPASS, @@ -451,6 +451,48 @@ impl BurnInService for BurnInServiceImpl { }, ]; + let mut includes_multiversion_tasks = false; + for task_ref in gen_config.gen_task_specs.iter_mut() { + // Find the corresponding subtask to check its dependencies + let depends_on_multiversion = generated_task + .sub_tasks() + .iter() + .find(|&t| t.evg_task.name == task_ref.name) + .map(|subtask| { + subtask.evg_task.depends_on.as_ref().map_or(false, |deps| { + deps.iter() + .any(|dep| dep.name == MULTIVERSION_BINARY_SELECTION) + }) + }) + .unwrap_or(false); + + if depends_on_multiversion { + includes_multiversion_tasks = true; + + // Combine the multiversion binary selection with variant task dependencies + let multiversion_dependency = TaskDependency { + name: MULTIVERSION_BINARY_SELECTION.to_string(), + variant: None, + }; + + task_ref.depends_on = Some( + std::iter::once(multiversion_dependency) + .chain(variant_task_dependencies.iter().cloned()) + .collect(), + ); + } + } + + // Add the multiversion binary selection task if needed + if includes_multiversion_tasks { + gen_config.gen_task_specs.push(TaskRef { + name: MULTIVERSION_BINARY_SELECTION.to_string(), + distros: None, + activate: Some(false), + depends_on: None, + }); + } + Ok(BuildVariant { name: gen_config.build_variant_name.clone(), tasks: gen_config.gen_task_specs.clone(), From 94de1b84ba9d350473b76574e2bc772afe0771b4 Mon Sep 17 00:00:00 2001 From: Sean Lyons Date: Thu, 22 May 2025 13:47:34 +0000 Subject: [PATCH 2/2] new patch version --- CHANGELOG.md | 3 +++ Cargo.lock | 2 +- Cargo.toml | 2 +- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 02c7cc7..71fd932 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,7 @@ # Changelog +## 3.0.1 - 2025-05-22 +* Add multiversion binary selection dependency to burn-in tasks when needed. + ## 3.0.0 - 2025-05-07 * Generate multiversion binary selection tasks diff --git a/Cargo.lock b/Cargo.lock index 070b11b..3a2d6d5 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2070,7 +2070,7 @@ dependencies = [ [[package]] name = "mongo-task-generator" -version = "3.0.0" +version = "3.0.1" dependencies = [ "anyhow", "assert_cmd", diff --git a/Cargo.toml b/Cargo.toml index 2dabdab..27bdee2 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -2,7 +2,7 @@ name = "mongo-task-generator" description = "Dynamically split evergreen tasks into subtasks for testing the 10gen/mongo project." license = "Apache-2.0" -version = "3.0.0" +version = "3.0.1" repository = "https://github.com/mongodb/mongo-task-generator" authors = ["DevProd Correctness Team "] edition = "2018"