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