def test_update_row_exception(self, mock_tj, mock_log): mock_tj.objects.get_subclass.side_effect = Exception('error') rows = [('1', '30'), ('2', '18'), ('3', '26')] column_names = ['id', 'creation_time'] request = RequestFactory().post('/jobs', {'column_fields': column_names, 'row': rows}) gizmo_jobs_table.update_row(request, job_id='1') # Check Result mock_log.warning.assert_called_with('Updating row for job 1 failed: error')
def test_update_row_exception(self, mock_tj, mock_log): mock_tj.objects.get_subclass.side_effect = Exception('error') rows = [('1', '30'), ('2', '18'), ('3', '26')] column_names = ['id', 'creation_time'] request = RequestFactory().post('/jobs', {'column_fields': column_names, 'row': rows}) gizmo_jobs_table.update_row(request, job_id='1') # Check Result mock_log.error.assert_called_with('Updating row for job 1 failed: error')
def test_update_row_exception(self, mock_tj, mock_log): mock_tj.objects.get_subclass.side_effect = Exception('error') rows = [('1', '30'), ('2', '18'), ('3', '26')] column_names = ['ID', 'Time(s)'] request = RequestFactory().post('/jobs', { 'column_fields': column_names, 'row': rows }) gizmo_jobs_table.update_row(request, job_id='1') # Check Result mock_log.error.assert_called_with( 'The following error occurred when updating row for job %s: %s', '1', str('error'))
def test_update_row_condor_workflow_no_statuses(self, mock_tj, mock_rts): # Another Case where job.label is not gizmos_showcase mock_rts.return_value = '{"job_statuses":[]}' mock_tj.objects.get_subclass.return_value = mock.MagicMock( spec=CondorWorkflow, status='Various', label='test_label', statuses={ 'Completed': 0, 'Running': 0 }, num_jobs=1) rows = [('1', '30')] column_names = ['id', 'creation_time'] request = RequestFactory().post('/jobs', { 'column_fields': column_names, 'row': rows }) result = gizmo_jobs_table.update_row(request, job_id='1') # Check Result rts_call_args = mock_rts.call_args_list self.assertIn('job_statuses', rts_call_args[0][0][1]) self.assertEqual( { 'Aborted': 0, 'Completed': 0, 'Error': 0, 'Running': 0 }, rts_call_args[0][0][1]['job_statuses']) self.assertIn('job_status', rts_call_args[0][0][1]) self.assertEqual('Submitted', rts_call_args[0][0][1]['job_status']) self.assertEqual(200, result.status_code)
def test_update_row_dask_job_results_ready(self, mock_tj, mock_rts): # Another Case where job.label is not gizmos_showcase mock_rts.return_value = '{"job_statuses":[]}' mock_tj.objects.get_subclass.return_value = mock.MagicMock( spec=DaskJob, status='Results-Ready', label='test_label', ) rows = [('1', '30')] column_names = ['id', 'creation_time'] request = RequestFactory().post('/jobs', {'column_fields': column_names, 'row': rows}) result = gizmo_jobs_table.update_row(request, job_id='1') # Check Result rts_call_args = mock_rts.call_args_list self.assertEqual('Running', rts_call_args[0][0][1]['job_status']) self.assertEqual(200, result.status_code)
def test_update_row_showcase_condor_workflow(self, mock_tj, mock_rts): mock_rts.return_value = '{"job_statuses":[]}' mock_tj.objects.get_subclass.return_value = mock.MagicMock( spec=CondorWorkflow, status='Various', label='gizmos_showcase' ) rows = [('1', '30')] column_names = ['id', 'creation_time'] request = RequestFactory().post('/jobs', {'column_fields': column_names, 'row': rows}) result = gizmo_jobs_table.update_row(request, job_id='1') # Check Result rts_call_args = mock_rts.call_args_list self.assertEqual('Various', rts_call_args[0][0][1]['job_status']) self.assertIn('job_statuses', rts_call_args[0][0][1]) self.assertEqual({'Completed': 20, 'Error': 20, 'Running': 40, 'Aborted': 0}, rts_call_args[0][0][1]['job_statuses']) self.assertEqual(200, result.status_code)
def test_update_row_showcase_various_complete(self, mock_tj, mock_rts): mock_rts.return_value = '{"job_statuses":[]}' mock_tj.objects.get_subclass.return_value = mock.MagicMock( spec=TethysJob, status='Various-Complete', label='gizmos_showcase' ) rows = [('1', '30')] column_names = ['id', 'creation_time'] request = RequestFactory().post('/jobs', {'column_fields': column_names, 'row': rows}) result = gizmo_jobs_table.update_row(request, job_id='1') # Check Result rts_call_args = mock_rts.call_args_list self.assertEqual('Various-Complete', rts_call_args[0][0][1]['job_status']) self.assertIn('job_statuses', rts_call_args[0][0][1]) self.assertEqual({'Completed': 80, 'Error': 15, 'Running': 0, 'Aborted': 5}, rts_call_args[0][0][1]['job_statuses']) self.assertEqual(200, result.status_code)
def test_update_row_not_gizmos(self, mock_tj, mock_rts): # Another Case where job.label is not gizmos_showcase mock_rts.return_value = '{"job_statuses":[]}' mock_tj.objects.get_subclass.return_value = mock.MagicMock( status='Various', label='test_label', statuses={'Completed': 1}) rows = [('1', '30')] column_names = ['ID', 'Time(s)'] request = RequestFactory().post('/jobs', { 'column_fields': column_names, 'row': rows }) result = gizmo_jobs_table.update_row(request, job_id='1') # Check Result rts_call_args = mock_rts.call_args_list self.assertIn('job_statuses', rts_call_args[0][0][1]) self.assertEqual({'Completed': 1}, rts_call_args[0][0][1]['job_statuses']) self.assertEqual(200, result.status_code)