Skip to content

Commit 7cb4a26

Browse files
michielp1807folkertdev
authored andcommitted
Add dictionary_train_fast fuzz test
1 parent 6ce0a86 commit 7cb4a26

File tree

3 files changed

+58
-0
lines changed

3 files changed

+58
-0
lines changed

.github/workflows/checks.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -198,6 +198,7 @@ jobs:
198198
run: |
199199
cargo fuzz run dictionary_round_trip -- -max_total_time=10
200200
cargo fuzz run dictionary_train -- -dict=./fuzz/dictionaries/dictionary_train.txt -max_total_time=60
201+
cargo fuzz run dictionary_train_fast -- -dict=./fuzz/dictionaries/dictionary_train.txt -max_total_time=60
201202
env:
202203
RUSTFLAGS: "-Awarnings"
203204

fuzz/Cargo.toml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,3 +42,10 @@ path = "fuzz_targets/dictionary_train.rs"
4242
test = false
4343
doc = false
4444
bench = false
45+
46+
[[bin]]
47+
name = "dictionary_train_fast"
48+
path = "fuzz_targets/dictionary_train_fast.rs"
49+
test = false
50+
doc = false
51+
bench = false
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
#![no_main]
2+
3+
use c2rust_out_fuzz::{assert_eq_rs_c, ArbitrarySamples};
4+
use libfuzzer_sys::fuzz_target;
5+
6+
// COVER dictionary builder tests
7+
fuzz_target!(|data: (u8, u8, ArbitrarySamples)| {
8+
let (k, d, samples) = data;
9+
10+
let d = 1 + (d as u32 % 16);
11+
let k = d + (k as u32 % 256);
12+
13+
// train
14+
let (_dict_size, dict) = assert_eq_rs_c!({
15+
let mut params = libzstd_rs_sys::ZDICT_fastCover_params_t::default();
16+
params.d = d;
17+
params.k = k;
18+
19+
let mut dict = vec![0u8; samples.dict_size];
20+
let dict_size = ZDICT_trainFromBuffer_fastCover(
21+
dict.as_mut_ptr().cast(),
22+
samples.dict_size,
23+
samples.samples.as_ptr().cast(),
24+
samples.sample_sizes.as_ptr(),
25+
samples.nb_samples as u32,
26+
std::mem::transmute(params),
27+
);
28+
29+
(dict_size, dict)
30+
});
31+
32+
// optimize
33+
assert_eq_rs_c!({
34+
let mut opt_params = libzstd_rs_sys::ZDICT_fastCover_params_t::default();
35+
opt_params.steps = 4;
36+
37+
let mut dict = dict.clone();
38+
39+
let opt_dict_size = ZDICT_optimizeTrainFromBuffer_fastCover(
40+
dict.as_mut_ptr().cast(),
41+
samples.dict_size,
42+
samples.samples.as_ptr().cast(),
43+
samples.sample_sizes.as_ptr(),
44+
samples.nb_samples as u32 / 4,
45+
std::mem::transmute(&mut opt_params),
46+
);
47+
48+
(opt_dict_size, dict)
49+
});
50+
});

0 commit comments

Comments
 (0)