Beispiel #1
0
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
Beispiel #2
0
    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
Beispiel #4
0
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