return new(dbStateMock)
}
-func (ds *dbStateMock) setMasterError(err error) {
- ds.state.MasterDbState.Err = err
+func (ds *dbStateMock) setError(err error) {
+ ds.state.Err = err
}
-func (ds *dbStateMock) setMasterFields(role, ip, port, rCnt, flags string) {
- ds.state.MasterDbState.Fields.Role = role
- ds.state.MasterDbState.Fields.Ip = ip
- ds.state.MasterDbState.Fields.Port = port
- ds.state.MasterDbState.Fields.Flags = flags
+func (ds *dbStateMock) setPrimaryError(err error) {
+ ds.state.PrimaryDbState.Err = err
+}
+
+func (ds *dbStateMock) setPrimaryFields(role, ip, port, rCnt, flags string) {
+ ds.state.PrimaryDbState.Fields.Role = role
+ ds.state.PrimaryDbState.Fields.Ip = ip
+ ds.state.PrimaryDbState.Fields.Port = port
+ ds.state.PrimaryDbState.Fields.Flags = flags
}
func (ds *dbStateMock) setReplicaError(err error) {
newState.Fields.Role = role
newState.Fields.Ip = ip
newState.Fields.Port = port
- newState.Fields.MasterLinkStatus = mls
+ newState.Fields.PrimaryLinkStatus = mls
newState.Fields.Flags = flags
ds.state.ReplicasDbState.States = append(ds.state.ReplicasDbState.States, newState)
}
-func TestIsOnlineWhenSingleMasterSuccessfully(t *testing.T) {
+func (ds *dbStateMock) setSentinelError(err error) {
+ if ds.state.SentinelsDbState == nil {
+ ds.state.SentinelsDbState = new(sdlgoredis.SentinelsDbState)
+ }
+ ds.state.SentinelsDbState.Err = err
+}
+
+func (ds *dbStateMock) addSentinelFields(ip, port, flags string) {
+ if ds.state.SentinelsDbState == nil {
+ ds.state.SentinelsDbState = new(sdlgoredis.SentinelsDbState)
+ }
+ newState := new(sdlgoredis.SentinelDbState)
+ newState.Fields.Ip = ip
+ newState.Fields.Port = port
+ newState.Fields.Flags = flags
+ ds.state.SentinelsDbState.States = append(ds.state.SentinelsDbState.States, newState)
+}
+
+func TestIsOnlineFailureIfErrorHasSet(t *testing.T) {
+ testErr := errors.New("Some error")
+ st := setupDbState()
+ st.setError(testErr)
+ err := st.state.IsOnline()
+ assert.Equal(t, testErr, err)
+}
+
+func TestIsOnlineWhenSinglePrimarySuccessfully(t *testing.T) {
st := setupDbState()
- st.setMasterFields("master", "1.2.3.4", "60000", "0", "master")
+ st.setPrimaryFields("master", "1.2.3.4", "60000", "0", "master")
err := st.state.IsOnline()
assert.Nil(t, err)
}
-func TestIsOnlineWhenSingleMasterFailureIfErrorHasSet(t *testing.T) {
+func TestIsOnlineWhenSinglePrimaryFailureIfErrorHasSet(t *testing.T) {
testErr := errors.New("Some error")
st := setupDbState()
- st.setMasterFields("master", "1.2.3.4", "60000", "0", "master")
- st.setMasterError(testErr)
+ st.setPrimaryFields("master", "1.2.3.4", "60000", "0", "master")
+ st.setPrimaryError(testErr)
err := st.state.IsOnline()
assert.Equal(t, testErr, err)
}
-func TestIsOnlineWhenSingleMasterFailureIfNotMasterRole(t *testing.T) {
- expErr := errors.New("No master DB, current role 'not-master'")
+func TestIsOnlineWhenSinglePrimaryFailureIfNotPrimaryRole(t *testing.T) {
+ expErr := errors.New("No primary DB, current role 'not-master'")
st := setupDbState()
- st.setMasterFields("not-master", "1.2.3.4", "60000", "0", "master")
+ st.setPrimaryFields("not-master", "1.2.3.4", "60000", "0", "master")
err := st.state.IsOnline()
assert.Equal(t, expErr, err)
}
-func TestIsOnlineWhenSingleMasterFailureIfErrorFlags(t *testing.T) {
- expErr := errors.New("Master flags are 'any-error,master', expected 'master'")
+func TestIsOnlineWhenSinglePrimaryFailureIfErrorFlags(t *testing.T) {
+ expErr := errors.New("Primary flags are 'any-error,master', expected 'master'")
st := setupDbState()
- st.setMasterFields("master", "1.2.3.4", "60000", "0", "any-error,master")
+ st.setPrimaryFields("master", "1.2.3.4", "60000", "0", "any-error,master")
err := st.state.IsOnline()
assert.Equal(t, expErr, err)
}
-func TestGetAddressMasterSuccessfully(t *testing.T) {
+func TestGetAddressPrimarySuccessfully(t *testing.T) {
st := setupDbState()
- st.setMasterFields("master", "1.2.3.4", "60000", "0", "master")
- addr := st.state.MasterDbState.GetAddress()
+ st.setPrimaryFields("master", "1.2.3.4", "60000", "0", "master")
+ addr := st.state.PrimaryDbState.GetAddress()
assert.Equal(t, "1.2.3.4:60000", addr)
}
-func TestGetAddressMasterFailureNoIpPort(t *testing.T) {
+func TestGetAddressPrimaryFailureNoIpPort(t *testing.T) {
st := setupDbState()
- st.setMasterFields("master", "", "", "0", "master")
- addr := st.state.MasterDbState.GetAddress()
+ st.setPrimaryFields("master", "", "", "0", "master")
+ addr := st.state.PrimaryDbState.GetAddress()
assert.Equal(t, "", addr)
}
-func TestIsOnlineWhenMasterAndTwoReplicasSuccessfully(t *testing.T) {
+func TestIsOnlineWhenPrimaryAndTwoReplicasSuccessfully(t *testing.T) {
st := setupDbState()
- st.setMasterFields("master", "1.2.3.4", "60000", "2", "master")
+ st.setPrimaryFields("master", "1.2.3.4", "60000", "2", "master")
st.addReplicaFields("slave", "6.7.8.9", "1234", "ok", "slave")
st.addReplicaFields("slave", "6.7.8.10", "3450", "ok", "slave")
+ st.addSentinelFields("6.7.8.9", "11234", "sentinel")
+ st.addSentinelFields("6.7.8.10", "13450", "sentinel")
err := st.state.IsOnline()
assert.Nil(t, err)
}
-func TestIsOnlineWhenMasterAndTwoReplicasFailureIfErrorHasSet(t *testing.T) {
+func TestIsOnlineWhenPrimaryAndTwoReplicasFailureIfErrorHasSet(t *testing.T) {
testErr := errors.New("Some error")
st := setupDbState()
- st.setMasterFields("master", "1.2.3.4", "60000", "2", "master")
+ st.setPrimaryFields("master", "1.2.3.4", "60000", "2", "master")
st.addReplicaFields("slave", "6.7.8.9", "1234", "ok", "slave")
st.addReplicaFields("slave", "6.7.8.10", "3450", "ok", "slave")
+ st.addSentinelFields("6.7.8.9", "11234", "sentinel")
+ st.addSentinelFields("6.7.8.10", "13450", "sentinel")
st.setReplicaError(testErr)
err := st.state.IsOnline()
assert.Equal(t, testErr, err)
}
-func TestIsOnlineWhenMasterAndTwoReplicasFailureIfNotSlaveRole(t *testing.T) {
+func TestIsOnlineWhenPrimaryAndOneReplicaFailureIfSentinelErrorHasSet(t *testing.T) {
+ testErr := errors.New("Some error")
+ st := setupDbState()
+ st.setPrimaryFields("master", "1.2.3.4", "60000", "2", "master")
+ st.addReplicaFields("slave", "6.7.8.9", "1234", "ok", "slave")
+ st.addSentinelFields("6.7.8.9", "11234", "sentinel")
+ st.setSentinelError(testErr)
+ err := st.state.IsOnline()
+ assert.Equal(t, testErr, err)
+}
+
+func TestIsOnlineWhenPrimaryAndTwoReplicasFailureIfNotReplicaRole(t *testing.T) {
expErr := errors.New("Replica role is 'not-slave', expected 'slave'")
st := setupDbState()
- st.setMasterFields("master", "1.2.3.4", "60000", "2", "master")
+ st.setPrimaryFields("master", "1.2.3.4", "60000", "2", "master")
st.addReplicaFields("slave", "6.7.8.9", "1234", "ok", "slave")
st.addReplicaFields("not-slave", "6.7.8.10", "3450", "ok", "slave")
+ st.addSentinelFields("6.7.8.9", "11234", "sentinel")
+ st.addSentinelFields("6.7.8.10", "13450", "sentinel")
err := st.state.IsOnline()
assert.Equal(t, expErr, err)
}
-func TestIsOnlineWhenMasterAndTwoReplicasFailureIfMasterLinkDown(t *testing.T) {
- expErr := errors.New("Replica link to the master is down")
+func TestIsOnlineWhenPrimaryAndTwoReplicasFailureIfPrimaryLinkDown(t *testing.T) {
+ expErr := errors.New("Replica link to the primary is down")
st := setupDbState()
- st.setMasterFields("master", "1.2.3.4", "60000", "2", "master")
+ st.setPrimaryFields("master", "1.2.3.4", "60000", "2", "master")
st.addReplicaFields("slave", "6.7.8.9", "1234", "nok", "slave")
st.addReplicaFields("slave", "6.7.8.10", "3450", "ok", "slave")
+ st.addSentinelFields("6.7.8.9", "11234", "sentinel")
+ st.addSentinelFields("6.7.8.10", "13450", "sentinel")
err := st.state.IsOnline()
assert.Equal(t, expErr, err)
}
-func TestIsOnlineWhenMasterAndTwoReplicasFailureIfErrorFlags(t *testing.T) {
+func TestIsOnlineWhenPrimaryAndTwoReplicasFailureIfErrorFlags(t *testing.T) {
expErr := errors.New("Replica flags are 'any-error,slave', expected 'slave'")
st := setupDbState()
- st.setMasterFields("master", "1.2.3.4", "60000", "2", "master")
+ st.setPrimaryFields("master", "1.2.3.4", "60000", "2", "master")
st.addReplicaFields("slave", "6.7.8.9", "1234", "ok", "slave")
st.addReplicaFields("slave", "6.7.8.10", "3450", "ok", "any-error,slave")
+ st.addSentinelFields("6.7.8.9", "11234", "sentinel")
+ st.addSentinelFields("6.7.8.10", "13450", "sentinel")
+ err := st.state.IsOnline()
+ assert.Equal(t, expErr, err)
+}
+
+func TestIsOnlineWhenPrimaryAndOneReplicaFailureIfSentinelErrorFlags(t *testing.T) {
+ expErr := errors.New("Sentinel flags are 'any-error,sentinel', expected 'sentinel'")
+ st := setupDbState()
+ st.setPrimaryFields("master", "1.2.3.4", "60000", "2", "master")
+ st.addReplicaFields("slave", "6.7.8.9", "1234", "ok", "slave")
+ st.addSentinelFields("6.7.8.9", "112345", "any-error,sentinel")
err := st.state.IsOnline()
assert.Equal(t, expErr, err)
}
func TestGetAddressReplicasSuccessfully(t *testing.T) {
st := setupDbState()
- st.setMasterFields("master", "1.2.3.4", "60000", "2", "master")
+ st.setPrimaryFields("master", "1.2.3.4", "60000", "2", "master")
st.addReplicaFields("slave", "6.7.8.9", "1234", "ok", "slave")
st.addReplicaFields("slave", "6.7.8.10", "3450", "ok", "slave")
+ st.addSentinelFields("6.7.8.9", "11234", "sentinel")
+ st.addSentinelFields("6.7.8.10", "13450", "sentinel")
addr := st.state.ReplicasDbState.States[0].GetAddress()
assert.Equal(t, "6.7.8.9:1234", addr)
addr = st.state.ReplicasDbState.States[1].GetAddress()
func TestGetAddressReplicasNoIpPort(t *testing.T) {
st := setupDbState()
- st.setMasterFields("master", "1.2.3.4", "60000", "2", "master")
+ st.setPrimaryFields("master", "1.2.3.4", "60000", "2", "master")
st.addReplicaFields("slave", "", "", "ok", "slave")
st.addReplicaFields("slave", "6.7.8.10", "3450", "ok", "slave")
+ st.addSentinelFields("6.7.8.9", "11234", "sentinel")
+ st.addSentinelFields("6.7.8.10", "13450", "sentinel")
addr := st.state.ReplicasDbState.States[0].GetAddress()
assert.Equal(t, "", addr)
addr = st.state.ReplicasDbState.States[1].GetAddress()
assert.Equal(t, "6.7.8.10:3450", addr)
}
+
+func TestGetAddressSentinelsSuccessfully(t *testing.T) {
+ st := setupDbState()
+ st.setPrimaryFields("master", "1.2.3.4", "60000", "2", "master")
+ st.addReplicaFields("slave", "6.7.8.9", "1234", "ok", "slave")
+ st.addReplicaFields("slave", "6.7.8.10", "3450", "ok", "slave")
+ st.addSentinelFields("6.7.8.9", "11234", "sentinel")
+ st.addSentinelFields("6.7.8.10", "13450", "sentinel")
+ addr := st.state.SentinelsDbState.States[0].GetAddress()
+ assert.Equal(t, "6.7.8.9:11234", addr)
+ addr = st.state.SentinelsDbState.States[1].GetAddress()
+ assert.Equal(t, "6.7.8.10:13450", addr)
+}
+
+func TestGetAddressSentinelsNoIpPort(t *testing.T) {
+ st := setupDbState()
+ st.setPrimaryFields("master", "1.2.3.4", "60000", "2", "master")
+ st.addReplicaFields("slave", "", "", "ok", "slave")
+ st.addReplicaFields("slave", "6.7.8.10", "3450", "ok", "slave")
+ st.addSentinelFields("", "", "sentinel")
+ st.addSentinelFields("6.7.8.10", "13450", "sentinel")
+ addr := st.state.SentinelsDbState.States[0].GetAddress()
+ assert.Equal(t, "", addr)
+ addr = st.state.SentinelsDbState.States[1].GetAddress()
+ assert.Equal(t, "6.7.8.10:13450", addr)
+}