Ejemplo n.º 1
0
 def testCompletedDoesNotReopen(self, differences, result_values,
                                patch_as_dict):
     commits = (change.Commit('chromium', 'git_hash'), )
     patch = change.GerritPatch('https://codereview.com', 672011, '2f0d5c7')
     c = change.Change(commits, patch)
     differences.return_value = [(None, c)]
     result_values.side_effect = [40], [20]
     patch_as_dict.return_value = {
         'url': 'https://codereview.com/c/672011/2f0d5c7',
         'author': '*****@*****.**',
         'subject': 'Subject.',
         'message': 'Subject.\n\nCommit message.',
     }
     self.get_issue.return_value = {'status': 'Fixed'}
     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,
         mock.ANY,
         owner=None,
         status=None,
         cc_list=['*****@*****.**'],
         labels=mock.ANY,
         merge_issue=None,
         project='chromium')
     message = self.add_bug_comment.call_args[0][1]
     self.assertIn('10 revisions compared', 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)
Ejemplo n.º 2
0
    def testCompletedDoesNotReassign(self, differences, result_values,
                                     patch_as_dict):
        commits = (change.Commit('chromium', 'git_hash'), )
        patch = change.GerritPatch('https://codereview.com', 672011, '2f0d5c7')
        c = change.Change(commits, patch)
        c = change.Change(commits, patch)
        differences.return_value = [(None, c)]
        result_values.side_effect = [0], [1.23456]
        patch_as_dict.return_value = {
            'author': '*****@*****.**',
            'subject': 'Subject.',
            'url': 'https://codereview.com/c/672011/2f0d5c7',
            'git_hash': 'abc123'
        }

        self.get_issue.return_value = {'status': 'Assigned'}

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

        self.add_bug_comment.assert_called_once_with(
            123456,
            _COMMENT_COMPLETED_WITH_PATCH,
            cc_list=['*****@*****.**'],
            merge_issue=None)
Ejemplo n.º 3
0
 def testCompletedDoesNotReassign(
     self, differences, result_values, patch_as_dict):
   commits = (change.Commit('chromium', 'git_hash'),)
   patch = change.GerritPatch('https://codereview.com', 672011, '2f0d5c7')
   c = change.Change(commits, patch)
   c = change.Change(commits, patch)
   differences.return_value = [(None, c)]
   result_values.side_effect = [40], [20]
   patch_as_dict.return_value = {
       'url': 'https://codereview.com/c/672011/2f0d5c7',
       'author': '*****@*****.**',
       'subject': 'Subject.',
       'message': 'Subject.\n\nCommit message.',
   }
   self.get_issue.return_value = {'status': 'Assigned'}
   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_PATCH,
       owner=None,
       status=None,
       cc_list=['*****@*****.**'],
       labels=['Pinpoint-Culprit-Found'],
       merge_issue=None,
       project='chromium')
Ejemplo n.º 4
0
    def testWithPatch(self, mock_patch):
        mock_patch.return_value = change_module.GerritPatch(
            'https://lalala', '123', None)
        request = dict(_BASE_REQUEST)
        request['patch'] = 'https://lalala/c/foo/bar/+/123'

        response = self.Post('/api/new', request, status=200)
        result = json.loads(response.body)
        self.assertIn('jobId', result)
        self.assertEqual(
            result['jobUrl'],
            'https://testbed.example.com/job/%s' % result['jobId'])
        mock_patch.assert_called_with(request['patch'])
        job = job_module.JobFromId(result['jobId'])
        self.assertEqual('123', job.gerrit_change_id)
        self.assertEqual('https://lalala', job.gerrit_server)
Ejemplo n.º 5
0
    def testBuildLifecycle(self, build_parameters, put, get_job_status):
        change = change_module.Change(
            (change_module.Commit('src', 'base git hash'),
             change_module.Commit('v8', 'dep git hash')),
            patch=change_module.GerritPatch('https://example.org', 672011,
                                            '2f0d'))
        quest = find_isolate.FindIsolate('Mac Builder', 'telemetry_perf_tests')
        execution = quest.Start(change)

        # Request a build.
        build_parameters.return_value = {'patch_storage': 'gerrit'}
        put.return_value = {'build': {'id': 'build_id'}}
        execution.Poll()

        self.assertFalse(execution.completed)
        put.assert_called_once_with(
            find_isolate.BUCKET, {
                'builder_name': 'Mac Builder',
                'properties': {
                    'clobber': True,
                    'parent_got_revision': 'base git hash',
                    'deps_revision_overrides': {
                        'https://chromium.googlesource.com/v8/v8':
                        'dep git hash',
                    },
                    'patch_storage': 'gerrit',
                }
            })

        # Check build status.
        get_job_status.return_value = {'build': {'status': 'STARTED'}}
        execution.Poll()

        self.assertFalse(execution.completed)
        get_job_status.assert_called_once_with('build_id')

        # Look up isolate hash.
        isolate.Put('https://isolate.server',
                    (('Mac Builder', change, 'telemetry_perf_tests',
                      'isolate git hash'), ))
        execution.Poll()

        self.assertExecutionSuccess(execution)
