On 29-Apr-19 3:28 PM, David Marchand wrote:
Rather than call nm on the test application binary for each test to
consider, call it once at the object init.
Signed-off-by: David Marchand <david.march...@redhat.com>
---
With a little patch of mine, before:
# make O=master test
/root/dpdk/master/app/test -c f -n 4
Filtering tests took 24s <===
Running tests with 4 workers
Test name Test result Test Total
================================================================================
Skipped autotests:
devargs: Skipped [Not compiled] [00m 00s]
cryptodev_sw_mrvl: Skipped [Not compiled] [00m 00s]
...
After:
# make O=master test
/root/dpdk/master/app/test -c f -n 4
Filtering tests took 0s <===
Running tests with 4 workers
Test name Test result Test Total
================================================================================
Skipped autotests:
devargs: Skipped [Not compiled] [00m 00s]
cryptodev_sw_mrvl: Skipped [Not compiled] [00m 00s]
...
---
app/test/autotest_runner.py | 29 ++++++++++++++---------------
1 file changed, 14 insertions(+), 15 deletions(-)
diff --git a/app/test/autotest_runner.py b/app/test/autotest_runner.py
index 36941a4..b72716e 100644
--- a/app/test/autotest_runner.py
+++ b/app/test/autotest_runner.py
@@ -192,7 +192,6 @@ class AutotestRunner:
def __init__(self, cmdline, target, blacklist, whitelist, n_processes):
self.cmdline = cmdline
self.target = target
- self.binary = cmdline.split()[0]
self.blacklist = blacklist
self.whitelist = whitelist
self.skipped = []
@@ -201,6 +200,16 @@ def __init__(self, cmdline, target, blacklist, whitelist,
n_processes):
self.n_processes = n_processes
self.active_processes = 0
+ # parse the binary for available test commands
+ binary = cmdline.split()[0]
+ stripped = 'not stripped' not in \
+ subprocess.check_output(['file', binary])
+ if not stripped:
+ symbols = subprocess.check_output(['nm', binary]).decode('utf-8')
+ self.avail_cmds = re.findall('test_register_(\w+)', symbols)
+ else:
+ self.avail_cmds = None
+
# log file filename
logfile = "%s.log" % target
csvfile = "%s.csv" % target
@@ -275,20 +284,10 @@ def __filter_test(self, test):
return False
# if test wasn't compiled in, remove it as well
-
- # parse the binary for available test commands
- stripped = 'not stripped' not in \
- subprocess.check_output(['file', self.binary])
- if not stripped:
- symbols = subprocess.check_output(['nm',
- self.binary]).decode('utf-8')
- avail_cmds = re.findall('test_register_(\w+)', symbols)
-
- if test_cmd not in avail_cmds:
- # notify user
- result = 0, "Skipped [Not compiled]", test_id, 0, "", None
- self.skipped.append(tuple(result))
- return False
+ if self.avail_cmds and test_cmd not in self.avail_cmds:
+ result = 0, "Skipped [Not compiled]", test_id, 0, "", None
+ self.skipped.append(tuple(result))
+ return False
return True
LGTM
Acked-by: Anatoly Burakov <anatoly.bura...@intel.com>
--
Thanks,
Anatoly