64 lines
1.6 KiB
Python
64 lines
1.6 KiB
Python
#
|
|
# Test script for issue #1439
|
|
#
|
|
|
|
import os
|
|
import sys
|
|
import subprocess
|
|
|
|
def get_command_result(cmd):
|
|
results = subprocess.Popen(
|
|
cmd, stdout=subprocess.PIPE,
|
|
shell=True).stdout.readlines()
|
|
return [str(x).rstrip("\n") for x in results]
|
|
|
|
def enumerate_cpu(cpu_list):
|
|
allcpus = []
|
|
for ranged_cpu in cpu_list.split(','):
|
|
try:
|
|
cpu_begin, cpu_end = ranged_cpu.split('-')
|
|
except ValueError:
|
|
cpu_begin = cpu_end = ranged_cpu
|
|
for i in range(int(cpu_begin), int(cpu_end) + 1):
|
|
allcpus.append(i)
|
|
allcpus.sort()
|
|
return allcpus
|
|
|
|
def get_online_cpu():
|
|
online_file = open('/sys/devices/system/cpu/online', 'r')
|
|
return online_file.readlines()[0].strip()
|
|
|
|
def get_cpuinfo_processors():
|
|
processors = []
|
|
cpuinfo_file = open('/proc/cpuinfo', 'r')
|
|
for line in cpuinfo_file.readlines():
|
|
if line.startswith('processor'):
|
|
processor = int(line.strip().split()[-1])
|
|
processors.append(processor)
|
|
return processors
|
|
|
|
def main():
|
|
onlines = enumerate_cpu(get_online_cpu())
|
|
processors = get_cpuinfo_processors()
|
|
|
|
print '# of online cpus:', len(onlines)
|
|
print '# of cpuinfo processors:', len(processors)
|
|
if len(onlines) != len(processors):
|
|
print 'ERROR: # of processors is not equal to # of cpus'
|
|
print 'FAIL'
|
|
exit()
|
|
|
|
i = 0
|
|
for cpu in processors:
|
|
print i, 'processor:', cpu
|
|
if i != cpu:
|
|
print 'ERROR: processor number is not ordered'
|
|
print 'FAIL'
|
|
exit()
|
|
i = i + 1
|
|
|
|
print 'SUCCESS'
|
|
|
|
if __name__ == '__main__':
|
|
main()
|