From c6ad35c468451466720009b374c9b19c43b9f7ae Mon Sep 17 00:00:00 2001 From: Herakliusz Lipiec Date: Wed, 12 Jun 2019 15:46:47 +0100 Subject: [PATCH] test: fix autotest crash On some systems when dpdk test is executed with make test command autotest_runner crashes in first_cpu_on_node. This happens when list of available cpus contains something that is not a cpu as first element. Fixed by removing all non-cpu values from list of available cpus. Bugzilla ID: 253 Fixes: 22dcd9a4d90f ("test: parallelize unit tests") Cc: stable@dpdk.org Signed-off-by: Herakliusz Lipiec Reviewed-by: Anatoly Burakov --- app/test/autotest_runner.py | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/app/test/autotest_runner.py b/app/test/autotest_runner.py index b72716e1e1..95e74c760d 100644 --- a/app/test/autotest_runner.py +++ b/app/test/autotest_runner.py @@ -43,9 +43,16 @@ def get_numa_nodes(): # find first (or any, really) CPU on a particular node, will be used to spread # processes around NUMA nodes to avoid exhausting memory on particular node def first_cpu_on_node(node_nr): - cpu_path = glob.glob("/sys/devices/system/node/node%d/cpu*" % node_nr)[0] - cpu_name = os.path.basename(cpu_path) - m = re.match(r"cpu(\d+)", cpu_name) + cpu_path = glob.glob("/sys/devices/system/node/node%d/cpu*" % node_nr) + r = re.compile(r"cpu(\d+)") + cpu_name = filter(None, + map(r.match, + map(os.path.basename, cpu_path) + ) + ) + # for compatibility between python 3 and 2 we need to make interable out + # of filter return as it returns list in python 2 and a generator in 3 + m = next(iter(cpu_name)) return int(m.group(1)) -- 2.20.1