Changeset View
Changeset View
Standalone View
Standalone View
src/test/fuzz/bloom_filter.cpp
Show All 20 Lines | CBloomFilter bloom_filter{ | ||||
fuzzed_data_provider.ConsumeIntegralInRange<unsigned int>(1, 10000000), | fuzzed_data_provider.ConsumeIntegralInRange<unsigned int>(1, 10000000), | ||||
1.0 / fuzzed_data_provider.ConsumeIntegralInRange<unsigned int>( | 1.0 / fuzzed_data_provider.ConsumeIntegralInRange<unsigned int>( | ||||
1, std::numeric_limits<unsigned int>::max()), | 1, std::numeric_limits<unsigned int>::max()), | ||||
fuzzed_data_provider.ConsumeIntegral<unsigned int>(), | fuzzed_data_provider.ConsumeIntegral<unsigned int>(), | ||||
static_cast<uint8_t>(fuzzed_data_provider.PickValueInArray( | static_cast<uint8_t>(fuzzed_data_provider.PickValueInArray( | ||||
{BLOOM_UPDATE_NONE, BLOOM_UPDATE_ALL, BLOOM_UPDATE_P2PUBKEY_ONLY, | {BLOOM_UPDATE_NONE, BLOOM_UPDATE_ALL, BLOOM_UPDATE_P2PUBKEY_ONLY, | ||||
BLOOM_UPDATE_MASK}))}; | BLOOM_UPDATE_MASK}))}; | ||||
while (fuzzed_data_provider.remaining_bytes() > 0) { | while (fuzzed_data_provider.remaining_bytes() > 0) { | ||||
switch (fuzzed_data_provider.ConsumeIntegralInRange(0, 6)) { | switch (fuzzed_data_provider.ConsumeIntegralInRange(0, 4)) { | ||||
case 0: { | case 0: { | ||||
const std::vector<uint8_t> &b = | const std::vector<uint8_t> &b = | ||||
ConsumeRandomLengthByteVector(fuzzed_data_provider); | ConsumeRandomLengthByteVector(fuzzed_data_provider); | ||||
(void)bloom_filter.contains(b); | (void)bloom_filter.contains(b); | ||||
bloom_filter.insert(b); | bloom_filter.insert(b); | ||||
const bool present = bloom_filter.contains(b); | const bool present = bloom_filter.contains(b); | ||||
assert(present); | assert(present); | ||||
break; | break; | ||||
Show All 17 Lines | while (fuzzed_data_provider.remaining_bytes() > 0) { | ||||
break; | break; | ||||
} | } | ||||
(void)bloom_filter.contains(*u256); | (void)bloom_filter.contains(*u256); | ||||
bloom_filter.insert(*u256); | bloom_filter.insert(*u256); | ||||
const bool present = bloom_filter.contains(*u256); | const bool present = bloom_filter.contains(*u256); | ||||
assert(present); | assert(present); | ||||
break; | break; | ||||
} | } | ||||
case 3: | case 3: { | ||||
bloom_filter.clear(); | |||||
break; | |||||
case 4: | |||||
bloom_filter.reset( | |||||
fuzzed_data_provider.ConsumeIntegral<unsigned int>()); | |||||
break; | |||||
case 5: { | |||||
const std::optional<CMutableTransaction> mut_tx = | const std::optional<CMutableTransaction> mut_tx = | ||||
ConsumeDeserializable<CMutableTransaction>( | ConsumeDeserializable<CMutableTransaction>( | ||||
fuzzed_data_provider); | fuzzed_data_provider); | ||||
if (!mut_tx) { | if (!mut_tx) { | ||||
break; | break; | ||||
} | } | ||||
const CTransaction tx{*mut_tx}; | const CTransaction tx{*mut_tx}; | ||||
(void)bloom_filter.IsRelevantAndUpdate(tx); | (void)bloom_filter.IsRelevantAndUpdate(tx); | ||||
break; | break; | ||||
} | } | ||||
case 6: | case 4: | ||||
bloom_filter.UpdateEmptyFull(); | bloom_filter.UpdateEmptyFull(); | ||||
break; | break; | ||||
} | } | ||||
(void)bloom_filter.IsWithinSizeConstraints(); | (void)bloom_filter.IsWithinSizeConstraints(); | ||||
} | } | ||||
} | } |