diff options
author | David Bradford <david.bradford@mongodb.com> | 2019-04-16 12:27:24 -0400 |
---|---|---|
committer | David Bradford <david.bradford@mongodb.com> | 2019-04-18 11:16:51 -0400 |
commit | e845184db705d9fa23c8e290afc27a7a4f19d8e2 (patch) | |
tree | ff2529cb9f3810ae69b07e2b808fc79ef0eb89bd | |
parent | 5f6b94b6413a2af3106a342b11e261f647873035 (diff) | |
download | mongo-e845184db705d9fa23c8e290afc27a7a4f19d8e2.tar.gz |
SERVER-40654: Do not enforce dynamic timeouts for Ubuntu PPC
(cherry picked from commit e63e9cea147aae4ad2bbad8c6bb393dbc33af0b4)
-rwxr-xr-x | buildscripts/evergreen_generate_resmoke_tasks.py | 24 | ||||
-rw-r--r-- | buildscripts/tests/test_evergreen_generate_resmoke_tasks.py | 13 | ||||
-rw-r--r-- | etc/evergreen.yml | 3 |
3 files changed, 34 insertions, 6 deletions
diff --git a/buildscripts/evergreen_generate_resmoke_tasks.py b/buildscripts/evergreen_generate_resmoke_tasks.py index b6d13b737eb..61d3b18feb2 100755 --- a/buildscripts/evergreen_generate_resmoke_tasks.py +++ b/buildscripts/evergreen_generate_resmoke_tasks.py @@ -65,6 +65,7 @@ ConfigOptions = namedtuple("ConfigOptions", [ "suite", "target_resmoke_time", "task", + "use_default_timeouts", "use_large_distro", "use_multiversion", "variant", @@ -121,6 +122,8 @@ def get_config_options(cmd_line_options, config_file): suite = read_config.get_config_value("suite", cmd_line_options, config_file_data, default=task) variant = read_config.get_config_value("build_variant", cmd_line_options, config_file_data, required=True) + use_default_timeouts = read_config.get_config_value("use_default_timeouts", cmd_line_options, + config_file_data, default=False) use_large_distro = read_config.get_config_value("use_large_distro", cmd_line_options, config_file_data, default=False) large_distro_name = read_config.get_config_value("large_distro_name", cmd_line_options, @@ -139,8 +142,8 @@ def get_config_options(cmd_line_options, config_file): return ConfigOptions(build_id, depends_on, fallback_num_sub_suites, is_patch, large_distro_name, max_sub_suites, project, repeat_suites, resmoke_args, resmoke_jobs_max, - run_multiple_jobs, suite, target_resmoke_time, task, use_large_distro, - use_multiversion, variant) + run_multiple_jobs, suite, target_resmoke_time, task, use_default_timeouts, + use_large_distro, use_multiversion, variant) def divide_remaining_tests_among_suites(remaining_tests_runtimes, suites): @@ -309,6 +312,13 @@ class EvergreenConfigGenerator(object): return variables def _add_timeout_command(self, commands, max_test_runtime, expected_suite_runtime): + """ + Add an evergreen command to override the default timeouts to the list of commands. + + :param commands: List of commands to add timeout command to. + :param max_test_runtime: Maximum runtime of any test in the sub-suite. + :param expected_suite_runtime: Expected runtime of the entire sub-suite. + """ repeat_factor = self.options.repeat_suites if max_test_runtime or expected_suite_runtime: cmd_timeout = CmdTimeoutUpdate() @@ -319,8 +329,8 @@ class EvergreenConfigGenerator(object): cmd_timeout.timeout(timeout) if expected_suite_runtime: exec_timeout = calculate_timeout(expected_suite_runtime, 3) * repeat_factor - LOGGER.debug("Setting exec_timeout to: %d (runtime=%d, repeat=%d)", exec_timeout, - expected_suite_runtime, repeat_factor) + LOGGER.debug("Setting exec_timeout to: %d (runtime=%d, repeat=%d)", + exec_timeout, expected_suite_runtime, repeat_factor) cmd_timeout.exec_timeout(exec_timeout) commands.append(cmd_timeout.validate().resolve()) @@ -361,7 +371,8 @@ class EvergreenConfigGenerator(object): run_tests_vars = self._get_run_tests_vars(target_suite_file) commands = [] - self._add_timeout_command(commands, max_test_runtime, expected_suite_runtime) + if not self.options.use_default_timeouts: + self._add_timeout_command(commands, max_test_runtime, expected_suite_runtime) commands.append(CommandDefinition().function("do setup")) if self.options.use_multiversion: commands.append(CommandDefinition().function("do multiversion setup")) @@ -554,6 +565,8 @@ class Main(object): help="Should subtasks use large distros.") parser.add_argument("--large-distro-name", dest="large_distro_name", help="Name of large distro.") + parser.add_argument("--use-default_timeouts", dest="use_default_timeouts", + help="When specified, do not override timeouts based on test history.") parser.add_argument("--use-multiversion", dest="use_multiversion", help="Task path suffix for multiversion generated tasks.") parser.add_argument("--is-patch", dest="is_patch", help="Is this part of a patch build.") @@ -646,6 +659,7 @@ class Main(object): enable_logging() LOGGER.debug("Starting execution for options %s", options) + LOGGER.debug("config options %s", self.config_options) end_date = datetime.datetime.utcnow().replace(microsecond=0) start_date = end_date - datetime.timedelta(days=options.duration_days) diff --git a/buildscripts/tests/test_evergreen_generate_resmoke_tasks.py b/buildscripts/tests/test_evergreen_generate_resmoke_tasks.py index 1662340eba6..4dc4f5947e8 100644 --- a/buildscripts/tests/test_evergreen_generate_resmoke_tasks.py +++ b/buildscripts/tests/test_evergreen_generate_resmoke_tasks.py @@ -341,6 +341,7 @@ class EvergreenConfigGeneratorTest(unittest.TestCase): options.variant = "buildvariant" options.suite = "suite" options.task = "suite" + options.use_default_timeouts = False options.use_large_distro = None options.use_multiversion = False options.is_patch = True @@ -474,6 +475,18 @@ class EvergreenConfigGeneratorTest(unittest.TestCase): self.assertNotIn("command", timeout_cmd) self.assertEqual("do setup", timeout_cmd["func"]) + def test_timeout_info_not_included_if_use_default_timeouts_set(self): + suite_without_timing_info = 1 + options = self.generate_mock_options() + suites = self.generate_mock_suites(3) + options.use_default_timeouts = True + + config = grt.EvergreenConfigGenerator(suites, options, Mock()).generate_config().to_map() + + timeout_cmd = config["tasks"][suite_without_timing_info]["commands"][0] + self.assertNotIn("command", timeout_cmd) + self.assertEqual("do setup", timeout_cmd["func"]) + class NormalizeTestNameTest(unittest.TestCase): def test_unix_names(self): diff --git a/etc/evergreen.yml b/etc/evergreen.yml index 1dd989d8014..9ac87afb163 100644 --- a/etc/evergreen.yml +++ b/etc/evergreen.yml @@ -1210,7 +1210,7 @@ functions: ${activate_virtualenv} $python -m pip install -r buildscripts/requirements.txt - $python buildscripts/evergreen_generate_resmoke_tasks.py --expansion-file expansions.yml + $python buildscripts/evergreen_generate_resmoke_tasks.py --expansion-file expansions.yml --verbose - command: archive.targz_pack params: @@ -7867,6 +7867,7 @@ buildvariants: multiversion_platform: ubuntu1604 multiversion_architecture: ppc64le multiversion_edition: enterprise + use_default_timeouts: true display_tasks: - *dbtest - *unittests |