def setUp(self):
        # Check for root permission
        if os.geteuid() != 0:
            exit("You need to have root privileges to run this script."
                 "\nPlease try again, using 'sudo'. Exiting.")
        # Check for basic utilities
        sm = SoftwareManager()
        detected_distro = distro.detect()
        if not sm.check_installed("gcc") and not sm.install("gcc"):
            self.error('Gcc is needed for the test to be run')
        if not sm.check_installed("make") and not sm.install("make"):
            self.error('make is needed for the test to be run')
        if detected_distro.name == "SuSE":
            if not sm.check_installed("git-core") and not sm.install("git-"
                                                                     "core"):
                self.error('git is needed for the test to be run')
        else:
            if not sm.check_installed("git") and not sm.install("git"):
                self.error('git is needed for the test to be run')

        kernel.check_version("2.6.16")
        if detected_distro.name == "Ubuntu":
            op = glob.glob("/usr/lib/*/libpthread.a")
        else:
            op = glob.glob("/usr/lib*/libpthread.a")

        if not op:
            self.error("libpthread.a is required!!!"
                       "\nTry installing glibc-static")

        # Get arguments:
        self.hugetlbfs_dir = self.params.get('hugetlbfs_dir', default=None)
        pages_requested = self.params.get('pages_requested',
                                          default=20)

        # Check hugepages:
        pages_available = 0
        if os.path.exists('/proc/sys/vm/nr_hugepages'):
            Hugepages_support = process.system_output('cat /proc/meminfo',
                                                      verbose=False,
                                                      shell=True)
            if 'HugePages_' not in Hugepages_support:
                self.error("No Hugepages Configured")
            memory.set_num_huge_pages(pages_requested)
            pages_available = memory.get_num_huge_pages()
        else:
            self.error("Kernel does not support hugepages")

        # Check no of hugepages :
        if pages_available < pages_requested:
            self.error('%d pages available, < %d pages requested'
                       % pages_available, pages_requested)

        # Check if hugetlbfs is mounted
        cmd_result = process.run('grep hugetlbfs /proc/mounts', verbose=False)
        if not cmd_result:
            if not self.hugetlbfs_dir:
                self.hugetlbfs_dir = os.path.join(self.tmpdir, 'hugetlbfs')
                os.makedirs(self.hugetlbfs_dir)
            process.system('mount -t hugetlbfs none %s' % self.hugetlbfs_dir)

        data_dir = os.path.abspath(self.datadir)
        git.get_repo('https://github.com/libhugetlbfs/libhugetlbfs.git',
                     destination_dir=self.srcdir)
        os.chdir(self.srcdir)
        patch = self.params.get('patch', default='elflink.patch')
        process.run('patch -p1 < %s' % data_dir + '/' + patch, shell=True)
        build.make(self.srcdir, extra_args='BUILDTYPE=NATIVEONLY')
