Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,10 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)

## [Unreleased]

### Changed

- Bumped `StackExchange.Redis` from 2.10.1 to 2.13.17 (latest 2.x), the first step of the staged upgrade toward 3.0. No public API or runtime behavior change.

## [1.0.1] - 2026-07-15

### Changed
Expand Down
2 changes: 1 addition & 1 deletion Directory.Packages.props
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@
<PackageVersion Include="BenchmarkDotNet" Version="0.15.8" />
<PackageVersion Include="Aspire.Hosting.Redis" Version="13.4.6" />
<PackageVersion Include="System.Net.Http" Version="4.3.4" />
<PackageVersion Include="StackExchange.Redis" Version="2.10.1" />
<PackageVersion Include="StackExchange.Redis" Version="2.13.17" />
<PackageVersion Include="Azure.Identity" Version="1.21.0" />
<PackageVersion Include="Microsoft.Azure.StackExchangeRedis" Version="3.3.1" />
<PackageVersion Include="AsyncKeyedLock" Version="8.0.2" />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -306,19 +306,27 @@ public ValueTask InitializeAsync()

private StreamInfo GenerateStreamInfo(int? groupsCount = null)
{
//int length, int radixTreeKeys, int radixTreeNodes, int groups, StreamEntry firstEntry, StreamEntry lastEntry, RedisValue lastGeneratedId
object?[] args = [
(object?)_fixture.Create<int>(),
(object?)_fixture.Create<int>(),
(object?)_fixture.Create<int>(),
(object?) groupsCount ?? _fixture.Create<int>(),
(object?)_fixture.Create<StreamEntry>(),
(object?)_fixture.Create<StreamEntry>(),
(object?)(RedisValue)_lastGeneratedId
];

var streamInfo = (StreamInfo)Activator.CreateInstance(typeof(StreamInfo), BindingFlags.Instance | BindingFlags.NonPublic, null, args, null)!;
return streamInfo;
// StreamInfo's internal ctor keeps its leading params (length, radixTreeKeys, radixTreeNodes,
// groups, firstEntry, lastEntry, lastGeneratedId) stable but grows a trailing tail across
// StackExchange.Redis versions. Fill by the actual ctor's parameter list and set only the
// fields the maintainer reads, so version bumps that append params don't break this fixture.
var ctor = typeof(StreamInfo).GetConstructors(BindingFlags.Instance | BindingFlags.NonPublic).Single();
var parameters = ctor.GetParameters();
var args = new object?[parameters.Length];
for (var i = 0; i < parameters.Length; i++)
{
args[i] = parameters[i].ParameterType.IsValueType ? Activator.CreateInstance(parameters[i].ParameterType) : null;
}

args[0] = _fixture.Create<int>();
args[1] = _fixture.Create<int>();
args[2] = _fixture.Create<int>();
args[3] = groupsCount ?? _fixture.Create<int>();
args[4] = _fixture.Create<StreamEntry>();
args[5] = _fixture.Create<StreamEntry>();
args[6] = (RedisValue)_lastGeneratedId;

return (StreamInfo)ctor.Invoke(args);
}

private StreamGroupInfo GenerateGroupInfo(DateTimeOffset lastGenerated, int? consumerCount = null)
Expand Down
Loading