Beispiel #1
0
    def setCSCH(self):
        ProvidesTest.instance = self
        rpms = rc.RuntimeConfig().getRpmList()
        if rc.RuntimeConfig().getRpmList().getJava() == gc.ITW:
            self.log("Set ItwVersionCheck")
            self.csch = ITWeb(ProvidesTest.instance)
            return
        else:
            arch = self.getCurrentArch()
            if int(rpms.getMajorVersionSimplified()) == 8:
                if tc.is_arch_jitarch(arch) and "ppc" not in arch:
                    self.csch = NonITW(ProvidesTest.instance)
                    return
                else:
                    self.csch = NonITW(ProvidesTest.instance)
                    return
            if int(rpms.getMajorVersionSimplified()) == 11:
                if (arch in ["armv7hl", "s390x"]
                        or tc.is_arch_jitarch(arch)) and "ppc" not in arch:
                    self.csch = NonITW(ProvidesTest.instance)
                    return
                else:
                    self.csch = NonITW(ProvidesTest.instance)
                    return
            if int(rpms.getMajorVersionSimplified()) > 11:
                if (arch in ["armv7hl", "s390x"]
                        or tc.is_arch_jitarch(arch)) and "ppc" not in arch:
                    self.csch = NonITW(ProvidesTest.instance)
                    return
                else:
                    self.csch = NonITW(ProvidesTest.instance)

            self.log("Set OthersVersionCheck")
            self.csch = NonITW(ProvidesTest.instance)
            return
    def setCSCH(self):
        arch = self.getCurrentArch()
        rpms = rc.RuntimeConfig().getRpmList()
        if int(rpms.getMajorVersionSimplified()) == 8:
            if tc.is_arch_jitarch(arch) and "ppc" not in arch:
                self.csch = Ojdk8JIT()
                return
        elif int(rpms.getMajorVersionSimplified()) == 11:
            if (arch in ["armv7hl", "s390x"]
                    or tc.is_arch_jitarch(arch)) and "ppc" not in arch:
                self.csch = Ojdk11JIT()
                return
        elif int(rpms.getMajorVersionSimplified()) == 11:
            if (arch in ["armv7hl", "s390x"]
                    or tc.is_arch_jitarch(arch)) and "ppc" not in arch:
                self.csch = Ojdk11JIT()
                return

            elif int(rpms.getMajorVersionSimplified()) == 11:
                self.csch = Ojdk11JIT()
                return
            else:
                self.csch = OjdklatestJIT()
                return
        else:
            self.csch = Default()
            return
Beispiel #3
0
class BasePackages(JdkConfiguration):
    rpms = rc.RuntimeConfig().getRpmList()

    def __init__(self):
        super().__init__()

    def _get_arch(self):
        return PostinstallScriptTest.instance.getCurrentArch()

    def _generate_masters(self):
        return {}

    def _get_vendor(self):
        return self.rpms.getVendor()

    def _get_version(self):
        return self.rpms.getMajorVersion()

    def _get_masters_arch_copy(self, master):
        """Some of the masters have arch at the end, this method appends it automatically."""
        master = master + "." + str(get_id(self._get_arch()))
        return master

    def _add_plugin(self):
        return [LIBJAVAPLUGIN]
Beispiel #4
0
 def setCSCH(self):
     rpms = rc.RuntimeConfig().getRpmList()
     rpms.getMajorPackage()
     if (rpms.getVendor() == gc.OPENJDK or rpms.getVendor()
             == gc.OPENJ9) and int(rpms.getMajorVersionSimplified()) >= 11:
         self.csch = Ojdk11AndAbove(rpms)
     else:
         self.csch = Default(rpms)
 def log(self, logmsg, verbosity=vc.Verbosity.TEST, jtregfilename=""):
     if verbosity.value <= rc.RuntimeConfig().get_verbosity().value:
         outputControl.file_log.FileLog().println(logmsg)
     if verbosity == verbosity.JTREG:
         if logmsg == "" and jtregfilename != "":
             outputControl.file_log.JtregLog().__init__(jtregfilename)
         else:
             outputControl.file_log.JtregLog(jtregfilename).println(logmsg)
     outputControl.file_log.DefaultLog().println(logmsg)
Beispiel #6
0
 def provideCleanUsefullRoot(self):
     if self.alternatives:
         self.installAlternatives()
     else:
         self.init()
         self.installAlternatives()
         if rc.RuntimeConfig().getRpmList().getVendor() in (gc.ORACLE +
                                                            gc.SUN +
                                                            gc.IBM +
                                                            gc.ITW):
             # ibm/itw/oracle plugin packages expect mozilla installed in the filesystem, this gives us
             # directories neccessary
             self.mkdirP("/usr/lib64/mozilla")
             self.mkdirP("/usr/lib64/mozilla/plugins")
             self.mkdirP("/usr/lib/mozilla")
             self.mkdirP("/usr/lib/mozilla/plugins")
             if rc.RuntimeConfig().getRpmList().getVendor() == gc.ORACLE:
                 # oracle plugin packages in addition expect also these directories
                 self.mkdirP("/usr/lib/jvm/jce-1.7.0-oracle")
                 self.mkdirP("/usr/lib/jvm/jce-1.8.0-oracle")
 def ghost_test(self, this):
     documentation = "This tests checks if every master is ghosted. Ghosted files are listed via rpm command," \
                     " as a difference between \'rpm -q -l\' and \'rpm -q -l --no-ghost\'"
     files = rc.RuntimeConfig().getRpmList().files
     files = [x.replace("rpms/", "") for x in files]
     if not self.documenting:
         files = [
             x for x in files if tu.validate_arch_for_rpms(
                 this.current_arch) == ns.get_arch(x)
         ]
         for file in files:
             self._check_ghosts_per_file(file)
     self._document(documentation)
     return self.passed, self.failed
