Example #1
0
    def testParallelStageCommunicationOK(self):
        """Test run attr communication betweeen parallel stages."""
        def assert_test(value):
            self.assertEqual(
                value, SetAttrStage.VALUE,
                'Expected value %r to be passed between stages, but'
                ' got %r.' % (SetAttrStage.VALUE, value))

        bs = FakeBuildStore()
        stage_objs = [
            SetAttrStage(self._run, bs),
            GetAttrStage(self._run, bs, assert_test, timeout=30),
            GetAttrStage(self._run, bs, assert_test, timeout=30),
        ]
        error = self._TestParallelStages(stage_objs)
        self.assertFalse(error)
        expectedResults = [
            ('SetAttr', results_lib.Results.SUCCESS),
            ('GetAttr', results_lib.Results.SUCCESS),
            ('GetAttr', results_lib.Results.SUCCESS),
        ]
        self._verifyRunResults(expectedResults, max_time=90.0)

        # Make sure run attribute propagated up to the top, too.
        value = self._run.attrs.GetParallel('unittest_value')
        self.assertEqual(SetAttrStage.VALUE, value)
Example #2
0
    def setUp(self):
        self._Prepare()
        self.buildstore = FakeBuildStore()

        # This method fetches a file from GS, mock it out.
        self.validateMock = self.PatchObject(paygen_build_lib,
                                             'ValidateBoardConfig')

        instanceMock = mock.MagicMock()
        self.paygenBuildMock = self.PatchObject(paygen_build_lib,
                                                'PaygenBuild',
                                                return_value=instanceMock)

        self.payload_config1 = mock.MagicMock()
        self.payload_config1.payload_type = paygen_build_lib.PAYLOAD_TYPE_FSI
        self.payload_config1.applicable_models = ['model1', 'model3']
        self.payload_config2 = mock.MagicMock()
        self.payload_config2.payload_type = paygen_build_lib.PAYLOAD_TYPE_OMAHA

        instanceMock.CreatePayloads.side_effect = iter([(
            'foo-suite-name',
            'foo-archive-board',
            'foo-archive-build',
            [self.payload_config1, self.payload_config2],
        )])
 def setUp(self):
     self._Prepare()
     self.mock_cidb = mock.MagicMock()
     self.buildstore = FakeBuildStore(self.mock_cidb)
     cidb.CIDBConnectionFactory.SetupMockCidb(self.mock_cidb)
     # Many tests modify the global results_lib.Results instance.
     results_lib.Results.Clear()
 def setUp(self):
   self.PatchObject(cros_sdk_lib, 'GetChrootVersion', return_value='12')
   self.cros_sdk = os.path.join(self.tempdir, 'buildroot',
                                constants.CHROMITE_BIN_SUBDIR, 'cros_sdk')
   self.fake_db = fake_cidb.FakeCIDBConnection()
   self.buildstore = FakeBuildStore(self.fake_db)
   cidb.CIDBConnectionFactory.SetupMockCidb(self.fake_db)
    def setUp(self):
        self.PatchObject(commands, 'CreateTestRoot', return_value=self.tempdir)
        for cmd in ('GenerateStackTraces', 'ArchiveFile', 'UploadArchivedFile',
                    'BuildAndArchiveTestResultsTarball'):
            self.PatchObject(commands, cmd, autospec=True)
        for cmd in (
                'RunTestSuite',
                'ArchiveTestResults',
                'ArchiveVMFiles',
                'RunDevModeTest',
                'RunCrosVMTest',
                'ListTests',
                'GetTestResultsDir',
        ):
            self.PatchObject(vm_test_stages, cmd, autospec=True)
        self.PatchObject(vm_test_stages.VMTestStage,
                         '_NoTestResults',
                         autospec=True,
                         return_value=False)
        self.PatchObject(osutils, 'RmDir', autospec=True)
        self.PatchObject(cgroups, 'SimpleContainChildren', autospec=True)
        self._Prepare()
        self.buildstore = FakeBuildStore()

        # Simulate breakpad symbols being ready.
        board_runattrs = self._run.GetBoardRunAttrs(self._current_board)
        board_runattrs.SetParallel('breakpad_symbols_generated', True)
        board_runattrs.SetParallel('autotest_tarball_generated', True)
  def setUp(self):
    self.PatchObject(buildbucket_lib, 'GetServiceAccount', return_value=True)
    self.PatchObject(auth.AuthorizedHttp, '__init__', return_value=None)
    self.PatchObject(
        buildbucket_lib.BuildbucketClient,
        '_GetHost',
        return_value=buildbucket_lib.BUILDBUCKET_TEST_HOST)

    self.fake_db = fake_cidb.FakeCIDBConnection()
    self.buildstore = FakeBuildStore(self.fake_db)
    cidb.CIDBConnectionFactory.SetupMockCidb(self.fake_db)

    self.fake_db.InsertBuild(
        'test_builder',
        666,
        'test_config',
        'test_hostname',
        status=constants.BUILDER_STATUS_INFLIGHT,
        timeout_seconds=23456,
        buildbucket_id='100')

    self.fake_db.InsertBuild(
        'test_builder',
        666,
        'test_config',
        'test_hostname',
        status=constants.BUILDER_STATUS_INFLIGHT,
        timeout_seconds=23456,
        buildbucket_id='200')

    self._Prepare(extra_config={'chroot_use_image': False})
  def setUp(self):
    self.uprev_mock = self.PatchObject(commands, 'UprevPackages')

    self._Prepare()
    self.fake_db = fake_cidb.FakeCIDBConnection()
    self.buildstore = FakeBuildStore(self.fake_db)
    cidb.CIDBConnectionFactory.SetupMockCidb(self.fake_db)
 def setUp(self):
     self._Prepare()
     self.rc_mock = self.StartPatcher(cros_test_lib.RunCommandMock())
     self.rc_mock.SetDefaultCmdResult()
     self.buildstore = FakeBuildStore()
     # Prepare the directories
     chroot_tmp = os.path.join(self.build_root, 'chroot', 'tmp')
     osutils.SafeMakedirs(chroot_tmp)
 def setUp(self):
   self._release_tag = None
   self._update_metadata = False
   self._mock_configurator = None
   self.PatchObject(commands, 'ExtractDependencies', return_value=dict())
   self.fake_db = fake_cidb.FakeCIDBConnection()
   self.buildstore = FakeBuildStore(self.fake_db)
   cidb.CIDBConnectionFactory.SetupMockCidb(self.fake_db)
    def setUp(self):
        self.tryjob_mock = self.PatchObject(commands,
                                            'RunLocalTryjob',
                                            autospec=True)
        self.tryjob_failure_exception = failures_lib.BuildScriptFailure(
            cros_build_lib.RunCommandError('msg'), 'cros tryjob')

        self._Prepare()
        self.buildstore = FakeBuildStore()
 def setUp(self):
     self._test_root = os.path.join(self.build_root, 'tmp/results_dir')
     self.PatchObject(commands,
                      'CreateTestRoot',
                      autospec=True,
                      return_value='/tmp/results_dir')
     self.PatchObject(path_util, 'ToChrootPath', side_effect=lambda x: x)
     self._Prepare()
     self.buildstore = FakeBuildStore()
    def setUp(self):
        # Pretend API version is always current.
        self.PatchObject(commands,
                         'GetTargetChromiteApiVersion',
                         return_value=(constants.REEXEC_API_MAJOR,
                                       constants.REEXEC_API_MINOR))

        self._Prepare()
        self.buildstore = FakeBuildStore()
 def setUp(self):
     self.CreateMockOverlay('moblab-generic-vm')
     self._temp_chroot_prefix = os.path.join(self.tempdir, 'chroot')
     osutils.SafeMakedirsNonRoot(self._temp_chroot_prefix)
     self._temp_host_prefix = os.path.join(self.tempdir, 'host')
     osutils.SafeMakedirsNonRoot(self._temp_host_prefix)
     self.PatchObject(commands, 'UploadArchivedFile', autospec=True)
     self._Prepare()
     self.buildstore = FakeBuildStore()
    def setUp(self):
        self.source_repo = 'ssh://source/repo'
        self.manifest_version_url = 'fake manifest url'
        self.branch = 'master'
        self.build_type = constants.PFQ_TYPE

        # Use our mocked out SiteConfig for all tests.
        self.test_config = self._GetTestConfig()
        self._Prepare(site_config=self.test_config)
        self.buildstore = FakeBuildStore()
