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