Beispiel #8
0
    def setCSCH(self):
        PermissionTest.instance = self
        rpms = rc.RuntimeConfig().getRpmList()
        self.log("Checking files for " + rpms.getMajorPackage(),
                 vc.Verbosity.TEST)
        if rpms.getVendor() == gc.OPENJDK or rpms.getVendor() == gc.OPENJ9:
            if rpms.getMajorVersionSimplified() == "6":
                if self.getCurrentArch() in (gc.getX86_64Arch() +
                                             gc.getPower64BeAchs()):
                    self.csch = OpenJdk6PowBeArchAndX86()
                    return
                else:
                    self.csch = OpenJdk6()
                    return
            if rpms.getMajorVersionSimplified() == "7":
                self.csch = OpenJdk7()
                return
            elif rpms.getMajorVersionSimplified() == "8":
                self.csch = OpenJdk8()
                return
            elif int(rpms.getMajorVersionSimplified()) >= 9:
                self.csch = OpenJdk8()
                return
            else:
                raise UnknownJavaVersionException(
                    "Unknown version of OpenJDK.")

        if rpms.getVendor() == gc.SUN:
            if self.getCurrentArch() in (gc.getX86_64Arch() +
                                         gc.getPower64BeAchs()):
                self.csch = OpenJdk6PowBeArchAndX86()
                return
            else:
                self.csch = OpenJdk6()
                return
        if rpms.getVendor() == gc.ORACLE:
            self.csch = Oracle()
            return

        if rpms.getVendor() == gc.IBM:
            self.csch = BaseTest()
            return

        if rpms.getVendor() == gc.ITW:
            # TODO might be worth to check also other subdirectories
            self.csch = BaseTest()
            return
        raise UnknownJavaVersionException("Unknown JDK version!!!")
 def _check_ghosts_per_file(self, file):
     rpm_ghosts = self._get_actual_ghosts(file)
     default_masters = set(mexe.DefaultMock().get_default_masters())
     mexe.DefaultMock().postinstall_exception_checked("rpms/" + file)
     if rc.RuntimeConfig().getRpmList().is_system_jdk():
         actual_ghosts = set(
             mexe.DefaultMock().get_masters()).difference(default_masters)
     else:
         actual_ghosts = set()
     resolved_rpm_ghosts = set()
     resolved_actual_ghosts = {}
     for ghost in rpm_ghosts:
         newghost = ghost.replace("\n", "")
         resolved_rpm_ghosts.add(tu.resolve_link(newghost))
     for ghost in actual_ghosts:
         resolved_actual_ghosts[(tu.resolve_link(
             mexe.DefaultMock().get_target(ghost)))] = ghost
     for ghost in self._get_hardcoded_ghosts(file):
         resolved_actual_ghosts[ghost] = "hardcoded"
     if not tu.passed_or_failed(
             self,
             set(resolved_actual_ghosts.keys()) == resolved_rpm_ghosts,
             "Sets of ghost are not correct for " + file +
             ". Differences will follow."):
         missing_ghosts = set(
             resolved_actual_ghosts.keys()).difference(resolved_rpm_ghosts)
         extra_ghosts = resolved_rpm_ghosts.difference(
             set(resolved_actual_ghosts.keys()))
         missing_ghosts_masters = []
         for ghost in missing_ghosts:
             missing_ghosts_masters.append(ghost)
         if len(missing_ghosts) > 0:
             tu.passed_or_failed(
                 self, False,
                 "Masters not ghosted via %ghost declaration in specfile: "
                 + str(missing_ghosts_masters))
         if len(extra_ghosts) > 0:
             tu.passed_or_failed(
                 self, False,
                 "Ghosts that do not ghost any alternatives: " +
                 str(extra_ghosts))
