numa_opts.py 1.5 KB
Newer Older
1
import logging
2
from virttest.utils_misc import normalize_data_size
3

4 5 6 7

logger = logging.getLogger(__name__)
dbg = logger.debug

L
Lucas Meneghel Rodrigues 已提交
8

9
def run(test, params, env):
10 11 12 13 14 15 16 17 18
    """
    Simple test to check if NUMA options are being parsed properly

    This _does not_ test if NUMA information is being properly exposed to the
    guest.
    """

    dbg("starting numa_opts test...")

19
    vm = env.get_vm(params["main_vm"])
20 21 22 23 24 25 26

    numa = vm.monitors[0].info_numa()
    dbg("info numa reply: %r", numa)

    numa_nodes = params.get("numa_nodes")
    if numa_nodes:
        numa_nodes = int(params.get("numa_nodes"))
L
Lucas Meneghel Rodrigues 已提交
27
        if len(numa) != numa_nodes:
X
Xu Han 已提交
28
            test.fail(
L
Lucas Meneghel Rodrigues 已提交
29 30
                "Wrong number of numa nodes: %d. Expected: %d" %
                (len(numa), numa_nodes))
31

L
Lucas Meneghel Rodrigues 已提交
32
    for nodenr, node in enumerate(numa):
33 34 35 36 37 38 39 40 41 42 43
        mdev = params.get("numa_memdev_node%d" % (nodenr))
        if mdev:
            mdev = mdev.split('-')[1]
            size = float(normalize_data_size(params.get("size_%s" % mdev)))
        else:
            size = params.get_numeric("mem")
        if size != numa[nodenr][0]:
            test.fail("Wrong size of numa node %d: %d. Expected: %d" %
                      (nodenr, numa[nodenr][0], size))

        cpus = params.get("numa_cpus_node%d" % (nodenr))
44
        if cpus is not None:
45
            cpus = set([int(v) for v in cpus.split(",")])
L
Lucas Meneghel Rodrigues 已提交
46
            if cpus != numa[nodenr][1]:
X
Xu Han 已提交
47
                test.fail(
L
Lucas Meneghel Rodrigues 已提交
48 49
                    "Wrong CPU set on numa node %d: %s. Expected: %s" %
                    (nodenr, numa[nodenr][1], cpus))