All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Burakov, Anatoly" <anatoly.burakov@intel.com>
To: David Marchand <david.marchand@redhat.com>, dev@dpdk.org
Cc: thomas@monjalon.net, aconole@redhat.com
Subject: Re: [dpdk-dev] [PATCH] test: load tests symbols from binary at init
Date: Mon, 29 Apr 2019 15:41:47 +0100	[thread overview]
Message-ID: <50d1a87f-98fb-2ad5-3da0-265d118564fd@intel.com> (raw)
In-Reply-To: <1556548116-18458-1-git-send-email-david.marchand@redhat.com>

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.marchand@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.burakov@intel.com>

-- 
Thanks,
Anatoly

  reply	other threads:[~2019-04-29 14:41 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-04-29 14:28 [dpdk-dev] [PATCH] test: load tests symbols from binary at init David Marchand
2019-04-29 14:41 ` Burakov, Anatoly [this message]
2019-05-04 21:04   ` Thomas Monjalon
2019-05-03 17:54 ` Aaron Conole

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=50d1a87f-98fb-2ad5-3da0-265d118564fd@intel.com \
    --to=anatoly.burakov@intel.com \
    --cc=aconole@redhat.com \
    --cc=david.marchand@redhat.com \
    --cc=dev@dpdk.org \
    --cc=thomas@monjalon.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.