MCPcopy Create free account
hub / github.com/clockworklabs/SpacetimeDB / generate

Method generate

crates/commitlog/src/tests/bitflip.rs:68–95  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

66
67impl Inputs {
68 fn generate() -> impl Strategy<Value = Inputs> {
69 // Open + fill log.
70 let log = mk_log();
71 // Obtain segment offsets.
72 let segment_offsets = log.repo.existing_offsets().unwrap();
73 (
74 // Select a random segment.
75 select(segment_offsets)
76 // Open the segment at that offset,
77 // and generate a byte position where we want a bit to be
78 // flipped.
79 .prop_flat_map(move |segment_offset| {
80 let segment = log.repo.open_segment_writer(segment_offset).unwrap();
81 let byte_pos = byte_position(segment.len());
82 (Just(log.clone()), Just(segment), Just(segment_offset), byte_pos)
83 }),
84 // A byte to XOR with the byte at `byte_pos`
85 any::<NonZeroU8>(),
86 )
87 .prop_map(|((log, segment, segment_offset, byte_pos), bit_mask)| Self {
88 log,
89 segment,
90 byte_pos,
91 bit_mask: bit_mask.get(),
92
93 segment_offset,
94 })
95 }
96}
97
98/// Select a random position of a byte within a segment.

Callers

nothing calls this directly

Calls 8

mk_logFunction · 0.85
byte_positionFunction · 0.85
unwrapMethod · 0.45
existing_offsetsMethod · 0.45
open_segment_writerMethod · 0.45
lenMethod · 0.45
cloneMethod · 0.45
getMethod · 0.45

Tested by

no test coverage detected