[PATCH] build-aux: increase tests timeout

Daniel P. Berrangé berrange at redhat.com
Mon Mar 1 11:43:53 UTC 2021


On Mon, Mar 01, 2021 at 03:34:00PM +0400, Roman Bogorodskiy wrote:
>   Daniel P. Berrangé wrote:
> 
> > On Sun, Feb 28, 2021 at 05:00:01PM +0400, Roman Bogorodskiy wrote:
> > >   Peter Krempa wrote:
> > > 
> > > > On Sun, Feb 28, 2021 at 08:24:58 +0400, Roman Bogorodskiy wrote:
> > > > > Meson default timeout for test() is 30 seconds. This may be not enough
> > > > > for some tests like sc_prohibit_nonreentrant or
> > > > > sc_libvirt_unmarked_diagnostics, so set it to 60 seconds.
> > > > 
> > > > Recently [1] we've established that we'll not be raising the timeout
> > > > arbitrarily to compensate for a possibly slow hardware unless it's a
> > > > widespread problem.
> > > > 
> > > > The tests you are complaining about are pretty fast on my system:
> > > > 
> > > > 203/334 libvirt:syntax-check / sc_prohibit_nonreentrant                          OK             0.23s
> > > > 315/334 libvirt:syntax-check / sc_unmarked_diagnostics                           OK             0.63s
> > > > 
> > > > On a laptop:
> > > > 204/335 libvirt:syntax-check / sc_prohibit_nonreentrant                          OK             0.44s
> > > > 316/335 libvirt:syntax-check / sc_unmarked_diagnostics                           OK             0.78s
> > > > 
> > > > And on a random sample from our (linux) CI runs:
> > > > 53/158 libvirt:syntax-check / sc_libvirt_unmarked_diagnostics  OK      0.6185753345489502 s
> > > > 27/158 libvirt:syntax-check / sc_prohibit_nonreentrant  OK      0.2680661678314209 s 
> > > > 
> > > > Given the almost 2 orders of magnitude difference, I think something is
> > > > broken on your system and should be investigated first before attempting
> > > > to increase the timeout.
> > > 
> > > I *think* the reason it's slow on my system is because BSD grep is
> > > slower than GNU grep.
> > > 
> > > I don't have a solid evidence of that though, except that 10 years old
> > > post [1] and a basic test:
> > > 
> > > $ time gmake  -C /usr/home/novel/code/libvirt/build/build-aux sc_prohibit_nonreentrant
> > > gmake: Entering directory '/usr/home/novel/code/libvirt/build/build-aux'
> > > prohibit_nonreentrant
> > > gmake: Leaving directory '/usr/home/novel/code/libvirt/build/build-aux'
> > > gmake -C /usr/home/novel/code/libvirt/build/build-aux sc_prohibit_nonreentran  48,21s user 0,06s system 100% cpu 48,199 total
> > > $ time PATH="/usr/local/bin:$PATH" gmake  -C /usr/home/novel/code/libvirt/build/build-aux sc_prohibit_nonreentrant
> > > gmake: Entering directory '/usr/home/novel/code/libvirt/build/build-aux'
> > > prohibit_nonreentrant
> > > gmake: Leaving directory '/usr/home/novel/code/libvirt/build/build-aux'
> > > PATH="/usr/local/bin:$PATH" gmake -C  sc_prohibit_nonreentrant  0,23s user 0,02s system 119% cpu 0,215 total
> > > $ 
> > > 
> > > Here, the PATH override is used because on FreeBSD the original BSD grep
> > > is installed in /usr/bin/grep, and GNU grep is installed in
> > > /usr/local/bin/grep from the gnugrep package (or textproc/gnugrep port).
> > 
> > We already special case sed for BSD in syntax-check.mk, so how about we
> > make it also try the GNU grep explicitly too.
> 
> Yes, I tried that and it works.
> 
> What I don't quite like about this approach is that unlike sed, where
> GNU sed is installed as 'gsed' which is easy to detect, GNU grep is
> installed as 'grep', but to a different prefix.
> 
> We can hardcode GREP ?= /usr/local/bin/grep, but there are some cases
> when it won't work:
> 
>  - If a user installs software to a different prefix (not /usr/local),
>  - If a user has some other grep installed in /usr/local instead of GNU
>    grep. For example, there's a textproc/bsdgrep port which installs
>    grep to the same place. Moreover, it looks like FreeBSD 12.x and
>    older use GNU grep by default, so with this hardcode we'll be using a
>    wrong grep on older FreeBSD versions.
> 
> A general solution would be to make sure we're dealing with GNU grep by
> checking `grep --version` and looking for some specific bits to GNU
> grep, maybe "Free Software Foundation" or something like that, as BSD
> grep mentions it's GNU grep compatible, so cannot search for just "GNU
> grep". This doesn't seem to be very convenient with meson...

You can use a combo of 'find_program' and 'run_command' in meson to
achieve this I believe.

> More simple, however less general solution would be use
> /usr/local/bin/grep only for FreeBSD >= 13.0.

I'd be ok with that but as you do most of the freebsd work though
I'll let you decide which solution.



Regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|




More information about the libvir-list mailing list