def setUp(self):
        helpers.patch(self, [
            'base.utils.is_chromium',
            'bot.tasks.impact_task.get_impacts_from_url',
            'bot.tasks.impact_task.get_impacts_on_prod_builds',
            'bot.tasks.setup.setup_testcase',
            'build_management.build_manager.is_custom_binary',
            'build_management.build_manager.has_production_builds',
            'bot.testcase_manager.get_command_line_for_application',
            'base.tasks.add_task',
        ])
        impacts = impact_task.Impacts(
            stable=impact_task.Impact('stable', False, 'trace-stable'),
            beta=impact_task.Impact('beta', True, 'trace-beta'),
            extended_stable=impact_task.Impact('extended stable', False,
                                               'trace-extended-stable'))
        self.mock.is_chromium.return_value = True
        self.mock.is_custom_binary.return_value = False
        self.mock.has_production_builds.return_value = True
        self.mock.get_impacts_from_url.return_value = impacts
        self.mock.setup_testcase.return_value = (['a'], None, 'path')
        self.mock.get_impacts_on_prod_builds.return_value = impacts

        self.testcase = data_types.Testcase()
        self.testcase.is_impact_set_flag = False
        self.testcase.status = 'Processed'
        self.testcase.crash_stacktrace = 'trace'
        self.testcase.regression = '123:456'
        self.testcase.job_type = 'job2'
        self.testcase.project_name = 'chromium'
        self.testcase.put()
    def test_get_impacts_known_component_es_not_exists(self):
        """Test getting impacts for a known component
    when extended stable doesn't exists."""
        self.mock.get_component_name.return_value = 'v8'
        self.mock.get_impact.side_effect = [
            impact_task.Impact('s', False),
            impact_task.Impact('b', True)
        ]
        impacts = impact_task.get_impacts_from_url('123:456', 'job', 'windows')

        self.assertEqual('', impacts.extended_stable.version)
        self.assertFalse(impacts.extended_stable.likely)
        self.assertEqual('s', impacts.stable.version)
        self.assertFalse(impacts.stable.likely)
        self.assertEqual('b', impacts.beta.version)
        self.assertTrue(impacts.beta.likely)

        self.mock.get_start_and_end_revision.assert_has_calls(
            [mock.call('123:456', 'job')])
        self.mock.get_build_to_revision_mappings.assert_has_calls(
            [mock.call('windows')])
        self.mock.get_impact.assert_has_calls([
            mock.call({
                'version': '74.0.1345.34',
                'revision': '666666'
            }, 1, 100),
            mock.call({
                'version': '75.0.1353.43',
                'revision': '777777'
            }, 1, 100)
        ])
 def setUp(self):
     """Setup for get impacts from url test."""
     super().setUp()
     helpers.patch(self, [
         'bot.tasks.impact_task.get_start_and_end_revision',
         'bot.tasks.impact_task.get_impact',
         'build_management.revisions.get_build_to_revision_mappings',
         'build_management.revisions.revision_to_branched_from',
         'datastore.data_handler.get_component_name',
     ])
     self.mock.get_component_name.return_value = None
     self.mock.revision_to_branched_from.side_effect = (
         self.mock_revision_to_branched_from)
     self.mock.get_start_and_end_revision.return_value = (1, 100)
     self.mock.get_build_to_revision_mappings.return_value = {
         'stable': {
             'revision': '398287',
             'version': '74.0.1345.34'
         },
         'beta': {
             'revision': '399171',
             'version': '75.0.1353.43'
         }
     }
     self.mock.get_impact.side_effect = [
         impact_task.Impact(),
         impact_task.Impact('s', False),
         impact_task.Impact('b', True)
     ]
    def setUp(self):
        helpers.patch(self, [
            'bot.tasks.impact_task.get_impact_on_build',
            'bot.tasks.impact_task.get_impacts_from_url',
            'bot.testcase_manager.get_command_line_for_application',
            'chrome.build_info.get_build_to_revision_mappings',
        ])
        self.mock.get_build_to_revision_mappings.return_value = {
            'stable': {
                'revision': '398287',
                'version': '74.0.1345.34'
            },
            'beta': {
                'revision': '399171',
                'version': '75.0.1353.43'
            },
            'canary': {
                'revision': '400000',
                'version': '76.0.1234.43'
            }
        }
        self.impacts = impact_task.Impacts(
            stable=impact_task.Impact('s', False),
            beta=impact_task.Impact('b', True),
            extended_stable=impact_task.Impact('es', False),
            head=impact_task.Impact('76.0.1234.43', False))

        self.testcase = data_types.Testcase()
        self.testcase.job_type = 'job'
        self.testcase.impact_extended_stable_version = 'es-ver'
        self.testcase.impact_stable_version = 's-ver'
        self.testcase.impact_beta_version = 'b-ver'
        self.testcase.regression = '123:456'
    def test_get_impacts_canary_not_exists(self):
        """Test getting impacts when extended stable exists."""
        self.mock.get_build_to_revision_mappings.return_value = {
            'extended_stable': {
                'revision': '398287',
                'version': '74.0.1345.34'
            },
            'stable': {
                'revision': '398287',
                'version': '74.0.1345.34'
            },
            'beta': {
                'revision': '399171',
                'version': '75.0.1353.43'
            },
            'dev': {
                'revision': '400000',
                'version': '76.0.1234.43'
            }
        }
        self.mock.get_impact.side_effect = [
            impact_task.Impact('es', False),
            impact_task.Impact('s', False),
            impact_task.Impact('b', True),
            impact_task.Impact('d', False)
        ]

        impacts = impact_task.get_impacts_from_url('123:456', 'job', 'windows')

        self.assertEqual('es', impacts.extended_stable.version)
        self.assertFalse(impacts.extended_stable.likely)
        self.assertEqual('s', impacts.stable.version)
        self.assertFalse(impacts.stable.likely)
        self.assertEqual('b', impacts.beta.version)
        self.assertTrue(impacts.beta.likely)
        self.assertEqual('d', impacts.head.version)
        self.assertFalse(impacts.head.likely)

        self.mock.get_start_and_end_revision.assert_has_calls(
            [mock.call('123:456', 'job')])
        self.mock.get_build_to_revision_mappings.assert_has_calls(
            [mock.call('windows')])
        self.mock.get_impact.assert_has_calls([
            mock.call({
                'version': '74.0.1345.34',
                'revision': '398287'
            }, 1, 100),
            mock.call({
                'version': '74.0.1345.34',
                'revision': '398287'
            }, 1, 100),
            mock.call({
                'version': '75.0.1353.43',
                'revision': '399171'
            }, 1, 100),
            mock.call({
                'version': '76.0.1234.43',
                'revision': '400000'
            }, 1, 100)
        ])
