def test_getBuildersWithPendingBuildsByProject(self): yield self.setupProject(builders={'builder-02': 'Katana'}) self.request.args['pending_builds'] = ['1'] project_json = status_json.SingleProjectJsonResource( self.master_status, self.project) project_dict = yield project_json.asDict(self.request) def getSource(url=True): source = { 'revision': 'az', 'revision_short': 'az', 'hasPatch': False, 'branch': 'master', 'changes': [], 'project': 'proj', 'repository': 'z', 'codebase': 'cb', 'totalChanges': 0 } if url: source['url'] = None return source pending = [{ 'brid': 1, 'source': getSource(), 'sources': [getSource(url=False)], 'properties': [], 'priority': 20, 'builderName': 'builder-02', 'reason': 'because', 'slaves': ['build-slave-01'], 'submittedAt': 1450171024, 'builderFriendlyName': 'builder-02', 'builderURL': 'http://localhost:8080/projects/Katana/builders/builder-02?katana-buildbot_branch=katana', 'results': -1, 'builds': [], 'lastBuildNumber': None }] expected_project = self.expectedProjectDict(builders=[ self.jsonBuilders('builder-02', pendingBuilds=len(pending), pendingBuildRequests=pending) ]) self.assertEquals(project_dict, expected_project)
def test_getBuildersByProject(self): builders = { 'builder-01': 'project-01', "builder-02": 'Katana', "builder-03": 'Katana', "builder-04": 'Katana', "builder-05": 'project-02', } yield self.setupProject(builders=builders) project_json = status_json.SingleProjectJsonResource( self.master_status, self.project) latestRevisions = { 'https://github.com/Unity-Technologies/buildbot.git': { 'codebase': 'katana-buildbot', 'display_repository': 'https://github.com/Unity-Technologies/buildbot.git', 'branch': 'Katana', 'revision': u'0:835be7494fb4' } } def getObjectStateByKey(objects, filteredKey, storedKey): return latestRevisions project_json.status.master.db.state.getObjectStateByKey = getObjectStateByKey self.assertEqual(project_json.children.keys(), ['builder-02', 'builder-03', 'builder-04']) project_dict = yield project_json.asDict(self.request) expected_project_dict = self.expectedProjectDict( builders=[ self.jsonBuilders('builder-02', pendingBuilds=1), self.jsonBuilders('builder-03'), self.jsonBuilders('builder-04') ], latestRevisions=latestRevisions) self.assertEqual(project_dict, expected_project_dict)
def test_getBuildersByProjectWithLatestBuilds(self): self.master.botmaster.builderNames = ["builder-01"] builder = mockBuilder(self.master, self.master_status, "builder-01", "Katana") self.master.botmaster.builders = {'builder-01': builder} def mockFinishedBuildsAsync(branches=[], codebases={}, num_builds=None, max_buildnum=None, finished_before=None, results=None, max_search=2000, useCache=False): return defer.succeed([fakeBuildStatus(self.master, builder, 1)]) builder.builder_status.generateFinishedBuildsAsync = mockFinishedBuildsAsync project_json = status_json.SingleProjectJsonResource( self.master_status, self.project) self.assertEqual(project_json.children.keys(), ['builder-01']) project_dict = yield project_json.asDict(self.request) expected_project_dict = \ {'comparisonURL': '../../projects/Katana/comparison?builders0=katana-buildbot%3Dkatana', 'builders': [{'latestBuild': { 'results_text': 'success', 'slave': 'build-slave-01', 'slave_url': None, 'builderName': 'builder-01', 'builder_tags': ['tag1', 'tag2'], 'build_tags': [ {'description': 'buildtag1', 'title': 'buildtag1'}, {'description': 'buildtag2desc', 'title': 'buildtag2'}, ], 'url': {'path': 'http://*****:*****@localhost', 'eta': None, 'builderFriendlyName': 'builder-01', 'failure_url': None, 'slave_friendly_name': 'build-slave-01', 'times': (1422441500, 1422441501.21)}, 'name': 'builder-01', 'tags': ['tag1', 'tag2'], 'url': 'http://localhost:8080/projects/Katana/builders/builder-01?katana-buildbot_branch=katana', 'description': 'Describing my builder', 'friendly_name': 'builder-01', 'startSlavenames ': [], 'project': 'Katana', 'state': 'offline', 'slaves': ['build-slave-01'], 'currentBuilds': [], 'pendingBuilds': 0}], 'latestRevisions': {}, 'regex_branches': ['^(trunk)', '^(20[0-9][0-9].[0-9])\\/', '^([0-9].[0-9])\\/', '^release\\/([0-9].[0-9])/'], 'tag_as_branch_regex': '^(20[0-9][0-9].[0-9]|[0-9].[0-9]|trunk)$', } self.assertEqual(project_dict, expected_project_dict)