Skip to content

Commit 129f5c1

Browse files
authored
Merge branch 'main' into ali/hfe_new_api
2 parents b3d2f2a + c364806 commit 129f5c1

File tree

185 files changed

+5211
-3295
lines changed

Some content is hidden

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

185 files changed

+5211
-3295
lines changed

.github/workflows/CI.yml

Lines changed: 84 additions & 35 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
2732
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 --wait
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
@@ -52,39 +55,85 @@ jobs:
5255
DOCKER_BUILDKIT: 1
5356
steps:
5457
- name: Checkout code
55-
uses: actions/checkout@v1
56-
# - name: Install .NET SDK
57-
# uses: actions/setup-dotnet@v3
58-
# with:
59-
# dotnet-version: |
60-
# 6.0.x
61-
# 8.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+
62135
- name: .NET Build
63136
run: dotnet build Build.csproj -c Release /p:CI=true
64-
# We can't do this combination - see https://github.com/actions/runner/issues/904
65-
# - name: Start Redis Services (docker-compose)
66-
# working-directory: .\tests\RedisConfigs
67-
# run: docker compose -f docker-compose.yml up -d --wait
68-
- name: Start Redis Services (v3.0.503)
69-
working-directory: .\tests\RedisConfigs\3.0.503
70-
run: |
71-
.\redis-server.exe --service-install --service-name "redis-6379" "..\Basic\primary-6379-3.0.conf"
72-
.\redis-server.exe --service-install --service-name "redis-6380" "..\Basic\replica-6380.conf"
73-
.\redis-server.exe --service-install --service-name "redis-6381" "..\Basic\secure-6381.conf"
74-
.\redis-server.exe --service-install --service-name "redis-6382" "..\Failover\primary-6382.conf"
75-
.\redis-server.exe --service-install --service-name "redis-6383" "..\Failover\replica-6383.conf"
76-
.\redis-server.exe --service-install --service-name "redis-7000" "..\Cluster\cluster-7000.conf" --dir "..\Cluster"
77-
.\redis-server.exe --service-install --service-name "redis-7001" "..\Cluster\cluster-7001.conf" --dir "..\Cluster"
78-
.\redis-server.exe --service-install --service-name "redis-7002" "..\Cluster\cluster-7002.conf" --dir "..\Cluster"
79-
.\redis-server.exe --service-install --service-name "redis-7003" "..\Cluster\cluster-7003.conf" --dir "..\Cluster"
80-
.\redis-server.exe --service-install --service-name "redis-7004" "..\Cluster\cluster-7004.conf" --dir "..\Cluster"
81-
.\redis-server.exe --service-install --service-name "redis-7005" "..\Cluster\cluster-7005.conf" --dir "..\Cluster"
82-
.\redis-server.exe --service-install --service-name "redis-7010" "..\Sentinel\redis-7010.conf"
83-
.\redis-server.exe --service-install --service-name "redis-7011" "..\Sentinel\redis-7011.conf"
84-
.\redis-server.exe --service-install --service-name "redis-26379" "..\Sentinel\sentinel-26379.conf" --sentinel
85-
.\redis-server.exe --service-install --service-name "redis-26380" "..\Sentinel\sentinel-26380.conf" --sentinel
86-
.\redis-server.exe --service-install --service-name "redis-26381" "..\Sentinel\sentinel-26381.conf" --sentinel
87-
Start-Service redis-*
88137
- name: StackExchange.Redis.Tests
89138
run: dotnet test tests/StackExchange.Redis.Tests/StackExchange.Redis.Tests.csproj -c Release --logger trx --logger GitHubActions --results-directory ./test-results/ /p:CI=true
90139
- 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: 1 addition & 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