Beispiel #10
0
    def setCSCH(self):
        BinariesTest.instance = self
        rpms = rc.RuntimeConfig().getRpmList()
        self.log("Checking binaries and slaves for " + rpms.getMajorPackage(), vc.Verbosity.TEST)

        if rpms.getVendor() == gc.OPENJDK or rpms.getVendor() == gc.OPENJ9:
            if rpms.getMajorVersionSimplified() == "6":
                if self.getCurrentArch() in (gc.getX86_64Arch() + gc.getPower64BeAchs()):
                    self.csch = tcc.OpenJdk6PowBeArchAndX86(BinariesTest.instance)
                    return
                else:
                    self.csch = tcc.OpenJdk6(BinariesTest.instance)
                    return

            elif rpms.getMajorVersionSimplified() == "7":
                self.csch = tcc.OpenJdk7(BinariesTest.instance)
                return

            elif rpms.getMajorVersionSimplified() == "8":
                if rpms.getVendor() == gc.OPENJ9:
                    self.csch = tcc.OpenJdk8(BinariesTest.instance)
                elif rpms.isFedora():
                    if int(rpms.getOsVersion()) > 26:
                        if self.getCurrentArch() in gc.getAarch64Arch() + gc.getPower64LeAchs() + gc.getPower64BeAchs():
                            self.csch = tcc.OpenJdk8NoExportsDebug(BinariesTest.instance)
                            return
                        elif self.getCurrentArch() in gc.getIx86archs() + gc.getX86_64Arch():
                            self.csch = tcc.OpenJdk8NoExportsDebugJFX(BinariesTest.instance)
                            return
                        else:
                            self.csch = tcc.OpenJdk8NoExports(BinariesTest.instance)
                    elif int(rpms.getOsVersion()) > 24:
                        if self.getCurrentArch() in gc.getAarch64Arch()+ gc.getPower64LeAchs() + gc.getPower64BeAchs():
                            self.csch = tcc.OpenJdk8Debug(BinariesTest.instance)
                            return
                        elif self.getCurrentArch() in gc.getIx86archs() + gc.getX86_64Arch():
                            self.csch = tcc.OpenJDK8JFX(BinariesTest.instance)
                            return
                        else:
                            self.csch = tcc.OpenJdk8(BinariesTest.instance)
                            return
                    else:
                        raise ex.UnknownJavaVersionException("Outdated version of fedora OpenJDK.")

                else:
                    if self.getCurrentArch() in gc.getIx86archs() + gc.getX86_64Arch() + gc.getAarch64Arch() + \
                            gc.getPower64Achs():
                        self.csch = tcc.OpenJdk8NoExportsDebugJFX(BinariesTest.instance)
                        return
                    else:
                        self.csch = tcc.OpenJdk8NoExports(BinariesTest.instance)
                        return

            elif rpms.getMajorVersionSimplified() == "9":
                if self.getCurrentArch() in gc.getArm32Achs():
                    self.csch = tcc.OpenJdk9(BinariesTest.instance)
                    return
                else:
                    self.csch = tcc.OpenJdk9Debug(BinariesTest.instance)
                    return

            elif rpms.getMajorVersionSimplified() == "10":
                if self.getCurrentArch() in gc.getArm32Achs():
                    self.csch = tcc.OpenJdk10(BinariesTest.instance)
                    return
                elif self.getCurrentArch() in gc.getX86_64Arch():
                    self.csch = tcc.OpenJdk10x64(BinariesTest.instance)
                    return
                else:
                    self.csch = tcc.OpenJdk10Debug(BinariesTest.instance)
                    return

            elif rpms.getMajorVersionSimplified() == "11":
                if self.getCurrentArch() in gc.getArm32Achs() or rpms.getVendor() == gc.OPENJ9:
                    self.csch = tcc.OpenJdk11(BinariesTest.instance)
                    return
                elif self.getCurrentArch() in gc.getX86_64Arch() + gc.getAarch64Arch():
                    self.csch = tcc.OpenJdk11x64(BinariesTest.instance)
                    return
                elif self.getCurrentArch() in gc.getS390xArch():
                    self.csch = tcc.OpenJdk11NoJhsdb(BinariesTest.instance)
                    return
                else:
                    if rpms.isRhel() and self.getCurrentArch() in gc.getS390Arch() + gc.getPpc32Arch():
                        self.csch = tcc.OpenJdk11NoDebugNoJhsdb(BinariesTest.instance)
                    else:
                        self.csch = tcc.OpenJdk11Debug(BinariesTest.instance)
                    return
            elif int(rpms.getMajorVersionSimplified()) >= 12:
                if self.getCurrentArch() in gc.getArm32Achs():
                    self.csch = tcc.OpenJdkLatest(BinariesTest.instance)
                    return
                elif self.getCurrentArch() in gc.getX86_64Arch() + gc.getAarch64Arch():
                    self.csch = tcc.OpenJdkLatestx64(BinariesTest.instance)
                    return
                elif self.getCurrentArch() in gc.getS390xArch():
                    self.csch = tcc.OpenJdkLatestNoJhsdb(BinariesTest.instance)
                    return
                else:
                    if rpms.isRhel() and self.getCurrentArch() in gc.getS390Arch() + gc.getPpc32Arch():
                        self.csch = tcc.OpenJdkLatestNoDebugNoJhsdb(BinariesTest.instance)
                    else:
                        self.csch = tcc.OpenJdkLatestDebug(BinariesTest.instance)
                    return
            else:
                raise ex.UnknownJavaVersionException("Unknown OpenJDK version.")

        elif rpms.getVendor() == gc.ITW:
                self.csch = tcc.Itw(BinariesTest.instance)
                return

        elif rpms.getVendor() == gc.IBM:
            if rpms.getMajorVersionSimplified() == "7":
                if self.getCurrentArch() in (gc.getPpc32Arch() + gc.getIx86archs()):
                    self.csch = tcc.IbmWithPluginSubpackage(BinariesTest.instance)
                    return

                elif self.getCurrentArch() in gc.getX86_64Arch():
                    self.csch = tcc.IbmArchMasterPlugin(BinariesTest.instance)
                    return

                elif self.getCurrentArch() in gc.getS390xArch() + gc.getS390Arch():
                    self.csch = tcc.Ibm390Architectures(BinariesTest.instance)
                    return

                else:
                    self.csch = tcc.Ibm(BinariesTest.instance)
                    return

            elif rpms.getMajorVersionSimplified() == "8":
                if rpms.getOsVersionMajor() == 7:
                    if self.getCurrentArch() in (
                                gc.getX86_64Arch() + gc.getPower64BeAchs() + gc.getIx86archs() + gc.getPpc32Arch()):
                        self.csch = tcc.IbmArchMasterPlugin(BinariesTest.instance)
                        return

                    elif self.getCurrentArch() in gc.getS390xArch() + gc.getS390Arch():
                        self.csch = tcc.Ibm390Architectures(BinariesTest.instance)
                        return

                    else:
                        self.csch = tcc.Ibm(BinariesTest.instance)
                        return
                elif rpms.getOsVersionMajor() == 8:
                    if self.getCurrentArch() in gc.getS390xArch() + gc.getS390Arch():
                        self.csch = tcc.Ibm8Rhel8S390X(BinariesTest.instance)
                        return
                    self.csch = tcc.Ibm8Rhel8(BinariesTest.instance)
                    return
            else:
                raise ex.UnknownJavaVersionException("Unknown IBM java version.")

        elif rpms.getVendor() == gc.ORACLE or rpms.getVendor() == gc.SUN:
            if rpms.getMajorVersionSimplified() == "6":
                if self.getCurrentArch() in gc.getIx86archs():
                    self.csch = tcc.OracleNoArchPlugin(BinariesTest.instance)
                    return

                else:
                    self.csch = tcc.Oracle6ArchPlugin(BinariesTest.instance)
                    return
            elif rpms.getMajorVersionSimplified() == "7":
                self.csch = tcc.Oracle7(BinariesTest.instance)
                return
            elif rpms.getMajorVersionSimplified() == "8":
                self.csch = tcc.Oracle8(BinariesTest.instance)
                return
            else:
                raise ex.UnknownJavaVersionException("Unknown Oracle java version")
        else:
            raise ex.UnknownJavaVersionException("Unknown platform, java was not identified.")
