summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Bradford <david.bradford@mongodb.com>2019-04-18 11:11:32 -0400
committerDavid Bradford <david.bradford@mongodb.com>2019-04-18 11:19:15 -0400
commitb5b7a3e43ca68075624c15753afc9a60741f2628 (patch)
tree6002291608bc5e0017eeacf40cd7133e559e6e92
parente845184db705d9fa23c8e290afc27a7a4f19d8e2 (diff)
downloadmongo-b5b7a3e43ca68075624c15753afc9a60741f2628.tar.gz
SERVER-40704: Better task timeouts when using minimum for split tasks
(cherry picked from commit 233387efb49dc9403aa6c543191a19fc19c2c3b0)
-rwxr-xr-xbuildscripts/evergreen_generate_resmoke_tasks.py4
-rw-r--r--buildscripts/tests/test_evergreen_generate_resmoke_tasks.py6
2 files changed, 6 insertions, 4 deletions
diff --git a/buildscripts/evergreen_generate_resmoke_tasks.py b/buildscripts/evergreen_generate_resmoke_tasks.py
index 61d3b18feb2..cf9a64c37ab 100755
--- a/buildscripts/evergreen_generate_resmoke_tasks.py
+++ b/buildscripts/evergreen_generate_resmoke_tasks.py
@@ -267,9 +267,9 @@ def calculate_timeout(avg_runtime, scaling_factor):
def round_to_minute(runtime):
"""Round the given seconds up to the nearest minute."""
distance_to_min = 60 - (runtime % 60)
- return runtime + distance_to_min
+ return int(math.ceil(runtime + distance_to_min))
- return max(MIN_TIMEOUT_SECONDS, round_to_minute(int(math.ceil(avg_runtime))) * scaling_factor)
+ return max(MIN_TIMEOUT_SECONDS, round_to_minute(avg_runtime)) * scaling_factor
class EvergreenConfigGenerator(object):
diff --git a/buildscripts/tests/test_evergreen_generate_resmoke_tasks.py b/buildscripts/tests/test_evergreen_generate_resmoke_tasks.py
index 4dc4f5947e8..7dc8a651e32 100644
--- a/buildscripts/tests/test_evergreen_generate_resmoke_tasks.py
+++ b/buildscripts/tests/test_evergreen_generate_resmoke_tasks.py
@@ -308,7 +308,7 @@ class PrepareDirectoryForSuite(unittest.TestCase):
class CalculateTimeoutTest(unittest.TestCase):
def test_min_timeout(self):
- self.assertEqual(300, grt.calculate_timeout(15, 1))
+ self.assertEqual(grt.MIN_TIMEOUT_SECONDS, grt.calculate_timeout(15, 1))
def test_over_timeout_by_one_minute(self):
self.assertEqual(360, grt.calculate_timeout(301, 1))
@@ -317,7 +317,9 @@ class CalculateTimeoutTest(unittest.TestCase):
self.assertEqual(360, grt.calculate_timeout(300.14, 1))
def test_scaling_factor(self):
- self.assertEqual(600, grt.calculate_timeout(30, 10))
+ scaling_factor = 10
+ self.assertEqual(grt.MIN_TIMEOUT_SECONDS * scaling_factor,
+ grt.calculate_timeout(30, scaling_factor))
class EvergreenConfigGeneratorTest(unittest.TestCase):