Beispiel #2
0
    def setUp(self):
        # Check for root permission
        if os.geteuid() != 0:
            exit("You need to have root privileges to run this script."
                 "\nPlease try again, using 'sudo'. Exiting.")
        # Check for basic utilities
        sm = SoftwareManager()
        detected_distro = distro.detect()
        deps = ['gcc', 'make', 'patch']

        if detected_distro.name == "Ubuntu":
            deps += ['libpthread-stubs0-dev', 'git']
        elif detected_distro.name == "SuSE":
            deps += ['glibc-devel-static', 'git-core']
        else:
            deps += ['glibc-static', 'git']

        for package in deps:
            if not sm.check_installed(package) and not sm.install(package):
                self.cancel(' %s is needed for the test to be run' % package)

        kernel.check_version("2.6.16")

        if detected_distro.name == "Ubuntu":
            op = glob.glob("/usr/lib/*/libpthread.a")
        else:
            op = glob.glob("/usr/lib*/libpthread.a")

        if not op:
            self.error("libpthread.a is required!!!"
                       "\nTry installing glibc-static")

        # Get arguments:
        self.hugetlbfs_dir = self.params.get('hugetlbfs_dir', default=None)
        pages_requested = self.params.get('pages_requested', default=20)

        # Check hugepages:
        pages_available = 0
        if os.path.exists('/proc/sys/vm/nr_hugepages'):
            Hugepages_support = process.system_output('cat /proc/meminfo',
                                                      verbose=False,
                                                      shell=True)
            if 'HugePages_' not in Hugepages_support:
                self.error("No Hugepages Configured")
            memory.set_num_huge_pages(pages_requested)
            pages_available = memory.get_num_huge_pages()
        else:
            self.error("Kernel does not support hugepages")

        # Check no of hugepages :
        if pages_available < pages_requested:
            self.error('%d pages available, < %d pages requested' %
                       (pages_available, pages_requested))

        # Check if hugetlbfs is mounted
        cmd_result = process.run('grep hugetlbfs /proc/mounts', verbose=False)
        if not cmd_result:
            if not self.hugetlbfs_dir:
                self.hugetlbfs_dir = os.path.join(self.tmpdir, 'hugetlbfs')
                os.makedirs(self.hugetlbfs_dir)
            process.system('mount -t hugetlbfs none %s' % self.hugetlbfs_dir)

        git.get_repo('https://github.com/libhugetlbfs/libhugetlbfs.git',
                     destination_dir=self.workdir)
        os.chdir(self.workdir)
        patch = self.params.get('patch', default='elflink.patch')
        process.run('patch -p1 < %s' % self.get_data(patch), shell=True)

        # FIXME: "redhat" as the distro name for RHEL is deprecated
        # on Avocado versions >= 50.0.  This is a temporary compatibility
        # enabler for older runners, but should be removed soon
        if detected_distro.name in ["rhel", "fedora", "redhat", "centos"]:
            falloc_patch = 'patch -p1 < %s ' % self.get_data('falloc.patch')
            process.run(falloc_patch, shell=True)

        build.make(self.workdir, extra_args='BUILDTYPE=NATIVEONLY')
    def setUp(self):

        # Check for basic utilities
        smm = SoftwareManager()
        detected_distro = distro.detect()
        deps = ['gcc', 'make', 'patch']
        if detected_distro.name in ["Ubuntu", 'debian']:
            deps += ['libpthread-stubs0-dev', 'git']
        elif detected_distro.name == "SuSE":
            deps += ['glibc-devel-static', 'git-core']
        else:
            deps += ['glibc-static', 'git']

        for package in deps:
            if not smm.check_installed(package) and not smm.install(package):
                self.cancel(' %s is needed for the test to be run' % package)

        kernel.check_version("2.6.16")

        if detected_distro.name in ["Ubuntu", 'debian']:
            out = glob.glob("/usr/lib/*/libpthread.a")
        else:
            out = glob.glob("/usr/lib*/libpthread.a")

        if not out:
            self.cancel("libpthread.a is required!!!"
                        "\nTry installing glibc-static")

        page_sizes = memory.get_supported_huge_pages_size()
        self.page_sizes = [str(each // 1024) for each in page_sizes]

        # Get arguments:
        pages_requested = self.params.get('pages_requested', default=20)

        # Check hugepages:
        pages_available = 0
        if os.path.exists('/proc/sys/vm/nr_hugepages'):

            hugepages_support = genio.read_file("/proc/meminfo").rstrip("\n")

            if 'HugePages_' not in hugepages_support:
                self.cancel("No Hugepages Configured")
        else:
            self.cancel("Kernel does not support hugepages")

        self.configured_page_sizes = []
        self.hugetlbfs_dir = {}

        for hp_size in self.page_sizes:
            try:
                genio.write_file(
                    '/sys/kernel/mm/hugepages/hugepages-%skB/nr_hugepages' %
                    str(int(hp_size) * 1024), str(pages_requested))
            except OSError:
                if (int(hp_size) * 1024) == 16777216:
                    self.log.warn('Running 16GB hugepages')
                else:
                    self.cancel('Writing to hugepage file failed')
            pages_available = int(
                genio.read_file('/sys/kernel/mm/hugepages/huge'
                                'pages-%skB/nr_hugepages' %
                                str(int(hp_size) * 1024).strip()))
            if pages_available < pages_requested:
                self.log.warn('%d pages available, < %d pages '
                              'requested', pages_available, pages_requested)

            if pages_available:
                self.hugetlbfs_dir.update({
                    hp_size:
                    tempfile.mkdtemp(dir=self.teststmpdir,
                                     prefix='avocado_' + __name__)
                })
                if process.system(
                        'mount -t hugetlbfs -o pagesize=%sM none %s' %
                    (hp_size, self.hugetlbfs_dir[hp_size]),
                        sudo=True,
                        ignore_status=True):
                    self.cancel("hugetlbfs mount failed")
                self.configured_page_sizes.append(hp_size)

        if not self.configured_page_sizes:
            self.cancel("No hugepage size configured")

        git.get_repo('https://github.com/libhugetlbfs/libhugetlbfs.git',
                     destination_dir=self.workdir)
        os.chdir(self.workdir)
        patch = self.params.get('patch', default='elflink.patch')
        process.run('patch -p1 < %s' % self.get_data(patch), shell=True)

        build.make(self.workdir, extra_args='BUILDTYPE=NATIVEONLY')
    def setUp(self):
        # Check for root permission
        if os.geteuid() != 0:
            exit("You need to have root privileges to run this script."
                 "\nPlease try again, using 'sudo'. Exiting.")
        # Check for basic utilities
        sm = SoftwareManager()
        detected_distro = distro.detect()
        if not sm.check_installed("gcc") and not sm.install("gcc"):
            self.error('Gcc is needed for the test to be run')
        if not sm.check_installed("make") and not sm.install("make"):
            self.error('make is needed for the test to be run')
        if detected_distro.name == "SuSE":
            if not sm.check_installed("git-core") and not sm.install("git-"
                                                                     "core"):
                self.error('git is needed for the test to be run')
        else:
            if not sm.check_installed("git") and not sm.install("git"):
                self.error('git is needed for the test to be run')

        kernel.check_version("2.6.16")
        if detected_distro.name == "Ubuntu":
            op = glob.glob("/usr/lib/*/libpthread.a")
        else:
            op = glob.glob("/usr/lib*/libpthread.a")

        if not op:
            self.error("libpthread.a is required!!!"
                       "\nTry installing glibc-static")

        # Get arguments:
        self.hugetlbfs_dir = self.params.get('hugetlbfs_dir', default=None)
        pages_requested = self.params.get('pages_requested', default=20)

        # Check hugepages:
        pages_available = 0
        if os.path.exists('/proc/sys/vm/nr_hugepages'):
            Hugepages_support = process.system_output('cat /proc/meminfo',
                                                      verbose=False,
                                                      shell=True)
            if 'HugePages_' not in Hugepages_support:
                self.error("No Hugepages Configured")
            memory.set_num_huge_pages(pages_requested)
            pages_available = memory.get_num_huge_pages()
        else:
            self.error("Kernel does not support hugepages")

        # Check no of hugepages :
        if pages_available < pages_requested:
            self.error(
                '%d pages available, < %d pages requested' % pages_available,
                pages_requested)

        # Check if hugetlbfs is mounted
        cmd_result = process.run('grep hugetlbfs /proc/mounts', verbose=False)
        if not cmd_result:
            if not self.hugetlbfs_dir:
                self.hugetlbfs_dir = os.path.join(self.tmpdir, 'hugetlbfs')
                os.makedirs(self.hugetlbfs_dir)
            process.system('mount -t hugetlbfs none %s' % self.hugetlbfs_dir)

        data_dir = os.path.abspath(self.datadir)
        git.get_repo('https://github.com/libhugetlbfs/libhugetlbfs.git',
                     destination_dir=self.srcdir)
        os.chdir(self.srcdir)
        patch = self.params.get('patch', default='elflink.patch')
        process.run('patch -p1 < %s' % data_dir + '/' + patch, shell=True)
        build.make(self.srcdir, extra_args='BUILDTYPE=NATIVEONLY')
    def setUp(self):

        # Check for basic utilities
        sm = SoftwareManager()
        detected_distro = distro.detect()
        deps = ['gcc', 'make', 'patch']

        if detected_distro.name == "Ubuntu":
            deps += ['libpthread-stubs0-dev', 'git']
        elif detected_distro.name == "SuSE":
            deps += ['glibc-devel-static', 'git-core']
        else:
            deps += ['glibc-static', 'git']

        for package in deps:
            if not sm.check_installed(package) and not sm.install(package):
                self.cancel(' %s is needed for the test to be run' % package)

        kernel.check_version("2.6.16")

        if detected_distro.name == "Ubuntu":
            op = glob.glob("/usr/lib/*/libpthread.a")
        else:
            op = glob.glob("/usr/lib*/libpthread.a")

        if not op:
            self.cancel("libpthread.a is required!!!"
                        "\nTry installing glibc-static")

        # Get arguments:
        self.hugetlbfs_dir = self.params.get('hugetlbfs_dir', default=None)
        pages_requested = self.params.get('pages_requested',
                                          default=20)

        # Check hugepages:
        pages_available = 0
        if os.path.exists('/proc/sys/vm/nr_hugepages'):

            Hugepages_support = genio.read_file("/proc/meminfo").rstrip("\n")

            if 'HugePages_' not in Hugepages_support:
                self.cancel("No Hugepages Configured")
            memory.set_num_huge_pages(pages_requested)
            pages_available = memory.get_num_huge_pages()
        else:
            self.cancel("Kernel does not support hugepages")

        # Check no of hugepages :
        if pages_available < pages_requested:
            self.cancel('%d pages available, < %d pages requested'
                        % (pages_available, pages_requested))

        # Check if hugetlbfs is mounted
        cmd_result = process.run(
            'grep hugetlbfs /proc/mounts', verbose=False, sudo=True)
        if not cmd_result:
            if not self.hugetlbfs_dir:
                self.hugetlbfs_dir = os.path.join(self.tmpdir, 'hugetlbfs')
                os.makedirs(self.hugetlbfs_dir)
            if process.system('mount -t hugetlbfs none %s' %
                              self.hugetlbfs_dir, sudo=True,
                              ignore_status=True):
                self.cancel("hugetlbfs mount failed")

        git.get_repo('https://github.com/libhugetlbfs/libhugetlbfs.git',
                     destination_dir=self.workdir)
        os.chdir(self.workdir)
        patch = self.params.get('patch', default='elflink.patch')
        process.run('patch -p1 < %s' % self.get_data(patch), shell=True)

        build.make(self.workdir, extra_args='BUILDTYPE=NATIVEONLY')
Beispiel #6
0
    def setUp(self):

        # Check for basic utilities
        sm = SoftwareManager()
        detected_distro = distro.detect()
        deps = ['gcc', 'make', 'patch']
        cpuinfo = genio.read_file("/proc/cpuinfo").strip()
        if detected_distro.name == "Ubuntu":
            deps += ['libpthread-stubs0-dev', 'git']
        elif detected_distro.name == "SuSE":
            deps += ['glibc-devel-static', 'git-core']
        else:
            deps += ['glibc-static', 'git']

        for package in deps:
            if not sm.check_installed(package) and not sm.install(package):
                self.cancel(' %s is needed for the test to be run' % package)

        kernel.check_version("2.6.16")

        if detected_distro.name == "Ubuntu":
            op = glob.glob("/usr/lib/*/libpthread.a")
        else:
            op = glob.glob("/usr/lib*/libpthread.a")

        if not op:
            self.cancel("libpthread.a is required!!!"
                        "\nTry installing glibc-static")

        self.page_sizes = ['16']
        if 'POWER9' in cpuinfo and 'PowerNV' in cpuinfo:
            self.page_sizes = ['2', '1024']

        # Get arguments:
        self.hugetlbfs_dir = self.params.get('hugetlbfs_dir', default=None)
        pages_requested = self.params.get('pages_requested', default=20)

        # Check hugepages:
        pages_available = 0
        if os.path.exists('/proc/sys/vm/nr_hugepages'):

            Hugepages_support = genio.read_file("/proc/meminfo").rstrip("\n")

            if 'HugePages_' not in Hugepages_support:
                self.cancel("No Hugepages Configured")
        else:
            self.cancel("Kernel does not support hugepages")

        if not self.hugetlbfs_dir:
            self.hugetlbfs_dir = os.path.join(self.teststmpdir, 'hugetlbfs')
            os.makedirs(self.hugetlbfs_dir)

        for hp_size in self.page_sizes:
            if process.system('mount -t hugetlbfs -o pagesize=%sM none %s' %
                              (hp_size, self.hugetlbfs_dir),
                              sudo=True,
                              ignore_status=True):
                self.cancel("hugetlbfs mount failed")
            genio.write_file(
                '/sys/kernel/mm/hugepages/hugepages-%skB/nr_hugepages' %
                str(int(hp_size) * 1024), str(pages_requested))
            pages_available = int(
                genio.read_file('/sys/kernel/mm/hugepages/huge'
                                'pages-%skB/nr_hugepages' %
                                str(int(hp_size) * 1024).strip()))
            if pages_available < pages_requested:
                self.cancel('%d pages available, < %d pages requested' %
                            (pages_available, pages_requested))

        git.get_repo('https://github.com/libhugetlbfs/libhugetlbfs.git',
                     destination_dir=self.workdir)
        os.chdir(self.workdir)
        patch = self.params.get('patch', default='elflink.patch')
        process.run('patch -p1 < %s' % self.get_data(patch), shell=True)

        build.make(self.workdir, extra_args='BUILDTYPE=NATIVEONLY')
    def setUp(self):
        # Check for root permission
        if os.geteuid() != 0:
            exit("You need to have root privileges to run this script."
                 "\nPlease try again, using 'sudo'. Exiting.")
        # Check for basic utilities
        sm = SoftwareManager()
        detected_distro = distro.detect()
        deps = ['gcc', 'make', 'patch']

        if detected_distro.name == "Ubuntu":
            deps += ['libpthread-stubs0-dev', 'git']
        elif detected_distro.name == "SuSE":
            deps += ['glibc-devel-static', 'git-core']
        else:
            deps += ['glibc-static', 'git']

        for package in deps:
            if not sm.check_installed(package) and not sm.install(package):
                self.cancel(' %s is needed for the test to be run' % package)

        kernel.check_version("2.6.16")

        if detected_distro.name == "Ubuntu":
            op = glob.glob("/usr/lib/*/libpthread.a")
        else:
            op = glob.glob("/usr/lib*/libpthread.a")

        if not op:
            self.error("libpthread.a is required!!!"
                       "\nTry installing glibc-static")

        # Get arguments:
        self.hugetlbfs_dir = self.params.get('hugetlbfs_dir', default=None)
        pages_requested = self.params.get('pages_requested',
                                          default=20)

        # Check hugepages:
        pages_available = 0
        if os.path.exists('/proc/sys/vm/nr_hugepages'):
            Hugepages_support = process.system_output('cat /proc/meminfo',
                                                      verbose=False,
                                                      shell=True)
            if 'HugePages_' not in Hugepages_support:
                self.error("No Hugepages Configured")
            memory.set_num_huge_pages(pages_requested)
            pages_available = memory.get_num_huge_pages()
        else:
            self.error("Kernel does not support hugepages")

        # Check no of hugepages :
        if pages_available < pages_requested:
            self.error('%d pages available, < %d pages requested'
                       % (pages_available, pages_requested))

        # Check if hugetlbfs is mounted
        cmd_result = process.run('grep hugetlbfs /proc/mounts', verbose=False)
        if not cmd_result:
            if not self.hugetlbfs_dir:
                self.hugetlbfs_dir = os.path.join(self.tmpdir, 'hugetlbfs')
                os.makedirs(self.hugetlbfs_dir)
            process.system('mount -t hugetlbfs none %s' % self.hugetlbfs_dir)

        data_dir = os.path.abspath(self.datadir)
        git.get_repo('https://github.com/libhugetlbfs/libhugetlbfs.git',
                     destination_dir=self.srcdir)
        os.chdir(self.srcdir)
        patch = self.params.get('patch', default='elflink.patch')
        process.run('patch -p1 < %s' % data_dir + '/' + patch, shell=True)

        # FIXME: "redhat" as the distro name for RHEL is deprecated
        # on Avocado versions >= 50.0.  This is a temporary compatibility
        # enabler for older runners, but should be removed soon
        if detected_distro.name in ["rhel", "fedora", "redhat"]:
            falloc_patch = 'patch -p1 < %s ' % (
                os.path.join(data_dir, 'falloc.patch'))
            process.run(falloc_patch, shell=True)

        build.make(self.srcdir, extra_args='BUILDTYPE=NATIVEONLY')