Skip to content

Commit 0ddd7c3

Browse files
authored
Merge branch 'master' into ali/fix_doctest
2 parents 0a1f468 + 3ec82af commit 0ddd7c3

File tree

6 files changed

+123
-0
lines changed

6 files changed

+123
-0
lines changed

src/NRedisStack/Search/ISearchCommands.cs

+2
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@ public interface ISearchCommands
6767
/// <param name="option">is name of the configuration option, or '*' for all.</param>
6868
/// <returns>An array reply of the configuration name and value.</returns>
6969
/// <remarks><seealso href="https://redis.io/commands/ft.config-get"/></remarks>
70+
[Obsolete("Starting from Redis 8.0, use db.ConfigGet instead")]
7071
Dictionary<string, string> ConfigGet(string option);
7172

7273
/// <summary>
@@ -76,6 +77,7 @@ public interface ISearchCommands
7677
/// <param name="value">is value of the configuration option.</param>
7778
/// <returns><see langword="true"/> if executed correctly, error otherwise.</returns>
7879
/// <remarks><seealso href="https://redis.io/commands/ft.config-set"/></remarks>
80+
[Obsolete("Starting from Redis 8.0, use db.ConfigSet instead")]
7981
bool ConfigSet(string option, string value);
8082

8183
/// <summary>

src/NRedisStack/Search/ISearchCommandsAsync.cs

+2
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ public interface ISearchCommandsAsync
6666
/// <param name="option">is name of the configuration option, or '*' for all.</param>
6767
/// <returns>An array reply of the configuration name and value.</returns>
6868
/// <remarks><seealso href="https://redis.io/commands/ft.config-get"/></remarks>
69+
[Obsolete("Starting from Redis 8.0, use db.ConfigGetAsync instead")]
6970
Task<Dictionary<string, string>> ConfigGetAsync(string option);
7071

7172
/// <summary>
@@ -75,6 +76,7 @@ public interface ISearchCommandsAsync
7576
/// <param name="value">is value of the configuration option.</param>
7677
/// <returns><see langword="true"/> if executed correctly, error otherwise.</returns>
7778
/// <remarks><seealso href="https://redis.io/commands/ft.config-set"/></remarks>
79+
[Obsolete("Starting from Redis 8.0, use db.ConfigSetAsync instead")]
7880
Task<bool> ConfigSetAsync(string option, string value);
7981

8082
/// <summary>

src/NRedisStack/Search/SearchCommandBuilder.cs

+2
Original file line numberDiff line numberDiff line change
@@ -47,11 +47,13 @@ public static SerializedCommand Alter(string index, Schema schema, bool skipInit
4747
return new SerializedCommand(FT.ALTER, args);
4848
}
4949

50+
[Obsolete("Starting from Redis 8.0, use db.ConfigGet instead")]
5051
public static SerializedCommand ConfigGet(string option)
5152
{
5253
return new SerializedCommand(FT.CONFIG, "GET", option);
5354
}
5455

56+
[Obsolete("Starting from Redis 8.0, use db.ConfigSet instead")]
5557
public static SerializedCommand ConfigSet(string option, string value)
5658
{
5759
return new SerializedCommand(FT.CONFIG, "SET", option, value);

src/NRedisStack/Search/SearchCommands.cs

+2
Original file line numberDiff line numberDiff line change
@@ -51,12 +51,14 @@ public bool Alter(string index, Schema schema, bool skipInitialScan = false)
5151
}
5252

5353
/// <inheritdoc/>
54+
[Obsolete("Starting from Redis 8.0, use db.ConfigGet instead")]
5455
public Dictionary<string, string> ConfigGet(string option)
5556
{
5657
return _db.Execute(SearchCommandBuilder.ConfigGet(option)).ToConfigDictionary();
5758
}
5859

