Skip to content

Commit 6d47ad1

Browse files
authored
Merge branch 'main' into New-SortedSetStartsWith-Condition
2 parents 3b31439 + cf8b6fb commit 6d47ad1

File tree

313 files changed

+13208
-7614
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

313 files changed

+13208
-7614
lines changed

.editorconfig

Lines changed: 64 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -138,23 +138,73 @@ csharp_space_between_method_call_empty_parameter_list_parentheses = false
138138
csharp_preserve_single_line_statements = true
139139
csharp_preserve_single_line_blocks = true
140140

141-
# IDE0090: Use 'new(...)'
142-
dotnet_diagnostic.IDE0090.severity = silent
143141

144-
# RCS1037: Remove trailing white-space.
145-
dotnet_diagnostic.RCS1037.severity = error
142+
# IDE preferences
143+
dotnet_diagnostic.IDE0090.severity = silent # IDE0090: Use 'new(...)'
144+
145+
#Roslynator preferences
146+
dotnet_diagnostic.RCS1037.severity = error # RCS1037: Remove trailing white-space.
147+
dotnet_diagnostic.RCS1098.severity = none # RCS1098: Constant values should be placed on right side of comparisons.
148+
149+
dotnet_diagnostic.RCS1194.severity = none # RCS1194: Implement exception constructors.
150+
dotnet_diagnostic.RCS1229.severity = none # RCS1229: Use async/await when necessary.
151+
dotnet_diagnostic.RCS1233.severity = none # RCS1233: Use short-circuiting operator.
152+
dotnet_diagnostic.RCS1234.severity = none # RCS1234: Duplicate enum value.
153+
154+
# StyleCop preferences
155+
dotnet_diagnostic.SA0001.severity = none # SA0001: XML comment analysis is disabled
156+
157+
dotnet_diagnostic.SA1101.severity = none # SA1101: Prefix local calls with this
158+
dotnet_diagnostic.SA1108.severity = none # SA1108: Block statements should not contain embedded comments
159+
dotnet_diagnostic.SA1122.severity = none # SA1122: Use string.Empty for empty strings
160+
dotnet_diagnostic.SA1127.severity = none # SA1127: Generic type constraints should be on their own line
161+
dotnet_diagnostic.SA1128.severity = none # SA1128: Put constructor initializers on their own line
162+
dotnet_diagnostic.SA1132.severity = none # SA1132: Do not combine fields
163+
dotnet_diagnostic.SA1133.severity = none # SA1133: Do not combine attributes
164+
165+
dotnet_diagnostic.SA1200.severity = none # SA1200: Using directives should be placed correctly
166+
dotnet_diagnostic.SA1201.severity = none # SA1201: Elements should appear in the correct order
167+
dotnet_diagnostic.SA1202.severity = none # SA1202: Elements should be ordered by access
168+
dotnet_diagnostic.SA1203.severity = none # SA1203: Constants should appear before fields
169+
170+
dotnet_diagnostic.SA1306.severity = none # SA1306: Field names should begin with lower-case letter
171+
dotnet_diagnostic.SA1309.severity = none # SA1309: Field names should not begin with underscore
172+
dotnet_diagnostic.SA1310.severity = silent # SA1310: Field names should not contain underscore
173+
dotnet_diagnostic.SA1311.severity = none # SA1311: Static readonly fields should begin with upper-case letter
174+
dotnet_diagnostic.SA1312.severity = none # SA1312: Variable names should begin with lower-case letter
175+
176+
dotnet_diagnostic.SA1401.severity = silent # SA1401: Fields should be private
177+
dotnet_diagnostic.SA1402.severity = suggestion # SA1402: File may only contain a single type
178+
179+
dotnet_diagnostic.SA1503.severity = silent # SA1503: Braces should not be omitted
180+
dotnet_diagnostic.SA1516.severity = silent # SA1516: Elements should be separated by blank line
181+
182+
dotnet_diagnostic.SA1600.severity = none # SA1600: Elements should be documented
183+
dotnet_diagnostic.SA1601.severity = none # SA1601: Partial elements should be documented
184+
dotnet_diagnostic.SA1602.severity = none # SA1602: Enumeration items should be documented
185+
dotnet_diagnostic.SA1615.severity = none # SA1615: Element return value should be documented
186+
dotnet_diagnostic.SA1623.severity = none # SA1623: Property summary documentation should match accessors
187+
dotnet_diagnostic.SA1633.severity = none # SA1633: File should have header
188+
dotnet_diagnostic.SA1642.severity = none # SA1642: Constructor summary documentation should begin with standard text
189+
dotnet_diagnostic.SA1643.severity = none # SA1643: Destructor summary documentation should begin with standard text
190+
191+
192+
# To Fix:
193+
dotnet_diagnostic.SA1204.severity = none # SA1204: Static elements should appear before instance elements
194+
dotnet_diagnostic.SA1214.severity = none # SA1214: Readonly fields should appear before non-readonly fields
195+
dotnet_diagnostic.SA1304.severity = none # SA1304: Non-private readonly fields should begin with upper-case letter
196+
dotnet_diagnostic.SA1307.severity = none # SA1307: Accessible fields should begin with upper-case letter
197+
dotnet_diagnostic.SA1308.severity = suggestion # SA1308: Variable names should not be prefixed
198+
dotnet_diagnostic.SA1131.severity = none # SA1131: Use readable conditions
199+
dotnet_diagnostic.SA1405.severity = none # SA1405: Debug.Assert should provide message text
200+
dotnet_diagnostic.SA1501.severity = none # SA1501: Statement should not be on a single line
201+
dotnet_diagnostic.SA1502.severity = suggestion # SA1502: Element should not be on a single line
202+
dotnet_diagnostic.SA1513.severity = none # SA1513: Closing brace should be followed by blank line
203+
dotnet_diagnostic.SA1515.severity = none # SA1515: Single-line comment should be preceded by blank line
204+
dotnet_diagnostic.SA1611.severity = suggestion # SA1611: Element parameters should be documented
205+
dotnet_diagnostic.SA1649.severity = suggestion # SA1649: File name should match first type name
146206

