RIC-961:implement Xn and X2 component IDs correctly in E2M
[ric-plt/e2mgr.git] / E2Manager / models / e2_setup_request_message_test.go
1 //
2 // Copyright 2020 AT&T Intellectual Property
3 // Copyright 2020 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 models_test
21
22 import (
23         "e2mgr/models"
24         "e2mgr/utils"
25         "encoding/xml"
26         "testing"
27
28         "github.com/stretchr/testify/assert"
29 )
30
31 const (
32         e2SetupReqGnbSetupRequestXmlPath                      = "../tests/resources/setupRequest/setupRequest_gnb.xml"
33         e2SetupReqEnGnbSetupRequestXmlPath                    = "../tests/resources/setupRequest/setupRequest_en-gNB.xml"
34         e2SetupReqEnbSetupRequestXmlPath                      = "../tests/resources/setupRequest/setupRequest_enb.xml"
35         e2SetupReqNgEnbSetupRequestXmlPath                    = "../tests/resources/setupRequest/setupRequest_ng-eNB.xml"
36         e2SetupReqGnbSetupRequestWithOIDXmlPath               = "../tests/resources/setupRequest/setupRequest_with_oid_gnb.xml"
37         e2SetupReqE1InterfaceGnbSetupRequestWithOIDXmlPath    = "../tests/resources/setupRequest/setupRequest_with_oid_gnb_inttype_e1.xml"
38         e2SetupReqF1InterfaceGnbSetupRequestWithOIDXmlPath    = "../tests/resources/setupRequest/setupRequest_with_oid_gnb_inttype_f1.xml"
39         e2SetupReqW1InterfaceGnbSetupRequestWithOIDXmlPath    = "../tests/resources/setupRequest/setupRequest_with_oid_gnb_inttype_w1.xml"
40         e2SetupReqS1InterfaceGnbSetupRequestWithOIDXmlPath    = "../tests/resources/setupRequest/setupRequest_with_oid_gnb_inttype_s1.xml"
41         e2SetupReqXngnbInterfaceGnbSetupRequestWithOIDXmlPath = "../tests/resources/setupRequest/setupRequest_with_oid_gnb_inttype_xngnb.xml"
42         e2SetupReqXnenbInterfaceGnbSetupRequestWithOIDXmlPath = "../tests/resources/setupRequest/setupRequest_with_oid_gnb_inttype_xnenb.xml"
43         e2SetupReqX2gnbInterfaceGnbSetupRequestWithOIDXmlPath = "../tests/resources/setupRequest/setupRequest_with_oid_gnb_inttype_x2gnb.xml"
44         e2SetupReqX2enbInterfaceGnbSetupRequestWithOIDXmlPath = "../tests/resources/setupRequest/setupRequest_with_oid_gnb_inttype_x2enb.xml"
45 )
46
47 func getTestE2SetupRequest(t *testing.T, reqXmlPath string) *models.E2SetupRequestMessage {
48         xmlGnb := utils.ReadXmlFile(t, reqXmlPath)
49         setupRequest := &models.E2SetupRequestMessage{}
50         err := xml.Unmarshal(utils.NormalizeXml(xmlGnb), &setupRequest.E2APPDU)
51         assert.Nil(t, err)
52         return setupRequest
53 }
54
55 func TestExtractRanFunctionsListFromGnbRequestSuccess(t *testing.T) {
56         setupRequest := getTestE2SetupRequest(t, e2SetupReqGnbSetupRequestXmlPath)
57
58         ranFuncList := setupRequest.ExtractRanFunctionsList()
59         assert.Equal(t, uint32(1), ranFuncList[0].RanFunctionId)
60         assert.Equal(t, uint32(2), ranFuncList[1].RanFunctionId)
61         assert.Equal(t, uint32(3), ranFuncList[2].RanFunctionId)
62         assert.Equal(t, uint32(1), ranFuncList[0].RanFunctionRevision)
63         assert.Equal(t, uint32(1), ranFuncList[1].RanFunctionRevision)
64         assert.Equal(t, uint32(1), ranFuncList[2].RanFunctionRevision)
65 }
66
67 func TestExtractRanFunctionsListFromGnbRequestwithOidSuccess(t *testing.T) {
68         setupRequest := getTestE2SetupRequest(t, e2SetupReqGnbSetupRequestWithOIDXmlPath)
69
70         ranFuncList := setupRequest.ExtractRanFunctionsList()
71
72         assert.Equal(t, uint32(1), ranFuncList[0].RanFunctionId)
73         assert.Equal(t, uint32(2), ranFuncList[1].RanFunctionId)
74         assert.Equal(t, uint32(3), ranFuncList[2].RanFunctionId)
75
76         assert.Equal(t, uint32(1), ranFuncList[0].RanFunctionRevision)
77         assert.Equal(t, uint32(1), ranFuncList[1].RanFunctionRevision)
78         assert.Equal(t, uint32(1), ranFuncList[2].RanFunctionRevision)
79
80         assert.Equal(t, "OID123", ranFuncList[0].RanFunctionOid)
81         assert.Equal(t, "OID124", ranFuncList[1].RanFunctionOid)
82         assert.Equal(t, "OID125", ranFuncList[2].RanFunctionOid)
83 }
84
85 func TestExtractE2nodeConfigSuccess(t *testing.T) {
86         setupRequest := getTestE2SetupRequest(t, e2SetupReqGnbSetupRequestWithOIDXmlPath)
87         e2nodeConfigs := setupRequest.ExtractE2NodeConfigList()
88
89         assert.Equal(t, 2, len(e2nodeConfigs))
90
91         assert.Equal(t, "nginterf1", e2nodeConfigs[0].GetE2NodeComponentInterfaceTypeNG().GetAmfName())
92         assert.Equal(t, "nginterf2", e2nodeConfigs[1].GetE2NodeComponentInterfaceTypeNG().GetAmfName())
93
94 }
95
96 func TestGetPlmnIdFromGnbRequestSuccess(t *testing.T) {
97         setupRequest := getTestE2SetupRequest(t, e2SetupReqGnbSetupRequestXmlPath)
98
99         plmnID := setupRequest.GetPlmnId()
100         assert.Equal(t, "02F829", plmnID)
101 }
102
103 func TestGetPlmnIdFromEnGnbRequestSuccess(t *testing.T) {
104         setupRequest := getTestE2SetupRequest(t, e2SetupReqEnGnbSetupRequestXmlPath)
105
106         plmnID := setupRequest.GetPlmnId()
107         assert.Equal(t, "131014", plmnID)
108 }
109
110 func TestGetPlmnIdFromEnbRequestSuccess(t *testing.T) {
111         setupRequest := getTestE2SetupRequest(t, e2SetupReqEnbSetupRequestXmlPath)
112
113         plmnID := setupRequest.GetPlmnId()
114         assert.Equal(t, "6359AB", plmnID)
115 }
116
117 func TestGetPlmnIdFromNgEnbRequestSuccess(t *testing.T) {
118         setupRequest := getTestE2SetupRequest(t, e2SetupReqNgEnbSetupRequestXmlPath)
119
120         plmnID := setupRequest.GetPlmnId()
121         assert.Equal(t, "131014", plmnID)
122 }
123
124 func TestGetNbIdFromGnbRequestSuccess(t *testing.T) {
125         setupRequest := getTestE2SetupRequest(t, e2SetupReqGnbSetupRequestXmlPath)
126
127         nbID := setupRequest.GetNbId()
128         assert.Equal(t, "001100000011000000110000", nbID)
129 }
130
131 func TestGetNbIdFromEnGnbRequestSuccess(t *testing.T) {
132         setupRequest := getTestE2SetupRequest(t, e2SetupReqEnGnbSetupRequestXmlPath)
133
134         nbID := setupRequest.GetNbId()
135         assert.Equal(t, "11000101110001101100011111111000", nbID)
136 }
137
138 func TestGetNbIdFromEnbRequestSuccess(t *testing.T) {
139         setupRequest := getTestE2SetupRequest(t, e2SetupReqEnbSetupRequestXmlPath)
140
141         nbID := setupRequest.GetNbId()
142         assert.Equal(t, "101010101010101010", nbID)
143 }
144
145 func TestGetNbIdFromNgEnbRequestSuccess(t *testing.T) {
146         setupRequest := getTestE2SetupRequest(t, e2SetupReqNgEnbSetupRequestXmlPath)
147
148         nbID := setupRequest.GetNbId()
149         assert.Equal(t, "101010101010101010", nbID)
150 }
151
152 func TestExtractE2nodeIntTypeE1ConfigFail(t *testing.T) {
153         setupRequest := getTestE2SetupRequest(t, e2SetupReqE1InterfaceGnbSetupRequestWithOIDXmlPath)
154         e2nodeConfigs := setupRequest.ExtractE2NodeConfigList()
155
156         assert.Equal(t, 2, len(e2nodeConfigs))
157
158         assert.NotEqual(t, 1, int(e2nodeConfigs[0].GetE2NodeComponentInterfaceTypeE1().GetGNBCuCpId()))
159         assert.NotEqual(t, 2, int(e2nodeConfigs[1].GetE2NodeComponentInterfaceTypeE1().GetGNBCuCpId()))
160
161 }
162
163 func TestExtractE2nodeIntTypeF1ConfigFail(t *testing.T) {
164         setupRequest := getTestE2SetupRequest(t, e2SetupReqF1InterfaceGnbSetupRequestWithOIDXmlPath)
165         e2nodeConfigs := setupRequest.ExtractE2NodeConfigList()
166
167         assert.Equal(t, 2, len(e2nodeConfigs))
168
169         assert.NotEqual(t, 1, int(e2nodeConfigs[0].GetE2NodeComponentInterfaceTypeF1().GetGNBDuId()))
170         assert.NotEqual(t, 2, int(e2nodeConfigs[1].GetE2NodeComponentInterfaceTypeF1().GetGNBDuId()))
171
172 }
173
174 func TestExtractE2nodeIntTypeW1ConfigFail(t *testing.T) {
175         setupRequest := getTestE2SetupRequest(t, e2SetupReqW1InterfaceGnbSetupRequestWithOIDXmlPath)
176         e2nodeConfigs := setupRequest.ExtractE2NodeConfigList()
177
178         assert.Equal(t, 2, len(e2nodeConfigs))
179
180         assert.NotEqual(t, 1, int(e2nodeConfigs[0].GetE2NodeComponentInterfaceTypeW1().GetNgenbDuId()))
181         assert.NotEqual(t, 2, int(e2nodeConfigs[1].GetE2NodeComponentInterfaceTypeW1().GetNgenbDuId()))
182
183 }
184
185 func TestExtractE2nodeIntTypeS1ConfigFail(t *testing.T) {
186         setupRequest := getTestE2SetupRequest(t, e2SetupReqS1InterfaceGnbSetupRequestWithOIDXmlPath)
187         e2nodeConfigs := setupRequest.ExtractE2NodeConfigList()
188
189         assert.Equal(t, 2, len(e2nodeConfigs))
190
191         assert.NotEqual(t, "e1interf1", e2nodeConfigs[0].GetE2NodeComponentInterfaceTypeS1().GetMmeName())
192         assert.NotEqual(t, "e1interf2", e2nodeConfigs[1].GetE2NodeComponentInterfaceTypeS1().GetMmeName())
193
194 }
195
196 func TestExtractE2nodeIntTypeXngnbConfigFail(t *testing.T) {
197         setupRequest := getTestE2SetupRequest(t, e2SetupReqXngnbInterfaceGnbSetupRequestWithOIDXmlPath)
198         e2nodeConfigs := setupRequest.ExtractE2NodeConfigList()
199
200         assert.Equal(t, 1, len(e2nodeConfigs))
201
202         assert.NotEqual(t, "101010101010101010", (e2nodeConfigs[0].GetE2NodeComponentInterfaceTypeXn().GetGlobalGnbId().GetGnbId()))
203 }
204
205 func TestExtractE2nodeIntTypeXnenbConfigFail(t *testing.T) {
206         setupRequest := getTestE2SetupRequest(t, e2SetupReqXnenbInterfaceGnbSetupRequestWithOIDXmlPath)
207         e2nodeConfigs := setupRequest.ExtractE2NodeConfigList()
208
209         assert.Equal(t, 1, len(e2nodeConfigs))
210
211         assert.NotEqual(t, "101010101010101010", (e2nodeConfigs[0].GetE2NodeComponentInterfaceTypeXn().GetGlobalNgenbId().GetEnbId()))
212 }
213
214 func TestExtractE2nodeIntTypeX2gnbConfigFail(t *testing.T) {
215         setupRequest := getTestE2SetupRequest(t, e2SetupReqX2gnbInterfaceGnbSetupRequestWithOIDXmlPath)
216         e2nodeConfigs := setupRequest.ExtractE2NodeConfigList()
217
218         assert.Equal(t, 1, len(e2nodeConfigs))
219
220         assert.NotEqual(t, "101010101010101010", (e2nodeConfigs[0].GetE2NodeComponentInterfaceTypeX2().GetGlobalEngnbId().GetGnbId()))
221 }
222
223 func TestExtractE2nodeIntTypeX2enbConfigFail(t *testing.T) {
224         setupRequest := getTestE2SetupRequest(t, e2SetupReqX2enbInterfaceGnbSetupRequestWithOIDXmlPath)
225         e2nodeConfigs := setupRequest.ExtractE2NodeConfigList()
226
227         assert.Equal(t, 1, len(e2nodeConfigs))
228
229         assert.NotEqual(t, "101010101010101010", (e2nodeConfigs[0].GetE2NodeComponentInterfaceTypeX2().GetGlobalEnbId().GetEnbId()))
230 }