Skip to content

Commit db0bf4d

Browse files
Copilotappleboy
andauthored
fix(queue): add Redis database selection support for queue.redis configuration (#849)
* Initial plan * Add Redis DB configuration support for queue.redis - Add db field to SectionRedisQueue configuration structure - Update default configuration with queue.redis.db setting (default: 0) - Update config loading to read queue.redis.db parameter - Pass db parameter to redisdb.NewWorker in main.go using WithDB option - Add comprehensive tests for Redis DB configuration - Update test configuration files with db field Co-authored-by: appleboy <21979+appleboy@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: appleboy <21979+appleboy@users.noreply.github.com>
1 parent 2935398 commit db0bf4d

5 files changed

Lines changed: 63 additions & 0 deletions

File tree

config/config.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,7 @@ queue:
8888
with_tls: false
8989
username: ""
9090
password: ""
91+
db: 0
9192
9293
ios:
9394
enabled: false
@@ -263,6 +264,7 @@ type SectionRedisQueue struct {
263264
Addr string `yaml:"addr"`
264265
Username string `yaml:"username"`
265266
Password string `yaml:"password"`
267+
DB int `yaml:"db"`
266268
StreamName string `yaml:"stream_name"`
267269
Group string `yaml:"group"`
268270
Consumer string `yaml:"consumer"`
@@ -487,6 +489,7 @@ func loadConfigFromViper() (*ConfYaml, error) {
487489
conf.Queue.Redis.WithTLS = viper.GetBool("queue.redis.with_tls")
488490
conf.Queue.Redis.Username = viper.GetString("queue.redis.username")
489491
conf.Queue.Redis.Password = viper.GetString("queue.redis.password")
492+
conf.Queue.Redis.DB = viper.GetInt("queue.redis.db")
490493

491494
// Stat Engine
492495
conf.Stat.Engine = viper.GetString("stat.engine")

config/config_test.go

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -160,6 +160,7 @@ func (suite *ConfigTestSuite) TestValidateConfDefault() {
160160
assert.Equal(suite.T(), "", suite.ConfGorushDefault.Queue.Redis.Username)
161161
assert.Equal(suite.T(), "", suite.ConfGorushDefault.Queue.Redis.Password)
162162
assert.Equal(suite.T(), false, suite.ConfGorushDefault.Queue.Redis.WithTLS)
163+
assert.Equal(suite.T(), 0, suite.ConfGorushDefault.Queue.Redis.DB)
163164

164165
// log
165166
assert.Equal(suite.T(), "string", suite.ConfGorushDefault.Log.Format)
@@ -299,6 +300,43 @@ func TestLoadConfigFromEnv(t *testing.T) {
299300
assert.Equal(t, "x-auth-key:0987654321", ConfGorush.Core.FeedbackHeader[1])
300301
}
301302

303+
func TestRedisDBConfiguration(t *testing.T) {
304+
// Test loading Redis DB configuration from file
305+
conf, err := LoadConf("testdata/redis_db_config.yml")
306+
if err != nil {
307+
t.Fatalf("failed to load redis_db_config.yml: %v", err)
308+
}
309+
310+
// Test queue.redis.db is properly loaded
311+
assert.Equal(t, "redis", conf.Queue.Engine)
312+
assert.Equal(t, 5, conf.Queue.Redis.DB)
313+
314+
// Test stat.redis.db is properly loaded
315+
assert.Equal(t, "redis", conf.Stat.Engine)
316+
assert.Equal(t, 3, conf.Stat.Redis.DB)
317+
}
318+
319+
func TestRedisDBConfigurationFromEnv(t *testing.T) {
320+
// Test loading Redis DB configuration from environment variables
321+
os.Setenv("GORUSH_QUEUE_REDIS_DB", "7")
322+
os.Setenv("GORUSH_STAT_REDIS_DB", "9")
323+
324+
conf, err := LoadConf()
325+
if err != nil {
326+
t.Fatalf("failed to load config: %v", err)
327+
}
328+
329+
// Test queue.redis.db is properly loaded from env
330+
assert.Equal(t, 7, conf.Queue.Redis.DB)
331+
332+
// Test stat.redis.db is properly loaded from env
333+
assert.Equal(t, 9, conf.Stat.Redis.DB)
334+
335+
// Clean up
336+
os.Unsetenv("GORUSH_QUEUE_REDIS_DB")
337+
os.Unsetenv("GORUSH_STAT_REDIS_DB")
338+
}
339+
302340
func TestLoadWrongDefaultYAMLConfig(t *testing.T) {
303341
defaultConf = []byte(`a`)
304342
_, err := LoadConf()

config/testdata/config.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@ queue:
7373
username: ""
7474
password: ""
7575
with_tls: false
76+
db: 0
7677

7778
ios:
7879
enabled: false
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
queue:
2+
engine: "redis"
3+
redis:
4+
addr: 127.0.0.1:6379
5+
group: gorush
6+
consumer: gorush
7+
stream_name: gorush
8+
username: ""
9+
password: ""
10+
with_tls: false
11+
db: 5
12+
13+
stat:
14+
engine: "redis"
15+
redis:
16+
cluster: false
17+
addr: "localhost:6379"
18+
username: ""
19+
password: ""
20+
db: 3

main.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -344,6 +344,7 @@ func main() {
344344
redisdb.WithAddr(cfg.Queue.Redis.Addr),
345345
redisdb.WithUsername(cfg.Queue.Redis.Username),
346346
redisdb.WithPassword(cfg.Queue.Redis.Password),
347+
redisdb.WithDB(cfg.Queue.Redis.DB),
347348
redisdb.WithStreamName(cfg.Queue.Redis.StreamName),
348349
redisdb.WithGroup(cfg.Queue.Redis.Group),
349350
redisdb.WithConsumer(cfg.Queue.Redis.Consumer),

0 commit comments

Comments
 (0)