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"
21 func TestHandleSuccessfulDefaultCause(t *testing.T){
27 readerMock := &mocks.RnibReaderMock{}
28 readerProvider := func() reader.RNibReader {
31 writerMock := &mocks.RnibWriterMock{}
32 writerProvider := func() rNibWriter.RNibWriter {
36 payload:= []byte {0x00, 0x07, 0x00, 0x08, 0x00, 0x00, 0x01, 0x00, 0x05, 0x40, 0x01, 0x64}
37 xaction := []byte(ranName)
38 msg:= rmrCgo.NewMBuf(rmrCgo.RIC_X2_RESET, len(payload), ranName, &payload, &xaction)
39 rmrMessengerMock := &mocks.RmrMessengerMock{}
40 rmrMessengerMock.On("SendMsg",msg,mock.Anything).Return(msg,nil)
42 config := configuration.ParseConfiguration()
43 rmrService:=getRmrService(rmrMessengerMock, log)
44 handler := NewX2ResetRequestHandler(rmrService, config, writerProvider, readerProvider)
46 var nodeb = &entities.NodebInfo{ConnectionStatus: entities.ConnectionStatus_CONNECTED }
47 readerMock.On("GetNodeb",ranName).Return(nodeb, nil)
49 actual := handler.Handle(log, models.ResetRequest{RanName: ranName , StartTime: curTime})
53 v, ok := rmrService.E2sessions[ranName]
56 assert.Equal(t, v.Request.RanName, ranName)
58 assert.Equal(t, v.SessionStart ,curTime)
61 func TestHandleSuccessfulRequestedCause(t *testing.T){
67 readerMock := &mocks.RnibReaderMock{}
68 readerProvider := func() reader.RNibReader {
71 writerMock := &mocks.RnibWriterMock{}
72 writerProvider := func() rNibWriter.RNibWriter {
76 payload:= []byte {0x00, 0x07, 0x00, 0x08, 0x00, 0x00, 0x01, 0x00, 0x05, 0x40, 0x01, 0x40}
77 xaction := []byte(ranName)
78 msg:= rmrCgo.NewMBuf(rmrCgo.RIC_X2_RESET, len(payload), ranName, &payload, &xaction)
79 rmrMessengerMock := &mocks.RmrMessengerMock{}
80 rmrMessengerMock.On("SendMsg",msg,mock.Anything).Return(msg,nil)
82 config := configuration.ParseConfiguration()
83 rmrService:=getRmrService(rmrMessengerMock, log)
84 handler := NewX2ResetRequestHandler(rmrService, config, writerProvider, readerProvider)
86 var nodeb = &entities.NodebInfo{ConnectionStatus: entities.ConnectionStatus_CONNECTED }
87 readerMock.On("GetNodeb",ranName).Return(nodeb, nil)
89 actual := handler.Handle(log, models.ResetRequest{RanName: ranName , Cause:"protocol:transfer-syntax-error", StartTime: curTime})
93 v, ok := rmrService.E2sessions[ranName]
96 assert.Equal(t, v.Request.RanName, ranName)
98 assert.Equal(t, v.SessionStart ,curTime)
101 func TestHandleFailureUnknownCause(t *testing.T){
104 curTime := time.Now()
107 readerMock := &mocks.RnibReaderMock{}
108 readerProvider := func() reader.RNibReader {
111 writerMock := &mocks.RnibWriterMock{}
112 writerProvider := func() rNibWriter.RNibWriter {
117 rmrMessengerMock := &mocks.RmrMessengerMock{}
120 config := configuration.ParseConfiguration()
121 rmrService:=getRmrService(rmrMessengerMock, log)
122 handler := NewX2ResetRequestHandler(rmrService, config, writerProvider, readerProvider)
124 var nodeb = &entities.NodebInfo{ConnectionStatus: entities.ConnectionStatus_CONNECTED }
125 readerMock.On("GetNodeb",ranName).Return(nodeb, nil)
127 actual := handler.Handle(log, models.ResetRequest{RanName: ranName , Cause:"XXX", StartTime: curTime})
129 assert.IsType(t, e2managererrors.NewRequestValidationError(), actual)
131 _, ok := rmrService.E2sessions[ranName]
135 func TestHandleFailureWrongState(t *testing.T){
138 curTime := time.Now()
141 readerMock := &mocks.RnibReaderMock{}
142 readerProvider := func() reader.RNibReader {
145 writerMock := &mocks.RnibWriterMock{}
146 writerProvider := func() rNibWriter.RNibWriter {
151 rmrMessengerMock := &mocks.RmrMessengerMock{}
154 config := configuration.ParseConfiguration()
155 rmrService:=getRmrService(rmrMessengerMock, log)
156 handler := NewX2ResetRequestHandler(rmrService, config, writerProvider, readerProvider)
158 var nodeb = &entities.NodebInfo{ConnectionStatus: entities.ConnectionStatus_DISCONNECTED }
159 readerMock.On("GetNodeb",ranName).Return(nodeb, nil)
161 actual := handler.Handle(log, models.ResetRequest{RanName: ranName , StartTime: curTime})
163 assert.IsType(t, e2managererrors.NewWrongStateError(entities.ConnectionStatus_name[int32(nodeb.ConnectionStatus)]), actual)
165 _, ok := rmrService.E2sessions[ranName]
171 func TestHandleFailureRanNotFound(t *testing.T){
174 curTime := time.Now()
177 readerMock := &mocks.RnibReaderMock{}
178 readerProvider := func() reader.RNibReader {
181 writerMock := &mocks.RnibWriterMock{}
182 writerProvider := func() rNibWriter.RNibWriter {
187 rmrMessengerMock := &mocks.RmrMessengerMock{}
190 config := configuration.ParseConfiguration()
191 rmrService:=getRmrService(rmrMessengerMock, log)
192 handler := NewX2ResetRequestHandler(rmrService, config, writerProvider, readerProvider)
194 readerMock.On("GetNodeb",ranName).Return(&entities.NodebInfo{}, common.NewResourceNotFoundError(fmt.Errorf("nodeb not found")))
196 actual := handler.Handle(log, models.ResetRequest{RanName: ranName , StartTime: curTime})
198 assert.IsType(t, e2managererrors.NewResourceNotFoundError(), actual)
200 _, ok := rmrService.E2sessions[ranName]
205 func TestHandleFailureRnibError(t *testing.T){
208 curTime := time.Now()
211 readerMock := &mocks.RnibReaderMock{}
212 readerProvider := func() reader.RNibReader {
215 writerMock := &mocks.RnibWriterMock{}
216 writerProvider := func() rNibWriter.RNibWriter {
221 rmrMessengerMock := &mocks.RmrMessengerMock{}
224 config := configuration.ParseConfiguration()
225 rmrService:=getRmrService(rmrMessengerMock, log)
226 handler := NewX2ResetRequestHandler(rmrService, config, writerProvider, readerProvider)
228 readerMock.On("GetNodeb",ranName).Return(&entities.NodebInfo{}, common.NewInternalError(fmt.Errorf("internal error")))
230 actual := handler.Handle(log, models.ResetRequest{RanName: ranName , StartTime: curTime})
232 assert.IsType(t, e2managererrors.NewRnibDbError(), actual)
234 _, ok := rmrService.E2sessions[ranName]
239 func TestHandleFailureRmrError(t *testing.T){
242 curTime := time.Now()
245 readerMock := &mocks.RnibReaderMock{}
246 readerProvider := func() reader.RNibReader {
249 writerMock := &mocks.RnibWriterMock{}
250 writerProvider := func() rNibWriter.RNibWriter {
254 payload:= []byte {0x00, 0x07, 0x00, 0x08, 0x00, 0x00, 0x01, 0x00, 0x05, 0x40, 0x01, 0x64}
255 xaction := []byte(ranName)
256 msg:= rmrCgo.NewMBuf(rmrCgo.RIC_X2_RESET, len(payload), ranName, &payload, &xaction)
257 rmrMessengerMock := &mocks.RmrMessengerMock{}
258 rmrMessengerMock.On("SendMsg",msg,mock.Anything).Return(&rmrCgo.MBuf{},fmt.Errorf("rmr error"))
260 config := configuration.ParseConfiguration()
261 rmrService:=getRmrService(rmrMessengerMock, log)
262 handler := NewX2ResetRequestHandler(rmrService, config, writerProvider, readerProvider)
264 var nodeb = &entities.NodebInfo{ConnectionStatus: entities.ConnectionStatus_CONNECTED }
265 readerMock.On("GetNodeb",ranName).Return(nodeb, nil)
267 actual := handler.Handle(log, models.ResetRequest{RanName: ranName , StartTime: curTime})
269 assert.IsType(t, e2managererrors.NewRmrError(), actual)
271 _, ok := rmrService.E2sessions[ranName]