147-
# RCS1098: Constant values should be placed on right side of comparisons.
148-
dotnet_diagnostic.RCS1098.severity = none
149207

150-
# RCS1194: Implement exception constructors.
151-
dotnet_diagnostic.RCS1194.severity = none
152208

153-
# RCS1229: Use async/await when necessary.
154-
dotnet_diagnostic.RCS1229.severity = none
155209

156-
# RCS1233: Use short-circuiting operator.
157-
dotnet_diagnostic.RCS1233.severity = none
158210

159-
# RCS1234: Duplicate enum value.
160-
dotnet_diagnostic.RCS1234.severity = none

.github/workflows/CI.yml

Lines changed: 86 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -18,18 +18,21 @@ jobs:
1818
TERM: xterm # Enable color output in GitHub Actions
1919
steps:
2020
- name: Checkout code
21-
uses: actions/checkout@v1
21+
uses: actions/checkout@v4
22+
with:
23+
fetch-depth: 0 # Fetch the full history
24+
- name: Start Redis Services (docker-compose)
25+
working-directory: ./tests/RedisConfigs
26+
run: docker compose -f docker-compose.yml up -d --wait
2227
- name: Install .NET SDK
2328
uses: actions/setup-dotnet@v3
2429
with:
2530
dotnet-version: |
2631
6.0.x
27-
7.0.x
32+
8.0.x
33+
9.0.x
2834
- name: .NET Build
2935
run: dotnet build Build.csproj -c Release /p:CI=true
30-
- name: Start Redis Services (docker-compose)
31-
working-directory: ./tests/RedisConfigs
32-
run: docker-compose -f docker-compose.yml up -d
3336
- name: StackExchange.Redis.Tests
3437
run: dotnet test tests/StackExchange.Redis.Tests/StackExchange.Redis.Tests.csproj -c Release --logger trx --logger GitHubActions --results-directory ./test-results/ /p:CI=true
3538
- uses: dorny/test-reporter@v1
@@ -49,37 +52,88 @@ jobs:
4952
NUGET_CERT_REVOCATION_MODE: offline # Disabling signing because of massive perf hit, see https://github.com/NuGet/Home/issues/11548
5053
DOTNET_SYSTEM_CONSOLE_ALLOW_ANSI_COLOR_REDIRECTION: "1" # Note this doesn't work yet for Windows - see https://github.com/dotnet/runtime/issues/68340
5154
TERM: xterm
55+
DOCKER_BUILDKIT: 1
5256
steps:
5357
- name: Checkout code
54-
uses: actions/checkout@v1
55-
# - name: Install .NET SDK
56-
# uses: actions/setup-dotnet@v3
57-
# with:
58-
# dotnet-version: |
59-
# 6.0.x
60-
# 7.0.x
58+
uses: actions/checkout@v4
59+
with:
60+
fetch-depth: 0 # Fetch the full history
61+
- uses: Vampire/setup-wsl@v2
62+
with:
63+
distribution: Ubuntu-22.04
64+
- name: Install Redis
65+
shell: wsl-bash {0}
66+
working-directory: ./tests/RedisConfigs
67+
run: |
68+
apt-get update
69+
apt-get install curl gpg lsb-release libgomp1 jq -y
70+
curl -fsSL https://packages.redis.io/gpg | gpg --dearmor -o /usr/share/keyrings/redis-archive-keyring.gpg
71+
chmod 644 /usr/share/keyrings/redis-archive-keyring.gpg
72+
echo "deb [signed-by=/usr/share/keyrings/redis-archive-keyring.gpg] https://packages.redis.io/deb $(lsb_release -cs) main" | tee /etc/apt/sources.list.d/redis.list
73+
apt-get update
74+
apt-get install -y redis
75+
mkdir redis
76+
- name: Run redis-server
77+
shell: wsl-bash {0}
78+
working-directory: ./tests/RedisConfigs/redis
79+
run: |
80+
pwd
81+
ls .
82+
# Run each server instance in order
83+
redis-server ../Basic/primary-6379.conf &
84+
redis-server ../Basic/replica-6380.conf &
85+
redis-server ../Basic/secure-6381.conf &
86+
redis-server ../Failover/primary-6382.conf &
87+
redis-server ../Failover/replica-6383.conf &
88+
redis-server ../Cluster/cluster-7000.conf --dir ../Cluster &
89+
redis-server ../Cluster/cluster-7001.conf --dir ../Cluster &
90+
redis-server ../Cluster/cluster-7002.conf --dir ../Cluster &
91+
redis-server ../Cluster/cluster-7003.conf --dir ../Cluster &
92+
redis-server ../Cluster/cluster-7004.conf --dir ../Cluster &
93+
redis-server ../Cluster/cluster-7005.conf --dir ../Cluster &
94+
redis-server ../Sentinel/redis-7010.conf &
95+
redis-server ../Sentinel/redis-7011.conf &
96+
redis-server ../Sentinel/sentinel-26379.conf --sentinel &
97+
redis-server ../Sentinel/sentinel-26380.conf --sentinel &
98+
redis-server ../Sentinel/sentinel-26381.conf --sentinel &
99+
# Wait for server instances to get ready
100+
sleep 5
101+
echo "Checking redis-server version with port 6379"
102+
redis-cli -p 6379 INFO SERVER | grep redis_version || echo "Failed to get version for port 6379"
103+
echo "Checking redis-server version with port 6380"
104+
redis-cli -p 6380 INFO SERVER | grep redis_version || echo "Failed to get version for port 6380"
105+
echo "Checking redis-server version with port 6381"
106+
redis-cli -p 6381 INFO SERVER | grep redis_version || echo "Failed to get version for port 6381"
107+
echo "Checking redis-server version with port 6382"
108+
redis-cli -p 6382 INFO SERVER | grep redis_version || echo "Failed to get version for port 6382"
109+
echo "Checking redis-server version with port 6383"
110+
redis-cli -p 6383 INFO SERVER | grep redis_version || echo "Failed to get version for port 6383"
111+
echo "Checking redis-server version with port 7000"
112+
redis-cli -p 7000 INFO SERVER | grep redis_version || echo "Failed to get version for port 7000"
113+
echo "Checking redis-server version with port 7001"
114+
redis-cli -p 7001 INFO SERVER | grep redis_version || echo "Failed to get version for port 7001"
115+
echo "Checking redis-server version with port 7002"
116+
redis-cli -p 7002 INFO SERVER | grep redis_version || echo "Failed to get version for port 7002"
117+
echo "Checking redis-server version with port 7003"
118+
redis-cli -p 7003 INFO SERVER | grep redis_version || echo "Failed to get version for port 7003"
119+
echo "Checking redis-server version with port 7004"
120+
redis-cli -p 7004 INFO SERVER | grep redis_version || echo "Failed to get version for port 7004"
121+
echo "Checking redis-server version with port 7005"
122+
redis-cli -p 7005 INFO SERVER | grep redis_version || echo "Failed to get version for port 7005"
123+
echo "Checking redis-server version with port 7010"
124+
redis-cli -p 7010 INFO SERVER | grep redis_version || echo "Failed to get version for port 7010"
125+
echo "Checking redis-server version with port 7011"
126+
redis-cli -p 7011 INFO SERVER | grep redis_version || echo "Failed to get version for port 7011"
127+
echo "Checking redis-server version with port 26379"
128+
redis-cli -p 26379 INFO SERVER | grep redis_version || echo "Failed to get version for port 26379"
129+
echo "Checking redis-server version with port 26380"
130+
redis-cli -p 26380 INFO SERVER | grep redis_version || echo "Failed to get version for port 26380"
131+
echo "Checking redis-server version with port 26381"
132+
redis-cli -p 26381 INFO SERVER | grep redis_version || echo "Failed to get version for port 26381"
133+
continue-on-error: true
134+
61135
- name: .NET Build
62136
run: dotnet build Build.csproj -c Release /p:CI=true
63-
- name: Start Redis Services (v3.0.503)
64-
working-directory: .\tests\RedisConfigs\3.0.503
65-
run: |
66-
.\redis-server.exe --service-install --service-name "redis-6379" "..\Basic\primary-6379-3.0.conf"
67-
.\redis-server.exe --service-install --service-name "redis-6380" "..\Basic\replica-6380.conf"
68-
.\redis-server.exe --service-install --service-name "redis-6381" "..\Basic\secure-6381.conf"
69-
.\redis-server.exe --service-install --service-name "redis-6382" "..\Failover\primary-6382.conf"
70-
.\redis-server.exe --service-install --service-name "redis-6383" "..\Failover\replica-6383.conf"
71-
.\redis-server.exe --service-install --service-name "redis-7000" "..\Cluster\cluster-7000.conf" --dir "..\Cluster"
72-
.\redis-server.exe --service-install --service-name "redis-7001" "..\Cluster\cluster-7001.conf" --dir "..\Cluster"
73-
.\redis-server.exe --service-install --service-name "redis-7002" "..\Cluster\cluster-7002.conf" --dir "..\Cluster"
74-
.\redis-server.exe --service-install --service-name "redis-7003" "..\Cluster\cluster-7003.conf" --dir "..\Cluster"
75-
.\redis-server.exe --service-install --service-name "redis-7004" "..\Cluster\cluster-7004.conf" --dir "..\Cluster"
76-
.\redis-server.exe --service-install --service-name "redis-7005" "..\Cluster\cluster-7005.conf" --dir "..\Cluster"
77-
.\redis-server.exe --service-install --service-name "redis-7010" "..\Sentinel\redis-7010.conf"
78-
.\redis-server.exe --service-install --service-name "redis-7011" "..\Sentinel\redis-7011.conf"
79-
.\redis-server.exe --service-install --service-name "redis-26379" "..\Sentinel\sentinel-26379.conf" --sentinel
80-
.\redis-server.exe --service-install --service-name "redis-26380" "..\Sentinel\sentinel-26380.conf" --sentinel
81-
.\redis-server.exe --service-install --service-name "redis-26381" "..\Sentinel\sentinel-26381.conf" --sentinel
82-
Start-Service redis-*
83137
- name: StackExchange.Redis.Tests
84138
run: dotnet test tests/StackExchange.Redis.Tests/StackExchange.Redis.Tests.csproj -c Release --logger trx --logger GitHubActions --results-directory ./test-results/ /p:CI=true
85139
- uses: dorny/test-reporter@v1

