mirror of
https://github.com/deuxfleurs-org/garage.git
synced 2026-07-26 07:58:14 +00:00
Add bucket_alias CRDT fuzz target (#1439)
Reviewed-on: https://git.deuxfleurs.fr/Deuxfleurs/garage/pulls/1439 Reviewed-by: Alex <lx@deuxfleurs.fr>
This commit is contained in:
@@ -57,3 +57,10 @@ path = "fuzz_targets/key_crdt.rs"
|
||||
test = false
|
||||
doc = false
|
||||
bench = false
|
||||
|
||||
[[bin]]
|
||||
name = "bucket_alias_crdt"
|
||||
path = "fuzz_targets/bucket_alias_crdt.rs"
|
||||
test = false
|
||||
doc = false
|
||||
bench = false
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
#![no_main]
|
||||
|
||||
use garage_fuzz::check_crdt_laws;
|
||||
use garage_model::bucket_alias_table::BucketAlias;
|
||||
use garage_util::data::Uuid;
|
||||
use libfuzzer_sys::fuzz_target;
|
||||
|
||||
/// Build a BucketAlias with a fixed name so that CRDT state can be compared
|
||||
/// across merge results. The timestamp and optional bucket ID are the CRDT state.
|
||||
fn make_bucket_alias(ts: u64, bucket_id: Option<[u8; 32]>) -> BucketAlias {
|
||||
BucketAlias::new(String::new(), ts, bucket_id.map(Uuid::from))
|
||||
}
|
||||
|
||||
fuzz_target!(|inputs: (
|
||||
(u64, Option<[u8; 32]>),
|
||||
(u64, Option<[u8; 32]>),
|
||||
(u64, Option<[u8; 32]>)
|
||||
)| {
|
||||
let ((ts1, b1), (ts2, b2), (ts3, b3)) = inputs;
|
||||
check_crdt_laws(
|
||||
make_bucket_alias(ts1, b1),
|
||||
make_bucket_alias(ts2, b2),
|
||||
make_bucket_alias(ts3, b3),
|
||||
);
|
||||
});
|
||||
Reference in New Issue
Block a user