56efae9c1fa30d2dc5f052df6fb1c410b41d3494
[ric-plt/e2mgr.git] / E2Manager / handlers / rmrmsghandlers / e2_reset_request_handler_test.go
1 //\r
2 // Copyright (c) 2023 Samsung Electronics Co., Ltd. All Rights Reserved.\r
3 //\r
4 // Licensed under the Apache License, Version 2.0 (the "License");\r
5 // you may not use this file except in compliance with the License.\r
6 // You may obtain a copy of the License at\r
7 //\r
8 //      http://www.apache.org/licenses/LICENSE-2.0\r
9 //\r
10 // Unless required by applicable law or agreed to in writing, software\r
11 // distributed under the License is distributed on an "AS IS" BASIS,\r
12 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
13 // See the License for the specific language governing permissions and\r
14 // limitations under the License.\r
15 \r
16 //  This source code is part of the near-RT RIC (RAN Intelligent Controller)\r
17 //  platform project (RICP).\r
18 \r
19 package rmrmsghandlers\r
20 \r
21 import (\r
22         "e2mgr/configuration"\r
23         "e2mgr/mocks"\r
24         "e2mgr/models"\r
25         "e2mgr/rmrCgo"\r
26 \r
27         // "e2mgr/rmrCgo"\r
28         "e2mgr/services"\r
29         "e2mgr/tests"\r
30         "e2mgr/utils"\r
31         "testing"\r
32 \r
33         "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities"\r
34         // "github.com/stretchr/testify/assert"\r
35         "github.com/stretchr/testify/mock"\r
36 )\r
37 \r
38 const (\r
39         E2ResetXmlPath = "../../tests/resources/reset/reset-request.xml"\r
40 )\r
41 \r
42 func initE2ResetMocks(t *testing.T) (*E2ResetRequestNotificationHandler, *mocks.RnibReaderMock, *mocks.RnibWriterMock, *mocks.RmrMessengerMock) {\r
43         logger := tests.InitLog(t)\r
44         config := &configuration.Configuration{\r
45                 RnibRetryIntervalMs:       10,\r
46                 MaxRnibConnectionAttempts: 3,\r
47                 E2ResetTimeOutSec:         10,\r
48                 RnibWriter: configuration.RnibWriterConfig{\r
49                         StateChangeMessageChannel: StateChangeMessageChannel,\r
50                 }}\r
51         rmrMessengerMock := &mocks.RmrMessengerMock{}\r
52         rmrSender := tests.InitRmrSender(rmrMessengerMock, logger)\r
53         readerMock := &mocks.RnibReaderMock{}\r
54         writerMock := &mocks.RnibWriterMock{}\r
55         rnibDataService := services.NewRnibDataService(logger, config, readerMock, writerMock)\r
56         handler := NewE2ResetRequestNotificationHandler(logger, rnibDataService, config, rmrSender)\r
57         return handler, readerMock, writerMock, rmrMessengerMock\r
58 }\r
59 \r
60 func TestE2ResettNotificationHandler(t *testing.T) {\r
61         e2ResetXml := utils.ReadXmlFile(t, E2ResetXmlPath)\r
62         handler, readerMock, writerMock, rmrMessengerMock := initE2ResetMocks(t)\r
63         var nodebInfo = &entities.NodebInfo{\r
64                 RanName:                      gnbNodebRanName,\r
65                 AssociatedE2TInstanceAddress: e2tInstanceFullAddress,\r
66                 ConnectionStatus:             entities.ConnectionStatus_DISCONNECTED,\r
67                 NodeType:                     entities.Node_GNB,\r
68                 Configuration: &entities.NodebInfo_Gnb{\r
69                         Gnb: &entities.Gnb{},\r
70                 },\r
71         }\r
72         readerMock.On("GetNodeb", gnbNodebRanName).Return(nodebInfo, nil)\r
73         writerMock.On("UpdateNodebInfoAndPublish", mock.Anything).Return(nil)\r
74         var errEmpty error\r
75         rmrMessage := &rmrCgo.MBuf{}\r
76         rmrMessengerMock.On("SendMsg", mock.Anything, mock.Anything).Return(rmrMessage, errEmpty)\r
77         notificationRequest := &models.NotificationRequest{RanName: gnbNodebRanName, Payload: append([]byte(""), e2ResetXml...)}\r
78         handler.Handle(notificationRequest)\r
79         readerMock.AssertExpectations(t)\r
80         writerMock.AssertExpectations(t)\r
81         rmrMessengerMock.AssertNotCalled(t, "SendMsg")\r
82 }\r
83 \r
84 func TestE2ResettNotificationHandler_UpdateStatus_Connected(t *testing.T) {\r
85         e2ResetXml := utils.ReadXmlFile(t, E2ResetXmlPath)\r
86         handler, readerMock, writerMock, rmrMessengerMock := initE2ResetMocks(t)\r
87         var nodebInfo = &entities.NodebInfo{\r
88                 RanName:                      gnbNodebRanName,\r
89                 AssociatedE2TInstanceAddress: e2tInstanceFullAddress,\r
90                 ConnectionStatus:             entities.ConnectionStatus_DISCONNECTED,\r
91                 NodeType:                     entities.Node_GNB,\r
92                 Configuration: &entities.NodebInfo_Gnb{\r
93                         Gnb: &entities.Gnb{},\r
94                 },\r
95         }\r
96         readerMock.On("GetNodeb", gnbNodebRanName).Return(nodebInfo, nil)\r
97         writerMock.On("UpdateNodebInfoAndPublish", mock.Anything).Return(nil)\r
98         nodebInfo.ConnectionStatus = entities.ConnectionStatus_CONNECTED\r
99         readerMock.On("GetNodeb", gnbNodebRanName).Return(nodebInfo, nil)\r
100 \r
101         var errEmpty error\r
102         rmrMessage := &rmrCgo.MBuf{}\r
103         rmrMessengerMock.On("SendMsg", mock.Anything, mock.Anything).Return(rmrMessage, errEmpty)\r
104         notificationRequest := &models.NotificationRequest{RanName: gnbNodebRanName, Payload: append([]byte(""), e2ResetXml...)}\r
105         handler.Handle(notificationRequest)\r
106         readerMock.AssertCalled(t, "GetNodeb", mock.Anything)\r
107         writerMock.AssertCalled(t, "UpdateNodebInfoAndPublish", mock.Anything)\r
108         readerMock.AssertCalled(t, "GetNodeb", mock.Anything)\r
109         rmrMessengerMock.AssertNotCalled(t, "SendMsg")\r
110 }\r