Skip to content

Test remaining recovery functionality #1950

Description

@ctm

Do these tests from doc/recovery-1946-test-coverage.md

  • Real panic recovery, end to end
    • Build with --features panic-injection
    • set MB2_PANIC_INJECT=act, seat a live event, and confirm:
      • the thread unwinds
      • hand_aborts gains a row
      • clients see the HandAborted reset
      • the event resumes within budget
      • and after enough repeats the terminal fires
        • ring cashed out
        • tournament frozen
        • EventStatusChanged(Suspended) broadcast)
  • Unclean-restart boot recovery
    • kill -9 the server mid-hand
    • restart and confirm
      • each suspension_kind IS NULL
      • started event is aborted then recovered/terminated
  • Graceful drain -> exit -> boot resume
    • Run the runbook's websocket_tool --schedule-shutdown confirm
      • every event finishes its current hand and suspends,
      • the process exits 0
      • the next boot resumes each event losslessly with its waitlist
  • Past-due scheduled start
    • Schedule an event, keep the server down past its start_at, boot, and confirm it starts late.
  • Client rendering
    • The HandAborted reset and the ServerGoingDown/ServerShutdownCancelled countdown banners are WASM render paths; check them in a browser
  • Player motion restart test
    • Tables combine
      • Fire up a 6-seated event with 7 players
      • have a player lose or quit and have the two tables merge
      • restart the server and make sure it works
    • Player moved from one table to another
      • Fire up a 6-seated event with 9 players
      • have two players lose or quit on the 4 player table to force one player from the 5 player to move to the now 2 player
      • restart the server and make sure the moved player shows up on the right table and can play

Don't forget the rebalance restart test (which isn't in that document).

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

easyTrivial to do (even when tired!) and semi-worthwhiletestTest existing functionality (often manual tests of AI written code)

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions