CultLib/tests/GameCult.Networking.Tests
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Meta Vens 3b9ffac2fe C#: a send failure's goodbye belongs to the generation that sent
Send ended an unsendable session after releasing SessionGate, and the
goodbye was built under the gate but sent outside it. If the polling
thread admitted a new Connect from the same endpoint in that window, the
ended generation's goodbye reached the new client: it saw Data, Accept,
Disconnect and believed itself disconnected while the listener held it
connected.

Every path that finds a permanent send failure now reads the session's
generation under the gate at the send, and EndUnsendableSession builds
and sends the goodbye under the gate only while that generation is
unchanged. The generation check replaces the UnsendableReason once-guard:
a second failure in the same generation finds it already ended.

The test orders the new Connect inside the send, before the fragment
that can never be sent, and asserts the new client hears no Disconnect
and stays connected on both sides. It fails on the pre-fix code
(Data, Accept, Disconnect) and kills the mutant that drops the check.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-30 17:23:30 +02:00
..
CultCachePublicationIsolationTests.cs Narrow the escaped-observer probe to what this base can show 2026-09-29 16:57:04 +02:00
CultNetCanonicalNumberTests.cs CultNet selection cut1 fix batch: R-I/K/D tests and R-A/R-M reflection fix 2026-09-22 09:39:36 +02:00
CultNetDocumentBindingResolverTests.cs Make generated and reflective document members one rule 2026-09-13 22:00:16 +02:00
CultNetDocumentRegistryVariantTests.cs CultNet: a withdrawn hop subscription is refused with a typed error and its rows are withdrawn 2026-09-29 10:12:20 +02:00
CultNetJournalTests.cs Dispose test: hold the writer in an earlier observer so Dispose must publish what it logged 2026-09-30 07:03:15 +02:00
CultNetOperationServerTests.cs Bind CultMesh authority identity to physical routes 2026-08-18 17:21:58 +02:00
CultNetPublicationOrderTests.cs Networking tests: order is data, so pin each change's own publication, not its delivery order 2026-09-29 23:52:14 +02:00
CultNetPublishesCommitsTests.cs Pin the single-owner publication cases Soul falsified 2026-09-29 13:21:39 +02:00
CultNetRudpConnectGenerationTests.cs Ack Cut 1d batch 2 (C#): an Ack does not retire a Connect awaiting its Accept; the fresh attempt jumps by the receive window less one 2026-09-30 09:53:06 +02:00
CultNetRudpOrderedDeliveryTests.cs Ack Cut 1 tests: three held frames, the Rust byte bound, reset reseeds 2026-09-30 00:20:04 +02:00
CultNetRudpSendFailureTests.cs C#: a send failure's goodbye belongs to the generation that sent 2026-09-30 17:23:30 +02:00
CultNetRudpSessionEndingTests.cs Ack Cut 1b tests: an ending does not forget what the peer sent 2026-09-30 00:24:19 +02:00
CultNetSchemaContractTests.cs Cut 4 Soul 4c: committed-unlogged wire writes, database serves only what it owns, typed unowned refusal 2026-09-30 06:14:49 +02:00
CultNetSchemaServerGroupTests.cs Share CultNet handlers across transports 2026-08-18 01:31:04 +02:00
CultNetSelectionEvaluatorTests.cs Land fix batch 3's R-O and R-Q: keyed length-prefixed cursors, replica-apply sequence gap 2026-09-22 20:04:22 +02:00
CultNetSelectionFixBatchTests.cs R-AT: fix the C# self-citer fixture's naming so it actually defeats push-order luck 2026-09-23 08:38:27 +02:00
CultNetSelectionPageTests.cs CultNet selection cut1 fix batch: R-I/K/D tests and R-A/R-M reflection fix 2026-09-22 09:39:36 +02:00
CultNetSelectionSurvivorTests.cs Correct one comment still naming the deleted To.SchemaId tiebreak 2026-09-23 09:21:52 +02:00
GameCult.Networking.Tests.csproj Add GameCult Mesh package home 2026-05-19 19:08:48 +01:00
MiniJsonSchemaValidator.cs Fix batch 4 (R-X, S-4/S-10): the error schema matches the wire, and the validator refuses a keyword it does not implement 2026-09-22 21:12:23 +02:00
NetworkingTests.cs Ack Cut 3: a server's new generation does not inherit acknowledged bytes 2026-09-30 14:46:38 +02:00
README.md JSON backing store, I/O fixes, Networking Security 2026-04-18 13:01:24 +01:00
SelectionParityVectorTests.cs R-AO: shared vector for two-in-target shared-key resolution 2026-09-23 07:18:11 +02:00
SelectionWireParityTests.cs R-AZ: mirror the all-absent Edge vector into the C# parity test 2026-09-23 09:08:42 +02:00
SoulP4cProbeTests.cs Cut 4 Soul 4d: a skipped entry is relayed as the primary sent it; probes, wire cases and the closed-enum rule committed 2026-09-30 08:03:09 +02:00
SoulP4dProbeTests.cs Cut 4 Soul 4d: a skipped entry is relayed as the primary sent it; probes, wire cases and the closed-enum rule committed 2026-09-30 08:03:09 +02:00
SoulP4ProbeTests.cs Journal fixes: hole floor on restart, one log exception per call, no shape guard, no stray shard-0 logging 2026-09-30 02:48:49 +02:00
SoulPub3Tests.cs Soul probes: commit the pass-3 P-tests and the Cut 4 probes as recovered 2026-09-30 02:38:50 +02:00

GameCult.Networking.Tests

GameCult.Networking.Tests contains NUnit tests for the networking library.

Scope

The tests currently cover:

  • AES-GCM encrypt/decrypt round-trips in Secret
  • signed session-token validation
  • signed session-token tamper detection
  • signed session-token expiry handling

Run

dotnet test tests\GameCult.Networking.Tests\GameCult.Networking.Tests.csproj

Adding New Tests

Typical future areas to expand include:

  • client reconnect and verify flows
  • login and registration integration tests
  • malformed message handling
  • rate-limiting behavior under concurrency