garrison

garrison OP

What @hauleth wrote is correct, but note that I am using the term a bit more broadly. Fuzzing, property-based testing (PBT), and deterministic simulation testing (DST) are all approximately the same thing. I’m using “fuzzer” to describe all three of them because the other two terms are acronyms and I don’t like acronyms. This is also consistent with Tigerbeetle’s usage of the term, e.g. in this article.

Simulation tests are essentially the same thing as property tests except that for distributed systems it’s very hard to make those tests deterministic. DST is a set of techniques for making property tests deterministic by simulating the things that would be nondeterminstic. In the case of Hobbes, that consists mostly of removing parallelism, simulating the disk, and making sure all calls to random() are properly seeded. (And also avoiding iteration over maps, which has been the source of 100% of the determinism bugs I’ve had in practice lmao)

There are also fuzzers that are domain-specific. I originally started writing them while working on the KV data structures because I realized it was literally impossible to write useful unit tests for them. XKS (the storage engine) currently has 5 different fuzzers, and will probably need more.

I’m working on a new fuzz/simulation framework named Trinity to replace Construct, as the latter was not designed with performance in mind (it really was not “designed” at all). I’m hoping I can get a good performance boost as I need to run much longer simulations to validate Hobbes for production use.

5
Post #81
pauldemarco

pauldemarco

This is excellent. I was investigating to see about building an event store type database on top, but seems like work is still well underway.

Do you have plans on also making available “trinity”?

2
Post #82
garrison

garrison OP

It is indeed still well underway. The source for Trinity can be found on Tangled along with Hobbes.

3
Post #83
garrison

garrison OP

Anyone know why I can’t rename this thread? I was hoping to change the title to match the current readme.

0
Post #84
dimitarvp

dimitarvp

@AstonJ could help, maybe?

1
Post #85
AstonJ

AstonJ

It should work:

Screenshot 2026-05-15 at 01.59.07

But maybe it doesn’t apply to titles :confused:

For now I have changed to: Hobbes - a low-level distributed database for the Elixir programming language let us know if you want it changed to something else :023:

2
Post #86
— All posts loaded —