sunshowers8 hours ago
Thanks for posting about this! I'm the main author of nextest, and it represents my best foot forward for how Rust testing should be done. Happy to answer questions though I might be a bit intermittent.
landr0id8 hours ago
Big fan of nextest and this is my first time seeing this site. I'll be real I feel a bit ridiculous commenting this but you might want to consider rephrasing this:
>Treat tests as cattle, not pets. Detect and terminate slow tests.
Not sure saying, "hey, treat your tests as an animal you can kill at will" paints the right image.
trollbridge8 hours ago
This is from the Kubernetes saying of "treat servers like cattle, not pets". Of course, some people like me keep cattle as pets, but then again I also name my servers, even the virtual or containerised ones.
sunshowers7 hours ago
Yeah that was indeed the inspiration (though I'm pretty sure it predates Kubernetes!) but the juxtaposition with "terminate" is unfortunate.
wojciii7 hours ago
I liked the way it was phrased. You can't make everybody happy. :)
seanhunter4 hours ago
It’s a horrible saying in that context also.
embedding-shape3 hours ago
I mean, I like animals too, but in context it does make sense. The context was to treat them as "obtainable yet ultimately killable entities you keep as a group, not individuals", which cattle pretty much is. Unless you consider keeping cattle as draft animals, but I think that stopped being the main purpose a long time ago.
It got the point across, at a time where most people basically acquired servers, kept them until they died, and he was trying to push a development workflow where you constantly close("kill")/bring up new servers.
entrope41 minutes ago
IMO, "make your servers fungible" is a better way to express the intent: slightly shorter, no metaphors, although "fungible" is a less common word. Maybe that's just me. (Edited to add: "make your tests fungible" has I think the wrong connotation; I think the original wording on the blog is about test executions -- and "make your test executions fungible" does seem like a good goal, similar to ACID guarantees for database transactions.)
embedding-shape23 minutes ago
Before that, I used to call them "ephemeral", and of course half the people asked what "ephemeral" means, probably "fungible" would be met with similar question, unless the crowd is cryptocurrency-adjacent, that term seems understood there.
jen20an hour ago
That (unpleasant) saying predates Kubernetes by at least half a decade.
sunshowers8 hours ago
That's fair! I'll find a way to rephrase it.
edit: Updated to "Detect and handle slow tests". Thanks again!
mhluongo2 hours ago
It resonated with me!
Zababaan hour ago
Fungible/non fungible is a good alternative, and maybe the technically correct word. But I think in that case it doesn't apply and the change the author did is better.
coding-wizard2 hours ago
Hey, I love nextest. But, perhaps because of the one-process per test approach, endpoint security solutions like CrowdStrike Falcon or Palo Alto Cortex tend to make computers hang whenever tests kick-in. I would love if you were able to introduce a workaround, because none of those companies will fix their stuff. I am guessing a possible mitigation would be to have stagger the first invocation of any large test binary, but I haven't had a chance to dig deep into this issue.
arw0nan hour ago
Wouldn't running the tests in a container solve that issue? Or is that another thing that gets flagged?
gdcbe6 hours ago
Thank you very much for developing nextest. It is what allows our projects like rama [1] to run thousands and thousands of tests in a blink of an eye! Keep it up!
mrec6 hours ago
Have there been any discussions about upstreaming this into cargo proper? Are there any significant downsides to nextest compared to its predecessor?
sunshowers6 hours ago
The How it works [1] and Why process-per-test? [2] pages should answer your questions.
mrec6 hours ago
Ah, I see. You're aiming to become the hashbrown of testing.
sunshowers6 hours ago
Oh gosh, were we to be so lucky :) just aiming to solve problems my coworkers and users see, and doing it with care, is all.
weinzierl7 hours ago
The "execution model" page[1] is documentation at its best!
It answered 90% of the questions I had at the monent. Thank you!
jtwaleson4 hours ago
Super happy user here! It's an excellent piece of engineering.
We're running a fork that supports a "sidecar" server for running multiple integration tests against. So if any tests that need the server are included, it spawns the server, runs the integration tests, and then shuts it down. By re-using the same server we speed up our runs tremendously.
Discussion thread on gh: https://github.com/nextest-rs/nextest/discussions/3330
satvikpendem8 hours ago
I love nextest, it's been great. This along with bacon catches a lot of issues.
mohsen16 hours ago
I love nextest. without it my CI could take hours
https://github.com/tsz-org/tsz/actions/runs/29002057457/job/...
watch it running 32.5k unit tests without breaking a sweat!
sunshowers5 hours ago
Thanks! BTW you might enjoy setting CARGO_TERM_COLOR=always in your environment :) dtolnay/rust-toolchain does this automatically but it looks like you aren't using that action.
mohsen15 hours ago
Thanks! Any pro tips for sharding? I landed on single job because couldn't get cache to work properly for shards to be fast enough to worth it
jstrong5 hours ago
seems like `cargo nextest run` just runs `--lib` tests by default? however, `cargo test` is not so slow if you do `cargo test --lib`. how do I get nextest to execute the doc tests, too?
mattstir35 minutes ago
It looks like doctests aren't supported: https://github.com/nextest-rs/nextest/issues/16
patates9 hours ago
I somehow tried to make sense of the name as a superlative form of "next". Perhaps next-test would have been fine?
mightyham4 hours ago
Coming from the DC area, this comment reminds me of how the metro payment system "Smartrip" was recently renamed to "Smart Trip".
sunshowers8 hours ago
That is indeed the pun =)
patates7 hours ago
Oh, sorry then, thanks for the clarification :)
esafak9 hours ago
Anybody using this in production?
edit: Thanks, will try!
gdcbe6 hours ago
Yes we use it for rama [1]. You can check its justfile and CI workflow file how we use it. Those run thousands and thousands of tests thx to nextest and what feels like instantly (once compiled).
Large projects build with rama use it as well. But those are proprietary from partners so sadly cannot share those.
tekacs9 hours ago
Yes, for a long while – I believe it's fairly widely used (and it's absolutely excellent!)
aabhay7 hours ago
Yep. Tokio uses it for their tests in CI as well last I checked.
musicmatze6 hours ago
Been using it for years, for opensource stuff and at work. No issues whatsoever.
DennisL1238 hours ago
Yes, been using it for 18’ish months. Works great.
merqurio8 hours ago
Happy user here !