예제 #1
0
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')
        ])
예제 #2
0
 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)