camshaft / bolero

property testing and verification front-end for Rust
https://camshaft.github.io/bolero
MIT License
185 stars 17 forks source link

fix: actually limit the time taken to shrink #202

Closed Ekleog closed 9 months ago

Ekleog commented 9 months ago

I have a case where there is a 4kiB input that needs shrinking. Bolero then wants to run 4000 times the apply_transforms function before checking for shrink time.

Unfortunately, each apply_transforms seems to run my test closure 2000 times, and each test closure takes 50-100ms to run.

All together, bolero would need 9 days before checking for the shrink time limit for the first time.

With this change, bolero now checks more often the shrink time, which actually leads to me getting an error message and not what looks like a deadlock :)


I'll also ask, do you think you could release 0.10.1 with the fixes? It's probably not the first time I've hit the bug, but until now I've been ignoring it due to it looking like a deadlock.

Ekleog commented 9 months ago

@camshaft Would it be possible for you to release 0.10.1 of bolero-engine with this change? I've hit the issue again, and again it took me quite a while to understand that it's not a deadlock — I don't always develop with path dependencies on as I'm trying to not commit them :sweat_smile:

camshaft commented 9 months ago

Yes, sorry, I will do a release tomorrow morning (~12 hrs from now). I meant to when I merged this but had a few things come up.

camshaft commented 9 months ago

https://crates.io/crates/bolero-engine/0.10.1

Ekleog commented 9 months ago

Awesome, thank you! :heart: