2 ==================================================================================
3 Copyright (c) 2019 AT&T Intellectual Property.
4 Copyright (c) 2019 Nokia
6 Licensed under the Apache License, Version 2.0 (the "License");
7 you may not use this file except in compliance with the License.
8 You may obtain a copy of the License at
10 http://www.apache.org/licenses/LICENSE-2.0
12 Unless required by applicable law or agreed to in writing, software
13 distributed under the License is distributed on an "AS IS" BASIS,
14 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 See the License for the specific language governing permissions and
16 limitations under the License.
17 ==================================================================================
23 "gerrit.o-ran-sc.org/r/ric-plt/e2ap/pkg/e2ap"
27 //-----------------------------------------------------------------------------
29 //-----------------------------------------------------------------------------
31 func (testCtxt *E2ApTests) E2ApTestMsgSubscriptionRequestWithData(t *testing.T, areqenc *e2ap.E2APSubscriptionRequest) {
33 e2SubsReq := testCtxt.packerif.NewPackerSubscriptionRequest()
35 testCtxt.testPrint("########## ##########")
36 testCtxt.testPrint("init")
37 seterr := e2SubsReq.Set(areqenc)
39 testCtxt.testError(t, "set err: %s", seterr.Error())
42 testCtxt.testPrint("print:\n%s", e2SubsReq.String())
43 testCtxt.testPrint("pack")
44 err, packedMsg := e2SubsReq.Pack(nil)
46 testCtxt.testError(t, "Pack failed: %s", err.Error())
49 testCtxt.testPrint("unpack")
50 err = e2SubsReq.UnPack(packedMsg)
52 testCtxt.testError(t, "UnPack failed: %s", err.Error())
55 testCtxt.testPrint("print:\n%s", e2SubsReq.String())
56 geterr, areqdec := e2SubsReq.Get()
58 testCtxt.testError(t, "get nil: %s", geterr.Error())
61 testCtxt.testValueEquality(t, "msg", areqenc, areqdec)
62 testCtxt.testValueEquality(t, "EventTriggerDefinition", &areqenc.EventTriggerDefinition, &areqdec.EventTriggerDefinition)
65 func (testCtxt *E2ApTests) E2ApTestMsgSubscriptionRequest(t *testing.T) {
67 areqenc := e2ap.E2APSubscriptionRequest{}
68 areqenc.RequestId.Id = 1
69 areqenc.RequestId.Seq = 22
70 areqenc.FunctionId = 33
71 //Bits 20, 28(works), 18, 21 (asn1 problems)
72 areqenc.EventTriggerDefinition.InterfaceDirection = e2ap.E2AP_InterfaceDirectionIncoming
73 areqenc.EventTriggerDefinition.ProcedureCode = 35
74 areqenc.EventTriggerDefinition.TypeOfMessage = e2ap.E2AP_InitiatingMessage
75 for index := 0; index < 16; index++ {
76 item := e2ap.ActionToBeSetupItem{}
77 item.ActionId = uint64(index)
78 item.ActionType = e2ap.E2AP_ActionTypeInsert
79 // NOT SUPPORTED CURRENTLY
80 //item.ActionDefinition.Present = true
81 //item.ActionDefinition.StyleId = 255
82 //item.ActionDefinition.ParamId = 222
83 item.SubsequentAction.Present = true
84 item.SubsequentAction.Type = e2ap.E2AP_SubSeqActionTypeContinue
85 item.SubsequentAction.TimetoWait = e2ap.E2AP_TimeToWaitW100ms
86 areqenc.ActionSetups = append(areqenc.ActionSetups, item)
89 areqenc.EventTriggerDefinition.InterfaceId.GlobalEnbId.Present = true
90 areqenc.EventTriggerDefinition.InterfaceId.GlobalEnbId.PlmnIdentity.StringPut("310150")
91 areqenc.EventTriggerDefinition.InterfaceId.GlobalEnbId.NodeId.Bits = e2ap.E2AP_ENBIDHomeBits28
92 areqenc.EventTriggerDefinition.InterfaceId.GlobalEnbId.NodeId.Id = 202251
93 testCtxt.SetDesc("SubsReq-28bit")
94 testCtxt.E2ApTestMsgSubscriptionRequestWithData(t, &areqenc)
96 //areqenc.EventTriggerDefinition.InterfaceId.GlobalEnbId.Present = true
97 //areqenc.EventTriggerDefinition.InterfaceId.GlobalEnbId.PlmnIdentity.StringPut("310150")
98 //areqenc.EventTriggerDefinition.InterfaceId.GlobalEnbId.NodeId.Bits = e2ap.E2AP_ENBIDShortMacroits18
99 //areqenc.EventTriggerDefinition.InterfaceId.GlobalEnbId.NodeId.Id = 55
100 //testCtxt.SetDesc("SubsReq-18bit")
101 //testCtxt.E2ApTestMsgSubscriptionRequestWithData(t,&areqenc)
103 //areqenc.EventTriggerDefinition.InterfaceId.GlobalEnbId.Present = true
104 //areqenc.EventTriggerDefinition.InterfaceId.GlobalEnbId.PlmnIdentity.StringPut("310150")
105 //areqenc.EventTriggerDefinition.InterfaceId.GlobalEnbId.NodeId.Bits = e2ap.E2AP_ENBIDMacroPBits20
106 //areqenc.EventTriggerDefinition.InterfaceId.GlobalEnbId.NodeId.Id = 55
107 //testCtxt.SetDesc("SubsReq-20bit")
108 //testCtxt.E2ApTestMsgSubscriptionRequestWithData(t,&areqenc)
110 //areqenc.EventTriggerDefinition.InterfaceId.GlobalEnbId.Present = true
111 //areqenc.EventTriggerDefinition.InterfaceId.GlobalEnbId.PlmnIdentity.StringPut("310150")
112 //areqenc.EventTriggerDefinition.InterfaceId.GlobalEnbId.NodeId.Bits = e2ap.E2AP_ENBIDlongMacroBits21
113 //areqenc.EventTriggerDefinition.InterfaceId.GlobalEnbId.NodeId.Id = 55
114 //testCtxt.SetDesc("SubsReq-21bit")
115 //testCtxt.E2ApTestMsgSubscriptionRequestWithData(t,&areqenc)
119 func (testCtxt *E2ApTests) E2ApTestMsgSubscriptionResponse(t *testing.T) {
121 testCtxt.SetDesc("SubsResp")
123 e2SubsResp := testCtxt.packerif.NewPackerSubscriptionResponse()
125 testCtxt.testPrint("########## ##########")
126 testCtxt.testPrint("init")
128 arespenc := e2ap.E2APSubscriptionResponse{}
129 arespenc.RequestId.Id = 1
130 arespenc.RequestId.Seq = 22
131 arespenc.FunctionId = 33
132 for index := uint64(0); index < 16; index++ {
133 item := e2ap.ActionAdmittedItem{}
134 item.ActionId = index
135 arespenc.ActionAdmittedList.Items = append(arespenc.ActionAdmittedList.Items, item)
137 for index := uint64(0); index < 16; index++ {
138 item := e2ap.ActionNotAdmittedItem{}
139 item.ActionId = index
140 item.Cause.Content = 1
141 item.Cause.CauseVal = 1
142 arespenc.ActionNotAdmittedList.Items = append(arespenc.ActionNotAdmittedList.Items, item)
145 seterr := e2SubsResp.Set(&arespenc)
147 testCtxt.testError(t, "set err: %s", seterr.Error())
150 testCtxt.testPrint("print:\n%s", e2SubsResp.String())
151 testCtxt.testPrint("pack")
152 err, packedMsg := e2SubsResp.Pack(nil)
154 testCtxt.testError(t, "Pack failed: %s", err.Error())
157 testCtxt.testPrint("unpack")
158 err = e2SubsResp.UnPack(packedMsg)
160 testCtxt.testError(t, "UnPack failed: %s", err.Error())
163 testCtxt.testPrint("print:\n%s", e2SubsResp.String())
164 geterr, arespdec := e2SubsResp.Get()
166 testCtxt.testError(t, "get nil: %s", geterr.Error())
169 testCtxt.testValueEquality(t, "msg", &arespenc, arespdec)
172 func (testCtxt *E2ApTests) E2ApTestMsgSubscriptionFailure(t *testing.T) {
174 testCtxt.SetDesc("SubsFail")
176 e2SubsFail := testCtxt.packerif.NewPackerSubscriptionFailure()
178 testCtxt.testPrint("########## ##########")
179 testCtxt.testPrint("init")
181 afailenc := e2ap.E2APSubscriptionFailure{}
182 afailenc.RequestId.Id = 1
183 afailenc.RequestId.Seq = 22
184 afailenc.FunctionId = 33
185 for index := uint64(0); index < 16; index++ {
186 item := e2ap.ActionNotAdmittedItem{}
187 item.ActionId = index
188 item.Cause.Content = 1
189 item.Cause.CauseVal = 1
190 afailenc.ActionNotAdmittedList.Items = append(afailenc.ActionNotAdmittedList.Items, item)
192 // NOT SUPPORTED CURRENTLY
193 afailenc.CriticalityDiagnostics.Present = false
194 // afailenc.CriticalityDiagnostics.ProcCodePresent = true
195 // afailenc.CriticalityDiagnostics.ProcCode = 1
196 // afailenc.CriticalityDiagnostics.TrigMsgPresent = true
197 // afailenc.CriticalityDiagnostics.TrigMsg = 2
198 // afailenc.CriticalityDiagnostics.ProcCritPresent = true
199 // afailenc.CriticalityDiagnostics.ProcCrit = e2ap.E2AP_CriticalityReject
200 // for index := uint32(0); index < 256; index++ {
201 // ieitem := e2ap.CriticalityDiagnosticsIEListItem{}
202 // ieitem.IeCriticality = e2ap.E2AP_CriticalityReject
203 // ieitem.IeID = index
204 // ieitem.TypeOfError = 1
205 // afailenc.CriticalityDiagnostics.CriticalityDiagnosticsIEList.Items = append(afailenc.CriticalityDiagnostics.CriticalityDiagnosticsIEList.Items, ieitem)
208 seterr := e2SubsFail.Set(&afailenc)
210 testCtxt.testError(t, "set err: %s", seterr.Error())
213 testCtxt.testPrint("print:\n%s", e2SubsFail.String())
214 testCtxt.testPrint("pack")
215 err, packedMsg := e2SubsFail.Pack(nil)
217 testCtxt.testError(t, "Pack failed: %s", err.Error())
220 testCtxt.testPrint("unpack")
221 err = e2SubsFail.UnPack(packedMsg)
223 testCtxt.testError(t, "UnPack failed: %s", err.Error())
226 testCtxt.testPrint("print:\n%s", e2SubsFail.String())
227 geterr, afaildec := e2SubsFail.Get()
229 testCtxt.testError(t, "get nil: %s", geterr.Error())
232 testCtxt.testValueEquality(t, "msg", &afailenc, afaildec)
235 func (testCtxt *E2ApTests) E2ApTestMsgSubscriptionRequestBuffers(t *testing.T) {
237 testfunc := func(buffer string) {
238 packedData := testCtxt.toPackedData(t, buffer)
239 if packedData == nil {
242 e2SubResp := testCtxt.packerif.NewPackerSubscriptionRequest()
243 err := e2SubResp.UnPack(packedData)
245 testCtxt.testError(t, "UnPack() Failed: %s [%s]", err.Error(), buffer)
248 err, _ = e2SubResp.Get()
250 testCtxt.testError(t, "Get() Failed: %s [%s]", err.Error(), buffer)
253 testCtxt.testPrint("OK [%s]", buffer)
256 testCtxt.SetDesc("SubReqBuffer")
257 testfunc("00c9402c000003ea7e00050000010000ea6300020001ea810016000b00130051407b000000054000ea6b000420000000")
260 func (testCtxt *E2ApTests) E2ApTestMsgSubscriptionResponseBuffers(t *testing.T) {
262 testfunc := func(buffer string) {
263 packedData := testCtxt.toPackedData(t, buffer)
264 if packedData == nil {
267 e2SubResp := testCtxt.packerif.NewPackerSubscriptionResponse()
268 err := e2SubResp.UnPack(packedData)
270 testCtxt.testError(t, "UnPack() Failed: %s [%s]", err.Error(), buffer)
273 err, _ = e2SubResp.Get()
275 testCtxt.testError(t, "Get() Failed: %s [%s]", err.Error(), buffer)
278 testCtxt.testPrint("OK [%s]", buffer)
281 testCtxt.SetDesc("SubRespBuffer")
282 testfunc("20c9402a000004ea7e00050000018009ea6300020001ea6c000700ea6d00020000ea6e000908ea6f000400000040")
283 testfunc("20c9401d000003ea7e0005004eec0004ea6300020001ea6c000700ea6d40020000")
287 func (testCtxt *E2ApTests) E2ApTestMsgSubscriptionFailureBuffers(t *testing.T) {
289 testfunc := func(buffer string) {
290 packedData := testCtxt.toPackedData(t, buffer)
291 if packedData == nil {
294 e2SubResp := testCtxt.packerif.NewPackerSubscriptionFailure()
295 err := e2SubResp.UnPack(packedData)
297 testCtxt.testError(t, "UnPack() Failed: %s [%s]", err.Error(), buffer)
300 err, _ = e2SubResp.Get()
302 testCtxt.testError(t, "Get() Failed: %s [%s]", err.Error(), buffer)
305 testCtxt.testPrint("OK [%s]", buffer)
308 testCtxt.SetDesc("SubFailBuffer")
309 testfunc("40c94017000003ea7e000500000106f3ea6300020001ea6e000100")