feat(matching): per-mode policy + AI-fallback branch in InProcessPairUp
InProcessPairUp now consults ModePolicyRegistry per call and reads the fallback threshold from MatchingConfig via IServiceScopeFactory (singleton service consuming a scoped IGameConfigService). New behavior for PvpFirstThenAiFallback modes: when the calling viewer IS the slot's waiter and Now - WaitingSince >= threshold, the waiter unparks and the bridge resolves a Bot match. PvpOnly modes (TK2) keep parking forever (modulo a 5-minute stale-waiter eviction backstop). TimeProvider is injected so tests can drive time forward with FakeTimeProvider — 7 new tests cover the four key transitions (stay-parked / pair-pvp / fall-back / stale-evict) plus per-mode isolation. Fixture uses [FixtureLifeCycle(InstancePerTestCase)] because the assembly is Parallelizable(ParallelScope.All). Program.cs registers ModePolicyRegistry with three rows: TK2 PvpOnly, rotation/unlimited rank PvpFirstThenAiFallback. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -10,6 +10,7 @@
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.Extensions.TimeProvider.Testing" Version="8.0.0" />
|
||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.6.0" />
|
||||
<PackageReference Include="NUnit" Version="3.13.3" />
|
||||
<PackageReference Include="NUnit3TestAdapter" Version="4.2.1" />
|
||||
|
||||
Reference in New Issue
Block a user