class TestRunDb(unittest.TestCase): def setUp(self): self.dao = CylcSuiteDAO(':memory:') self.mocked_connection = mock.Mock() self.dao.connect = mock.MagicMock(return_value=self.mocked_connection) get_select_task_job = [ ["cycle", "name", "NN"], ["cycle", "name", None], ["cycle", "name", "02"], ] def test_select_task_job(self): """Test the rundb CylcSuiteDAO select_task_job method""" columns = self.dao.tables[CylcSuiteDAO.TABLE_TASK_JOBS].columns[3:] expected_values = [[2 for _ in columns]] self.mocked_connection.execute.return_value = expected_values # parameterized test for cycle, name, submit_num in self.get_select_task_job: returned_values = self.dao.select_task_job(cycle, name, submit_num) for column in columns: self.assertEqual(2, returned_values[column.name]) def test_select_task_job_sqlite_error(self): """Test that when the rundb CylcSuiteDAO select_task_job method raises a SQLite exception, the method returns None""" self.mocked_connection.execute.side_effect = sqlite3.DatabaseError r = self.dao.select_task_job("it'll", "raise", "an error!") self.assertIsNone(r)
class TestRunDb(unittest.TestCase): def setUp(self): self.dao = CylcSuiteDAO(':memory:') self.mocked_connection = mock.Mock() self.dao.connect = mock.MagicMock(return_value=self.mocked_connection) get_select_task_job = [ ["cycle", "name", "NN"], ["cycle", "name", None], ["cycle", "name", "02"], ] def test_select_task_job(self): """Test the rundb CylcSuiteDAO select_task_job method""" columns = self.dao.tables[CylcSuiteDAO.TABLE_TASK_JOBS].columns[3:] expected_values = [[2 for _ in columns]] self.mocked_connection.execute.return_value = expected_values # parameterized test for cycle, name, submit_num in self.get_select_task_job: returned_values = self.dao.select_task_job(cycle, name, submit_num) for column in columns: self.assertEqual(2, returned_values[column.name]) def test_select_task_job_sqlite_error(self): """Test that when the rundb CylcSuiteDAO select_task_job method raises a SQLite exception, the method returns None""" self.mocked_connection.execute.side_effect = DatabaseError r = self.dao.select_task_job("it'll", "raise", "an error!") self.assertIsNone(r)
def get_task_job_attrs(suite_name, point, task, submit_num): """Return job (platform, job_runner_name, live_job_id). live_job_id is the job ID if job is running, else None. """ suite_dao = CylcSuiteDAO(get_suite_run_pub_db_name(suite_name), is_public=True) task_job_data = suite_dao.select_task_job(point, task, submit_num) suite_dao.close() if task_job_data is None: return (None, None, None) job_runner_name = task_job_data["job_runner_name"] job_id = task_job_data["job_id"] if (not job_runner_name or not job_id or not task_job_data["time_run"] or task_job_data["time_run_exit"]): live_job_id = None else: live_job_id = job_id return (task_job_data["platform_name"], job_runner_name, live_job_id)
def get_task_job_attrs(suite_name, point, task, submit_num): """Return job (user_at_host, batch_sys_name, live_job_id). live_job_id is batch system job ID if job is running, else None. """ suite_dao = CylcSuiteDAO(get_suite_run_pub_db_name(suite_name), is_public=True) task_job_data = suite_dao.select_task_job(point, task, submit_num) suite_dao.close() if task_job_data is None: return (None, None, None) batch_sys_name = task_job_data["batch_sys_name"] batch_sys_job_id = task_job_data["batch_sys_job_id"] if (not batch_sys_name or not batch_sys_job_id or not task_job_data["time_run"] or task_job_data["time_run_exit"]): live_job_id = None else: live_job_id = batch_sys_job_id return (task_job_data["user_at_host"], batch_sys_name, live_job_id)