コード例 #1
0
    def test_find_issues(self):
        """Test find_issues."""
        issue0 = MonorailIssue()
        issue0.id = 1

        issue1 = MonorailIssue()
        issue1.id = 2
        self.mock.get_issues.return_value = [
            issue0,
            issue1,
        ]
        issues = self.issue_tracker.find_issues(keywords=['one', 'two'],
                                                only_open=True)
        six.assertCountEqual(self, [1, 2], [issue.id for issue in issues])

        self.mock.get_issues.assert_has_calls([
            mock.call(mock.ANY, '"one" "two"', can='open'),
        ])

        issues = self.issue_tracker.find_issues(keywords=['one', 'two'],
                                                only_open=False)
        six.assertCountEqual(self, [1, 2], [issue.id for issue in issues])

        self.mock.get_issues.assert_has_calls([
            mock.call(mock.ANY, '"one" "two"', can='all'),
        ])
コード例 #2
0
    def test_reminder(self):
        """Test reminders."""
        # Return the same status for all build types.
        self.mock.get.return_value = MockResponse(
            json.dumps({
                'projects': [
                    {
                        'history': [{
                            'finish_time': '2018-02-01T00:00:00.000000Z',
                            'build_id': 'proj0-id',
                            'success': False
                        }],
                        'name':
                        'proj0',
                    },
                    {
                        'history': [{
                            'finish_time': '2018-02-01T00:00:00.000000Z',
                            'build_id': 'proj0-id',
                            'success': False
                        }],
                        'name':
                        'proj1',
                    },
                ]
            }))

        data_types.OssFuzzProject(id='proj0', name='proj0',
                                  ccs=['*****@*****.**']).put()
        data_types.OssFuzzBuildFailure(
            id='proj0',
            project_name='proj0',
            last_checked_timestamp=datetime.datetime(2018, 1, 31),
            issue_id='1',
            consecutive_failures=7,
            build_type='fuzzing').put()
        data_types.OssFuzzProject(id='proj1', name='proj1',
                                  ccs=['*****@*****.**']).put()
        data_types.OssFuzzBuildFailure(
            id='proj1',
            project_name='proj1',
            last_checked_timestamp=datetime.datetime(2018, 1, 31),
            issue_id='2',
            consecutive_failures=3,
            build_type='fuzzing').put()

        self.itm.issues[1] = Issue()
        self.itm.issues[2] = Issue()

        self.app.get('/build-status')
        self.assertEqual(
            'Friendly reminder that the the build is still failing.\n'
            'Please try to fix this failure to ensure that fuzzing remains '
            'productive.\n'
            'Latest build log: https://oss-fuzz-build-logs.storage.googleapis.com/'
            'log-proj0-id.txt\n', self.itm.issues[1].comment)
        self.assertEqual('', self.itm.issues[2].comment)
コード例 #3
0
    def test_recovered_build_failure(self):
        """Test fixed build failures."""
        # Use the same status for all build types.
        self.mock.get.return_value = MockResponse(
            json.dumps({
                'projects': [{
                    'history': [{
                        'finish_time': '2018-02-01T00:00:00.000000Z',
                        'build_id': 'proj0-id',
                        'success': True
                    }],
                    'name':
                    'proj0',
                }]
            }))

        data_types.OssFuzzBuildFailure(
            id='proj0',
            project_name='proj0',
            last_checked_timestamp=datetime.datetime(2018, 1, 31),
            issue_id='1',
            consecutive_failures=2,
            build_type='fuzzing').put()

        issue = Issue()
        issue.open = True
        issue.add_label('Type-Build-Failure')
        issue.add_label('Proj-proj2')
        issue.summary = 'Build failure in proj2'
        issue.body = 'Build failure'

        self.itm.issues[1] = issue

        self.app.get('/build-status')
        self.assertEqual(0, data_types.OssFuzzBuildFailure.query().count())

        issue = self.itm.issues[1]
        self.assertEqual('Verified', issue.status)
        self.assertEqual('The latest build has succeeded, closing this issue.',
                         issue.comment)
