fbb92e46f68b120dc01cd9d162b0afb22037c2f8
[ric-plt/submgr.git] / e2ap / pkg / e2ap / e2ap_tests / msg_e2ap_subscription.go
1 /*
2 ==================================================================================
3   Copyright (c) 2019 AT&T Intellectual Property.
4   Copyright (c) 2019 Nokia
5
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
9
10        http://www.apache.org/licenses/LICENSE-2.0
11
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 ==================================================================================
18 */
19
20 package e2ap_tests
21
22 import (
23         "gerrit.o-ran-sc.org/r/ric-plt/e2ap/pkg/e2ap"
24         "testing"
25 )
26
27 //-----------------------------------------------------------------------------
28 //
29 //-----------------------------------------------------------------------------
30
31 func (testCtxt *E2ApTests) E2ApTestMsgSubscriptionRequestWithData(t *testing.T, areqenc *e2ap.E2APSubscriptionRequest) {
32
33         e2SubsReq := testCtxt.packerif.NewPackerSubscriptionRequest()
34
35         testCtxt.testPrint("########## ##########")
36         testCtxt.testPrint("init")
37         testCtxt.testPrint("pack")
38
39         err, packedMsg := e2SubsReq.Pack(areqenc)
40         if err != nil {
41                 testCtxt.testError(t, "Pack failed: %s", err.Error())
42                 return
43         }
44         testCtxt.testPrint("print:\n%s", e2SubsReq.String())
45         testCtxt.testPrint("unpack")
46
47         err, areqdec := e2SubsReq.UnPack(packedMsg)
48         if err != nil {
49                 testCtxt.testError(t, "UnPack failed: %s", err.Error())
50                 return
51         }
52         testCtxt.testPrint("print:\n%s", e2SubsReq.String())
53         testCtxt.testValueEquality(t, "msg", areqenc, areqdec)
54         testCtxt.testValueEquality(t, "EventTriggerDefinition", &areqenc.EventTriggerDefinition, &areqdec.EventTriggerDefinition)
55 }
56 func (testCtxt *E2ApTests) E2ApTestMsgSubscriptionRequest(t *testing.T, msgContent *SubscriptionTestMsgContent) {
57
58         areqenc := e2ap.E2APSubscriptionRequest{}
59         areqenc.RequestId.Id = 1
60         areqenc.RequestId.InstanceId = 22
61         areqenc.FunctionId = 33
62
63         areqenc.EventTriggerDefinition.NBX2EventTriggerDefinitionPresent = msgContent.NBX2EventTriggerDefinitionPresent
64         areqenc.EventTriggerDefinition.NBNRTEventTriggerDefinitionPresent = msgContent.NBNRTEventTriggerDefinitionPresent
65
66         if areqenc.EventTriggerDefinition.NBX2EventTriggerDefinitionPresent {
67                 //Bits 20, 28(works), 18, 21 (asn1 problems)
68                 //              if msgContent.
69                 areqenc.EventTriggerDefinition.X2EventTriggerDefinition.InterfaceId.GlobalEnbId.Present = true
70                 areqenc.EventTriggerDefinition.X2EventTriggerDefinition.InterfaceId.GlobalEnbId.PlmnIdentity.Set("310150")
71                 areqenc.EventTriggerDefinition.X2EventTriggerDefinition.InterfaceId.GlobalEnbId.NodeId.Bits = e2ap.E2AP_ENBIDHomeBits28
72                 areqenc.EventTriggerDefinition.X2EventTriggerDefinition.InterfaceId.GlobalEnbId.NodeId.Id = 202251
73                 testCtxt.SetDesc("SubsReq-28bit")
74
75                 //areqenc.EventTriggerDefinition.X2EventTriggerDefinition.InterfaceId.GlobalEnbId.Present = true
76                 //areqenc.EventTriggerDefinition.X2EventTriggerDefinition.InterfaceId.GlobalEnbId.PlmnIdentity.Set("310150")
77                 //areqenc.EventTriggerDefinition.X2EventTriggerDefinition.InterfaceId.GlobalEnbId.NodeId.Bits = e2ap.E2AP_ENBIDShortMacroits18
78                 //areqenc.EventTriggerDefinition.X2EventTriggerDefinition.InterfaceId.GlobalEnbId.NodeId.Id = 55
79                 //testCtxt.SetDesc("SubsReq-18bit")
80
81                 //areqenc.EventTriggerDefinition.X2EventTriggerDefinition.InterfaceId.GlobalEnbId.Present = true
82                 //areqenc.EventTriggerDefinition.X2EventTriggerDefinition.InterfaceId.GlobalEnbId.PlmnIdentity.Set("310150")
83                 //areqenc.EventTriggerDefinition.X2EventTriggerDefinition.InterfaceId.GlobalEnbId.NodeId.Bits = e2ap.E2AP_ENBIDMacroPBits20
84                 //areqenc.EventTriggerDefinition.X2EventTriggerDefinition.InterfaceId.GlobalEnbId.NodeId.Id = 55
85                 //testCtxt.SetDesc("SubsReq-20bit")
86
87                 //areqenc.EventTriggerDefinition.X2EventTriggerDefinition.InterfaceId.GlobalEnbId.Present = true
88                 //areqenc.EventTriggerDefinition.X2EventTriggerDefinition.InterfaceId.GlobalEnbId.PlmnIdentity.Set("310150")
89                 //areqenc.EventTriggerDefinition.X2EventTriggerDefinition.InterfaceId.GlobalEnbId.NodeId.Bits = e2ap.E2AP_ENBIDlongMacroBits21
90                 //areqenc.EventTriggerDefinition.X2EventTriggerDefinition.InterfaceId.GlobalEnbId.NodeId.Id = 55
91                 //testCtxt.SetDesc("SubsReq-21bit")
92
93                 areqenc.EventTriggerDefinition.X2EventTriggerDefinition.InterfaceDirection = e2ap.E2AP_InterfaceDirectionIncoming
94                 areqenc.EventTriggerDefinition.X2EventTriggerDefinition.ProcedureCode = 35
95                 areqenc.EventTriggerDefinition.X2EventTriggerDefinition.TypeOfMessage = e2ap.E2AP_InitiatingMessage
96         } else if areqenc.EventTriggerDefinition.NBNRTEventTriggerDefinitionPresent == true {
97                 areqenc.EventTriggerDefinition.NBNRTEventTriggerDefinition.TriggerNature = e2ap.NRTTriggerNature_now
98         }
99
100         for index := 0; index < 1; /*16*/ index++ {
101                 item := e2ap.ActionToBeSetupItem{}
102                 item.ActionId = uint64(index)
103                 item.ActionType = e2ap.E2AP_ActionTypeInsert
104
105                 item.RicActionDefinitionPresent = true
106                 item.ActionDefinitionChoice.ActionDefinitionX2Format1Present = msgContent.ActionDefinitionX2Format1Present
107                 item.ActionDefinitionChoice.ActionDefinitionX2Format2Present = msgContent.ActionDefinitionX2Format2Present
108                 item.ActionDefinitionChoice.ActionDefinitionNRTFormat1Present = msgContent.ActionDefinitionNRTFormat1Present
109
110                 if item.RicActionDefinitionPresent {
111                         if item.ActionDefinitionChoice.ActionDefinitionX2Format1Present {
112                                 item.ActionDefinitionChoice.ActionDefinitionX2Format1.StyleID = 99
113                                 // 1..255
114                                 for index2 := 0; index2 < 1; index2++ {
115                                         actionParameterItem := e2ap.ActionParameterItem{}
116                                         actionParameterItem.ParameterID = 11
117                                         if msgContent.ActionParameterValueIntPresent {
118                                                 actionParameterItem.ActionParameterValue.ValueIntPresent = true
119                                                 actionParameterItem.ActionParameterValue.ValueInt = 100
120                                         } else if msgContent.ActionParameterValueEnumPresent {
121                                                 actionParameterItem.ActionParameterValue.ValueEnumPresent = true
122                                                 actionParameterItem.ActionParameterValue.ValueEnum = 100
123                                         } else if msgContent.ActionParameterValueBoolPresent {
124                                                 actionParameterItem.ActionParameterValue.ValueBoolPresent = true
125                                                 actionParameterItem.ActionParameterValue.ValueBool = true
126                                         } else if msgContent.ActionParameterValueBitSPresent {
127                                                 actionParameterItem.ActionParameterValue.ValueBitSPresent = true
128                                                 actionParameterItem.ActionParameterValue.ValueBitS.UnusedBits = 0
129                                                 actionParameterItem.ActionParameterValue.ValueBitS.Length = 3
130                                                 actionParameterItem.ActionParameterValue.ValueBitS.Data =
131                                                         append(actionParameterItem.ActionParameterValue.ValueBitS.Data, 1, 2, 3)
132                                         } else if msgContent.ActionParameterValueOctSPresent {
133                                                 actionParameterItem.ActionParameterValue.ValueOctSPresent = true
134                                                 actionParameterItem.ActionParameterValue.ValueOctS.Length = 3
135                                                 actionParameterItem.ActionParameterValue.ValueOctS.Data =
136                                                         append(actionParameterItem.ActionParameterValue.ValueOctS.Data, 1, 2, 3)
137                                         } else if msgContent.ActionParameterValuePrtSPresent {
138                                                 actionParameterItem.ActionParameterValue.ValuePrtSPresent = true
139                                                 actionParameterItem.ActionParameterValue.ValuePrtS.Length = 3
140                                                 actionParameterItem.ActionParameterValue.ValuePrtS.Data =
141                                                         append(actionParameterItem.ActionParameterValue.ValuePrtS.Data, 1, 2, 3)
142                                         }
143                                         item.ActionDefinitionChoice.ActionDefinitionX2Format1.ActionParameterItems =
144                                                 append(item.ActionDefinitionChoice.ActionDefinitionX2Format1.ActionParameterItems, actionParameterItem)
145                                 }
146                         } else if item.ActionDefinitionChoice.ActionDefinitionX2Format2Present {
147                                 // 1..15
148                                 for index2 := 0; index2 < 1; index2++ {
149                                         ranUEgroupItem := e2ap.RANueGroupItem{}
150                                         // 1..255
151                                         for index3 := 0; index3 < 1; index3++ {
152                                                 ranUEGroupDefItem := e2ap.RANueGroupDefItem{}
153                                                 ranUEGroupDefItem.RanParameterID = 22
154                                                 ranUEGroupDefItem.RanParameterTest = e2ap.RANParameterTest_equal
155                                                 if msgContent.RANParameterValueIntPresent {
156                                                         ranUEGroupDefItem.RanParameterValue.ValueIntPresent = true
157                                                         ranUEGroupDefItem.RanParameterValue.ValueInt = 100
158                                                 } else if msgContent.RANParameterValueEnumPresent {
159                                                         ranUEGroupDefItem.RanParameterValue.ValueEnumPresent = true
160                                                         ranUEGroupDefItem.RanParameterValue.ValueEnum = 100
161                                                 } else if msgContent.RANParameterValueBoolPresent {
162                                                         ranUEGroupDefItem.RanParameterValue.ValueBoolPresent = true
163                                                         ranUEGroupDefItem.RanParameterValue.ValueBool = true
164                                                 } else if msgContent.RANParameterValueBitSPresent {
165                                                         ranUEGroupDefItem.RanParameterValue.ValueBitSPresent = true
166                                                         ranUEGroupDefItem.RanParameterValue.ValueBitS.UnusedBits = 0
167                                                         ranUEGroupDefItem.RanParameterValue.ValueBitS.Length = 3
168                                                         ranUEGroupDefItem.RanParameterValue.ValueBitS.Data =
169                                                                 append(ranUEGroupDefItem.RanParameterValue.ValueBitS.Data, 1, 2, 3)
170                                                 } else if msgContent.RANParameterValueOctSPresent {
171                                                         ranUEGroupDefItem.RanParameterValue.ValueOctSPresent = true
172                                                         ranUEGroupDefItem.RanParameterValue.ValueOctS.Length = 3
173                                                         ranUEGroupDefItem.RanParameterValue.ValueOctS.Data =
174                                                                 append(ranUEGroupDefItem.RanParameterValue.ValueOctS.Data, 1, 2, 3)
175                                                 } else if msgContent.RANParameterValuePrtSPresent {
176                                                         ranUEGroupDefItem.RanParameterValue.ValuePrtSPresent = true
177                                                         ranUEGroupDefItem.RanParameterValue.ValuePrtS.Length = 3
178                                                         ranUEGroupDefItem.RanParameterValue.ValuePrtS.Data =
179                                                                 append(ranUEGroupDefItem.RanParameterValue.ValuePrtS.Data, 1, 2, 3)
180                                                 }
181                                                 ranUEgroupItem.RanUEgroupDefinition.RanUEGroupDefItems =
182                                                         append(ranUEgroupItem.RanUEgroupDefinition.RanUEGroupDefItems, ranUEGroupDefItem)
183                                         }
184                                         // 1..255
185                                         for index4 := 0; index4 < 1; index4++ {
186                                                 ranParameterItem := e2ap.RANParameterItem{}
187                                                 ranParameterItem.RanParameterID = 33
188                                                 if msgContent.RANParameterValueIntPresent {
189                                                         ranParameterItem.RanParameterValue.ValueIntPresent = true
190                                                         ranParameterItem.RanParameterValue.ValueInt = 100
191                                                 } else if msgContent.RANParameterValueEnumPresent {
192                                                         ranParameterItem.RanParameterValue.ValueEnumPresent = true
193                                                         ranParameterItem.RanParameterValue.ValueEnum = 100
194                                                 } else if msgContent.RANParameterValueBoolPresent {
195                                                         ranParameterItem.RanParameterValue.ValueBoolPresent = true
196                                                         ranParameterItem.RanParameterValue.ValueBool = true
197                                                 } else if msgContent.RANParameterValueBitSPresent {
198                                                         ranParameterItem.RanParameterValue.ValueBitSPresent = true
199                                                         ranParameterItem.RanParameterValue.ValueBitS.UnusedBits = 0
200                                                         ranParameterItem.RanParameterValue.ValueBitS.Length = 3
201                                                         ranParameterItem.RanParameterValue.ValueBitS.Data =
202                                                                 append(ranParameterItem.RanParameterValue.ValueBitS.Data, 1, 2, 3)
203                                                 } else if msgContent.RANParameterValueOctSPresent {
204                                                         ranParameterItem.RanParameterValue.ValueOctSPresent = true
205                                                         ranParameterItem.RanParameterValue.ValueOctS.Length = 3
206                                                         ranParameterItem.RanParameterValue.ValueOctS.Data =
207                                                                 append(ranParameterItem.RanParameterValue.ValueOctS.Data, 1, 2, 3)
208                                                 } else if msgContent.RANParameterValuePrtSPresent {
209                                                         ranParameterItem.RanParameterValue.ValuePrtSPresent = true
210                                                         ranParameterItem.RanParameterValue.ValuePrtS.Length = 3
211                                                         ranParameterItem.RanParameterValue.ValuePrtS.Data =
212                                                                 append(ranParameterItem.RanParameterValue.ValuePrtS.Data, 1, 2, 3)
213                                                 }
214                                                 ranUEgroupItem.RanPolicy.RanParameterItems =
215                                                         append(ranUEgroupItem.RanPolicy.RanParameterItems, ranParameterItem)
216                                         }
217                                         ranUEgroupItem.RanUEgroupID = 2
218                                         item.ActionDefinitionChoice.ActionDefinitionX2Format2.RanUEgroupItems =
219                                                 append(item.ActionDefinitionChoice.ActionDefinitionX2Format2.RanUEgroupItems, ranUEgroupItem)
220                                 }
221                         } else if item.ActionDefinitionChoice.ActionDefinitionNRTFormat1Present {
222                                 // 1..255
223                                 for index2 := 0; index2 < 1; index2++ {
224                                         ranParameterItem := e2ap.RANParameterItem{}
225                                         ranParameterItem.RanParameterID = 33
226                                         if msgContent.RANParameterValueIntPresent {
227                                                 ranParameterItem.RanParameterValue.ValueIntPresent = true
228                                                 ranParameterItem.RanParameterValue.ValueInt = 100
229                                         } else if msgContent.RANParameterValueEnumPresent {
230                                                 ranParameterItem.RanParameterValue.ValueEnumPresent = true
231                                                 ranParameterItem.RanParameterValue.ValueEnum = 100
232                                         } else if msgContent.RANParameterValueBoolPresent {
233                                                 ranParameterItem.RanParameterValue.ValueBoolPresent = true
234                                                 ranParameterItem.RanParameterValue.ValueBool = true
235                                         } else if msgContent.RANParameterValueBitSPresent {
236                                                 ranParameterItem.RanParameterValue.ValueBitSPresent = true
237                                                 ranParameterItem.RanParameterValue.ValueBitS.UnusedBits = 0
238                                                 ranParameterItem.RanParameterValue.ValueBitS.Length = 3
239                                                 ranParameterItem.RanParameterValue.ValueBitS.Data =
240                                                         append(ranParameterItem.RanParameterValue.ValueBitS.Data, 1, 2, 3)
241                                         } else if msgContent.RANParameterValueOctSPresent {
242                                                 ranParameterItem.RanParameterValue.ValueOctSPresent = true
243                                                 ranParameterItem.RanParameterValue.ValueOctS.Length = 3
244                                                 ranParameterItem.RanParameterValue.ValueOctS.Data =
245                                                         append(ranParameterItem.RanParameterValue.ValueOctS.Data, 1, 2, 3)
246                                         } else if msgContent.RANParameterValuePrtSPresent {
247                                                 ranParameterItem.RanParameterValue.ValuePrtSPresent = true
248                                                 ranParameterItem.RanParameterValue.ValuePrtS.Length = 3
249                                                 ranParameterItem.RanParameterValue.ValuePrtS.Data =
250                                                         append(ranParameterItem.RanParameterValue.ValuePrtS.Data, 1, 2, 3)
251                                         }
252                                         item.ActionDefinitionChoice.ActionDefinitionNRTFormat1.RanParameterList =
253                                                 append(item.ActionDefinitionChoice.ActionDefinitionNRTFormat1.RanParameterList, ranParameterItem)
254                                 }
255                         }
256                 }
257                 item.SubsequentAction.Present = true
258                 item.SubsequentAction.Type = e2ap.E2AP_SubSeqActionTypeContinue
259                 item.SubsequentAction.TimetoWait = e2ap.E2AP_TimeToWaitW100ms
260                 areqenc.ActionSetups = append(areqenc.ActionSetups, item)
261         }
262         testCtxt.E2ApTestMsgSubscriptionRequestWithData(t, &areqenc)
263 }
264
265 func (testCtxt *E2ApTests) E2ApTestMsgSubscriptionResponse(t *testing.T) {
266
267         testCtxt.SetDesc("SubsResp")
268
269         e2SubsResp := testCtxt.packerif.NewPackerSubscriptionResponse()
270
271         testCtxt.testPrint("########## ##########")
272         testCtxt.testPrint("init")
273
274         arespenc := e2ap.E2APSubscriptionResponse{}
275         arespenc.RequestId.Id = 1
276         arespenc.RequestId.InstanceId = 22
277         arespenc.FunctionId = 33
278         for index := uint64(0); index < 16; index++ {
279                 item := e2ap.ActionAdmittedItem{}
280                 item.ActionId = index
281                 arespenc.ActionAdmittedList.Items = append(arespenc.ActionAdmittedList.Items, item)
282         }
283         for index := uint64(0); index < 16; index++ {
284                 item := e2ap.ActionNotAdmittedItem{}
285                 item.ActionId = index
286                 item.Cause.Content = 1
287                 item.Cause.Value = 1
288                 arespenc.ActionNotAdmittedList.Items = append(arespenc.ActionNotAdmittedList.Items, item)
289         }
290
291         testCtxt.testPrint("pack")
292         err, packedMsg := e2SubsResp.Pack(&arespenc)
293         if err != nil {
294                 testCtxt.testError(t, "Pack failed: %s", err.Error())
295                 return
296         }
297         testCtxt.testPrint("print:\n%s", e2SubsResp.String())
298         testCtxt.testPrint("unpack")
299         err, arespdec := e2SubsResp.UnPack(packedMsg)
300         if err != nil {
301                 testCtxt.testError(t, "UnPack failed: %s", err.Error())
302                 return
303         }
304         testCtxt.testPrint("print:\n%s", e2SubsResp.String())
305         testCtxt.testValueEquality(t, "msg", &arespenc, arespdec)
306 }
307
308 func (testCtxt *E2ApTests) E2ApTestMsgSubscriptionFailure(t *testing.T) {
309
310         testCtxt.SetDesc("SubsFail")
311
312         e2SubsFail := testCtxt.packerif.NewPackerSubscriptionFailure()
313
314         testCtxt.testPrint("########## ##########")
315         testCtxt.testPrint("init")
316
317         afailenc := e2ap.E2APSubscriptionFailure{}
318         afailenc.RequestId.Id = 1
319         afailenc.RequestId.InstanceId = 22
320         afailenc.FunctionId = 33
321         for index := uint64(0); index < 16; index++ {
322                 item := e2ap.ActionNotAdmittedItem{}
323                 item.ActionId = index
324                 item.Cause.Content = 1
325                 item.Cause.Value = 1
326                 afailenc.ActionNotAdmittedList.Items = append(afailenc.ActionNotAdmittedList.Items, item)
327         }
328         // NOT SUPPORTED CURRENTLY
329         afailenc.CriticalityDiagnostics.Present = false
330         //      afailenc.CriticalityDiagnostics.ProcCodePresent = true
331         //      afailenc.CriticalityDiagnostics.ProcCode = 1
332         //      afailenc.CriticalityDiagnostics.TrigMsgPresent = true
333         //      afailenc.CriticalityDiagnostics.TrigMsg = 2
334         //      afailenc.CriticalityDiagnostics.ProcCritPresent = true
335         //      afailenc.CriticalityDiagnostics.ProcCrit = e2ap.E2AP_CriticalityReject
336         //      for index := uint32(0); index < 256; index++ {
337         //              ieitem := e2ap.CriticalityDiagnosticsIEListItem{}
338         //              ieitem.IeCriticality = e2ap.E2AP_CriticalityReject
339         //              ieitem.IeID = index
340         //              ieitem.TypeOfError = 1
341         //              afailenc.CriticalityDiagnostics.CriticalityDiagnosticsIEList.Items = append(afailenc.CriticalityDiagnostics.CriticalityDiagnosticsIEList.Items, ieitem)
342         //      }
343
344         testCtxt.testPrint("pack")
345         err, packedMsg := e2SubsFail.Pack(&afailenc)
346         if err != nil {
347                 testCtxt.testError(t, "Pack failed: %s", err.Error())
348                 return
349         }
350         testCtxt.testPrint("print:\n%s", e2SubsFail.String())
351         testCtxt.testPrint("unpack")
352         err, afaildec := e2SubsFail.UnPack(packedMsg)
353         if err != nil {
354                 testCtxt.testError(t, "UnPack failed: %s", err.Error())
355                 return
356         }
357         testCtxt.testPrint("print:\n%s", e2SubsFail.String())
358         testCtxt.testValueEquality(t, "msg", &afailenc, afaildec)
359 }
360
361 func (testCtxt *E2ApTests) E2ApTestMsgSubscriptionRequestBuffers(t *testing.T) {
362
363         testfunc := func(buffer string) {
364                 packedData := testCtxt.toPackedData(t, buffer)
365                 if packedData == nil {
366                         return
367                 }
368                 e2SubResp := testCtxt.packerif.NewPackerSubscriptionRequest()
369                 err, _ := e2SubResp.UnPack(packedData)
370                 if err != nil {
371                         testCtxt.testError(t, "UnPack() Failed: %s [%s]", err.Error(), buffer)
372                         return
373                 }
374                 testCtxt.testPrint("OK [%s]", buffer)
375         }
376
377         testCtxt.SetDesc("SubReqBuffer")
378         testfunc("00c9402c000003ea7e00050000010000ea6300020001ea810016000b00130051407b000000054000ea6b000420000000")
379 }
380
381 func (testCtxt *E2ApTests) E2ApTestMsgSubscriptionResponseBuffers(t *testing.T) {
382
383         testfunc := func(buffer string) {
384                 packedData := testCtxt.toPackedData(t, buffer)
385                 if packedData == nil {
386                         return
387                 }
388                 e2SubResp := testCtxt.packerif.NewPackerSubscriptionResponse()
389                 err, _ := e2SubResp.UnPack(packedData)
390                 if err != nil {
391                         testCtxt.testError(t, "UnPack() Failed: %s [%s]", err.Error(), buffer)
392                         return
393                 }
394                 testCtxt.testPrint("OK [%s]", buffer)
395         }
396
397         testCtxt.SetDesc("SubRespBuffer")
398         testfunc("20c9402a000004ea7e00050000018009ea6300020001ea6c000700ea6d00020000ea6e000908ea6f000400000040")
399         testfunc("20c9401d000003ea7e0005004eec0004ea6300020001ea6c000700ea6d40020000")
400
401 }
402
403 func (testCtxt *E2ApTests) E2ApTestMsgSubscriptionFailureBuffers(t *testing.T) {
404
405         testfunc := func(buffer string) {
406                 packedData := testCtxt.toPackedData(t, buffer)
407                 if packedData == nil {
408                         return
409                 }
410                 e2SubResp := testCtxt.packerif.NewPackerSubscriptionFailure()
411                 err, _ := e2SubResp.UnPack(packedData)
412                 if err != nil {
413                         testCtxt.testError(t, "UnPack() Failed: %s [%s]", err.Error(), buffer)
414                         return
415                 }
416                 testCtxt.testPrint("OK [%s]", buffer)
417         }
418
419         testCtxt.SetDesc("SubFailBuffer")
420         testfunc("40c94017000003ea7e000500000106f3ea6300020001ea6e000100")
421 }