.github/workflows/codeql.yml

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -29,13 +29,18 @@ jobs:
2929

3030
steps:
3131
- name: Checkout repository
32-
uses: actions/checkout@v3
32+
uses: actions/checkout@v4
3333
with:
3434
fetch-depth: 0
3535

36+
- name: Setup .NET
37+
uses: actions/setup-dotnet@v4
38+
with:
39+
dotnet-version: '9.0.x'
40+
3641
# Initializes the CodeQL tools for scanning.
3742
- name: Initialize CodeQL
38-
uses: github/codeql-action/init@v2
43+
uses: github/codeql-action/init@v3
3944
with:
4045
languages: ${{ matrix.language }}
4146
# If you wish to specify custom queries, you can do so here or in a config file.
@@ -45,18 +50,11 @@ jobs:
4550
# For more details on CodeQL's query packs, refer to: https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#using-queries-in-ql-packs
4651
# queries: security-extended,security-and-quality
4752

48-
49-
# Autobuild attempts to build any compiled languages (C/C++, C#, Go, Java, or Swift).
50-
# If this step fails, then you should remove it and run the build manually (see below)
51-
- if: matrix.language != 'csharp'
52-
name: Autobuild
53-
uses: github/codeql-action/autobuild@v2
54-
5553
- if: matrix.language == 'csharp'
5654
name: .NET Build
5755
run: dotnet build Build.csproj -c Release /p:CI=true
5856

