summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Bradford <david.bradford@mongodb.com>2021-06-04 13:48:45 -0400
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2021-07-27 19:18:47 +0000
commit2dcea5045b0ddc807d361fc55a4a265c418ecd98 (patch)
treea58862f9e8b803d7c5c2db35f3184a6204d40337
parent9dec1bbeb530148389d0431c58a02a4471c6ecfe (diff)
downloadmongo-2dcea5045b0ddc807d361fc55a4a265c418ecd98.tar.gz
SERVER-57450: Filter misc tests based on tests in sub-suites
(cherry picked from commit 1c2b0f685aa3c035f43f4ecc924a42a50534f620)
-rw-r--r--buildscripts/task_generation/evg_config_builder.py2
-rw-r--r--buildscripts/task_generation/suite_split.py5
-rw-r--r--buildscripts/tests/task_generation/test_suite_split.py30
3 files changed, 36 insertions, 1 deletions
diff --git a/buildscripts/task_generation/evg_config_builder.py b/buildscripts/task_generation/evg_config_builder.py
index b0e83f3f245..09ba4dfab7d 100644
--- a/buildscripts/task_generation/evg_config_builder.py
+++ b/buildscripts/task_generation/evg_config_builder.py
@@ -65,7 +65,7 @@ class EvgConfigBuilder:
:return: The suites files and evergreen configuration for the generated task.
"""
- test_list = self.resmoke_proxy.list_tests(generated_suite.suite_name)
+ test_list = generated_suite.get_test_list()
return self.resmoke_proxy.render_suite_files(
generated_suite.sub_suites, generated_suite.suite_name, generated_suite.filename,
test_list, self.gen_options.create_misc_suite, generated_suite.build_variant)
diff --git a/buildscripts/task_generation/suite_split.py b/buildscripts/task_generation/suite_split.py
index a6c6976ba67..8f2e261247f 100644
--- a/buildscripts/task_generation/suite_split.py
+++ b/buildscripts/task_generation/suite_split.py
@@ -4,6 +4,7 @@ from __future__ import annotations
import os
from copy import deepcopy
from datetime import datetime
+from itertools import chain
from typing import NamedTuple, Callable, Optional, List, Dict, Any
import inject
@@ -189,6 +190,10 @@ class GeneratedSuite(NamedTuple):
return f"{base_name}_{self.build_variant}"
return base_name
+ def get_test_list(self) -> List[str]:
+ """Get the list of tests that will be run by this suite."""
+ return list(chain.from_iterable(sub_suite.test_list for sub_suite in self.sub_suites))
+
def __len__(self) -> int:
"""Get the number of sub-suites."""
return len(self.sub_suites)
diff --git a/buildscripts/tests/task_generation/test_suite_split.py b/buildscripts/tests/task_generation/test_suite_split.py
index 5b3963a43d4..32d74a5c5d8 100644
--- a/buildscripts/tests/task_generation/test_suite_split.py
+++ b/buildscripts/tests/task_generation/test_suite_split.py
@@ -55,6 +55,36 @@ def build_mock_split_params(test_filter=None):
)
+def build_mock_sub_suite(index, test_list):
+ return under_test.SubSuite(
+ index=index,
+ suite_name="suite_name",
+ test_list=test_list,
+ tests_with_runtime_info=0,
+ max_test_runtime=0,
+ historic_runtime=0,
+ task_overhead=0,
+ )
+
+
+class TestGeneratedSuite(unittest.TestCase):
+ def test_get_test_list_should_run_tests_in_sub_tasks(self):
+ n_sub_suites = 3
+ n_tests_per_suite = 5
+ test_lists = [[f"test_{i * n_tests_per_suite + j}" for j in range(n_tests_per_suite)]
+ for i in range(n_sub_suites)]
+ mock_sub_suites = [build_mock_sub_suite(i, test_lists[i]) for i in range(n_sub_suites)]
+ mock_suite = under_test.GeneratedSuite(sub_suites=mock_sub_suites,
+ build_variant="build_variant", task_name="task_name",
+ suite_name="suite_name", filename="filename")
+
+ all_tests = mock_suite.get_test_list()
+
+ for test_list in test_lists:
+ for test in test_list:
+ self.assertIn(test, all_tests)
+
+
class TestSplitSuite(unittest.TestCase):
def test_calculate_suites(self):
mock_test_stats = [tst_stat_mock(f"test{i}.js", 60, 1) for i in range(100)]