CI: implement [RunPerProtocol] #464
Open
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This is test infrastructure code based on the SE.Redis RESP2 vs RESP3 CI implementation, intended both for the same purpose, and to allow high-integrity vs (not) testing.
Note: this changes xUnit version, and drops net6/net7 from the test suite; both of these seem more than reasonable, with net8/net10 being the "live" modern .NET LTS builds.
This also removes the
[SkippableFact]/[SkippableTheory]goo, sinceAssert.Skip*is now built-in.MOST OF THE FILE COUNT IN THIS PR ARE SIMPLY ^^^ THAT
The core change here is shown in
EndpointsFixture.GetConnectionById, where we access theRunProtocolfrom the test context, and tweak theConfigurationOptionssetup prior to connecting. For efficiency, we also add connection caching at that point, which avoids this rewrite (but more importantly: avoids creating a connection per test). If the caller is using a custom options, we dot not share the connection.For now,
[RunPerProtocol]is only shown "active" against someTOPKtests, although usage is illustrated (commented)in some search tests, where RESP3 is known to be a problem.
Triage conclusion: we are unable to repro a problem with
TOPKin high-integrity mode on either RESP2 or RESP3.