Skip to content

Commit 86c67ca

Browse files
committed
Cleanup + more stability/perf
1 parent 81f0311 commit 86c67ca

Some content is hidden

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

53 files changed

+710
-717
lines changed

tests/StackExchange.Redis.Tests/AggressiveTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ public async Task ParallelTransactionsWithConditions()
2222
RedisKey hits = Me(), trigger = Me() + "3";
2323
int expectedSuccess = 0;
2424

25-
await muxers[0].GetDatabase().KeyDeleteAsync(new[] { hits, trigger }).ForAwait();
25+
await muxers[0].GetDatabase().KeyDeleteAsync([hits, trigger]).ForAwait();
2626

2727
Task[] tasks = new Task[Workers];
2828
for (int i = 0; i < tasks.Length; i++)

tests/StackExchange.Redis.Tests/BacklogTests.cs

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -233,10 +233,12 @@ public async Task QueuesAndFlushesAfterReconnecting()
233233
// Queue up some commands
234234
Log("Test: Disconnected pings");
235235

236-
Task[] pings = new Task[3];
237-
pings[0] = RunBlockingSynchronousWithExtraThreadAsync(() => DisconnectedPings(1));
238-
pings[1] = RunBlockingSynchronousWithExtraThreadAsync(() => DisconnectedPings(2));
239-
pings[2] = RunBlockingSynchronousWithExtraThreadAsync(() => DisconnectedPings(3));
236+
Task[] pings =
237+
[
238+
RunBlockingSynchronousWithExtraThreadAsync(() => DisconnectedPings(1)),
239+
RunBlockingSynchronousWithExtraThreadAsync(() => DisconnectedPings(2)),
240+
RunBlockingSynchronousWithExtraThreadAsync(() => DisconnectedPings(3)),
241+
];
240242
void DisconnectedPings(int id)
241243
{
242244
// No need to delay, we're going to try a disconnected connection immediately so it'll fail...

tests/StackExchange.Redis.Tests/BasicOpTests.cs

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,10 @@
11
using System;
2-
using System.Diagnostics;
32
using System.Threading.Tasks;
43
using StackExchange.Redis.KeyspaceIsolation;
54
using Xunit;
65

76
namespace StackExchange.Redis.Tests;
87

9-
public class HighIntegrityBasicOpsTests(ITestOutputHelper output, SharedConnectionFixture fixture) : BasicOpsTests(output, fixture)
10-
{
11-
internal override bool HighIntegrity => true;
12-
}
13-
148
public class BasicOpsTests(ITestOutputHelper output, SharedConnectionFixture fixture) : TestBase(output, fixture)
159
{
1610
[Fact]
@@ -430,7 +424,7 @@ public async Task DeleteMany()
430424
_ = db.StringSetAsync(key1, "Heyyyyy");
431425
_ = db.StringSetAsync(key2, "Heyyyyy");
432426
// key 3 not set
433-
var ku1 = db.KeyDelete(new RedisKey[] { key1, key2, key3 });
427+
var ku1 = db.KeyDelete([key1, key2, key3]);
434428
var ke1 = db.KeyExistsAsync(key1).ForAwait();
435429
var ke2 = db.KeyExistsAsync(key2).ForAwait();
436430
Assert.Equal(2, ku1);
@@ -449,7 +443,7 @@ public async Task DeleteManyAsync()
449443
_ = db.StringSetAsync(key1, "Heyyyyy");
450444
_ = db.StringSetAsync(key2, "Heyyyyy");
451445
// key 3 not set
452-
var ku1 = db.KeyDeleteAsync(new RedisKey[] { key1, key2, key3 }).ForAwait();
446+
var ku1 = db.KeyDeleteAsync([key1, key2, key3]).ForAwait();
453447
var ke1 = db.KeyExistsAsync(key1).ForAwait();
454448
var ke2 = db.KeyExistsAsync(key2).ForAwait();
455449
Assert.Equal(2, await ku1);

tests/StackExchange.Redis.Tests/BoxUnboxTests.cs

Lines changed: 70 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -55,82 +55,82 @@ public static IEnumerable<object[]> RoundTripValues
5555
=> new[]
5656
{
5757
new object[] { RedisValue.Null },
58-
new object[] { RedisValue.EmptyString },
59-
new object[] { (RedisValue)0L },
60-
new object[] { (RedisValue)1L },
61-
new object[] { (RedisValue)18L },
62-
new object[] { (RedisValue)19L },
63-
new object[] { (RedisValue)20L },
64-
new object[] { (RedisValue)21L },
65-
new object[] { (RedisValue)22L },
66-
new object[] { (RedisValue)(-1L) },
67-
new object[] { (RedisValue)0 },
68-
new object[] { (RedisValue)1 },
69-
new object[] { (RedisValue)18 },
70-
new object[] { (RedisValue)19 },
71-
new object[] { (RedisValue)20 },
72-
new object[] { (RedisValue)21 },
73-
new object[] { (RedisValue)22 },
74-
new object[] { (RedisValue)(-1) },
75-
new object[] { (RedisValue)0F },
76-
new object[] { (RedisValue)1F },
77-
new object[] { (RedisValue)(-1F) },
78-
new object[] { (RedisValue)0D },
79-
new object[] { (RedisValue)1D },
80-
new object[] { (RedisValue)(-1D) },
81-
new object[] { (RedisValue)float.PositiveInfinity },
82-
new object[] { (RedisValue)float.NegativeInfinity },
83-
new object[] { (RedisValue)float.NaN },
84-
new object[] { (RedisValue)double.PositiveInfinity },
85-
new object[] { (RedisValue)double.NegativeInfinity },
86-
new object[] { (RedisValue)double.NaN },
87-
new object[] { (RedisValue)true },
88-
new object[] { (RedisValue)false },
89-
new object[] { (RedisValue)(string?)null },
90-
new object[] { (RedisValue)"abc" },
91-
new object[] { (RedisValue)s_abc },
92-
new object[] { (RedisValue)new Memory<byte>(s_abc) },
93-
new object[] { (RedisValue)new ReadOnlyMemory<byte>(s_abc) },
58+
[RedisValue.EmptyString],
59+
[(RedisValue)0L],
60+
[(RedisValue)1L],
61+
[(RedisValue)18L],
62+
[(RedisValue)19L],
63+
[(RedisValue)20L],
64+
[(RedisValue)21L],
65+
[(RedisValue)22L],
66+
[(RedisValue)(-1L)],
67+
[(RedisValue)0],
68+
[(RedisValue)1],
69+
[(RedisValue)18],
70+
[(RedisValue)19],
71+
[(RedisValue)20],
72+
[(RedisValue)21],
73+
[(RedisValue)22],
74+
[(RedisValue)(-1)],
75+
[(RedisValue)0F],
76+
[(RedisValue)1F],
77+
[(RedisValue)(-1F)],
78+
[(RedisValue)0D],
79+
[(RedisValue)1D],
80+
[(RedisValue)(-1D)],
81+
[(RedisValue)float.PositiveInfinity],
82+
[(RedisValue)float.NegativeInfinity],
83+
[(RedisValue)float.NaN],
84+
[(RedisValue)double.PositiveInfinity],
85+
[(RedisValue)double.NegativeInfinity],
86+
[(RedisValue)double.NaN],
87+
[(RedisValue)true],
88+
[(RedisValue)false],
89+
[(RedisValue)(string?)null],
90+
[(RedisValue)"abc"],
91+
[(RedisValue)s_abc],
92+
[(RedisValue)new Memory<byte>(s_abc)],
93+
[(RedisValue)new ReadOnlyMemory<byte>(s_abc)],
9494
};
9595

9696
public static IEnumerable<object?[]> UnboxValues
9797
=> new[]
9898
{
9999
new object?[] { null, RedisValue.Null },
100-
new object[] { "", RedisValue.EmptyString },
101-
new object[] { 0, (RedisValue)0 },
102-
new object[] { 1, (RedisValue)1 },
103-
new object[] { 18, (RedisValue)18 },
104-
new object[] { 19, (RedisValue)19 },
105-
new object[] { 20, (RedisValue)20 },
106-
new object[] { 21, (RedisValue)21 },
107-
new object[] { 22, (RedisValue)22 },
108-
new object[] { -1, (RedisValue)(-1) },
109-
new object[] { 18L, (RedisValue)18 },
110-
new object[] { 19L, (RedisValue)19 },
111-
new object[] { 20L, (RedisValue)20 },
112-
new object[] { 21L, (RedisValue)21 },
113-
new object[] { 22L, (RedisValue)22 },
114-
new object[] { -1L, (RedisValue)(-1) },
115-
new object[] { 0F, (RedisValue)0 },
116-
new object[] { 1F, (RedisValue)1 },
117-
new object[] { -1F, (RedisValue)(-1) },
118-
new object[] { 0D, (RedisValue)0 },
119-
new object[] { 1D, (RedisValue)1 },
120-
new object[] { -1D, (RedisValue)(-1) },
121-
new object[] { float.PositiveInfinity, (RedisValue)double.PositiveInfinity },
122-
new object[] { float.NegativeInfinity, (RedisValue)double.NegativeInfinity },
123-
new object[] { float.NaN, (RedisValue)double.NaN },
124-
new object[] { double.PositiveInfinity, (RedisValue)double.PositiveInfinity },
125-
new object[] { double.NegativeInfinity, (RedisValue)double.NegativeInfinity },
126-
new object[] { double.NaN, (RedisValue)double.NaN },
127-
new object[] { true, (RedisValue)true },
128-
new object[] { false, (RedisValue)false },
129-
new object[] { "abc", (RedisValue)"abc" },
130-
new object[] { s_abc, (RedisValue)s_abc },
131-
new object[] { new Memory<byte>(s_abc), (RedisValue)s_abc },
132-
new object[] { new ReadOnlyMemory<byte>(s_abc), (RedisValue)s_abc },
133-
new object[] { (RedisValue)1234, (RedisValue)1234 },
100+
["", RedisValue.EmptyString],
101+
[0, (RedisValue)0],
102+
[1, (RedisValue)1],
103+
[18, (RedisValue)18],
104+
[19, (RedisValue)19],
105+
[20, (RedisValue)20],
106+
[21, (RedisValue)21],
107+
[22, (RedisValue)22],
108+
[-1, (RedisValue)(-1)],
109+
[18L, (RedisValue)18],
110+
[19L, (RedisValue)19],
111+
[20L, (RedisValue)20],
112+
[21L, (RedisValue)21],
113+
[22L, (RedisValue)22],
114+
[-1L, (RedisValue)(-1)],
115+
[0F, (RedisValue)0],
116+
[1F, (RedisValue)1],
117+
[-1F, (RedisValue)(-1)],
118+
[0D, (RedisValue)0],
119+
[1D, (RedisValue)1],
120+
[-1D, (RedisValue)(-1)],
121+
[float.PositiveInfinity, (RedisValue)double.PositiveInfinity],
122+
[float.NegativeInfinity, (RedisValue)double.NegativeInfinity],
123+
[float.NaN, (RedisValue)double.NaN],
124+
[double.PositiveInfinity, (RedisValue)double.PositiveInfinity],
125+
[double.NegativeInfinity, (RedisValue)double.NegativeInfinity],
126+
[double.NaN, (RedisValue)double.NaN],
127+
[true, (RedisValue)true],
128+
[false, (RedisValue)false],
129+
["abc", (RedisValue)"abc"],
130+
[s_abc, (RedisValue)s_abc],
131+
[new Memory<byte>(s_abc), (RedisValue)s_abc],
132+
[new ReadOnlyMemory<byte>(s_abc), (RedisValue)s_abc],
133+
[(RedisValue)1234, (RedisValue)1234],
134134
};
135135

136136
public static IEnumerable<object[]> InternedValues()

tests/StackExchange.Redis.Tests/CancellationTests.cs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -38,10 +38,7 @@ public async Task WithCancellation_ValidToken_OperationSucceeds()
3838
Assert.Equal("value", result);
3939
}
4040

41-
private void Pause(IDatabase db)
42-
{
43-
db.Execute("client", ["pause", ConnectionPauseMilliseconds], CommandFlags.FireAndForget);
44-
}
41+
private static void Pause(IDatabase db) => db.Execute("client", ["pause", ConnectionPauseMilliseconds], CommandFlags.FireAndForget);
4542

4643
[Fact]
4744
public async Task WithTimeout_ShortTimeout_Async_ThrowsOperationCanceledException()

tests/StackExchange.Redis.Tests/ClientKillTests.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -50,10 +50,10 @@ public void TestClientKillMessageWithAllArguments()
5050
long maxAge = 102;
5151

5252
var filter = new ClientKillFilter().WithId(id).WithClientType(type).WithUsername(userName).WithEndpoint(endpoint).WithServerEndpoint(serverEndpoint).WithSkipMe(skipMe).WithMaxAgeInSeconds(maxAge);
53-
List<RedisValue> expected = new List<RedisValue>()
54-
{
53+
List<RedisValue> expected =
54+
[
5555
"KILL", "ID", "101", "TYPE", "normal", "USERNAME", "user1", "ADDR", "127.0.0.1:1234", "LADDR", "198.0.0.1:6379", "SKIPME", "yes", "MAXAGE", "102",
56-
};
56+
];
5757
Assert.Equal(expected, filter.ToList(true));
5858
}
5959
}

