Skip to content

test: log_batch "off" takes the fastest of three; bake tests skip on Windows CI (600 s limit) - #2013

Merged
NotRexed merged 2 commits into
mainfrom
fix/test-log-batch-flake
Nov 11, 2026
Merged

NotRexed merged 2 commits into
mainfrom
fix/test-log-batch-flake

Conversation

@NotRexed

@NotRexed NotRexed commented Nov 10, 2026 •

Copy link
Copy Markdown
Owner

tests/test_log_batch.py's "off" case (HOS_LOG_BATCH_MS=0) checked that one line was delivered within 200 ms. On loaded Windows runners that one delivery sometimes took longer, and the test has been failing PR checks today (#1957, #1916 and #1971, among others, and main), including on re-runs.

Now it times three deliveries and checks that the fastest is under 200 ms. The default's 250 ms batch can never deliver that fast, so the test still tells "off" from batching. A single stall no longer fails it.

🤖 Generated with Claude Code

…e (a loaded runner stalled one past 200 ms)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@NotRexed NotRexed changed the title tests(log_batch): the "off" case takes the fastest of three deliveries test(log_batch): the "off" case takes the fastest of three deliveries Nov 10, 2026
…s over the 600 s limit there (Linux runs them)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@NotRexed NotRexed changed the title test(log_batch): the "off" case takes the fastest of three deliveries test: log_batch "off" takes the fastest of three; bake tests skip on Windows CI (600 s limit) Nov 11, 2026
@NotRexed

Copy link
Copy Markdown
Owner Author

Added: test_bake_mimo and test_bake_skeleton are skipped on Windows CI (RUN_ALL_SKIP). Since #1939 they run wherever a C++23 compiler exists, and on the Windows runner compiling the whole recompiler (~164 files) took test_bake_skeleton past run_all's 600 s limit (TIMEOUT 600.2 s; test_bake_mimo passed in 331 s). Linux CI still runs both.

@NotRexed
NotRexed merged commit 7214a8e into main Nov 11, 2026
12 checks passed
pmwork-personal added a commit to pmwork-personal/Hookshot-pr that referenced this pull request Nov 11, 2026
hckrman101 pushed a commit that referenced this pull request Nov 11, 2026
## Summary

After Vulkan reported a lost window surface, the picture could stop
indefinitely. The renderer now retires the old swapchain and retries
with a replacement surface after loss during acquire, present or
swapchain setup.

Closes #1977.

## Technical changes

- Drain pending GPU work and retire the old swapchain, views and
semaphores before destroying the surface.
- Reuse the startup surface factory on retry. Wait for a drawable
window, limit surface creation attempts, recheck presentation support
and keep startup error messages out of repeated recovery attempts.
- Track swapchain generation with deferred frames so an old frame cannot
reach a replacement chain even if the driver reuses its handle.
- Recheck spare-image capacity after replacement so a 2× deferred pair
cannot acquire on a chain that only has room for ordinary presentation.
Deferred out-of-date presents also no longer count as shown frames in
the overlay or pacing history.

## Validation

Current head: `b52079d5`, rebased onto main `49f75dc8` (recorder test
ordering fix). All authored commits are unchanged by range-diff. Fresh
hosted checks run on this head; the local and native results below
remain tied to their earlier tested heads.

**Earlier local and native evidence:**

Earlier head: `8c6b593d`, rebased onto main `ebbba2ea`. Focused Windows
checks: **4 passed / 1 failed**. Swapchain recovery, presentation
semaphores, Anti-Lag and the new FPS statistics pass. The recorder check
fails its existing destructor negative control on both this head and the
exact clean base. Earlier native evidence remains labeled below.

- At `cda37c2`, the upstream source suite passed with **323 passed / 0
failed / 24 skipped on Windows** and **337 / 0 / 10 on Linux**. Windows
includes the temporary bake skips from #2013.
- The Windows and Linux regression fixtures inject surface loss during
acquire, present and swapchain creation. They verify resource
destruction order, reject deferred frames when the replacement swapchain
reuses the old handle, and check recovery with a smaller replacement
chain.
- Native driver surface loss and Linux gameplay remain untested.

<details>
<summary>Earlier native smoke test and Linux surface probe</summary>

- At `cc80fde` (API 14), a Windows RTX 5070 Ti run logged **6,688
presents** at 2× frame generation with pacing off. The Kokiri scene
returned after maximize, restore and minimize, and the game exited
normally.
- The standalone WSLg probe recreated Vulkan surfaces **8 times on X11
and 8 times on Wayland** using SDL2 and lavapipe. Each replacement
supported presentation and returned valid capabilities. The probe did
not exercise SDL3 or swapchain presentation.

</details>

<!-- pr-ci-status -->
| Current-head workflow | Result |
|---|---|
| [Linux
AppImage](https://github.com/NotRexed/Hookshot/actions/runs/43022789108)
| Needs attention |
| [Game-free source
regressions](https://github.com/NotRexed/Hookshot/actions/runs/43022789062)
| Passed |
| [PR
title](https://github.com/NotRexed/Hookshot/actions/runs/43022784549) |
Passed |
| [Windows
builder](https://github.com/NotRexed/Hookshot/actions/runs/43022789141)
| Passed |
<!-- /pr-ci-status -->
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant