def test_create_testrun_job_url(self, get_implementation, __now__): metadata = {"foo": "bar"} tests = {"foo": "pass"} metrics = {"bar": 1} results = ('Complete', True, metadata, tests, metrics, "abc") test_job_url = "http://www.example.com" impl = MagicMock() impl.fetch = MagicMock(return_value=results) impl.job_url = MagicMock(return_value=test_job_url) get_implementation.return_value = impl test_job = self.create_test_job( backend=self.backend, definition='foo: 1', environment='myenv', job_id='999', ) self.backend.really_fetch(test_job) # should not crash test_run = core_models.TestRun.objects.get( build__project=self.project, environment__slug='myenv', build__version='1', job_id='999', job_status='Complete', completed=True, ) self.assertEqual(test_run.job_url, test_job_url)
def test_really_fetch_sets_testjob_can_resubmit_and_testrun_completed2( self, get_implementation, __now__): metadata = {"foo": "bar"} tests = {} metrics = {} results = ('Incomplete', False, metadata, tests, metrics, "abc") # ^^^^^ job resulted in an infra failure impl = MagicMock() impl.fetch = MagicMock(return_value=results) impl.job_url = MagicMock(return_value="http://www.example.com") get_implementation.return_value = impl test_job = self.create_test_job( backend=self.backend, definition='foo: 1', environment='myenv', job_id='999', ) self.backend.really_fetch(test_job) self.assertTrue(test_job.can_resubmit) # should not crash core_models.TestRun.objects.get( build__project=self.project, environment__slug='myenv', build__version='1', job_id='999', job_status='Incomplete', completed=False, )
def test_fetch_with_only_metrics(self, get_implementation, __now__): metadata = {"foo": "bar"} tests = {} metrics = {"foo": {"value": 10, "unit": "boxes"}} results = ('Complete', True, metadata, tests, metrics, "abc") impl = MagicMock() impl.fetch = MagicMock(return_value=results) impl.job_url = MagicMock(return_value="http://www.example.com") get_implementation.return_value = impl test_job = self.create_test_job( backend=self.backend, definition='foo: 1', environment='myenv', job_id='999', ) self.backend.fetch(test_job.id) # should not crash test_run = core_models.TestRun.objects.get( build__project=self.project, environment__slug='myenv', build__version='1', job_id='999', job_status='Complete', ) test_job.refresh_from_db() self.assertFalse(test_job.can_resubmit) self.assertTrue(test_run.completed)
def test_really_fetch_sets_fetched_on_invalid_metadata( self, get_implementation, __now__): metadata = {"foo": "bar"} tests = {"foo": "pass"} metrics = {"bar": 1} results = ('Complete', True, metadata, tests, metrics, "abc") impl = MagicMock() impl.fetch = MagicMock(return_value=results) impl.job_url = MagicMock(return_value="http://www.example.com") get_implementation.return_value = impl environment = self.project.environments.create(slug='myenv') self.build.test_runs.create( environment=environment, job_id='999', job_status='Complete', completed=True, ) test_job = self.create_test_job( backend=self.backend, definition='foo: 1', environment='myenv', job_id='999', ) self.backend.really_fetch(test_job) self.assertTrue(test_job.fetched) self.assertIsNotNone(test_job.failure)
def test_really_fetch_sets_testjob_can_resubmit_and_testrun_completed2(self, get_implementation, __now__): metadata = {"foo": "bar"} tests = {} metrics = {} results = ('Incomplete', False, metadata, tests, metrics, "abc") # ^^^^^ job resulted in an infra failure impl = MagicMock() impl.fetch = MagicMock(return_value=results) impl.job_url = MagicMock(return_value="http://www.example.com") get_implementation.return_value = impl test_job = self.create_test_job( backend=self.backend, definition='foo: 1', environment='myenv', job_id='999', ) self.backend.really_fetch(test_job) self.assertTrue(test_job.can_resubmit) # should not crash core_models.TestRun.objects.get( build__project=self.project, environment__slug='myenv', build__version='1', job_id='999', job_status='Incomplete', completed=False, )
def test_really_fetch_sets_fetched_on_invalid_metadata(self, get_implementation, __now__): metadata = {"foo": "bar"} tests = {"foo": "pass"} metrics = {"bar": 1} results = ('Complete', True, metadata, tests, metrics, "abc") impl = MagicMock() impl.fetch = MagicMock(return_value=results) impl.job_url = MagicMock(return_value="http://www.example.com") get_implementation.return_value = impl environment = self.project.environments.create(slug='myenv') self.build.test_runs.create( environment=environment, job_id='999', job_status='Complete', completed=True, ) test_job = self.create_test_job( backend=self.backend, definition='foo: 1', environment='myenv', job_id='999', ) self.backend.really_fetch(test_job) self.assertTrue(test_job.fetched) self.assertIsNotNone(test_job.failure)
def test_fetch_creates_testrun(self, get_implementation, __now__): metadata = {"foo": "bar"} tests = {"foo": "pass"} metrics = {"bar": {"value": 1, "unit": ""}} results = ('Complete', True, metadata, tests, metrics, "abc") project_status = self.build.status tests_pass_so_far = project_status.tests_pass impl = MagicMock() impl.fetch = MagicMock(return_value=results) impl.job_url = MagicMock(return_value="http://www.example.com") get_implementation.return_value = impl test_job = self.create_test_job( backend=self.backend, definition='foo: 1', environment='myenv', job_id='999', ) self.backend.fetch(test_job.id) # should not crash test_run = core_models.TestRun.objects.get( build__project=self.project, environment__slug='myenv', build__version='1', job_id='999', job_status='Complete', completed=True, ) self.assertEqual( 1, core_models.Test.objects.filter( test_run=test_run, metadata__name="foo", result=True, ).count() ) self.assertEqual( 1, core_models.Metric.objects.filter( test_run=test_run, metadata__name="bar", result=1, ).count() ) project_status.refresh_from_db() self.assertEqual(project_status.tests_pass, tests_pass_so_far + 1) test_job.refresh_from_db() self.assertTrue(test_job.fetched)
def test_fetch_ignores_results_from_incomplete_job(self, get_implementation, __now__): metadata = {"foo": "bar"} tests = {"foo": "pass"} metrics = {"bar": {"value": 1, "unit": ""}} results = ('Incomplete', False, metadata, tests, metrics, "abc") # ^^^^^ job resulted in an infra failure impl = MagicMock() impl.fetch = MagicMock(return_value=results) impl.job_url = MagicMock(return_value="http://www.example.com") get_implementation.return_value = impl test_job = self.create_test_job( backend=self.backend, definition='foo: 1', environment='myenv', job_id='999', ) self.backend.fetch(test_job.id) test_job.refresh_from_db() self.assertTrue(test_job.can_resubmit) # should not crash testrun = core_models.TestRun.objects.get( build__project=self.project, environment__slug='myenv', build__version='1', job_id='999', job_status='Incomplete', completed=False, # even if results are not empty ) # no results get recorded self.assertEqual(0, testrun.tests.count()) self.assertEqual(0, testrun.metrics.count())