Ejemplo n.º 6
0
  def testCompletedWithPatch(self, differences, patch_as_dict):
    commits = (change.Commit('chromium', 'git_hash'),)
    patch = change.GerritPatch('https://codereview.com', 672011, '2f0d5c7')
    c = change.Change(commits, patch)
    differences.return_value = [(1, c)]
    patch_as_dict.return_value = {
        'author': '*****@*****.**',
        'subject': 'Subject.',
        'url': 'https://codereview.com/c/672011/2f0d5c7',
    }

    j = job.Job.New({}, [], False, bug_id=123456)
    j.put()
    j.Run()

    self.add_bug_comment.assert_called_once_with(
        123456, _COMMENT_COMPLETED_WITH_PATCH,
        status='Assigned', owner='*****@*****.**',
        cc_list=['*****@*****.**'])
Ejemplo n.º 7
0
  def testCompletedDoesNotReopen(self, differences, patch_as_dict):
    commits = (change.Commit('chromium', 'git_hash'),)
    patch = change.GerritPatch('https://codereview.com', 672011, '2f0d5c7')
    c = change.Change(commits, patch)
    differences.return_value = [(1, c)]
    patch_as_dict.return_value = {
        'author': '*****@*****.**',
        'subject': 'Subject.',
        'url': 'https://codereview.com/c/672011/2f0d5c7',
    }

    self.get_issue.return_value = {'status': 'Fixed'}

    j = job.Job.New((), (), auto_explore=True, bug_id=123456)
    j.Run()

    self.add_bug_comment.assert_called_once_with(
        123456, _COMMENT_COMPLETED_WITH_PATCH,
        cc_list=['*****@*****.**'])
Ejemplo n.º 8
0
    def testCompletedWithPatch(self, differences, patch_as_dict):
        commits = (change.Commit('chromium', 'git_hash'), )
        patch = change.GerritPatch('https://codereview.com', 672011, '2f0d5c7')
        c = change.Change(commits, patch)
        differences.return_value = [(c, [0], [1.23456])]
        patch_as_dict.return_value = {
            'author': '*****@*****.**',
            'subject': 'Subject.',
            'url': 'https://codereview.com/c/672011/2f0d5c7',
        }

        self.get_issue.return_value = {'status': 'Untriaged'}

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

        self.add_bug_comment.assert_called_once_with(
            123456,
            _COMMENT_COMPLETED_WITH_PATCH,
            status='Assigned',
            owner='*****@*****.**',
            cc_list=['*****@*****.**'])
    def testBuildLifecycle(self, build_parameters, put, get_job_status):
        change = change_module.Change(
            (change_module.Commit('chromium', 'base git hash'),
             change_module.Commit('catapult', 'dep git hash')),
            patch=change_module.GerritPatch('https://example.org', 672011,
                                            '2f0d'))
        quest = find_isolate.FindIsolate('Mac Builder', 'telemetry_perf_tests')
        execution = quest.Start(change)

        # Request a build.
        build_parameters.return_value = {'patch_storage': 'gerrit'}
        put.return_value = {'build': {'id': 'build_id'}}
        execution.Poll()

        self.assertFalse(execution.completed)
        put.assert_called_once_with(
            find_isolate.BUCKET, {
                'builder_name': 'Mac Builder',
                'properties': {
                    'clobber': True,
                    'parent_got_revision': 'base git hash',
                    'deps_revision_overrides': {
                        test.CATAPULT_URL: 'dep git hash'
                    },
                    'patch_storage': 'gerrit',
                }
            })

        # Check build status.
        get_job_status.return_value = {
            'build': {
                'status': 'STARTED',
                'url': 'build_url',
            }
        }
        execution.Poll()

        self.assertFalse(execution.completed)
        get_job_status.assert_called_once_with('build_id')

        # Look up isolate hash.
        isolate.Put('https://isolate.server',
                    (('Mac Builder', change, 'telemetry_perf_tests',
                      'isolate git hash'), ))
        execution.Poll()

        expected_result_arguments = {
            'isolate_server': 'https://isolate.server',
            'isolate_hash': 'isolate git hash',
        }
        expected_as_dict = {
            'completed':
            True,
            'exception':
            None,
            'details': [
                {
                    'key': 'builder',
                    'value': 'Mac Builder',
                },
                {
                    'key': 'build',
                    'value': 'build_id',
                    'url': 'build_url',
                },
                {
                    'key': 'isolate',
                    'value': 'isolate git hash',
                    'url':
                    'https://isolate.server/browse?digest=isolate git hash',
                },
            ],
        }
        self.assertExecutionSuccess(execution)
        self.assertEqual(execution.result_values, ())
        self.assertEqual(execution.result_arguments, expected_result_arguments)
        self.assertEqual(execution.AsDict(), expected_as_dict)