def _GetOrCreateFlakeIssue(bug_id): monorail_project = 'chromium' issue = FlakeIssue.Get(monorail_project, bug_id) if issue: return issue issue = FlakeIssue.Create(monorail_project, bug_id) if bug_id >= 123458: issue.create_time_in_monorail = datetime(2018, 9, 1) issue.put() return issue
def testCreate(self): monorail_project = 'chromium' issue_id = 123 FlakeIssue.Create(monorail_project=monorail_project, issue_id=issue_id).put() flake_issue = FlakeIssue.Get(monorail_project, issue_id) fetched_flake_issues = FlakeIssue.query().fetch() self.assertEqual(1, len(fetched_flake_issues)) self.assertEqual(flake_issue, fetched_flake_issues[0]) self.assertIsNone( fetched_flake_issues[0].last_updated_time_by_flake_detection) self.assertEqual(monorail_project, flake_issue.monorail_project) self.assertEqual(issue_id, flake_issue.issue_id) self.assertIsNone(flake_issue.merge_destination_key)
def _GetOrCreateFlakeIssue(issue_id, monorail_project): """Gets or creates a FlakeIssue entity for the monorail issue. Args: issue_id (int): Id of the issue. monorail_project (str): Monorail project of the issue. Returns: (FlakeIssue): a FlakeIssue entity of the issue. """ flake_issue = FlakeIssue.Get(monorail_project, issue_id) if flake_issue: return flake_issue flake_issue = FlakeIssue.Create(monorail_project, issue_id) flake_issue.put() monorail_issue = monorail_util.GetMonorailIssueForIssueId( issue_id, monorail_project) _UpdateFlakeIssueWithMonorailIssue(flake_issue, monorail_issue) return flake_issue
def _GetFlakesByBug(monorail_project, bug_id): """Gets flakes link to the same bug. Gets flakes directly link to the bug and also flakes link to bugs that are merged into this bug. """ flake_issue = FlakeIssue.Get(monorail_project, bug_id) assert flake_issue, 'Requested FlakeIssue {} not found.'.format(bug_id) all_issue_keys = [flake_issue.key] issue_leaves = FlakeIssue.query( FlakeIssue.merge_destination_key == flake_issue.key).fetch( keys_only=True) all_issue_keys.extend(issue_leaves) flakes = [] for issue_key in all_issue_keys: flakes_to_issue = Flake.query( Flake.flake_issue_key == issue_key).fetch() flakes.extend(flakes_to_issue) flakes.sort(key=lambda flake: flake.flake_score_last_week, reverse=True) return flakes