Skip to content

Commit

Permalink
cpu_topology_test: Add test case to test cpu topology
Browse files Browse the repository at this point in the history
Signed-off-by: Qianqian Zhu <qizhu@redhat.com>
  • Loading branch information
vivianQizhu committed Jul 30, 2020
1 parent b9f1a51 commit 6d9bf2e
Show file tree
Hide file tree
Showing 2 changed files with 60 additions and 0 deletions.
12 changes: 12 additions & 0 deletions qemu/tests/cfg/cpu_topology_test.cfg
@@ -0,0 +1,12 @@
- cpu_topology_test:
no smp2
only Linux
type = cpu_topology_test
start_vm = no
check_sockets_cmd = 'cat /proc/cpuinfo | grep "physical id" | sort | uniq |wc -l '
check_cores_cmd = 'cat /proc/cpuinfo | grep "cpu cores" |uniq |cut -d ":" -f 2'
check_siblings_cmd = 'cat /proc/cpuinfo |grep siblings |uniq |cut -d ":" -f 2'
ppc64, ppc64le:
check_sockets_cmd = 'lscpu | grep "Socket(s)" | cut -d ":" -f 2'
check_cores_cmd = 'lscpu | grep "Core(s) per socket" | cut -d ":" -f 2'
check_threads_cmd = 'lscpu | grep "Thread(s) per core" | cut -d ":" -f 2'
48 changes: 48 additions & 0 deletions qemu/tests/cpu_topology_test.py
@@ -0,0 +1,48 @@
import random

from virttest import error_context
from virttest import env_process


@error_context.context_aware
def run(test, params, env):
"""
:param test: QEMU test object.
:param params: Dictionary with test parameters.
:param env: Dictionary with the test environment.
"""

def check(p_name, exp, check_cmd):
"""
Check the cpu property inside guest
:param p_name: Property name
:param exp: The expect value
:param check_cmd: The param to get check command
"""
res = session.cmd_output(params[check_cmd]).strip()
if int(res) != int(exp):
test.fail('The vcpu %s number inside guest is %s,'
' while it is set to %s' % (p_name, res, exp))

params['vcpu_cores'] = vcpu_cores = random.randint(1, 10)
vcpu_threads_list = [1, 2]
if params['machine_type'] == 'pseries':
vcpu_threads_list = [1, 2, 4, 8]
params['vcpu_sockets'] = vcpu_sockets = random.randint(1, 10)
vm_name = params['main_vm']
for vcpu_threads in vcpu_threads_list:
params['vcpu_threads'] = vcpu_threads
params['smp'] = params['vcpu_maxcpus'] = (vcpu_cores *
vcpu_threads * vcpu_sockets)
params['start_vm'] = 'yes'
env_process.preprocess_vm(test, params, env, vm_name)
vm = env.get_vm(vm_name)
session = vm.wait_for_login()
check('socket', vcpu_sockets, 'check_sockets_cmd')
check('core', vcpu_cores, 'check_cores_cmd')
if params.get('check_siblings_cmd'):
check('sibling', vcpu_threads * vcpu_cores, 'check_siblings_cmd')
if params.get('check_threads_cmd'):
check('thread', vcpu_threads, 'check_threads_cmd')
vm.destroy()

0 comments on commit 6d9bf2e

Please sign in to comment.