Beispiel #11
0
    def setCSCH(self):
        ManpageTests.instance = self
        rpms = rc.RuntimeConfig().getRpmList()
        self.log("Checking man pages for " + rpms.getMajorPackage(), vc.Verbosity.TEST)

        if rpms.getVendor() == gc.OPENJDK or rpms.getVendor() == gc.OPENJ9:
            if rpms.getMajorVersionSimplified() == "6":
                self.csch = OpenJdk6()
                return

            elif rpms.getMajorVersionSimplified() == "7":
                self.csch = OpenJdk7()
                return

            elif rpms.getMajorVersionSimplified() == "8"\
                    or rpms.getMajorVersionSimplified() == "9":
                if self.getCurrentArch() in gc.getX86_64Arch() + gc.getIx86archs():
                    self.csch = OpenJdk8WithDebug()
                    return
                else:
                    self.csch = OpenJdk8()
                    return
            elif int(rpms.getMajorVersionSimplified()) == 10:
                if self.getCurrentArch() in gc.getArm32Achs():
                    self.csch = OpenJdk10()
                    return
                elif self.getCurrentArch() in gc.getX86_64Arch():
                    self.csch = OpenJdk10Debugx64()
                    return
                else:
                    self.csch = OpenJdk10Debug()
                    return
            elif int(rpms.getMajorVersionSimplified()) == 11:
                if self.getCurrentArch() in gc.getArm32Achs():
                    self.csch = OpenJdk11armv7hl()
                    return
                elif self.getCurrentArch() in gc.getX86_64Arch() + gc.getAarch64Arch():
                    self.csch = OpenJdk11Debugx64()
                    return
                else:
                    if rpms.isRhel() and self.getCurrentArch() in gc.getS390Arch() + gc.getPpc32Arch():
                        self.csch = OpenJdk11()
                    elif self.getCurrentArch() in gc.getS390xArch():
                        self.csch = OpenJdk11s390x()
                    else:
                        self.csch = OpenJdk11Debug()
                    return
            elif int(rpms.getMajorVersionSimplified()) >= 12:
                if self.getCurrentArch() in gc.getArm32Achs():
                    self.csch = OpenJdk12()
                    return
                elif self.getCurrentArch() in gc.getX86_64Arch() + gc.getAarch64Arch():
                    self.csch = OpenJdk12Debugx64()
                    return
                else:
                    if rpms.isRhel() and self.getCurrentArch() in gc.getS390Arch() + gc.getPpc32Arch():
                        self.csch = OpenJdk12()
                    elif self.getCurrentArch() in gc.getS390xArch() + gc.getPpc32Arch():
                        self.csch = OpenJdk12s390x()
                    else:
                        self.csch = OpenJdk12Debug()
                    return
            else:
                raise ex.UnknownJavaVersionException("Unknown java version.")

        elif rpms.getVendor() == gc.ITW:
            if self.getCurrentArch() in gc.getX86_64Arch() + gc.getPower64Achs() + \
                    gc.getAarch64Arch() + gc.getS390xArch():
                self.csch = Itw64Bit()
                return
            else:
                self.csch = ITW()
                return
        elif rpms.getVendor() == gc.SUN or rpms.getVendor() == gc.ORACLE:
            if rpms.getMajorVersionSimplified() == "6":
                self.csch = Oracle6()
                return
            elif rpms.getMajorVersionSimplified() == "7" or rpms.getMajorVersionSimplified() == "8":
                self.csch = Oracle()
                return
            else:
                raise ex.UnknownJavaVersionException("Unknown java version.")

        elif rpms.getVendor() == gc.IBM:
            self.csch = Ibm()
            return

        else:
            raise ex.UnknownJavaVersionException("Unknown platform, java was not identified.")
