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()
Beispiel #2
0
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)
Beispiel #3
0
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
Beispiel #4
0
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)
Beispiel #6
0
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'}
                                        })
Beispiel #7
0
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'
                          }
                      })
Beispiel #8
0
def query_builders():
    """Return list of all builders."""
    return allthethings.list_builders()
Beispiel #9
0
def query_builders():
    """Return list of all builders."""
    return allthethings.list_builders()