/*
Copyright (c) 2019 AT&T Intellectual Property.
- Copyright (c) 2018-2019 Nokia.
+ Copyright (c) 2018-2022 Nokia.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
}
type Config struct {
- hostname string
- port string
- masterName string
- sentinelPort string
- clusterAddrList string
- nodeCnt string
+ hostname string
+ ports []string
+ masterNames []string
+ sentinelPorts []string
+ clusterAddrs []string
+ nodeCnt string
}
type DB struct {
redisModules bool
sCbMap *sharedCbMap
ch intChannels
- cfg Config
addr string
+ port string
+ sentinelPort string
+ masterName string
+ nodeCnt string
}
type Subscriber interface {
return client.Subscribe(ctx, channels...)
}
-func CreateDB(client RedisClient, subscribe SubscribeFn, sentinelCreateCb RedisSentinelCreateCb, cfg Config, sentinelAddr string) *DB {
+func CreateDB(client RedisClient, subscribe SubscribeFn, sentinelCreateCb RedisSentinelCreateCb,
+ addr, port, sentinelPort, masterName, nodeCnt string) *DB {
db := DB{
ctx: context.Background(),
client: client,
removeChannel: make(chan string),
exit: make(chan bool),
},
- cfg: cfg,
- addr: sentinelAddr,
+ addr: addr,
+ sentinelPort: sentinelPort,
+ port: port,
+ masterName: masterName,
+ nodeCnt: nodeCnt,
}
return &db
func readConfig(osI OS) Config {
cfg := Config{
- hostname: osI.Getenv("DBAAS_SERVICE_HOST", "localhost"),
- port: osI.Getenv("DBAAS_SERVICE_PORT", "6379"),
- masterName: osI.Getenv("DBAAS_MASTER_NAME", ""),
- sentinelPort: osI.Getenv("DBAAS_SERVICE_SENTINEL_PORT", ""),
- clusterAddrList: osI.Getenv("DBAAS_CLUSTER_ADDR_LIST", ""),
- nodeCnt: osI.Getenv("DBAAS_NODE_COUNT", "1"),
+ hostname: osI.Getenv("DBAAS_SERVICE_HOST", "localhost"),
+ ports: strings.Split(osI.Getenv("DBAAS_SERVICE_PORT", "6379"), ","),
+ nodeCnt: osI.Getenv("DBAAS_NODE_COUNT", "1"),
}
+
+ if addrStr := osI.Getenv("DBAAS_CLUSTER_ADDR_LIST", ""); addrStr != "" {
+ cfg.clusterAddrs = strings.Split(addrStr, ",")
+ } else if cfg.hostname != "" {
+ cfg.clusterAddrs = append(cfg.clusterAddrs, cfg.hostname)
+ }
+ if sntPortStr := osI.Getenv("DBAAS_SERVICE_SENTINEL_PORT", ""); sntPortStr != "" {
+ cfg.sentinelPorts = strings.Split(sntPortStr, ",")
+ }
+ if nameStr := osI.Getenv("DBAAS_MASTER_NAME", ""); nameStr != "" {
+ cfg.masterNames = strings.Split(nameStr, ",")
+ }
+ completeConfig(&cfg)
return cfg
}
return val
}
-func ReadConfigAndCreateDbClients(osI OS, clientCreator RedisClientCreator,
- subscribe SubscribeFn,
- sentinelCreateCb RedisSentinelCreateCb) []*DB {
- cfg := readConfig(osI)
- return createDbClients(cfg, clientCreator, subscribe, sentinelCreateCb)
+func completeConfig(cfg *Config) {
+ if len(cfg.sentinelPorts) == 0 {
+ if len(cfg.clusterAddrs) > len(cfg.ports) && len(cfg.ports) > 0 {
+ for i := len(cfg.ports); i < len(cfg.clusterAddrs); i++ {
+ cfg.ports = append(cfg.ports, cfg.ports[i-1])
+ }
+ }
+ } else {
+ if len(cfg.clusterAddrs) > len(cfg.sentinelPorts) {
+ for i := len(cfg.sentinelPorts); i < len(cfg.clusterAddrs); i++ {
+ cfg.sentinelPorts = append(cfg.sentinelPorts, cfg.sentinelPorts[i-1])
+ }
+ }
+ if len(cfg.clusterAddrs) > len(cfg.masterNames) && len(cfg.masterNames) > 0 {
+ for i := len(cfg.masterNames); i < len(cfg.clusterAddrs); i++ {
+ cfg.masterNames = append(cfg.masterNames, cfg.masterNames[i-1])
+ }
+ }
+ }
}
-func createDbClients(cfg Config, clientCreator RedisClientCreator,
+func ReadConfigAndCreateDbClients(osI OS, clientCreator RedisClientCreator,
subscribe SubscribeFn,
sentinelCreateCb RedisSentinelCreateCb) []*DB {
- if cfg.clusterAddrList == "" {
- return []*DB{createLegacyDbClient(cfg, clientCreator, subscribe, sentinelCreateCb)}
- }
-
dbs := []*DB{}
-
- addrList := strings.Split(cfg.clusterAddrList, ",")
- for _, addr := range addrList {
- db := createDbClient(cfg, addr, clientCreator, subscribe, sentinelCreateCb)
+ cfg := readConfig(osI)
+ for i, addr := range cfg.clusterAddrs {
+ port := getListItem(cfg.ports, i)
+ sntPort := getListItem(cfg.sentinelPorts, i)
+ name := getListItem(cfg.masterNames, i)
+ db := createDbClient(addr, port, sntPort, name, cfg.nodeCnt,
+ clientCreator, subscribe, sentinelCreateCb)
dbs = append(dbs, db)
}
return dbs
}
-func createLegacyDbClient(cfg Config, clientCreator RedisClientCreator,
- subscribe SubscribeFn,
- sentinelCreateCb RedisSentinelCreateCb) *DB {
- return createDbClient(cfg, cfg.hostname, clientCreator, subscribe, sentinelCreateCb)
+func getListItem(list []string, index int) string {
+ if index < len(list) {
+ return list[index]
+ }
+ return ""
}
-func createDbClient(cfg Config, hostName string, clientCreator RedisClientCreator,
+func createDbClient(addr, port, sentinelPort, masterName, nodeCnt string, clientCreator RedisClientCreator,
subscribe SubscribeFn,
sentinelCreateCb RedisSentinelCreateCb) *DB {
var client RedisClient
var db *DB
- if cfg.sentinelPort == "" {
- client = clientCreator(hostName, cfg.port, "", false)
- db = CreateDB(client, subscribe, nil, cfg, hostName)
+ if sentinelPort == "" {
+ client = clientCreator(addr, port, "", false)
+ db = CreateDB(client, subscribe, nil, addr, port, sentinelPort, masterName, nodeCnt)
} else {
- client = clientCreator(hostName, cfg.sentinelPort, cfg.masterName, true)
- db = CreateDB(client, subscribe, sentinelCreateCb, cfg, hostName)
+ client = clientCreator(addr, sentinelPort, masterName, true)
+ db = CreateDB(client, subscribe, sentinelCreateCb, addr, port, sentinelPort, masterName, nodeCnt)
}
db.CheckCommands()
return db
func (db *DB) State() (*DbState, error) {
dbState := new(DbState)
- if db.cfg.sentinelPort != "" {
+ if db.sentinelPort != "" {
//Establish connection to Redis sentinel. The reason why connection is done
//here instead of time of the SDL instance creation is that for the time being
//sentinel connection is needed only here to get state information and
//state information is needed only by 'sdlcli' hence it is not time critical
//and also we want to avoid opening unnecessary TCP connections towards Redis
//sentinel for every SDL instance. Now it is done only when 'sdlcli' is used.
- sentinelClient := db.sentinel(&db.cfg, db.addr)
+ sentinelClient := db.sentinel(db.addr, db.sentinelPort, db.masterName, db.nodeCnt)
return sentinelClient.GetDbState()
} else {
info, err := db.Info()
PrimaryDbState: PrimaryDbState{
Fields: PrimaryDbStateFields{
Role: "master",
- Ip: db.cfg.hostname,
- Port: db.cfg.port,
+ Ip: db.addr,
+ Port: db.port,
Flags: "master",
},
},
}
}
- cnt, err := strconv.Atoi(db.cfg.nodeCnt)
+ cnt, err := strconv.Atoi(db.nodeCnt)
if err != nil {
- dbState.Err = fmt.Errorf("DBAAS_NODE_COUNT configuration value '%s' conversion to integer failed", db.cfg.nodeCnt)
+ dbState.Err = fmt.Errorf("DBAAS_NODE_COUNT configuration value '%s' conversion to integer failed", db.nodeCnt)
} else {
dbState.ConfigNodeCnt = cnt
}
}
func createReplicaDbClient(host string) *DB {
- cfg := readConfig(osImpl{})
- cfg.sentinelPort = ""
- cfg.clusterAddrList, cfg.port, _ = net.SplitHostPort(host)
- return createDbClient(cfg, cfg.clusterAddrList, newRedisClient, subscribeNotifications, nil)
+ addr, port, _ := net.SplitHostPort(host)
+ return createDbClient(addr, port, "", "", "", newRedisClient, subscribeNotifications, nil)
}
func getStatisticsInfo(db *DB, host string) (*DbStatisticsInfo, error) {
func standaloneStatistics(db *DB) (*DbStatistics, error) {
dbStatistics := new(DbStatistics)
- dbStatisticsInfo, err := getStatisticsInfo(db, net.JoinHostPort(db.cfg.hostname, db.cfg.port))
+ dbStatisticsInfo, err := getStatisticsInfo(db, net.JoinHostPort(db.addr, db.port))
dbStatistics.Stats = append(dbStatistics.Stats, dbStatisticsInfo)
return dbStatistics, err
}
func (db *DB) Statistics() (*DbStatistics, error) {
- if db.cfg.sentinelPort != "" {
+ if db.sentinelPort != "" {
return sentinelStatistics(db)
}
/*
Copyright (c) 2019 AT&T Intellectual Property.
- Copyright (c) 2018-2019 Nokia.
+ Copyright (c) 2018-2022 Nokia.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
setupVals := setupEnv(
commandsExists,
"service-ricplt-dbaas-tcp-cluster-0.ricplt",
- "6376",
- "dbaasmaster",
- "26376",
+ "6379",
+ "dbaasmaster-cluster-0",
+ "26379",
"",
nodeCnt,
)
setupVals := setupEnv(
commandsExists,
"service-ricplt-dbaas-tcp-cluster-0.ricplt",
- "6376", "", "", "", nodeCnt,
+ "6379", "", "", "", nodeCnt,
)
return setupVals.pubSubMock[0], setupVals.rClient[0], setupVals.db[0]
}
return clm
},
subscribeNotifications,
- func(cfg *sdlgoredis.Config, addr string) *sdlgoredis.Sentinel {
+ func(addr, sentinelPort, masterName, nodeCnt string) *sdlgoredis.Sentinel {
s := &sdlgoredis.Sentinel{
IredisSentinelClient: smock,
- Cfg: cfg,
+ MasterName: masterName,
+ NodeCnt: nodeCnt,
}
return s
},
func TestClientStandaloneRedisLegacyEnv(t *testing.T) {
setupVals := setupEnv(
true,
- "service-ricplt-dbaas-tcp-cluster-0.ricplt", "6376", "", "", "", "",
+ "service-ricplt-dbaas-tcp-cluster-0.ricplt", "6379", "", "", "", "",
)
assert.Equal(t, 1, len(setupVals.rClient))
assert.Equal(t, 1, len(setupVals.db))
func TestClientSentinelRedisLegacyEnv(t *testing.T) {
setupVals := setupEnv(
true,
- "service-ricplt-dbaas-tcp-cluster-0.ricplt", "6376", "dbaasmaster", "26376", "", "3",
+ "service-ricplt-dbaas-tcp-cluster-0.ricplt", "6379", "dbaasmaster-cluster-0", "26379", "", "3",
)
assert.Equal(t, 1, len(setupVals.rClient))
assert.Equal(t, 1, len(setupVals.db))
func TestClientTwoStandaloneRedisEnvs(t *testing.T) {
setupVals := setupEnv(
true,
- "service-ricplt-dbaas-tcp-cluster-0.ricplt", "6376", "", "",
+ "service-ricplt-dbaas-tcp-cluster-0.ricplt", "6379,6380", "", "",
"service-ricplt-dbaas-tcp-cluster-0.ricplt,service-ricplt-dbaas-tcp-cluster-1.ricplt", "",
)
assert.Equal(t, 2, len(setupVals.rClient))
func TestClientTwoSentinelRedisEnvs(t *testing.T) {
setupVals := setupEnv(
true,
- "service-ricplt-dbaas-tcp-cluster-0.ricplt", "6376", "dbaasmaster", "26376",
- "service-ricplt-dbaas-tcp-cluster-0.ricplt,service-ricplt-dbaas-tcp-cluster-1.ricplt", "3",
+ "service-ricplt-dbaas-tcp-cluster-0.ricplt", "6379,6380", "dbaasmaster-cluster-0,dbaasmaster-cluster-1",
+ "26379,26380", "service-ricplt-dbaas-tcp-cluster-0.ricplt,service-ricplt-dbaas-tcp-cluster-1.ricplt", "3",
)
assert.Equal(t, 2, len(setupVals.rClient))
assert.Equal(t, 2, len(setupVals.db))
setupVals.rClient[1].AssertExpectations(t)
}
+func TestCompleteConfigIfLessPortsThanAddresses(t *testing.T) {
+ setupVals := setupEnv(
+ true,
+ "service-ricplt-dbaas-tcp-cluster-0.ricplt", "6379", "dbaasmaster-cluster-0,dbaasmaster-cluster-1",
+ "", "service-ricplt-dbaas-tcp-cluster-0.ricplt,service-ricplt-dbaas-tcp-cluster-1.ricplt", "3",
+ )
+ assert.Equal(t, 2, len(setupVals.rClient))
+ assert.Equal(t, 2, len(setupVals.db))
+}
+
+func TestCompleteConfigIfLessSentinelPortsThanAddresses(t *testing.T) {
+ setupVals := setupEnv(
+ true,
+ "service-ricplt-dbaas-tcp-cluster-0.ricplt", "6379,6380", "dbaasmaster-cluster-0,dbaasmaster-cluster-1",
+ "26379", "service-ricplt-dbaas-tcp-cluster-0.ricplt,service-ricplt-dbaas-tcp-cluster-1.ricplt", "3",
+ )
+ assert.Equal(t, 2, len(setupVals.rClient))
+ assert.Equal(t, 2, len(setupVals.db))
+}
+
+func TestCompleteConfigIfLessSentinelNamesThanAddresses(t *testing.T) {
+ setupVals := setupEnv(
+ true,
+ "service-ricplt-dbaas-tcp-cluster-0.ricplt", "6379,6380", "dbaasmaster-cluster-0",
+ "26379,26380", "service-ricplt-dbaas-tcp-cluster-0.ricplt,service-ricplt-dbaas-tcp-cluster-1.ricplt", "3",
+ )
+ assert.Equal(t, 2, len(setupVals.rClient))
+ assert.Equal(t, 2, len(setupVals.db))
+}
+
func TestInfoOfPrimaryRedisWithTwoReplicasSuccessfully(t *testing.T) {
_, r, db := setupHaEnv(true)
redisInfo := "# Replication\r\n" +
expState.addSentinel("10.20.30.40", "26379", "sentinel", nil)
expState.addSentinel("10.20.30.50", "30001", "sentinel", nil)
- s[0].On("Master", "dbaasmaster").Return(redis.NewStringStringMapResult(redisPrimaryState, nil))
- s[0].On("Slaves", "dbaasmaster").Return(redis.NewSliceResult(redisReplicasState.resp, nil))
- s[0].On("Sentinels", "dbaasmaster").Return(redis.NewSliceResult(redisSentinelsState.resp, nil))
+ s[0].On("Master", "dbaasmaster-cluster-0").Return(redis.NewStringStringMapResult(redisPrimaryState, nil))
+ s[0].On("Slaves", "dbaasmaster-cluster-0").Return(redis.NewSliceResult(redisReplicasState.resp, nil))
+ s[0].On("Sentinels", "dbaasmaster-cluster-0").Return(redis.NewSliceResult(redisSentinelsState.resp, nil))
ret, err := db.State()
assert.Nil(t, err)
assert.Equal(t, expState.s, *ret)
r.AssertExpectations(t)
}
+func TestStateWithTwoSdlClustersContainingPrimaryAndTwoReplicaRedisSuccessfully(t *testing.T) {
+ setupVals := setupEnv(
+ true,
+ "", "6379,6380", "dbaasmaster-cluster-0,dbaasmaster-cluster-1",
+ "26379,26380", "service-ricplt-dbaas-tcp-cluster-0.ricplt,service-ricplt-dbaas-tcp-cluster-1.ricplt", "3",
+ )
+ r := setupVals.rClient
+ s := setupVals.rSentinel
+ db := setupVals.db
+
+ FstRedisPrimaryState := newMockRedisMasterCallResp("master", "10.20.30.30", "6379", "master")
+ FstRedisReplicasState := newMockRedisSlavesCall()
+ FstRedisReplicasState.add("slave", "10.20.30.40", "6379", "up", "slave")
+ FstRedisReplicasState.add("slave", "10.20.30.50", "6379", "up", "slave")
+ FstRedisSentinelsState := newMockRedisSentinelsCall()
+ FstRedisSentinelsState.add("10.20.30.40", "26379", "sentinel")
+ FstRedisSentinelsState.add("10.20.30.50", "26379", "sentinel")
+
+ SndRedisPrimaryState := newMockRedisMasterCallResp("master", "10.20.30.60", "6380", "master")
+ SndRedisReplicasState := newMockRedisSlavesCall()
+ SndRedisReplicasState.add("slave", "10.20.30.70", "6380", "up", "slave")
+ SndRedisReplicasState.add("slave", "10.20.30.80", "6380", "up", "slave")
+ SndRedisSentinelsState := newMockRedisSentinelsCall()
+ SndRedisSentinelsState.add("10.20.30.70", "26380", "sentinel")
+ SndRedisSentinelsState.add("10.20.30.80", "26380", "sentinel")
+
+ FstExpState := newExpDbState(3, nil)
+ FstExpState.addPrimary("master", "10.20.30.30", "6379", "master", nil)
+ FstExpState.addReplica("slave", "10.20.30.40", "6379", "up", "slave", nil)
+ FstExpState.addReplica("slave", "10.20.30.50", "6379", "up", "slave", nil)
+ FstExpState.addSentinel("10.20.30.40", "26379", "sentinel", nil)
+ FstExpState.addSentinel("10.20.30.50", "26379", "sentinel", nil)
+
+ SndExpState := newExpDbState(3, nil)
+ SndExpState.addPrimary("master", "10.20.30.60", "6380", "master", nil)
+ SndExpState.addReplica("slave", "10.20.30.70", "6380", "up", "slave", nil)
+ SndExpState.addReplica("slave", "10.20.30.80", "6380", "up", "slave", nil)
+ SndExpState.addSentinel("10.20.30.70", "26380", "sentinel", nil)
+ SndExpState.addSentinel("10.20.30.80", "26380", "sentinel", nil)
+
+ s[0].On("Master", "dbaasmaster-cluster-0").Return(redis.NewStringStringMapResult(FstRedisPrimaryState, nil))
+ s[0].On("Slaves", "dbaasmaster-cluster-0").Return(redis.NewSliceResult(FstRedisReplicasState.resp, nil))
+ s[0].On("Sentinels", "dbaasmaster-cluster-0").Return(redis.NewSliceResult(FstRedisSentinelsState.resp, nil))
+
+ s[0].On("Master", "dbaasmaster-cluster-1").Return(redis.NewStringStringMapResult(SndRedisPrimaryState, nil))
+ s[0].On("Slaves", "dbaasmaster-cluster-1").Return(redis.NewSliceResult(SndRedisReplicasState.resp, nil))
+ s[0].On("Sentinels", "dbaasmaster-cluster-1").Return(redis.NewSliceResult(SndRedisSentinelsState.resp, nil))
+
+ ret, err := db[0].State()
+ assert.Nil(t, err)
+ assert.Equal(t, FstExpState.s, *ret)
+
+ ret, err = db[1].State()
+ assert.Nil(t, err)
+ assert.Equal(t, SndExpState.s, *ret)
+ r[0].AssertExpectations(t)
+}
+
func TestStateWithPrimaryAndTwoReplicaRedisFailureInPrimaryRedisCall(t *testing.T) {
expErr := errors.New("Some error")
_, r, s, db := setupHaEnvWithSentinels(true, "3")
expState.addSentinel("10.20.30.40", "26379", "sentinel", nil)
expState.addSentinel("10.20.30.50", "30001", "sentinel", nil)
- s[0].On("Master", "dbaasmaster").Return(redis.NewStringStringMapResult(redisPrimaryState, expErr))
- s[0].On("Slaves", "dbaasmaster").Return(redis.NewSliceResult(redisReplicasState.resp, nil))
- s[0].On("Sentinels", "dbaasmaster").Return(redis.NewSliceResult(redisSentinelsState.resp, nil))
+ s[0].On("Master", "dbaasmaster-cluster-0").Return(redis.NewStringStringMapResult(redisPrimaryState, expErr))
+ s[0].On("Slaves", "dbaasmaster-cluster-0").Return(redis.NewSliceResult(redisReplicasState.resp, nil))
+ s[0].On("Sentinels", "dbaasmaster-cluster-0").Return(redis.NewSliceResult(redisSentinelsState.resp, nil))
ret, err := db.State()
assert.NotNil(t, err)
assert.Equal(t, expState.s, *ret)
expState.addSentinel("10.20.30.40", "26379", "sentinel", nil)
expState.addSentinel("10.20.30.50", "30001", "sentinel", nil)
- s[0].On("Master", "dbaasmaster").Return(redis.NewStringStringMapResult(redisPrimaryState, nil))
- s[0].On("Slaves", "dbaasmaster").Return(redis.NewSliceResult(redisReplicasState.resp, errors.New("Some error")))
- s[0].On("Sentinels", "dbaasmaster").Return(redis.NewSliceResult(redisSentinelsState.resp, nil))
+ s[0].On("Master", "dbaasmaster-cluster-0").Return(redis.NewStringStringMapResult(redisPrimaryState, nil))
+ s[0].On("Slaves", "dbaasmaster-cluster-0").Return(redis.NewSliceResult(redisReplicasState.resp, errors.New("Some error")))
+ s[0].On("Sentinels", "dbaasmaster-cluster-0").Return(redis.NewSliceResult(redisSentinelsState.resp, nil))
ret, err := db.State()
assert.NotNil(t, err)
assert.Equal(t, expState.s, *ret)
expState.addReplica("slave", "10.20.30.40", "6379", "up", "slave", nil)
expState.addSentinel("", "", "", expErr)
- s[0].On("Master", "dbaasmaster").Return(redis.NewStringStringMapResult(redisPrimaryState, nil))
- s[0].On("Slaves", "dbaasmaster").Return(redis.NewSliceResult(redisReplicasState.resp, nil))
- s[0].On("Sentinels", "dbaasmaster").Return(redis.NewSliceResult(redisSentinelsState.resp, expErr))
+ s[0].On("Master", "dbaasmaster-cluster-0").Return(redis.NewStringStringMapResult(redisPrimaryState, nil))
+ s[0].On("Slaves", "dbaasmaster-cluster-0").Return(redis.NewSliceResult(redisReplicasState.resp, nil))
+ s[0].On("Sentinels", "dbaasmaster-cluster-0").Return(redis.NewSliceResult(redisSentinelsState.resp, expErr))
ret, err := db.State()
assert.NotNil(t, err)
assert.Equal(t, expState.s, *ret)
expState.addSentinel("10.20.30.40", "26379", "sentinel", nil)
expState.addSentinel("10.20.30.50", "30001", "sentinel", nil)
- s[0].On("Master", "dbaasmaster").Return(redis.NewStringStringMapResult(redisPrimaryState, nil))
- s[0].On("Slaves", "dbaasmaster").Return(redis.NewSliceResult(redisReplicasState.resp, nil))
- s[0].On("Sentinels", "dbaasmaster").Return(redis.NewSliceResult(redisSentinelsState.resp, nil))
+ s[0].On("Master", "dbaasmaster-cluster-0").Return(redis.NewStringStringMapResult(redisPrimaryState, nil))
+ s[0].On("Slaves", "dbaasmaster-cluster-0").Return(redis.NewSliceResult(redisReplicasState.resp, nil))
+ s[0].On("Sentinels", "dbaasmaster-cluster-0").Return(redis.NewSliceResult(redisSentinelsState.resp, nil))
ret, err := db.State()
assert.Equal(t, expErr, err)
assert.Equal(t, expState.s, *ret)
expState.addReplica("slave", "10.20.30.50", "30000", "up", "slave", nil)
expState.addSentinel("10.20.30.50", "26379", "sentinel", nil)
- s[0].On("Master", "dbaasmaster").Return(redis.NewStringStringMapResult(redisPrimaryState, nil))
- s[0].On("Slaves", "dbaasmaster").Return(redis.NewSliceResult(redisReplicasState.resp, nil))
- s[0].On("Sentinels", "dbaasmaster").Return(redis.NewSliceResult(redisSentinelsState.resp, nil))
+ s[0].On("Master", "dbaasmaster-cluster-0").Return(redis.NewStringStringMapResult(redisPrimaryState, nil))
+ s[0].On("Slaves", "dbaasmaster-cluster-0").Return(redis.NewSliceResult(redisReplicasState.resp, nil))
+ s[0].On("Sentinels", "dbaasmaster-cluster-0").Return(redis.NewSliceResult(redisSentinelsState.resp, nil))
ret, err := db.State()
assert.Nil(t, err)
assert.Equal(t, expState.s, *ret)
Fields: sdlgoredis.PrimaryDbStateFields{
Role: "master",
Ip: "service-ricplt-dbaas-tcp-cluster-0.ricplt",
- Port: "6376",
+ Port: "6379",
Flags: "master",
},
},
Fields: sdlgoredis.PrimaryDbStateFields{
Role: "master",
Ip: "service-ricplt-dbaas-tcp-cluster-0.ricplt",
- Port: "6376",
+ Port: "6379",
Flags: "master",
},
},
Stats: []*sdlgoredis.DbStatisticsInfo{
{
IPAddr: "service-ricplt-dbaas-tcp-cluster-0.ricplt",
- Port: "6376",
+ Port: "6379",
Info: &sdlgoredis.DbInfo{
Fields: sdlgoredis.DbInfoFields{
PrimaryRole: true,