def test_get_task_runtime_history(self): mock_evg_api = MagicMock() mock_evg_api.test_stats_by_project.return_value = [ MagicMock( test_file="dir/test2.js", task_name="task1", variant="variant1", distro="distro1", date=datetime.utcnow().date(), num_pass=1, num_fail=0, avg_duration_pass=10.1, ) ] analysis_duration = under_test.AVG_TEST_RUNTIME_ANALYSIS_DAYS end_date = datetime.utcnow().replace(microsecond=0) start_date = end_date - timedelta(days=analysis_duration) mock_gen_config = MagicMock(project="project1", build_variant="variant1") executor = under_test.GenerateBurnInExecutor(mock_gen_config, MagicMock(), mock_evg_api, history_end_date=end_date) result = executor.get_task_runtime_history("task1") self.assertEqual(result, [("dir/test2.js", 10.1)]) mock_evg_api.test_stats_by_project.assert_called_with( "project1", after_date=start_date, before_date=end_date, group_by="test", group_num_days=14, tasks=["task1"], variants=["variant1"])
def test_get_task_runtime_history_evg_degraded_mode_error(self): mock_response = MagicMock(status_code=requests.codes.SERVICE_UNAVAILABLE) mock_evg_api = MagicMock() mock_evg_api.test_stats_by_project.side_effect = requests.HTTPError(response=mock_response) mock_gen_config = MagicMock(project="project1", build_variant="variant1") executor = under_test.GenerateBurnInExecutor(mock_gen_config, MagicMock(), mock_evg_api) result = executor.get_task_runtime_history("task1") self.assertEqual(result, [])
def test_no_tasks_given(self): build_variant = BuildVariant("build variant") gen_config = MagicMock(run_build_variant="variant") repeat_config = MagicMock() mock_evg_api = MagicMock() executor = under_test.GenerateBurnInExecutor(gen_config, repeat_config, mock_evg_api) executor.generate_tasks_for_variant({}, build_variant) evg_config_dict = build_variant.as_dict() self.assertEqual(0, len(evg_config_dict["tasks"]))
def test_n_task_m_test(self): n_tasks = 3 n_tests = 5 build_variant = BuildVariant("build variant") gen_config = MagicMock(run_build_variant="variant", distro=None) repeat_config = MagicMock() tests_by_task = create_tests_by_task_mock(n_tasks, n_tests) mock_evg_api = MagicMock() executor = under_test.GenerateBurnInExecutor(gen_config, repeat_config, mock_evg_api) executor.generate_tasks_for_variant(tests_by_task, build_variant) evg_config_dict = build_variant.as_dict() self.assertEqual(n_tasks * n_tests, len(evg_config_dict["tasks"]))
def test_cap_on_task_generate(self, validate_mock, exit_mock): gen_config = MagicMock(use_multiversion=False) repeat_config = MagicMock() tests_by_task = MagicMock() mock_evg_api = MagicMock() validate_mock.return_value = False exit_mock.side_effect = ValueError("exiting") with self.assertRaises(ValueError): executor = under_test.GenerateBurnInExecutor( gen_config, repeat_config, mock_evg_api, "gen_file.json") executor.execute(tests_by_task) exit_mock.assert_called_once()
def test_one_task_one_test(self): n_tasks = 1 n_tests = 1 resmoke_options = "options for resmoke" build_variant = BuildVariant("build variant") gen_config = MagicMock(run_build_variant="variant", distro=None) repeat_config = MagicMock() repeat_config.generate_resmoke_options.return_value = resmoke_options mock_evg_api = MagicMock() tests_by_task = create_tests_by_task_mock(n_tasks, n_tests) executor = under_test.GenerateBurnInExecutor(gen_config, repeat_config, mock_evg_api) executor.generate_tasks_for_variant(tests_by_task, build_variant) shrub_config = ShrubProject.empty().add_build_variant(build_variant) evg_config_dict = shrub_config.as_dict() tasks = evg_config_dict["tasks"] self.assertEqual(n_tasks * n_tests, len(tasks)) cmd = tasks[0]["commands"] self.assertIn(resmoke_options, cmd[2]["vars"]["resmoke_args"]) self.assertEqual("suite_0", cmd[2]["vars"]["suite"]) self.assertIn("tests_0", cmd[2]["vars"]["resmoke_args"])