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')
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)
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'))
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)