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"
24 "gerrit.o-ran-sc.org/r/ric-plt/e2ap/pkg/e2ap_wrapper"
25 "gerrit.o-ran-sc.org/r/ric-plt/e2ap/pkg/packer"
26 "gerrit.o-ran-sc.org/r/ric-plt/xapp-frame/pkg/xapp"
31 //-----------------------------------------------------------------------------
33 //-----------------------------------------------------------------------------
34 var e2asnpacker e2ap.E2APPackerIf = e2ap_wrapper.NewAsn1E2Packer()
36 //-----------------------------------------------------------------------------
38 //-----------------------------------------------------------------------------
39 func (xappConn *testingXappControl) handle_xapp_subs_req(t *testing.T, oldTrans *xappTransaction) *xappTransaction {
40 xapp.Logger.Info("(%s) handle_xapp_subs_req", xappConn.desc)
41 e2SubsReq := e2asnpacker.NewPackerSubscriptionRequest()
43 //---------------------------------
44 // xapp activity: Send Subs Req
45 //---------------------------------
46 xapp.Logger.Info("(%s) Send Subs Req", xappConn.desc)
48 req := &e2ap.E2APSubscriptionRequest{}
54 req.EventTriggerDefinition.InterfaceId.GlobalEnbId.Present = true
55 req.EventTriggerDefinition.InterfaceId.GlobalEnbId.PlmnIdentity.StringPut("310150")
56 req.EventTriggerDefinition.InterfaceId.GlobalEnbId.NodeId.Id = 123
57 req.EventTriggerDefinition.InterfaceId.GlobalEnbId.NodeId.Bits = e2ap.E2AP_ENBIDHomeBits28
59 // gnb -> enb outgoing
60 // enb -> gnb incoming
62 req.EventTriggerDefinition.InterfaceDirection = e2ap.E2AP_InterfaceDirectionIncoming
63 req.EventTriggerDefinition.ProcedureCode = 5 //28 35
64 req.EventTriggerDefinition.TypeOfMessage = e2ap.E2AP_InitiatingMessage
66 req.ActionSetups = make([]e2ap.ActionToBeSetupItem, 1)
67 req.ActionSetups[0].ActionId = 0
68 req.ActionSetups[0].ActionType = e2ap.E2AP_ActionTypeReport
69 req.ActionSetups[0].ActionDefinition.Present = false
70 //req.ActionSetups[index].ActionDefinition.StyleId = 255
71 //req.ActionSetups[index].ActionDefinition.ParamId = 222
72 req.ActionSetups[0].SubsequentAction.Present = true
73 req.ActionSetups[0].SubsequentAction.Type = e2ap.E2AP_SubSeqActionTypeContinue
74 req.ActionSetups[0].SubsequentAction.TimetoWait = e2ap.E2AP_TimeToWaitZero
77 xapp.Logger.Debug("%s", e2SubsReq.String())
78 err, packedMsg := e2SubsReq.Pack(nil)
80 testError(t, "(%s) pack NOK %s", xappConn.desc, err.Error())
84 var trans *xappTransaction = oldTrans
86 trans = xappConn.newXappTransaction(nil, "RAN_NAME_1")
89 params := &RMRParams{&xapp.RMRParams{}}
90 params.Mtype = xapp.RIC_SUB_REQ
92 params.Payload = packedMsg.Buf
93 params.Meid = trans.meid
94 params.Xid = trans.xid
97 snderr := xappConn.RmrSend(params)
99 testError(t, "(%s) RMR SEND FAILED: %s", xappConn.desc, snderr.Error())
105 //-----------------------------------------------------------------------------
107 //-----------------------------------------------------------------------------
108 func (xappConn *testingXappControl) handle_xapp_subs_resp(t *testing.T, trans *xappTransaction) int {
109 xapp.Logger.Info("(%s) handle_xapp_subs_resp", xappConn.desc)
110 e2SubsResp := e2asnpacker.NewPackerSubscriptionResponse()
113 //---------------------------------
114 // xapp activity: Recv Subs Resp
115 //---------------------------------
117 case msg := <-xappConn.rmrConChan:
118 if msg.Mtype != xapp.RICMessageTypes["RIC_SUB_RESP"] {
119 testError(t, "(%s) Received RIC_SUB_RESP wrong mtype expected %s got %s, error", xappConn.desc, "RIC_SUB_RESP", xapp.RicMessageTypeToName[msg.Mtype])
121 } else if msg.Xid != trans.xid {
122 testError(t, "(%s) Received RIC_SUB_RESP wrong xid expected %s got %s, error", xappConn.desc, trans.xid, msg.Xid)
125 packedData := &packer.PackedData{}
126 packedData.Buf = msg.Payload
128 unpackerr := e2SubsResp.UnPack(packedData)
130 if unpackerr != nil {
131 testError(t, "(%s) RIC_SUB_RESP unpack failed err: %s", xappConn.desc, unpackerr.Error())
133 geterr, resp := e2SubsResp.Get()
135 testError(t, "(%s) RIC_SUB_RESP get failed err: %s", xappConn.desc, geterr.Error())
138 xapp.Logger.Info("(%s) Recv Subs Resp rmr: xid=%s subid=%d, asn: seqnro=%d", xappConn.desc, msg.Xid, msg.SubId, resp.RequestId.Seq)
141 case <-time.After(15 * time.Second):
142 testError(t, "(%s) Not Received RIC_SUB_RESP within 15 secs", xappConn.desc)
148 //-----------------------------------------------------------------------------
150 //-----------------------------------------------------------------------------
151 func (xappConn *testingXappControl) handle_xapp_subs_fail(t *testing.T, trans *xappTransaction) int {
152 xapp.Logger.Info("(%s) handle_xapp_subs_fail", xappConn.desc)
153 e2SubsFail := e2asnpacker.NewPackerSubscriptionFailure()
156 //-------------------------------
157 // xapp activity: Recv Subs Fail
158 //-------------------------------
160 case msg := <-xappConn.rmrConChan:
161 if msg.Mtype != xapp.RICMessageTypes["RIC_SUB_FAILURE"] {
162 testError(t, "(%s) Received RIC_SUB_FAILURE wrong mtype expected %s got %s, error", xappConn.desc, "RIC_SUB_FAILURE", xapp.RicMessageTypeToName[msg.Mtype])
164 } else if msg.Xid != trans.xid {
165 testError(t, "(%s) Received RIC_SUB_FAILURE wrong xid expected %s got %s, error", xappConn.desc, trans.xid, msg.Xid)
168 packedData := &packer.PackedData{}
169 packedData.Buf = msg.Payload
171 unpackerr := e2SubsFail.UnPack(packedData)
173 if unpackerr != nil {
174 testError(t, "(%s) RIC_SUB_FAILURE unpack failed err: %s", xappConn.desc, unpackerr.Error())
176 geterr, resp := e2SubsFail.Get()
178 testError(t, "(%s) RIC_SUB_FAILURE get failed err: %s", xappConn.desc, geterr.Error())
181 xapp.Logger.Info("(%s) Recv Subs Fail rmr: xid=%s subid=%d, asn: seqnro=%d", xappConn.desc, msg.Xid, msg.SubId, resp.RequestId.Seq)
184 case <-time.After(15 * time.Second):
185 testError(t, "(%s) Not Received RIC_SUB_FAILURE within 15 secs", xappConn.desc)
191 //-----------------------------------------------------------------------------
193 //-----------------------------------------------------------------------------
194 func (xappConn *testingXappControl) handle_xapp_subs_del_req(t *testing.T, oldTrans *xappTransaction, e2SubsId int) *xappTransaction {
195 xapp.Logger.Info("(%s) handle_xapp_subs_del_req", xappConn.desc)
196 e2SubsDelReq := e2asnpacker.NewPackerSubscriptionDeleteRequest()
198 //---------------------------------
199 // xapp activity: Send Subs Del Req
200 //---------------------------------
201 xapp.Logger.Info("(%s) Send Subs Del Req", xappConn.desc)
203 req := &e2ap.E2APSubscriptionDeleteRequest{}
205 req.RequestId.Seq = uint32(e2SubsId)
208 e2SubsDelReq.Set(req)
209 xapp.Logger.Debug("%s", e2SubsDelReq.String())
210 err, packedMsg := e2SubsDelReq.Pack(nil)
212 testError(t, "(%s) pack NOK %s", xappConn.desc, err.Error())
216 var trans *xappTransaction = oldTrans
218 trans = xappConn.newXappTransaction(nil, "RAN_NAME_1")
221 params := &RMRParams{&xapp.RMRParams{}}
222 params.Mtype = xapp.RIC_SUB_DEL_REQ
223 params.SubId = e2SubsId
224 params.Payload = packedMsg.Buf
225 params.Meid = trans.meid
226 params.Xid = trans.xid
229 snderr := xappConn.RmrSend(params)
231 testError(t, "(%s) RMR SEND FAILED: %s", xappConn.desc, snderr.Error())
237 //-----------------------------------------------------------------------------
239 //-----------------------------------------------------------------------------
240 func (xappConn *testingXappControl) handle_xapp_subs_del_resp(t *testing.T, trans *xappTransaction) {
241 xapp.Logger.Info("(%s) handle_xapp_subs_del_resp", xappConn.desc)
242 e2SubsDelResp := e2asnpacker.NewPackerSubscriptionDeleteResponse()
244 //---------------------------------
245 // xapp activity: Recv Subs Del Resp
246 //---------------------------------
248 case msg := <-xappConn.rmrConChan:
249 if msg.Mtype != xapp.RICMessageTypes["RIC_SUB_DEL_RESP"] {
250 testError(t, "(%s) Received RIC_SUB_DEL_RESP wrong mtype expected %s got %s, error", xappConn.desc, "RIC_SUB_DEL_RESP", xapp.RicMessageTypeToName[msg.Mtype])
252 } else if msg.Xid != trans.xid {
253 testError(t, "(%s) Received RIC_SUB_DEL_RESP wrong xid expected %s got %s, error", xappConn.desc, trans.xid, msg.Xid)
256 packedData := &packer.PackedData{}
257 packedData.Buf = msg.Payload
258 unpackerr := e2SubsDelResp.UnPack(packedData)
259 if unpackerr != nil {
260 testError(t, "(%s) RIC_SUB_DEL_RESP unpack failed err: %s", xappConn.desc, unpackerr.Error())
262 geterr, resp := e2SubsDelResp.Get()
264 testError(t, "(%s) RIC_SUB_DEL_RESP get failed err: %s", xappConn.desc, geterr.Error())
266 xapp.Logger.Info("(%s) Recv Subs Del Resp rmr: xid=%s subid=%d, asn: seqnro=%d", xappConn.desc, msg.Xid, msg.SubId, resp.RequestId.Seq)
269 case <-time.After(15 * time.Second):
270 testError(t, "(%s) Not Received RIC_SUB_DEL_RESP within 15 secs", xappConn.desc)
274 //-----------------------------------------------------------------------------
276 //-----------------------------------------------------------------------------
277 func (e2termConn *testingE2termControl) handle_e2term_subs_req(t *testing.T) (*e2ap.E2APSubscriptionRequest, *RMRParams) {
278 xapp.Logger.Info("(%s) handle_e2term_subs_req", e2termConn.desc)
279 e2SubsReq := e2asnpacker.NewPackerSubscriptionRequest()
281 //---------------------------------
282 // e2term activity: Recv Subs Req
283 //---------------------------------
285 case msg := <-e2termConn.rmrConChan:
286 if msg.Mtype != xapp.RICMessageTypes["RIC_SUB_REQ"] {
287 testError(t, "(%s) Received wrong mtype expected %s got %s, error", e2termConn.desc, "RIC_SUB_REQ", xapp.RicMessageTypeToName[msg.Mtype])
289 xapp.Logger.Info("(%s) Recv Subs Req", e2termConn.desc)
290 packedData := &packer.PackedData{}
291 packedData.Buf = msg.Payload
292 unpackerr := e2SubsReq.UnPack(packedData)
293 if unpackerr != nil {
294 testError(t, "(%s) RIC_SUB_REQ unpack failed err: %s", e2termConn.desc, unpackerr.Error())
296 geterr, req := e2SubsReq.Get()
298 testError(t, "(%s) RIC_SUB_REQ get failed err: %s", e2termConn.desc, geterr.Error())
302 case <-time.After(15 * time.Second):
303 testError(t, "(%s) Not Received RIC_SUB_REQ within 15 secs", e2termConn.desc)
308 func (e2termConn *testingE2termControl) handle_e2term_subs_resp(t *testing.T, req *e2ap.E2APSubscriptionRequest, msg *RMRParams) {
309 xapp.Logger.Info("(%s) handle_e2term_subs_resp", e2termConn.desc)
310 e2SubsResp := e2asnpacker.NewPackerSubscriptionResponse()
312 //---------------------------------
313 // e2term activity: Send Subs Resp
314 //---------------------------------
315 xapp.Logger.Info("(%s) Send Subs Resp", e2termConn.desc)
317 resp := &e2ap.E2APSubscriptionResponse{}
319 resp.RequestId.Id = req.RequestId.Id
320 resp.RequestId.Seq = req.RequestId.Seq
321 resp.FunctionId = req.FunctionId
323 resp.ActionAdmittedList.Items = make([]e2ap.ActionAdmittedItem, len(req.ActionSetups))
324 for index := int(0); index < len(req.ActionSetups); index++ {
325 resp.ActionAdmittedList.Items[index].ActionId = req.ActionSetups[index].ActionId
328 for index := uint64(0); index < 1; index++ {
329 item := e2ap.ActionNotAdmittedItem{}
330 item.ActionId = index
331 item.Cause.Content = 1
332 item.Cause.CauseVal = 1
333 resp.ActionNotAdmittedList.Items = append(resp.ActionNotAdmittedList.Items, item)
337 xapp.Logger.Debug("%s", e2SubsResp.String())
338 packerr, packedMsg := e2SubsResp.Pack(nil)
340 testError(t, "(%s) pack NOK %s", e2termConn.desc, packerr.Error())
343 params := &RMRParams{&xapp.RMRParams{}}
344 params.Mtype = xapp.RIC_SUB_RESP
345 params.SubId = msg.SubId
346 params.Payload = packedMsg.Buf
347 params.Meid = msg.Meid
351 snderr := e2termConn.RmrSend(params)
353 testError(t, "(%s) RMR SEND FAILED: %s", e2termConn.desc, snderr.Error())
357 //-----------------------------------------------------------------------------
359 //-----------------------------------------------------------------------------
360 func (e2termConn *testingE2termControl) handle_e2term_subs_fail(t *testing.T, req *e2ap.E2APSubscriptionRequest, msg *RMRParams) {
361 xapp.Logger.Info("(%s) handle_e2term_subs_fail", e2termConn.desc)
362 e2SubsFail := e2asnpacker.NewPackerSubscriptionFailure()
364 //---------------------------------
365 // e2term activity: Send Subs Fail
366 //---------------------------------
367 xapp.Logger.Info("(%s) Send Subs Fail", e2termConn.desc)
369 resp := &e2ap.E2APSubscriptionFailure{}
370 resp.RequestId.Id = req.RequestId.Id
371 resp.RequestId.Seq = req.RequestId.Seq
372 resp.FunctionId = req.FunctionId
374 resp.ActionNotAdmittedList.Items = make([]e2ap.ActionNotAdmittedItem, len(resp.ActionNotAdmittedList.Items))
375 for index := int(0); index < len(resp.ActionNotAdmittedList.Items); index++ {
376 resp.ActionNotAdmittedList.Items[index].ActionId = req.ActionSetups[index].ActionId
377 resp.ActionNotAdmittedList.Items[index].Cause.Content = 3 // CauseMisc
378 resp.ActionNotAdmittedList.Items[index].Cause.CauseVal = 4 // unspecified
382 xapp.Logger.Debug("%s", e2SubsFail.String())
383 packerr, packedMsg := e2SubsFail.Pack(nil)
385 testError(t, "(%s) pack NOK %s", e2termConn.desc, packerr.Error())
388 params := &RMRParams{&xapp.RMRParams{}}
389 params.Mtype = xapp.RIC_SUB_FAILURE
390 params.SubId = msg.SubId
391 params.Payload = packedMsg.Buf
392 params.Meid = msg.Meid
396 snderr := e2termConn.RmrSend(params)
398 testError(t, "(%s) RMR SEND FAILED: %s", e2termConn.desc, snderr.Error())
402 //-----------------------------------------------------------------------------
404 //-----------------------------------------------------------------------------
405 func (e2termConn *testingE2termControl) handle_e2term_subs_del_req(t *testing.T) (*e2ap.E2APSubscriptionDeleteRequest, *RMRParams) {
406 xapp.Logger.Info("(%s) handle_e2term_subs_del_req", e2termConn.desc)
407 e2SubsDelReq := e2asnpacker.NewPackerSubscriptionDeleteRequest()
409 //---------------------------------
410 // e2term activity: Recv Subs Del Req
411 //---------------------------------
413 case msg := <-e2termConn.rmrConChan:
414 if msg.Mtype != xapp.RICMessageTypes["RIC_SUB_DEL_REQ"] {
415 testError(t, "(%s) Received wrong mtype expected %s got %s, error", e2termConn.desc, "RIC_SUB_DEL_REQ", xapp.RicMessageTypeToName[msg.Mtype])
417 xapp.Logger.Info("(%s) Recv Subs Del Req", e2termConn.desc)
419 packedData := &packer.PackedData{}
420 packedData.Buf = msg.Payload
421 unpackerr := e2SubsDelReq.UnPack(packedData)
422 if unpackerr != nil {
423 testError(t, "(%s) RIC_SUB_DEL_REQ unpack failed err: %s", e2termConn.desc, unpackerr.Error())
425 geterr, req := e2SubsDelReq.Get()
427 testError(t, "(%s) RIC_SUB_DEL_REQ get failed err: %s", e2termConn.desc, geterr.Error())
431 case <-time.After(15 * time.Second):
432 testError(t, "(%s) Not Received RIC_SUB_DEL_REQ within 15 secs", e2termConn.desc)
437 func handle_e2term_recv_empty() bool {
438 if len(e2termConn.rmrConChan) > 0 {
444 func (e2termConn *testingE2termControl) handle_e2term_subs_del_resp(t *testing.T, req *e2ap.E2APSubscriptionDeleteRequest, msg *RMRParams) {
445 xapp.Logger.Info("(%s) handle_e2term_subs_del_resp", e2termConn.desc)
446 e2SubsDelResp := e2asnpacker.NewPackerSubscriptionDeleteResponse()
448 //---------------------------------
449 // e2term activity: Send Subs Del Resp
450 //---------------------------------
451 xapp.Logger.Info("(%s) Send Subs Del Resp", e2termConn.desc)
453 resp := &e2ap.E2APSubscriptionDeleteResponse{}
454 resp.RequestId.Id = req.RequestId.Id
455 resp.RequestId.Seq = req.RequestId.Seq
456 resp.FunctionId = req.FunctionId
458 e2SubsDelResp.Set(resp)
459 xapp.Logger.Debug("%s", e2SubsDelResp.String())
460 packerr, packedMsg := e2SubsDelResp.Pack(nil)
462 testError(t, "(%s) pack NOK %s", e2termConn.desc, packerr.Error())
465 params := &RMRParams{&xapp.RMRParams{}}
466 params.Mtype = xapp.RIC_SUB_DEL_RESP
467 params.SubId = msg.SubId
468 params.Payload = packedMsg.Buf
469 params.Meid = msg.Meid
473 snderr := e2termConn.RmrSend(params)
475 testError(t, "(%s) RMR SEND FAILED: %s", e2termConn.desc, snderr.Error())
479 //-----------------------------------------------------------------------------
481 //-----------------------------------------------------------------------------
482 func (e2termConn *testingE2termControl) handle_e2term_subs_del_fail(t *testing.T, req *e2ap.E2APSubscriptionDeleteRequest, msg *RMRParams) {
483 xapp.Logger.Info("(%s) handle_e2term_del_subs_fail", e2termConn.desc)
484 e2SubsDelFail := e2asnpacker.NewPackerSubscriptionDeleteFailure()
486 //---------------------------------
487 // e2term activity: Send Subs Del Fail
488 //---------------------------------
489 xapp.Logger.Info("(%s) Send Subs Del Fail", e2termConn.desc)
491 resp := &e2ap.E2APSubscriptionDeleteFailure{}
492 resp.RequestId.Id = req.RequestId.Id
493 resp.RequestId.Seq = req.RequestId.Seq
494 resp.FunctionId = req.FunctionId
495 resp.Cause.Content = 3 // CauseMisc
496 resp.Cause.CauseVal = 4 // unspecified
498 e2SubsDelFail.Set(resp)
499 xapp.Logger.Debug("%s", e2SubsDelFail.String())
500 packerr, packedMsg := e2SubsDelFail.Pack(nil)
502 testError(t, "(%s) pack NOK %s", e2termConn.desc, packerr.Error())
505 params := &RMRParams{&xapp.RMRParams{}}
506 params.Mtype = xapp.RIC_SUB_DEL_FAILURE
507 params.SubId = msg.SubId
508 params.Payload = packedMsg.Buf
509 params.Meid = msg.Meid
513 snderr := e2termConn.RmrSend(params)
515 testError(t, "(%s) RMR SEND FAILED: %s", e2termConn.desc, snderr.Error())
519 //-----------------------------------------------------------------------------
521 //-----------------------------------------------------------------------------
522 func (mc *testingMainControl) wait_subs_clean(t *testing.T, e2SubsId int, secs int) bool {
524 for ; i <= secs*2; i++ {
525 if mc.c.registry.GetSubscription(uint16(e2SubsId)) == nil {
528 time.Sleep(500 * time.Millisecond)
530 testError(t, "(general) no clean within %d secs", secs)
534 func (mc *testingMainControl) wait_subs_trans_clean(t *testing.T, e2SubsId int, secs int) bool {
536 for ; i <= secs*2; i++ {
537 subs := mc.c.registry.GetSubscription(uint16(e2SubsId))
541 trans := subs.GetTransaction()
545 time.Sleep(500 * time.Millisecond)
547 testError(t, "(general) no clean within %d secs", secs)
551 func (mc *testingMainControl) get_subid(t *testing.T) uint16 {
552 mc.c.registry.mutex.Lock()
553 defer mc.c.registry.mutex.Unlock()
554 return mc.c.registry.subIds[0]
557 func (mc *testingMainControl) wait_subid_change(t *testing.T, origSubId uint16, secs int) (uint16, bool) {
559 for ; i <= secs*2; i++ {
560 mc.c.registry.mutex.Lock()
561 currSubId := mc.c.registry.subIds[0]
562 mc.c.registry.mutex.Unlock()
563 if currSubId != origSubId {
564 return currSubId, true
566 time.Sleep(500 * time.Millisecond)
568 testError(t, "(general) no subId change within %d secs", secs)
572 func (mc *testingMainControl) get_msgcounter(t *testing.T) uint64 {
573 return mc.c.msgCounter
576 func (mc *testingMainControl) wait_msgcounter_change(t *testing.T, orig uint64, secs int) (uint64, bool) {
578 for ; i <= secs*2; i++ {
579 curr := mc.c.msgCounter
583 time.Sleep(500 * time.Millisecond)
585 testError(t, "(general) no msg counter change within %d secs", secs)
589 //-----------------------------------------------------------------------------
590 // TestSubReqAndSubDelOk
593 // +-------+ +---------+ +---------+
594 // | xapp | | submgr | | e2term |
595 // +-------+ +---------+ +---------+
598 // |------------->| |
601 // | |------------->|
604 // | |<-------------|
607 // |<-------------| |
611 // |------------->| |
614 // | |------------->|
617 // | |<-------------|
620 // |<-------------| |
622 //-----------------------------------------------------------------------------
623 func TestSubReqAndSubDelOk(t *testing.T) {
624 xapp.Logger.Info("TestSubReqAndSubDelOk")
625 rtmgrHttp.UseChannel(true)
627 cretrans := xappConn1.handle_xapp_subs_req(t, nil)
628 msg := rtmgrHttp.WaitReq(t)
630 crereq, cremsg := e2termConn.handle_e2term_subs_req(t)
631 e2termConn.handle_e2term_subs_resp(t, crereq, cremsg)
632 e2SubsId := xappConn1.handle_xapp_subs_resp(t, cretrans)
634 deltrans := xappConn1.handle_xapp_subs_del_req(t, nil, e2SubsId)
635 delreq, delmsg := e2termConn.handle_e2term_subs_del_req(t)
636 e2termConn.handle_e2term_subs_del_resp(t, delreq, delmsg)
637 xappConn1.handle_xapp_subs_del_resp(t, deltrans)
639 msg = rtmgrHttp.WaitReq(t)
642 //Wait that subs is cleaned
643 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
644 rtmgrHttp.UseChannel(false)
647 //-----------------------------------------------------------------------------
648 // TestSubReqRetransmission
651 // +-------+ +---------+ +---------+
652 // | xapp | | submgr | | e2term |
653 // +-------+ +---------+ +---------+
656 // |------------->| |
659 // | |------------->|
663 // |------------->| |
666 // | |<-------------|
669 // |<-------------| |
674 //-----------------------------------------------------------------------------
675 func TestSubReqRetransmission(t *testing.T) {
676 xapp.Logger.Info("TestSubReqRetransmission")
679 cretrans := xappConn1.handle_xapp_subs_req(t, nil)
680 crereq, cremsg := e2termConn.handle_e2term_subs_req(t)
682 seqBef := mainCtrl.get_msgcounter(t)
683 xappConn1.handle_xapp_subs_req(t, cretrans) //Retransmitted SubReq
684 mainCtrl.wait_msgcounter_change(t, seqBef, 10)
686 e2termConn.handle_e2term_subs_resp(t, crereq, cremsg)
687 e2SubsId := xappConn1.handle_xapp_subs_resp(t, cretrans)
690 deltrans := xappConn1.handle_xapp_subs_del_req(t, nil, e2SubsId)
691 delreq, delmsg := e2termConn.handle_e2term_subs_del_req(t)
692 e2termConn.handle_e2term_subs_del_resp(t, delreq, delmsg)
693 xappConn1.handle_xapp_subs_del_resp(t, deltrans)
695 //Wait that subs is cleaned
696 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
699 //-----------------------------------------------------------------------------
700 // TestSubDelReqRetransmission
703 // +-------+ +---------+ +---------+
704 // | xapp | | submgr | | e2term |
705 // +-------+ +---------+ +---------+
711 // |------------->| |
714 // | |------------->|
719 // |------------->| |
722 // | |<-------------|
725 // |<-------------| |
727 //-----------------------------------------------------------------------------
728 func TestSubDelReqRetransmission(t *testing.T) {
729 xapp.Logger.Info("TestSubDelReqRetransmission")
732 cretrans := xappConn1.handle_xapp_subs_req(t, nil)
733 crereq, cremsg := e2termConn.handle_e2term_subs_req(t)
734 e2termConn.handle_e2term_subs_resp(t, crereq, cremsg)
735 e2SubsId := xappConn1.handle_xapp_subs_resp(t, cretrans)
738 deltrans := xappConn1.handle_xapp_subs_del_req(t, nil, e2SubsId)
739 delreq, delmsg := e2termConn.handle_e2term_subs_del_req(t)
741 seqBef := mainCtrl.get_msgcounter(t)
742 xappConn1.handle_xapp_subs_del_req(t, deltrans, e2SubsId) //Retransmitted SubDelReq
743 mainCtrl.wait_msgcounter_change(t, seqBef, 10)
745 e2termConn.handle_e2term_subs_del_resp(t, delreq, delmsg)
746 xappConn1.handle_xapp_subs_del_resp(t, deltrans)
748 //Wait that subs is cleaned
749 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
752 //-----------------------------------------------------------------------------
753 // TestSubDelReqCollision
756 // +-------+ +---------+ +---------+
757 // | xapp | | submgr | | e2term |
758 // +-------+ +---------+ +---------+
764 // |------------->| |
767 // | |------------->|
772 // |------------->| |
775 // | |<-------------|
778 // |<-------------| |
780 //-----------------------------------------------------------------------------
781 func TestSubDelReqCollision(t *testing.T) {
782 xapp.Logger.Info("TestSubDelReqCollision")
785 cretrans := xappConn1.handle_xapp_subs_req(t, nil)
786 crereq, cremsg := e2termConn.handle_e2term_subs_req(t)
787 e2termConn.handle_e2term_subs_resp(t, crereq, cremsg)
788 e2SubsId := xappConn1.handle_xapp_subs_resp(t, cretrans)
791 deltrans := xappConn1.handle_xapp_subs_del_req(t, nil, e2SubsId)
792 delreq, delmsg := e2termConn.handle_e2term_subs_del_req(t)
794 seqBef := mainCtrl.get_msgcounter(t)
795 deltranscol := xappConn1.newXappTransaction(nil, "RAN_NAME_1")
796 xappConn1.handle_xapp_subs_del_req(t, deltranscol, e2SubsId) //Colliding SubDelReq
797 mainCtrl.wait_msgcounter_change(t, seqBef, 10)
799 e2termConn.handle_e2term_subs_del_resp(t, delreq, delmsg)
800 xappConn1.handle_xapp_subs_del_resp(t, deltrans)
802 //Wait that subs is cleaned
803 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
806 //-----------------------------------------------------------------------------
807 // TestSubReqAndSubDelOkTwoParallel
810 // +-------+ +---------+ +---------+
811 // | xapp | | submgr | | e2term |
812 // +-------+ +---------+ +---------+
817 // |------------->| |
820 // | |------------->|
823 // |------------->| |
826 // | |------------->|
829 // | |<-------------|
831 // | |<-------------|
834 // |<-------------| |
836 // |<-------------| |
838 // | [SUBS 1 DELETE] |
840 // | [SUBS 2 DELETE] |
843 //-----------------------------------------------------------------------------
844 func TestSubReqAndSubDelOkTwoParallel(t *testing.T) {
845 xapp.Logger.Info("TestSubReqAndSubDelOkTwoParallel")
848 cretrans1 := xappConn1.handle_xapp_subs_req(t, nil)
849 crereq1, cremsg1 := e2termConn.handle_e2term_subs_req(t)
852 cretrans2 := xappConn2.handle_xapp_subs_req(t, nil)
853 crereq2, cremsg2 := e2termConn.handle_e2term_subs_req(t)
856 e2termConn.handle_e2term_subs_resp(t, crereq1, cremsg1)
857 e2SubsId1 := xappConn1.handle_xapp_subs_resp(t, cretrans1)
860 e2termConn.handle_e2term_subs_resp(t, crereq2, cremsg2)
861 e2SubsId2 := xappConn2.handle_xapp_subs_resp(t, cretrans2)
864 deltrans1 := xappConn1.handle_xapp_subs_del_req(t, nil, e2SubsId1)
865 delreq1, delmsg1 := e2termConn.handle_e2term_subs_del_req(t)
866 e2termConn.handle_e2term_subs_del_resp(t, delreq1, delmsg1)
867 xappConn1.handle_xapp_subs_del_resp(t, deltrans1)
868 //Wait that subs is cleaned
869 mainCtrl.wait_subs_clean(t, e2SubsId1, 10)
872 deltrans2 := xappConn2.handle_xapp_subs_del_req(t, nil, e2SubsId2)
873 delreq2, delmsg2 := e2termConn.handle_e2term_subs_del_req(t)
874 e2termConn.handle_e2term_subs_del_resp(t, delreq2, delmsg2)
875 xappConn2.handle_xapp_subs_del_resp(t, deltrans2)
876 //Wait that subs is cleaned
877 mainCtrl.wait_subs_clean(t, e2SubsId2, 10)
880 //-----------------------------------------------------------------------------
881 // TestSameSubsDiffRan
882 // Same subscription to different RANs
885 // +-------+ +---------+ +---------+
886 // | xapp | | submgr | | e2term |
887 // +-------+ +---------+ +---------+
892 // |------------->| |
895 // | |------------->|
898 // | |<-------------|
901 // |<-------------| |
904 // |------------->| |
907 // | |------------->|
910 // | |<-------------|
913 // |<-------------| |
915 // | [SUBS r1 DELETE] |
917 // | [SUBS r2 DELETE] |
920 //-----------------------------------------------------------------------------
921 func TestSameSubsDiffRan(t *testing.T) {
922 xapp.Logger.Info("TestSameSubsDiffRan")
925 cretrans1 := xappConn1.newXappTransaction(nil, "RAN_NAME_1")
926 xappConn1.handle_xapp_subs_req(t, cretrans1)
927 crereq1, cremsg1 := e2termConn.handle_e2term_subs_req(t)
928 e2termConn.handle_e2term_subs_resp(t, crereq1, cremsg1)
929 e2SubsId1 := xappConn1.handle_xapp_subs_resp(t, cretrans1)
932 cretrans2 := xappConn1.newXappTransaction(nil, "RAN_NAME_2")
933 xappConn1.handle_xapp_subs_req(t, cretrans2)
934 crereq2, cremsg2 := e2termConn.handle_e2term_subs_req(t)
935 e2termConn.handle_e2term_subs_resp(t, crereq2, cremsg2)
936 e2SubsId2 := xappConn1.handle_xapp_subs_resp(t, cretrans2)
939 deltrans1 := xappConn1.newXappTransaction(nil, "RAN_NAME_1")
940 xappConn1.handle_xapp_subs_del_req(t, deltrans1, e2SubsId1)
941 delreq1, delmsg1 := e2termConn.handle_e2term_subs_del_req(t)
942 e2termConn.handle_e2term_subs_del_resp(t, delreq1, delmsg1)
943 xappConn1.handle_xapp_subs_del_resp(t, deltrans1)
944 //Wait that subs is cleaned
945 mainCtrl.wait_subs_clean(t, e2SubsId1, 10)
948 deltrans2 := xappConn1.newXappTransaction(nil, "RAN_NAME_2")
949 xappConn1.handle_xapp_subs_del_req(t, deltrans2, e2SubsId2)
950 delreq2, delmsg2 := e2termConn.handle_e2term_subs_del_req(t)
951 e2termConn.handle_e2term_subs_del_resp(t, delreq2, delmsg2)
952 xappConn1.handle_xapp_subs_del_resp(t, deltrans2)
953 //Wait that subs is cleaned
954 mainCtrl.wait_subs_clean(t, e2SubsId2, 10)
957 //-----------------------------------------------------------------------------
958 // TestSubReqRetryInSubmgr
961 // +-------+ +---------+ +---------+
962 // | xapp | | submgr | | e2term |
963 // +-------+ +---------+ +---------+
966 // |------------->| |
969 // | |------------->|
973 // | |------------->|
976 // | |<-------------|
979 // |<-------------| |
984 //-----------------------------------------------------------------------------
986 func TestSubReqRetryInSubmgr(t *testing.T) {
988 xapp.Logger.Info("TestSubReqRetryInSubmgr start")
990 // Xapp: Send SubsReq
991 cretrans := xappConn1.handle_xapp_subs_req(t, nil)
993 // E2t: Receive 1st SubsReq
994 e2termConn.handle_e2term_subs_req(t)
996 // E2t: Receive 2nd SubsReq and send SubsResp
997 crereq, cremsg := e2termConn.handle_e2term_subs_req(t)
998 e2termConn.handle_e2term_subs_resp(t, crereq, cremsg)
1000 // Xapp: Receive SubsResp
1001 e2SubsId := xappConn1.handle_xapp_subs_resp(t, cretrans)
1003 deltrans := xappConn1.handle_xapp_subs_del_req(t, nil, e2SubsId)
1004 delreq, delmsg := e2termConn.handle_e2term_subs_del_req(t)
1005 e2termConn.handle_e2term_subs_del_resp(t, delreq, delmsg)
1006 xappConn1.handle_xapp_subs_del_resp(t, deltrans)
1008 // Wait that subs is cleaned
1009 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
1012 //-----------------------------------------------------------------------------
1013 // TestSubReqTwoRetriesNoRespSubDelRespInSubmgr
1016 // +-------+ +---------+ +---------+
1017 // | xapp | | submgr | | e2term |
1018 // +-------+ +---------+ +---------+
1021 // |------------->| |
1024 // | |------------->|
1028 // | |------------->|
1031 // | |------------->|
1035 // | |------------->|
1039 // | |<-------------|
1042 //-----------------------------------------------------------------------------
1044 func TestSubReqRetryNoRespSubDelRespInSubmgr(t *testing.T) {
1046 xapp.Logger.Info("TestSubReqTwoRetriesNoRespSubDelRespInSubmgr start")
1048 // Xapp: Send SubsReq
1049 xappConn1.handle_xapp_subs_req(t, nil)
1051 // E2t: Receive 1st SubsReq
1052 e2termConn.handle_e2term_subs_req(t)
1054 // E2t: Receive 2nd SubsReq
1055 e2termConn.handle_e2term_subs_req(t)
1057 // E2t: Send receive SubsDelReq and send SubsResp
1058 delreq, delmsg := e2termConn.handle_e2term_subs_del_req(t)
1059 e2termConn.handle_e2term_subs_del_resp(t, delreq, delmsg)
1061 // Wait that subs is cleaned
1062 mainCtrl.wait_subs_clean(t, int(delreq.RequestId.Seq), 10)
1065 //-----------------------------------------------------------------------------
1066 // TestSubReqTwoRetriesNoRespAtAllInSubmgr
1069 // +-------+ +---------+ +---------+
1070 // | xapp | | submgr | | e2term |
1071 // +-------+ +---------+ +---------+
1074 // |------------->| |
1077 // | |------------->|
1081 // | |------------->|
1084 // | |------------->|
1088 // | |------------->|
1092 //-----------------------------------------------------------------------------
1094 func TestSubReqTwoRetriesNoRespAtAllInSubmgr(t *testing.T) {
1096 xapp.Logger.Info("TestSubReqTwoRetriesNoRespAtAllInSubmgr start")
1098 // Xapp: Send SubsReq
1099 xappConn1.handle_xapp_subs_req(t, nil)
1101 // E2t: Receive 1st SubsReq
1102 e2termConn.handle_e2term_subs_req(t)
1104 // E2t: Receive 2nd SubsReq
1105 e2termConn.handle_e2term_subs_req(t)
1107 // E2t: Receive 1st SubsDelReq
1108 e2termConn.handle_e2term_subs_del_req(t)
1110 // E2t: Receive 2nd SubsDelReq
1111 delreq, _ := e2termConn.handle_e2term_subs_del_req(t)
1113 // Wait that subs is cleaned
1114 mainCtrl.wait_subs_clean(t, int(delreq.RequestId.Seq), 10)
1117 //-----------------------------------------------------------------------------
1118 // TestSubReqSubFailRespInSubmgr
1121 // +-------+ +---------+ +---------+
1122 // | xapp | | submgr | | e2term |
1123 // +-------+ +---------+ +---------+
1126 // |------------->| |
1129 // | |------------->|
1132 // | |<-------------|
1135 // |<-------------| |
1138 //-----------------------------------------------------------------------------
1140 func TestSubReqSubFailRespInSubmgr(t *testing.T) {
1142 xapp.Logger.Info("TestSubReqSubFailRespInSubmgr start")
1144 // Xapp: Send SubsReq
1145 cretrans := xappConn1.handle_xapp_subs_req(t, nil)
1147 // E2t: Receive SubsReq and send SubsFail
1148 crereq, cremsg := e2termConn.handle_e2term_subs_req(t)
1149 e2termConn.handle_e2term_subs_fail(t, crereq, cremsg)
1151 // Xapp: Receive SubsFail
1152 e2SubsId := xappConn1.handle_xapp_subs_fail(t, cretrans)
1154 // Wait that subs is cleaned
1155 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
1158 //-----------------------------------------------------------------------------
1159 // TestSubDelReqRetryInSubmgr
1162 // +-------+ +---------+ +---------+
1163 // | xapp | | submgr | | e2term |
1164 // +-------+ +---------+ +---------+
1166 // | [SUBS CREATE] |
1170 // |------------->| |
1173 // | |------------->|
1176 // | |------------->|
1179 // | |<-------------|
1182 // |<-------------| |
1184 //-----------------------------------------------------------------------------
1186 func TestSubDelReqRetryInSubmgr(t *testing.T) {
1188 xapp.Logger.Info("TestSubDelReqRetryInSubmgr start")
1191 cretrans := xappConn1.handle_xapp_subs_req(t, nil)
1192 crereq, cremsg := e2termConn.handle_e2term_subs_req(t)
1193 e2termConn.handle_e2term_subs_resp(t, crereq, cremsg)
1194 e2SubsId := xappConn1.handle_xapp_subs_resp(t, cretrans)
1197 // Xapp: Send SubsDelReq
1198 deltrans := xappConn1.handle_xapp_subs_del_req(t, nil, e2SubsId)
1200 // E2t: Receive 1st SubsDelReq
1201 e2termConn.handle_e2term_subs_del_req(t)
1203 // E2t: Receive 2nd SubsDelReq and send SubsDelResp
1204 delreq, delmsg := e2termConn.handle_e2term_subs_del_req(t)
1205 e2termConn.handle_e2term_subs_del_resp(t, delreq, delmsg)
1207 // Xapp: Receive SubsDelResp
1208 xappConn1.handle_xapp_subs_del_resp(t, deltrans)
1210 // Wait that subs is cleaned
1211 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
1214 //-----------------------------------------------------------------------------
1215 // TestSubDelReqTwoRetriesNoRespInSubmgr
1218 // +-------+ +---------+ +---------+
1219 // | xapp | | submgr | | e2term |
1220 // +-------+ +---------+ +---------+
1222 // | [SUBS CREATE] |
1226 // |------------->| |
1229 // | |------------->|
1232 // | |------------->|
1236 // |<-------------| |
1238 //-----------------------------------------------------------------------------
1240 func TestSubDelReqTwoRetriesNoRespInSubmgr(t *testing.T) {
1242 xapp.Logger.Info("TestSubDelReTwoRetriesNoRespInSubmgr start")
1245 cretrans := xappConn1.handle_xapp_subs_req(t, nil)
1246 crereq, cremsg := e2termConn.handle_e2term_subs_req(t)
1247 e2termConn.handle_e2term_subs_resp(t, crereq, cremsg)
1248 e2SubsId := xappConn1.handle_xapp_subs_resp(t, cretrans)
1251 // Xapp: Send SubsDelReq
1252 deltrans := xappConn1.handle_xapp_subs_del_req(t, nil, e2SubsId)
1254 // E2t: Receive 1st SubsDelReq
1255 e2termConn.handle_e2term_subs_del_req(t)
1257 // E2t: Receive 2nd SubsDelReq
1258 e2termConn.handle_e2term_subs_del_req(t)
1260 // Xapp: Receive SubsDelResp
1261 xappConn1.handle_xapp_subs_del_resp(t, deltrans)
1263 // Wait that subs is cleaned
1264 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
1267 //-----------------------------------------------------------------------------
1268 // TestSubDelReqSubDelFailRespInSubmgr
1271 // +-------+ +---------+ +---------+
1272 // | xapp | | submgr | | e2term |
1273 // +-------+ +---------+ +---------+
1275 // | [SUBS CREATE] |
1279 // |------------->| |
1282 // | |------------->|
1285 // | |<-------------|
1288 // |<-------------| |
1291 //-----------------------------------------------------------------------------
1293 func TestSubDelReqSubDelFailRespInSubmgr(t *testing.T) {
1295 xapp.Logger.Info("TestSubReqSubDelFailRespInSubmgr start")
1298 cretrans := xappConn1.handle_xapp_subs_req(t, nil)
1299 crereq, cremsg := e2termConn.handle_e2term_subs_req(t)
1300 e2termConn.handle_e2term_subs_resp(t, crereq, cremsg)
1301 e2SubsId := xappConn1.handle_xapp_subs_resp(t, cretrans)
1303 // Xapp: Send SubsDelReq
1304 deltrans := xappConn1.handle_xapp_subs_del_req(t, nil, e2SubsId)
1306 // E2t: Send receive SubsDelReq and send SubsDelFail
1307 delreq, delmsg := e2termConn.handle_e2term_subs_del_req(t)
1308 e2termConn.handle_e2term_subs_del_fail(t, delreq, delmsg)
1310 // Xapp: Receive SubsDelResp
1311 xappConn1.handle_xapp_subs_del_resp(t, deltrans)
1313 // Wait that subs is cleaned
1314 mainCtrl.wait_subs_clean(t, e2SubsId, 10)