X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=internal%2Fsdlgoredis%2Fdbstate_test.go;h=9a3a5e9d50524249d5184d51b6107d2319786f86;hb=bd724d66fdfee6b1a6e589a4081529dd535ca423;hp=0b03afae8fd338fa34c229246f11d0c3c88a99cc;hpb=977a55ca96d5dba1c7f9273671747eaf9cd6f894;p=ric-plt%2Fsdlgo.git diff --git a/internal/sdlgoredis/dbstate_test.go b/internal/sdlgoredis/dbstate_test.go index 0b03afa..9a3a5e9 100644 --- a/internal/sdlgoredis/dbstate_test.go +++ b/internal/sdlgoredis/dbstate_test.go @@ -37,15 +37,19 @@ func setupDbState() *dbStateMock { 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) { @@ -63,112 +67,171 @@ func (ds *dbStateMock) addReplicaFields(role, ip, port, mls, flags string) { 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() @@ -177,11 +240,39 @@ func TestGetAddressReplicasSuccessfully(t *testing.T) { 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) +}