def test_fetch_not_finished(self, get_results, get_details): lava = LAVABackend(None) testjob = TestJob( job_id='9999', backend=self.backend) lava.fetch(testjob) get_results.assert_not_called()
def test_fetch_timeout(self, get_details): lava = LAVABackend(None) testjob = TestJob( job_id='9999', target=self.project, backend=self.backend) # Make sure lava.fetch() raises fetch issue, # backend.fetch() will increase testjob.fetch_attempt accordingly with self.assertRaises(TemporaryFetchIssue): lava.fetch(testjob)
def test_parse_results_metadata(self, get_results, get_details, get_logs): lava = LAVABackend(None) testjob = TestJob(job_id='1234', backend=self.backend) status, completed, metadata, results, metrics, logs = lava.fetch( testjob) self.assertEqual(JOB_METADATA, metadata)
def test_parse_results(self, get_results, get_details): lava = LAVABackend(None) testjob = TestJob(job_id='1234', backend=self.backend) status, metadata, results, metrics = lava.fetch(testjob) self.assertEqual(len(results), 1) self.assertEqual(len(metrics), 1)
def test_parse_results_metadata_with_suite_versions( self, get_results, get_details, get_logs): lava = LAVABackend(None) testjob = TestJob(job_id='1234', backend=self.backend) status, completed, metadata, results, metrics, logs = lava.fetch( testjob) self.assertEqual({"suite1": "1.0"}, metadata['suite_versions'])
def test_canceled(self, get_results, get_details, get_logs): lava = LAVABackend(None) testjob = TestJob(job_id='1234', backend=self.backend, target=self.project) status, completed, metadata, results, metrics, logs = lava.fetch( testjob) self.assertFalse(completed)
def test_fetch_basics(self, get_results, get_details, get_logs): lava = LAVABackend(None) testjob = TestJob(job_id='9999', backend=self.backend) results = lava.fetch(testjob) get_details.assert_called_with('9999') get_results.assert_called_with('9999') self.assertEqual('Complete', results[0])
def test_canceled(self, get_results, get_details, get_logs): lava = LAVABackend(None) testjob = TestJob( job_id='1234', backend=self.backend, target=self.project) status, completed, metadata, results, metrics, logs = lava.fetch(testjob) self.assertFalse(completed)
def test_parse_results_metadata_with_suite_versions(self, get_results, get_details, get_logs): lava = LAVABackend(None) testjob = TestJob( job_id='1234', backend=self.backend) status, completed, metadata, results, metrics, logs = lava.fetch(testjob) self.assertEqual({"suite1": "1.0"}, metadata['suite_versions'])
def test_parse_results_empty_metadata(self, get_results, get_details, get_logs): lava = LAVABackend(None) testjob = TestJob( job_id='1234', backend=self.backend) status, completed, metadata, results, metrics, logs = lava.fetch(testjob) self.assertEqual({}, metadata)
def test_parse_results(self, get_results, get_details, get_logs): lava = LAVABackend(None) testjob = TestJob(job_id='1234', backend=self.backend) status, completed, metadata, results, metrics, logs = lava.fetch( testjob) self.assertEqual(len(results), 1) self.assertEqual(len(metrics), 1) self.assertEqual(10, metrics['DefinitionFoo/case_foo'])
def test_incomplete_string_results_metadata(self, get_results, get_details, get_logs): lava = LAVABackend(None) testjob = TestJob( job_id='1234', backend=self.backend, target=self.project) status, completed, metadata, results, metrics, logs = lava.fetch(testjob) self.assertFalse(completed) self.assertEqual(TEST_RESULTS_INFRA_FAILURE_STR[0]['metadata'], testjob.failure)
def test_admin_notification(self, get_results, get_details, get_logs): self.project.admin_subscriptions.create(email='*****@*****.**') lava = LAVABackend(None) testjob = TestJob(job_id='1234', backend=self.backend, target=self.project) status, completed, metadata, results, metrics, logs = lava.fetch( testjob) self.assertEqual(1, len(mail.outbox))
def test_parse_results_empty_metadata(self, get_results, get_details, test_log): lava = LAVABackend(None) testjob = TestJob( job_id='1234', target=self.project, backend=self.backend) status, completed, metadata, results, metrics, logs = lava.fetch(testjob) self.assertEqual({}, metadata)
def test_fetch_basics(self, get_results, get_details, get_logs): lava = LAVABackend(None) testjob = TestJob( job_id='9999', backend=self.backend) results = lava.fetch(testjob) get_details.assert_called_with('9999') get_results.assert_called_with('9999') self.assertEqual('Complete', results[0])
def test_parse_results(self, get_results, get_details, get_logs): lava = LAVABackend(None) testjob = TestJob( job_id='1234', backend=self.backend) status, completed, metadata, results, metrics, logs = lava.fetch(testjob) self.assertEqual(len(results), 2) self.assertEqual(len(metrics), 2) self.assertEqual(10, metrics['DefinitionFoo/case_foo']) self.assertEqual('job_foo', testjob.name)
def test_automated_resubmit4(self, lava_resubmit, get_results, get_details, get_logs): lava = LAVABackend(self.backend) testjob = TestJob( job_id='1234', backend=self.backend, target=self.project) status, completed, metadata, results, metrics, logs = lava.fetch(testjob) lava_resubmit.assert_called() new_test_job = TestJob.objects.all().last() self.assertEqual(1, new_test_job.resubmitted_count) self.assertFalse(testjob.can_resubmit)
def test_incomplete_string_results_metadata_null_error_msg(self, get_results, get_details, get_logs, resubmit): self.project.project_settings = '{"CI_LAVA_INFRA_ERROR_MESSAGES": "not-really-important"}' self.project.save() lava = LAVABackend(None) testjob = TestJob( job_id='1234', backend=self.backend, target=self.project) status, completed, metadata, results, metrics, logs = lava.fetch(testjob) self.assertFalse(completed) resubmit.assert_not_called()
def test_parse_results(self, get_results, get_details, download_test_log): lava = LAVABackend(self.backend) testjob = TestJob(job_id='1234', backend=self.backend) status, completed, metadata, results, metrics, logs = lava.fetch( testjob) self.assertEqual(len(results), 2) self.assertIn('log', results['DefinitionFoo/case_bar'].keys()) self.assertEqual(len(metrics), 2) self.assertEqual(10, metrics['DefinitionFoo/case_foo']) self.assertEqual('job_foo', testjob.name)
def test_automated_resubmit3(self, lava_resubmit, get_results, get_details, get_logs): lava = LAVABackend(self.backend) testjob = TestJob( job_id='1234', backend=self.backend, target=self.project) status, completed, metadata, results, metrics, logs = lava.fetch(testjob) lava_resubmit.assert_called() new_test_job = TestJob.objects.all().last() self.assertEqual(1, new_test_job.resubmitted_count) self.assertFalse(testjob.can_resubmit)
def test_automated_resubmit_with_project_settings(self, lava_resubmit, get_results, get_details, get_logs): self.project.project_settings = yaml.dump({'CI_LAVA_INFRA_ERROR_MESSAGES': [TEST_RESULT_FAILURE_CUSTOM]}) lava = LAVABackend(self.backend) testjob = TestJob( job_id='1234', backend=self.backend, target=self.project) status, completed, metadata, results, metrics, logs = lava.fetch(testjob) lava_resubmit.assert_called() new_test_job = TestJob.objects.all().last() self.assertEqual(1, new_test_job.resubmitted_count) self.assertFalse(testjob.can_resubmit)
def test_fetch_missing_dates(self, get_results, get_details, test_log): lava = LAVABackend(None) testjob = TestJob( job_id='9999', target=self.project, backend=self.backend) results = lava.fetch(testjob) get_details.assert_called_with('9999') get_results.assert_called_with('9999') self.assertEqual('Complete', results[0]) testjob.refresh_from_db() self.assertIsNotNone(testjob.started_at) self.assertIsNone(testjob.ended_at)
def test_parse_results_rest(self, get_results, get_details, download_test_log): # this test is a workaround of LAVA bug # https://git.lavasoftware.org/lava/lava/-/issues/449 lava = LAVABackend(self.backend) testjob = TestJob( job_id='1234', target=self.project, backend=self.backend) status, completed, metadata, results, metrics, logs = lava.fetch(testjob) self.assertEqual(len(results), 2) self.assertIn('log', results['DefinitionFoo/case_bar'].keys()) self.assertEqual(len(metrics), 2) self.assertEqual(10, metrics['DefinitionFoo/case_foo']["value"]) self.assertEqual('job_foo', testjob.name)
def test_automated_resubmit_email(self, get_results, get_details, get_logs): self.project.admin_subscriptions.create(email='*****@*****.**') lava = LAVABackend(self.backend) testjob = TestJob(job_id='1234', backend=self.backend, target=self.project) resubmitted_job = TestJob(job_id='1235', backend=self.backend, target=self.project, resubmitted_count=1) resubmitted_job.save() lava.resubmit = MagicMock(return_value=resubmitted_job) status, completed, metadata, results, metrics, logs = lava.fetch( testjob) lava.resubmit.assert_called() # there should be an admin email sent after resubmission self.assertEqual(1, len(mail.outbox))
def test_automated_resubmit_email(self, get_results, get_details, get_logs): self.project.admin_subscriptions.create(email='*****@*****.**') lava = LAVABackend(self.backend) testjob = TestJob( job_id='1234', backend=self.backend, target=self.project) resubmitted_job = TestJob( job_id='1235', backend=self.backend, target=self.project, resubmitted_count=1) resubmitted_job.save() lava.resubmit = MagicMock(return_value=resubmitted_job) status, completed, metadata, results, metrics, logs = lava.fetch(testjob) lava.resubmit.assert_called() # there should be an admin email sent after resubmission self.assertEqual(1, len(mail.outbox))
def test_parse_results_clone_measurements(self, get_results, get_details, test_log): self.backend.backend_settings = '{"CI_LAVA_CLONE_MEASUREMENTS": true, "CI_LAVA_HANDLE_BOOT": true}' # Project settings has higher priority than backend settings self.project.project_settings = 'CI_LAVA_CLONE_MEASUREMENTS: true' lava = LAVABackend(self.backend) testjob = TestJob( job_id='1235', backend=self.backend, target=self.project, target_build=self.build, environment="foo_env") status, completed, metadata, results, metrics, logs = lava.fetch(testjob) self.assertEqual(len(results), 3) self.assertEqual(len(metrics), 2) self.assertEqual(10, metrics['DefinitionFoo/case_foo']["value"]) self.assertEqual('job_foo', testjob.name)