in quic/s2n-quic-transport/src/stream/send_stream/tests.rs [2579:2653]
fn resetting_a_stream_takes_priority() {
let error_code = ApplicationErrorCode::new(123).unwrap();
for sizes in [None, Some(&[10, 10, 10])] {
for finish in [true, false] {
for flush in [true, false] {
for with_context in [true, false] {
let mut test_env = setup_send_only_test_env();
let will_wake = with_context && flush;
dbg!(sizes);
dbg!(finish);
dbg!(flush);
dbg!(with_context);
let mut request = ops::Request::default();
request.reset(error_code);
let mut chunks =
sizes.map(|sizes| gen_pattern_test_chunks(VarInt::from_u8(0), sizes));
if let Some(chunks) = chunks.as_deref_mut() {
request.send(chunks);
}
if finish {
request.finish();
}
if flush {
request.flush();
}
assert_eq!(
test_env.run_request(&mut request, with_context),
Ok(ops::Response {
tx: Some(ops::tx::Response {
status: ops::Status::Resetting,
will_wake,
..Default::default()
}),
rx: None,
}),
);
execute_instructions(
&mut test_env,
&[
Instruction::CheckInterests(stream_interests(&["tx"])),
Instruction::CheckResetTx(error_code, pn(0), VarInt::from_u8(0)),
Instruction::CheckInterests(stream_interests(&["ack"])),
Instruction::AckPacket(pn(0), ExpectWakeup(Some(will_wake))),
],
);
assert_matches!(
test_env.run_request(&mut request, with_context),
Ok(ops::Response {
tx: Some(ops::tx::Response {
status: ops::Status::Reset(StreamError::StreamReset { .. }),
..
}),
rx: None,
}),
);
execute_instructions(
&mut test_env,
&[Instruction::CheckInterests(stream_interests(&["fin"]))],
);
}
}
}
}
}