Beispiel #12
0
class ManpageTestMethods(cs.JdkConfiguration):

    """
    This test expects that binaries are equal to its slaves (checked in binaries_test). Only binaries are used as a
    source of expected manpages.

    This checks if all binaries have its manpages and if all the manpages have links.

    IBM java does not have any manpages, so the test is skipped.
    """
    def __init__(self):
        super().__init__()
        self.list_of_failed_tests = []
        self.missing_manpages = []
        self.checked_subpackages = []

    skipped = []
    rpms = rc.RuntimeConfig().getRpmList()

    def _remove_excludes(self, binaries):
        excludes = self._get_excludes()
        if len(excludes) == 0:
            return binaries
        for e in excludes:
            if e in binaries:
                binaries.remove(e)
        return binaries

    def binaries_without_manpages(self, binaries=None):
        manpages_list = self.missing_manpages
        subpackages_list = self.checked_subpackages
        if manpages_list.__len__() == 0 or subpackages_list.__len__() == 0:
            return binaries
        self._document("There are multiple binaries, that are missing manpages in " +
                       " and ".join(subpackages_list) + "subpackage: " + ", ".join(manpages_list))
        for item in manpages_list:
            for subpackage in subpackages_list:
                try:
                    binaries[subpackage].remove(item)
                except KeyError:
                    tu.passed_or_failed(self, False, subpackage + " is not present.")
                except ValueError:
                    tu.passed_or_failed(self, False, item + " is not present in manpages! This is unexpected behaviour.")

        return binaries

    def _get_extra_bins(self, plugin_bin_content):
        return []

    def iced_tea_web_check(self, manpages_with_postcript=None, manpages_without_postscript=None):
        return

    def _get_manpage_files_names(self, list_of_bins, usr_bin_content):
        return list_of_bins

    def _get_manpage_link_names(self, list_of_links):
        return list_of_links

    def _get_checked_masters(self):
        return []

    def _get_manpage_suffixes(self, subpackage):
        return [MANPAGE_SUFFIX, "-" + self.rpms.getMajorPackage() + MANPAGE_SUFFIX]

    def _get_subpackages(self):
        return []

    def _clean_up_binaries(self, binaries, master, usr_bin):
        return binaries

    def _get_arch(self):
        return gc.get_32b_arch_identifiers_in_scriptlets(ManpageTests.instance.getCurrentArch())

    def _clean_default_mpges(self, default_mans, all_mpgs):
        extracted_mpges = list(set(all_mpgs) - set(default_mans))
        return extracted_mpges

    def _clean_debug_subpackages(self, bins):
        return

    # wont be doc-ed, is already handled in binary test
    def _remove_java_rmi_cgi(self, binaries):
        if tc.JAVA_RMI_CGI in binaries:
            binaries.remove(tc.JAVA_RMI_CGI)
        return binaries

    def _get_target(self, master):
        return mexe.DefaultMock().get_target(master).strip(master)

    def _itw_plugin_bin_location(self):
        return "/usr/lib"

    def _get_excludes(self):
        return []

    def _clean_sdk_from_jre(self, bins, packages):
        ManpageTests.instance.log("Cleaning {} from JRE binaries "
                                  "(JRE bins do not have man pages in {}.)".format(SDK_BINARIES, tc.DEVEL),
                                  vc.Verbosity.TEST)

        devel_bins = []
        ManpageTests.instance.log("Original " + SDK_BINARIES + ": " + ", ".join(bins[tc.DEVEL]), vc.Verbosity.TEST)

        for b in bins[packages[1]]:
            if b not in bins[packages[0]]:
                devel_bins.append(b)
        self._clean_debug_subpackages(bins)
        ManpageTests.instance.log(SDK_BINARIES + " without JRE binaries: " + ", ".join(devel_bins), vc.Verbosity.TEST)
        bins[packages[1]] = devel_bins
        return bins

    def manpage_file_check(self, bins, subpackage=None, plugin_bin_content=None, manpages_without_postscript=None):
        """
        Each man page is a file, located in /usr/shared/man, it has a specified name bin-nvra.1.gz. It must be present
        for every binary in the given subpackages. JDK 10 has some of the pages missing, this is
        solved as exclude. Any exclude must be always documented in _document.
        """
        self._document("When rpm is installed, man page file exists for each binary "
                       "with {} suffix.".format(tu.replace_archs_with_general_arch(self._get_manpage_suffixes(tc.DEFAULT),
                                                self._get_arch())[FILE]))
        binaries = self._get_manpage_files_names(bins[subpackage], plugin_bin_content)
        manpage_files = manpages_without_postscript[subpackage]
        # now check that every binary has a man file
        for b in binaries:
            manpage = b + self._get_manpage_suffixes(subpackage)[FILE]
            tu.passed_or_failed(self, manpage in manpage_files, manpage + " man page file not in " + subpackage)
        return manpage_files

    def manpage_links_check(self, bins, subpackage=None, manpages_with_postscript=None, manpage_files=None):
        """
        Each man page has a link, that is located in /usr/shared/man/ and has a specific name bin.1.gz. This link
        points to alternatives. It must be present for every binary in given subpackages (except exludes).
        """
        self._document("Each man page slave has {} suffix.".format(self._get_manpage_suffixes(tc.DEFAULT)[LINK]))
        links = self._get_manpage_link_names(bins[subpackage])
        # now remove all files from man pages
        manpage_links = list(set(manpages_with_postscript[subpackage]) - set(manpage_files))

        for l in links:
            link = l + self._get_manpage_suffixes(subpackage)[LINK]
            tu.passed_or_failed(self, link in manpage_links, link + " man page link not in " + subpackage)

    def man_page_test(self, pkgs):
        self._document("Every binary must have a man page. If binary has a slave, then man page has also its slave."
                       " \n - Man pages are in {} directory.".format(tc.MAN_DIR))
        bins = {}
        manpages_without_postscript = {}
        manpages_with_postscript = {}

        mexe.DefaultMock().provideCleanUsefullRoot()
        default_mans = mexe.DefaultMock().execute_ls(tc.MAN_DIR)[0].split("\n")
        usr_bin_content = mexe.DefaultMock().execute_ls("/usr/bin")[0].split("\n")
        plugin_bin_content = mexe.DefaultMock().execute_ls(self._itw_plugin_bin_location())[0].split("\n")

        for pkg in pkgs:
            name = os.path.basename(pkg)
            _subpkg = tu.rename_default_subpkg(pkgsplit.get_subpackage_only(name))
            # expects binaries are only in devel/default/headless subpackage, is consistent with binaries test
            if _subpkg not in self._get_subpackages():
                continue

            # first check links
            if not mexe.DefaultMock().postinstall_exception_checked(pkg):
                self.skipped.append(_subpkg)
                continue
            masters = mexe.DefaultMock().get_masters()

            checked_masters = self._get_checked_masters()

            for m in masters:
                if m not in checked_masters:
                    continue
                tg = self._get_target(m)
                binaries = mexe.DefaultMock().execute_ls(tg)[0].split("\n")
                binaries = self._clean_up_binaries(binaries, m, usr_bin_content)
                binaries = self._remove_java_rmi_cgi(binaries)
                binaries = self._remove_excludes(binaries)
                try:
                    plugin_binaries = self._get_extra_bins(plugin_bin_content)
                except NotADirectoryError:
                    tu.passed_or_failed(self, False, "/usr/bin directory not found, this is unexpected "
                                                  "behaviour and the test will not be executed.")
                    return

                ManpageTests.instance.log("Binaries found for {}: ".format(tg) + ", ".join(binaries + plugin_binaries))
                bins[_subpkg] = copy.deepcopy(binaries + plugin_binaries)

            # check links
            manpages = self._clean_default_mpges(default_mans, mexe.DefaultMock().execute_ls(tc.MAN_DIR)[0].split("\n"))

            if len(manpages) != 0:
                manpages_with_postscript[_subpkg] = manpages
                ManpageTests.instance.log("Manpages found: " + ", ".join(manpages))
            else:
                ManpageTests.instance.log("Warning: {} subpackage does not contain any binaries".format(_subpkg))

            # then check files
            mexe.DefaultMock().importRpm(pkg)
            manpages_without_postscript[_subpkg] = self._clean_default_mpges(default_mans,
                                                                             mexe.DefaultMock().execute_ls(tc.MAN_DIR)[0]
                                                                             .split("\n"))
        try:
            bins = self._clean_sdk_from_jre(bins, self._get_subpackages())
            bins = self.binaries_without_manpages(bins)
        except KeyError as e:
            tu.passed_or_failed(self, False, "This type of failure usually means missing package in tested rpm set."
                                  " Text of the error: " + str(e))

        # then compare man files with binaries and man links with links
        for subpackage in bins.keys():
            manpage_files = self.manpage_file_check(bins, subpackage, plugin_bin_content, manpages_without_postscript)
            self.manpage_links_check(bins, subpackage, manpages_with_postscript, manpage_files)

        self.iced_tea_web_check(manpages_with_postscript, manpages_without_postscript)

        ManpageTests.instance.log("Failed tests summary: " + ", ".join(self.list_of_failed_tests), vc.Verbosity.ERROR)
        return self.passed, self.failed

        # only doc-used method, does not execute any tests whatsoever
    def manpages_file_debug_subpackages_doc(self, args):
        if tc.get_debug_suffixes():
            self._document(" For debug subpackages, man page file is suffixed "
                           "with {}.".format(tu.replace_archs_with_general_arch((self._get_manpage_suffixes(tc.get_debug_suffixes())),
                                                                             self._get_arch())[FILE]))
        return