Directory.Packages.props

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,25 +8,26 @@
88
<PackageVersion Include="System.Threading.Channels" Version="5.0.0" />
99
<PackageVersion Include="System.Runtime.InteropServices.RuntimeInformation" Version="4.3.0" />
1010
<PackageVersion Include="System.IO.Compression" Version="4.3.0" />
11-
1211
<!-- Packages only used in the solution, upgrade at will -->
13-
<PackageVersion Include="BenchmarkDotNet" Version="0.14.0" />
12+
<PackageVersion Include="BenchmarkDotNet" Version="0.15.2" />
1413
<PackageVersion Include="GitHubActionsTestLogger" Version="2.4.1" />
15-
<PackageVersion Include="Microsoft.CodeAnalysis.PublicApiAnalyzers" Version="3.3.4" />
14+
<PackageVersion Include="Microsoft.CodeAnalysis.PublicApiAnalyzers" Version="4.14.0" />
1615
<PackageVersion Include="Microsoft.NETFramework.ReferenceAssemblies" Version="1.0.3" />
17-
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="17.12.0" />
16+
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="17.14.1" />
1817
<PackageVersion Include="Microsoft.SourceLink.GitHub" Version="8.0.0" />
19-
<PackageVersion Include="Nerdbank.GitVersioning" Version="3.6.146" />
18+
<PackageVersion Include="Microsoft.Testing.Platform" Version="1.7.3" />
19+
<PackageVersion Include="Nerdbank.GitVersioning" Version="3.7.115" />
2020
<PackageVersion Include="Newtonsoft.Json" Version="13.0.3" />
2121
<PackageVersion Include="NSubstitute" Version="5.3.0" />
2222
<PackageVersion Include="StackExchange.Redis" Version="2.6.96" />
2323
<PackageVersion Include="StyleCop.Analyzers" Version="1.2.0-beta.556" />
2424
<PackageVersion Include="System.Collections.Immutable" Version="9.0.0" />
25-
<PackageVersion Include="System.Reflection.Metadata" Version="9.0.0" />
25+
<PackageVersion Include="System.Reflection.Metadata" Version="9.0.0" />
2626
<!-- For binding redirect testing, main package gets this transitively -->
2727
<PackageVersion Include="System.IO.Pipelines" Version="9.0.0" />
2828
<PackageVersion Include="System.Runtime.Caching" Version="9.0.0" />
29-
<PackageVersion Include="xunit" Version="2.9.2" />
30-
<PackageVersion Include="xunit.runner.visualstudio" Version="2.8.2" />
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" />
3132
</ItemGroup>
3233
</Project>

StackExchange.Redis.sln

