Exemplo n.º 1
0
    def testHwTestOverrideEnabled(self):
        """Verify that hw_tests_override is not used without --hwtest."""
        mock_options = self._createMockOptions(hwtest=True,
                                               remote_trybot=False)

        result = config_lib.OverrideConfigForTrybot(
            self.all_configs['no_tests_without_override'], mock_options)
        self.assertEqual(result.hw_tests, [])

        result = config_lib.OverrideConfigForTrybot(
            self.all_configs['no_tests_with_override'], mock_options)
        self.assertEqual(result.hw_tests, self.override_hwtests)

        result = config_lib.OverrideConfigForTrybot(
            self.all_configs['tests_without_override'], mock_options)
        self.assertEqual(result.hw_tests, self.base_hwtests)

        result = config_lib.OverrideConfigForTrybot(
            self.all_configs['tests_with_override'], mock_options)
        self.assertEqual(result.hw_tests, self.override_hwtests)
Exemplo n.º 2
0
    def testVmTestOverride(self):
        """Verify that vm_tests override for trybots pay heed to original config."""
        mock_options = mock.Mock()
        old = self.site_config['x86-mario-paladin']
        new = config_lib.OverrideConfigForTrybot(old, mock_options)
        self.assertEquals(new['vm_tests'], [
            config_lib.VMTestConfig(constants.SMOKE_SUITE_TEST_TYPE),
            config_lib.VMTestConfig(constants.SIMPLE_AU_TEST_TYPE),
            config_lib.VMTestConfig(constants.CROS_VM_TEST_TYPE)
        ])

        # Don't override vm tests for arm boards.
        old = self.site_config['daisy-paladin']
        new = config_lib.OverrideConfigForTrybot(old, mock_options)
        self.assertEquals(new['vm_tests'], old['vm_tests'])

        # Don't override vm tests for brillo boards.
        old = self.site_config['storm-paladin']
        new = config_lib.OverrideConfigForTrybot(old, mock_options)
        self.assertEquals(new['vm_tests'], old['vm_tests'])
Exemplo n.º 3
0
    def testVmTestOverride(self):
        """Verify that vm_tests override for trybots pay heed to original config."""
        mock_options = self._createMockOptions(hwtest=False,
                                               remote_trybot=False)

        result = config_lib.OverrideConfigForTrybot(
            self.all_configs['no_tests_without_override'], mock_options)
        self.assertEqual(result.vm_tests, [])

        result = config_lib.OverrideConfigForTrybot(
            self.all_configs['no_tests_with_override'], mock_options)
        self.assertEqual(result.vm_tests, self.override_vmtests)

        result = config_lib.OverrideConfigForTrybot(
            self.all_configs['tests_without_override'], mock_options)
        self.assertEqual(result.vm_tests, self.base_vmtests)

        result = config_lib.OverrideConfigForTrybot(
            self.all_configs['tests_with_override'], mock_options)
        self.assertEqual(result.vm_tests, self.override_vmtests)
    def _Prepare(self,
                 bot_id=None,
                 extra_config=None,
                 cmd_args=None,
                 extra_cmd_args=None,
                 build_id=DEFAULT_BUILD_ID,
                 waterfall=constants.WATERFALL_INTERNAL,
                 waterfall_url=constants.BUILD_INT_DASHBOARD,
                 master_build_id=None,
                 site_config=None):
        """Prepare a BuilderRun at self._run for this test.

    This method must allow being called more than once.  Subclasses can
    override this method, but those subclass methods should also call this one.

    The idea is that all test preparation that falls out from the choice of
    build config and cbuildbot options should go in _Prepare.

    This will populate the following attributes on self:
      run: A BuilderRun object.
      bot_id: The bot id (name) that was used from the site_config.
      self._boards: Same as self._run.config.boards.  TODO(mtennant): remove.
      self._current_board: First board in list, if there is one.

    Args:
      bot_id: Name of build config to use, defaults to self.BOT_ID.
      extra_config: Dict used to add to the build config for the given
        bot_id.  Example: {'push_image': True}.
      cmd_args: List to override the default cbuildbot command args.
      extra_cmd_args: List to add to default cbuildbot command args.  This
        is a good way to adjust an options value for your test.
        Example: ['branch-name', 'some-branch-name'] will effectively cause
        self._run.options.branch_name to be set to 'some-branch-name'.
      build_id: mock build id
      waterfall: Name of the current waterfall.
                 Possibly from constants.CIDB_KNOWN_WATERFALLS.
      waterfall_url: Url for the current waterfall.
      master_build_id: mock build id of master build.
      site_config: SiteConfig to use (or MockSiteConfig)
    """
        # Use cbuildbot parser to create options object and populate default values.
        parser = cbuildbot._CreateParser()
        if not cmd_args:
            # Fill in default command args.
            cmd_args = [
                '-r',
                self.build_root,
                '--buildbot',
                '--noprebuilts',
                '--buildnumber',
                str(DEFAULT_BUILD_NUMBER),
                '--branch',
                self.TARGET_MANIFEST_BRANCH,
            ]
        if extra_cmd_args:
            cmd_args += extra_cmd_args
        (options, args) = parser.parse_args(cmd_args)

        # The bot_id can either be specified as arg to _Prepare method or in the
        # cmd_args (as cbuildbot normally accepts it from command line).
        if args:
            self._bot_id = args[0]
            if bot_id:
                # This means bot_id was specified as _Prepare arg and in cmd_args.
                # Make sure they are the same.
                self.assertEquals(self._bot_id, bot_id)
        else:
            self._bot_id = bot_id or self.BOT_ID
            args = [self._bot_id]
        cbuildbot._FinishParsing(options, args)

        if site_config is None:
            site_config = chromeos_config.GetConfig()

        # Populate build_config corresponding to self._bot_id.
        build_config = copy.deepcopy(site_config[self._bot_id])
        build_config['manifest_repo_url'] = 'fake_url'
        if extra_config:
            build_config.update(extra_config)
        if options.remote_trybot:
            build_config = config_lib.OverrideConfigForTrybot(
                build_config, options)
        options.managed_chrome = build_config['sync_chrome']

        self._boards = build_config['boards']
        self._current_board = self._boards[0] if self._boards else None

        # Some preliminary sanity checks.
        self.assertEquals(options.buildroot, self.build_root)

        # Construct a real BuilderRun using options and build_config.
        self._run = cbuildbot_run.BuilderRun(options, site_config,
                                             build_config, self._manager)

        if build_id is not None:
            self._run.attrs.metadata.UpdateWithDict({'build_id': build_id})

        if master_build_id is not None:
            self._run.options.master_build_id = master_build_id

        self._run.attrs.metadata.UpdateWithDict(
            {'buildbot-master-name': waterfall})
        self._run.attrs.metadata.UpdateWithDict(
            {'buildbot-url': waterfall_url})

        if self.RELEASE_TAG is not None:
            self._run.attrs.release_tag = self.RELEASE_TAG

        portage_util._OVERLAY_LIST_CMD = '/bin/true'