本文整理汇总了Python中mozregression.json_pushes.JsonPushes类的典型用法代码示例。如果您正苦于以下问题:Python JsonPushes类的具体用法?Python JsonPushes怎么用?Python JsonPushes使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了JsonPushes类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: test_pushes_within_changes
def test_pushes_within_changes(mocker):
push_first = {'1': {'changesets': ['a']}}
other_pushes = {
'2': {'changesets': ['b']},
'3': {'changesets': ['c']}
}
retry_get = mocker.patch('mozregression.json_pushes.retry_get')
response = Mock(json=Mock(side_effect=[push_first, other_pushes]))
retry_get.return_value = response
jpushes = JsonPushes()
pushes = jpushes.pushes_within_changes('fromchset', "tochset")
assert pushes[0].push_id == '1'
assert pushes[0].changeset == 'a'
assert pushes[1].push_id == '2'
assert pushes[1].changeset == 'b'
assert pushes[2].push_id == '3'
assert pushes[2].changeset == 'c'
retry_get.assert_has_calls([
call('https://hg.mozilla.org/integration/mozilla-inbound/json-pushes'
'?changeset=fromchset'),
call().raise_for_status(),
call().json(),
call('https://hg.mozilla.org/integration/mozilla-inbound/json-pushes'
'?fromchange=fromchset&tochange=tochset'),
call().raise_for_status(),
call().json()
])
示例2: check_for_move
def check_for_move(self, repo, changeset):
"""
Checks if the warning has moved lines but still exists.
"""
if self.ignore_lines:
return False
files = retrieve_test_logs(
repo, changeset[:12],
self.platform, warning_re=self.warning_re)
combined_warnings = Counter()
for log in files:
if log:
combined_warnings.update(log.warnings)
possible_move_found = False
normalized = re.match(r'^(.*), line [0-9]+$', self.warning).group(1)
for (k, v) in combined_warnings.iteritems():
if k.startswith(normalized) and v > self.warning_limit:
print "Possible line move:\n %d - %s" % (v, k)
possible_move_found = True
if possible_move_found:
jp = JsonPushes(repo)
push = jp.push(changeset)
print "Try this date: %s" % push.utc_date
return possible_move_found
示例3: test_pushlog_for_change
def test_pushlog_for_change(mocker):
pushlog = {"a": "b"}
retry_get = mocker.patch("mozregression.json_pushes.retry_get")
response = Mock(json=Mock(return_value={"1": pushlog}))
retry_get.return_value = response
jpushes = JsonPushes()
assert jpushes.pushlog_for_change("validchangeset") == pushlog
示例4: test_pushlog_for_change_404_error
def test_pushlog_for_change_404_error(mocker):
retry_get = mocker.patch('mozregression.json_pushes.retry_get')
response = Mock(status_code=404)
retry_get.return_value = response
jpushes = JsonPushes()
with pytest.raises(MozRegressionError):
jpushes.pushlog_for_change('invalid_changeset')
示例5: test_pushlog_for_change_nothing_found
def test_pushlog_for_change_nothing_found(mocker):
retry_get = mocker.patch('mozregression.json_pushes.retry_get')
response = Mock(json=Mock(return_value={}))
retry_get.return_value = response
jpushes = JsonPushes()
with pytest.raises(MozRegressionError):
jpushes.pushlog_for_change('invalid_changeset')
示例6: _bisect_inbounds
def _bisect_inbounds(self, good_rev, bad_rev, ensure_good_and_bad=False,
expand=0):
LOG.info("Getting %s builds between %s and %s"
% (self.fetch_config.inbound_branch, good_rev, bad_rev))
handler = InboundHandler(find_fix=self.options.find_fix,
ensure_good_and_bad=ensure_good_and_bad)
result = self._do_bisect(handler, good_rev, bad_rev, expand=expand)
if result == Bisection.FINISHED:
LOG.info("No more inbound revisions, bisection finished.")
handler.print_range()
if handler.good_revision == handler.bad_revision:
LOG.warning(
"It seems that you used two changesets that are in"
" the same push. Check the pushlog url."
)
elif len(handler.build_range) == 2:
# range reduced to 2 pushes (at least ones with builds):
# one good, one bad.
result = handler.handle_merge()
if result:
branch, good_rev, bad_rev = result
self.fetch_config.set_repo(branch)
return self._bisect_inbounds(good_rev, bad_rev,
expand=DEFAULT_EXPAND)
else:
# This code is broken, it prints out the message even when
# there are multiple bug numbers or commits in the range.
# Somebody should fix it before re-enabling it.
return 0
# print a bug if:
# (1) there really is only one bad push (and we're not
# just missing the builds for some intermediate builds)
# (2) there is only one bug number in that push
jp = JsonPushes(handler.build_range[1].repo_name)
num_pushes = len(jp.pushes_within_changes(
handler.build_range[0].changeset,
handler.build_range[1].changeset))
if num_pushes == 2:
bugids = find_bugids_in_push(
handler.build_range[1].repo_name,
handler.build_range[1].changeset
)
if len(bugids) == 1:
word = 'fix' if handler.find_fix else 'regression'
LOG.info("Looks like the following bug has the "
" changes which introduced the"
" {}:\n{}".format(word,
bug_url(bugids[0])))
elif result == Bisection.USER_EXIT:
self._print_resume_info(handler)
else:
# NO_DATA. With inbounds, this can not happen if changesets
# are incorrect - so builds are probably too old
LOG.info(
'There are no build artifacts on inbound for these'
' changesets (they are probably too old).')
return 1
return 0
示例7: handle_merge
def handle_merge(self):
# let's check if we are facing a merge, and in that case,
# continue the bisection from the merged branch.
result = None
LOG.debug("Starting merge handling...")
# we have to check the commit of the most recent push
most_recent_push = self.build_range[1]
jp = JsonPushes(most_recent_push.repo_name)
push = jp.push(most_recent_push.changeset, full='1')
msg = push.changeset['desc']
LOG.debug("Found commit message:\n%s\n" % msg)
branch = find_branch_in_merge_commit(msg)
if not (branch and len(push.changesets) >= 2):
return
try:
# so, this is a merge. We can find the oldest and youngest
# changesets, and the branch where the merge comes from.
oldest = push.changesets[0]['node']
# exclude the merge commit
youngest = push.changesets[-2]['node']
LOG.debug("This is a merge from %s" % branch)
# we can't use directly the youngest changeset because we
# don't know yet if it is good.
#
# PUSH1 PUSH2
# [1 2] [3 4 5 6 7]
# G MERGE B
#
# so first, grab it. This needs to be done on the right branch.
jp2 = JsonPushes(branch)
raw = [int(p.push_id) for p in
jp2.pushes_within_changes(oldest, youngest)]
data = jp2.pushes(
startID=str(min(raw) - 2),
endID=str(max(raw)),
)
oldest = data[0].changesets[0]
youngest = data[-1].changesets[-1]
# we are ready to bisect further
LOG.info("************* Switching to %s" % branch)
gr, br = self._reverse_if_find_fix(oldest, youngest)
result = (branch, gr, br)
except MozRegressionError:
LOG.debug("Got exception", exc_info=True)
raise MozRegressionError(
"Unable to exploit the merge commit. Origin branch is {}, and"
" the commit message for {} was:\n{}".format(
most_recent_push.repo_name,
most_recent_push.short_changeset,
msg
)
)
LOG.debug('End merge handling')
return result
示例8: test_revision_for_date_raise_appropriate_error
def test_revision_for_date_raise_appropriate_error():
jpushes = JsonPushes(branch='inbound')
jpushes.pushlog_within_changes = Mock(side_effect=EmptyPushlogError)
with pytest.raises(EmptyPushlogError) as ctx:
jpushes.revision_for_date(date(2015, 1, 1))
assert str(ctx.value) == \
'No pushes available for the date 2015-01-01 on inbound.'
示例9: find_bugids_in_push
def find_bugids_in_push(branch, changeset):
jp = JsonPushes(branch)
push = jp.push(changeset, full='1')
branches = set()
for chset in push.changesets:
res = RE_BUG_ID.search(chset['desc'])
if res:
branches.add(res.group(1))
return [b for b in branches]
示例10: test_pushlog_within_changes
def test_pushlog_within_changes(mocker):
push_first = {"1": {"date": 1}}
other_pushes = {"2": {"date": 2}, "3": {"date": 3}}
retry_get = mocker.patch("mozregression.json_pushes.retry_get")
response = Mock(json=Mock(side_effect=[push_first, other_pushes]))
retry_get.return_value = response
jpushes = JsonPushes()
assert jpushes.pushlog_within_changes("fromchset", "tochset") == [{"date": 1}, {"date": 2}, {"date": 3}]
示例11: range_for_inbounds
def range_for_inbounds(fetch_config, start_rev, end_rev):
"""
Creates a BuildRange for inbounds builds.
"""
info_fetcher = InboundInfoFetcher(fetch_config)
pushlogs_finder = JsonPushes(branch=fetch_config.inbound_branch)
pushlogs = pushlogs_finder.pushlog_within_changes(start_rev, end_rev)
futures_builds = []
for pushlog in pushlogs:
changeset = pushlog['changesets'][-1]
futures_builds.append(FutureBuildInfo(info_fetcher, changeset))
return BuildRange(info_fetcher, futures_builds)
示例12: __init__
def __init__(self, fetch_config):
InfoFetcher.__init__(self, fetch_config)
options = fetch_config.tk_options()
self.index = taskcluster.client.Index(options)
self.queue = taskcluster.Queue(options)
self.jpushes = JsonPushes(branch=fetch_config.inbound_branch,
path=fetch_config.branch_path)
示例13: test_pushlog_within_changes_using_dates
def test_pushlog_within_changes_using_dates():
p1 = {'changesets': ['abc'], 'date': 12345}
p2 = {'changesets': ['def'], 'date': 67891}
pushes = {'1': p1, '2': p2}
jpushes = JsonPushes(branch='m-i')
jpushes._request = Mock(return_value=pushes)
assert jpushes.pushlog_within_changes(
date(2015, 1, 1), date(2015, 2, 2)
) == [p1, p2]
jpushes._request.assert_called_once_with(
'https://hg.mozilla.org/integration/mozilla-inbound/json-pushes?'
'startdate=2015-01-01&enddate=2015-02-03'
)
示例14: test_pushes_within_changes_using_dates
def test_pushes_within_changes_using_dates(mocker):
p1 = {'changesets': ['abc'], 'date': 12345}
p2 = {'changesets': ['def'], 'date': 67891}
pushes = {'1': p1, '2': p2}
retry_get = mocker.patch('mozregression.json_pushes.retry_get')
retry_get.return_value = Mock(json=Mock(return_value=pushes))
jpushes = JsonPushes(branch='m-i')
pushes = jpushes.pushes_within_changes(date(2015, 1, 1), date(2015, 2, 2))
assert pushes[0].push_id == '1'
assert pushes[1].push_id == '2'
retry_get.assert_called_once_with(
'https://hg.mozilla.org/integration/mozilla-inbound/json-pushes?'
'startdate=2015-01-01&enddate=2015-02-03'
)
示例15: _choose_integration_branch
def _choose_integration_branch(self, changeset):
"""
Tries to determine which integration branch the given changeset
originated from by checking the date the changeset first showed up
in each repo. The repo with the earliest date is chosen.
"""
landings = {}
for k in ("autoland", "mozilla-inbound"):
jp = JsonPushes(k)
try:
push = jp.push(changeset, full='1')
landings[k] = push.timestamp
except EmptyPushlogError:
LOG.debug("Didn't find %s in %s" % (changeset, k))
repo = min(landings, key=landings.get)
return repo