Example #15
0
    def _Prepare(self, bot_id=None, **kwargs):  # pylint: disable=arguments-differ
        super(UploadDevInstallerPrebuiltsStageTest,
              self)._Prepare(bot_id, **kwargs)

        self._run.options.prebuilts = True
        self._run.config['dev_installer_prebuilts'] = True
        self._run.config['binhost_bucket'] = 'gs://testbucket'
        self._run.config['binhost_key'] = 'dontcare'
        self._run.config['binhost_base_url'] = 'https://dontcare/here'
        self.buildstore = FakeBuildStore()
    def setUp(self):
        self.rununittests_mock = self.PatchObject(commands, 'RunUnitTests')
        self.buildunittests_mock = self.PatchObject(
            commands, 'BuildUnitTestTarball', return_value='unit_tests.tar')
        self.uploadartifact_mock = self.PatchObject(
            generic_stages.ArchivingStageMixin, 'UploadArtifact')
        self.image_dir = os.path.join(
            self.build_root, 'src/build/images/amd64-generic/latest-cbuildbot')

        self._Prepare()
        self.buildstore = FakeBuildStore()
Example #17
0
    def setUp(self):
        self.CreateMockOverlay('amd64-generic')

        self.StartPatcher(generic_stages_unittest.ArchivingStageMixinMock())
        self.StartPatcher(parallel_unittest.ParallelMock())

        self.rc_mock = self.StartPatcher(cros_test_lib.RunCommandMock())
        self.rc_mock.SetDefaultCmdResult(output='')

        self.stage = None
        self.buildstore = FakeBuildStore()
