summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Bradford <david.bradford@mongodb.com>2019-07-13 13:05:36 -0400
committerDavid Bradford <david.bradford@mongodb.com>2019-07-13 13:40:52 -0400
commit57ea3693bf4c52a1f5568539862b5fbf51e86b7f (patch)
treea46177e6b0376c14e9d380fc7e62772c47e8cb63
parenta608bbc10d614f0a9b652993ed10238abc3c3192 (diff)
downloadmongo-57ea3693bf4c52a1f5568539862b5fbf51e86b7f.tar.gz
SERVER-42227: Limit the number of tasks burn_in_test will generate
(cherry picked from commit e6644474d876eb99579101e81d38c363feef07cd)
-rw-r--r--buildscripts/burn_in_tests.py20
1 files changed, 18 insertions, 2 deletions
diff --git a/buildscripts/burn_in_tests.py b/buildscripts/burn_in_tests.py
index 99ac702269d..a0e9489048e 100644
--- a/buildscripts/burn_in_tests.py
+++ b/buildscripts/burn_in_tests.py
@@ -4,10 +4,10 @@
import collections
import copy
import json
+import logging
import optparse
import os.path
import subprocess
-import re
import shlex
import sys
import urllib.parse
@@ -32,10 +32,13 @@ from buildscripts.ciconfig import evergreen
from buildscripts.client import evergreen as evergreen_client
# pylint: enable=wrong-import-position
+LOGGER = logging.getLogger(__name__)
+
API_REST_PREFIX = "/rest/v1/"
API_SERVER_DEFAULT = "https://evergreen.mongodb.com"
REPEAT_SUITES = 2
EVERGREEN_FILE = "etc/evergreen.yml"
+MAX_TASKS_TO_CREATE = 1000
# The executor_file and suite_files defaults are required to make the suite resolver work
# correctly.
SELECTOR_FILE = "etc/burn_in_tests.yml"
@@ -464,6 +467,8 @@ def _get_run_buildvariant(options):
def create_generate_tasks_file(options, tests_by_task):
"""Create the Evergreen generate.tasks file."""
+ # pylint: disable=too-many-locals
+
evg_config = Configuration()
task_specs = []
task_names = [BURN_IN_TESTS_GEN_TASK]
@@ -494,7 +499,12 @@ def create_generate_tasks_file(options, tests_by_task):
display_task = DisplayTaskDefinition(BURN_IN_TESTS_TASK).execution_tasks(task_names)
evg_config.variant(_get_run_buildvariant(options)).tasks(task_specs).display_task(display_task)
- _write_json_file(evg_config.to_map(), options.generate_tasks_file)
+ json_config = evg_config.to_map()
+ tasks_to_create = len(json_config.get('tasks', []))
+ if tasks_to_create > MAX_TASKS_TO_CREATE:
+ LOGGER.warning("Attempting to create more tasks than max(%d), aborting", tasks_to_create)
+ sys.exit(1)
+ _write_json_file(json_config, options.generate_tasks_file)
def run_tests(no_exec, tests_by_task, resmoke_cmd, report_file):
@@ -527,6 +537,12 @@ def run_tests(no_exec, tests_by_task, resmoke_cmd, report_file):
def main():
"""Execute Main program."""
+ logging.basicConfig(
+ format="[%(asctime)s - %(name)s - %(levelname)s] %(message)s",
+ level=logging.DEBUG,
+ stream=sys.stdout,
+ )
+
options, args = parse_command_line()
resmoke_cmd = _set_resmoke_cmd(options, args)