Set-up timeouts on thread-related unittests
Steven Schveighoffer via Digitalmars-d
digitalmars-d at puremagic.com
Fri Jun 20 12:44:18 PDT 2014
On Fri, 20 Jun 2014 14:30:50 -0400, Sean Kelly <sean at invisibleduck.org>
wrote:
> On Friday, 20 June 2014 at 18:24:21 UTC, Steven Schveighoffer
> wrote:
>>
>> No, I mean that druntime would run all unit tests with an expectation
>> that each unit test should time out after N seconds.
>
> I'd be more inclined to have the test runner kill the process if
> it takes more than N seconds to complete and call that a test
> failure. Figuring out something reasonable to do in the unit
> tester within Druntime would be difficult.
Timing individual tests is more likely to be accurate than timing the
whole set of unit tests. A slow machine could easily double or triple the
time the whole thing takes, and it would be difficult to pinpoint a
reasonable time that all machines would accept. But a single unit test
block should be really quick, I think 1 second is long enough to say it's
failed in the vast majority of cases. Of course, if they all take near 1
second, the total time will be huge. But we are not testing speed, we are
testing for infinite loops/hangs. The trick is specifying any info to the
runtime about specific unit tests, we don't have any mechanism to do that.
UDAs would be perfect.
I don't think it would be that difficult. you just need a separate thread
(can be written in D but only use C runtime), that exits the process if it
doesn't get pinged properly. Then the test runner has to ping the thread
between each test.
-Steve
More information about the Digitalmars-d
mailing list