tests/StackExchange.Redis.Tests/ClusterShardedTests.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ public async Task TestShardedPubsubSubscriberAgainstReconnects()
2222
await Task.Delay(50); // let the sub settle (this isn't needed on RESP3, note)
2323

2424
var pubsub = conn.GetSubscriber();
25-
List<(RedisChannel, RedisValue)> received = new();
25+
List<(RedisChannel, RedisValue)> received = [];
2626
var queue = await pubsub.SubscribeAsync(channel);
2727
_ = Task.Run(async () =>
2828
{
@@ -77,7 +77,7 @@ public async Task TestShardedPubsubSubscriberAgainsHashSlotMigration()
7777
await Task.Delay(50); // let the sub settle (this isn't needed on RESP3, note)
7878

7979
var pubsub = conn.GetSubscriber();
80-
List<(RedisChannel, RedisValue)> received = new();
80+
List<(RedisChannel, RedisValue)> received = [];
8181
var queue = await pubsub.SubscribeAsync(channel);
8282
_ = Task.Run(async () =>
8383
{

tests/StackExchange.Redis.Tests/ClusterTests.cs

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,11 @@ public class ClusterTests(ITestOutputHelper output, SharedConnectionFixture fixt
1616
protected override string GetConfiguration() => TestConfig.Current.ClusterServersAndPorts + ",connectTimeout=10000";
1717

1818
[Fact]
19-
public void ExportConfiguration()
19+
public async Task ExportConfiguration()
2020
{
2121
if (File.Exists("cluster.zip")) File.Delete("cluster.zip");
2222
Assert.False(File.Exists("cluster.zip"));
23-
using (var conn = Create(allowAdmin: true))
23+
await using (var conn = Create(allowAdmin: true))
2424
using (var file = File.Create("cluster.zip"))
2525
{
2626
conn.ExportConfiguration(file);
@@ -137,7 +137,7 @@ public async Task TestIdentity()
137137
public async Task IntentionalWrongServer()
138138
{
139139
static string? StringGet(IServer server, RedisKey key, CommandFlags flags = CommandFlags.None)
140-
=> (string?)server.Execute("GET", new object[] { key }, flags);
140+
=> (string?)server.Execute("GET", [key], flags);
141141

142142
await using var conn = Create();
143143

@@ -355,8 +355,7 @@ public async Task TransactionWithSameSlotKeys()
355355
Assert.True(cluster.Wait(existsY), "y exists");
356356
}
357357

358-
[System.Diagnostics.CodeAnalysis.SuppressMessage("Usage", "xUnit1004:Test methods should not be skipped", Justification = "Because.")]
359-
[Theory(Skip = "FlushAllDatabases")]
358+
[Theory]
360359
[InlineData(null, 10)]
361360
[InlineData(null, 100)]
362361
[InlineData("abc", 10)]
@@ -365,12 +364,12 @@ public async Task Keys(string? pattern, int pageSize)
365364
{
366365
await using var conn = Create(allowAdmin: true);
367366

368-
_ = conn.GetDatabase();
367+
var dbId = TestConfig.GetDedicatedDB(conn);
369368
var server = conn.GetEndPoints().Select(x => conn.GetServer(x)).First(x => !x.IsReplica);
370-
server.FlushAllDatabases();
369+
await server.FlushDatabaseAsync(dbId);
371370
try
372371
{
373-
Assert.False(server.Keys(pattern: pattern, pageSize: pageSize).Any());
372+
Assert.False(server.Keys(dbId, pattern: pattern, pageSize: pageSize).Any());
374373
Log($"Complete: '{pattern}' / {pageSize}");
375374
}
376375
catch
@@ -754,7 +753,7 @@ public async Task ClusterPubSub(bool sharded)
754753
Assert.True(conn.IsConnected);
755754

756755
var pubsub = conn.GetSubscriber();
757-
List<(RedisChannel, RedisValue)> received = new();
756+
List<(RedisChannel, RedisValue)> received = [];
758757
var queue = await pubsub.SubscribeAsync(channel);
759758
_ = Task.Run(async () =>
760759
{

tests/StackExchange.Redis.Tests/ConfigTests.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -211,7 +211,7 @@ public void CanParseAndFormatUnixDomainSocket()
211211
}
212212

213213
[Fact]
214-
public void TalkToNonsenseServer()
214+
public async Task TalkToNonsenseServer()
215215
{
216216
var config = new ConfigurationOptions
217217
{
@@ -223,7 +223,7 @@ public void TalkToNonsenseServer()
223223
ConnectTimeout = 200,
224224
};
225225
var log = new StringWriter();
226-
using (var conn = ConnectionMultiplexer.Connect(config, log))
226+
await using (var conn = ConnectionMultiplexer.Connect(config, log))
227227
{
228228
Log(log.ToString());
229229
Assert.False(conn.IsConnected);
@@ -340,7 +340,7 @@ public async Task DefaultClientName()
340340
[Fact]
341341
public async Task ReadConfigWithConfigDisabled()
342342
{
343-
await using var conn = Create(allowAdmin: true, disabledCommands: new[] { "config", "info" });
343+
await using var conn = Create(allowAdmin: true, disabledCommands: ["config", "info"]);
344344

345345
var server = GetAnyPrimary(conn);
346346
var ex = Assert.Throws<RedisCommandException>(() => server.ConfigGet());
@@ -350,7 +350,7 @@ public async Task ReadConfigWithConfigDisabled()
350350
[Fact]
351351
public async Task ConnectWithSubscribeDisabled()
352352
{
353-
await using var conn = Create(allowAdmin: true, disabledCommands: new[] { "subscribe" });
353+
await using var conn = Create(allowAdmin: true, disabledCommands: ["subscribe"]);
354354

355355
Assert.True(conn.IsConnected);
356356
var servers = conn.GetServerSnapshot();

tests/StackExchange.Redis.Tests/ConnectByIPTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ public async Task ConnectByVariousEndpoints(EndPoint ep, AddressFamily expectedF
6767
};
6868
if (ep.AddressFamily != AddressFamily.InterNetworkV6) // I don't have IPv6 servers
6969
{
70-
using (var conn = ConnectionMultiplexer.Connect(config))
70+
await using (var conn = ConnectionMultiplexer.Connect(config))
7171
{
7272
var actual = conn.GetEndPoints().Single();
7373
var server = conn.GetServer(actual);

0 commit comments

Comments
 (0)