zmux 1.0.2

Rust implementation of the ZMux v1 stream multiplexing protocol
Documentation
{
  "schema": "zmux-case-sets-v1",
  "version": 1,
  "generated_from": "assets/golden_cases.json",
  "sets": {
    "codec_valid": [
      "frame_abort_cancelled",
      "frame_data_fin_empty",
      "frame_data_open_bidi_4_hi",
      "frame_data_open_metadata_info_ssh_hi",
      "frame_data_open_metadata_priority_2_hi",
      "frame_ping_minimal",
      "frame_pong_with_opaque",
      "frame_priority_update_priority_2",
      "frame_session_blocked_1024",
      "frame_session_max_data_1024",
      "frame_stop_sending_cancelled",
      "preface_auto_nonce_5",
      "preface_initiator_minimal",
      "preface_responder_minimal"
    ],
    "codec_invalid": [
      "invalid_noncanonical_varint_stream_id",
      "invalid_oversized_frame_for_receiver_limit",
      "invalid_truncated_varint62"
    ],
    "preface": [
      "preface_auto_equal_nonce_conflict",
      "preface_auto_nonce_5",
      "preface_auto_zero_nonce",
      "preface_control_payload_limit_too_small",
      "preface_duplicate_setting_id",
      "preface_extension_payload_limit_too_small",
      "preface_frame_payload_limit_too_small",
      "preface_initiator_minimal",
      "preface_invalid_role_value",
      "preface_responder_minimal"
    ],
    "stream_lifecycle": [
      "bidi_data_then_fin",
      "check_local_open_possible_with_open_info_limited_by_tracked_memory_cap",
      "clear_write_queue_reservations_locked_rebuilds_tracked_set_from_seeded_streams",
      "clear_write_queue_reservations_locked_uses_tracked_set",
      "close_read_with_malformed_open_metadata_keeps_read_stop_without_committing_opener",
      "close_read_with_oversized_open_metadata_keeps_read_stop_without_committing_opener",
      "close_session_releases_provisional_open_metadata_prefix",
      "close_stream_on_session_releases_open_metadata_prefix",
      "close_write_with_malformed_open_metadata_without_committing_opener",
      "close_write_with_oversized_open_metadata_without_committing_opener",
      "compact_terminal_releases_open_info_bytes_and_open_metadata_prefix",
      "enforce_visible_accept_backlog_sheds_newest_when_open_info_budget_exceeded",
      "fail_provisional_releases_open_info_bytes_and_clears_open_metadata_prefix",
      "fail_unopened_local_stream_clears_open_metadata_prefix",
      "first_blocked_on_unused_stream_is_invalid",
      "first_max_data_on_unused_stream_is_invalid",
      "handle_data_frame_open_metadata_retains_open_info_after_payload_mutation",
      "late_data_after_close_read_honors_session_aggregate_cap",
      "late_data_after_peer_abort_is_ignored",
      "late_data_after_peer_reset_is_ignored",
      "local_concrete_id_close_read_open_metadata_opens_before_stop_sending",
      "local_concrete_id_close_with_error_queues_opening_abort",
      "local_concrete_id_close_write_open_metadata_queues_opening_fin",
      "local_open_cancel_before_first_frame_commit_does_not_consume_id",
      "local_zero_window_close_read_opens_before_stop_sending",
      "local_zero_window_close_write_open_metadata_queues_only_opening_fin",
      "local_zero_window_close_write_queues_only_opening_fin",
      "local_zero_window_write_final_open_metadata_opens_before_blocked",
      "local_zero_window_write_final_opens_before_blocked",
      "local_zero_window_write_open_metadata_opens_before_blocked",
      "local_zero_window_write_opens_before_blocked",
      "mark_peer_visible_clears_open_metadata_prefix",
      "open_metadata_flow_control_charges_only_trailing_application_bytes",
      "open_metadata_prefix_does_not_consume_zero_windows",
      "open_metadata_trailing_application_byte_over_stream_window_locally_aborts",
      "peer_first_abort_is_legal",
      "peer_first_reset_is_invalid",
      "peer_stream_id_gap_rejected",
      "prepare_write_burst_batch_caps_single_request_at_per_stream_hwm",
      "prepare_write_burst_batch_uses_smaller_session_queue_cap",
      "prepare_write_final_burst_batch_caps_single_request_at_per_stream_hwm",
      "prepare_write_final_wakes_on_session_max_data_increase",
      "prepare_write_wakes_on_session_max_data_increase",
      "provisional_open_limit_prevents_unbounded_head_of_line_stall",
      "read_stop_discard_restores_session_budget_but_not_stream_budget",
      "release_batch_reservations_clears_inflight_queued",
      "release_batch_reservations_wakes_distinct_streams_crossing_low_watermark",
      "release_receive_zero_window_wakes_write_waiters_when_memory_pressure_drops",
      "release_write_queue_reservation_untracks_drained_stream",
      "release_write_queue_reservation_wakes_blocked_write_at_low_watermark",
      "reserve_write_queue_tracks_only_queued_streams",
      "session_blocked_force_flushes_pending_credit_below_pacing_threshold",
      "session_flow_control_noop_controls_do_not_force_flush",
      "session_material_data_clears_noop_zero_length_data_budget",
      "session_max_data_increase_broadcasts_conn_write_wake",
      "stop_sending_requires_terminal_sender_followup",
      "stream_blocked_after_read_stop_force_flushes_session_only",
      "stream_blocked_force_flushes_pending_credit_below_pacing_threshold",
      "stream_flow_control_noop_controls_do_not_force_flush",
      "stream_noop_blocked_flood_triggers_protocol_close",
      "stream_noop_max_data_flood_triggers_protocol_close",
      "stream_noop_zero_length_data_flood_triggers_protocol_close",
      "suppress_write_batch_aggregates_inflight_queued_across_streams",
      "suppress_write_batch_marks_inflight_queued_for_accepted_requests",
      "terminal_control_ignored",
      "uni_wrong_direction_blocked_rejected",
      "uni_wrong_direction_data_rejected",
      "uni_wrong_side_max_data_rejected",
      "uni_wrong_side_stop_sending_rejected",
      "update_metadata_tightens_oversized_open_metadata_prefix_backing",
      "write_closes_session_when_tracked_memory_cap_would_be_exceeded",
      "write_deadline_expires_while_blocked_by_per_stream_queued_data_watermark",
      "write_deadline_expires_while_blocked_by_session_queued_data_watermark"
    ],
    "session_lifecycle": [
      "check_local_open_possible_limited_by_tracked_memory_cap",
      "direct_handle_close_frame_ignores_duplicate_malformed_payload",
      "direct_nonclose_handlers_ignored_when_closing",
      "direct_terminal_data_handler_ignored_when_closing",
      "duplicate_peer_close_ignored_before_parse_and_budget_accounting",
      "enforce_hidden_control_state_budget_sheds_hidden_state_under_tracked_memory_cap",
      "enforce_visible_accept_backlog_sheds_newest_under_tracked_memory_cap",
      "goaway_monotonic",
      "peer_close_after_transport_failure_still_parses_diagnostics",
      "peer_nonclose_frames_ignored_after_transport_failure",
      "reap_excess_tombstones_sheds_oldest_visible_tombstone_under_tracked_memory_cap",
      "session_abort_clears_streams_and_session_pending_state",
      "session_abort_returns_accept_before_closed_ch_when_close_frame_send_stalls",
      "session_abort_returns_accept_uni_before_closed_ch_when_close_frame_send_stalls",
      "session_abort_returns_blocked_read_before_closed_ch_when_close_frame_send_stalls",
      "session_abort_returns_blocked_write_before_closed_ch_when_close_frame_send_stalls",
      "session_abort_returns_blocked_write_final_before_closed_ch_when_close_frame_send_stalls",
      "session_abort_returns_provisional_commit_waiter_before_closed_ch_when_close_frame_send_stalls",
      "session_abort_returns_wait_after_closed_ch_when_close_frame_send_stalls",
      "session_blocked_ignored_while_closing",
      "session_blocked_replenishes_while_draining",
      "session_blocked_urgent_queue_returns_session_error_before_closed_ch_on_closeSession",
      "session_close_after_peer_error_close_returns_error",
      "session_close_after_peer_noerror_close_is_noop",
      "session_close_after_prior_goaway_sends_more_restrictive_replacement",
      "session_close_concurrent_calls_emit_single_close_frame",
      "session_close_does_not_wait_forever_for_buffered_close_done",
      "session_close_recomputes_final_goaway_after_drain_interval",
      "session_close_returns_accept_before_closed_ch_when_close_frame_send_stalls",
      "session_close_returns_accept_uni_before_closed_ch_when_close_frame_send_stalls",
      "session_close_returns_blocked_read_before_closed_ch_when_close_frame_send_stalls",
      "session_close_returns_blocked_write_before_closed_ch_when_close_frame_send_stalls",
      "session_close_returns_blocked_write_final_before_closed_ch_when_close_frame_send_stalls",
      "session_close_returns_provisional_commit_waiter_before_closed_ch_when_close_frame_send_stalls",
      "session_close_returns_wait_after_closed_ch_when_close_frame_send_stalls",
      "session_close_signals_control_notify_before_closed_ch_when_close_frame_send_stalls",
      "session_close_without_open_streams_only_sends_close",
      "session_close_write_deadline_restores_pending_priority_update_while_blocked_on_writer_queue",
      "session_concurrent_local_goaway_keeps_only_most_restrictive_pending_replacement",
      "session_control_flush_transfers_pending_priority_bytes_to_advisory_queue",
      "session_direct_priority_update_handler_ignored_while_closing",
      "session_drain_pending_control_frames_allows_draining_state",
      "session_drain_pending_control_frames_drops_nonclose_control_when_closing",
      "session_effective_control_change_clears_mixed_noop_control_budget",
      "session_effective_group_updates_do_not_trigger_churn_outside_group_fair",
      "session_effective_priority_update_clears_noop_priority_budget",
      "session_goaway_change_clears_mixed_noop_control_budget",
      "session_graceful_close_blocks_local_open_while_draining",
      "session_graceful_close_emits_goaway_then_close",
      "session_graceful_close_reclaims_committed_never_peer_visible_local_stream",
      "session_graceful_close_reclaims_provisional_never_peer_visible_local_stream",
      "session_graceful_close_waits_for_active_streams_before_close_frame",
      "session_handle_frame_matching_pong_clears_mixed_noop_control_budget",
      "session_handle_frame_unexpected_pong_flood_triggers_protocol_close",
      "session_hidden_abort_churn_triggers_protocol_close",
      "session_hidden_abort_churn_window_expiry_resets_counter",
      "session_ignored_abort_flood_triggers_protocol_close",
      "session_ignored_reset_flood_triggers_protocol_close",
      "session_ignored_stop_sending_flood_triggers_protocol_close",
      "session_ignored_terminal_stream_blocked_flood_triggers_protocol_close",
      "session_ignored_terminal_stream_max_data_flood_triggers_protocol_close",
      "session_ignored_terminal_stream_priority_update_flood_triggers_protocol_close",
      "session_inbound_control_byte_budget_triggers_protocol_close",
      "session_inbound_control_frame_budget_triggers_protocol_close",
      "session_inbound_data_session_memory_cap_triggers_internal_close",
      "session_inbound_ext_frame_budget_triggers_protocol_close",
      "session_inbound_mixed_control_ext_byte_budget_triggers_protocol_close",
      "session_inbound_mixed_control_ext_frame_budget_triggers_protocol_close",
      "session_inbound_ping_flood_triggers_protocol_close",
      "session_malformed_peer_pong_ignored_while_closing",
      "session_malformed_priority_update_ignored_while_closing",
      "session_matching_pong_clears_mixed_noop_control_budget",
      "session_max_data_applies_while_draining",
      "session_max_data_ignored_while_closing",
      "session_max_data_increase_clears_noop_budget",
      "session_mixed_noop_control_flood_triggers_protocol_close",
      "session_noop_goaway_flood_triggers_protocol_close",
      "session_noop_priority_update_flood_triggers_protocol_close",
      "session_noop_session_blocked_flood_triggers_protocol_close",
      "session_noop_session_max_data_flood_triggers_protocol_close",
      "session_peer_data_ignored_while_closing_without_side_effects",
      "session_peer_goaway_ignored_while_closing_without_side_effects",
      "session_peer_ping_ignored_while_closing",
      "session_peer_ping_replies_while_draining",
      "session_peer_pong_clears_outstanding_ping_while_draining",
      "session_peer_pong_ignored_while_closing",
      "session_peer_stream_controls_ignored_while_closing_without_side_effects",
      "session_priority_update_applies_while_draining",
      "session_priority_update_ignored_while_closing",
      "session_queue_pending_control_ignored_when_closing",
      "session_repeated_effective_group_rebucket_churn_triggers_protocol_close",
      "session_replenish_clears_noop_blocked_budget",
      "session_reset_change_clears_mixed_noop_control_budget",
      "session_standing_growth_suppressed_under_tracked_memory_pressure",
      "session_standing_growth_suppressed_while_released_credit_still_reflects_high_usage",
      "session_take_pending_priority_update_drops_when_closing",
      "session_take_pending_priority_update_handoff_respects_memory_cap",
      "session_take_pending_priority_update_handoff_transfers_tracked_bytes_to_advisory_queue",
      "session_unexpected_pong_flood_triggers_protocol_close",
      "session_visible_abort_churn_triggers_protocol_close",
      "session_visible_terminal_churn_ignores_accepted_stream",
      "session_visible_terminal_churn_ignores_bidi_reset_only",
      "session_visible_terminal_churn_window_expiry_resets_counter",
      "session_visible_uni_reset_churn_triggers_protocol_close",
      "session_write_deadline_restores_pending_priority_update_while_blocked_on_writer_queue",
      "stream_standing_growth_suppressed_under_tracked_memory_pressure",
      "stream_standing_growth_suppressed_while_released_credit_still_reflects_high_usage",
      "tracked_session_memory_includes_retained_state_residency",
      "visible_accept_backlog_bytes_refuse_newest_by_visibility_sequence",
      "visible_accept_backlog_bytes_track_growth_and_accept_pop",
      "visible_accept_backlog_counts_only_unaccepted_streams",
      "visible_accept_backlog_refuses_newest_stream"
    ],
    "flow_control": [
      "clear_write_queue_reservations_locked_rebuilds_tracked_set_from_seeded_streams",
      "clear_write_queue_reservations_locked_uses_tracked_set",
      "frame_data_exceeds_session_max_data",
      "frame_data_exceeds_stream_max_data",
      "late_data_after_close_read_exceeds_session_aggregate_cap",
      "late_data_after_close_read_honors_session_aggregate_cap",
      "late_data_after_peer_abort_is_ignored",
      "late_data_after_peer_reset_is_ignored",
      "local_zero_window_close_read_opens_before_stop_sending",
      "local_zero_window_close_write_open_metadata_queues_only_opening_fin",
      "local_zero_window_close_write_queues_only_opening_fin",
      "local_zero_window_write_final_open_metadata_opens_before_blocked",
      "local_zero_window_write_final_opens_before_blocked",
      "local_zero_window_write_open_metadata_opens_before_blocked",
      "local_zero_window_write_opens_before_blocked",
      "open_metadata_flow_control_charges_only_trailing_application_bytes",
      "open_metadata_prefix_does_not_consume_zero_windows",
      "open_metadata_trailing_application_byte_over_stream_window_locally_aborts",
      "prepare_write_burst_batch_caps_single_request_at_per_stream_hwm",
      "prepare_write_burst_batch_uses_smaller_session_queue_cap",
      "prepare_write_final_burst_batch_caps_single_request_at_per_stream_hwm",
      "prepare_write_final_wakes_on_session_max_data_increase",
      "prepare_write_wakes_on_session_max_data_increase",
      "read_stop_discard_restores_session_budget_but_not_stream_budget",
      "release_batch_reservations_clears_inflight_queued",
      "release_batch_reservations_wakes_distinct_streams_crossing_low_watermark",
      "release_receive_zero_window_wakes_write_waiters_when_memory_pressure_drops",
      "release_write_queue_reservation_untracks_drained_stream",
      "release_write_queue_reservation_wakes_blocked_write_at_low_watermark",
      "reserve_write_queue_tracks_only_queued_streams",
      "session_blocked_force_flushes_pending_credit_below_pacing_threshold",
      "session_flow_control_noop_controls_do_not_force_flush",
      "session_material_data_clears_noop_zero_length_data_budget",
      "session_max_data_increase_broadcasts_conn_write_wake",
      "stream_blocked_after_read_stop_force_flushes_session_only",
      "stream_blocked_force_flushes_pending_credit_below_pacing_threshold",
      "stream_flow_control_noop_controls_do_not_force_flush",
      "stream_noop_blocked_flood_triggers_protocol_close",
      "stream_noop_max_data_flood_triggers_protocol_close",
      "stream_noop_zero_length_data_flood_triggers_protocol_close",
      "suppress_write_batch_aggregates_inflight_queued_across_streams",
      "suppress_write_batch_marks_inflight_queued_for_accepted_requests",
      "write_closes_session_when_tracked_memory_cap_would_be_exceeded",
      "write_deadline_expires_while_blocked_by_per_stream_queued_data_watermark",
      "write_deadline_expires_while_blocked_by_session_queued_data_watermark"
    ],
    "unidirectional": [
      "frame_blocked_wrong_side_uni",
      "frame_max_data_wrong_side_uni",
      "frame_reset_wrong_side_uni",
      "frame_stop_sending_wrong_side_uni",
      "uni_wrong_direction_blocked_rejected",
      "uni_wrong_direction_data_rejected",
      "uni_wrong_side_max_data_rejected",
      "uni_wrong_side_stop_sending_rejected"
    ],
    "open_metadata": [
      "check_local_open_possible_with_open_info_limited_by_tracked_memory_cap",
      "close_read_with_malformed_open_metadata_keeps_read_stop_without_committing_opener",
      "close_read_with_oversized_open_metadata_keeps_read_stop_without_committing_opener",
      "close_session_releases_provisional_open_metadata_prefix",
      "close_stream_on_session_releases_open_metadata_prefix",
      "close_write_with_malformed_open_metadata_without_committing_opener",
      "close_write_with_oversized_open_metadata_without_committing_opener",
      "compact_terminal_releases_open_info_bytes_and_open_metadata_prefix",
      "enforce_visible_accept_backlog_sheds_newest_when_open_info_budget_exceeded",
      "fail_provisional_releases_open_info_bytes_and_clears_open_metadata_prefix",
      "fail_unopened_local_stream_clears_open_metadata_prefix",
      "frame_data_open_metadata_duplicate_singleton",
      "frame_data_open_metadata_info_ssh_hi",
      "frame_data_open_metadata_on_open_stream",
      "frame_data_open_metadata_priority_2_hi",
      "frame_data_open_metadata_without_capability",
      "handle_data_frame_open_metadata_retains_open_info_after_payload_mutation",
      "local_concrete_id_close_read_open_metadata_opens_before_stop_sending",
      "local_concrete_id_close_write_open_metadata_queues_opening_fin",
      "local_zero_window_close_write_open_metadata_queues_only_opening_fin",
      "local_zero_window_write_final_open_metadata_opens_before_blocked",
      "local_zero_window_write_open_metadata_opens_before_blocked",
      "mark_peer_visible_clears_open_metadata_prefix",
      "open_metadata_flow_control_charges_only_trailing_application_bytes",
      "open_metadata_prefix_does_not_consume_zero_windows",
      "open_metadata_trailing_application_byte_over_stream_window_locally_aborts",
      "update_metadata_tightens_oversized_open_metadata_prefix_backing"
    ],
    "priority_update": [
      "frame_priority_update_duplicate_singleton",
      "frame_priority_update_on_terminal_stream",
      "frame_priority_update_on_unused_stream",
      "frame_priority_update_priority_2",
      "frame_priority_update_tlv_value_overrun",
      "frame_priority_update_truncated_tlv_header",
      "frame_priority_update_without_capability",
      "session_close_write_deadline_restores_pending_priority_update_while_blocked_on_writer_queue",
      "session_direct_priority_update_handler_ignored_while_closing",
      "session_effective_priority_update_clears_noop_priority_budget",
      "session_ignored_terminal_stream_priority_update_flood_triggers_protocol_close",
      "session_malformed_priority_update_ignored_while_closing",
      "session_noop_priority_update_flood_triggers_protocol_close",
      "session_priority_update_applies_while_draining",
      "session_priority_update_ignored_while_closing",
      "session_take_pending_priority_update_drops_when_closing",
      "session_take_pending_priority_update_handoff_respects_memory_cap",
      "session_take_pending_priority_update_handoff_transfers_tracked_bytes_to_advisory_queue",
      "session_write_deadline_restores_pending_priority_update_while_blocked_on_writer_queue"
    ]
  }
}