Module partial_io::proptest_types
source · [−]Available on crate feature
proptest1
only.Expand description
Proptest support for partial IO operations.
This module allows sequences of PartialOp
s to be randomly generated. These
sequences can then be fed into a PartialRead
,
PartialWrite
, PartialAsyncRead
or
PartialAsyncWrite
.
Once proptest
has identified a failing test case, it will shrink the sequence of PartialOp
s
and find a minimal test case. This minimal case can then be used to reproduce the issue.
Basic implementations are provided for:
- generating errors some of the time
- generating
PartialOp
instances, given a way to generate errors.
Examples
use partial_io::proptest_types::{partial_op_strategy, interrupted_strategy};
use proptest::{collection::vec, prelude::*};
proptest! {
#[test]
fn proptest_something(ops: vec(partial_op_strategy(interrupted_strategy(), 128), 0..128)) {
// Example buffer to read from, substitute with your own.
let reader = std::io::repeat(42);
let partial_reader = PartialRead::new(reader, ops);
// ...
true
}
}
For a detailed example, see examples/buggy_write.rs
in this repository.
Functions
Returns a strategy that generates
Interrupted
errors 20% of the time.Returns a strategy that generates
Interrupted
errors 10% of the time and WouldBlock
errors
10% of the time.Returns a strategy that generates
PartialOp
instances given a way to generate errors.Returns a strategy that generates
WouldBlock
errors 20% of the time.