quinn-rs / quinn

Async-friendly QUIC implementation in Rust
Apache License 2.0
3.88k stars 396 forks source link

[Bug] CI test failure for quinn-proto on i386 #1489

Open werdahias opened 1 year ago

werdahias commented 1 year ago

Hi, I packaged quinn-proto for debian recently. The automated CI tests fail on i386:

test connection::streams::state::tests::reset_stream_cannot_send ... ok
test connection::pacing::tests::computes_pause_correctly ... FAILED
test connection::streams::state::tests::send_stopped ... ok
test connection::streams::state::tests::shrink_receive_window ... ok
test connection::streams::state::tests::stop_finished ... ok
test connection::streams::state::tests::stopped_reset ... ok
test connection::streams::state::tests::stream_limit_fixed ... ok
test connection::streams::state::tests::stream_limit_grows ... ok
test connection::streams::state::tests::stream_limit_shrinks ... ok
test connection::streams::state::tests::stream_priority ... ok
test connection::streams::state::tests::trivial_flow_control ... ok
test frame::test::ack_coding ... ok
test packet::tests::pn_encode ... ok
test packet::tests::roundtrip_packet_numbers ... ok
test range_set::btree_range_set::tests::replace_contained ... ok
test range_set::btree_range_set::tests::replace_contains ... ok
test range_set::btree_range_set::tests::replace_exact_pred ... ok
test range_set::btree_range_set::tests::replace_exact_succ ... ok
test range_set::btree_range_set::tests::replace_pred ... ok
test range_set::btree_range_set::tests::replace_succ ... ok
test packet::tests::pn_expand_roundtrip ... ok
test range_set::tests::array_range_set::compare_insert_to_reference ... ok
test range_set::tests::array_range_set::double_insert ... ok
test range_set::tests::array_range_set::double_merge_exact ... ok
test range_set::tests::array_range_set::double_merge_wide ... ok
test range_set::tests::array_range_set::double_remove ... ok
test range_set::tests::array_range_set::insert_multiple ... ok
test range_set::tests::array_range_set::merge_and_split ... ok
test range_set::tests::array_range_set::remove_multiple ... ok
test range_set::tests::array_range_set::single_merge_high ... ok
test range_set::tests::array_range_set::single_merge_low ... ok
test range_set::tests::array_range_set::skip_empty_ranges ... ok
test range_set::tests::array_range_set::compare_remove_to_reference ... ok
test range_set::tests::range_set::compare_insert_to_reference ... ok
test range_set::tests::range_set::double_insert ... ok
test range_set::tests::range_set::double_merge_exact ... ok
test range_set::tests::range_set::double_merge_wide ... ok
test range_set::tests::range_set::double_remove ... ok
test range_set::tests::range_set::insert_multiple ... ok
test range_set::tests::range_set::merge_and_split ... ok
test range_set::tests::range_set::remove_multiple ... ok
test range_set::tests::range_set::single_merge_high ... ok
test range_set::tests::range_set::single_merge_low ... ok
test range_set::tests::range_set::skip_empty_ranges ... ok
test transport_parameters::test::coding ... ok
test transport_parameters::test::resumption_params_validation ... ok
test range_set::tests::range_set::compare_remove_to_reference ... ok

failures:

---- connection::pacing::tests::computes_pause_correctly stdout ----
thread 'connection::pacing::tests::computes_pause_correctly' panicked at 'assertion failed: `(left == right)`
  left: `39999`,
 right: `40000`', src/connection/pacing.rs:272:9
stack backtrace:
   0: rust_begin_unwind
             at /usr/src/rustc-1.63.0/library/std/src/panicking.rs:584:5
   1: core::panicking::panic_fmt
             at /usr/src/rustc-1.63.0/library/core/src/panicking.rs:142:14
   2: core::panicking::assert_failed_inner
   3: core::panicking::assert_failed
             at /usr/src/rustc-1.63.0/library/core/src/panicking.rs:181:5
   4: quinn_proto::connection::pacing::tests::computes_pause_correctly
             at ./src/connection/pacing.rs:272:9
   5: quinn_proto::connection::pacing::tests::computes_pause_correctly::{{closure}}
             at ./src/connection/pacing.rs:232:5
   6: core::ops::function::FnOnce::call_once
             at /usr/src/rustc-1.63.0/library/core/src/ops/function.rs:248:5
   7: core::ops::function::FnOnce::call_once
             at /usr/src/rustc-1.63.0/library/core/src/ops/function.rs:248:5
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.

failures:
    connection::pacing::tests::computes_pause_correctly

test result: FAILED. 103 passed; 1 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.87s

For now I just skip the test with #[cfg(not(target_arch = "x86"))]

Ralith commented 1 year ago

Odd, seems like a rounding error, but I don't see why that would round differently. Looks harmless, at least. I don't have a 32-bit system handy to test, unfortunately.