Esempio n. 1
0
 def testCompletedMergeIntoExisting(
     self, differences, result_values, commit_as_dict):
   c = change.Change((change.Commit('chromium', 'git_hash'),))
   differences.return_value = [(None, c)]
   result_values.side_effect = [0], [1.23456]
   commit_as_dict.return_value = {
       'repository': 'chromium',
       'git_hash': 'git_hash',
       'author': '*****@*****.**',
       'subject': 'Subject.',
       'url': 'https://example.com/repository/+/git_hash',
       'message': 'Subject.\n\nCommit message.',
   }
   self.get_issue.return_value = {
       'status': 'Untriaged',
       'id': '111222',
       'projectId': 'chromium'
   }
   layered_cache.SetExternal('commit_hash_git_hash', 'chromium:111222')
   j = job.Job.New((), (), bug_id=123456, comparison_mode='performance')
   j.Run()
   self.ExecuteDeferredTasks('default')
   self.assertFalse(j.failed)
   self.add_bug_comment.assert_called_once_with(
       123456,
       _COMMENT_COMPLETED_WITH_COMMIT,
       status='Assigned',
       owner='*****@*****.**',
       cc_list=[],
       labels=['Pinpoint-Culprit-Found'],
       merge_issue='111222',
       project='chromium')
Esempio n. 2
0
  def testCompletedSkipsMergeWhenDuplicate(
      self, differences, result_values, commit_as_dict):
    c = change.Change((change.Commit('chromium', 'git_hash'),))
    differences.return_value = [(None, c)]
    result_values.side_effect = [0], [1.23456]
    commit_as_dict.return_value = {
        'repository': 'chromium',
        'git_hash': 'git_hash',
        'author': '*****@*****.**',
        'subject': 'Subject.',
        'url': 'https://example.com/repository/+/git_hash',
        'message': 'Subject.\n\nCommit message.',
    }

    def _GetIssue(bug_id):
      if bug_id == 111222:
        return {'status': 'Duplicate', 'id': '111222'}
      else:
        return {'status': 'Untriaged'}

    self.get_issue.side_effect = _GetIssue

    layered_cache.SetExternal('commit_hash_git_hash', 111222)

    j = job.Job.New((), (), bug_id=123456, comparison_mode='performance')
    j.Run()

    self.ExecuteDeferredTasks('default')

    self.add_bug_comment.assert_called_once_with(
        123456, _COMMENT_COMPLETED_WITH_COMMIT,
        status='Assigned', owner='*****@*****.**',
        cc_list=['*****@*****.**'], merge_issue=None)
def _UpdateCacheKeyForIssue(merge_issue_id, commit_cache_key, bug_id):
    # Cache the commit info and bug ID to datastore when there is no duplicate
    # issue that this issue is getting merged into. This has to be done only
    # after the issue is updated successfully with bisect information.
    if commit_cache_key and not merge_issue_id:
        layered_cache.SetExternal(commit_cache_key,
                                  str(bug_id),
                                  days_to_keep=30)
        logging.info('Cached bug id %s and commit info %s in the datastore.',
                     bug_id, commit_cache_key)
Esempio n. 4
0
 def testGetAndSet_External(self):
   layered_cache.SetExternal('str', 'Hello, World!')
   layered_cache.SetExternal('dict', {'hello': [1, 2, 3]})
   self.assertEqual(
       'Hello, World!',
       cPickle.loads(
           ndb.Key('CachedPickledString',
                   'externally_visible__str').get().value))
   self.assertEqual(None,
                    ndb.Key('CachedPickledString', 'internal_only__str').get())
   self.assertEqual('Hello, World!', layered_cache.GetExternal('str'))
   self.assertEqual({'hello': [1, 2, 3]},
                    cPickle.loads(
                        ndb.Key('CachedPickledString',
                                'externally_visible__dict').get().value))
   self.assertEqual(
       None,
       ndb.Key('CachedPickledString', 'internal_only__dict').get())
   self.assertEqual({'hello': [1, 2, 3]}, layered_cache.GetExternal('dict'))
Esempio n. 5
0
    def testCompletedSkipsMergeWhenDuplicate(self, differences, result_values,
                                             commit_as_dict):
        c = change.Change((change.Commit('chromium', 'git_hash'), ))
        differences.return_value = [(None, c)]
        result_values.side_effect = [0], [1.23456]
        commit_as_dict.return_value = {
            'repository': 'chromium',
            'git_hash': 'git_hash',
            'author': '*****@*****.**',
            'subject': 'Subject.',
            'url': 'https://example.com/repository/+/git_hash',
            'message': 'Subject.\n\nCommit message.',
        }

        def _GetIssue(bug_id, project='chromium'):
            if bug_id == '111222':
                return {
                    'status': 'Duplicate',
                    'projectId': project,
                    'id': '111222'
                }
            else:
                return {
                    'status': 'Untriaged',
                    'projectId': project,
                    'id': str(bug_id)
                }

        self.get_issue.side_effect = _GetIssue
        layered_cache.SetExternal('commit_hash_git_hash', 'chromium:111222')
        j = job.Job.New((), (),
                        bug_id=123456,
                        comparison_mode='performance',
                        project='chromium')
        j.Run()
        self.ExecuteDeferredTasks('default')
        self.assertFalse(j.failed)
        self.add_bug_comment.assert_called_once_with(
            123456,
            mock.ANY,
            status='Assigned',
            owner='*****@*****.**',
            labels=mock.ANY,
            cc_list=['*****@*****.**'],
            merge_issue=None,
            project='chromium')
        message = self.add_bug_comment.call_args[0][1]
        self.assertIn('Found a significant difference at 1 commit.', message)
        self.assertIn('https://example.com/repository/+/git_hash', message)
        labels = self.add_bug_comment.call_args[1]['labels']
        self.assertIn('Pinpoint-Job-Completed', labels)
        self.assertNotIn('-Pinpoint-Job-Completed', labels)
        self.assertIn('Pinpoint-Culprit-Found', labels)
        self.assertNotIn('-Pinpoint-Culprit-Found', labels)