def test_list_builders_assert_on_empty_list(self, fetch_allthethings_data): """list_builders should raise AssertionError if there are no builders listed.""" fetch_allthethings_data.return_value = json.loads(""" { "builders" : {}, "schedulers": { "Scheduler 1": {}, "Scheduler 2": {} } }""") with self.assertRaises(AssertionError): allthethings.list_builders()
def process_data(): email = session.get('email') commit = request.form['commit'] if email is None: abort(403, 'Access denied! Please log in first.') if not verify_email(email, commit): abort(403, 'You are not allowed to add jobs to this commit.') buildernames = map(urllib.unquote, request.form.keys()) buildernames.remove('commit') assert all(c in string.hexdigits for c in commit) buildjson.BUILDS_CACHE = {} query_jobs.JOBS_CACHE = {} for buildername in buildernames: assert buildername in list_builders() for buildername in buildernames: print '===>', buildername JOBS_QUEUE.enqueue_call( func=trigger_job, kwargs={'buildername': buildername, 'revision': commit, 'dry_run': False}, timeout=800) TH_URL = "https://treeherder.mozilla.org/#/jobs?repo=try&revision=%s" % commit return redirect(TH_URL)
def get_upstream_buildernames(repo_name): """Return every upstream buildername in a repo.""" buildernames = filter_buildernames([repo_name], ["hg bundle", "pgo"], list_builders()) upstream_jobs = [] for buildername in buildernames: if not is_downstream(buildername): upstream_jobs.append(buildername) return upstream_jobs
def generate_builders_relations_dictionary(): """Create a dictionary that maps every upstream job to its downstream jobs.""" builders = list_builders() relations = collections.defaultdict(list) for buildername in builders: if is_downstream(buildername): relations[determine_upstream_builder(buildername)].append(buildername) return relations
def test_list_builders_with_mock_data(self, fetch_allthethings_data): """list_builders should return list of builders from allthethings.""" fetch_allthethings_data.return_value = json.loads(""" {"builders" : { "Builder 1": {}, "Builder 2": {} } }""") expected_sorted = [u'Builder 1', u'Builder 2'] self.assertEquals(sorted(allthethings.list_builders()), expected_sorted)
def trigger_missing_jobs_for_revision(repo_name, revision, dry_run=False): """ Trigger missing jobs for a given revision. Jobs have any of ('hg bundle', 'b2g', 'pgo') in their buildername will not be triggered. """ all_buildernames = filter_buildernames([repo_name], ['hg bundle', 'b2g', 'pgo'], allthethings.list_builders()) for buildername in all_buildernames: trigger_range(buildername=buildername, revisions=[revision], times=1, dry_run=dry_run, extra_properties={'mozci_request': { 'type': 'trigger_missing_jobs_for_revision'} })
def trigger_missing_jobs_for_revision(repo_name, revision, dry_run=False): """ Trigger missing jobs for a given revision. Jobs have any of ('hg bundle', 'b2g', 'pgo') in their buildername will not be triggered. """ all_buildernames = filter_buildernames([repo_name], ['hg bundle', 'b2g', 'pgo'], allthethings.list_builders()) for buildername in all_buildernames: trigger_range(buildername=buildername, revisions=[revision], times=1, dry_run=dry_run, extra_properties={ 'mozci_request': { 'type': 'trigger_missing_jobs_for_revision' } })
def query_builders(): """Return list of all builders.""" return allthethings.list_builders()