5960
/// <inheritdoc/>
61+
[Obsolete("Starting from Redis 8.0, use db.ConfigSet instead")]
6062
public bool ConfigSet(string option, string value)
6163
{
6264
return _db.Execute(SearchCommandBuilder.ConfigSet(option, value)).OKtoBoolean();

src/NRedisStack/Search/SearchCommandsAsync.cs

+2
Original file line numberDiff line numberDiff line change
@@ -83,12 +83,14 @@ public async Task<bool> AlterAsync(string index, Schema schema, bool skipInitial
8383
}
8484

8585
/// <inheritdoc/>
86+
[Obsolete("Starting from Redis 8.0, use db.ConfigGetAsync instead")]
8687
public async Task<Dictionary<string, string>> ConfigGetAsync(string option)
8788
{
8889
return (await _db.ExecuteAsync(SearchCommandBuilder.ConfigGet(option))).ToConfigDictionary();
8990
}
9091

9192
/// <inheritdoc/>
93+
[Obsolete("Starting from Redis 8.0, use db.ConfigSetAsync instead")]
9294
public async Task<bool> ConfigSetAsync(string option, string value)
9395
{
9496
return (await _db.ExecuteAsync(SearchCommandBuilder.ConfigSet(option, value))).OKtoBoolean();
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,113 @@
1+
using StackExchange.Redis;
2+
using Xunit;
3+
4+
namespace NRedisStack.Tests;
5+
6+
public class CommunityEditionUpdatesTests : AbstractNRedisStackTest, IDisposable
7+
{
8+
public CommunityEditionUpdatesTests(EndpointsFixture endpointsFixture) : base(endpointsFixture) { }
9+
10+
private IServer getAnyPrimary(IConnectionMultiplexer muxer)
11+
{
12+
foreach (var endpoint in muxer.GetEndPoints())
13+
{
14+
var server = muxer.GetServer(endpoint);
15+
if (!server.IsReplica) return server;
16+
}
17+
throw new InvalidOperationException("Requires a primary endpoint (found none)");
18+
}
19+
20+
[SkipIfRedis(Comparison.LessThan, "7.9.0")]
21+
[MemberData(nameof(EndpointsFixture.Env.AllEnvironments), MemberType = typeof(EndpointsFixture.Env))]
22+
public void ConfigSearchSettings(string endpointId)
23+
{
24+
IDatabase db = GetCleanDatabase(endpointId);
25+
IConnectionMultiplexer muxer = db.Multiplexer;
26+
IServer server = getAnyPrimary(muxer);
27+
28+
server.ConfigSet("search-on-timeout", "fail");
29+
30+
Assert.Equal("fail", server.ConfigGet("search-on-timeout").First().Value);
31+
32+
server.ConfigSet("search-on-timeout", "return");
33+
34+
Assert.Single(server.ConfigGet("search-min-prefix"));
35+
36+
Assert.Single(server.ConfigGet("search-max-prefix-expansions"));
37+
38+
Assert.Single(server.ConfigGet("search-max-doctablesize"));
39+
40+
Assert.Single(server.ConfigGet("search-max-search-results"));
41+
42+
Assert.Single(server.ConfigGet("search-max-aggregate-results"));
43+
44+
Assert.Single(server.ConfigGet("search-friso-ini"));
45+
46+
Assert.Single(server.ConfigGet("search-default-dialect"));
47+
}
48+
49+
[SkipIfRedis(Comparison.LessThan, "7.9.0")]
50+
[MemberData(nameof(EndpointsFixture.Env.AllEnvironments), MemberType = typeof(EndpointsFixture.Env))]
51+
public void ConfigTimeSeriesSettings(string endpointId)
52+
{
53+
IDatabase db = GetCleanDatabase(endpointId);
54+
IConnectionMultiplexer muxer = db.Multiplexer;
55+
IServer server = getAnyPrimary(muxer);
56+
57+
Assert.Single(server.ConfigGet("ts-compaction-policy"));
58+
59+
Assert.Single(server.ConfigGet("ts-retention-policy"));
60+
61+
Assert.Single(server.ConfigGet("ts-duplicate-policy"));
62+
63+
Assert.Single(server.ConfigGet("ts-encoding"));
64+
65+
Assert.Single(server.ConfigGet("ts-chunk-size-bytes"));
66+
67+
Assert.Single(server.ConfigGet("ts-ignore-max-time-diff"));
68+
69+
Assert.Single(server.ConfigGet("ts-ignore-max-val-diff"));
70+
}
71+
72+
[SkipIfRedis(Comparison.LessThan, "7.9.0")]
73+
[MemberData(nameof(EndpointsFixture.Env.AllEnvironments), MemberType = typeof(EndpointsFixture.Env))]
74+
public void ConfigProbabilisticSettings(string endpointId)
75+
{
76+
IDatabase db = GetCleanDatabase(endpointId);
77+
IConnectionMultiplexer muxer = db.Multiplexer;
78+
IServer server = getAnyPrimary(muxer);
79+
80+
server.ConfigSet("bf-error-rate", "0.02");
81+
82+
Assert.Single(server.ConfigGet("bf-error-rate"));
83+
84+
Assert.Equal("0.02", server.ConfigGet("bf-error-rate").First().Value);
85+
86+
Assert.Single(server.ConfigGet("bf-initial-size"));
87+
88+
Assert.Single(server.ConfigGet("cf-max-expansions"));
89+
90+
Assert.Single(server.ConfigGet("bf-expansion-factor"));
91+
92+
Assert.Single(server.ConfigGet("cf-expansion-factor"));
93+
94+
Assert.Single(server.ConfigGet("cf-initial-size"));
95+
96+
Assert.Single(server.ConfigGet("cf-bucket-size"));
97+
98+
Assert.Single(server.ConfigGet("cf-max-iterations"));
99+
}
100+
101+
[SkipIfRedis(Comparison.LessThan, "7.9.0")]
102+
[MemberData(nameof(EndpointsFixture.Env.AllEnvironments), MemberType = typeof(EndpointsFixture.Env))]
103+
public void InfoSearchSection(string endpointId)
104+
{
105+
IDatabase db = GetCleanDatabase(endpointId);
106+
IConnectionMultiplexer muxer = db.Multiplexer;
107+
IServer server = getAnyPrimary(muxer);
108+
109+
var searchInfo = server.Info("search");
110+
CustomAssertions.GreaterThan(10, searchInfo.Length);
111+
}
112+
113+
}

0 commit comments

Comments
 (0)