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("handle_xapp_subs_req")
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 := &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("handle_xapp_subs_resp")
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_del_req(t *testing.T, oldTrans *xappTransaction, e2SubsId int) *xappTransaction {
152 xapp.Logger.Info("handle_xapp_subs_del_req")
153 e2SubsDelReq := e2asnpacker.NewPackerSubscriptionDeleteRequest()
155 //---------------------------------
156 // xapp activity: Send Subs Del Req
157 //---------------------------------
158 xapp.Logger.Info("(%s) Send Subs Del Req", xappConn.desc)
160 req := &e2ap.E2APSubscriptionDeleteRequest{}
162 req.RequestId.Seq = uint32(e2SubsId)
165 e2SubsDelReq.Set(req)
166 xapp.Logger.Debug("%s", e2SubsDelReq.String())
167 err, packedMsg := e2SubsDelReq.Pack(nil)
169 testError(t, "(%s) pack NOK %s", xappConn.desc, err.Error())
173 var trans *xappTransaction = oldTrans
175 trans = xappConn.newXappTransaction(nil, "RAN_NAME_1")
178 params := &xapp.RMRParams{}
179 params.Mtype = xapp.RIC_SUB_DEL_REQ
180 params.SubId = e2SubsId
181 params.Payload = packedMsg.Buf
182 params.Meid = trans.meid
183 params.Xid = trans.xid
186 snderr := xappConn.RmrSend(params)
188 testError(t, "(%s) RMR SEND FAILED: %s", xappConn.desc, snderr.Error())
194 //-----------------------------------------------------------------------------
196 //-----------------------------------------------------------------------------
197 func (xappConn *testingXappControl) handle_xapp_subs_del_resp(t *testing.T, trans *xappTransaction) {
198 xapp.Logger.Info("handle_xapp_subs_del_resp")
199 e2SubsDelResp := e2asnpacker.NewPackerSubscriptionDeleteResponse()
201 //---------------------------------
202 // xapp activity: Recv Subs Del Resp
203 //---------------------------------
205 case msg := <-xappConn.rmrConChan:
206 if msg.Mtype != xapp.RICMessageTypes["RIC_SUB_DEL_RESP"] {
207 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])
209 } else if msg.Xid != trans.xid {
210 testError(t, "(%s) Received RIC_SUB_DEL_RESP wrong xid expected %s got %s, error", xappConn.desc, trans.xid, msg.Xid)
213 packedData := &packer.PackedData{}
214 packedData.Buf = msg.Payload
215 unpackerr := e2SubsDelResp.UnPack(packedData)
216 if unpackerr != nil {
217 testError(t, "(%s) RIC_SUB_DEL_RESP unpack failed err: %s", xappConn.desc, unpackerr.Error())
219 geterr, resp := e2SubsDelResp.Get()
221 testError(t, "(%s) RIC_SUB_DEL_RESP get failed err: %s", xappConn.desc, geterr.Error())
223 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)
226 case <-time.After(15 * time.Second):
227 testError(t, "(%s) Not Received RIC_SUB_DEL_RESP within 15 secs", xappConn.desc)
231 //-----------------------------------------------------------------------------
233 //-----------------------------------------------------------------------------
234 func (e2termConn *testingE2termControl) handle_e2term_subs_req(t *testing.T) (*e2ap.E2APSubscriptionRequest, *xapp.RMRParams) {
235 xapp.Logger.Info("handle_e2term_subs_req")
236 e2SubsReq := e2asnpacker.NewPackerSubscriptionRequest()
238 //---------------------------------
239 // e2term activity: Recv Subs Req
240 //---------------------------------
242 case msg := <-e2termConn.rmrConChan:
243 if msg.Mtype != xapp.RICMessageTypes["RIC_SUB_REQ"] {
244 testError(t, "(%s) Received wrong mtype expected %s got %s, error", e2termConn.desc, "RIC_SUB_REQ", xapp.RicMessageTypeToName[msg.Mtype])
246 xapp.Logger.Info("(%s) Recv Subs Req", e2termConn.desc)
247 packedData := &packer.PackedData{}
248 packedData.Buf = msg.Payload
249 unpackerr := e2SubsReq.UnPack(packedData)
250 if unpackerr != nil {
251 testError(t, "(%s) RIC_SUB_REQ unpack failed err: %s", e2termConn.desc, unpackerr.Error())
253 geterr, req := e2SubsReq.Get()
255 testError(t, "(%s) RIC_SUB_REQ get failed err: %s", e2termConn.desc, geterr.Error())
259 case <-time.After(15 * time.Second):
260 testError(t, "(%s) Not Received RIC_SUB_REQ within 15 secs", e2termConn.desc)
265 func (e2termConn *testingE2termControl) handle_e2term_subs_resp(t *testing.T, req *e2ap.E2APSubscriptionRequest, msg *xapp.RMRParams) {
266 xapp.Logger.Info("handle_e2term_subs_resp")
267 e2SubsResp := e2asnpacker.NewPackerSubscriptionResponse()
269 //---------------------------------
270 // e2term activity: Send Subs Resp
271 //---------------------------------
272 xapp.Logger.Info("(%s) Send Subs Resp", e2termConn.desc)
274 resp := &e2ap.E2APSubscriptionResponse{}
276 resp.RequestId.Id = req.RequestId.Id
277 resp.RequestId.Seq = req.RequestId.Seq
278 resp.FunctionId = req.FunctionId
280 resp.ActionAdmittedList.Items = make([]e2ap.ActionAdmittedItem, len(req.ActionSetups))
281 for index := int(0); index < len(req.ActionSetups); index++ {
282 resp.ActionAdmittedList.Items[index].ActionId = req.ActionSetups[index].ActionId
285 for index := uint64(0); index < 1; index++ {
286 item := e2ap.ActionNotAdmittedItem{}
287 item.ActionId = index
288 item.Cause.Content = 1
289 item.Cause.CauseVal = 1
290 resp.ActionNotAdmittedList.Items = append(resp.ActionNotAdmittedList.Items, item)
294 xapp.Logger.Debug("%s", e2SubsResp.String())
295 packerr, packedMsg := e2SubsResp.Pack(nil)
297 testError(t, "(%s) pack NOK %s", e2termConn.desc, packerr.Error())
300 params := &xapp.RMRParams{}
301 params.Mtype = xapp.RIC_SUB_RESP
302 params.SubId = msg.SubId
303 params.Payload = packedMsg.Buf
304 params.Meid = msg.Meid
308 snderr := e2termConn.RmrSend(params)
310 testError(t, "(%s) RMR SEND FAILED: %s", e2termConn.desc, snderr.Error())
314 //-----------------------------------------------------------------------------
316 //-----------------------------------------------------------------------------
317 func (e2termConn *testingE2termControl) handle_e2term_subs_del_req(t *testing.T) (*e2ap.E2APSubscriptionDeleteRequest, *xapp.RMRParams) {
318 xapp.Logger.Info("handle_e2term_subs_del_req")
319 e2SubsDelReq := e2asnpacker.NewPackerSubscriptionDeleteRequest()
321 //---------------------------------
322 // e2term activity: Recv Subs Del Req
323 //---------------------------------
325 case msg := <-e2termConn.rmrConChan:
326 if msg.Mtype != xapp.RICMessageTypes["RIC_SUB_DEL_REQ"] {
327 testError(t, "(%s) Received wrong mtype expected %s got %s, error", e2termConn.desc, "RIC_SUB_DEL_REQ", xapp.RicMessageTypeToName[msg.Mtype])
329 xapp.Logger.Info("(%s) Recv Subs Del Req", e2termConn.desc)
331 packedData := &packer.PackedData{}
332 packedData.Buf = msg.Payload
333 unpackerr := e2SubsDelReq.UnPack(packedData)
334 if unpackerr != nil {
335 testError(t, "(%s) RIC_SUB_DEL_REQ unpack failed err: %s", e2termConn.desc, unpackerr.Error())
337 geterr, req := e2SubsDelReq.Get()
339 testError(t, "(%s) RIC_SUB_DEL_REQ get failed err: %s", e2termConn.desc, geterr.Error())
343 case <-time.After(15 * time.Second):
344 testError(t, "(%s) Not Received RIC_SUB_DEL_REQ within 15 secs", e2termConn.desc)
349 func handle_e2term_recv_empty() bool {
350 if len(e2termConn.rmrConChan) > 0 {
356 func (e2termConn *testingE2termControl) handle_e2term_subs_del_resp(t *testing.T, req *e2ap.E2APSubscriptionDeleteRequest, msg *xapp.RMRParams) {
357 xapp.Logger.Info("handle_e2term_subs_del_resp")
358 e2SubsDelResp := e2asnpacker.NewPackerSubscriptionDeleteResponse()
360 //---------------------------------
361 // e2term activity: Send Subs Del Resp
362 //---------------------------------
363 xapp.Logger.Info("(%s) Send Subs Del Resp", e2termConn.desc)
365 resp := &e2ap.E2APSubscriptionDeleteResponse{}
366 resp.RequestId.Id = req.RequestId.Id
367 resp.RequestId.Seq = req.RequestId.Seq
368 resp.FunctionId = req.FunctionId
370 e2SubsDelResp.Set(resp)
371 xapp.Logger.Debug("%s", e2SubsDelResp.String())
372 packerr, packedMsg := e2SubsDelResp.Pack(nil)
374 testError(t, "(%s) pack NOK %s", e2termConn.desc, packerr.Error())
377 params := &xapp.RMRParams{}
378 params.Mtype = xapp.RIC_SUB_DEL_RESP
379 params.SubId = msg.SubId
380 params.Payload = packedMsg.Buf
381 params.Meid = msg.Meid
385 snderr := e2termConn.RmrSend(params)
387 testError(t, "(%s) RMR SEND FAILED: %s", e2termConn.desc, snderr.Error())
392 //-----------------------------------------------------------------------------
394 //-----------------------------------------------------------------------------
395 func (mc *testingMainControl) wait_subs_clean(t *testing.T, e2SubsId int, secs int) bool {
397 for ; i <= secs*2; i++ {
398 if mc.c.registry.GetSubscription(uint16(e2SubsId)) == nil {
401 time.Sleep(500 * time.Millisecond)
403 testError(t, "(general) no clean within %d secs", secs)
407 func (mc *testingMainControl) wait_subs_trans_clean(t *testing.T, e2SubsId int, secs int) bool {
409 for ; i <= secs*2; i++ {
410 subs := mc.c.registry.GetSubscription(uint16(e2SubsId))
414 trans := subs.GetTransaction()
418 time.Sleep(500 * time.Millisecond)
420 testError(t, "(general) no clean within %d secs", secs)
424 func (mc *testingMainControl) get_seqcnt(t *testing.T) uint16 {
425 mc.c.registry.mutex.Lock()
426 defer mc.c.registry.mutex.Unlock()
427 return mc.c.registry.counter
430 func (mc *testingMainControl) wait_seqcnt_change(t *testing.T, orig uint16, secs int) (uint16, bool) {
432 for ; i <= secs*2; i++ {
433 mc.c.registry.mutex.Lock()
434 curr := mc.c.registry.counter
435 mc.c.registry.mutex.Unlock()
439 time.Sleep(500 * time.Millisecond)
441 testError(t, "(general) no seq change within %d secs", secs)
445 func (mc *testingMainControl) get_msgcounter(t *testing.T) uint64 {
446 return mc.c.msgCounter
449 func (mc *testingMainControl) wait_msgcounter_change(t *testing.T, orig uint64, secs int) (uint64, bool) {
451 for ; i <= secs*2; i++ {
452 curr := mc.c.msgCounter
456 time.Sleep(500 * time.Millisecond)
458 testError(t, "(general) no msg counter change within %d secs", secs)
462 //-----------------------------------------------------------------------------
463 // TestSubReqAndSubDelOk
466 // +-------+ +---------+ +---------+
467 // | xapp | | submgr | | e2term |
468 // +-------+ +---------+ +---------+
471 // |------------->| |
474 // | |------------->|
477 // | |<-------------|
480 // |<-------------| |
484 // |------------->| |
487 // | |------------->|
490 // | |<-------------|
493 // |<-------------| |
495 //-----------------------------------------------------------------------------
496 func TestSubReqAndSubDelOk(t *testing.T) {
497 xapp.Logger.Info("TestSubReqAndSubDelOk")
499 cretrans := xappConn1.handle_xapp_subs_req(t, nil)
500 crereq, cremsg := e2termConn.handle_e2term_subs_req(t)
501 e2termConn.handle_e2term_subs_resp(t, crereq, cremsg)
502 e2SubsId := xappConn1.handle_xapp_subs_resp(t, cretrans)
504 deltrans := xappConn1.handle_xapp_subs_del_req(t, nil, e2SubsId)
505 delreq, delmsg := e2termConn.handle_e2term_subs_del_req(t)
506 e2termConn.handle_e2term_subs_del_resp(t, delreq, delmsg)
507 xappConn1.handle_xapp_subs_del_resp(t, deltrans)
509 //Wait that subs is cleaned
510 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
513 //-----------------------------------------------------------------------------
514 // TestSubReqRetransmission
517 // +-------+ +---------+ +---------+
518 // | xapp | | submgr | | e2term |
519 // +-------+ +---------+ +---------+
522 // |------------->| |
525 // | |------------->|
529 // |------------->| |
532 // | |<-------------|
535 // |<-------------| |
540 //-----------------------------------------------------------------------------
541 func TestSubReqRetransmission(t *testing.T) {
542 xapp.Logger.Info("TestSubReqRetransmission")
545 cretrans := xappConn1.handle_xapp_subs_req(t, nil)
546 crereq, cremsg := e2termConn.handle_e2term_subs_req(t)
548 seqBef := mainCtrl.get_msgcounter(t)
549 xappConn1.handle_xapp_subs_req(t, cretrans) //Retransmitted SubReq
550 mainCtrl.wait_msgcounter_change(t, seqBef, 10)
552 e2termConn.handle_e2term_subs_resp(t, crereq, cremsg)
553 e2SubsId := xappConn1.handle_xapp_subs_resp(t, cretrans)
556 deltrans := xappConn1.handle_xapp_subs_del_req(t, nil, e2SubsId)
557 delreq, delmsg := e2termConn.handle_e2term_subs_del_req(t)
558 e2termConn.handle_e2term_subs_del_resp(t, delreq, delmsg)
559 xappConn1.handle_xapp_subs_del_resp(t, deltrans)
561 //Wait that subs is cleaned
562 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
565 //-----------------------------------------------------------------------------
566 // TestSubDelReqRetransmission
569 // +-------+ +---------+ +---------+
570 // | xapp | | submgr | | e2term |
571 // +-------+ +---------+ +---------+
577 // |------------->| |
580 // | |------------->|
585 // |------------->| |
588 // | |<-------------|
591 // |<-------------| |
593 //-----------------------------------------------------------------------------
594 func TestSubDelReqRetransmission(t *testing.T) {
595 xapp.Logger.Info("TestSubDelReqRetransmission")
598 cretrans := xappConn1.handle_xapp_subs_req(t, nil)
599 crereq, cremsg := e2termConn.handle_e2term_subs_req(t)
600 e2termConn.handle_e2term_subs_resp(t, crereq, cremsg)
601 e2SubsId := xappConn1.handle_xapp_subs_resp(t, cretrans)
604 deltrans := xappConn1.handle_xapp_subs_del_req(t, nil, e2SubsId)
605 delreq, delmsg := e2termConn.handle_e2term_subs_del_req(t)
607 seqBef := mainCtrl.get_msgcounter(t)
608 xappConn1.handle_xapp_subs_del_req(t, deltrans, e2SubsId) //Retransmitted SubDelReq
609 mainCtrl.wait_msgcounter_change(t, seqBef, 10)
611 e2termConn.handle_e2term_subs_del_resp(t, delreq, delmsg)
612 xappConn1.handle_xapp_subs_del_resp(t, deltrans)
614 //Wait that subs is cleaned
615 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
618 //-----------------------------------------------------------------------------
619 // TestSubDelReqCollision
622 // +-------+ +---------+ +---------+
623 // | xapp | | submgr | | e2term |
624 // +-------+ +---------+ +---------+
630 // |------------->| |
633 // | |------------->|
638 // |------------->| |
641 // | |<-------------|
644 // |<-------------| |
646 //-----------------------------------------------------------------------------
647 func TestSubDelReqCollision(t *testing.T) {
648 xapp.Logger.Info("TestSubDelReqCollision")
651 cretrans := xappConn1.handle_xapp_subs_req(t, nil)
652 crereq, cremsg := e2termConn.handle_e2term_subs_req(t)
653 e2termConn.handle_e2term_subs_resp(t, crereq, cremsg)
654 e2SubsId := xappConn1.handle_xapp_subs_resp(t, cretrans)
657 deltrans := xappConn1.handle_xapp_subs_del_req(t, nil, e2SubsId)
658 delreq, delmsg := e2termConn.handle_e2term_subs_del_req(t)
660 seqBef := mainCtrl.get_msgcounter(t)
661 deltranscol := xappConn1.newXappTransaction(nil, "RAN_NAME_1")
662 xappConn1.handle_xapp_subs_del_req(t, deltranscol, e2SubsId) //Colliding SubDelReq
663 mainCtrl.wait_msgcounter_change(t, seqBef, 10)
665 e2termConn.handle_e2term_subs_del_resp(t, delreq, delmsg)
666 xappConn1.handle_xapp_subs_del_resp(t, deltrans)
668 //Wait that subs is cleaned
669 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
672 //-----------------------------------------------------------------------------
673 // TestSubReqAndSubDelOkTwoParallel
676 // +-------+ +---------+ +---------+
677 // | xapp | | submgr | | e2term |
678 // +-------+ +---------+ +---------+
683 // |------------->| |
686 // | |------------->|
689 // |------------->| |
692 // | |------------->|
695 // | |<-------------|
697 // | |<-------------|
700 // |<-------------| |
702 // |<-------------| |
704 // | [SUBS 1 DELETE] |
706 // | [SUBS 2 DELETE] |
709 //-----------------------------------------------------------------------------
710 func TestSubReqAndSubDelOkTwoParallel(t *testing.T) {
711 xapp.Logger.Info("TestSubReqAndSubDelOkTwoParallel")
714 cretrans1 := xappConn1.handle_xapp_subs_req(t, nil)
715 crereq1, cremsg1 := e2termConn.handle_e2term_subs_req(t)
718 cretrans2 := xappConn2.handle_xapp_subs_req(t, nil)
719 crereq2, cremsg2 := e2termConn.handle_e2term_subs_req(t)
722 e2termConn.handle_e2term_subs_resp(t, crereq1, cremsg1)
723 e2SubsId1 := xappConn1.handle_xapp_subs_resp(t, cretrans1)
726 e2termConn.handle_e2term_subs_resp(t, crereq2, cremsg2)
727 e2SubsId2 := xappConn2.handle_xapp_subs_resp(t, cretrans2)
730 deltrans1 := xappConn1.handle_xapp_subs_del_req(t, nil, e2SubsId1)
731 delreq1, delmsg1 := e2termConn.handle_e2term_subs_del_req(t)
732 e2termConn.handle_e2term_subs_del_resp(t, delreq1, delmsg1)
733 xappConn1.handle_xapp_subs_del_resp(t, deltrans1)
734 //Wait that subs is cleaned
735 mainCtrl.wait_subs_clean(t, e2SubsId1, 10)
738 deltrans2 := xappConn2.handle_xapp_subs_del_req(t, nil, e2SubsId2)
739 delreq2, delmsg2 := e2termConn.handle_e2term_subs_del_req(t)
740 e2termConn.handle_e2term_subs_del_resp(t, delreq2, delmsg2)
741 xappConn2.handle_xapp_subs_del_resp(t, deltrans2)
742 //Wait that subs is cleaned
743 mainCtrl.wait_subs_clean(t, e2SubsId2, 10)
746 //-----------------------------------------------------------------------------
747 // TestSameSubsDiffRan
748 // Same subscription to different RANs
751 // +-------+ +---------+ +---------+
752 // | xapp | | submgr | | e2term |
753 // +-------+ +---------+ +---------+
758 // |------------->| |
761 // | |------------->|
764 // | |<-------------|
767 // |<-------------| |
770 // |------------->| |
773 // | |------------->|
776 // | |<-------------|
779 // |<-------------| |
781 // | [SUBS r1 DELETE] |
783 // | [SUBS r2 DELETE] |
786 //-----------------------------------------------------------------------------
787 func TestSameSubsDiffRan(t *testing.T) {
788 xapp.Logger.Info("TestSameSubsDiffRan")
791 cretrans1 := xappConn1.newXappTransaction(nil, "RAN_NAME_1")
792 xappConn1.handle_xapp_subs_req(t, cretrans1)
793 crereq1, cremsg1 := e2termConn.handle_e2term_subs_req(t)
794 e2termConn.handle_e2term_subs_resp(t, crereq1, cremsg1)
795 e2SubsId1 := xappConn1.handle_xapp_subs_resp(t, cretrans1)
798 cretrans2 := xappConn1.newXappTransaction(nil, "RAN_NAME_2")
799 xappConn1.handle_xapp_subs_req(t, cretrans2)
800 crereq2, cremsg2 := e2termConn.handle_e2term_subs_req(t)
801 e2termConn.handle_e2term_subs_resp(t, crereq2, cremsg2)
802 e2SubsId2 := xappConn1.handle_xapp_subs_resp(t, cretrans2)
805 deltrans1 := xappConn1.newXappTransaction(nil, "RAN_NAME_1")
806 xappConn1.handle_xapp_subs_del_req(t, deltrans1, e2SubsId1)
807 delreq1, delmsg1 := e2termConn.handle_e2term_subs_del_req(t)
808 e2termConn.handle_e2term_subs_del_resp(t, delreq1, delmsg1)
809 xappConn1.handle_xapp_subs_del_resp(t, deltrans1)
810 //Wait that subs is cleaned
811 mainCtrl.wait_subs_clean(t, e2SubsId1, 10)
814 deltrans2 := xappConn1.newXappTransaction(nil, "RAN_NAME_2")
815 xappConn1.handle_xapp_subs_del_req(t, deltrans2, e2SubsId2)
816 delreq2, delmsg2 := e2termConn.handle_e2term_subs_del_req(t)
817 e2termConn.handle_e2term_subs_del_resp(t, delreq2, delmsg2)
818 xappConn1.handle_xapp_subs_del_resp(t, deltrans2)
819 //Wait that subs is cleaned
820 mainCtrl.wait_subs_clean(t, e2SubsId2, 10)
823 //-----------------------------------------------------------------------------
824 // TestSubReqRetryInSubmgr
827 // +-------+ +---------+ +---------+
828 // | xapp | | submgr | | e2term |
829 // +-------+ +---------+ +---------+
832 // |------------->| |
835 // | |------------->|
839 // | |------------->|
842 // | |<-------------|
845 // |<-------------| |
850 //-----------------------------------------------------------------------------
852 func TestSubReqRetryInSubmgr(t *testing.T) {
854 xapp.Logger.Info("TestSubReqRetryInSubmgr start")
856 // Xapp: Send SubsReq
857 cretrans := xappConn1.handle_xapp_subs_req(t, nil)
859 // E2t: Receive 1st SubsReq
860 e2termConn.handle_e2term_subs_req(t)
862 // E2t: Receive 2nd SubsReq and send SubsResp
863 crereq, cremsg := e2termConn.handle_e2term_subs_req(t)
864 e2termConn.handle_e2term_subs_resp(t, crereq, cremsg)
866 // Xapp: Receive SubsResp
867 e2SubsId := xappConn1.handle_xapp_subs_resp(t, cretrans)
869 deltrans := xappConn1.handle_xapp_subs_del_req(t, nil, e2SubsId)
870 delreq, delmsg := e2termConn.handle_e2term_subs_del_req(t)
871 e2termConn.handle_e2term_subs_del_resp(t, delreq, delmsg)
872 xappConn1.handle_xapp_subs_del_resp(t, deltrans)
874 // Wait that subs is cleaned
875 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
878 //-----------------------------------------------------------------------------
879 // TestSubReqTwoRetriesNoRespSubDelRespInSubmgr
882 // +-------+ +---------+ +---------+
883 // | xapp | | submgr | | e2term |
884 // +-------+ +---------+ +---------+
887 // |------------->| |
890 // | |------------->|
894 // | |------------->|
897 // | |------------->|
901 // | |------------->|
905 // | |<-------------|
908 //-----------------------------------------------------------------------------
910 func TestSubReqRetryNoRespSubDelRespInSubmgr(t *testing.T) {
912 xapp.Logger.Info("TestSubReqTwoRetriesNoRespSubDelRespInSubmgr start")
914 // Xapp: Send SubsReq
915 xappConn1.handle_xapp_subs_req(t, nil)
917 // E2t: Receive 1st SubsReq
918 e2termConn.handle_e2term_subs_req(t)
920 // E2t: Receive 2nd SubsReq
921 e2termConn.handle_e2term_subs_req(t)
923 // E2t: Send receive SubsReq and send SubsResp
924 delreq, delmsg := e2termConn.handle_e2term_subs_del_req(t)
925 e2termConn.handle_e2term_subs_del_resp(t, delreq, delmsg)
927 // Wait that subs is cleaned
928 mainCtrl.wait_subs_clean(t, int(delreq.RequestId.Seq), 10)
931 //-----------------------------------------------------------------------------
932 // TestSubReqTwoRetriesNoRespAtAllInSubmgr
935 // +-------+ +---------+ +---------+
936 // | xapp | | submgr | | e2term |
937 // +-------+ +---------+ +---------+
940 // |------------->| |
943 // | |------------->|
947 // | |------------->|
950 // | |------------->|
954 // | |------------->|
958 //-----------------------------------------------------------------------------
960 func TestSubReqTwoRetriesNoRespAtAllInSubmgr(t *testing.T) {
962 xapp.Logger.Info("TestSubReqTwoRetriesNoRespAtAllInSubmgr start")
964 // Xapp: Send SubsReq
965 xappConn1.handle_xapp_subs_req(t, nil)
967 // E2t: Receive 1st SubsReq
968 e2termConn.handle_e2term_subs_req(t)
970 // E2t: Receive 2nd SubsReq
971 e2termConn.handle_e2term_subs_req(t)
973 // E2t: Receive 1st SubsDelReq
974 e2termConn.handle_e2term_subs_del_req(t)
976 // E2t: Receive 2nd SubsDelReq
977 delreq, _ := e2termConn.handle_e2term_subs_del_req(t)
979 // Wait that subs is cleaned
980 mainCtrl.wait_subs_clean(t, int(delreq.RequestId.Seq), 10)
983 //-----------------------------------------------------------------------------
984 // TestSubDelReqRetryInSubmgr
987 // +-------+ +---------+ +---------+
988 // | xapp | | submgr | | e2term |
989 // +-------+ +---------+ +---------+
995 // |------------->| |
998 // | |------------->|
1001 // | |------------->|
1004 // | |<-------------|
1007 // |<-------------| |
1009 //-----------------------------------------------------------------------------
1011 func TestSubDelReqRetryInSubmgr(t *testing.T) {
1013 xapp.Logger.Info("TestSubDelReqRetryInSubmgr start")
1016 cretrans := xappConn1.handle_xapp_subs_req(t, nil)
1017 crereq, cremsg := e2termConn.handle_e2term_subs_req(t)
1018 e2termConn.handle_e2term_subs_resp(t, crereq, cremsg)
1019 e2SubsId := xappConn1.handle_xapp_subs_resp(t, cretrans)
1022 // Xapp: Send SubsDelReq
1023 deltrans := xappConn1.handle_xapp_subs_del_req(t, nil, e2SubsId)
1025 // E2t: Receive 1st SubsDelReq
1026 e2termConn.handle_e2term_subs_del_req(t)
1028 // E2t: Receive 2nd SubsDelReq and send SubsDelResp
1029 delreq, delmsg := e2termConn.handle_e2term_subs_del_req(t)
1030 e2termConn.handle_e2term_subs_del_resp(t, delreq, delmsg)
1032 // Xapp: Receive SubsDelReq
1033 xappConn1.handle_xapp_subs_del_resp(t, deltrans)
1035 // Wait that subs is cleaned
1036 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
1039 //-----------------------------------------------------------------------------
1040 // TestSubDelReqTwoRetriesNoRespInSubmgr
1043 // +-------+ +---------+ +---------+
1044 // | xapp | | submgr | | e2term |
1045 // +-------+ +---------+ +---------+
1047 // | [SUBS CREATE] |
1051 // |------------->| |
1054 // | |------------->|
1057 // | |------------->|
1061 // |<-------------| |
1063 //-----------------------------------------------------------------------------
1065 func TestSubDelReqTwoRetriesNoRespInSubmgr(t *testing.T) {
1067 xapp.Logger.Info("TestSubDelReTwoRetriesNoRespInSubmgr start")
1070 cretrans := xappConn1.handle_xapp_subs_req(t, nil)
1071 crereq, cremsg := e2termConn.handle_e2term_subs_req(t)
1072 e2termConn.handle_e2term_subs_resp(t, crereq, cremsg)
1073 e2SubsId := xappConn1.handle_xapp_subs_resp(t, cretrans)
1076 // Xapp: Send SubsDelReq
1077 deltrans := xappConn1.handle_xapp_subs_del_req(t, nil, e2SubsId)
1079 // E2t: Receive 1st SubsDelReq
1080 e2termConn.handle_e2term_subs_del_req(t)
1082 // E2t: Receive 2nd SubsDelReq
1083 e2termConn.handle_e2term_subs_del_req(t)
1085 // Xapp: Receive SubsDelReq
1086 xappConn1.handle_xapp_subs_del_resp(t, deltrans)
1088 // Wait that subs is cleaned
1089 mainCtrl.wait_subs_clean(t, e2SubsId, 10)