test(transport): drive a listening session over loopback

ShouldServeOverQuic runs a Session that listens for real and reaches it
with the client's own transport. It covers:
- the discovery record, and its removal when the Session ends;
- status, call, a mistyped command, get and set, and log --follow
  streaming as entries are logged and ending on time;
- six clients at once, and eight streams at once on one connection;
- a wrong token, a request that isn't JSON, and one over 1 MiB, each
  answered with an error;
- ending the Session with a follower waiting, which is told "shutting
  down" and is not sent a backlog it asked none of;
- a client finding the port dead in milliseconds.

The shutdown reply went missing in 4 runs of 30 until Crafter.Network's
~ClientQUIC let stopped streams finish before closing; 50 of 50 pass
since.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Jorijn van der Graaf 2026-11-01 03:07:09 +01:00
commit fbb5809aea
Signed by: jorijnvdgraaf
GPG key ID: 2937E59CDCC1BCFB
2 changed files with 265 additions and 0 deletions

View file

@ -232,6 +232,7 @@ extern "C" Configuration CrafterBuildProject(std::span<const std::string_view> a
for (const std::string_view test : coreTests) cfg.AddTest(test).Dependencies({ &core });
for (const std::string_view test : libraryTests) cfg.AddTest(test).Dependencies({ &cfg });
cfg.AddTest("ShouldRunClientCommands").Dependencies({ &cfg, &cli });
cfg.AddTest("ShouldServeOverQuic").Dependencies({ &cfg, &cli });
}
return cfg;
}