Beispiel #13
0
class GetAllBinariesAndSlaves(btp.PathTest):
    rpms = rc.RuntimeConfig().getRpmList()

    def document_subpackages(self, args=None):
        self._document(
            "Binaries and slaves are present in following subpackages: " +
            ", ".join(self._get_subpackages_with_binaries()))

    def check_exports_slaves(self, args=None):
        jre_slaves = self._get_exports_slaves_jre()
        sdk_slaves = self._get_exports_slaves_sdk()
        jre_subpackages = self._get_jre_subpackage()
        sdk_subpackages = self._get_sdk_subpackage()
        self._document(" and ".join(jre_slaves + sdk_slaves) +
                       " are slaves, that point at export "
                       "directories")
        for jsubpkg in jre_subpackages:
            for jslave in jre_slaves:
                try:
                    self.installed_slaves[jsubpkg].remove(jslave)
                    tu.passed_or_failed(self, True, "")
                except ValueError:
                    tu.passed_or_failed(
                        self, False,
                        jslave + " export slave missing in " + jsubpkg)
                except KeyError:
                    tu.passed_or_failed(self, False,
                                        "No slaves in " + jsubpkg + " subpkg.")

        for ssubpkg in sdk_subpackages:
            for sslave in sdk_slaves:
                try:
                    self.installed_slaves[ssubpkg].remove(sslave)
                    tu.passed_or_failed(self, True, "")
                except ValueError:
                    tu.passed_or_failed(
                        self, False,
                        sslave + " export slave missing in " + ssubpkg)
                except KeyError:
                    tu.passed_or_failed(self, False,
                                        "No slaves in " + ssubpkg + "subpkg.")
        return

    def check_subdirectory_slaves(self, args=None):
        jre_slave = "jre"
        sdk_slave = "java_sdk"
        self._document(
            jre_slave + " and " + sdk_slave +
            " are slaves that point at directories in /usr/lib/jvm.")
        jre_subpackages = self._get_jre_subpackage()
        sdk_subpackages = self._get_sdk_subpackage()
        for jsubpkg in jre_subpackages:
            try:
                self.installed_slaves[jsubpkg].remove(jre_slave)
                tu.passed_or_failed(self, True, "")
            except (ValueError, KeyError) as e:
                tu.passed_or_failed(self, False,
                                    jre_slave + " slave missing in " + jsubpkg)
                self.binaries_test.log(str(e))
        for ssubpkg in sdk_subpackages:
            try:
                self.installed_slaves[ssubpkg].remove(sdk_slave)
                tu.passed_or_failed(self, True, "")
            except (ValueError, KeyError) as e:
                tu.passed_or_failed(self, False,
                                    sdk_slave + " slave missing in " + ssubpkg)
                self.binaries_test.log(str(e))
        return

    def get_slaves(self, _subpkg):
        checked_masters = self._get_checked_masters()
        self._document("Checking slaves for masters:"
                       " {}".format(" and ".join(
                           tu.replace_archs_with_general_arch(
                               checked_masters, self._get_arch()))))

        masters = mexe.DefaultMock().get_masters()
        clean_slaves = []
        for m in checked_masters:
            if m not in masters:
                continue
            try:
                slaves = mexe.DefaultMock().get_slaves(m)
            except mexc.MockExecutionException:
                self.binaries_test.log(
                    "No relevant slaves were present for " + _subpkg + ".",
                    vc.Verbosity.TEST)
                continue
            self.binaries_test.log(
                "Found slaves for {}: {}".format(_subpkg, str(slaves)),
                vc.Verbosity.TEST)

            if m in [tc.JAVA, tc.JAVAC]:
                clean_slaves.append(m)

            # skipping manpage slaves
            for slave in slaves:
                if not slave.endswith("1.gz"):
                    clean_slaves.append(slave)

        return clean_slaves

    def _get_all_binaries_and_slaves(self, pkgs):

        for pkg in pkgs:
            name = os.path.basename(pkg)
            _subpkg = tu.rename_default_subpkg(
                pkgsplit.get_subpackage_only(name))
            if _subpkg in tc.subpackages_without_alternatives(
            ) + tc.get_javadoc_dirs():
                self.binaries_test.log("Skipping binaries extraction for " +
                                       _subpkg)
                self.skipped.append(_subpkg)
                continue
            if not mexe.DefaultMock().postinstall_exception_checked(pkg):
                self.binaries_test.log(
                    "Failed to execute postinstall. Slaves will not be found for "
                    + _subpkg)
            binary_directory_path = self._get_binary_directory_path(name)
            binaries = mexe.DefaultMock().execute_ls(binary_directory_path)

            if binaries[1] != 0:
                self.binaries_test.log(
                    "Location {} does not exist, binaries test skipped "
                    "for ".format(binary_directory_path) + name,
                    vc.Verbosity.TEST)

                continue
            else:
                self.binaries_test.log(
                    "Binaries found at {}: {}".format(
                        binary_directory_path,
                        ", ".join(binaries[0].split("\n"))), vc.Verbosity.TEST)

            slaves = self.get_slaves(_subpkg)

            self.installed_slaves[_subpkg] = slaves
            self.installed_binaries[_subpkg] = binaries[0].split("\n")

        return self.installed_binaries, self.installed_slaves
