2 //// Copyright 2019 AT&T Intellectual Property
3 //// Copyright 2019 Nokia
5 //// Licensed under the Apache License, Version 2.0 (the "License");
6 //// you may not use this file except in compliance with the License.
7 //// You may obtain a copy of the License at
9 //// http://www.apache.org/licenses/LICENSE-2.0
11 //// Unless required by applicable law or agreed to in writing, software
12 //// distributed under the License is distributed on an "AS IS" BASIS,
13 //// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 //// See the License for the specific language governing permissions and
15 //// limitations under the License.
29 // "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/common"
30 // "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities"
31 // "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/reader"
32 // "github.com/stretchr/testify/mock"
38 // * Test an error response while in an x2 setup request session
40 //func TestHandleInSession(t *testing.T){
41 // log, err := logger.InitLogger(logger.InfoLevel)
43 // t.Errorf("#sctp_errors_notification_handler_test.TestHandleInSession - failed to initialize logger, error: %s", err)
46 // readerMock :=&mocks.RnibReaderMock{}
47 // rnibReaderProvider := func() reader.RNibReader {
50 // writerMock := &mocks.RnibWriterMock{}
51 // rnibWriterProvider := func() rNibWriter.RNibWriter {
54 // h := NewRanLostConnectionHandler(rnibReaderProvider,rnibWriterProvider)
56 // e2Sessions := make(sessions.E2Sessions)
57 // xaction := []byte(fmt.Sprintf("%32s", "1234"))
58 // e2Sessions[string(xaction)] = sessions.E2SessionDetails{SessionStart: time.Now()}
59 // payload := []byte("Error")
60 // mBuf := rmrCgo.NewMBuf(tests.MessageType, len(payload),"RanName", &payload, &xaction)
61 // notificationRequest := models.NotificationRequest{RanName: mBuf.Meid, Len: mBuf.Len, Payload: *mBuf.Payload,
62 // StartTime: time.Now(), TransactionId: string(xaction)}
63 // var messageChannel chan<- *models.NotificationResponse
65 // nb := &entities.NodebInfo{RanName:mBuf.Meid, ConnectionStatus:entities.ConnectionStatus_CONNECTED,}
66 // var rnibErr common.IRNibError
67 // readerMock.On("GetNodeb", mBuf.Meid).Return(nb, rnibErr)
68 // updatedNb := &entities.NodebInfo{RanName:mBuf.Meid, ConnectionStatus:entities.ConnectionStatus_DISCONNECTED,}
69 // writerMock.On("SaveNodeb", mock.Anything, updatedNb).Return(rnibErr)
71 // h.Handle(log,e2Sessions, ¬ificationRequest, messageChannel)
73 // if _, ok := e2Sessions[string(xaction)]; ok {
74 // t.Errorf("want: no session entry, got: session entry for: %s", string(xaction) )
79 // * Test an error response triggered by the E2 Term
82 //func TestHandleNoSession(t *testing.T){
83 // log, err := logger.InitLogger(logger.InfoLevel)
85 // t.Errorf("#sctp_errors_notification_handler_test.TestHandleNoSession - failed to initialize logger, error: %s", err)
88 // readerMock :=&mocks.RnibReaderMock{}
89 // rnibReaderProvider := func() reader.RNibReader {
92 // writerMock := &mocks.RnibWriterMock{}
93 // rnibWriterProvider := func() rNibWriter.RNibWriter {
96 // h := NewRanLostConnectionHandler(rnibReaderProvider,rnibWriterProvider)
98 // e2Sessions := make(sessions.E2Sessions)
99 // transactionId := "1234"
100 // xaction := []byte(fmt.Sprintf("%32s", transactionId+"6"))
101 // e2Sessions[transactionId] = sessions.E2SessionDetails{SessionStart: time.Now()}
102 // payload := []byte("Error")
103 // mBuf := rmrCgo.NewMBuf(tests.MessageType, len(payload),"RanName", &payload, &xaction)
104 // notificationRequest := models.NotificationRequest{RanName: mBuf.Meid, Len: mBuf.Len, Payload: *mBuf.Payload, StartTime: time.Now(),
105 // TransactionId: string(xaction)}
106 // var messageChannel chan<- *models.NotificationResponse
108 // nb := &entities.NodebInfo{RanName:mBuf.Meid, ConnectionStatus:entities.ConnectionStatus_CONNECTED,}
109 // var rnibErr common.IRNibError
110 // readerMock.On("GetNodeb", mBuf.Meid).Return(nb, rnibErr)
111 // updatedNb := &entities.NodebInfo{RanName:mBuf.Meid, ConnectionStatus:entities.ConnectionStatus_DISCONNECTED,}
112 // writerMock.On("SaveNodeb", mock.Anything, updatedNb).Return(rnibErr)
114 // h.Handle(log,e2Sessions, ¬ificationRequest, messageChannel)
116 // if _, ok := e2Sessions[transactionId]; !ok {
117 // t.Errorf("want: session entry for %s, got: no session entry", transactionId )
121 // * Test an error response triggered by the E2 Term
123 //func TestHandleUnsolicitedDisconnectionConnectedSuccess(t *testing.T){
124 // log, err := logger.InitLogger(logger.DebugLevel)
126 // t.Errorf("#sctp_errors_notification_handler_test.TestHandleNoSession - failed to initialize logger, error: %s", err)
129 // readerMock :=&mocks.RnibReaderMock{}
130 // rnibReaderProvider := func() reader.RNibReader {
133 // writerMock := &mocks.RnibWriterMock{}
134 // rnibWriterProvider := func() rNibWriter.RNibWriter {
137 // h := NewRanLostConnectionHandler(rnibReaderProvider,rnibWriterProvider)
139 // e2Sessions := make(sessions.E2Sessions)
140 // transactionId := "1234"
141 // xaction := []byte(fmt.Sprintf("%32s", transactionId+"6"))
142 // e2Sessions[transactionId] = sessions.E2SessionDetails{SessionStart: time.Now()}
143 // payload := []byte("Error")
144 // mBuf := rmrCgo.NewMBuf(tests.MessageType, len(payload),"RanName", &payload, &xaction)
145 // notificationRequest := models.NotificationRequest{RanName: mBuf.Meid, Len: mBuf.Len, Payload: *mBuf.Payload, StartTime: time.Now(),
146 // TransactionId: string(xaction)}
147 // var messageChannel chan<- *models.NotificationResponse
149 // nb := &entities.NodebInfo{RanName:mBuf.Meid, ConnectionStatus:entities.ConnectionStatus_CONNECTED,}
150 // var rnibErr common.IRNibError
151 // readerMock.On("GetNodeb", mBuf.Meid).Return(nb, rnibErr)
152 // updatedNb := &entities.NodebInfo{RanName:mBuf.Meid, ConnectionStatus:entities.ConnectionStatus_DISCONNECTED,}
153 // writerMock.On("SaveNodeb", mock.Anything, updatedNb).Return(rnibErr)
155 // h.Handle(log,e2Sessions, ¬ificationRequest, messageChannel)
158 //func TestHandleUnsolicitedDisconnectionNotConnectedSuccess(t *testing.T){
159 // log, err := logger.InitLogger(logger.DebugLevel)
161 // t.Errorf("#sctp_errors_notification_handler_test.TestHandleNoSession - failed to initialize logger, error: %s", err)
164 // readerMock :=&mocks.RnibReaderMock{}
165 // rnibReaderProvider := func() reader.RNibReader {
168 // writerMock := &mocks.RnibWriterMock{}
169 // rnibWriterProvider := func() rNibWriter.RNibWriter {
172 // h := NewRanLostConnectionHandler(rnibReaderProvider,rnibWriterProvider)
174 // e2Sessions := make(sessions.E2Sessions)
175 // transactionId := "1234"
176 // xaction := []byte(fmt.Sprintf("%32s", transactionId+"6"))
177 // e2Sessions[transactionId] = sessions.E2SessionDetails{SessionStart: time.Now()}
178 // payload := []byte("Error")
179 // mBuf := rmrCgo.NewMBuf(tests.MessageType, len(payload),"RanName", &payload, &xaction)
180 // notificationRequest := models.NotificationRequest{RanName: mBuf.Meid, Len: mBuf.Len, Payload: *mBuf.Payload, StartTime: time.Now(),
181 // TransactionId: string(xaction)}
182 // var messageChannel chan<- *models.NotificationResponse
184 // nb := &entities.NodebInfo{RanName:mBuf.Meid, ConnectionStatus:entities.ConnectionStatus_DISCONNECTED,}
185 // var rnibErr common.IRNibError
186 // readerMock.On("GetNodeb", mBuf.Meid).Return(nb, rnibErr)
187 // updatedNb := &entities.NodebInfo{RanName:mBuf.Meid, ConnectionStatus:entities.ConnectionStatus_DISCONNECTED,}
188 // writerMock.On("SaveNodeb", mock.Anything, updatedNb).Return(rnibErr)
190 // h.Handle(log,e2Sessions, ¬ificationRequest, messageChannel)
193 //func TestHandleUnsolicitedDisconnectionShuttingDownSuccess(t *testing.T){
194 // log, err := logger.InitLogger(logger.DebugLevel)
196 // t.Errorf("#sctp_errors_notification_handler_test.TestHandleNoSession - failed to initialize logger, error: %s", err)
199 // readerMock :=&mocks.RnibReaderMock{}
200 // rnibReaderProvider := func() reader.RNibReader {
203 // writerMock := &mocks.RnibWriterMock{}
204 // rnibWriterProvider := func() rNibWriter.RNibWriter {
207 // h := NewRanLostConnectionHandler(rnibReaderProvider,rnibWriterProvider)
209 // e2Sessions := make(sessions.E2Sessions)
210 // transactionId := "1234"
211 // xaction := []byte(fmt.Sprintf("%32s", transactionId+"6"))
212 // e2Sessions[transactionId] = sessions.E2SessionDetails{SessionStart: time.Now()}
213 // payload := []byte("Error")
214 // mBuf := rmrCgo.NewMBuf(tests.MessageType, len(payload),"RanName", &payload, &xaction)
215 // notificationRequest := models.NotificationRequest{RanName: mBuf.Meid, Len: mBuf.Len, Payload: *mBuf.Payload, StartTime: time.Now(),
216 // TransactionId: string(xaction)}
217 // var messageChannel chan<- *models.NotificationResponse
219 // nb := &entities.NodebInfo{RanName:mBuf.Meid, ConnectionStatus:entities.ConnectionStatus_SHUTTING_DOWN,}
220 // var rnibErr common.IRNibError
221 // readerMock.On("GetNodeb", mBuf.Meid).Return(nb, rnibErr)
222 // updatedNb := &entities.NodebInfo{RanName:mBuf.Meid, ConnectionStatus:entities.ConnectionStatus_SHUT_DOWN,}
223 // writerMock.On("SaveNodeb", mock.Anything, updatedNb).Return(rnibErr)
225 // h.Handle(log,e2Sessions, ¬ificationRequest, messageChannel)
228 //func TestHandleUnsolicitedDisconnectionShutDownSuccess(t *testing.T){
229 // log, err := logger.InitLogger(logger.DebugLevel)
231 // t.Errorf("#sctp_errors_notification_handler_test.TestHandleNoSession - failed to initialize logger, error: %s", err)
234 // readerMock :=&mocks.RnibReaderMock{}
235 // rnibReaderProvider := func() reader.RNibReader {
238 // writerMock := &mocks.RnibWriterMock{}
239 // rnibWriterProvider := func() rNibWriter.RNibWriter {
242 // h := NewRanLostConnectionHandler(rnibReaderProvider,rnibWriterProvider)
244 // e2Sessions := make(sessions.E2Sessions)
245 // transactionId := "1234"
246 // xaction := []byte(fmt.Sprintf("%32s", transactionId+"6"))
247 // e2Sessions[transactionId] = sessions.E2SessionDetails{SessionStart: time.Now()}
248 // payload := []byte("Error")
249 // mBuf := rmrCgo.NewMBuf(tests.MessageType, len(payload),"RanName", &payload, &xaction)
250 // notificationRequest := models.NotificationRequest{RanName: mBuf.Meid, Len: mBuf.Len, Payload: *mBuf.Payload, StartTime: time.Now(),
251 // TransactionId: string(xaction)}
252 // var messageChannel chan<- *models.NotificationResponse
254 // nb := &entities.NodebInfo{RanName:mBuf.Meid, ConnectionStatus:entities.ConnectionStatus_SHUT_DOWN,}
255 // var rnibErr common.IRNibError
256 // readerMock.On("GetNodeb", mBuf.Meid).Return(nb, rnibErr)
257 // updatedNb := &entities.NodebInfo{RanName:mBuf.Meid, ConnectionStatus:entities.ConnectionStatus_SHUT_DOWN,}
258 // writerMock.On("SaveNodeb", mock.Anything, updatedNb).Return(rnibErr)
260 // h.Handle(log,e2Sessions, ¬ificationRequest, messageChannel)
263 //func TestHandleUnsolicitedDisconnectionReaderFailure(t *testing.T){
264 // log, err := logger.InitLogger(logger.DebugLevel)
266 // t.Errorf("#sctp_errors_notification_handler_test.TestHandleNoSession - failed to initialize logger, error: %s", err)
269 // readerMock :=&mocks.RnibReaderMock{}
270 // rnibReaderProvider := func() reader.RNibReader {
273 // writerMock := &mocks.RnibWriterMock{}
274 // rnibWriterProvider := func() rNibWriter.RNibWriter {
277 // h := NewRanLostConnectionHandler(rnibReaderProvider,rnibWriterProvider)
279 // e2Sessions := make(sessions.E2Sessions)
280 // transactionId := "1234"
281 // xaction := []byte(fmt.Sprintf("%32s", transactionId+"6"))
282 // e2Sessions[transactionId] = sessions.E2SessionDetails{SessionStart: time.Now()}
283 // payload := []byte("Error")
284 // mBuf := rmrCgo.NewMBuf(tests.MessageType, len(payload),"RanName", &payload, &xaction)
285 // notificationRequest := models.NotificationRequest{RanName: mBuf.Meid, Len: mBuf.Len, Payload: *mBuf.Payload, StartTime: time.Now(),
286 // TransactionId: string(xaction)}
287 // var messageChannel chan<- *models.NotificationResponse
289 // var nb *entities.NodebInfo
290 // rnibErr := common.RNibError{}
291 // readerMock.On("GetNodeb", mBuf.Meid).Return(nb, rnibErr)
292 // h.Handle(log,e2Sessions, ¬ificationRequest, messageChannel)
295 //func TestHandleUnsolicitedDisconnectionWriterFailure(t *testing.T){
296 // log, err := logger.InitLogger(logger.DebugLevel)
298 // t.Errorf("#sctp_errors_notification_handler_test.TestHandleNoSession - failed to initialize logger, error: %s", err)
301 // readerMock :=&mocks.RnibReaderMock{}
302 // rnibReaderProvider := func() reader.RNibReader {
305 // writerMock := &mocks.RnibWriterMock{}
306 // rnibWriterProvider := func() rNibWriter.RNibWriter {
309 // h := NewRanLostConnectionHandler(rnibReaderProvider,rnibWriterProvider)
311 // e2Sessions := make(sessions.E2Sessions)
312 // transactionId := "1234"
313 // xaction := []byte(fmt.Sprintf("%32s", transactionId+"6"))
314 // e2Sessions[transactionId] = sessions.E2SessionDetails{SessionStart: time.Now()}
315 // payload := []byte("Error")
316 // mBuf := rmrCgo.NewMBuf(tests.MessageType, len(payload),"RanName", &payload, &xaction)
317 // notificationRequest := models.NotificationRequest{RanName: mBuf.Meid, Len: mBuf.Len, Payload: *mBuf.Payload, StartTime: time.Now(),
318 // TransactionId: string(xaction)}
319 // var messageChannel chan<- *models.NotificationResponse
321 // nb := &entities.NodebInfo{RanName:mBuf.Meid, ConnectionStatus:entities.ConnectionStatus_CONNECTED,}
322 // var rnibErr common.IRNibError
323 // readerMock.On("GetNodeb", mBuf.Meid).Return(nb, rnibErr)
324 // updatedNb := &entities.NodebInfo{RanName:mBuf.Meid, ConnectionStatus:entities.ConnectionStatus_DISCONNECTED,}
325 // writerMock.On("SaveNodeb", mock.Anything, updatedNb).Return(common.RNibError{})
327 // h.Handle(log,e2Sessions, ¬ificationRequest, messageChannel)