Exemple #6
0
    def setUp(self):
        helpers.patch(self, [
            'bot.tasks.impact_task.get_impact_on_build',
            'bot.tasks.impact_task.get_impacts_from_url',
            'bot.testcase_manager.get_command_line_for_application',
        ])
        self.impacts = impact_task.Impacts(stable=impact_task.Impact(
            's', False),
                                           beta=impact_task.Impact('b', True))

        self.testcase = data_types.Testcase()
        self.testcase.job_type = 'job'
        self.testcase.impact_stable_version = 's-ver'
        self.testcase.impact_beta_version = 'b-ver'
        self.testcase.regression = '123:456'
 def test_not_crash(self):
     """Test not crashing and returning empty impact."""
     self.result.is_crash.return_value = False
     self.assertEqual(
         impact_task.Impact(),
         impact_task.get_impact_on_build('stable', '53', self.testcase,
                                         'path'))
 def setUp(self):
   helpers.patch(self, [
       'bot.tasks.impact_task.get_start_and_end_revision',
       'bot.tasks.impact_task.get_impact',
       'build_management.revisions.get_build_to_revision_mappings',
       'datastore.data_handler.get_component_name',
   ])
   self.mock.get_component_name.return_value = None
   self.mock.get_start_and_end_revision.return_value = (1, 100)
   self.mock.get_build_to_revision_mappings.return_value = {
       'stable': 'stable-version',
       'beta': 'beta-version'
   }
   self.mock.get_impact.side_effect = [
       impact_task.Impact('s', False),
       impact_task.Impact('b', True)
   ]
    def test_app_failed_on_beta(self):
        """Test app fail on beta."""
        self.mock.get_impact_on_build.side_effect = [
            self.impacts.stable,
            impact_task.AppFailedException()
        ]

        self.assertEqual(
            impact_task.Impacts(self.impacts.stable, impact_task.Impact()),
            impact_task.get_impacts_on_prod_builds(self.testcase, 'path'))
        self.mock.get_impact_on_build.assert_has_calls([
            mock.call('stable', self.testcase.impact_stable_version,
                      self.testcase, 'path'),
            mock.call('beta', self.testcase.impact_beta_version, self.testcase,
                      'path'),
        ])
        self.mock.get_impacts_from_url.assert_has_calls([])