[llvm-dev] [lit] RFC: Per test timeout

Jonathan Roelofs via llvm-dev llvm-dev at lists.llvm.org
Sat Nov 14 08:37:50 PST 2015



On 11/14/15 3:10 AM, Dan Liew via llvm-dev wrote:
> Hi,
>
> A feature I've wanted in lit for a while is a having a timeout per
> test. Attached
> are patches that implement this idea.

Cool, I hope this succeeds. I tried implementing per-test timeouts 
before, and couldn't get it to work in all cases. The review eventually 
fizzled out, and I abandoned it.

Here's that old review: http://reviews.llvm.org/D6584 Perhaps you can 
cannibalize testcases from it.

>
> I'm e-mailing llvm-dev rather than llvm-commits
> because I want to gather more feedback on my initial implementation and
> hopefully some answers to some unresolved issues with my implementation.
>
> Currently in lit you can set a global timeout for
> all of the tests but not for each individual test.
>
> The attached patches add
>
> * Support for a new ResultCode called TIMEOUT

When I implemented mine, one of the first revisions had this, but then 
@ddunbar said he'd prefer I didn't add a new ResultCode.

> * A new command line option --max-individual-test-time

I think you should call it `--timeout=`, and then say in the description 
that it's a per-test timeout.

> * Support for running external and internal ShTests with a per test timeout
> * Support for running GTests with a per test timeout
>
> I wanted to get some initial feedback on the implementation.
>
> * If a timeout is requested the Python psutil module is required.
>    This module does not ship with Python but is availble via pip
>    (or on Linux your distribution's package manager). How do people feel
>    about this? I don't like adding extra dependencies but this module
>    makes it really easy to kill a process and all its children recursively
>    in a platform neutral way. Note that if a per test timeout is not requested
>    then the psutil module is not imported and lit acts just like it did
> before my patches.

This must be the missing piece... I couldn't get my implementation to 
work without resorting to Python 3.x features (which is incompatible 
with a 2.x minimum version).

>
> * If the platform running lit doesn't have psutil installed and a
> timeout is requested
>    an exception will be thrown. Should we provide a more friendly error message?

Yes.

>    If so where should this go in lit's code?

Not sure off the top of my head, but probably somewhere near the rest of 
the argument parsing stuff. I'll have a look later.

>
> * I've not tested these patches on OSX or Windows. Is anyone on those
> platforms willing
>    to give them a try?

Yes, I'll give it a whirl on Darwin early next week.


Mind squashing your two patches, throwing them on Phabricator, and 
cc-ing llvm-commits?


Thanks!

Jon

>
> * The behaviour of --max-individual-test-time is a little at odds with
> the behaviour of --max-time. --max-time will mark unexecuted tests as
> UNRESOLVED whereas --max-individual-test-time will mark a test that
> ran out of time as TIMEOUT. Is this okay?
>
> * @Chris Matthews. Does the code that emits xunit xml files need to
> change in anyway?
>
> * @Daniel Dunbar. If these changes (in some form) end up being
> committed would you be happy
>    to push a new release of lit to PyPy?
>
>
>
> _______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>

-- 
Jon Roelofs
jonathan at codesourcery.com
CodeSourcery / Mentor Embedded


More information about the llvm-dev mailing list