# Any copyright is dedicated to the public domain. # http://creativecommons.org/publicdomain/zero/1.0/ import pytest from mozunit import main from tryselect.selectors.auto import TRY_AUTO_PARAMETERS pytestmark = pytest.mark.slow PARAMS = TRY_AUTO_PARAMETERS.copy() PARAMS.update({ "head_repository": "https://hg.mozilla.org/try", "project": "try", "target_kind": "mochitest", # These ensure this isn't considered a backstop. The pushdate must # be slightly higher than the one in data/pushes.json, and # pushlog_id must not be a multiple of 10. "pushdate": 1593029536, "pushlog_id": "2", }) PARAMS_NEW_CONFIG = TRY_AUTO_PARAMETERS.copy() PARAMS_NEW_CONFIG.update({ "head_repository": "https://hg.mozilla.org/try", "project": "try", "target_kind": "mochitest", # These ensure this isn't considered a backstop. The pushdate must # be slightly higher than the one in data/pushes.json, and # pushlog_id must not be a multiple of 10. "pushdate": 1593029536, "pushlog_id": "2", "try_task_config": {"new-test-config": True}, "try_mode": "try_task_config", "target_tasks_method": "try_tasks", "test_manifest_loader": "default", }) @pytest.mark.parametrize( "func,min_expected", ( pytest.param( lambda t: ( t.kind == "mochitest" and t.attributes["unittest_suite"] == "mochitest-browser-chrome" and t.attributes["test_platform"] == "linux2404-64/opt" and ( "spi-nw" not in t.label and "a11y-checks" not in t.label and "vt" not in t.label and "ioi" not in t.label and "trainhop" not in t.label and "tsan" not in t.label ) ), 4, id="mochitest-browser-chrome", ), ), ) def test_tasks_new_config_false(full_task_graph, filter_tasks, func, min_expected): """Ensure when using new-test-config that we have -cf tasks and they are half the total tasks.""" tasks = [t.label for t in filter_tasks(full_task_graph, func)] assert len(tasks) >= min_expected cf_tasks = [ t.label for t in filter_tasks(full_task_graph, func) if t.label.endswith("-cf") ] assert len(cf_tasks) == len(tasks) / 2 @pytest.mark.parametrize( "func,min_expected", ( pytest.param( lambda t: ( t.kind == "mochitest" and t.attributes["unittest_suite"] == "mochitest-browser-chrome" and t.attributes["test_platform"] == "linux2404-64/opt" and ( "spi-nw" not in t.label and "a11y-checks" not in t.label and "vt" not in t.label and "ioi" not in t.label and "trainhop" not in t.label and "tsan" not in t.label ) ), 4, id="mochitest-browser-chrome", ), ), ) def test_tasks_new_config_true( full_task_graph_new_config, filter_tasks, func, min_expected ): """Ensure when using new-test-config that no -cf tasks are scheduled and we have 2x the default and NO -cf.""" tasks = [t.label for t in filter_tasks(full_task_graph_new_config, func)] assert len(tasks) >= min_expected cf_tasks = [ t.label for t in filter_tasks(full_task_graph_new_config, func) if t.label.endswith("-cf") ] assert len(cf_tasks) == 0 if __name__ == "__main__": main()