Example #18
0
 def _Prepare(self, extra_config=None, **kwargs):
     """Prepare this stage for testing."""
     if extra_config is None:
         extra_config = {
             'archive_build_debug': True,
             'vm_tests': True,
             'upload_symbols': True,
         }
     super(DebugSymbolsStageTest, self)._Prepare(extra_config=extra_config,
                                                 **kwargs)
     self._run.attrs.release_tag = self.VERSION
     self.buildstore = FakeBuildStore()
  def setUp(self):
    self.setup_toolchains_mock = self.PatchObject(commands, 'SetupToolchains')
    self.fake_db = fake_cidb.FakeCIDBConnection()
    self.buildstore = FakeBuildStore(self.fake_db)
    cidb.CIDBConnectionFactory.SetupMockCidb(self.fake_db)

    # Prevent the setup_board tempdir path from being translated because it
    # ends up raising an error when that path can't be found in the chroot.
    self.PatchObject(path_util, 'ToChrootPath', side_effect=lambda x: x)
    self.setup_board = os.path.join(self.tempdir, 'buildroot',
                                    constants.CHROMITE_BIN_SUBDIR,
                                    'setup_board')
Example #20
0
  def setUp(self):
    self._Prepare()
    self.PatchObject(config_stages.UpdateConfigStage, '_DownloadTemplate')
    self.PatchObject(config_stages.UpdateConfigStage, '_CheckoutBranch')
    self.PatchObject(config_stages.UpdateConfigStage, '_RunUnitTest')
    self.PatchObject(git, 'PushBranch')
    self.PatchObject(git, 'RunGit')
    self.PatchObject(repository, 'CloneWorkingRepo')
    self.PatchObject(cros_build_lib, 'run')

    self.project = 'chromite'
    self.chromite_dir = os.path.join(self.tempdir, self.project)
    self.buildstore = FakeBuildStore()