コード例 #4
0
 def new_issue(self):
   monorail_issue = MonorailIssue()
   monorail_issue.itm = self._itm
   return Issue(monorail_issue)
コード例 #5
0
    def get_original_issue(self, issue_id):
        """Get original issue."""
        issue = Issue()
        issue.open = True
        issue.itm = self
        issue.id = issue_id

        if issue_id == 1337:
            issue.add_cc('*****@*****.**')
            issue.add_label('Restrict-View-Commit')
        elif issue_id == 1338:
            issue.add_cc('*****@*****.**')
            issue.add_cc('*****@*****.**')
        elif issue_id == 1340:
            issue.add_label('reported-2015-01-01')

        return issue
コード例 #6
0
def get_original_issue(self, issue_id):
  """Get original issue."""
  issue_id = int(issue_id)

  issue = Issue()
  issue.open = True
  issue.itm = self._itm  # pylint: disable=protected-access
  issue.id = issue_id

  if issue_id == 1337:
    issue.add_cc('*****@*****.**')
    issue.add_label('Restrict-View-Commit')
  elif issue_id == 1338:
    issue.add_cc('*****@*****.**')
    issue.add_cc('*****@*****.**')
  elif issue_id == 1340:
    issue.add_label('reported-2015-01-01')

  return monorail.Issue(issue)
コード例 #7
0
    def setUp(self):
        helpers.patch(self, [
            'libs.issue_management.monorail.issue_tracker_manager.'
            'IssueTrackerManager.get_issues',
        ])

        mock_issue = MonorailIssue()
        mock_issue.id = 1337
        mock_issue.summary = 'summary'
        mock_issue.body = 'body'
        mock_issue.owner = 'owner'
        mock_issue.reporter = 'reporter'
        mock_issue.status = 'New'
        mock_issue.add_label('label1')
        mock_issue.add_label('label2')
        mock_issue.add_component('A>B')
        mock_issue.add_component('C>D')
        mock_issue.add_cc('*****@*****.**')

        mock_comment0 = MonorailComment()
        mock_comment0.author = 'author'
        mock_comment0.cc = ['*****@*****.**', '*****@*****.**']
        mock_comment0.labels = ['-label0', 'label1']
        mock_comment0.components = ['-E>F', 'A>B']
        mock_comment0.comment = 'comment'
        mock_comment0.summary = 'summary'
        mock_comment0.status = 'status'
        mock_comment0.owner = 'owner'

        mock_comment1 = MonorailComment()
        mock_comment1.author = 'author'
        mock_comment1.comment = 'comment'

        mock_issue.comments = [
            mock_comment0,
            mock_comment1,
        ]

        mock_issue_merged = MonorailIssue()
        mock_issue_merged.id = 1338
        mock_issue_merged.merged_into = 1337
        mock_issue_merged.merged_into_project = 'project'
        mock_issue_merged.closed = datetime.datetime(2019, 1, 1)

        mock_issue_merged_another_project = MonorailIssue()
        mock_issue_merged_another_project.id = 1339
        mock_issue_merged_another_project.merged_into = 1
        mock_issue_merged_another_project.merged_into_project = 'different-project'

        mock_issues = {
            1337: mock_issue,
            1338: mock_issue_merged,
            1339: mock_issue_merged_another_project,
        }

        self.itm = IssueTrackerManager('project', mock_issues)
        self.issue_tracker = monorail.IssueTracker(self.itm)
コード例 #8
0
def create_generic_issue(created_days_ago=28):
  """Returns a simple issue object for use in tests."""
  issue = Issue()
  issue.cc = []
  issue.comment = ''
  issue.comments = []
  issue.components = []
  issue.labels = []
  issue.open = True
  issue.owner = '*****@*****.**'
  issue.status = 'Assigned'
  issue.id = 1
  issue.itm = create_issue_tracker_manager()

  # Test issue was created 1 week before the current (mocked) time.
  issue.created = (
      test_utils.CURRENT_TIME - datetime.timedelta(days=created_days_ago))

  return monorail.Issue(issue)