summaryrefslogtreecommitdiff
path: root/buildscripts/evergreen_task_timeout.py
diff options
context:
space:
mode:
authorDavid Bradford <david.bradford@mongodb.com>2018-05-01 17:17:35 -0400
committerDavid Bradford <david.bradford@mongodb.com>2018-05-01 17:35:25 -0400
commit7085d08f22a8bf90e455ae5bc95d5444889c1ea6 (patch)
tree04235c616e24be4770fdecacc80371ecfee393bf /buildscripts/evergreen_task_timeout.py
parente83d715afbec0ba89f041ed53e7d18c8eff587e5 (diff)
downloadmongo-7085d08f22a8bf90e455ae5bc95d5444889c1ea6.tar.gz
SERVER-34696: Add 30 minute timeout for tests in evergreen
Diffstat (limited to 'buildscripts/evergreen_task_timeout.py')
-rw-r--r--buildscripts/evergreen_task_timeout.py64
1 files changed, 64 insertions, 0 deletions
diff --git a/buildscripts/evergreen_task_timeout.py b/buildscripts/evergreen_task_timeout.py
new file mode 100644
index 00000000000..1d224762976
--- /dev/null
+++ b/buildscripts/evergreen_task_timeout.py
@@ -0,0 +1,64 @@
+#!/usr/bin/env python
+"""Determine the timeout value a task should use in evergreen."""
+
+from __future__ import absolute_import
+
+import argparse
+import sys
+
+import yaml
+
+# pylint: disable=unused-argument
+
+DEFAULT_REQUIRED_BUILD_TIMEOUT_SECS = 30 * 60
+DEFAULT_NON_REQUIRED_BUILD_TIMEOUT_SECS = 2 * 60 * 60
+
+REQUIRED_BUILD_VARIANTS = {
+ "linux-64-debug", "enterprise-windows-64-2k8", "enterprise-rhel-62-64-bit",
+ "enterprise-ubuntu1604-clang-3.8-libcxx", "enterprise-rhel-62-64-bit-required-mobile",
+ "ubuntu1604-debug-aubsan-lite"
+}
+
+
+def determine_timeout(task_name, variant, timeout=0):
+ """Determine what timeout should be used."""
+
+ if timeout and timeout != 0:
+ return timeout
+
+ if variant in REQUIRED_BUILD_VARIANTS:
+ return DEFAULT_REQUIRED_BUILD_TIMEOUT_SECS
+ return DEFAULT_NON_REQUIRED_BUILD_TIMEOUT_SECS
+
+
+def output_timeout(timeout, options):
+ """Output timeout configuration to the specified location."""
+ output = {
+ "timeout_secs": timeout,
+ }
+
+ if options.outfile:
+ with open(options.outfile, "w") as outfile:
+ yaml.dump(output, stream=outfile, default_flow_style=False)
+
+ yaml.dump(output, stream=sys.stdout, default_flow_style=False)
+
+
+def main():
+ """Determine the timeout value a task should use in evergreen."""
+ parser = argparse.ArgumentParser(description=main.__doc__)
+
+ parser.add_argument("--task-name", dest="task", required=True, help="Task being executed.")
+ parser.add_argument("--build-variant", dest="variant", required=True,
+ help="Build variant task is being executed on.")
+ parser.add_argument("--timeout", dest="timeout", type=int, help="Timeout to use.")
+ parser.add_argument("--out-file", dest="outfile", help="File to write configuration to.")
+
+ options = parser.parse_args()
+
+ timeout = determine_timeout(options.task, options.variant, options.timeout)
+ output_timeout(timeout, options)
+
+
+if __name__ == "__main__":
+ main()