@@ -344,6 +344,23 @@ var _ = Describe("Commands", func() {
344344			Expect (val ).NotTo (BeEmpty ())
345345		})
346346
347+ 		It ("should ConfigGet Modules" , func () {
348+ 			SkipBeforeRedisMajor (8 , "Config doesn't include modules before Redis 8" )
349+ 			expected  :=  map [string ]string {
350+ 				"search-*" : "search-timeout" ,
351+ 				"ts-*" :     "ts-retention-policy" ,
352+ 				"bf-*" :     "bf-error-rate" ,
353+ 				"cf-*" :     "cf-initial-size" ,
354+ 			}
355+ 
356+ 			for  prefix , lookup  :=  range  expected  {
357+ 				val , err  :=  client .ConfigGet (ctx , prefix ).Result ()
358+ 				Expect (err ).NotTo (HaveOccurred ())
359+ 				Expect (val ).NotTo (BeEmpty ())
360+ 				Expect (val [lookup ]).NotTo (BeEmpty ())
361+ 			}
362+ 		})
363+ 
347364		It ("should ConfigResetStat" , Label ("NonRedisEnterprise" ), func () {
348365			r  :=  client .ConfigResetStat (ctx )
349366			Expect (r .Err ()).NotTo (HaveOccurred ())
@@ -362,6 +379,127 @@ var _ = Describe("Commands", func() {
362379			Expect (configSet .Val ()).To (Equal ("OK" ))
363380		})
364381
382+ 		It ("should ConfigGet with Modules" , Label ("NonRedisEnterprise" ), func () {
383+ 			SkipBeforeRedisMajor (8 , "config get won't return modules configs before redis 8" )
384+ 			configGet  :=  client .ConfigGet (ctx , "*" )
385+ 			Expect (configGet .Err ()).NotTo (HaveOccurred ())
386+ 			Expect (configGet .Val ()).To (HaveKey ("maxmemory" ))
387+ 			Expect (configGet .Val ()).To (HaveKey ("search-timeout" ))
388+ 			Expect (configGet .Val ()).To (HaveKey ("ts-retention-policy" ))
389+ 			Expect (configGet .Val ()).To (HaveKey ("bf-error-rate" ))
390+ 			Expect (configGet .Val ()).To (HaveKey ("cf-initial-size" ))
391+ 		})
392+ 
393+ 		It ("should ConfigSet FT DIALECT" , func () {
394+ 			SkipBeforeRedisMajor (8 , "config doesn't include modules before Redis 8" )
395+ 			defaultState , err  :=  client .ConfigGet (ctx , "search-default-dialect" ).Result ()
396+ 			Expect (err ).NotTo (HaveOccurred ())
397+ 
398+ 			// set to 3 
399+ 			res , err  :=  client .ConfigSet (ctx , "search-default-dialect" , "3" ).Result ()
400+ 			Expect (err ).NotTo (HaveOccurred ())
401+ 			Expect (res ).To (BeEquivalentTo ("OK" ))
402+ 
403+ 			defDialect , err  :=  client .FTConfigGet (ctx , "DEFAULT_DIALECT" ).Result ()
404+ 			Expect (err ).NotTo (HaveOccurred ())
405+ 			Expect (defDialect ).To (BeEquivalentTo (map [string ]interface {}{"DEFAULT_DIALECT" : "3" }))
406+ 
407+ 			resGet , err  :=  client .ConfigGet (ctx , "search-default-dialect" ).Result ()
408+ 			Expect (err ).NotTo (HaveOccurred ())
409+ 			Expect (resGet ).To (BeEquivalentTo (map [string ]string {"search-default-dialect" : "3" }))
410+ 
411+ 			// set to 2 
412+ 			res , err  =  client .ConfigSet (ctx , "search-default-dialect" , "2" ).Result ()
413+ 			Expect (err ).NotTo (HaveOccurred ())
414+ 			Expect (res ).To (BeEquivalentTo ("OK" ))
415+ 
416+ 			defDialect , err  =  client .FTConfigGet (ctx , "DEFAULT_DIALECT" ).Result ()
417+ 			Expect (err ).NotTo (HaveOccurred ())
418+ 			Expect (defDialect ).To (BeEquivalentTo (map [string ]interface {}{"DEFAULT_DIALECT" : "2" }))
419+ 
420+ 			// set to 1 
421+ 			res , err  =  client .ConfigSet (ctx , "search-default-dialect" , "1" ).Result ()
422+ 			Expect (err ).NotTo (HaveOccurred ())
423+ 			Expect (res ).To (BeEquivalentTo ("OK" ))
424+ 
425+ 			defDialect , err  =  client .FTConfigGet (ctx , "DEFAULT_DIALECT" ).Result ()
426+ 			Expect (err ).NotTo (HaveOccurred ())
427+ 			Expect (defDialect ).To (BeEquivalentTo (map [string ]interface {}{"DEFAULT_DIALECT" : "1" }))
428+ 
429+ 			resGet , err  =  client .ConfigGet (ctx , "search-default-dialect" ).Result ()
430+ 			Expect (err ).NotTo (HaveOccurred ())
431+ 			Expect (resGet ).To (BeEquivalentTo (map [string ]string {"search-default-dialect" : "1" }))
432+ 
433+ 			// set to default 
434+ 			res , err  =  client .ConfigSet (ctx , "search-default-dialect" , defaultState ["search-default-dialect" ]).Result ()
435+ 			Expect (err ).NotTo (HaveOccurred ())
436+ 			Expect (res ).To (BeEquivalentTo ("OK" ))
437+ 		})
438+ 
439+ 		It ("should ConfigSet fail for ReadOnly" , func () {
440+ 			SkipBeforeRedisMajor (8 , "Config doesn't include modules before Redis 8" )
441+ 			_ , err  :=  client .ConfigSet (ctx , "search-max-doctablesize" , "100000" ).Result ()
442+ 			Expect (err ).To (HaveOccurred ())
443+ 		})
444+ 
445+ 		It ("should ConfigSet Modules" , func () {
446+ 			SkipBeforeRedisMajor (8 , "Config doesn't include modules before Redis 8" )
447+ 			defaults  :=  map [string ]string {}
448+ 			expected  :=  map [string ]string {
449+ 				"search-timeout" :      "100" ,
450+ 				"ts-retention-policy" : "2" ,
451+ 				"bf-error-rate" :       "0.13" ,
452+ 				"cf-initial-size" :     "64" ,
453+ 			}
454+ 
455+ 			// read the defaults to set them back later 
456+ 			for  setting , _  :=  range  expected  {
457+ 				val , err  :=  client .ConfigGet (ctx , setting ).Result ()
458+ 				Expect (err ).NotTo (HaveOccurred ())
459+ 				defaults [setting ] =  val [setting ]
460+ 			}
461+ 
462+ 			// check if new values can be set 
463+ 			for  setting , value  :=  range  expected  {
464+ 				val , err  :=  client .ConfigSet (ctx , setting , value ).Result ()
465+ 				Expect (err ).NotTo (HaveOccurred ())
466+ 				Expect (val ).NotTo (BeEmpty ())
467+ 				Expect (val ).To (Equal ("OK" ))
468+ 			}
469+ 
470+ 			for  setting , value  :=  range  expected  {
471+ 				val , err  :=  client .ConfigGet (ctx , setting ).Result ()
472+ 				Expect (err ).NotTo (HaveOccurred ())
473+ 				Expect (val ).NotTo (BeEmpty ())
474+ 				Expect (val [setting ]).To (Equal (value ))
475+ 			}
476+ 
477+ 			// set back to the defaults 
478+ 			for  setting , value  :=  range  defaults  {
479+ 				val , err  :=  client .ConfigSet (ctx , setting , value ).Result ()
480+ 				Expect (err ).NotTo (HaveOccurred ())
481+ 				Expect (val ).NotTo (BeEmpty ())
482+ 				Expect (val ).To (Equal ("OK" ))
483+ 			}
484+ 		})
485+ 
486+ 		It ("should Fail ConfigSet Modules" , func () {
487+ 			SkipBeforeRedisMajor (8 , "Config doesn't include modules before Redis 8" )
488+ 			expected  :=  map [string ]string {
489+ 				"search-timeout" :      "-100" ,
490+ 				"ts-retention-policy" : "-10" ,
491+ 				"bf-error-rate" :       "1.5" ,
492+ 				"cf-initial-size" :     "-10" ,
493+ 			}
494+ 
495+ 			for  setting , value  :=  range  expected  {
496+ 				val , err  :=  client .ConfigSet (ctx , setting , value ).Result ()
497+ 				Expect (err ).To (HaveOccurred ())
498+ 				Expect (err ).To (MatchError (ContainSubstring (setting )))
499+ 				Expect (val ).To (BeEmpty ())
500+ 			}
501+ 		})
502+ 
365503		It ("should ConfigRewrite" , Label ("NonRedisEnterprise" ), func () {
366504			configRewrite  :=  client .ConfigRewrite (ctx )
367505			Expect (configRewrite .Err ()).NotTo (HaveOccurred ())
0 commit comments