Example #21
0
    def setUp(self):
        self.buildstore = FakeBuildStore()
        # Mock out running of cros_setup_toolchains.
        self.PatchObject(commands,
                         'RunBuildScript',
                         wraps=self.FakeRunBuildScript)
        self._setup_toolchain_cmds = []

        # Prepare a fake chroot.
        self.fake_chroot = os.path.join(self.build_root,
                                        'chroot/build/amd64-host')
        osutils.SafeMakedirs(self.fake_chroot)
        osutils.Touch(os.path.join(self.fake_chroot, 'file'))
    def setUp(self):
        self.run_suite_mock = self.PatchObject(commands, 'RunHWTestSuite')
        self.warning_mock = self.PatchObject(logging,
                                             'PrintBuildbotStepWarnings')
        self.failure_mock = self.PatchObject(logging,
                                             'PrintBuildbotStepFailure')

        self.suite_config = None
        self.suite = None
        self.version = None

        self._Prepare()
        self.buildstore = FakeBuildStore()
    def setUp(self):
        """Setup"""
        self.source_repo = 'ssh://source/repo'
        self.manifest_version_url = 'fake manifest url'
        self.branch = 'master'
        self.build_name = 'master-mst-android-pfq'
        self.incr_type = 'branch'
        self.next_version = 'next_version'
        self.sync_stage = None

        self.repo = repository.RepoRepository(self.source_repo, self.tempdir,
                                              self.branch)

        # Create and set up a fake cidb instance.
        self.fake_db = fake_cidb.FakeCIDBConnection()
        self.buildstore = FakeBuildStore(self.fake_db)
        cidb.CIDBConnectionFactory.SetupMockCidb(self.fake_db)

        self.manager = lkgm_manager.LKGMManager(
            source_repo=self.repo,
            manifest_repo=self.manifest_version_url,
            build_names=[self.build_name],
            build_type=constants.ANDROID_PFQ_TYPE,
            incr_type=self.incr_type,
            force=False,
            branch=self.branch,
            buildstore=self.buildstore,
            dry_run=True)

        self.PatchObject(buildbucket_lib,
                         'GetServiceAccount',
                         return_value=True)
        self.PatchObject(auth.AuthorizedHttp, '__init__', return_value=None)
        self.PatchObject(buildbucket_lib.BuildbucketClient,
                         '_GetHost',
                         return_value=buildbucket_lib.BUILDBUCKET_TEST_HOST)

        self._Prepare()
Example #24
0
    def setUp(self):
        self.db = fake_cidb.FakeCIDBConnection()
        self.buildstore = FakeBuildStore(self.db)
        cidb.CIDBConnectionFactory.SetupMockCidb(self.db)
        retry_stats.SetupStats()

        master_build_id = self.db.InsertBuild('master_build', 1,
                                              'master_build_config',
                                              'bot_hostname')

        self.PatchObject(toolchain, 'GetToolchainsForBoard')
        self.PatchObject(toolchain, 'GetArchForTarget', return_value='x86')

        self._Prepare(build_id=None, master_build_id=master_build_id)
Example #25
0
 def testParallelStageCommunicationNotQueueable(self):
     """Test setting non-queueable run attr in parallel stage."""
     bs = FakeBuildStore()
     stage_objs = [
         SetAttrStage(self._run, bs, attr='release_tag'),
         GetAttrStage(self._run, bs, timeout=2),
     ]
     error = self._TestParallelStages(stage_objs)
     self.assertTrue(error)
     expectedResults = [
         ('SetAttr', stage_objs[0].QueueableException()),
         ('GetAttr', stage_objs[1].TimeoutException()),
     ]
     self._verifyRunResults(expectedResults, max_time=12.0)
  def setUp(self):
    self.buildstore = FakeBuildStore()

    self.buildroot = os.path.join(self.tempdir, 'buildroot')
    self.workspace = os.path.join(self.tempdir, 'workspace')
    self.chroot_path = os.path.join(self.tempdir, 'chroot')

    self._manager = parallel.Manager()
    # Pylint-1.9 has a false positive on this for some reason.
    self._manager.__enter__()  # pylint: disable=no-value-for-parameter

    self.site_config = CreateMockSiteConfig()

    self.mock_run_stage = self.PatchObject(
        generic_builders.Builder, '_RunStage')