Beispiel #14
0
 def __init__(self, this):
     super().__init__()
     self.rpms = rc.RuntimeConfig().getRpmList()
     self.this = this
 def __init__(self):
     super().__init__()
     self.list_of_failed_tests = []
     self.rpms = rc.RuntimeConfig().getRpmList()
Beispiel #16
0
    def setCSCH(self):
        PostinstallScriptTest.instance = self
        rpms = rc.RuntimeConfig().getRpmList()
        self.log("Checking post_script and master for " + rpms.getVendor(),
                 vc.Verbosity.TEST)

        if rpms.getVendor() == gc.OPENJDK or rpms.getVendor() == gc.OPENJ9:
            if rpms.getMajorVersionSimplified() == "6":
                self.csch = OpenJdk6()
                return
            elif rpms.getMajorVersionSimplified() == "7":
                self.csch = OpenJdk7()
                return
            elif rpms.getMajorVersionSimplified() == "8":
                if self.getCurrentArch() in gc.getIx86archs() + gc.getX86_64Arch() + \
                        gc.getPower64Achs() + gc.getAarch64Arch():
                    self.csch = OpenJdk8Intel()
                    return
                elif self.getCurrentArch(
                ) in gc.getS390xArch() + gc.getS390Arch() + gc.getArm32Achs(
                ) or self.getCurrentArch() == "armv7hl":
                    self.csch = OpenJdk8S390()
                    return
                else:
                    self.csch = OpenJdk8OtherArchs()
                    return
            elif rpms.getMajorVersionSimplified() in ["9", "10"]:
                if rpms.getOs() == gc.RHEL and rpms.getOsVersionMajor() == 7:
                    if self.getCurrentArch() in gc.getArm32Achs(
                    ) + gc.getPpc32Arch() + gc.getS390Arch():
                        self.csch = OpenJdk9Armvhl()
                        return
                    else:
                        self.csch = OpenJdk9OtherArchs()
                        return
                else:
                    if self.getCurrentArch() in gc.getArm32Achs():
                        self.csch = OpenJdk9Armvhl()
                        return
                    else:
                        self.csch = OpenJdk9OtherArchs()
                        return
            elif rpms.getMajorVersionSimplified() == "11":
                if self.getCurrentArch() in gc.getArm32Achs():
                    self.csch = OpenJdk11Armv7hl()
                    return
                if rpms.getOs() == gc.RHEL:
                    self.csch = OpenJdk11OtherArchesRhel()
                    return
                self.csch = OpenJdk11OtherArches()
                return
            elif int(rpms.getMajorVersionSimplified()) == 12:
                self.csch = OpenJdk12OtherArches()
                return
            elif int(rpms.getMajorVersionSimplified()) >= 13:
                if self.getCurrentArch() in gc.getArm32Achs():
                    self.csch = OpenJdk13arm7vhl()
                    return
                self.csch = OpenJdk13()
                return
            else:
                raise ex.UnknownJavaVersionException("Unknown JDK version.")

        elif rpms.getVendor() == gc.ITW:
            self.csch = IcedTeaWeb()
            return

        elif rpms.getVendor() == gc.IBM:
            if rpms.getOsVersionMajor() < 8:
                if rpms.getMajorVersionSimplified() == "7":
                    if self.getCurrentArch() in gc.getS390xArch() + gc.getS390Arch() + \
                            gc.getPower64LeAchs() + gc.getPower64BeAchs():
                        self.csch = Ibm7WithoutPlugin()
                        return
                    elif self.getCurrentArch() in gc.getX86_64Arch():
                        self.csch = Ibm7x86()
                        return
                    else:
                        self.csch = Ibm7()
                        return
                elif rpms.getMajorVersionSimplified() == "8":
                    if self.getCurrentArch() in gc.getS390xArch(
                    ) + gc.getS390Arch() + gc.getPower64LeAchs():
                        self.csch = Ibm8WithoutPlugin()
                        return
                    else:
                        self.csch = Ibm8()
                        return
                else:
                    raise ex.UnknownJavaVersionException(
                        "Unknown IBM java version.")
            else:
                if self.getCurrentArch() in gc.getS390xArch() + gc.getS390Arch(
                ) + gc.getPower64LeAchs():
                    self.csch = ProprietaryJavaRhel8s390x()
                    return
                self.csch = ProprietaryJavaRhel8()
                return

        elif rpms.getVendor() == gc.ORACLE or rpms.getVendor() == gc.SUN:
            if rpms.getMajorVersionSimplified() == "6":
                if self.getCurrentArch() in gc.getS390xArch(
                ) + gc.getX86_64Arch() + gc.getPower64BeAchs():
                    self.csch = Oracle6WithArch()
                    return
                else:
                    self.csch = Oracle6()
                    return
            elif rpms.getMajorVersionSimplified() == "7":
                self.csch = Oracle7()
                return

            elif rpms.getMajorVersionSimplified() == "8":
                if self.getCurrentArch() in gc.getX86_64Arch():
                    self.csch = Oracle7a8x86()
                    return
                else:
                    self.csch = Oracle8()
                    return
            else:
                raise ex.UnknownJavaVersionException(
                    "Unknown Oracle java version.")

        else:
            raise ex.UnknownJavaVersionException(
                "Unknown platform, java was not identified.")
    def setCSCH(self):
        SubdirectoryTest.instance = self
        rpms = rc.RuntimeConfig().getRpmList()
        self.log("Checking subdirectories for: " + rpms.getMajorPackage(), vc.Verbosity.TEST)
        if rpms.getVendor() == gc.OPENJDK or rpms.getVendor() == gc.OPENJ9:
            if rpms.getMajorVersionSimplified() == "6":
                if self.current_arch in (gc.getPower64BeAchs() + gc.getX86_64Arch()):
                    self.csch = OpenJdk6PowerBeArchAndX86()
                    return
                else:
                    self.csch = OpenJdk6()
                    return
            elif rpms.getMajorVersionSimplified() == "7":
                self.csch = OpenJdk7()
                return
            elif rpms.getMajorVersionSimplified() == "8":
                if self.getCurrentArch() in gc.getIx86archs() + gc.getX86_64Arch() + gc.getPower64LeAchs() \
                        + gc.getAarch64Arch() + gc.getPower64BeAchs():
                    self.csch = OpenJdk8Debug()
                    return
                else:
                    self.csch = OpenJdk7()
                    return
            elif int(rpms.getMajorVersionSimplified()) >= 9:
                if self.getCurrentArch() in gc.getIx86archs() + gc.getX86_64Arch() + gc.getPower64LeAchs() \
                        + gc.getAarch64Arch() + gc.getPower64BeAchs():
                    self.csch = OpenJdk9D()
                    return
                else:
                    self.csch = OpenJdk9()
                    return
            else:
                raise UnknownJavaVersionException("Unknown OpenJDK version.")
        elif rpms.getVendor() == gc.SUN:
            if self.getCurrentArch() in gc.getX86_64Arch():
                self.csch = OpenJdk6PowerBeArchAndX86()
                return
            else:
                self.csch = OpenJdk6()
                return
        elif rpms.getVendor() == gc.ORACLE:
            if rpms.getMajorVersionSimplified() == "7":
                self.csch = Oracle7()
                return
            elif rpms.getMajorVersionSimplified() == "8":
                self.csch = Oracle7()
                return
            else:
                raise UnknownJavaVersionException("Unknown Oracle java version.")
        elif rpms.getVendor() == gc.IBM:
            if rpms.getOsVersionMajor() < 8:
                if rpms.getMajorVersionSimplified() == "7":
                    self.csch = Ibm7()
                    return
                elif rpms.getMajorVersionSimplified() == "8":
                    self.csch = Ibm8()
                    return
                else:
                    raise UnknownJavaVersionException("Unknown IBM java version.")
            else:
                self.csch = Ibm8Rhel8()
                return

        elif rpms.getVendor() == gc.ITW:
            self.csch = ITW()
            return

        else:
            raise UnknownJavaVersionException("Unknown vendor, configuration specific check could not be set.")
 def setCSCH(self):
     SymlinkTest.instance = self
     rpms = rc.RuntimeConfig().getRpmList()
     self.log("Checking symlinks for: " + rpms.getMajorPackage(), vc.Verbosity.TEST)
     self.csch = BaseMethods()
     return
Beispiel #19
0
def identify_debug_suffixes():
    import config.runtime_config as conf
    rpms = conf.RuntimeConfig().getRpmList()
    return rpms.getDebugSuffixes()