def test_build(self): test_root = self.test_root options = self.options options.git_branch = PATCH_BRANCH options.github_owner = 'default' options.github_disable_upstream_push = True scm = BranchSourceCodeManager(options, test_root) golden_bom = dict(self.golden_bom) builder = BomBuilder.new_from_bom(options, scm, golden_bom) source_repositories = [ scm.make_repository_spec(name) for name in ALL_STANDARD_TEST_BOM_REPO_NAMES ] for repository in source_repositories: scm.ensure_git_path(repository) summary = scm.git.collect_repository_summary(repository.git_dir) source_info = SourceInfo('SourceInfoBuildNumber', summary) builder.add_repository(repository, source_info) with patch('buildtool.bom_commands.now') as mock_now: mock_now.return_value = datetime.datetime(2018, 1, 2, 3, 4, 5) bom = builder.build() golden_bom['version'] = 'patch-OptionBuildNumber' golden_bom['timestamp'] = '2018-01-02 03:04:05' golden_bom['services'][NORMAL_SERVICE]['version'] = ( PATCH_VERSION_NUMBER + '-SourceInfoBuildNumber') golden_bom['services'][OUTLIER_SERVICE]['version'] = ( PATCH_VERSION_NUMBER + '-SourceInfoBuildNumber') golden_bom['services']['monitoring-third-party']['version'] = ( PATCH_VERSION_NUMBER + '-SourceInfoBuildNumber') golden_bom['artifactSources'] = { 'debianRepository': 'https://dl.bintray.com/%s/%s' % (options.bintray_org, options.bintray_debian_repository), 'dockerRegistry': options.docker_registry, 'googleImageProject': options.publish_gce_image_project, 'gitPrefix': os.path.dirname(self.repo_commit_map[NORMAL_REPO]['ORIGIN']) } for key, value in bom['services'].items(): print '**** {0} -> {1}'.format(key, value) print ' ==>> {0}'.format(golden_bom['services'][key]) self.assertEquals(value, golden_bom['services'][key]) for key, value in bom.items(): self.assertEquals(value, golden_bom[key]) self.assertEquals(golden_bom, bom)
def test_rebuild(self): test_root = self.test_root options = self.options options.git_branch = 'master' options.github_owner = 'default' options.github_disable_upstream_push = True options.build_number = 'UpdatedBuildNumber' scm = BranchSourceCodeManager(options, test_root) builder = BomBuilder.new_from_bom(options, scm, MetricsManager.singleton(), self.golden_bom) repository = scm.make_repository_spec(OUTLIER_REPO) scm.ensure_git_path(repository) scm.git.check_run(repository.git_dir, 'checkout ' + PATCH_BRANCH) summary = scm.git.collect_repository_summary(repository.git_dir) source_info = SourceInfo('SourceInfoBuildNumber', summary) builder.add_repository(repository, source_info) with patch('buildtool.bom_commands.now') as mock_now: mock_now.return_value = datetime.datetime(2018, 1, 2, 3, 4, 5) bom = builder.build() updated_service = bom['services'][OUTLIER_SERVICE] self.assertEqual( updated_service, { 'commit': self.repo_commit_map[OUTLIER_REPO][PATCH_BRANCH], 'version': PATCH_VERSION_NUMBER + '-SourceInfoBuildNumber' }) # The bom should be the same as before, but with new timestamp/version # and our service updated. And the artifactSources to our configs. updated_bom = dict(self.golden_bom) updated_bom['timestamp'] = '2018-01-02 03:04:05' updated_bom['version'] = 'master-UpdatedBuildNumber' updated_bom['services'][OUTLIER_SERVICE] = updated_service updated_bom['artifactSources'] = { 'debianRepository': 'https://dl.bintray.com/%s/%s' % (options.bintray_org, options.bintray_debian_repository), 'dockerRegistry': options.docker_registry, 'googleImageProject': options.publish_gce_image_project, 'gitPrefix': self.golden_bom['artifactSources']['gitPrefix'] } for key, value in updated_bom.items(): self.assertEqual(value, bom[key]) self.assertEqual(updated_bom, bom)
def test_rebuild(self): test_root = self.test_root options = self.options options.git_branch = 'master' options.github_owner = 'default' options.github_disable_upstream_push = True options.build_number = 'UpdatedBuildNumber' scm = BranchSourceCodeManager(options, test_root) builder = BomBuilder.new_from_bom( options, scm, MetricsManager.singleton(), self.golden_bom) repository = scm.make_repository_spec(OUTLIER_REPO) scm.ensure_git_path(repository) scm.git.check_run(repository.git_dir, 'checkout ' + PATCH_BRANCH) summary = scm.git.collect_repository_summary(repository.git_dir) source_info = SourceInfo('SourceInfoBuildNumber', summary) builder.add_repository(repository, source_info) with patch('buildtool.bom_commands.now') as mock_now: mock_now.return_value = datetime.datetime(2018, 1, 2, 3, 4, 5) bom = builder.build() updated_service = bom['services'][OUTLIER_SERVICE] self.assertEqual(updated_service, { 'commit': self.repo_commit_map[OUTLIER_REPO][PATCH_BRANCH], 'version': PATCH_VERSION_NUMBER + '-SourceInfoBuildNumber' }) # The bom should be the same as before, but with new timestamp/version # and our service updated. And the artifactSources to our configs. updated_bom = dict(self.golden_bom) updated_bom['timestamp'] = '2018-01-02 03:04:05' updated_bom['version'] = 'master-UpdatedBuildNumber' updated_bom['services'][OUTLIER_SERVICE] = updated_service updated_bom['artifactSources'] = { 'debianRepository': 'https://dl.bintray.com/%s/%s' % ( options.bintray_org, options.bintray_debian_repository), 'dockerRegistry': options.docker_registry, 'googleImageProject': options.publish_gce_image_project, 'gitPrefix': self.golden_bom['artifactSources']['gitPrefix'] } for key, value in updated_bom.items(): self.assertEqual(value, bom[key]) self.assertEqual(updated_bom, bom)
def test_build(self): test_root = self.test_root options = self.options options.git_branch = PATCH_BRANCH options.github_owner = 'default' options.github_disable_upstream_push = True scm = BranchSourceCodeManager(options, test_root) golden_bom = dict(self.golden_bom) builder = BomBuilder.new_from_bom( options, scm, MetricsManager.singleton(), golden_bom) source_repositories = [scm.make_repository_spec(name) for name in ALL_STANDARD_TEST_BOM_REPO_NAMES] for repository in source_repositories: scm.ensure_git_path(repository) summary = scm.git.collect_repository_summary(repository.git_dir) source_info = SourceInfo('SourceInfoBuildNumber', summary) builder.add_repository(repository, source_info) with patch('buildtool.bom_commands.now') as mock_now: mock_now.return_value = datetime.datetime(2018, 1, 2, 3, 4, 5) bom = builder.build() golden_bom['version'] = 'patch-OptionBuildNumber' golden_bom['timestamp'] = '2018-01-02 03:04:05' golden_bom['services'][NORMAL_SERVICE]['version'] = ( PATCH_VERSION_NUMBER + '-SourceInfoBuildNumber') golden_bom['services'][OUTLIER_SERVICE]['version'] = ( PATCH_VERSION_NUMBER + '-SourceInfoBuildNumber') golden_bom['services']['monitoring-third-party']['version'] = ( PATCH_VERSION_NUMBER + '-SourceInfoBuildNumber') golden_bom['artifactSources'] = { 'debianRepository': 'https://dl.bintray.com/%s/%s' % ( options.bintray_org, options.bintray_debian_repository), 'dockerRegistry': options.docker_registry, 'googleImageProject': options.publish_gce_image_project, 'gitPrefix': os.path.dirname(self.repo_commit_map[NORMAL_REPO]['ORIGIN']) } for key, value in bom['services'].items(): self.assertEqual(value, golden_bom['services'][key]) for key, value in bom.items(): self.assertEqual(value, golden_bom[key]) self.assertEqual(golden_bom, bom)
def test_rebuild(self): test_root = self.test_root options = self.options options.git_branch = "master" options.github_owner = "default" options.github_disable_upstream_push = True options.build_number = "UpdatedBuildNumber" scm = BranchSourceCodeManager(options, test_root) builder = BomBuilder.new_from_bom(options, scm, MetricsManager.singleton(), self.golden_bom) repository = scm.make_repository_spec(OUTLIER_REPO) scm.ensure_git_path(repository) scm.git.check_run(repository.git_dir, "checkout " + PATCH_BRANCH) summary = scm.git.collect_repository_summary(repository.git_dir) source_info = SourceInfo("SourceInfoBuildNumber", summary) builder.add_repository(repository, source_info) with patch("buildtool.bom_commands.now") as mock_now: mock_now.return_value = datetime.datetime(2018, 1, 2, 3, 4, 5) bom = builder.build() updated_service = bom["services"][OUTLIER_SERVICE] # OUTLIER_REPO hasn't been tagged since extra commits so bom should be same self.assertNotEqual( updated_service, { "commit": self.repo_commit_map[OUTLIER_REPO][PATCH_BRANCH], "version": BASE_VERSION_NUMBER, }, ) # The bom should be the same as before, but with new timestamp/version # and our service unchanged. And the artifactSources to our configs. updated_bom = dict(self.golden_bom) updated_bom["timestamp"] = "2018-01-02 03:04:05" updated_bom["version"] = "UpdatedBuildNumber" updated_bom["artifactSources"] = { "gitPrefix": self.golden_bom["artifactSources"]["gitPrefix"], "debianRepository": SPINNAKER_DEBIAN_REPOSITORY, "dockerRegistry": SPINNAKER_DOCKER_REGISTRY, "googleImageProject": SPINNAKER_GOOGLE_IMAGE_PROJECT, } for key, value in bom["services"].items(): # monitoring-daemon has extra commit on branch so commit id's should not match if key in ["monitoring-daemon", "monitoring-third-party"]: self.assertNotEqual( value, updated_bom["services"][key], msg="key: {} - value: {}".format(key, value), ) else: self.assertEqual( value, updated_bom["services"][key], msg="key: {} - value: {}".format(key, value), ) for key, value in bom.items(): if key != "services": self.assertEqual(value, updated_bom[key])
def test_build(self): test_root = self.test_root options = self.options options.git_branch = PATCH_BRANCH options.github_owner = "default" options.github_disable_upstream_push = True scm = BranchSourceCodeManager(options, test_root) golden_bom = dict(self.golden_bom) builder = BomBuilder.new_from_bom(options, scm, MetricsManager.singleton(), golden_bom) source_repositories = [ scm.make_repository_spec(name) for name in ALL_STANDARD_TEST_BOM_REPO_NAMES ] for repository in source_repositories: scm.ensure_git_path(repository) summary = scm.git.collect_repository_summary(repository.git_dir) source_info = SourceInfo("SourceInfoBuildNumber", summary) builder.add_repository(repository, source_info) with patch("buildtool.bom_commands.now") as mock_now: mock_now.return_value = datetime.datetime(2018, 1, 2, 3, 4, 5) bom = builder.build() golden_bom["version"] = "OptionBuildNumber" golden_bom["timestamp"] = "2018-01-02 03:04:05" golden_bom["services"][NORMAL_SERVICE]["version"] = BASE_VERSION_NUMBER golden_bom["services"][OUTLIER_SERVICE][ "version"] = BASE_VERSION_NUMBER golden_bom["services"]["monitoring-third-party"][ "version"] = BASE_VERSION_NUMBER golden_bom["artifactSources"] = { "gitPrefix": os.path.dirname(self.repo_commit_map[NORMAL_REPO]["ORIGIN"]), "debianRepository": SPINNAKER_DEBIAN_REPOSITORY, "dockerRegistry": SPINNAKER_DOCKER_REGISTRY, "googleImageProject": SPINNAKER_GOOGLE_IMAGE_PROJECT, } for key, value in bom["services"].items(): # gate has extra commit on branch so commit id's should not match if key in ["gate", "monitoring-daemon", "monitoring-third-party"]: self.assertNotEqual( value, golden_bom["services"][key], msg="key: {} - value: {}".format(key, value), ) else: self.assertEqual( value, golden_bom["services"][key], msg="key: {} - value: {}".format(key, value), ) for key, value in bom.items(): if key != "services": self.assertEqual(value, golden_bom[key])