Example #27
0
 def setUp(self):
     self.buildstore = FakeBuildStore()
     # Replace sudo_run, since we don't care about sudo.
     self.PatchObject(cros_build_lib, 'sudo_run', wraps=cros_build_lib.run)
     self.uploadartifact_mock = self.PatchObject(
         generic_stages.ArchivingStageMixin, 'UploadArtifact')
     # Prepare a fake chroot.
     self.fake_chroot = os.path.join(self.build_root,
                                     'chroot/build/amd64-host')
     self.fake_json_data = {}
     osutils.SafeMakedirs(self.fake_chroot)
     osutils.Touch(os.path.join(self.fake_chroot, 'file'))
     for package, v in self.fake_packages:
         cpv = portage_util.SplitCPV('%s-%s' % (package, v))
         self.fake_json_data.setdefault(cpv.cp, []).append([v, {}])
    def setUp(self):
        # Prepare a fake build root in self.tempdir, save at self.build_root.
        self.build_root = os.path.join(self.tempdir, self.BUILDROOT)
        osutils.SafeMakedirs(os.path.join(self.build_root, '.repo'))

        self._manager = parallel.Manager()
        # Pylint-1.9 has a false positive on this for some reason.
        self._manager.__enter__()  # pylint: disable=no-value-for-parameter

        # These are here to make pylint happy.  Values filled in by _Prepare.
        self._bot_id = None
        self._current_board = None
        self._boards = None
        self._run = None
        self._model = None
        self.buildstore = FakeBuildStore()
    def testGetSlavesAbortedBySelfDestructedMaster(self):
        """Test GetSlavesAbortedBySelfDestructedMaster with aborted slaves."""
        db = fake_cidb.FakeCIDBConnection()
        buildstore = FakeBuildStore(db)
        cidb.CIDBConnectionFactory.SetupMockCidb(db)
        master_build_id = db.InsertBuild('master',
                                         1,
                                         'master',
                                         'bot_hostname',
                                         buildbucket_id=1234)
        master_build_identifier = BuildIdentifier(cidb_id=master_build_id,
                                                  buildbucket_id=1234)

        self.assertEqual(
            set(),
            builder_status_lib.GetSlavesAbortedBySelfDestructedMaster(
                master_build_identifier, buildstore))

        db.InsertBuild('slave_1',
                       1,
                       'slave_1',
                       'bot_hostname',
                       master_build_id=master_build_id,
                       buildbucket_id=12)
        db.InsertBuild('slave_2',
                       2,
                       'slave_2',
                       'bot_hostname',
                       master_build_id=master_build_id,
                       buildbucket_id=23)
        db.InsertBuild('slave_3',
                       3,
                       'slave_3',
                       'bot_hostname',
                       master_build_id=master_build_id,
                       buildbucket_id=34)
        for slave_build_id in (12, 23):
            db.InsertBuildMessage(
                master_build_id,
                message_type=constants.MESSAGE_TYPE_IGNORED_REASON,
                message_subtype=constants.MESSAGE_SUBTYPE_SELF_DESTRUCTION,
                message_value=str(slave_build_id))
        self.assertEqual(
            {'slave_1', 'slave_2'},
            builder_status_lib.GetSlavesAbortedBySelfDestructedMaster(
                BuildIdentifier(cidb_id=master_build_id, buildbucket_id=1234),
                buildstore))
Example #30
0
 def testParallelStages(self):
     bs = FakeBuildStore()
     stage_objs = [
         stage(self._run, bs)
         for stage in (PassStage, SneakyFailStage, FailStage, SuicideStage,
                       Pass2Stage)
     ]
     error = self._TestParallelStages(stage_objs)
     self.assertTrue(error)
     expectedResults = [
         ('Pass', results_lib.Results.SUCCESS),
         ('Fail', FailStage.FAIL_EXCEPTION),
         ('Pass2', results_lib.Results.SUCCESS),
         ('SneakyFail', error),
         ('Suicide', error),
     ]
     self._verifyRunResults(expectedResults)