5957
- name: Perform CodeQL Analysis
60-
uses: github/codeql-action/analyze@v2
58+
uses: github/codeql-action/analyze@v3
6159
with:
6260
category: "/language:${{matrix.language}}"

Directory.Build.props

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
<PackageProjectUrl>https://stackexchange.github.io/StackExchange.Redis/</PackageProjectUrl>
1616
<PackageLicenseExpression>MIT</PackageLicenseExpression>
1717

18-
<LangVersion>11</LangVersion>
18+
<LangVersion>13</LangVersion>
1919
<RepositoryType>git</RepositoryType>
2020
<RepositoryUrl>https://github.com/StackExchange/StackExchange.Redis/</RepositoryUrl>
2121

@@ -33,10 +33,13 @@
3333
<Deterministic>true</Deterministic>
3434
<EmbedUntrackedSources>true</EmbedUntrackedSources>
3535
</PropertyGroup>
36+
3637
<ItemGroup Condition="'$(Configuration)' == 'Release' and '$(SourceRoot)'==''">
3738
<SourceRoot Include="$(MSBuildThisFileDirectory)/"/>
3839
</ItemGroup>
40+
3941
<ItemGroup>
4042
<PackageReference Include="Microsoft.NETFramework.ReferenceAssemblies" PrivateAssets="all" />
43+
<PackageReference Include="StyleCop.Analyzers" PrivateAssets="All" />
4144
</ItemGroup>
4245
</Project>

