summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Bradford <david.bradford@mongodb.com>2019-04-16 12:27:24 -0400
committerDavid Bradford <david.bradford@mongodb.com>2019-04-18 11:16:51 -0400
commite845184db705d9fa23c8e290afc27a7a4f19d8e2 (patch)
treeff2529cb9f3810ae69b07e2b808fc79ef0eb89bd
parent5f6b94b6413a2af3106a342b11e261f647873035 (diff)
downloadmongo-e845184db705d9fa23c8e290afc27a7a4f19d8e2.tar.gz
SERVER-40654: Do not enforce dynamic timeouts for Ubuntu PPC
(cherry picked from commit e63e9cea147aae4ad2bbad8c6bb393dbc33af0b4)
-rwxr-xr-xbuildscripts/evergreen_generate_resmoke_tasks.py24
-rw-r--r--buildscripts/tests/test_evergreen_generate_resmoke_tasks.py13
-rw-r--r--etc/evergreen.yml3
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