Changeset View
Changeset View
Standalone View
Standalone View
contrib/buildbot/test/test_endpoint_status.py
Show First 20 Lines • Show All 52 Lines • ▼ Show 20 Lines | def setUp(self): | ||||
self.teamcity.getBuildInfo = mock.Mock() | self.teamcity.getBuildInfo = mock.Mock() | ||||
self.configure_build_info() | self.configure_build_info() | ||||
self.teamcity.get_coverage_summary = mock.Mock() | self.teamcity.get_coverage_summary = mock.Mock() | ||||
self.teamcity.get_coverage_summary.return_value = None | self.teamcity.get_coverage_summary.return_value = None | ||||
self.teamcity.getIgnoreList = mock.Mock() | self.teamcity.getIgnoreList = mock.Mock() | ||||
self.teamcity.getIgnoreList.return_value = [] | self.teamcity.getIgnoreList.return_value = [] | ||||
self.travis.get_branch_status = mock.Mock() | self.cirrus.get_default_branch_status = mock.Mock() | ||||
self.travis.get_branch_status.return_value = BuildStatus.Success | self.cirrus.get_default_branch_status.return_value = BuildStatus.Success | ||||
def setup_master_failureAndTaskDoesNotExist(self, latestCompletedBuildId=DEFAULT_BUILD_ID, | def setup_master_failureAndTaskDoesNotExist(self, latestCompletedBuildId=DEFAULT_BUILD_ID, | ||||
numRecentFailedBuilds=0, numCommits=1, | numRecentFailedBuilds=0, numCommits=1, | ||||
userSearchFields=None, buildLogFile='testlog.zip'): | userSearchFields=None, buildLogFile='testlog.zip'): | ||||
if userSearchFields is None: | if userSearchFields is None: | ||||
userSearchFields = {} | userSearchFields = {} | ||||
self.phab.maniphest.edit.return_value = { | self.phab.maniphest.edit.return_value = { | ||||
▲ Show 20 Lines • Show All 1,147 Lines • ▼ Show 20 Lines | def test_update_build_status_panel(self): | ||||
status = BuildStatus.Failure if build_id == 42 else BuildStatus.Success | status = BuildStatus.Failure if build_id == 42 else BuildStatus.Success | ||||
build_info['id'] = build_id | build_info['id'] = build_id | ||||
build_info['status'] = status.value.upper() | build_info['status'] = status.value.upper() | ||||
build_info['statusText'] = "Build success" if status == BuildStatus.Success else "Build failure" | build_info['statusText'] = "Build success" if status == BuildStatus.Success else "Build failure" | ||||
return build_info | return build_info | ||||
self.teamcity.getBuildInfo.side_effect = _get_build_info | self.teamcity.getBuildInfo.side_effect = _get_build_info | ||||
def get_travis_panel_content(status=None): | def get_cirrus_panel_content(status=None): | ||||
if not status: | if not status: | ||||
status = BuildStatus.Success | status = BuildStatus.Success | ||||
return ( | return ( | ||||
'| secp256k1 ([[https://github.com/Bitcoin-ABC/secp256k1 | Github]]) | Status |\n' | '| secp256k1 ([[https://github.com/Bitcoin-ABC/secp256k1 | Github]]) | Status |\n' | ||||
'|---|---|\n' | '|---|---|\n' | ||||
'| [[https://travis-ci.org/github/bitcoin-abc/secp256k1 | master]] | {{image uri="https://raster.shields.io/static/v1?label=Travis build&message={}&color={}&logo=travis", alt="{}"}} |\n\n' | '| [[https://cirrus-ci.com/github/Bitcoin-ABC/secp256k1 | master]] | {{image uri="https://raster.shields.io/static/v1?label=Cirrus build&message={}&color={}&logo=cirrus-ci", alt="{}"}} |\n\n' | ||||
).format( | ).format( | ||||
status.value, | status.value, | ||||
'brightgreen' if status == BuildStatus.Success else 'red', | 'brightgreen' if status == BuildStatus.Success else 'red', | ||||
status.value, | status.value, | ||||
) | ) | ||||
def set_config_file(names_to_display, names_to_hide): | def set_config_file(names_to_display, names_to_hide): | ||||
config = {"builds": {}} | config = {"builds": {}} | ||||
▲ Show 20 Lines • Show All 81 Lines • ▼ Show 20 Lines | def test_update_build_status_panel(self): | ||||
badge_url, | badge_url, | ||||
status_message, | status_message, | ||||
) | ) | ||||
# No build in config file, should bail out and not edit the panel with | # No build in config file, should bail out and not edit the panel with | ||||
# teamcity content | # teamcity content | ||||
set_config_file([], []) | set_config_file([], []) | ||||
call_status('dont_care', BuildStatus.Success) | call_status('dont_care', BuildStatus.Success) | ||||
assert_panel_content(get_travis_panel_content()) | assert_panel_content(get_cirrus_panel_content()) | ||||
# If branch is not master the panel is not updated | # If branch is not master the panel is not updated | ||||
self.phab.set_text_panel_content.reset_mock() | self.phab.set_text_panel_content.reset_mock() | ||||
call_status( | call_status( | ||||
'dont_care', | 'dont_care', | ||||
BuildStatus.Success, | BuildStatus.Success, | ||||
branch='refs/tags/phabricator/diff/42', | branch='refs/tags/phabricator/diff/42', | ||||
expected_status_code=500 | expected_status_code=500 | ||||
) | ) | ||||
self.phab.set_text_panel_content.assert_not_called() | self.phab.set_text_panel_content.assert_not_called() | ||||
# Turn travis build into failure | # Turn cirrus build into failure | ||||
self.travis.get_branch_status.return_value = BuildStatus.Failure | self.cirrus.get_default_branch_status.return_value = BuildStatus.Failure | ||||
call_status('dont_care', BuildStatus.Success) | call_status('dont_care', BuildStatus.Success) | ||||
assert_panel_content(get_travis_panel_content(BuildStatus.Failure)) | assert_panel_content(get_cirrus_panel_content(BuildStatus.Failure)) | ||||
self.travis.get_branch_status.return_value = BuildStatus.Success | self.cirrus.get_default_branch_status.return_value = BuildStatus.Success | ||||
# Some builds in config file but no associated teamcity build | # Some builds in config file but no associated teamcity build | ||||
set_config_file(["show_me11"], []) | set_config_file(["show_me11"], []) | ||||
call_status('dont_care', BuildStatus.Success) | call_status('dont_care', BuildStatus.Success) | ||||
assert_panel_content(get_travis_panel_content()) | assert_panel_content(get_cirrus_panel_content()) | ||||
# Set one build to be shown and associate it. This is not the build that | # Set one build to be shown and associate it. This is not the build that | ||||
# just finished. | # just finished. | ||||
associate_build("show_me11") | associate_build("show_me11") | ||||
call_status('hide_me_Type', BuildStatus.Success) | call_status('hide_me_Type', BuildStatus.Success) | ||||
assert_panel_content( | assert_panel_content( | ||||
get_travis_panel_content() + | get_cirrus_panel_content() + | ||||
header('Project Name') + | header('Project Name') + | ||||
build_line('show_me11') + | build_line('show_me11') + | ||||
'\n' | '\n' | ||||
) | ) | ||||
# Now with 3 builds from the same project + 1 not shown | # Now with 3 builds from the same project + 1 not shown | ||||
set_config_file(["show_me11", "show_me12", "show_me13"], ["hidden"]) | set_config_file(["show_me11", "show_me12", "show_me13"], ["hidden"]) | ||||
associate_build("show_me12") | associate_build("show_me12") | ||||
associate_build("show_me13") | associate_build("show_me13") | ||||
call_status('hide_me_Type', BuildStatus.Success) | call_status('hide_me_Type', BuildStatus.Success) | ||||
assert_panel_content( | assert_panel_content( | ||||
get_travis_panel_content() + | get_cirrus_panel_content() + | ||||
header('Project Name') + | header('Project Name') + | ||||
build_line('show_me11') + | build_line('show_me11') + | ||||
build_line('show_me12') + | build_line('show_me12') + | ||||
build_line('show_me13') + | build_line('show_me13') + | ||||
'\n' | '\n' | ||||
) | ) | ||||
# Add 2 more builds from another project. | # Add 2 more builds from another project. | ||||
# Check the result is always the same after a few calls | # Check the result is always the same after a few calls | ||||
set_config_file(["show_me11", "show_me12", "show_me13", | set_config_file(["show_me11", "show_me12", "show_me13", | ||||
"show_me21", "show_me22"], []) | "show_me21", "show_me22"], []) | ||||
associate_build( | associate_build( | ||||
"show_me21", | "show_me21", | ||||
teamcity_project_id="ProjectId2", | teamcity_project_id="ProjectId2", | ||||
teamcity_project_name="Project Name 2") | teamcity_project_name="Project Name 2") | ||||
associate_build( | associate_build( | ||||
"show_me22", | "show_me22", | ||||
teamcity_project_id="ProjectId2", | teamcity_project_id="ProjectId2", | ||||
teamcity_project_name="Project Name 2") | teamcity_project_name="Project Name 2") | ||||
for i in range(10): | for i in range(10): | ||||
call_status('hide_me_Type', BuildStatus.Success) | call_status('hide_me_Type', BuildStatus.Success) | ||||
assert_panel_content( | assert_panel_content( | ||||
get_travis_panel_content() + | get_cirrus_panel_content() + | ||||
header('Project Name') + | header('Project Name') + | ||||
build_line('show_me11') + | build_line('show_me11') + | ||||
build_line('show_me12') + | build_line('show_me12') + | ||||
build_line('show_me13') + | build_line('show_me13') + | ||||
'\n' + | '\n' + | ||||
header('Project Name 2') + | header('Project Name 2') + | ||||
build_line('show_me21') + | build_line('show_me21') + | ||||
build_line('show_me22') + | build_line('show_me22') + | ||||
'\n' | '\n' | ||||
) | ) | ||||
# Remove a build from teamcity, but not from the config file | # Remove a build from teamcity, but not from the config file | ||||
del associated_builds["show_me12"] | del associated_builds["show_me12"] | ||||
call_status('hide_me_Type', BuildStatus.Success) | call_status('hide_me_Type', BuildStatus.Success) | ||||
assert_panel_content( | assert_panel_content( | ||||
get_travis_panel_content() + | get_cirrus_panel_content() + | ||||
header('Project Name') + | header('Project Name') + | ||||
build_line('show_me11') + | build_line('show_me11') + | ||||
build_line('show_me13') + | build_line('show_me13') + | ||||
'\n' + | '\n' + | ||||
header('Project Name 2') + | header('Project Name 2') + | ||||
build_line('show_me21') + | build_line('show_me21') + | ||||
build_line('show_me22') + | build_line('show_me22') + | ||||
'\n' | '\n' | ||||
) | ) | ||||
# Hide a build from the config file (cannot be associated anymore) | # Hide a build from the config file (cannot be associated anymore) | ||||
set_config_file(["show_me11", "show_me12", | set_config_file(["show_me11", "show_me12", | ||||
"show_me21", "show_me22"], ["show_me13"]) | "show_me21", "show_me22"], ["show_me13"]) | ||||
del associated_builds["show_me13"] | del associated_builds["show_me13"] | ||||
call_status('hide_me_Type', BuildStatus.Success) | call_status('hide_me_Type', BuildStatus.Success) | ||||
assert_panel_content( | assert_panel_content( | ||||
get_travis_panel_content() + | get_cirrus_panel_content() + | ||||
header('Project Name') + | header('Project Name') + | ||||
build_line('show_me11') + | build_line('show_me11') + | ||||
'\n' + | '\n' + | ||||
header('Project Name 2') + | header('Project Name 2') + | ||||
build_line('show_me21') + | build_line('show_me21') + | ||||
build_line('show_me22') + | build_line('show_me22') + | ||||
'\n' | '\n' | ||||
) | ) | ||||
# Remove the last build from a project and check the project is no | # Remove the last build from a project and check the project is no | ||||
# longer shown | # longer shown | ||||
del associated_builds["show_me11"] | del associated_builds["show_me11"] | ||||
call_status('hide_me_Type', BuildStatus.Success) | call_status('hide_me_Type', BuildStatus.Success) | ||||
assert_panel_content( | assert_panel_content( | ||||
get_travis_panel_content() + | get_cirrus_panel_content() + | ||||
header('Project Name 2') + | header('Project Name 2') + | ||||
build_line('show_me21') + | build_line('show_me21') + | ||||
build_line('show_me22') + | build_line('show_me22') + | ||||
'\n' | '\n' | ||||
) | ) | ||||
# Check the status of the build is not checked if it didn't finish | # Check the status of the build is not checked if it didn't finish | ||||
# through the endpoint | # through the endpoint | ||||
failing_build_type_ids = ['show_me21_Type'] | failing_build_type_ids = ['show_me21_Type'] | ||||
call_status('hide_me_Type', BuildStatus.Success) | call_status('hide_me_Type', BuildStatus.Success) | ||||
assert_panel_content( | assert_panel_content( | ||||
get_travis_panel_content() + | get_cirrus_panel_content() + | ||||
header('Project Name 2') + | header('Project Name 2') + | ||||
build_line('show_me21') + | build_line('show_me21') + | ||||
build_line('show_me22') + | build_line('show_me22') + | ||||
'\n' | '\n' | ||||
) | ) | ||||
# But having the build to be updated through the endpoint causes the | # But having the build to be updated through the endpoint causes the | ||||
# status to be fetched again. Note that the result is meaningless here, | # status to be fetched again. Note that the result is meaningless here, | ||||
# and will be fetched from Teamcity anyway. | # and will be fetched from Teamcity anyway. | ||||
call_status('show_me21_Type', BuildStatus.Success) | call_status('show_me21_Type', BuildStatus.Success) | ||||
assert_panel_content( | assert_panel_content( | ||||
get_travis_panel_content() + | get_cirrus_panel_content() + | ||||
header('Project Name 2') + | header('Project Name 2') + | ||||
build_line('show_me21', status=BuildStatus.Failure) + | build_line('show_me21', status=BuildStatus.Failure) + | ||||
build_line('show_me22') + | build_line('show_me22') + | ||||
'\n' | '\n' | ||||
) | ) | ||||
# Check the unknown status of a build if it never completed | # Check the unknown status of a build if it never completed | ||||
associate_build( | associate_build( | ||||
"show_me23", | "show_me23", | ||||
teamcity_project_id="ProjectId2", | teamcity_project_id="ProjectId2", | ||||
teamcity_project_name="Project Name 2") | teamcity_project_name="Project Name 2") | ||||
no_complete_build_type_ids = ['show_me23_Type'] | no_complete_build_type_ids = ['show_me23_Type'] | ||||
call_status('show_me21_Type', BuildStatus.Success) | call_status('show_me21_Type', BuildStatus.Success) | ||||
assert_panel_content( | assert_panel_content( | ||||
get_travis_panel_content() + | get_cirrus_panel_content() + | ||||
header('Project Name 2') + | header('Project Name 2') + | ||||
build_line('show_me21', status=BuildStatus.Failure) + | build_line('show_me21', status=BuildStatus.Failure) + | ||||
build_line('show_me22') + | build_line('show_me22') + | ||||
build_line('show_me23', status=BuildStatus.Unknown) + | build_line('show_me23', status=BuildStatus.Unknown) + | ||||
'\n' | '\n' | ||||
) | ) | ||||
▲ Show 20 Lines • Show All 140 Lines • Show Last 20 Lines |