[INFO] cloning repository https://github.com/gengibrepower/Exchange
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/gengibrepower/Exchange" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fgengibrepower%2FExchange", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fgengibrepower%2FExchange'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 3e285dc85721b0b5e6049839aa35b0c83744a42d
[INFO] testing gengibrepower/Exchange against 1.100.0-beta.1+cargoflags=--release for beta-release-1.100-2
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fgengibrepower%2FExchange" "/workspace/builds/worker-5-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-5-tc2/source'...
[INFO] [stderr] done.
[INFO] removed /workspace/builds/worker-5-tc2/source/rust-toolchain.toml
[INFO] started tweaking git repo https://github.com/gengibrepower/Exchange
[INFO] finished tweaking git repo https://github.com/gengibrepower/Exchange
[INFO] tweaked toml for git repo https://github.com/gengibrepower/Exchange written to /workspace/builds/worker-5-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/gengibrepower/Exchange on toolchain 1.100.0-beta.1
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.100.0-beta.1" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/gengibrepower/Exchange already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.100.0-beta.1" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:77db811e55d90add9212f6832c23229e3de5f1c1f9905e8cb07319ea15df73ac" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 1d8ed6d270db5ab1b4dcd53437bb0498479288caa9d10705919add7d248c7d29
[INFO] running `Command { std: "docker" "start" "1d8ed6d270db5ab1b4dcd53437bb0498479288caa9d10705919add7d248c7d29", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "1d8ed6d270db5ab1b4dcd53437bb0498479288caa9d10705919add7d248c7d29", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "1d8ed6d270db5ab1b4dcd53437bb0498479288caa9d10705919add7d248c7d29" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "1d8ed6d270db5ab1b4dcd53437bb0498479288caa9d10705919add7d248c7d29", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "1d8ed6d270db5ab1b4dcd53437bb0498479288caa9d10705919add7d248c7d29" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "build" "--frozen" "--message-format=json" "--release", kill_on_drop: false }`
[INFO] [stderr]    Compiling unicode-ident v1.0.26
[INFO] [stderr]    Compiling serde_core v1.0.229
[INFO] [stderr]    Compiling thiserror v2.0.21
[INFO] [stderr]    Compiling libc v0.2.189
[INFO] [stderr]    Compiling serde v1.0.229
[INFO] [stderr]    Compiling crc32fast v1.5.2
[INFO] [stderr]    Compiling cfg-if v1.0.5
[INFO] [stderr]    Compiling serde_json v1.0.154
[INFO] [stderr]    Compiling memchr v2.8.3
[INFO] [stderr]    Compiling exchange-fix v0.1.0 (/opt/rustwide/workdir/crates/fix)
[INFO] [stderr]    Compiling proc-macro2 v1.0.107
[INFO] [stderr]    Compiling exchange-wal v0.1.0 (/opt/rustwide/workdir/crates/wal)
[INFO] [stderr]    Compiling quote v1.0.47
[INFO] [stderr]    Compiling syn v3.0.9
[INFO] [stderr]    Compiling mio v1.2.4
[INFO] [stderr]    Compiling socket2 v0.6.5
[INFO] [stderr]    Compiling thiserror-impl v2.0.21
[INFO] [stderr]    Compiling serde_derive v1.0.229
[INFO] [stderr]    Compiling tokio-macros v2.7.2
[INFO] [stderr]    Compiling tokio v1.53.3
[INFO] [stderr]    Compiling cobs v0.3.0
[INFO] [stderr]    Compiling postcard v1.1.3
[INFO] [stderr]    Compiling exchange-core v0.1.0 (/opt/rustwide/workdir/crates/core)
[INFO] [stderr]    Compiling edge v0.1.0 (/opt/rustwide/workdir/crates/edge)
[INFO] [stderr]     Finished `release` profile [optimized] target(s) in 39.28s
[INFO] running `Command { std: "docker" "inspect" "1d8ed6d270db5ab1b4dcd53437bb0498479288caa9d10705919add7d248c7d29", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "1d8ed6d270db5ab1b4dcd53437bb0498479288caa9d10705919add7d248c7d29" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "test" "--frozen" "--no-run" "--message-format=json" "--release", kill_on_drop: false }`
[INFO] [stderr]    Compiling zerocopy v0.8.58
[INFO] [stderr]    Compiling getrandom v0.3.4
[INFO] [stderr]    Compiling rustix v1.1.5
[INFO] [stderr]    Compiling regex-syntax v0.8.11
[INFO] [stderr]    Compiling bitflags v2.13.2
[INFO] [stderr]    Compiling syn v2.0.119
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling once_cell v1.21.4
[INFO] [stderr]    Compiling bit-vec v0.8.0
[INFO] [stderr]    Compiling quick-error v1.2.3
[INFO] [stderr]    Compiling getrandom v0.4.3
[INFO] [stderr]    Compiling wait-timeout v0.2.1
[INFO] [stderr]    Compiling unarray v0.1.4
[INFO] [stderr]    Compiling crossbeam-utils v0.8.23
[INFO] [stderr]    Compiling crossbeam-epoch v0.9.21
[INFO] [stderr]    Compiling crossbeam-deque v0.8.8
[INFO] [stderr]    Compiling find-msvc-tools v0.1.14
[INFO] [stderr]    Compiling either v1.19.0
[INFO] [stderr]    Compiling plotters-backend v0.3.7
[INFO] [stderr]    Compiling ciborium-io v0.2.2
[INFO] [stderr]    Compiling cc v1.8.0
[INFO] [stderr]    Compiling clap_lex v1.1.1
[INFO] [stderr]    Compiling same-file v1.0.6
[INFO] [stderr]    Compiling bit-set v0.8.0
[INFO] [stderr]    Compiling cast v0.3.0
[INFO] [stderr]    Compiling rand_core v0.9.5
[INFO] [stderr]    Compiling itertools v0.13.0
[INFO] [stderr]    Compiling clap_builder v4.6.7
[INFO] [stderr]    Compiling walkdir v2.5.0
[INFO] [stderr]    Compiling tinytemplate v1.2.1
[INFO] [stderr]    Compiling rand v0.9.5
[INFO] [stderr]    Compiling rand_xorshift v0.4.0
[INFO] [stderr]    Compiling plotters-svg v0.3.7
[INFO] [stderr]    Compiling page_size v0.6.0
[INFO] [stderr]    Compiling oorandom v11.1.5
[INFO] [stderr]    Compiling anes v0.1.6
[INFO] [stderr]    Compiling plotters v0.3.7
[INFO] [stderr]    Compiling rayon-core v1.13.0
[INFO] [stderr]    Compiling alloca v0.4.0
[INFO] [stderr]    Compiling rayon v1.12.0
[INFO] [stderr]    Compiling criterion-plot v0.8.2
[INFO] [stderr]    Compiling regex-automata v0.4.18
[INFO] [stderr]    Compiling tempfile v3.27.0
[INFO] [stderr]    Compiling clap v4.6.7
[INFO] [stderr]    Compiling zerocopy-derive v0.8.58
[INFO] [stderr]    Compiling rusty-fork v0.3.1
[INFO] [stderr]    Compiling regex v1.13.1
[INFO] [stderr]    Compiling ppv-lite86 v0.2.21
[INFO] [stderr]    Compiling half v2.7.1
[INFO] [stderr]    Compiling ciborium-ll v0.2.2
[INFO] [stderr]    Compiling rand_chacha v0.9.0
[INFO] [stderr]    Compiling ciborium v0.2.2
[INFO] [stderr]    Compiling proptest v1.11.0
[INFO] [stderr]    Compiling criterion v0.8.2
[INFO] [stderr]    Compiling edge v0.1.0 (/opt/rustwide/workdir/crates/edge)
[INFO] [stderr]    Compiling exchange-fix v0.1.0 (/opt/rustwide/workdir/crates/fix)
[INFO] [stderr]    Compiling exchange-wal v0.1.0 (/opt/rustwide/workdir/crates/wal)
[INFO] [stderr]    Compiling exchange-core v0.1.0 (/opt/rustwide/workdir/crates/core)
[INFO] [stderr]     Finished `release` profile [optimized] target(s) in 1m 37s
[INFO] running `Command { std: "docker" "inspect" "1d8ed6d270db5ab1b4dcd53437bb0498479288caa9d10705919add7d248c7d29", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "1d8ed6d270db5ab1b4dcd53437bb0498479288caa9d10705919add7d248c7d29" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "test" "--frozen" "--release", kill_on_drop: false }`
[INFO] [stderr]     Finished `release` profile [optimized] target(s) in 0.19s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/release/build/edge/c49751cc5a3cd774/out/edge-c49751cc5a3cd774)
[INFO] [stdout] 
[INFO] [stdout] running 146 tests
[INFO] [stdout] test core_thread::tests::queries_split_the_round_into_batches_in_order ... ok
[INFO] [stdout] test core_thread::tests::round_takes_at_most_max_batch_requests ... ok
[INFO] [stdout] test core_thread::tests::core_that_vanishes_before_answering_is_reported_as_stopped ... ok
[INFO] [stdout] test core_thread::tests::stopped_core_ends_the_reports ... ok
[INFO] [stdout] test core_thread::tests::sequencer_error_stops_the_core_and_every_handle_sees_it ... ok
[INFO] [stdout] test core_thread::tests::abandoned_reply_does_not_stop_the_core ... ok
[INFO] [stdout] test core_thread::tests::query_inside_a_round_sees_exactly_what_came_before_it ... ok
[INFO] [stdout] test core_thread::tests::every_session_of_the_account_gets_the_reports ... ok
[INFO] [stdout] test core_thread::tests::snapshot_of_an_unknown_instrument_is_none ... ok
[INFO] [stdout] test core_thread::tests::reports_of_other_accounts_never_arrive ... ok
[INFO] [stdout] test feed_client::tests::follow_rejects_an_unknown_instrument ... ok
[INFO] [stdout] test feed_client::tests::gap_drops_the_book_and_asks_to_resubscribe ... ok
[INFO] [stdout] test feed_client::tests::other_streams_and_other_messages_are_ignored ... ok
[INFO] [stdout] test feed_client::tests::follow_detects_a_gap_resubscribes_and_recovers ... ok
[INFO] [stdout] test core_thread::tests::subscriber_receives_exactly_what_the_producer_produces ... ok
[INFO] [stdout] test feed_client::tests::server_messages_survive_the_round_trip ... ok
[INFO] [stdout] test feed_client::tests::updates_before_the_snapshot_are_ignored ... ok
[INFO] [stdout] test fix_app::tests::cancel_of_unknown_order_is_rejected ... ok
[INFO] [stdout] test core_thread::tests::slow_subscriber_loses_updates_sees_the_gap_and_recovers ... ok
[INFO] [stdout] test fix_app::tests::armed_stop_is_new_and_stays_out_of_the_book ... ok
[INFO] [stdout] test fix_app::tests::cancel_reports_the_new_and_original_cl_ord_ids ... ok
[INFO] [stdout] test core_thread::tests::subscription_that_does_not_read_is_cut_without_holding_the_core ... ok
[INFO] [stdout] test fix_app::tests::core_rejection_becomes_rejected_report_with_reason ... ok
[INFO] [stdout] test feed_client::tests::snapshot_builds_the_book_and_updates_move_it ... ok
[INFO] [stdout] test fix_app::tests::fill_or_kill_without_enough_liquidity_expires ... ok
[INFO] [stdout] test fix_app::tests::immediate_or_cancel_remainder_is_cancelled_after_the_fill ... ok
[INFO] [stdout] test fix_app::tests::limit_without_price_is_missing_a_field ... ok
[INFO] [stdout] test feed_client::tests::render_draws_asks_above_bids_with_spread_and_last_trade ... ok
[INFO] [stdout] test fix_app::tests::cancel_reusing_a_cl_ord_id_is_rejected ... ok
[INFO] [stdout] test fix_app::tests::reused_cl_ord_id_is_rejected_without_reaching_the_core ... ok
[INFO] [stdout] test feed_client::tests::server_errors_are_reported ... ok
[INFO] [stdout] test fix_app::tests::missing_and_invalid_fields_become_business_rejects ... ok
[INFO] [stdout] test fix_app::tests::order_that_did_not_enter_through_this_session_is_not_reported ... ok
[INFO] [stdout] test fix_app::tests::resting_limit_order_is_acknowledged_as_new ... ok
[INFO] [stdout] test fix_app::tests::resting_order_taken_by_another_session_is_reported_to_its_own ... ok
[INFO] [stdout] test fix_app::tests::self_trade_reports_both_sides ... ok
[INFO] [stdout] test fix_app::tests::second_instrument_trades_under_its_own_symbol_and_tick ... ok
[INFO] [stdout] test fix_app::tests::stop_fired_by_another_session_reports_triggered_then_trade_to_its_owner ... ok
[INFO] [stdout] test fix_app::tests::stop_needs_its_stop_price_and_stop_limit_its_price ... ok
[INFO] [stdout] test feed_client::tests::follow_tracks_the_real_server ... ok
[INFO] [stdout] test fix_app::tests::stop_fired_by_its_own_session_reports_triggered_then_trades ... ok
[INFO] [stdout] test fix_app::tests::unsupported_message_type_is_business_rejected ... ok
[INFO] [stdout] test core_thread::tests::durable_subscription_keeps_everything_nobody_read ... ok
[INFO] [stdout] test market_data::tests::cancel_of_resting_order_removes_its_lots ... ok
[INFO] [stdout] test fix_gateway::tests::garbage_before_the_logon_is_skipped ... ok
[INFO] [stdout] test core_thread::tests::subscribe_then_snapshot_rebuilds_the_book_under_concurrent_trading ... ok
[INFO] [stdout] test core_thread::tests::handle_answers_exactly_what_the_sequencer_answers ... ok
[INFO] [stdout] test core_thread::tests::subscription_starts_where_it_entered_the_queue ... ok
[INFO] [stdout] test fix_app::tests::crossing_order_reports_new_then_each_trade ... ok
[INFO] [stdout] test fix_gateway::tests::order_over_fix_is_acknowledged ... ok
[INFO] [stdout] test market_data::tests::deposits_produce_no_updates_and_consume_no_seq ... ok
[INFO] [stdout] test core_thread::tests::own_reply_arrives_after_the_earlier_reports_that_explain_it ... ok
[INFO] [stdout] test market_data::tests::fill_reports_the_trade_on_both_feeds_and_shrinks_the_maker_level ... ok
[INFO] [stdout] test market_data::tests::leftover_that_never_rested_produces_no_level ... ok
[INFO] [stdout] test market_data::tests::local_book_detects_a_gap_and_stays_as_it_was ... ok
[INFO] [stdout] test market_data::tests::local_book_ignores_other_streams ... ok
[INFO] [stdout] test fix_gateway::tests::house_account_and_wrong_target_are_refused ... ok
[INFO] [stdout] test fix_gateway::tests::second_connection_for_the_same_account_is_refused ... ok
[INFO] [stdout] test fix_app::tests::stop_of_another_session_is_not_reported ... ok
[INFO] [stdout] test market_data::tests::local_book_ignores_what_the_snapshot_already_covers ... ok
[INFO] [stdout] test protocol::tests::decodes_every_client_message ... ok
[INFO] [stdout] test protocol::tests::events_of_another_account_become_nothing ... ok
[INFO] [stdout] test market_data::tests::local_book_remembers_the_last_trade ... ok
[INFO] [stdout] test market_data::tests::resting_order_updates_its_level_and_the_top ... ok
[INFO] [stdout] test protocol::tests::broken_json_is_malformed ... ok
[INFO] [stdout] test fix_gateway::tests::reports_during_a_disconnection_arrive_after_the_next_logon ... ok
[INFO] [stdout] test protocol::tests::feed_messages_serialize_as_documented ... ok
[INFO] [stdout] test protocol::tests::field_order_and_whitespace_do_not_matter ... ok
[INFO] [stdout] test protocol::tests::events_become_one_json_line_each ... ok
[INFO] [stdout] test protocol::tests::limit_without_price_and_market_with_price_are_malformed ... ok
[INFO] [stdout] test protocol::tests::numbers_are_integers_the_domain_accepts ... ok
[INFO] [stdout] test protocol::tests::resolve_builds_intents_for_the_session_account ... ok
[INFO] [stdout] test protocol::tests::resolve_passes_login_and_balance_through ... ok
[INFO] [stdout] test protocol::tests::rejection_carries_a_stable_code_and_a_human_message ... ok
[INFO] [stdout] test protocol::tests::resolve_rejects_unknown_names ... ok
[INFO] [stdout] test protocol::tests::optional_fields_take_their_defaults ... ok
[INFO] [stdout] test market_data::tests::order_behind_the_top_changes_only_l2 ... ok
[INFO] [stdout] test protocol::tests::self_trade_is_one_line_per_order ... ok
[INFO] [stdout] test protocol::tests::side_and_tif_use_the_wire_words ... ok
[INFO] [stdout] test protocol::tests::stop_resolves_to_a_dormant_order ... ok
[INFO] [stdout] test protocol::tests::subscribe_is_decoded_and_resolved_without_an_account ... ok
[INFO] [stdout] test protocol::tests::session_messages_serialize_as_documented ... ok
[INFO] [stdout] test protocol::tests::unknown_type_and_missing_type_are_malformed ... ok
[INFO] [stdout] test protocol::tests::maker_sees_its_own_order_and_pays_no_fee ... ok
[INFO] [stdout] test protocol::tests::message_text_with_quotes_stays_one_valid_line ... ok
[INFO] [stdout] test protocol::tests::unknown_field_is_malformed_not_ignored ... ok
[INFO] [stdout] test sequencer::tests::counter_exhausted_mid_batch_changes_nothing ... ok
[INFO] [stdout] test protocol::tests::stop_without_trigger_or_with_protection_is_malformed ... ok
[INFO] [stdout] test sequencer::tests::empty_batch_answers_nothing_and_logs_nothing ... ok
[INFO] [stdout] test market_data::tests::every_feed_counts_one_by_one ... ok
[INFO] [stdout] test sequencer::tests::quote_reserved_in_one_book_is_not_available_to_the_other ... ok
[INFO] [stdout] test sequencer::tests::replay_accepts_a_contiguous_log ... ok
[INFO] [stdout] test sequencer::tests::replay_rejects_a_gap_in_seq ... ok
[INFO] [stdout] test sequencer::tests::replay_rejects_a_repeated_seq ... ok
[INFO] [stdout] test sequencer::tests::scenario_fires_one_stop_and_leaves_one_dormant ... ok
[INFO] [stdout] test sequencer::tests::seq_at_the_limit_is_an_error_not_a_panic ... ok
[INFO] [stdout] test market_data::tests::feed_book_always_matches_the_engine_depth ... ok
[INFO] [stdout] test fix_gateway::tests::resting_order_taken_by_another_account_is_reported ... ok
[INFO] [stdout] test sequencer::tests::a_snapshot_that_cannot_be_written_does_not_stop_the_sequencer ... ok
[INFO] [stdout] test sequencer::tests::a_damaged_snapshot_falls_back_to_the_whole_log ... ok
[INFO] [stdout] test fix_gateway::tests::reconnect_recovers_the_lost_report_without_duplicating_the_order ... ok
[INFO] [stdout] test server::tests::accept_failures_are_classified ... ok
[INFO] [stdout] test sequencer::tests::a_state_that_does_not_decode_falls_back_to_the_whole_log ... ok
[INFO] [stdout] test sequencer::tests::a_state_the_configuration_refuses_falls_back_to_the_whole_log ... ok
[INFO] [stdout] test server::tests::client_that_drops_mid_session_does_not_affect_others ... ok
[INFO] [stdout] test sequencer::tests::both_books_survive_a_restart ... ok
[INFO] [stdout] test sequencer::tests::the_feed_rebuilt_from_the_state_follows_the_engine_after_a_restart ... ok
[INFO] [stdout] test server::tests::connections_beyond_the_limit_are_told_and_closed ... ok
[INFO] [stdout] test sequencer::tests::the_boot_writes_a_snapshot_when_it_replayed_something ... ok
[INFO] [stdout] test server::tests::forward_lets_a_sequence_jump_through ... ok
[INFO] [stdout] test server::tests::forward_skips_streams_that_were_not_subscribed ... ok
[INFO] [stdout] test server::tests::forward_skips_what_was_already_delivered ... ok
[INFO] [stdout] test server::tests::bad_lines_get_an_error_and_the_connection_keeps_working ... ok
[INFO] [stdout] test server::tests::house_account_cannot_log_in ... ok
[INFO] [stdout] test sequencer::tests::snapshots_are_written_only_at_multiples_of_the_interval ... ok
[INFO] [stdout] test server::tests::l1_subscriber_sees_top_and_trades_but_no_depth ... ok
[INFO] [stdout] test sequencer::tests::a_snapshot_ahead_of_the_log_stops_the_boot ... ok
[INFO] [stdout] test server::tests::line_of_exactly_the_limit_is_accepted ... ok
[INFO] [stdout] test server::tests::fill_from_another_session_arrives_before_the_refusal_it_explains ... ok
[INFO] [stdout] test server::tests::half_a_line_survives_feed_updates_arriving_in_between ... ok
[INFO] [stdout] test server::tests::nothing_but_login_is_accepted_before_login ... ok
[INFO] [stdout] test server::tests::oversized_line_closes_only_that_connection ... ok
[INFO] [stdout] test server::tests::second_instrument_trades_on_its_own_book_and_feed ... ok
[INFO] [stdout] test server::tests::second_login_is_refused_and_the_session_keeps_its_account ... ok
[INFO] [stdout] test server::tests::line_limit_counts_bytes_from_interrupted_reads ... ok
[INFO] [stdout] test server::tests::stop_fired_by_its_own_session_is_reported_in_full ... ok
[INFO] [stdout] test server::tests::stopped_core_ends_the_session_with_an_error ... ok
[INFO] [stdout] test server::tests::stop_fired_by_another_session_reaches_only_those_it_concerns ... ok
[INFO] [stdout] test server::tests::messages_are_framed_by_newline_not_by_writes ... ok
[INFO] [stdout] test server::tests::subscribing_again_brings_a_fresh_snapshot ... ok
[INFO] [stdout] test server::tests::subscribing_to_an_unknown_instrument_is_an_error ... ok
[INFO] [stdout] test server::tests::idle_session_is_told_and_closed ... ok
[INFO] [stdout] test sequencer::tests::zeroed_tail_recovers_the_whole_log ... ok
[INFO] [stdout] test server::tests::subscriber_gets_a_snapshot_then_the_book_changes_live ... ok
[INFO] [stdout] test server::tests::clients_trade_over_tcp ... ok
[INFO] [stdout] test sequencer::tests::snapshot_counters_must_be_present_and_positive ... ok
[INFO] [stdout] test market_data::tests::snapshot_plus_later_updates_rebuild_the_final_book ... ok
[INFO] [stdout] test core_thread::tests::concurrent_sessions_are_all_answered_and_the_log_replays_to_the_same_state ... ok
[INFO] [stdout] test server::tests::active_session_outlives_the_timeout ... ok
[INFO] [stdout] test server::tests::client_that_never_reads_holds_back_only_itself ... ok
[INFO] [stdout] test server::tests::line_trickled_slower_than_the_timeout_is_cut ... ok
[INFO] [stdout] test server::tests::subscriber_is_not_cut_for_being_quiet ... ok
[INFO] [stdout] test sequencer::tests::crash_at_any_byte_recovers_the_state_of_the_complete_commands ... ok
[INFO] [stdout] test sequencer::tests::flipped_bit_at_any_byte_recovers_everything_before_its_record ... ok
[INFO] [stdout] test sequencer::tests::booting_from_a_snapshot_is_the_same_as_replaying_the_whole_log ... ok
[INFO] [stdout] test sequencer::tests::batches_are_indistinguishable_from_one_submit_per_intent ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 146 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 29.32s
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/release/build/edge/16325f594e5b5cca/out/edge-16325f594e5b5cca)
[INFO] [stdout] 
[INFO] [stdout] running 41 tests
[INFO] [stdout] test parse::tests::parses_cancel ... ok
[INFO] [stdout] test parse::tests::parses_sell_as_ask ... ok
[INFO] [stdout] test parse::tests::parses_deposit_and_balance ... ok
[INFO] [stdout] test parse::tests::parses_stop_market_and_stop_limit ... ok
[INFO] [stdout] test parse::tests::rejects_unknown_time_in_force ... ok
[INFO] [stdout] test parse::tests::rejects_values_the_domain_refuses ... ok
[INFO] [stdout] test parse::tests::rejects_non_numeric_price_and_lots ... ok
[INFO] [stdout] test parse::tests::parses_quit ... ok
[INFO] [stdout] test parse::tests::parses_market_order ... ok
[INFO] [stdout] test parse::tests::rejects_unknown_command ... ok
[INFO] [stdout] test parse::tests::parses_market_protection_with_optional_time_in_force ... ok
[INFO] [stdout] test parse::tests::parses_optional_time_in_force ... ok
[INFO] [stdout] test parse::tests::rejects_wrong_number_of_arguments ... ok
[INFO] [stdout] test parse::tests::stop_trigger_must_be_a_price ... ok
[INFO] [stdout] test parse::tests::stop_with_protection_is_an_error ... ok
[INFO] [stdout] test parse::tests::tolerates_extra_whitespace ... ok
[INFO] [stdout] test tests::order_without_funds_is_rejected ... ok
[INFO] [stdout] test tests::protected_market_buy_sweeps_only_within_protection ... ok
[INFO] [stdout] test tests::quit_stops_reading ... ok
[INFO] [stdout] test parse::tests::parses_buy_as_bid ... ok
[INFO] [stdout] test tests::crossing_orders_print_fill_and_remainder ... ok
[INFO] [stdout] test tests::blank_lines_are_ignored ... ok
[INFO] [stdout] test parse::tests::rejects_cancel_with_bad_id ... ok
[INFO] [stdout] test tests::cancel_removes_resting_remainder ... ok
[INFO] [stdout] test tests::deposit_then_balance_shows_reserved_part ... ok
[INFO] [stdout] test tests::fat_finger_and_oversized_orders_are_rejected_and_plain_market_buy_works ... ok
[INFO] [stdout] test tests::invalid_input_reports_error_and_does_not_consume_an_order_id ... ok
[INFO] [stdout] test tests::ioc_cancels_remainder_and_fok_expires_without_fills ... ok
[INFO] [stdout] test tests::market_sell_sweeps_and_never_rests_while_market_buy_needs_protection ... ok
[INFO] [stdout] test tests::off_tick_price_is_rejected_by_the_core_and_consumes_an_order_id ... ok
[INFO] [stdout] test tests::wal::args_select_the_wal_path_and_the_snapshot_interval ... ok
[INFO] [stdout] test tests::zero_lots_is_rejected_by_the_core_and_consumes_an_order_id ... ok
[INFO] [stdout] test parse::tests::rejects_empty_line ... ok
[INFO] [stdout] test tests::wal::fresh_log_boots_empty ... ok
[INFO] [stdout] test parse::tests::rejects_protection_on_limit_order_and_bad_bound ... ok
[INFO] [stdout] test tests::wal::intact_frame_that_is_not_a_record_fails_the_boot ... ok
[INFO] [stdout] test tests::wal::torn_tail_is_cut_and_reported_on_boot ... ok
[INFO] [stdout] test tests::wal::resting_orders_survive_restart_and_still_match ... ok
[INFO] [stdout] test tests::wal::order_ids_continue_after_restart ... ok
[INFO] [stdout] test tests::wal::restart_rebuilds_the_same_state_as_an_uninterrupted_session ... ok
[INFO] [stdout] test tests::wal::restart_from_a_snapshot_replays_only_the_rest_of_the_log ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 41 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.05s
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/bin/feed.rs (/opt/rustwide/target/release/build/edge/adb47bfd6b51a119/out/feed-adb47bfd6b51a119)
[INFO] [stdout] 
[INFO] [stdout] running 3 tests
[INFO] [stdout] test tests::bad_arguments_show_usage ... ok
[INFO] [stdout] test tests::every_flag_in_any_order ... ok
[INFO] [stdout] test tests::defaults_follow_l2_of_the_only_instrument_on_loopback ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/bin/server.rs (/opt/rustwide/target/release/build/edge/02e6dc793f1834e8/out/server-02e6dc793f1834e8)
[INFO] [stdout] 
[INFO] [stdout] running 3 tests
[INFO] [stdout] test tests::defaults_to_loopback_in_memory ... ok
[INFO] [stdout] test tests::flags_in_any_order ... ok
[INFO] [stdout] test tests::bad_arguments_show_usage ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/release/build/exchange-core/f347b83fe73b4c9d/out/exchange_core-f347b83fe73b4c9d)
[INFO] [stdout] 
[INFO] [stdout] running 202 tests
[INFO] [stdout] test book::tests::can_fill_completely_sums_crossing_levels ... ok
[INFO] [stdout] test book::tests::cancel_keeps_time_priority_of_the_others ... ok
[INFO] [stdout] test book::tests::cancel_removes_resting_order_and_returns_it_cancelled ... ok
[INFO] [stdout] test book::tests::cancel_twice_is_unknown_the_second_time ... ok
[INFO] [stdout] test book::tests::cancel_unknown_order_changes_nothing ... ok
[INFO] [stdout] test book::tests::cancel_by_another_account_changes_nothing ... ok
[INFO] [stdout] test book::tests::can_fill_completely_is_false_on_empty_side ... ok
[INFO] [stdout] test book::tests::depth_follows_partial_fills_and_cancels ... ok
[INFO] [stdout] test book::tests::depth_sums_each_price_best_first_on_both_sides ... ok
[INFO] [stdout] test book::tests::empty_book_has_no_depth ... ok
[INFO] [stdout] test book::tests::exact_match_empties_level ... ok
[INFO] [stdout] test book::tests::fok_with_enough_liquidity_fills_across_levels ... ok
[INFO] [stdout] test book::tests::fok_without_enough_liquidity_expires_and_leaves_book_untouched ... ok
[INFO] [stdout] test book::tests::fully_filled_maker_leaves_the_index ... ok
[INFO] [stdout] test book::tests::ioc_fully_filled_leaves_nothing ... ok
[INFO] [stdout] test book::tests::can_fill_completely_reads_bids_from_highest ... ok
[INFO] [stdout] test book::tests::ioc_without_liquidity_is_cancelled_entirely ... ok
[INFO] [stdout] test book::tests::market_buy_sweeps_levels_at_maker_prices ... ok
[INFO] [stdout] test book::tests::market_fok_fills_or_expires_by_total_liquidity ... ok
[INFO] [stdout] test book::tests::ask_taker_sweeps_bids_from_highest ... ok
[INFO] [stdout] test book::tests::ioc_cancels_remainder_after_partial_fill ... ok
[INFO] [stdout] test book::tests::market_remainder_is_cancelled_even_when_gtc ... ok
[INFO] [stdout] test book::tests::market_on_empty_book_is_cancelled_entirely ... ok
[INFO] [stdout] test book::tests::cancel_partially_filled_order_returns_what_was_left ... ok
[INFO] [stdout] test book::tests::outcome_reports_nothing_rested_when_fully_filled ... ok
[INFO] [stdout] test book::tests::partial_fill_keeps_maker_at_front ... ok
[INFO] [stdout] test book::tests::market_sell_hits_highest_bid_first ... ok
[INFO] [stdout] test book::tests::protected_market_buy_stops_at_its_protection ... ok
[INFO] [stdout] test book::tests::protected_market_sell_stops_at_its_protection ... ok
[INFO] [stdout] test book::tests::outcome_reports_rested_remainder ... ok
[INFO] [stdout] test book::tests::sweeps_levels_at_maker_price ... ok
[INFO] [stdout] test book::tests::taker_rests_when_book_is_empty ... ok
[INFO] [stdout] test book::tests::taker_rests_when_prices_do_not_cross ... ok
[INFO] [stdout] test domain::tests::amount_rejects_negative_and_accepts_zero ... ok
[INFO] [stdout] test domain::tests::checked_sub_refuses_to_go_negative ... ok
[INFO] [stdout] test domain::tests::domain_error_messages_carry_the_value ... ok
[INFO] [stdout] test domain::tests::empty_fill_is_rejected_and_changes_nothing ... ok
[INFO] [stdout] test domain::tests::fee_is_exact_when_it_divides ... ok
[INFO] [stdout] test domain::tests::fee_is_zero_only_for_zero_rate_or_zero_value ... ok
[INFO] [stdout] test domain::tests::checked_sub_subtracts_down_to_zero ... ok
[INFO] [stdout] test domain::tests::amount_checked_arithmetic_refuses_overflow_and_negatives ... ok
[INFO] [stdout] test domain::tests::complete_fill_moves_to_filled ... ok
[INFO] [stdout] test book::tests::same_level_matches_fifo ... ok
[INFO] [stdout] test domain::tests::fee_rounds_up_any_fraction ... ok
[INFO] [stdout] test domain::tests::fill_on_filled_order_is_overfill ... ok
[INFO] [stdout] test domain::tests::fill_on_order_not_yet_accepted_is_rejected_and_changes_nothing ... ok
[INFO] [stdout] test domain::tests::instrument_accepts_only_multiples_of_tick ... ok
[INFO] [stdout] test domain::tests::instrument_keeps_its_specification ... ok
[INFO] [stdout] test domain::tests::fills_can_complete_at_once_or_repeat_partially ... ok
[INFO] [stdout] test domain::tests::instrument_rejects_zero_lot_size ... ok
[INFO] [stdout] test domain::tests::happy_path_is_legal ... ok
[INFO] [stdout] test domain::tests::limit_bid_crosses_asks_at_or_below_its_price ... ok
[INFO] [stdout] test domain::tests::instrument_rejects_same_asset_on_both_sides ... ok
[INFO] [stdout] test domain::tests::limit_ask_crosses_bids_at_or_above_its_price ... ok
[INFO] [stdout] test domain::tests::full_rate_fee_is_the_whole_value_even_at_the_limit ... ok
[INFO] [stdout] test domain::tests::lots_accepts_zero ... ok
[INFO] [stdout] test domain::tests::lots_rejects_negative ... ok
[INFO] [stdout] test domain::tests::market_order_rejects_zero_lots ... ok
[INFO] [stdout] test domain::tests::market_order_has_no_limit_price ... ok
[INFO] [stdout] test domain::tests::multiplications_by_lots_refuse_overflow ... ok
[INFO] [stdout] test domain::tests::new_cannot_skip_acceptance ... ok
[INFO] [stdout] test domain::tests::nothing_returns_to_new ... ok
[INFO] [stdout] test domain::tests::only_new_can_be_rejected_or_accepted ... ok
[INFO] [stdout] test domain::tests::order_keeps_the_requested_time_in_force ... ok
[INFO] [stdout] test domain::tests::new_order_starts_new_with_everything_remaining ... ok
[INFO] [stdout] test domain::tests::overfill_is_rejected_and_changes_nothing ... ok
[INFO] [stdout] test domain::tests::partial_fill_reduces_remaining_and_moves_to_partially_filled ... ok
[INFO] [stdout] test domain::tests::price_accepts_positive ... ok
[INFO] [stdout] test domain::tests::price_bound_is_the_limit_or_the_protection ... ok
[INFO] [stdout] test domain::tests::partial_order_can_be_cancelled_but_not_expired ... ok
[INFO] [stdout] test domain::tests::order_rejects_zero_lots ... ok
[INFO] [stdout] test domain::tests::bps_rejects_more_than_full ... ok
[INFO] [stdout] test domain::tests::market_crosses_any_price_on_both_sides ... ok
[INFO] [stdout] test domain::tests::price_orders_ascending ... ok
[INFO] [stdout] test domain::tests::protected_market_buy_crosses_only_up_to_its_protection ... ok
[INFO] [stdout] test domain::tests::protected_market_sell_crosses_only_down_to_its_protection ... ok
[INFO] [stdout] test domain::tests::successive_partial_fills_end_filled ... ok
[INFO] [stdout] test domain::tests::transition_applies_legal_move ... ok
[INFO] [stdout] test domain::tests::transition_refuses_illegal_move_and_keeps_status ... ok
[INFO] [stdout] test domain::tests::tick_of_one_accepts_every_price ... ok
[INFO] [stdout] test domain::tests::terminal_states_never_leave ... ok
[INFO] [stdout] test engine::snapshot::tests::bytes_that_are_not_exactly_a_state_are_refused ... ok
[INFO] [stdout] test engine::snapshot::tests::crossed_book_is_refused ... ok
[INFO] [stdout] test engine::snapshot::tests::duplicated_instrument_in_the_configuration_is_refused ... ok
[INFO] [stdout] test engine::snapshot::tests::house_account_never_has_open_orders ... ok
[INFO] [stdout] test engine::snapshot::tests::instrument_missing_from_the_configuration_is_refused ... ok
[INFO] [stdout] test engine::snapshot::tests::lists_out_of_their_fixed_order_are_refused ... ok
[INFO] [stdout] test engine::snapshot::tests::only_gtc_limits_rest_and_only_stops_sleep ... ok
[INFO] [stdout] test engine::snapshot::tests::order_above_the_current_maximum_is_refused ... ok
[INFO] [stdout] test engine::snapshot::tests::order_ids_and_seqs_are_unique ... ok
[INFO] [stdout] test domain::tests::price_rejects_zero_and_negative ... ok
[INFO] [stdout] test domain::tests::same_asset_is_checked_before_lot_size ... ok
[INFO] [stdout] test engine::snapshot::tests::prices_off_the_tick_are_refused ... ok
[INFO] [stdout] test engine::snapshot::tests::partially_filled_stop_is_refused ... ok
[INFO] [stdout] test engine::snapshot::tests::order_on_the_wrong_side_or_instrument_is_refused ... ok
[INFO] [stdout] test engine::snapshot::tests::remaining_must_be_between_one_and_the_total ... ok
[INFO] [stdout] test engine::snapshot::tests::stop_that_the_last_trade_already_reached_is_refused ... ok
[INFO] [stdout] test engine::snapshot::tests::supply_that_does_not_fit_is_refused ... ok
[INFO] [stdout] test engine::snapshot::tests::reservation_that_does_not_fit_is_an_error ... ok
[INFO] [stdout] test engine::snapshot::tests::reserved_balance_must_match_the_open_orders ... ok
[INFO] [stdout] test engine::tests::buy_reserves_the_fee_of_one_lot_per_lot ... ok
[INFO] [stdout] test engine::snapshot::tests::the_same_state_is_always_the_same_bytes ... ok
[INFO] [stdout] test engine::snapshot::tests::the_fixture_covers_every_kind_of_open_order ... ok
[INFO] [stdout] test engine::tests::buy_without_funds_is_rejected_and_never_reaches_the_book ... ok
[INFO] [stdout] test engine::tests::cancel_by_another_account_is_rejected_and_order_stays ... ok
[INFO] [stdout] test engine::tests::cancel_of_unknown_order_is_rejected ... ok
[INFO] [stdout] test engine::tests::cancel_resting_order_emits_cancelled_with_remainder ... ok
[INFO] [stdout] test engine::tests::cancel_releases_exactly_what_was_still_reserved ... ok
[INFO] [stdout] test engine::tests::cancelling_a_dormant_stop_releases_its_reserve_and_checks_the_owner ... ok
[INFO] [stdout] test engine::tests::collar_band_rounds_up_like_the_fee ... ok
[INFO] [stdout] test engine::tests::cascade_fires_stops_from_the_closest_trigger_out ... ok
[INFO] [stdout] test engine::tests::collar_edge_is_reference_plus_or_minus_the_band ... ok
[INFO] [stdout] test engine::tests::collar_edge_saturates_instead_of_overflowing_or_hitting_zero ... ok
[INFO] [stdout] test engine::tests::deposit_credits_available ... ok
[INFO] [stdout] test engine::tests::deposit_beyond_supply_is_rejected ... ok
[INFO] [stdout] test engine::tests::duplicate_instrument_is_a_config_error ... ok
[INFO] [stdout] test engine::tests::duplicate_order_id_is_rejected_and_original_stays ... ok
[INFO] [stdout] test engine::tests::empty_order_is_rejected_before_the_book ... ok
[INFO] [stdout] test engine::tests::engine_knows_the_instrument_specification ... ok
[INFO] [stdout] test engine::tests::fat_finger_buy_above_the_collar_is_rejected ... ok
[INFO] [stdout] test engine::tests::fat_finger_sell_below_the_collar_is_rejected ... ok
[INFO] [stdout] test engine::tests::fill_concerns_both_accounts_and_a_self_trade_only_once ... ok
[INFO] [stdout] test engine::tests::explicit_protection_outside_the_collar_is_rejected ... ok
[INFO] [stdout] test engine::tests::fills_come_before_rested_remainder ... ok
[INFO] [stdout] test engine::tests::fired_buy_stop_never_pays_above_what_it_reserved ... ok
[INFO] [stdout] test engine::tests::fired_stop_that_fails_pre_trade_risk_is_cancelled_and_released ... ok
[INFO] [stdout] test engine::tests::fired_stop_limit_rests_its_remainder_at_the_limit ... ok
[INFO] [stdout] test engine::tests::cancel_in_unknown_instrument_is_rejected ... ok
[INFO] [stdout] test engine::tests::fok_without_liquidity_emits_only_expired ... ok
[INFO] [stdout] test engine::tests::house_account_cannot_trade ... ok
[INFO] [stdout] test engine::tests::instruments_do_not_match_each_other ... ok
[INFO] [stdout] test engine::tests::ioc_remainder_and_expired_fok_release_their_reserve ... ok
[INFO] [stdout] test engine::tests::id_of_a_dormant_stop_cannot_be_reused ... ok
[INFO] [stdout] test engine::tests::ioc_remainder_emits_cancelled_after_fills ... ok
[INFO] [stdout] test engine::tests::limit_price_on_tick_is_accepted ... ok
[INFO] [stdout] test engine::tests::limit_price_off_tick_is_rejected_before_the_book ... ok
[INFO] [stdout] test engine::tests::fully_filled_order_does_not_rest ... ok
[INFO] [stdout] test engine::tests::market_order_has_no_price_to_check ... ok
[INFO] [stdout] test engine::tests::market_order_without_reference_price_is_rejected ... ok
[INFO] [stdout] test engine::tests::order_larger_than_the_limit_is_rejected_before_reserving ... ok
[INFO] [stdout] test engine::tests::order_without_counterparty_rests ... ok
[INFO] [stdout] test engine::tests::partially_filled_buyer_keeps_exactly_the_remainder_reserved ... ok
[INFO] [stdout] test engine::tests::passive_order_far_from_the_market_is_fine ... ok
[INFO] [stdout] test engine::tests::per_fill_rounding_is_covered_by_the_per_lot_reserve ... ok
[INFO] [stdout] test engine::tests::maker_buyer_pays_no_fee_and_gets_the_fee_reserve_back ... ok
[INFO] [stdout] test engine::tests::market_sell_reserves_base_and_releases_unfilled_part ... ok
[INFO] [stdout] test engine::tests::protected_market_buy_reserves_its_bound_and_returns_the_rest ... ok
[INFO] [stdout] test engine::tests::protected_market_buy_without_funds_for_its_bound_is_rejected ... ok
[INFO] [stdout] test engine::tests::rested_sell_carries_its_side_and_limit_price ... ok
[INFO] [stdout] test engine::tests::resting_buy_reserves_price_times_lots ... ok
[INFO] [stdout] test engine::tests::plain_market_buy_gets_the_collar_as_protection_and_stops_there ... ok
[INFO] [stdout] test engine::tests::section_4_2_example_with_taker_fee ... ok
[INFO] [stdout] test engine::tests::resting_sell_reserves_lots_times_lot_size ... ok
[INFO] [stdout] test engine::tests::stop_arms_with_its_reserve_and_stays_out_of_the_book ... ok
[INFO] [stdout] test engine::tests::stop_already_reached_by_the_last_trade_is_rejected ... ok
[INFO] [stdout] test engine::tests::stop_waits_for_a_trade_and_fires_after_the_order_that_reached_it ... ok
[INFO] [stdout] test engine::tests::taker_buyer_gets_price_improvement_back ... ok
[INFO] [stdout] test engine::tests::taker_seller_pays_the_fee_out_of_the_proceeds ... ok
[INFO] [stdout] test engine::tests::trade_moves_base_and_quote_between_buyer_and_seller ... ok
[INFO] [stdout] test engine::tests::trades_in_one_instrument_do_not_fire_stops_of_another ... ok
[INFO] [stdout] test engine::tests::unknown_instrument_is_rejected ... ok
[INFO] [stdout] test engine::tests::stop_prices_must_be_on_the_tick ... ok
[INFO] [stdout] test engine::tests::zero_collar_edge_is_the_reference_itself ... ok
[INFO] [stdout] test engine::tests::stops_with_the_same_trigger_fire_in_arrival_order ... ok
[INFO] [stdout] test ledger::tests::deposit_adds_to_available ... ok
[INFO] [stdout] test ledger::tests::deposit_beyond_total_supply_changes_nothing ... ok
[INFO] [stdout] test ledger::tests::reserve_and_release_move_between_buckets ... ok
[INFO] [stdout] test ledger::tests::reserve_beyond_available_changes_nothing ... ok
[INFO] [stdout] test ledger::tests::settle_applies_the_section_4_2_fill_with_fee ... ok
[INFO] [stdout] test ledger::tests::release_beyond_reserved_changes_nothing ... ok
[INFO] [stdout] test ledger::tests::settle_is_all_or_nothing_when_transfers_share_a_balance ... ok
[INFO] [stdout] test ledger::tests::settle_moves_reserved_of_one_account_to_available_of_another ... ok
[INFO] [stdout] test ledger::tests::settle_of_nothing_changes_nothing ... ok
[INFO] [stdout] test ledger::tests::settle_to_the_same_account_releases_into_available ... ok
[INFO] [stdout] test ledger::tests::supply_is_per_asset ... ok
[INFO] [stdout] test ledger::tests::unknown_account_has_zero_balance ... ok
[INFO] [stdout] test record::tests::deposit_belongs_to_the_ledger ... ok
[INFO] [stdout] test record::proptests::roundtrip ... ok
[INFO] [stdout] test book::proptests::book_has_no_empty_levels ... ok
[INFO] [stdout] test record::tests::new_derives_the_partition_from_the_command ... ok
[INFO] [stdout] test book::proptests::fok_expires_only_without_liquidity ... ok
[INFO] [stdout] test record::tests::partition_disagreeing_with_the_command_is_rejected ... ok
[INFO] [stdout] test record::tests::negative_amount_in_bytes_is_rejected ... ok
[INFO] [stdout] test record::tests::roundtrip_of_a_known_record ... ok
[INFO] [stdout] test record::tests::record_written_before_stops_existed_still_reads ... ok
[INFO] [stdout] test record::tests::submit_and_cancel_belong_to_their_instrument ... ok
[INFO] [stdout] test record::tests::trailing_bytes_are_rejected ... ok
[INFO] [stdout] test record::tests::truncated_record_is_rejected ... ok
[INFO] [stdout] test record::tests::zero_price_in_bytes_is_rejected ... ok
[INFO] [stdout] test record::tests::deposit_record_has_a_fixed_byte_layout ... ok
[INFO] [stdout] test book::proptests::fills_respect_price_time_priority ... ok
[INFO] [stdout] test book::proptests::fok_is_all_or_nothing ... ok
[INFO] [stdout] test book::proptests::matches_reference_model ... ok
[INFO] [stdout] test book::proptests::book_is_never_crossed ... ok
[INFO] [stdout] test book::proptests::only_gtc_limit_orders_rest_at_their_own_price ... ok
[INFO] [stdout] test book::proptests::taker_lots_are_conserved ... ok
[INFO] [stdout] test book::proptests::resting_orders_have_status_coherent_with_remaining ... ok
[INFO] [stdout] test ledger::proptests::value_is_conserved_and_failures_change_nothing ... ok
[INFO] [stdout] test book::proptests::index_stays_in_sync_under_submits_and_cancels ... ok
[INFO] [stdout] test engine::proptests::balances_match_an_independent_oracle ... ok
[INFO] [stdout] test engine::proptests::snapshot_restores_an_engine_that_behaves_the_same ... ok
[INFO] [stdout] test engine::proptests::value_is_conserved_and_reservations_are_consistent ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 202 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.91s
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/release/build/exchange-fix/aee4b52695473b98/out/exchange_fix-aee4b52695473b98)
[INFO] [stdout] 
[INFO] [stdout] running 70 tests
[INFO] [stdout] test admin::tests::logon_requires_no_encryption_and_positive_heartbeat ... ok
[INFO] [stdout] test admin::tests::app_message_refuses_admin_type_and_header_tags ... ok
[INFO] [stdout] test admin::tests::missing_or_unreadable_seq_is_unsequenced ... ok
[INFO] [stdout] test admin::tests::orig_sending_time_without_possible_duplicate_is_ignored ... ok
[INFO] [stdout] test admin::tests::missing_header_tags_are_rejected_by_tag ... ok
[INFO] [stdout] test admin::tests::reads_the_header ... ok
[INFO] [stdout] test admin::tests::malformed_sending_time_is_incorrect_format ... ok
[INFO] [stdout] test admin::tests::resend_request_rejects_bad_range ... ok
[INFO] [stdout] test admin::tests::reject_with_unknown_reason_still_parses ... ok
[INFO] [stdout] test admin::tests::parse_inverts_to_message ... ok
[INFO] [stdout] test admin::tests::seq_num_starts_at_one_and_never_wraps ... ok
[INFO] [stdout] test admin::tests::sequence_reset_gap_fill_defaults_to_no ... ok
[INFO] [stdout] test session::tests::any_traffic_answers_a_pending_test_request ... ok
[INFO] [stdout] test session::tests::first_message_other_than_logon_drops_the_connection ... ok
[INFO] [stdout] test admin::tests::app_message_loses_header_tags_and_keeps_its_fields ... ok
[INFO] [stdout] test proptests::single_corrupted_byte_never_decodes ... ok
[INFO] [stdout] test admin::tests::possible_duplicate_requires_orig_sending_time ... ok
[INFO] [stdout] test session::tests::below_expected_without_possible_duplicate_logs_out ... ok
[INFO] [stdout] test session::tests::gap_asks_for_resend_once_and_discards_until_filled ... ok
[INFO] [stdout] test session::tests::gap_fill_backwards_is_rejected ... ok
[INFO] [stdout] test session::tests::heartbeat_goes_out_after_an_interval_without_sending ... ok
[INFO] [stdout] test session::tests::logon_never_arriving_times_out ... ok
[INFO] [stdout] test session::tests::logout_is_answered_and_disconnects ... ok
[INFO] [stdout] test session::tests::in_sequence_app_message_is_delivered ... ok
[INFO] [stdout] test session::tests::initiator_opens_with_logon_and_acceptor_waits ... ok
[INFO] [stdout] test session::tests::logon_ahead_of_expected_is_accepted_then_asks_for_resend ... ok
[INFO] [stdout] test session::tests::possible_duplicate_below_expected_is_ignored ... ok
[INFO] [stdout] test session::tests::resend_ending_in_admin_messages_fills_up_to_the_next_seq ... ok
[INFO] [stdout] test session::tests::resend_replays_app_messages_and_gap_fills_admin_ones ... ok
[INFO] [stdout] test session::tests::reset_mode_ignores_the_message_seq ... ok
[INFO] [stdout] test session::tests::messages_sent_while_offline_go_out_right_after_logon ... ok
[INFO] [stdout] test session::tests::nothing_happens_while_disconnected ... ok
[INFO] [stdout] test session::tests::silence_triggers_test_request_and_then_disconnect ... ok
[INFO] [stdout] test session::tests::acceptor_answers_logon_adopting_the_clients_heartbeat ... ok
[INFO] [stdout] test session::tests::test_request_is_answered_with_its_id ... ok
[INFO] [stdout] test session::tests::unexpected_comp_id_logs_out ... ok
[INFO] [stdout] test proptests::arbitrary_bytes_never_panic_and_always_make_progress ... ok
[INFO] [stdout] test admin::tests::survives_the_wire ... ok
[INFO] [stdout] test tests::checksum_is_byte_sum_modulo_256 ... ok
[INFO] [stdout] test tests::decodes_what_was_encoded ... ok
[INFO] [stdout] test proptests::decode_inverts_encode ... ok
[INFO] [stdout] test tests::decodes_only_the_first_of_two_glued_messages ... ok
[INFO] [stdout] test tests::encode_refuses_body_over_the_limit ... ok
[INFO] [stdout] test admin::tests::resend_request_end_zero_means_up_to_the_last ... ok
[INFO] [stdout] test session::tests::our_logout_waits_for_the_answer ... ok
[INFO] [stdout] test tests::every_proper_prefix_is_incomplete ... ok
[INFO] [stdout] test session::tests::malformed_message_in_sequence_is_rejected_and_consumes_the_seq ... ok
[INFO] [stdout] test tests::encode_wraps_body_in_begin_string_length_and_checksum ... ok
[INFO] [stdout] test tests::field_rejects_empty_value_and_soh ... ok
[INFO] [stdout] test proptests::stream_split_anywhere_yields_the_same_messages ... ok
[INFO] [stdout] test tests::message_rejects_envelope_tags_in_body ... ok
[INFO] [stdout] test tests::parse_field_splits_at_the_first_equals_sign ... ok
[INFO] [stdout] test tests::rejects_body_length_over_the_limit_without_waiting_for_it ... ok
[INFO] [stdout] test tests::garbled_skips_to_the_next_frame ... ok
[INFO] [stdout] test tests::rejects_body_not_starting_with_msg_type ... ok
[INFO] [stdout] test tests::rejects_envelope_tag_inside_body ... ok
[INFO] [stdout] test tests::rejects_malformed_body_length ... ok
[INFO] [stdout] test tests::rejects_malformed_fields ... ok
[INFO] [stdout] test tests::rejects_other_begin_string ... ok
[INFO] [stdout] test tests::rejects_trailer_away_from_where_body_length_points ... ok
[INFO] [stdout] test tests::rejects_wrong_checksum ... ok
[INFO] [stdout] test time::tests::epoch_is_midnight_of_1970 ... ok
[INFO] [stdout] test time::tests::last_instant_is_end_of_9999 ... ok
[INFO] [stdout] test time::tests::rejects_impossible_dates_and_times ... ok
[INFO] [stdout] test tests::resync_keeps_a_frame_start_cut_at_the_end ... ok
[INFO] [stdout] test tests::tag_zero_does_not_exist ... ok
[INFO] [stdout] test time::tests::accepts_form_without_millis ... ok
[INFO] [stdout] test time::tests::parse_inverts_display ... ok
[INFO] [stdout] test time::tests::leap_day_of_2000_exists ... ok
[INFO] [stdout] test session::tests::every_app_message_arrives_exactly_once_and_in_order ... ok
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/release/build/exchange-wal/f14ecf645e0c3ced/out/exchange_wal-f14ecf645e0c3ced)
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 70 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.16s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 35 tests
[INFO] [stdout] test proptests::roundtrip ... ok
[INFO] [stdout] test proptests::flipped_bit_drops_its_record_and_everything_after ... ok
[INFO] [stdout] test file::tests::empty_batch_writes_nothing ... ok
[INFO] [stdout] test proptests::truncation_at_any_byte_keeps_only_complete_records ... ok
[INFO] [stdout] test file::tests::records_after_a_batch_land_after_it ... ok
[INFO] [stdout] test file::tests::failed_write_poisons_the_wal ... ok
[INFO] [stdout] test file::tests::torn_tail_is_cut_and_reported ... ok
[INFO] [stdout] test file::tests::corrupted_byte_drops_its_record_and_everything_after ... ok
[INFO] [stdout] test tests::checksum_covers_the_length_so_zeroed_header_is_not_a_record ... ok
[INFO] [stdout] test file::tests::failed_batch_poisons_the_wal ... ok
[INFO] [stdout] test file::tests::batch_survives_reopening ... ok
[INFO] [stdout] test snapshot::tests::missing_snapshot_is_none ... ok
[INFO] [stdout] test file::tests::append_after_recovery_lands_after_the_last_good_record ... ok
[INFO] [stdout] test tests::corrupted_length_is_caught_by_the_checksum ... ok
[INFO] [stdout] test tests::corrupted_crc_stops_decoding ... ok
[INFO] [stdout] test file::tests::records_survive_reopening ... ok
[INFO] [stdout] test tests::empty_log_has_no_records ... ok
[INFO] [stdout] test tests::corrupted_payload_stops_decoding_even_if_later_records_are_intact ... ok
[INFO] [stdout] test tests::empty_payload_is_a_valid_record ... ok
[INFO] [stdout] test snapshot::tests::a_wal_is_not_a_snapshot ... ok
[INFO] [stdout] test tests::decodes_records_in_order ... ok
[INFO] [stdout] test tests::encode_writes_little_endian_length_crc_and_payload ... ok
[INFO] [stdout] test tests::length_pointing_past_the_end_is_discarded ... ok
[INFO] [stdout] test tests::truncated_header_is_discarded ... ok
[INFO] [stdout] test tests::truncated_payload_is_discarded ... ok
[INFO] [stdout] test file::tests::fresh_path_creates_an_empty_log ... ok
[INFO] [stdout] test tests::zeroed_tail_is_discarded ... ok
[INFO] [stdout] test snapshot::tests::a_damaged_frame_is_refused ... ok
[INFO] [stdout] test snapshot::tests::new_snapshot_replaces_the_old_and_leaves_no_temporary ... ok
[INFO] [stdout] test snapshot::tests::empty_payload_is_a_snapshot_too ... ok
[INFO] [stdout] test snapshot::tests::written_snapshot_reads_back ... ok
[INFO] [stdout] test snapshot::tests::a_leftover_temporary_does_not_get_in_the_way ... ok
[INFO] [stdout] test file::tests::batch_writes_the_same_bytes_as_one_append_per_record ... ok
[INFO] [stdout] test snapshot::tests::a_crash_at_any_point_leaves_the_old_or_the_new_snapshot ... ok
[INFO] [stderr]    Doc-tests edge
[INFO] [stdout] test file::tests::crash_at_any_byte_of_a_batch_recovers_a_prefix ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 35 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.18s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stderr]    Doc-tests exchange_core
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stderr]    Doc-tests exchange_fix
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stderr]    Doc-tests exchange_wal
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "1d8ed6d270db5ab1b4dcd53437bb0498479288caa9d10705919add7d248c7d29", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "1d8ed6d270db5ab1b4dcd53437bb0498479288caa9d10705919add7d248c7d29", kill_on_drop: false }`
[INFO] [stdout] 1d8ed6d270db5ab1b4dcd53437bb0498479288caa9d10705919add7d248c7d29
