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 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')
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')