[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