Directory.Packages.props

Lines changed: 20 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,33 @@
11
<Project>
22
<ItemGroup>
33
<!-- Packages we depend on for StackExchange.Redis, upgrades can create binding redirect pain! -->
4-
<PackageVersion Include="Microsoft.Bcl.AsyncInterfaces" Version="5.0.0" />
4+
<PackageVersion Include="Microsoft.Bcl.AsyncInterfaces" Version="6.0.0" />
5+
<PackageVersion Include="Microsoft.Extensions.Logging.Abstractions" Version="6.0.0" />
56
<PackageVersion Include="Pipelines.Sockets.Unofficial" Version="2.2.8" />
67
<PackageVersion Include="System.Diagnostics.PerformanceCounter" Version="5.0.0" />
78
<PackageVersion Include="System.Threading.Channels" Version="5.0.0" />
89
<PackageVersion Include="System.Runtime.InteropServices.RuntimeInformation" Version="4.3.0" />
910
<PackageVersion Include="System.IO.Compression" Version="4.3.0" />
10-
1111
<!-- Packages only used in the solution, upgrade at will -->
12-
<PackageVersion Include="BenchmarkDotNet" Version="0.13.1" />
13-
<PackageVersion Include="GitHubActionsTestLogger" Version="2.0.0-alpha" />
14-
<PackageVersion Include="Microsoft.CodeAnalysis.PublicApiAnalyzers" Version="3.3.4" />
15-
<PackageVersion Include="Microsoft.Extensions.Logging.Abstractions" Version="6.0.0" />
16-
<PackageVersion Include="Microsoft.NETFramework.ReferenceAssemblies" Version="1.0.2" />
17-
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="17.1.0" />
18-
<PackageVersion Include="Microsoft.SourceLink.GitHub" Version="1.1.1" />
19-
<PackageVersion Include="Nerdbank.GitVersioning" Version="3.4.255" />
20-
<PackageVersion Include="Newtonsoft.Json" Version="13.0.1" />
21-
<PackageVersion Include="NSubstitute" Version="5.0.0" />
12+
<PackageVersion Include="BenchmarkDotNet" Version="0.15.2" />
13+
<PackageVersion Include="GitHubActionsTestLogger" Version="2.4.1" />
14+
<PackageVersion Include="Microsoft.CodeAnalysis.PublicApiAnalyzers" Version="4.14.0" />
15+
<PackageVersion Include="Microsoft.NETFramework.ReferenceAssemblies" Version="1.0.3" />
16+
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="17.14.1" />
17+
<PackageVersion Include="Microsoft.SourceLink.GitHub" Version="8.0.0" />
18+
<PackageVersion Include="Microsoft.Testing.Platform" Version="1.7.3" />
19+
<PackageVersion Include="Nerdbank.GitVersioning" Version="3.7.115" />
20+
<PackageVersion Include="Newtonsoft.Json" Version="13.0.3" />
21+
<PackageVersion Include="NSubstitute" Version="5.3.0" />
2222
<PackageVersion Include="StackExchange.Redis" Version="2.6.96" />
23+
<PackageVersion Include="StyleCop.Analyzers" Version="1.2.0-beta.556" />
24+
<PackageVersion Include="System.Collections.Immutable" Version="9.0.0" />
25+
<PackageVersion Include="System.Reflection.Metadata" Version="9.0.0" />
2326
<!-- For binding redirect testing, main package gets this transitively -->
24-
<PackageVersion Include="System.IO.Pipelines" Version="5.0.1" />
25-
<PackageVersion Include="System.Runtime.Caching" Version="5.0.0" />
26-
<PackageVersion Include="xunit" Version="2.5.0" />
27-
<PackageVersion Include="xunit.runner.visualstudio" Version="2.5.0" />
27+
<PackageVersion Include="System.IO.Pipelines" Version="9.0.0" />
28+
<PackageVersion Include="System.Runtime.Caching" Version="9.0.0" />
29+
<PackageVersion Include="xunit.v3" Version="3.0.0" />
30+
<PackageVersion Include="xunit.v3.runner.console" Version="3.0.0" />
31+
<PackageVersion Include="xunit.runner.visualstudio" Version="3.1.3" />
2832
</ItemGroup>
2933
</Project>

0 commit comments

Comments
 (0)