Changeset View
Changeset View
Standalone View
Standalone View
contrib/buildbot/test/test_persist_database.py
Show All 13 Lines | |||||
from test.test_endpoint_build import buildRequestQuery | from test.test_endpoint_build import buildRequestQuery | ||||
from test.test_endpoint_status import statusRequestData | from test.test_endpoint_status import statusRequestData | ||||
import mock | import mock | ||||
import server | import server | ||||
from build import BuildStatus | from build import BuildStatus | ||||
from teamcity_wrapper import BuildInfo | from teamcity_wrapper import BuildInfo | ||||
BUILD_NAME = 'build-name' | BUILD_NAME = "build-name" | ||||
BUILD_TYPE_ID = 'build-type-id' | BUILD_TYPE_ID = "build-type-id" | ||||
BUILD_TARGET_PHID = 'build-target-PHID' | BUILD_TARGET_PHID = "build-target-PHID" | ||||
class PersistDataTestCase(ABCBotFixture): | class PersistDataTestCase(ABCBotFixture): | ||||
def setUp(self): | def setUp(self): | ||||
self.db_file_no_ext = os.path.join( | self.db_file_no_ext = os.path.join(self.test_output_dir, "test_database") | ||||
self.test_output_dir, "test_database") | |||||
super().setUp() | super().setUp() | ||||
self.phab.get_file_content_from_master = mock.Mock() | self.phab.get_file_content_from_master = mock.Mock() | ||||
self.phab.get_file_content_from_master.return_value = json.dumps({}) | self.phab.get_file_content_from_master.return_value = json.dumps({}) | ||||
self.phab.set_text_panel_content = mock.Mock() | self.phab.set_text_panel_content = mock.Mock() | ||||
self.teamcity.get_coverage_summary = mock.Mock() | self.teamcity.get_coverage_summary = mock.Mock() | ||||
Show All 9 Lines | class PersistDataTestCase(ABCBotFixture): | ||||
def test_persist_diff_targets(self): | def test_persist_diff_targets(self): | ||||
queryData = buildRequestQuery() | queryData = buildRequestQuery() | ||||
queryData.abcBuildName = BUILD_NAME | queryData.abcBuildName = BUILD_NAME | ||||
queryData.buildTypeId = BUILD_TYPE_ID | queryData.buildTypeId = BUILD_TYPE_ID | ||||
queryData.PHID = BUILD_TARGET_PHID | queryData.PHID = BUILD_TARGET_PHID | ||||
triggerBuildResponse = test.mocks.teamcity.buildInfo( | triggerBuildResponse = test.mocks.teamcity.buildInfo( | ||||
test.mocks.teamcity.buildInfo_changes( | test.mocks.teamcity.buildInfo_changes(["test-change"]), buildqueue=True | ||||
['test-change']), buildqueue=True) | ) | ||||
self.teamcity.session.send.return_value = triggerBuildResponse | self.teamcity.session.send.return_value = triggerBuildResponse | ||||
response = self.app.post( | response = self.app.post(f"/build{queryData}", headers=self.headers) | ||||
f'/build{queryData}', | |||||
headers=self.headers) | |||||
self.assertEqual(response.status_code, 200) | self.assertEqual(response.status_code, 200) | ||||
# Check the diff target state was persisted | # Check the diff target state was persisted | ||||
with shelve.open(self.db_file_no_ext, flag='r') as db: | with shelve.open(self.db_file_no_ext, flag="r") as db: | ||||
self.assertIn('diff_targets', db) | self.assertIn("diff_targets", db) | ||||
self.assertIn(BUILD_TARGET_PHID, db['diff_targets']) | self.assertIn(BUILD_TARGET_PHID, db["diff_targets"]) | ||||
self.assertIn( | self.assertIn( | ||||
DEFAULT_BUILD_ID, | DEFAULT_BUILD_ID, db["diff_targets"][BUILD_TARGET_PHID].builds | ||||
db['diff_targets'][BUILD_TARGET_PHID].builds) | ) | ||||
self.assertEqual( | self.assertEqual( | ||||
db['diff_targets'][BUILD_TARGET_PHID].builds[DEFAULT_BUILD_ID].build_id, | db["diff_targets"][BUILD_TARGET_PHID].builds[DEFAULT_BUILD_ID].build_id, | ||||
DEFAULT_BUILD_ID) | DEFAULT_BUILD_ID, | ||||
) | |||||
self.assertEqual( | self.assertEqual( | ||||
db['diff_targets'][BUILD_TARGET_PHID].builds[DEFAULT_BUILD_ID].status, | db["diff_targets"][BUILD_TARGET_PHID].builds[DEFAULT_BUILD_ID].status, | ||||
BuildStatus.Queued) | BuildStatus.Queued, | ||||
) | |||||
self.assertEqual( | self.assertEqual( | ||||
db['diff_targets'][BUILD_TARGET_PHID].builds[DEFAULT_BUILD_ID].name, | db["diff_targets"][BUILD_TARGET_PHID].builds[DEFAULT_BUILD_ID].name, | ||||
BUILD_NAME) | BUILD_NAME, | ||||
) | |||||
# Restart the server, which we expect to restore the persisted state | # Restart the server, which we expect to restore the persisted state | ||||
del self.app | del self.app | ||||
self.app = server.create_server( | self.app = server.create_server( | ||||
self.teamcity, | self.teamcity, | ||||
self.phab, | self.phab, | ||||
self.slackbot, | self.slackbot, | ||||
self.cirrus, | self.cirrus, | ||||
db_file_no_ext=self.db_file_no_ext, | db_file_no_ext=self.db_file_no_ext, | ||||
jsonProvider=test.mocks.fixture.MockJSONProvider).test_client() | jsonProvider=test.mocks.fixture.MockJSONProvider, | ||||
).test_client() | |||||
data = statusRequestData() | data = statusRequestData() | ||||
data.buildName = BUILD_NAME | data.buildName = BUILD_NAME | ||||
data.buildId = DEFAULT_BUILD_ID | data.buildId = DEFAULT_BUILD_ID | ||||
data.buildTypeId = BUILD_TYPE_ID | data.buildTypeId = BUILD_TYPE_ID | ||||
data.buildTargetPHID = BUILD_TARGET_PHID | data.buildTargetPHID = BUILD_TARGET_PHID | ||||
statusResponse = self.app.post( | statusResponse = self.app.post("/status", headers=self.headers, json=data) | ||||
'/status', headers=self.headers, json=data) | |||||
self.assertEqual(statusResponse.status_code, 200) | self.assertEqual(statusResponse.status_code, 200) | ||||
self.phab.harbormaster.createartifact.assert_called_with( | self.phab.harbormaster.createartifact.assert_called_with( | ||||
buildTargetPHID=BUILD_TARGET_PHID, | buildTargetPHID=BUILD_TARGET_PHID, | ||||
artifactKey=f"{BUILD_NAME}-{BUILD_TARGET_PHID}", | artifactKey=f"{BUILD_NAME}-{BUILD_TARGET_PHID}", | ||||
artifactType="uri", | artifactType="uri", | ||||
artifactData={ | artifactData={ | ||||
"uri": self.teamcity.build_url( | "uri": self.teamcity.build_url( | ||||
"viewLog.html", | "viewLog.html", | ||||
{ | { | ||||
"buildTypeId": BUILD_TYPE_ID, | "buildTypeId": BUILD_TYPE_ID, | ||||
"buildId": DEFAULT_BUILD_ID, | "buildId": DEFAULT_BUILD_ID, | ||||
}, | }, | ||||
), | ), | ||||
"name": BUILD_NAME, | "name": BUILD_NAME, | ||||
"ui.external": True, | "ui.external": True, | ||||
}, | }, | ||||
) | ) | ||||
# Check the diff target was cleared from persisted state | # Check the diff target was cleared from persisted state | ||||
with shelve.open(self.db_file_no_ext, flag='r') as db: | with shelve.open(self.db_file_no_ext, flag="r") as db: | ||||
self.assertNotIn(BUILD_TARGET_PHID, db['diff_targets']) | self.assertNotIn(BUILD_TARGET_PHID, db["diff_targets"]) | ||||
if __name__ == '__main__': | if __name__ == "__main__": | ||||
unittest.main() | unittest.main() |