Mutation-based generator of arbitrary executable documents #880
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
For a given valid schema, use a byte string typically provided by cargo-fuzz as a source of entropy to deterministically generate a valid executable document:
Instead of using the
arbitrary
crate, parts of it are forked for reasons documented at the top of the newentropy.rs
file.At a high level, it creates a minimal operation then keeps adding selections to it until entropy is exhausted. As a result, providing a longer byte string tends to create larger documents. Hopefully this helps fuzzers better explore the space of possible documents, compared to apollo-smith which uses code like
u.int_in_range(1..=5)
to decide how many items to generate regardless of remaining entropy.With this approach I believe we could enumerate all possible valid documents up to a certain "size" with bounded amounts of entropy. We’re not quite there yet for at least a few reasons: