def test_when_no_mappings_are_found_for_changed_files(self): mock_evg_api = self._mock_evg_api() mock_evg_config = get_evergreen_config("etc/evergreen.yml") mock_evg_expansions = under_test.EvgExpansions( task_id="task_id", task_name="selected_tests_gen", build_variant="selected-tests", build_id="my_build_id", project="mongodb-mongo-master", revision="abc123", version_id="my_version", ) mock_selected_tests_client = MagicMock() mock_selected_tests_client.get_test_mappings.return_value = TestMappingsResponse( test_mappings=[]) configure_dependencies(mock_evg_api, mock_evg_expansions, mock_evg_config, mock_selected_tests_client) repos = [mock_changed_git_files([])] selected_tests = under_test.SelectedTestsOrchestrator() changed_files = selected_tests.find_changed_files(repos, "task_id") generated_config = selected_tests.generate_version(changed_files) # assert that config_dict does not contain keys for any generated task configs self.assertEqual(len(generated_config.file_list), 1) self.assertEqual(generated_config.file_list[0].file_name, "selected_tests_config.json")
def test_when_test_mappings_are_found_for_changed_files(self): mock_evg_api = self._mock_evg_api() mock_evg_config = get_evergreen_config("etc/evergreen.yml") mock_evg_expansions = under_test.EvgExpansions( task_id="task_id", task_name="selected_tests_gen", build_variant="selected-tests", build_id="my_build_id", project="mongodb-mongo-master", revision="abc123", version_id="my_version", ) mock_test_mapping = TestMapping(branch="master", project="mongodb-mongo-master", repo="mongodb/mongo", source_file="src/file1.cpp", source_file_seen_count=8, test_files=[ TestFileInstance( name="jstests/auth/auth1.js", test_file_seen_count=3) ]) mock_selected_tests_client = MagicMock() mock_selected_tests_client.get_test_mappings.return_value = TestMappingsResponse( test_mappings=[mock_test_mapping]) configure_dependencies(mock_evg_api, mock_evg_expansions, mock_evg_config, mock_selected_tests_client) repos = [mock_changed_git_files(["src/file1.cpp"])] selected_tests = under_test.SelectedTestsOrchestrator() changed_files = selected_tests.find_changed_files(repos, "task_id") generated_config = selected_tests.generate_version(changed_files) files_to_generate = { gen_file.file_name for gen_file in generated_config.file_list } self.assertIn("selected_tests_config.json", files_to_generate) # assert that generated suite files have the suite name and the variant name in the # filename, to prevent tasks on different variants from using the same suite file self.assertIn("auth_0_enterprise-rhel-80-64-bit-dynamic-required.yml", files_to_generate) generated_evg_config_raw = [ gen_file.content for gen_file in generated_config.file_list if gen_file.file_name == "selected_tests_config.json" ][0] generated_evg_config = json.loads(generated_evg_config_raw) build_variants_with_generated_tasks = generated_evg_config[ "buildvariants"] # jstests/auth/auth1.js belongs to two suites, auth and auth_audit, rhel_80_with_generated_tasks = next( (variant for variant in build_variants_with_generated_tasks if variant["name"] == "enterprise-rhel-80-64-bit-dynamic-required" ), None) self.assertEqual(len(rhel_80_with_generated_tasks["tasks"]), 2)
def test_when_task_mappings_are_found_for_changed_files(self): mock_evg_api = self._mock_evg_api() mock_evg_config = get_evergreen_config("etc/evergreen.yml") mock_evg_expansions = under_test.EvgExpansions( task_id="task_id", task_name="selected_tests_gen", build_variant="selected-tests", build_id="my_build_id", project="mongodb-mongo-master", revision="abc123", version_id="my_version", ) mock_task_mapping = TaskMapping(branch="master", project="mongodb-mongo-master", repo="mongodb/mongo", source_file="src/file1.cpp", source_file_seen_count=8, tasks=[ TaskMapInstance( name="auth", variant="enterprise-rhel-80", flip_count=5) ]) mock_selected_tests_client = MagicMock() mock_selected_tests_client.get_task_mappings.return_value = TaskMappingsResponse( task_mappings=[mock_task_mapping]) configure_dependencies(mock_evg_api, mock_evg_expansions, mock_evg_config, mock_selected_tests_client) repos = [mock_changed_git_files(["src/file1.cpp"])] selected_tests = under_test.SelectedTestsOrchestrator() changed_files = selected_tests.find_changed_files(repos, "task_id") generated_config = selected_tests.generate_version(changed_files) files_to_generate = { gen_file.file_name for gen_file in generated_config.file_list } self.assertIn("selected_tests_config.json", files_to_generate) generated_evg_config_raw = [ gen_file.content for gen_file in generated_config.file_list if gen_file.file_name == "selected_tests_config.json" ][0] generated_evg_config = json.loads(generated_evg_config_raw) # the auth task's generator task, max_sub_suites is 3, # resulting in 3 subtasks being generated, plus a _misc task, hence 4 # tasks total build_variants_with_generated_tasks = generated_evg_config[ "buildvariants"] rhel_80_with_generated_tasks = next( (variant for variant in build_variants_with_generated_tasks if variant["name"] == "enterprise-rhel-80-64-bit-dynamic-required" ), None) self.assertEqual(len(rhel_80_with_generated_tasks["tasks"]), 5)