summaryrefslogtreecommitdiff
path: root/buildscripts/tests/ciconfig/test_evergreen.py
diff options
context:
space:
mode:
Diffstat (limited to 'buildscripts/tests/ciconfig/test_evergreen.py')
-rw-r--r--buildscripts/tests/ciconfig/test_evergreen.py303
1 files changed, 216 insertions, 87 deletions
diff --git a/buildscripts/tests/ciconfig/test_evergreen.py b/buildscripts/tests/ciconfig/test_evergreen.py
index 32a8cd330f3..20a25d35801 100644
--- a/buildscripts/tests/ciconfig/test_evergreen.py
+++ b/buildscripts/tests/ciconfig/test_evergreen.py
@@ -6,7 +6,7 @@ import unittest
import buildscripts.ciconfig.evergreen as _evergreen
-# pylint: disable=missing-docstring,protected-access
+# pylint: disable=missing-docstring,protected-access,invalid-name
TEST_FILE_PATH = os.path.join(os.path.dirname(__file__), "evergreen.yml")
@@ -24,14 +24,15 @@ class TestEvergreenProjectConfig(unittest.TestCase):
_evergreen.parse_evergreen_file(invalid_path, evergreen_binary=None)
def test_list_tasks(self):
- self.assertEqual(6, len(self.conf.tasks))
- self.assertEqual(6, len(self.conf.task_names))
+ self.assertEqual(7, len(self.conf.tasks))
+ self.assertEqual(7, len(self.conf.task_names))
self.assertIn("compile", self.conf.task_names)
self.assertIn("passing_test", self.conf.task_names)
self.assertIn("failing_test", self.conf.task_names)
self.assertIn("timeout_test", self.conf.task_names)
self.assertIn("no_lifecycle_task", self.conf.task_names)
self.assertIn("resmoke_task", self.conf.task_names)
+ self.assertIn("resmoke_multiversion_task_gen", self.conf.task_names)
def test_list_task_groups(self):
self.assertEqual(1, len(self.conf.task_groups))
@@ -83,55 +84,93 @@ class TestTask(unittest.TestCase): # pylint: disable=too-many-public-methods
self.assertEqual([], task.depends_on)
self.assertEqual(task_dict, task.raw)
- def test_resmoke_args(self):
+ def test_suite_to_resmoke_args_map_for_non_gen_task(self):
suite_and_task = "jstestfuzz"
- task_commands = [{"func": "run tests", "vars": {"resmoke_args": "--arg=val"}}]
+ task_commands = [{
+ "func": "run tests",
+ "vars": {"resmoke_args": "--arg=val"},
+ }]
task_dict = {"name": suite_and_task, "commands": task_commands}
task = _evergreen.Task(task_dict)
- self.assertEqual(f"--suites={suite_and_task} --arg=val", task.resmoke_args)
+ self.assertEqual({suite_and_task: f"--suites={suite_and_task} --arg=val"},
+ task.suite_to_resmoke_args_map)
- def test_is_run_tests_task(self):
- task_commands = [{"func": "run tests", "vars": {"resmoke_args": "--suites=core"}}]
- task_dict = {"name": "jsCore", "commands": task_commands}
+ def test_suite_to_resmoke_args_map_for_gen_task(self):
+ suite = "jsCore"
+ task_commands = [{
+ "func": "generate resmoke tasks",
+ "vars": {"resmoke_args": "--installDir=/bin"},
+ }]
+ task_dict = {"name": f"{suite}_gen", "commands": task_commands}
task = _evergreen.Task(task_dict)
- self.assertTrue(task.is_run_tests_task)
- self.assertFalse(task.is_generate_resmoke_task)
+ self.assertEqual({suite: f"--suites={suite} --installDir=/bin"},
+ task.suite_to_resmoke_args_map)
- def test_run_tests_command(self):
- task_commands = [{"func": "run tests", "vars": {"resmoke_args": "--suites=core"}}]
+ def test_suite_to_resmoke_args_map_for_gen_task_with_suite(self):
+ suite = "core"
+ task_commands = [{
+ "func": "generate resmoke tasks",
+ "vars": {"suite": suite, "resmoke_args": "--installDir=/bin"},
+ }]
task_dict = {"name": "jsCore", "commands": task_commands}
task = _evergreen.Task(task_dict)
- self.assertDictEqual(task_commands[0], task.run_tests_command)
-
- def test_run_tests_multiversion(self):
- require_multiversion_setup = True
- task_commands = [{"func": "do multiversion setup"},
- {"func": "run tests", "vars": {"resmoke_args": "--suites=core"}}]
- task_dict = {"name": "jsCore", "commands": task_commands, "tags": ["multiversion"]}
+ self.assertEqual({suite: f"--suites={suite} --installDir=/bin"},
+ task.suite_to_resmoke_args_map)
+
+ def test_suite_to_resmoke_args_map_for_initialize_multiversion_tasks_task(self):
+ task_commands = [
+ {
+ "func": "initialize multiversion tasks",
+ "vars": {
+ "multiversion_sanity_check_last_continuous_new_new_old": "last_continuous",
+ "multiversion_sanity_check_last_continuous_new_old_new": "last_continuous",
+ "multiversion_sanity_check_last_continuous_old_new_new": "last_continuous",
+ "multiversion_sanity_check_last_lts_new_new_old": "last_lts",
+ "multiversion_sanity_check_last_lts_new_old_new": "last_lts",
+ "multiversion_sanity_check_last_lts_old_new_new": "last_lts",
+ },
+ },
+ {
+ "func": "generate resmoke tasks",
+ "vars": {"resmoke_args": "--installDir=/bin"},
+ },
+ ]
+ task_dict = {"name": "multiversion_sanity_check_gen", "commands": task_commands}
task = _evergreen.Task(task_dict)
- self.assertEqual(task.multiversion_setup_command, {"func": "do multiversion setup"})
- self.assertEqual(require_multiversion_setup, task.require_multiversion_setup())
+ self.assertEqual({
+ "multiversion_sanity_check_last_continuous_new_new_old":
+ "--suites=multiversion_sanity_check_last_continuous_new_new_old --installDir=/bin",
+ "multiversion_sanity_check_last_continuous_new_old_new":
+ "--suites=multiversion_sanity_check_last_continuous_new_old_new --installDir=/bin",
+ "multiversion_sanity_check_last_continuous_old_new_new":
+ "--suites=multiversion_sanity_check_last_continuous_old_new_new --installDir=/bin",
+ "multiversion_sanity_check_last_lts_new_new_old":
+ "--suites=multiversion_sanity_check_last_lts_new_new_old --installDir=/bin",
+ "multiversion_sanity_check_last_lts_new_old_new":
+ "--suites=multiversion_sanity_check_last_lts_new_old_new --installDir=/bin",
+ "multiversion_sanity_check_last_lts_old_new_new":
+ "--suites=multiversion_sanity_check_last_lts_old_new_new --installDir=/bin",
+ }, task.suite_to_resmoke_args_map)
- def test_run_tests_no_multiversion(self):
+ def test_is_run_tests_task(self):
task_commands = [{"func": "run tests", "vars": {"resmoke_args": "--suites=core"}}]
task_dict = {"name": "jsCore", "commands": task_commands}
task = _evergreen.Task(task_dict)
- self.assertFalse(task.require_multiversion_setup())
- self.assertIsNone(task.multiversion_setup_command)
+ self.assertTrue(task.is_run_tests_task)
+ self.assertFalse(task.is_generate_resmoke_task)
+ self.assertFalse(task.is_initialize_multiversion_tasks_task)
- def test_resmoke_args_gen(self):
- task_commands = [{
- "func": "generate resmoke tasks", "vars": {"resmoke_args": "--installDir=/bin"}
- }]
- task_dict = {"name": "jsCore_gen", "commands": task_commands}
+ def test_run_tests_command(self):
+ task_commands = [{"func": "run tests", "vars": {"resmoke_args": "--suites=core"}}]
+ task_dict = {"name": "jsCore", "commands": task_commands}
task = _evergreen.Task(task_dict)
- self.assertEqual("--suites=jsCore --installDir=/bin", task.resmoke_args)
+ self.assertDictEqual(task_commands[0], task.run_tests_command)
def test_is_generate_resmoke_task(self):
task_name = "core"
@@ -144,6 +183,7 @@ class TestTask(unittest.TestCase): # pylint: disable=too-many-public-methods
self.assertTrue(task.is_generate_resmoke_task)
self.assertFalse(task.is_run_tests_task)
+ self.assertFalse(task.is_initialize_multiversion_tasks_task)
def test_generate_resmoke_tasks_command(self):
task_commands = [{
@@ -155,17 +195,74 @@ class TestTask(unittest.TestCase): # pylint: disable=too-many-public-methods
self.assertDictEqual(task_commands[0], task.generate_resmoke_tasks_command)
self.assertEqual("jsCore", task.generated_task_name)
- def test_resmoke_args_gen_with_suite(self):
- task_name = "jsCore"
- suite_name = "core"
- task_commands = [{
- "func": "generate resmoke tasks",
- "vars": {"task": task_name, "suite": suite_name, "resmoke_args": "--installDir=/bin"}
- }]
+ def test_is_initialize_multiversion_tasks_task(self):
+ task_commands = [
+ {
+ "func": "initialize multiversion tasks",
+ "vars": {
+ "multiversion_sanity_check_last_continuous_new_new_old": "last_continuous",
+ "multiversion_sanity_check_last_continuous_new_old_new": "last_continuous",
+ "multiversion_sanity_check_last_continuous_old_new_new": "last_continuous",
+ "multiversion_sanity_check_last_lts_new_new_old": "last_lts",
+ "multiversion_sanity_check_last_lts_new_old_new": "last_lts",
+ "multiversion_sanity_check_last_lts_old_new_new": "last_lts",
+ },
+ },
+ {"func": "generate resmoke tasks"},
+ ]
+ task = _evergreen.Task({
+ "name": "multiversion_sanity_check_gen",
+ "commands": task_commands,
+ })
+
+ self.assertTrue(task.is_initialize_multiversion_tasks_task)
+ self.assertTrue(task.is_generate_resmoke_task)
+ self.assertFalse(task.is_run_tests_task)
+
+ def test_initialize_multiversion_tasks_command(self):
+ task_commands = [
+ {
+ "func": "initialize multiversion tasks",
+ "vars": {
+ "multiversion_sanity_check_last_continuous_new_new_old": "last_continuous",
+ "multiversion_sanity_check_last_continuous_new_old_new": "last_continuous",
+ "multiversion_sanity_check_last_continuous_old_new_new": "last_continuous",
+ "multiversion_sanity_check_last_lts_new_new_old": "last_lts",
+ "multiversion_sanity_check_last_lts_new_old_new": "last_lts",
+ "multiversion_sanity_check_last_lts_old_new_new": "last_lts",
+ },
+ },
+ {"func": "generate resmoke tasks"},
+ ]
+ task = _evergreen.Task({
+ "name": "multiversion_sanity_check_gen",
+ "commands": task_commands,
+ })
+
+ self.assertDictEqual(task_commands[0], task.initialize_multiversion_tasks_command)
+ self.assertEqual("multiversion_sanity_check", task.generated_task_name)
+
+ def test_get_resmoke_command_vars_from_run_tests_command(self):
+ resmoke_command_vars = {"suite": "core"}
+ task_commands = [{"func": "run tests", "vars": resmoke_command_vars}]
task_dict = {"name": "jsCore", "commands": task_commands}
task = _evergreen.Task(task_dict)
- self.assertEqual("--suites=core --installDir=/bin", task.resmoke_args)
+ self.assertEqual(resmoke_command_vars, task.get_resmoke_command_vars())
+
+ def test_get_resmoke_command_vars_from_generate_resmoke_tasks_command(self):
+ resmoke_command_vars = {"suite": "core"}
+ task_commands = [{"func": "generate resmoke tasks", "vars": resmoke_command_vars}]
+ task_dict = {"name": "jsCore", "commands": task_commands}
+ task = _evergreen.Task(task_dict)
+
+ self.assertEqual(resmoke_command_vars, task.get_resmoke_command_vars())
+
+ def test_get_resmoke_command_vars_from_non_resmoke_task(self):
+ task_dict = {"name": "compile", "commands": []}
+ task = _evergreen.Task(task_dict)
+
+ self.assertEqual({}, task.get_resmoke_command_vars())
def test_tags_with_no_tags(self):
task_dict = {
@@ -208,49 +305,61 @@ class TestTask(unittest.TestCase): # pylint: disable=too-many-public-methods
self.assertDictEqual(task_commands[0], task.generate_resmoke_tasks_command)
self.assertEqual("jsCore", task.generated_task_name)
- def test_gen_resmoke_multiversion(self):
- require_multiversion_setup = True
- task_name = "core"
- task_commands = [{
- "func": "generate resmoke tasks",
- "vars": {"task": task_name, "resmoke_args": "--installDir=/bin"}
- }]
- task_dict = {"name": "jsCore", "commands": task_commands, "tags": ["multiversion"]}
- task = _evergreen.Task(task_dict)
-
- self.assertEqual(require_multiversion_setup, task.require_multiversion_setup())
+ def test_get_suite_names_from_non_gen_task_name(self):
+ task = _evergreen.Task({
+ "name": "task_name",
+ "commands": [{"func": "run tests"}],
+ })
- def test_gen_resmoke_no_multiversion(self):
- task_name = "core"
- task_commands = [{
- "func": "generate resmoke tasks",
- "vars": {"task": task_name, "resmoke_args": "--installDir=/bin"}
- }]
- task_dict = {"name": "jsCore", "commands": task_commands}
- task = _evergreen.Task(task_dict)
+ self.assertEqual(["task_name"], task.get_suite_names())
- self.assertFalse(task.require_multiversion_setup())
+ def test_get_suite_names_from_non_gen_task_suite_var(self):
+ task = _evergreen.Task({
+ "name": "task_name",
+ "commands": [{
+ "func": "run tests",
+ "vars": {"suite": "suite_var"},
+ }],
+ })
- def test_get_vars_suite_name_generate_resmoke_tasks(self):
- task_name = "jsCore"
- suite_name = "core"
- task_commands = [{
- "func": "generate resmoke tasks",
- "vars": {"task": task_name, "suite": suite_name, "resmoke_args": "--installDir=/bin"}
- }]
- task_dict = {"name": task_name, "commands": task_commands}
- task = _evergreen.Task(task_dict)
+ self.assertEqual(["suite_var"], task.get_suite_names())
- self.assertEqual(suite_name, task.get_suite_name())
+ def test_get_suite_names_from_gen_task_name(self):
+ task = _evergreen.Task({
+ "name": "task_name_gen",
+ "commands": [{"func": "generate resmoke tasks"}],
+ })
- def test_get_suite_name_default_to_task_name(self):
- task_name = "concurrency_gen"
- no_gen_task_name = "concurrency"
- task_commands = [{"func": "generate resmoke tasks"}]
- task_dict = {"name": task_name, "commands": task_commands}
- task = _evergreen.Task(task_dict)
+ self.assertEqual(["task_name"], task.get_suite_names())
- self.assertEqual(no_gen_task_name, task.get_suite_name())
+ def test_get_suite_names_from_gen_task_suite_var(self):
+ task = _evergreen.Task({
+ "name": "task_name_gen",
+ "commands": [{
+ "func": "generate resmoke tasks",
+ "vars": {"suite": "suite_var"},
+ }],
+ })
+
+ self.assertEqual(["suite_var"], task.get_suite_names())
+
+ def test_get_suite_names_from_init_multiversion_task(self):
+ task = _evergreen.Task({
+ "name":
+ "task_name_multiversion_gen",
+ "commands": [
+ {
+ "func": "initialize multiversion tasks",
+ "vars": {
+ "suite_last_continuous": "last_continuous",
+ "suite_last_lts": "last_lts",
+ },
+ },
+ {"func": "generate resmoke tasks"},
+ ],
+ })
+
+ self.assertEqual(["suite_last_continuous", "suite_last_lts"], task.get_suite_names())
def test_generate_task_name_non_gen_tasks(self):
task_name = "jsCore"
@@ -359,10 +468,10 @@ class TestVariant(unittest.TestCase):
def test_distro_names(self):
variant_ubuntu = self.conf.get_variant("ubuntu")
- self.assertEqual(set(["ubuntu1404-test", "pdp-11"]), variant_ubuntu.distro_names)
+ self.assertEqual({"ubuntu1404-test", "pdp-11"}, variant_ubuntu.distro_names)
variant_osx = self.conf.get_variant("osx-108")
- self.assertEqual(set(["localtestdistro"]), variant_osx.distro_names)
+ self.assertEqual({"localtestdistro"}, variant_osx.distro_names)
def test_test_flags(self):
variant_ubuntu = self.conf.get_variant("ubuntu")
@@ -389,21 +498,41 @@ class TestVariant(unittest.TestCase):
self.assertEqual(variant_ubuntu, task.variant)
self.assertIn(task_name, variant_ubuntu.task_names)
- # Check combined_resmoke_args when test_flags is set on the variant.
+ # Check combined_suite_to_resmoke_args_map when test_flags is set on the variant.
resmoke_task = variant_ubuntu.get_task("resmoke_task")
- self.assertEqual("--suites=resmoke_task --storageEngine=wiredTiger --param=value --ubuntu",
- resmoke_task.combined_resmoke_args)
+ self.assertEqual({
+ "resmoke_task":
+ "--suites=resmoke_task --storageEngine=wiredTiger --param=value --ubuntu"
+ }, resmoke_task.combined_suite_to_resmoke_args_map)
- # Check combined_resmoke_args when the task doesn't have resmoke_args.
+ # Check combined_suite_to_resmoke_args_map when the task doesn't have resmoke_args.
passing_task = variant_ubuntu.get_task("passing_test")
- self.assertEqual("--suites=passing_test --param=value --ubuntu",
- passing_task.combined_resmoke_args)
+ self.assertEqual({"passing_test": "--suites=passing_test --param=value --ubuntu"},
+ passing_task.combined_suite_to_resmoke_args_map)
- # Check combined_resmoke_args when test_flags is not set on the variant.
+ # Check combined_suite_to_resmoke_args_map when test_flags is not set on the variant.
variant_debian = self.conf.get_variant("debian")
resmoke_task = variant_debian.get_task("resmoke_task")
- self.assertEqual("--suites=resmoke_task --storageEngine=wiredTiger",
- resmoke_task.combined_resmoke_args)
+ self.assertEqual({"resmoke_task": "--suites=resmoke_task --storageEngine=wiredTiger"},
+ resmoke_task.combined_suite_to_resmoke_args_map)
+
+ # Check combined_suite_to_resmoke_args_map for "initialize multiversion tasks" task.
+ variant_debian = self.conf.get_variant("debian")
+ resmoke_task = variant_debian.get_task("resmoke_multiversion_task_gen")
+ self.assertEqual({
+ "multiversion_sanity_check_last_continuous_new_new_old":
+ "--suites=multiversion_sanity_check_last_continuous_new_new_old --storageEngine=wiredTiger",
+ "multiversion_sanity_check_last_continuous_new_old_new":
+ "--suites=multiversion_sanity_check_last_continuous_new_old_new --storageEngine=wiredTiger",
+ "multiversion_sanity_check_last_continuous_old_new_new":
+ "--suites=multiversion_sanity_check_last_continuous_old_new_new --storageEngine=wiredTiger",
+ "multiversion_sanity_check_last_lts_new_new_old":
+ "--suites=multiversion_sanity_check_last_lts_new_new_old --storageEngine=wiredTiger",
+ "multiversion_sanity_check_last_lts_new_old_new":
+ "--suites=multiversion_sanity_check_last_lts_new_old_new --storageEngine=wiredTiger",
+ "multiversion_sanity_check_last_lts_old_new_new":
+ "--suites=multiversion_sanity_check_last_lts_old_new_new --storageEngine=wiredTiger",
+ }, resmoke_task.combined_suite_to_resmoke_args_map)
# Check for tasks included in task_groups
variant_amazon = self.conf.get_variant("amazon")