Restrict ChannelManager persist in fuzzing to when we're told to

In the `chanmon_consistency` fuzz, we currently "persist" the
`ChannelManager` on each loop iteration. With the new logic in the
past few commits to reduce the frequency of `ChannelManager`
persistences, this behavior now leaves a gap in our test coverage -
missing persistence notifications.

In order to cath (common-case) persistence misses, we update the
`chanmon_consistency` fuzzer to no longer persist the
`ChannelManager` unless the waker was woken and signaled to
persist, possibly reloading with a previous `ChannelManager` if we
were not signaled.
This commit is contained in:
Matt Corallo 2023-08-28 01:25:36 +00:00
parent 5c3fa553a1
commit 32e5903ef2

View file

@ -1296,12 +1296,18 @@ pub fn do_test<Out: Output>(data: &[u8], underlying_out: Out) {
_ => test_return!(),
}
node_a_ser.0.clear();
nodes[0].write(&mut node_a_ser).unwrap();
node_b_ser.0.clear();
nodes[1].write(&mut node_b_ser).unwrap();
node_c_ser.0.clear();
nodes[2].write(&mut node_c_ser).unwrap();
if nodes[0].get_and_clear_needs_persistence() == true {
node_a_ser.0.clear();
nodes[0].write(&mut node_a_ser).unwrap();
}
if nodes[1].get_and_clear_needs_persistence() == true {
node_b_ser.0.clear();
nodes[1].write(&mut node_b_ser).unwrap();
}
if nodes[2].get_and_clear_needs_persistence() == true {
node_c_ser.0.clear();
nodes[2].write(&mut node_c_ser).unwrap();
}
}
}