RIC-194 Setup from RAN: On Routing Manager Failure, return Setup Failure
[ric-plt/e2mgr.git] / E2Manager / handlers / rmrmsghandlers / endc_configuration_update_handler_test.go
1 //
2 // Copyright 2019 AT&T Intellectual Property
3 // Copyright 2019 Nokia
4 //
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
8 //
9 //      http://www.apache.org/licenses/LICENSE-2.0
10 //
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.
16
17 //  This source code is part of the near-RT RIC (RAN Intelligent Controller)
18 //  platform project (RICP).
19
20 package rmrmsghandlers
21
22 import (
23         "e2mgr/mocks"
24         "e2mgr/models"
25         "e2mgr/rmrCgo"
26         "fmt"
27         "testing"
28         "time"
29         "unsafe"
30 )
31
32 const PackedEndcConfigurationUpdateAck = "2025000a00000100f70003000000"
33 const PackedEndcConfigurationUpdateFailure = "402500080000010005400142"
34
35 func initEndcConfigurationUpdateHandlerTest(t *testing.T) (EndcConfigurationUpdateHandler, *mocks.RmrMessengerMock) {
36         log := initLog(t)
37         rmrMessengerMock := &mocks.RmrMessengerMock{}
38         rmrSender := initRmrSender(rmrMessengerMock, log)
39         h := NewEndcConfigurationUpdateHandler(log, rmrSender)
40         return h, rmrMessengerMock
41 }
42
43 func TestHandleEndcConfigUpdateSuccess(t *testing.T) {
44         h, rmrMessengerMock := initEndcConfigurationUpdateHandlerTest(t)
45
46         ranName := "test"
47         xAction := []byte("123456aa")
48
49         var payload []byte
50         _, _ = fmt.Sscanf(PackedEndcConfigurationUpdateAck, "%x", &payload)
51         var msgSrc unsafe.Pointer
52
53         mBuf := rmrCgo.NewMBuf(rmrCgo.RIC_ENDC_CONF_UPDATE_ACK, len(payload), ranName, &payload, &xAction, msgSrc)
54         notificationRequest := models.NotificationRequest{RanName: mBuf.Meid, Len: mBuf.Len, Payload: *mBuf.Payload, StartTime: time.Now(),
55                 TransactionId: *mBuf.XAction}
56         var err error
57         rmrMessengerMock.On("SendMsg", mBuf, true).Return(&rmrCgo.MBuf{}, err)
58         h.Handle(&notificationRequest)
59         rmrMessengerMock.AssertCalled(t, "SendMsg", mBuf, true)
60 }
61
62 func TestHandleEndcConfigUpdateFailure(t *testing.T) {
63         h, rmrMessengerMock := initEndcConfigurationUpdateHandlerTest(t)
64
65         ranName := "test"
66         xAction := []byte("123456aa")
67
68         var payload []byte
69         _, _ = fmt.Sscanf(PackedEndcConfigurationUpdateFailure, "%x", &payload)
70         var msgSrc unsafe.Pointer
71
72         mBuf := rmrCgo.NewMBuf(rmrCgo.RIC_ENDC_CONF_UPDATE_FAILURE, len(payload), ranName, &payload, &xAction, msgSrc)
73         notificationRequest := models.NotificationRequest{RanName: mBuf.Meid, Len: 0, Payload: []byte{0}, StartTime: time.Now(),
74                 TransactionId: *mBuf.XAction}
75         rmrMessengerMock.On("SendMsg", mBuf, true).Return(&rmrCgo.MBuf{}, fmt.Errorf("send failure"))
76         h.Handle(&notificationRequest)
77         rmrMessengerMock.AssertCalled(t, "SendMsg", mBuf, true)
78 }