def create_job_assignment(job, computer, project, params=None): assignment = JobAssignment( job = job.model, project = project, computer = computer, ).get_domain_object() assignment.create_config(params) assignment.model.version = assignment.job_version assignment.model.save() if len(ProjectClient.objects.filter(project=project, computer=computer)) == 0: client = ProjectClient(project=project, computer=computer) client.generate_password() client.save() return assignment
def setUp(self): super(TestResults, self).setUp() self._mock_resolver() self.db = get_database_connection() self.project_name = u"project" self.project = Project(name=self.project_name, tracker_uri="http://example.com", repository_uri="/tmp/project") self.buildmaster = Buildmaster(project=self.project, buildmaster_port=0, webstatus_port=1) self.computer = BuildComputer(hostname="localhost") self.job = Job(slug='cthulhubot-sleep').get_domain_object() self.assignment = JobAssignment( job = self.job.model, project = self.project, computer = self.computer, ).get_domain_object() self.client = ProjectClient(project=self.project, computer=self.computer)
class TestResults(DatabaseTestCase): def setUp(self): super(TestResults, self).setUp() self._mock_resolver() self.db = get_database_connection() self.project_name = u"project" self.project = Project(name=self.project_name, tracker_uri="http://example.com", repository_uri="/tmp/project") self.buildmaster = Buildmaster(project=self.project, buildmaster_port=0, webstatus_port=1) self.computer = BuildComputer(hostname="localhost") self.job = Job(slug='cthulhubot-sleep').get_domain_object() self.assignment = JobAssignment( job = self.job.model, project = self.project, computer = self.computer, ).get_domain_object() self.client = ProjectClient(project=self.project, computer=self.computer) def _mock_resolver(self): self._original_resolver = urlresolvers.get_resolver resolver = Mock() self.prefix = get_script_prefix() self.mocked_uri = resolver.reverse.return_value="heureka" urlresolvers.get_resolver = lambda conf: resolver def _unmock_resolver(self): urlresolvers.get_resolver = self._original_resolver def insert_build(self, time_end=False, time_start=False): if not time_start: time_start = datetime(year=2009, month=01, day=01, hour=12, minute=00, second=00) if time_end is False: time_end = datetime(year=2009, month=01, day=01, hour=12, minute=00, second=01) build = { 'builder' : str(self.assignment.get_identifier()), 'slaves' : [self.client.get_name()], 'number' : 1, 'time_start' : time_start, 'time_end' : time_end, 'steps' : [], } self.db.builds.insert(build) return build def insert_step(self, build, result=False, successful=False, time_end=False, time_start=False): if result is False: result = FAILURE if time_start is False: time_start = datetime(year=2009, month=01, day=01, hour=12, minute=00, second=00) if time_end is False: time_end = datetime(year=2009, month=01, day=01, hour=12, minute=00, second=01) step = { 'time_start' : time_start, 'time_end' : time_end, 'stdout' : '', 'stderr' : '', 'headers' : '', 'successful' : successful, 'result' : result, } self.db.steps.insert(step) build['steps'].append(step) self.db.builds.save(build) return step def test_build_results_before_first_run(self): self.assert_equals(u"No result yet", self.assignment.get_last_build_status()) def test_build_results_before_first_run_ended(self): self.insert_build(time_end=None) self.assert_equals(u"No result yet", self.assignment.get_last_build_status()) def test_failed_result(self): build = self.insert_build(time_end=datetime(year=2009, month=01, day=01, hour=12, minute=00, second=01)) self.insert_step(build) self.assert_equals(u"Failure", self.assignment.get_last_build_status()) def test_build_retrieved(self): build = self.insert_build() self.assert_equals(build, self.assignment.get_builds()[0]) def test_failure_before_success_is_still_fails(self): build = self.insert_build() self.insert_step(build) self.insert_step(build, result=SUCCESS) self.assert_equals(u"Failure", self.assignment.get_last_build_status()) def test_simple_success(self): build = self.insert_build() self.insert_step(build, result=SUCCESS) self.assert_equals(u"Success", self.assignment.get_last_build_status()) def test_last_finished_build_used_when_last_is_not_finished_yet(self): build = self.insert_build(time_end=datetime(year=2009, month=01, day=01, hour=12, minute=00, second=01)) self.insert_step(build, result=SUCCESS) build = self.insert_build(time_start=datetime(year=2009, month=01, day=01, hour=13, minute=00, second=00), time_end=None) self.insert_step(build, result=FAILURE, time_start = datetime(year=2009, month=01, day=01, hour=13, minute=00, second=00), time_end=datetime(year=2009, month=01, day=01, hour=13, minute=00, second=01)) self.insert_step(build, result=None, time_end=None, time_start=datetime(year=2009, month=01, day=01, hour=13, minute=00, second=01)) self.assert_equals(u"Success", self.assignment.get_last_build_status())