def testCrosVersionToChromeCommitFail(self): """Tests failure case of CrosVersionToChromeCommit().""" metadata_url = ( 'gs://chromeos-image-archive/%s-release/%s/partial-metadata.json' % (self.BOARD, self.GOOD_CROS_VERSION)) gs_mock = self.StartPatcher(gs_unittest.GSContextMock()) gs_mock.AddCmdResult(['cat', metadata_url], returncode=1) self.bisector.gs_ctx = gs.GSContext() self.assertIsNone( self.bisector.CrosVersionToChromeCommit(self.GOOD_CROS_VERSION)) metadata_content = 'not_a_json' gs_mock.AddCmdResult(['cat', metadata_url], output=metadata_content) self.assertIsNone( self.bisector.CrosVersionToChromeCommit(self.GOOD_CROS_VERSION)) metadata_content = '\n'.join([ '{', ' "metadata-version": "2",', ' "toolchain-url": "2017/05/%(target)s-2017.05.25.101355.tar.xz",', ' "suite_scheduling": true,', ' "build_id": 1644146,', ' "version": {}', '}' ]) gs_mock.AddCmdResult(['cat', metadata_url], output=metadata_content) self.assertIsNone( self.bisector.CrosVersionToChromeCommit(self.GOOD_CROS_VERSION)) gs_mock.AddCmdResult(['cat', metadata_url], output=self.GOOD_METADATA_CONTENT) git_mock = self.StartPatcher( git_bisector_unittest.GitMock(self.repo_dir)) git_mock.AddRunGitResult( ['log', '--oneline', '-n', '2', '60.0.3112.53'], returncode=128) self.assertIsNone( self.bisector.CrosVersionToChromeCommit(self.GOOD_CROS_VERSION))
def setUp(self): self.gs_mock = self.StartPatcher(gs_unittest.GSContextMock()) self.gs_mock.SetDefaultCmdResult() self.sdk_mock = self.StartPatcher(SDKFetcherMock(gs_mock=self.gs_mock)) self.sdk_mock.UnMockAttr('_GetChromeLKGM') os.environ.pop(cros_chrome_sdk.SDKFetcher.SDK_VERSION_ENV, None) self.sdk = cros_chrome_sdk.SDKFetcher( os.path.join(self.tempdir, 'cache'), self.BOARD)
def testGetLatestCanaryVersions(self): """Test that we correctly filter out non-canary and older versions.""" output = '\n'.join( ['2910.0.1', '2900.0.0', '2908.0.0', '2909.0.0', '2910.0.0']) # Only return 2 -- the 2 newest canary results. cros_best_revision.ChromeCommitter._CANDIDATES_TO_CONSIDER = 2 expected_output = ['2910.0.0', '2909.0.0'] self.committer._old_lkgm = '2905.0.0' with gs_unittest.GSContextMock() as gs_mock: gs_mock.AddCmdResult(partial_mock.In('ls'), output=output) versions = self.committer._GetLatestCanaryVersions() self.assertEqual(versions, expected_output)
def __init__(self, gs_mock=None): """Initializes the mock. Arguments: gs_mock: An already started GSContextMock instance. stop() will be called on this instance every time execution enters one our the mocked out methods, and start() called on it once execution leaves the mocked out method. """ partial_mock.PartialMock.__init__(self) self.ext_gs_mock = gs_mock self.entered = False self.gs_mock = gs_unittest.GSContextMock() self.gs_mock.SetDefaultCmdResult()
def testFetchFakePackages(self): """Pretend to fetch binary packages.""" gs_mock = self.StartPatcher(gs_unittest.GSContextMock()) gs_mock.SetDefaultCmdResult() uri = 'gs://foo/bar' packages_uri = '{}/Packages'.format(uri) packages_file = '''URI: gs://foo CPV: boo/baz PATH boo/baz.tbz2 ''' gs_mock.AddCmdResult(['cat', packages_uri], output=packages_file) binpkg.FetchTarballs([uri], self.tempdir)
def __init__(self, external_mocks=None): """Initializes the mock. Arguments: external_mocks: A list of already started PartialMock/patcher instances. stop() will be called on each element every time execution enters one of our the mocked out methods, and start() called on it once execution leaves the mocked out method. """ partial_mock.PartialMock.__init__(self) self.external_mocks = external_mocks or [] self.entered = False self.gs_mock = gs_unittest.GSContextMock() self.gs_mock.SetDefaultCmdResult() self.env = None
def setUp(self): self.fake_db = fake_cidb.FakeCIDBConnection() cidb.CIDBConnectionFactory.SetupMockCidb(self.fake_db) build_id = self.fake_db.InsertBuild('builder name', 'waterfall', 1, 'build config', 'bot hostname') self._Prepare(build_id=build_id) release_tag = '4815.0.0-rc1' self._run.attrs.release_tag = '4815.0.0-rc1' fake_versioninfo = manifest_version.VersionInfo(release_tag, '39') self.gs_mock = self.StartPatcher(gs_unittest.GSContextMock()) self.gs_mock.SetDefaultCmdResult() self.PatchObject(cbuildbot_run._BuilderRunBase, 'GetVersionInfo', return_value=fake_versioninfo) self.PatchObject(toolchain, 'GetToolchainsForBoard')
def testPrepareBisectCrosVersion(self): """Tests PrepareBisect() with CrOS version.""" self.SetUpBisectorWithCrosVersion() self.StartPatcher(gs_unittest.GSContextMock()) self.PatchObject(builder_module.Builder, 'SyncToHead') self.PatchObject( chrome_on_cros_bisector.ChromeOnCrosBisector, 'ResolveChromeBisectRangeFromCrosVersion').return_value = True self.PatchObject(chrome_on_cros_bisector.ChromeOnCrosBisector, 'SanityCheck').return_value = True self.PatchObject(chrome_on_cros_bisector.ChromeOnCrosBisector, 'ObtainBisectBoundaryScore').return_value = True self.PatchObject(chrome_on_cros_bisector.ChromeOnCrosBisector, 'GetThresholdFromUser').return_value = True self.PatchObject(chrome_on_cros_bisector.ChromeOnCrosBisector, 'ExchangeChromeSanityCheck').return_value = True self.assertTrue(self.bisector.PrepareBisect())
def testCrosVersionToChromeCommit(self): """Tests CrosVersionToChromeCommit().""" metadata_url = ( 'gs://chromeos-image-archive/%s-release/%s/partial-metadata.json' % (self.BOARD, self.GOOD_CROS_VERSION)) gs_mock = self.StartPatcher(gs_unittest.GSContextMock()) gs_mock.AddCmdResult(['cat', metadata_url], output=self.GOOD_METADATA_CONTENT) git_log_content = '\n'.join([ '8967dd66ad72 (tag: 60.0.3112.53) Publish DEPS for Chromium ' '60.0.3112.53', '27ed0cc0c2f4 Incrementing VERSION to 60.0.3112.53' ]) git_mock = self.StartPatcher( git_bisector_unittest.GitMock(self.repo_dir)) git_mock.AddRunGitResult( ['log', '--oneline', '-n', '2', '60.0.3112.53'], output=git_log_content) self.bisector.gs_ctx = gs.GSContext() self.assertEqual( '27ed0cc0c2f4', self.bisector.CrosVersionToChromeCommit(self.GOOD_CROS_VERSION))
def setUp(self): self.StartPatcher(gs_unittest.GSContextMock())
def setUp(self): """Sets up a temporary symlink & tarball cache.""" self.gs_mock = self.StartPatcher(gs_unittest.GSContextMock()) self.gs_mock.SetDefaultCmdResult() self.sdk_fetcher = cros_chrome_sdk.SDKFetcher(self.tempdir, None)
def setUp(self): """Setup vars and create mock dir.""" self.tmp_overlay = os.path.join(self.tempdir, 'chromiumos-overlay') self.mock_android_dir = os.path.join(self.tmp_overlay, constants.ANDROID_CP) ebuild = os.path.join(self.mock_android_dir, constants.ANDROID_PN + '-%s.ebuild') self.unstable = ebuild % '9999' self.old_version = '25' self.old = ebuild % self.old_version self.old2_version = '50' self.old2 = ebuild % self.old2_version self.new_version = '100' self.new = ebuild % ('%s-r1' % self.new_version) self.partial_new_version = '150' self.not_new_version = '200' osutils.WriteFile(self.unstable, self.unstable_data, makedirs=True) osutils.WriteFile(self.old, self.stable_data, makedirs=True) osutils.WriteFile(self.old2, self.stable_data, makedirs=True) self.arm_acl_data = '-g google.com:READ' self.x86_acl_data = '-g google.com:WRITE' self.cts_acl_data = '-g google.com:WRITE' self.arm_acl = os.path.join(self.mock_android_dir, 'googlestorage_arm_acl.txt') self.x86_acl = os.path.join(self.mock_android_dir, 'googlestorage_x86_acl.txt') self.cts_acl = os.path.join(self.mock_android_dir, 'googlestorage_cts_acl.txt') self.acls = { 'ARM': self.arm_acl, 'X86': self.x86_acl, 'SDK_TOOLS': self.cts_acl, } osutils.WriteFile(self.arm_acl, self.arm_acl_data, makedirs=True) osutils.WriteFile(self.x86_acl, self.x86_acl_data, makedirs=True) osutils.WriteFile(self.cts_acl, self.cts_acl_data, makedirs=True) self.bucket_url = 'gs://u' self.build_branch = 'x' self.gs_mock = self.StartPatcher(gs_unittest.GSContextMock()) self.arc_bucket_url = 'gs://a' self.targets = constants.ANDROID_BUILD_TARGETS builds = { 'ARM': [ self.old_version, self.old2_version, self.new_version, self.partial_new_version ], 'X86': [self.old_version, self.old2_version, self.new_version], 'SDK_TOOLS': [ self.old_version, self.old2_version, self.new_version, self.partial_new_version ], } for build_type, builds in builds.iteritems(): url = self.makeSrcTargetUrl(self.targets[build_type][0]) builds = '\n'.join(os.path.join(url, version) for version in builds) self.gs_mock.AddCmdResult(['ls', '--', url], output=builds) for version in [self.old_version, self.old2_version, self.new_version]: for key in self.targets.iterkeys(): self.setupMockBuild(key, version) self.new_subpaths = { 'ARM': 'linux-cheets_arm-user100', 'X86': 'linux-cheets_x86-user100', 'SDK_TOOLS': 'linux-static_sdk_tools100', } self.setupMockBuild('ARM', self.partial_new_version) self.setupMockBuild('X86', self.partial_new_version, valid=False) self.setupMockBuild('SDK_TOOLS', self.partial_new_version) for key in self.targets.iterkeys(): self.setupMockBuild(key, self.not_new_version, False)
def setUp(self): """Setup vars and create mock dir.""" self.android_package = 'test_package' self.tmp_overlay = os.path.join(self.tempdir, 'chromiumos-overlay') self.mock_android_dir = os.path.join( self.tmp_overlay, portage_util.GetFullAndroidPortagePackageName(self.android_package)) ebuild = os.path.join(self.mock_android_dir, self.android_package + '-%s.ebuild') self.unstable = ebuild % '9999' self.old_version = '25' self.old = ebuild % self.old_version self.old2_version = '50' self.old2 = ebuild % self.old2_version self.new_version = '100' self.new = ebuild % ('%s-r1' % self.new_version) self.partial_new_version = '150' self.not_new_version = '200' osutils.WriteFile(self.unstable, self.unstable_data, makedirs=True) osutils.WriteFile(self.old, self.stable_data, makedirs=True) osutils.WriteFile(self.old2, self.stable_data, makedirs=True) self.internal_acl_data = '-g google.com:READ' self.arm_acl_data = '-g google.com:READ' self.x86_acl_data = '-g google.com:WRITE' self.cts_acl_data = '-g google.com:WRITE' self.arm_acl = os.path.join(self.mock_android_dir, 'googlestorage_arm_acl.txt') self.x86_acl = os.path.join(self.mock_android_dir, 'googlestorage_x86_acl.txt') self.internal_acl = os.path.join(self.mock_android_dir, 'googlestorage_internal_acl.txt') self.cts_acl = os.path.join(self.mock_android_dir, 'googlestorage_cts_acl.txt') self.acls = { 'ARM': self.arm_acl, 'X86': self.x86_acl, 'X86_NDK_TRANSLATION': self.internal_acl, 'X86_INTERNAL': self.internal_acl, 'X86_64': self.x86_acl, 'X86_USERDEBUG': self.x86_acl, 'X86_NDK_TRANSLATION_USERDEBUG': self.internal_acl, 'X86_64_USERDEBUG': self.x86_acl, 'AOSP_X86_USERDEBUG': self.x86_acl, 'SDK_GOOGLE_X86_USERDEBUG': self.x86_acl, 'SDK_GOOGLE_X86_64_USERDEBUG': self.x86_acl, 'SDK_TOOLS': self.cts_acl, } osutils.WriteFile(self.arm_acl, self.arm_acl_data, makedirs=True) osutils.WriteFile(self.x86_acl, self.x86_acl_data, makedirs=True) osutils.WriteFile(self.cts_acl, self.cts_acl_data, makedirs=True) osutils.WriteFile(self.internal_acl, self.internal_acl_data, makedirs=True) self.bucket_url = 'gs://u' self.build_branch = constants.ANDROID_NYC_BUILD_BRANCH self.gs_mock = self.StartPatcher(gs_unittest.GSContextMock()) self.arc_bucket_url = 'gs://a' self.targets = cros_mark_android_as_stable.MakeBuildTargetDict( self.build_branch).copy() # Internal targets share path with main targets. # Redefine them for decoupled testing. self.targets['X86_INTERNAL'] = ( self.targets['X86_INTERNAL'][0] + '-internal', self.targets['X86_INTERNAL'][1]) # We only test NYC targets, thus add ndk-translation targets from PI, so # that they are covered too. self.targets['X86_NDK_TRANSLATION'] = \ constants.ANDROID_PI_BUILD_TARGETS['X86_NDK_TRANSLATION'] self.targets['X86_NDK_TRANSLATION_USERDEBUG'] = \ constants.ANDROID_PI_BUILD_TARGETS['X86_NDK_TRANSLATION_USERDEBUG'] builds = { 'ARM': [ self.old_version, self.old2_version, self.new_version, self.partial_new_version ], 'X86': [self.old_version, self.old2_version, self.new_version], 'X86_NDK_TRANSLATION': [ self.old_version, self.old2_version, self.new_version ], 'X86_INTERNAL': [self.old_version, self.old2_version, self.new_version], 'X86_64': [self.old_version, self.old2_version, self.new_version], 'X86_USERDEBUG': [ self.old_version, self.old2_version, self.new_version ], 'X86_NDK_TRANSLATION_USERDEBUG': [ self.old_version, self.old2_version, self.new_version ], 'X86_64_USERDEBUG': [ self.old_version, self.old2_version, self.new_version ], 'AOSP_X86_USERDEBUG': [ self.old_version, self.old2_version, self.new_version ], 'SDK_GOOGLE_X86_USERDEBUG': [ self.old_version, self.old2_version, self.new_version ], 'SDK_GOOGLE_X86_64_USERDEBUG': [ self.old_version, self.old2_version, self.new_version ], 'SDK_TOOLS': [ self.old_version, self.old2_version, self.new_version, self.partial_new_version ], } for build_type, builds in builds.iteritems(): url = self.makeSrcTargetUrl(self.targets[build_type][0]) builds = '\n'.join(os.path.join(url, version) for version in builds) self.gs_mock.AddCmdResult(['ls', '--', url], output=builds) for version in [self.old_version, self.old2_version, self.new_version]: for key in self.targets.iterkeys(): self.setupMockBuild(key, version) self.new_subpaths = { 'ARM': 'linux-cheets_arm-user100', 'X86': 'linux-cheets_x86-user100', 'X86_NDK_TRANSLATION': 'linux-cheets_x86_ndk_translation-user100', 'X86_INTERNAL': 'linux-cheets_x86-user-internal100', 'X86_64': 'linux-cheets_x86_64-user100', 'X86_USERDEBUG': 'linux-cheets_x86-userdebug100', 'X86_NDK_TRANSLATION_USERDEBUG': 'linux-cheets_x86_ndk_translation-userdebug100', 'X86_64_USERDEBUG': 'linux-cheets_x86_64-userdebug100', 'AOSP_X86_USERDEBUG': 'linux-aosp_cheets_x86-userdebug100', 'SDK_GOOGLE_X86_USERDEBUG': 'linux-sdk_google_cheets_x86-userdebug100', 'SDK_GOOGLE_X86_64_USERDEBUG': 'linux-sdk_google_cheets_x86_64-userdebug100', 'SDK_TOOLS': 'linux-static_sdk_tools100', } self.setupMockBuild('ARM', self.partial_new_version) self.setupMockBuild('X86', self.partial_new_version, valid=False) self.setupMockBuild('X86_NDK_TRANSLATION', self.partial_new_version, valid=False) self.setupMockBuild('X86_INTERNAL', self.partial_new_version, valid=False) self.setupMockBuild('X86_64', self.partial_new_version, valid=False) self.setupMockBuild('X86_USERDEBUG', self.partial_new_version, valid=False) self.setupMockBuild('X86_NDK_TRANSLATION_USERDEBUG', self.partial_new_version, valid=False) self.setupMockBuild('X86_64_USERDEBUG', self.partial_new_version, valid=False) self.setupMockBuild('AOSP_X86_USERDEBUG', self.partial_new_version, valid=False) self.setupMockBuild('SDK_GOOGLE_X86_USERDEBUG', self.partial_new_version, valid=False) self.setupMockBuild('SDK_GOOGLE_X86_64_USERDEBUG', self.partial_new_version, valid=False) self.setupMockBuild('SDK_TOOLS', self.partial_new_version) for key in self.targets.iterkeys(): self.setupMockBuild(key, self.not_new_version, False)