Lines changed: 7 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution
1919
docs\ReleaseNotes.md = docs\ReleaseNotes.md
2020
Shared.ruleset = Shared.ruleset
2121
version.json = version.json
22+
tests\RedisConfigs\docker-compose.yml = tests\RedisConfigs\docker-compose.yml
2223
EndProjectSection
2324
EndProject
2425
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "RedisConfigs", "RedisConfigs", "{96E891CD-2ED7-4293-A7AB-4C6F5D8D2B05}"
@@ -93,7 +94,6 @@ EndProject
9394
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{73A5C363-CA1F-44C4-9A9B-EF791A76BA6A}"
9495
ProjectSection(SolutionItems) = preProject
9596
tests\.editorconfig = tests\.editorconfig
96-
tests\Directory.Build.props = tests\Directory.Build.props
9797
tests\Directory.Build.targets = tests\Directory.Build.targets
9898
EndProjectSection
9999
EndProject
@@ -104,31 +104,6 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{00CA0876-DA9
104104
EndProject
105105
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "toys", "toys", "{E25031D3-5C64-430D-B86F-697B66816FD8}"
106106
EndProject
107-
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "docs", "docs", "{153A10E4-E668-41AD-9E0F-6785CE7EED66}"
108-
ProjectSection(SolutionItems) = preProject
109-
docs\Basics.md = docs\Basics.md
110-
docs\Configuration.md = docs\Configuration.md
111-
docs\Events.md = docs\Events.md
112-
docs\ExecSync.md = docs\ExecSync.md
113-
docs\index.md = docs\index.md
114-
docs\KeysScan.md = docs\KeysScan.md
115-
docs\KeysValues.md = docs\KeysValues.md
116-
docs\PipelinesMultiplexers.md = docs\PipelinesMultiplexers.md
117-
docs\Profiling.md = docs\Profiling.md
118-
docs\Profiling_v1.md = docs\Profiling_v1.md
119-
docs\Profiling_v2.md = docs\Profiling_v2.md
120-
docs\PubSubOrder.md = docs\PubSubOrder.md
121-
docs\ReleaseNotes.md = docs\ReleaseNotes.md
122-
docs\Resp3.md = docs\Resp3.md
123-
docs\RespLogging.md = docs\RespLogging.md
124-
docs\Scripting.md = docs\Scripting.md
125-
docs\Server.md = docs\Server.md
126-
docs\Testing.md = docs\Testing.md
127-
docs\ThreadTheft.md = docs\ThreadTheft.md
128-
docs\Timeouts.md = docs\Timeouts.md
129-
docs\Transactions.md = docs\Transactions.md
130-
EndProjectSection
131-
EndProject
132107
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TestConsoleBaseline", "toys\TestConsoleBaseline\TestConsoleBaseline.csproj", "{D58114AE-4998-4647-AFCA-9353D20495AE}"
133108
EndProject
134109
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = ".github", ".github\.github.csproj", "{8FB98E7D-DAE2-4465-BD9A-104000E0A2D4}"
@@ -143,6 +118,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ConsoleTest", "tests\Consol
143118
EndProject
144119
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ConsoleTestBaseline", "tests\ConsoleTestBaseline\ConsoleTestBaseline.csproj", "{69A0ACF2-DF1F-4F49-B554-F732DCA938A3}"
145120
EndProject
121+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "docs", "docs\docs.csproj", "{1DC43E76-5372-4C7F-A433-0602273E87FC}"
122+
EndProject
146123
Global
147124
GlobalSection(SolutionConfigurationPlatforms) = preSolution
148125
Debug|Any CPU = Debug|Any CPU
@@ -193,6 +170,10 @@ Global
193170
{69A0ACF2-DF1F-4F49-B554-F732DCA938A3}.Debug|Any CPU.Build.0 = Debug|Any CPU
194171
{69A0ACF2-DF1F-4F49-B554-F732DCA938A3}.Release|Any CPU.ActiveCfg = Release|Any CPU
195172
{69A0ACF2-DF1F-4F49-B554-F732DCA938A3}.Release|Any CPU.Build.0 = Release|Any CPU
173+
{1DC43E76-5372-4C7F-A433-0602273E87FC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
174+
{1DC43E76-5372-4C7F-A433-0602273E87FC}.Debug|Any CPU.Build.0 = Debug|Any CPU
175+
{1DC43E76-5372-4C7F-A433-0602273E87FC}.Release|Any CPU.ActiveCfg = Release|Any CPU
176+
{1DC43E76-5372-4C7F-A433-0602273E87FC}.Release|Any CPU.Build.0 = Release|Any CPU
196177
EndGlobalSection
197178
GlobalSection(SolutionProperties) = preSolution
198179
HideSolutionNode = FALSE
@@ -210,7 +191,6 @@ Global
210191
{D082703F-1652-4C35-840D-7D377F6B9979} = {96E891CD-2ED7-4293-A7AB-4C6F5D8D2B05}
211192
{8375813E-FBAF-4DA3-A2C7-E4645B39B931} = {E25031D3-5C64-430D-B86F-697B66816FD8}
212193
{3DA1EEED-E9FE-43D9-B293-E000CFCCD91A} = {E25031D3-5C64-430D-B86F-697B66816FD8}
213-
{153A10E4-E668-41AD-9E0F-6785CE7EED66} = {3AD17044-6BFF-4750-9AC2-2CA466375F2A}
214194
{D58114AE-4998-4647-AFCA-9353D20495AE} = {E25031D3-5C64-430D-B86F-697B66816FD8}
215195
{A9F81DA3-DA82-423E-A5DD-B11C37548E06} = {96E891CD-2ED7-4293-A7AB-4C6F5D8D2B05}
216196
{A0F89B8B-32A3-4C28-8F1B-ADE343F16137} = {73A5C363-CA1F-44C4-9A9B-EF791A76BA6A}

appveyor.yml

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,7 @@ init:
66

77
install:
88
- cmd: >-
9-
choco install dotnet-6.0-sdk
10-
11-
choco install dotnet-7.0-sdk
9+
choco install dotnet-9.0-sdk
1210
1311
cd tests\RedisConfigs\3.0.503
1412
@@ -69,7 +67,7 @@ nuget:
6967
disable_publish_on_pr: true
7068

7169
build_script:
72-
- ps: .\build.ps1 -PullRequestNumber "$env:APPVEYOR_PULL_REQUEST_NUMBER" -CreatePackages ($env:OS -eq "Windows_NT")
70+
- ps: .\build.ps1 -PullRequestNumber "$env:APPVEYOR_PULL_REQUEST_NUMBER" -CreatePackages ($env:OS -eq "Windows_NT") -NetCoreOnlyTests
7371

7472
test: off
7573
artifacts:

build.ps1

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@ param(
33
[bool] $CreatePackages,
44
[switch] $StartServers,
55
[bool] $RunTests = $true,
6-
[string] $PullRequestNumber
6+
[string] $PullRequestNumber,
7+
[switch] $NetCoreOnlyTests
78
)
89

910
Write-Host "Run Parameters:" -ForegroundColor Cyan
@@ -29,7 +30,11 @@ if ($RunTests) {
2930
Write-Host "Servers Started." -ForegroundColor "Green"
3031
}
3132
Write-Host "Running tests: Build.csproj traversal (all frameworks)" -ForegroundColor "Magenta"
32-
dotnet test ".\Build.csproj" -c Release --no-build --logger trx
33+
if ($NetCoreOnlyTests) {
34+
dotnet test ".\Build.csproj" -c Release -f net8.0 --no-build --logger trx
35+
} else {
36+
dotnet test ".\Build.csproj" -c Release --no-build --logger trx
37+
}
3338
if ($LastExitCode -ne 0) {
3439
Write-Host "Error with tests, aborting build." -Foreground "Red"
3540
Exit 1

0 commit comments

Comments
 (0)