5 "e2mgr/e2managererrors"
11 "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/common"
12 "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities"
13 "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/reader"
14 "github.com/stretchr/testify/assert"
15 "github.com/stretchr/testify/mock"
20 func TestHandleSuccessfulDefaultCause(t *testing.T){
25 readerMock := &mocks.RnibReaderMock{}
26 readerProvider := func() reader.RNibReader {
29 writerMock := &mocks.RnibWriterMock{}
30 writerProvider := func() rNibWriter.RNibWriter {
34 payload:= []byte {0x00, 0x07, 0x00, 0x08, 0x00, 0x00, 0x01, 0x00, 0x05, 0x40, 0x01, 0x64}
35 xaction := []byte(ranName)
36 msg:= rmrCgo.NewMBuf(rmrCgo.RIC_X2_RESET, len(payload), ranName, &payload, &xaction)
37 rmrMessengerMock := &mocks.RmrMessengerMock{}
38 rmrMessengerMock.On("SendMsg",msg,mock.Anything).Return(msg,nil)
40 config := configuration.ParseConfiguration()
41 rmrService:=getRmrService(rmrMessengerMock, log)
42 handler := NewX2ResetRequestHandler(rmrService, config, writerProvider, readerProvider)
44 var nodeb = &entities.NodebInfo{ConnectionStatus: entities.ConnectionStatus_CONNECTED }
45 readerMock.On("GetNodeb",ranName).Return(nodeb, nil)
47 actual := handler.Handle(log, models.ResetRequest{RanName: ranName})
53 func TestHandleSuccessfulRequestedCause(t *testing.T){
58 readerMock := &mocks.RnibReaderMock{}
59 readerProvider := func() reader.RNibReader {
62 writerMock := &mocks.RnibWriterMock{}
63 writerProvider := func() rNibWriter.RNibWriter {
67 payload:= []byte {0x00, 0x07, 0x00, 0x08, 0x00, 0x00, 0x01, 0x00, 0x05, 0x40, 0x01, 0x40}
68 xaction := []byte(ranName)
69 msg:= rmrCgo.NewMBuf(rmrCgo.RIC_X2_RESET, len(payload), ranName, &payload, &xaction)
70 rmrMessengerMock := &mocks.RmrMessengerMock{}
71 rmrMessengerMock.On("SendMsg",msg,mock.Anything).Return(msg,nil)
73 config := configuration.ParseConfiguration()
74 rmrService:=getRmrService(rmrMessengerMock, log)
75 handler := NewX2ResetRequestHandler(rmrService, config, writerProvider, readerProvider)
77 var nodeb = &entities.NodebInfo{ConnectionStatus: entities.ConnectionStatus_CONNECTED }
78 readerMock.On("GetNodeb",ranName).Return(nodeb, nil)
80 actual := handler.Handle(log, models.ResetRequest{RanName: ranName , Cause:"protocol:transfer-syntax-error"})
85 func TestHandleFailureUnknownCause(t *testing.T){
90 readerMock := &mocks.RnibReaderMock{}
91 readerProvider := func() reader.RNibReader {
94 writerMock := &mocks.RnibWriterMock{}
95 writerProvider := func() rNibWriter.RNibWriter {
100 rmrMessengerMock := &mocks.RmrMessengerMock{}
103 config := configuration.ParseConfiguration()
104 rmrService:=getRmrService(rmrMessengerMock, log)
105 handler := NewX2ResetRequestHandler(rmrService, config, writerProvider, readerProvider)
107 var nodeb = &entities.NodebInfo{ConnectionStatus: entities.ConnectionStatus_CONNECTED }
108 readerMock.On("GetNodeb",ranName).Return(nodeb, nil)
110 actual := handler.Handle(log, models.ResetRequest{RanName: ranName , Cause:"XXX"})
112 assert.IsType(t, e2managererrors.NewRequestValidationError(), actual)
116 func TestHandleFailureWrongState(t *testing.T){
121 readerMock := &mocks.RnibReaderMock{}
122 readerProvider := func() reader.RNibReader {
125 writerMock := &mocks.RnibWriterMock{}
126 writerProvider := func() rNibWriter.RNibWriter {
131 rmrMessengerMock := &mocks.RmrMessengerMock{}
134 config := configuration.ParseConfiguration()
135 rmrService:=getRmrService(rmrMessengerMock, log)
136 handler := NewX2ResetRequestHandler(rmrService, config, writerProvider, readerProvider)
138 var nodeb = &entities.NodebInfo{ConnectionStatus: entities.ConnectionStatus_DISCONNECTED }
139 readerMock.On("GetNodeb",ranName).Return(nodeb, nil)
141 actual := handler.Handle(log, models.ResetRequest{RanName: ranName })
143 assert.IsType(t, e2managererrors.NewWrongStateError(X2_RESET_ACTIVITIY_NAME, entities.ConnectionStatus_name[int32(nodeb.ConnectionStatus)]), actual)
149 func TestHandleFailureRanNotFound(t *testing.T){
154 readerMock := &mocks.RnibReaderMock{}
155 readerProvider := func() reader.RNibReader {
158 writerMock := &mocks.RnibWriterMock{}
159 writerProvider := func() rNibWriter.RNibWriter {
164 rmrMessengerMock := &mocks.RmrMessengerMock{}
167 config := configuration.ParseConfiguration()
168 rmrService:=getRmrService(rmrMessengerMock, log)
169 handler := NewX2ResetRequestHandler(rmrService, config, writerProvider, readerProvider)
171 readerMock.On("GetNodeb",ranName).Return(&entities.NodebInfo{}, common.NewResourceNotFoundError(fmt.Errorf("nodeb not found")))
173 actual := handler.Handle(log, models.ResetRequest{RanName: ranName })
175 assert.IsType(t, e2managererrors.NewResourceNotFoundError(), actual)
180 func TestHandleFailureRnibError(t *testing.T){
185 readerMock := &mocks.RnibReaderMock{}
186 readerProvider := func() reader.RNibReader {
189 writerMock := &mocks.RnibWriterMock{}
190 writerProvider := func() rNibWriter.RNibWriter {
195 rmrMessengerMock := &mocks.RmrMessengerMock{}
198 config := configuration.ParseConfiguration()
199 rmrService:=getRmrService(rmrMessengerMock, log)
200 handler := NewX2ResetRequestHandler(rmrService, config, writerProvider, readerProvider)
202 readerMock.On("GetNodeb",ranName).Return(&entities.NodebInfo{}, common.NewInternalError(fmt.Errorf("internal error")))
204 actual := handler.Handle(log, models.ResetRequest{RanName: ranName })
206 assert.IsType(t, e2managererrors.NewRnibDbError(), actual)
211 func TestHandleFailureRmrError(t *testing.T){
216 readerMock := &mocks.RnibReaderMock{}
217 readerProvider := func() reader.RNibReader {
220 writerMock := &mocks.RnibWriterMock{}
221 writerProvider := func() rNibWriter.RNibWriter {
225 payload:= []byte {0x00, 0x07, 0x00, 0x08, 0x00, 0x00, 0x01, 0x00, 0x05, 0x40, 0x01, 0x64}
226 xaction := []byte(ranName)
227 msg:= rmrCgo.NewMBuf(rmrCgo.RIC_X2_RESET, len(payload), ranName, &payload, &xaction)
228 rmrMessengerMock := &mocks.RmrMessengerMock{}
229 rmrMessengerMock.On("SendMsg",msg,mock.Anything).Return(&rmrCgo.MBuf{},fmt.Errorf("rmr error"))
231 config := configuration.ParseConfiguration()
232 rmrService:=getRmrService(rmrMessengerMock, log)
233 handler := NewX2ResetRequestHandler(rmrService, config, writerProvider, readerProvider)
235 var nodeb = &entities.NodebInfo{ConnectionStatus: entities.ConnectionStatus_CONNECTED }
236 readerMock.On("GetNodeb",ranName).Return(nodeb, nil)
238 actual := handler.Handle(log, models.ResetRequest{RanName: ranName })
240 assert.IsType(t, e2managererrors.NewRmrError(), actual)