class TestRPMPackageBuilder(TestCase): def setUp(self): os.system("rm -rf /tmp/lic.txt; echo 'license content' > /tmp/lic.txt") os.system("mkdir -p /tmp/gpdb_src") self.rpm_package_builder = RPMPackageBuilder( name="greenplum-db-6", release="1", platform="rhel6", license="Pivotal Software EULA", url="https://github.com/greenplum-db/gpdb", oss="true", bin_gpdb_path="bin_gpdb/bin_gpdb.tar.gz", spec_file_path= "greenplum-database-release/ci/concourse/scripts/greenplum-db-6.spec", license_file_path="/tmp/lic.txt", gpdb_src_path="/tmp/gpdb_src") @patch('oss.base.BasePackageBuilder.gpdb_version_short', new_callable=PropertyMock) def test_build_package_builder_settings_aa(self, mock): mock.return_value = "gpdb-6.0.0-beta.5+dev.18.g6a02f28" self.assertEqual(self.rpm_package_builder.rpm_build_dir, "/root/rpmbuild") self.assertEqual(self.rpm_package_builder.rpm_gpdb_version, "gpdb_6.0.0_beta.5+dev.18.g6a02f28") self.assertEqual(self.rpm_package_builder.platform, "rhel6") self.assertEqual( self.rpm_package_builder.rpm_package_name, "greenplum-db-gpdb-6.0.0-beta.5+dev.18.g6a02f28-rhel6-x86_64.rpm") with self.assertRaisesRegex(Exception, 'The platform only support rhel6, rhel7'): self.rpm_package_builder.platform = "ubuntu18.04" self.assertEqual( self.rpm_package_builder.rpm_package_name, "greenplum-db-gpdb-6.0.0-beta.5+dev.18.g6a02f28-rhel6-x86_64.rpm") @patch('oss.base.BasePackageBuilder.gpdb_version_short', new_callable=PropertyMock) @patch('oss.rpmbuild.RPMPackageBuilder._prepare_rpm_build_dir') @patch('oss.utils.Util.run_or_fail') def test_build_flags(self, run_or_fail_mock, prepare_rpm_build_dir_mock, gpdb_version_short_mock): gpdb_version_short_mock.return_value = "gpdb-6.0.0-beta.5+dev.18.g6a02f28" self.rpm_package_builder.build() self.assertEqual(run_or_fail_mock.call_args_list, [ call([ '/bin/bash', '-c', 'rpmbuild -bb /root/rpmbuild/SPECS/greenplum-db-6.spec ' '--define="rpm_gpdb_version gpdb_6.0.0_beta.5+dev.18.g6a02f28" ' '--define="gpdb_version gpdb-6.0.0-beta.5+dev.18.g6a02f28" ' '--define="gpdb_release 1" ' '--define="gpdb_license Pivotal Software EULA" ' '--define="gpdb_url https://github.com/greenplum-db/gpdb" ' '--define="gpdb_oss true"' ], cwd='/root/rpmbuild') ])
def setUp(self): os.system("rm -rf /tmp/lic.txt; echo 'license content' > /tmp/lic.txt") os.system("mkdir -p /tmp/gpdb_src") self.rpm_package_builder = RPMPackageBuilder( name="greenplum-db-6", release="1", platform="rhel6", license="Pivotal Software EULA", url="https://github.com/greenplum-db/gpdb", oss="true", bin_gpdb_path="bin_gpdb/bin_gpdb.tar.gz", spec_file_path= "greenplum-database-release/ci/concourse/scripts/greenplum-db-6.spec", license_file_path="/tmp/lic.txt", gpdb_src_path="/tmp/gpdb_src")
# only the OSS gpdb need the gpdb_src, copying the LICENSE, COPYRIGHT files from there. if os.path.exists("gpdb_src"): gpdb_src_path = os.path.abspath("gpdb_src") if os.path.isfile("bin_gpdb/bin_gpdb.tar.gz"): tarball_path = "bin_gpdb/bin_gpdb.tar.gz" else: tarball_path = glob.glob("bin_gpdb/[!QA]*.tar.gz")[0] rpm_builder = RPMPackageBuilder( name=gpdb_name, release=os.environ["GPDB_RELEASE"], platform=os.environ["PLATFORM"], license=os.environ["GPDB_LICENSE"], url=os.environ["GPDB_URL"], oss=os.getenv("GPDB_OSS", "false"), bin_gpdb_path=tarball_path, spec_file_path=os.path.join( "greenplum-database-release/ci/concourse/scripts", gpdb_name + ".spec"), license_file_path=license_file_path, gpdb_src_path=gpdb_src_path) rpm_builder.build() rpm_file_path = os.path.abspath( glob.glob("%s/RPMS/x86_64/*.rpm" % rpm_builder.rpm_build_dir)[0]) if os.getenv("GPDB_OSS").lower() == "true": print("Verify RPM package...") packager_tester = PackageTester(rpm_file_path)
gpdb_name = os.environ["GPDB_NAME"] license_file_path = os.path.abspath(glob.glob("license_file/*.txt")[0]) # gpdb_src is the optional concourse input resource name # only the OSS gpdb need the gpdb_src, copying the LICENSE, COPYRIGHT files from there. if os.path.exists("gpdb_src"): gpdb_src_path = os.path.abspath("gpdb_src") rpm_builder = RPMPackageBuilder( name=gpdb_name, release=os.environ["GPDB_RELEASE"], platform=os.environ["PLATFORM"], summary=os.environ["GPDB_SUMMARY"], license=os.environ["GPDB_LICENSE"], url=os.environ["GPDB_URL"], buildarch=os.environ["GPDB_BUILDARCH"], description=os.environ["GPDB_DESCRIPTION"], prefix=os.environ["GPDB_PREFIX"], oss=os.getenv("GPDB_OSS", "false"), bin_gpdb_path=glob.glob("bin_gpdb/*.tar.gz")[0], spec_file_path=os.path.join("greenplum-database-release/ci/concourse/scripts", gpdb_name + ".spec"), license_file_path=license_file_path, gpdb_src_path=gpdb_src_path ) rpm_builder.build() rpm_file_path = os.path.abspath(glob.glob("%s/RPMS/x86_64/*.rpm" % rpm_builder.rpm_build_dir)[0]) if os.getenv("GPDB_OSS").lower() == "true": print("Verify RPM package...") packager_tester = PackageTester(rpm_file_path)