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/xapp-frame/pkg/xapp"
27 //-----------------------------------------------------------------------------
28 // TestSubReqAndRouteNok
31 // +-------+ +---------+ +---------+
32 // | xapp | | submgr | | rtmgr |
33 // +-------+ +---------+ +---------+
45 // | [SUBS INT DELETE] |
48 //-----------------------------------------------------------------------------
50 func TestSubReqAndRouteNok(t *testing.T) {
51 xapp.Logger.Info("TestSubReqAndRouteNok")
53 waiter := rtmgrHttp.AllocNextEvent(false)
54 newSubsId := mainCtrl.get_subid(t)
55 xappConn1.handle_xapp_subs_req(t, nil)
58 //Wait that subs is cleaned
59 mainCtrl.wait_subs_clean(t, int(newSubsId), 10)
61 xappConn1.TestMsgCnt(t)
62 xappConn2.TestMsgCnt(t)
63 e2termConn.TestMsgCnt(t)
66 //-----------------------------------------------------------------------------
67 // TestSubReqAndSubDelOk
70 // +-------+ +---------+ +---------+
71 // | xapp | | submgr | | e2term |
72 // +-------+ +---------+ +---------+
99 //-----------------------------------------------------------------------------
100 func TestSubReqAndSubDelOk(t *testing.T) {
101 xapp.Logger.Info("TestSubReqAndSubDelOk")
103 waiter := rtmgrHttp.AllocNextEvent(true)
104 cretrans := xappConn1.handle_xapp_subs_req(t, nil)
107 crereq, cremsg := e2termConn.handle_e2term_subs_req(t)
108 e2termConn.handle_e2term_subs_resp(t, crereq, cremsg)
109 e2SubsId := xappConn1.handle_xapp_subs_resp(t, cretrans)
110 deltrans := xappConn1.handle_xapp_subs_del_req(t, nil, e2SubsId)
111 delreq, delmsg := e2termConn.handle_e2term_subs_del_req(t)
113 waiter = rtmgrHttp.AllocNextEvent(true)
114 e2termConn.handle_e2term_subs_del_resp(t, delreq, delmsg)
115 xappConn1.handle_xapp_subs_del_resp(t, deltrans)
118 //Wait that subs is cleaned
119 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
121 xappConn1.TestMsgCnt(t)
122 xappConn2.TestMsgCnt(t)
123 e2termConn.TestMsgCnt(t)
126 //-----------------------------------------------------------------------------
127 // TestSubReqRetransmission
130 // +-------+ +---------+ +---------+
131 // | xapp | | submgr | | e2term |
132 // +-------+ +---------+ +---------+
135 // |------------->| |
138 // | |------------->|
142 // |------------->| |
145 // | |<-------------|
148 // |<-------------| |
153 //-----------------------------------------------------------------------------
154 func TestSubReqRetransmission(t *testing.T) {
155 xapp.Logger.Info("TestSubReqRetransmission")
158 cretrans := xappConn1.handle_xapp_subs_req(t, nil)
159 crereq, cremsg := e2termConn.handle_e2term_subs_req(t)
161 seqBef := mainCtrl.get_msgcounter(t)
162 xappConn1.handle_xapp_subs_req(t, cretrans) //Retransmitted SubReq
163 mainCtrl.wait_msgcounter_change(t, seqBef, 10)
165 e2termConn.handle_e2term_subs_resp(t, crereq, cremsg)
166 e2SubsId := xappConn1.handle_xapp_subs_resp(t, cretrans)
169 deltrans := xappConn1.handle_xapp_subs_del_req(t, nil, e2SubsId)
170 delreq, delmsg := e2termConn.handle_e2term_subs_del_req(t)
171 e2termConn.handle_e2term_subs_del_resp(t, delreq, delmsg)
172 xappConn1.handle_xapp_subs_del_resp(t, deltrans)
174 //Wait that subs is cleaned
175 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
177 xappConn1.TestMsgCnt(t)
178 xappConn2.TestMsgCnt(t)
179 e2termConn.TestMsgCnt(t)
182 //-----------------------------------------------------------------------------
183 // TestSubDelReqRetransmission
186 // +-------+ +---------+ +---------+
187 // | xapp | | submgr | | e2term |
188 // +-------+ +---------+ +---------+
194 // |------------->| |
197 // | |------------->|
202 // |------------->| |
205 // | |<-------------|
208 // |<-------------| |
210 //-----------------------------------------------------------------------------
211 func TestSubDelReqRetransmission(t *testing.T) {
212 xapp.Logger.Info("TestSubDelReqRetransmission")
215 cretrans := xappConn1.handle_xapp_subs_req(t, nil)
216 crereq, cremsg := e2termConn.handle_e2term_subs_req(t)
217 e2termConn.handle_e2term_subs_resp(t, crereq, cremsg)
218 e2SubsId := xappConn1.handle_xapp_subs_resp(t, cretrans)
221 deltrans := xappConn1.handle_xapp_subs_del_req(t, nil, e2SubsId)
222 delreq, delmsg := e2termConn.handle_e2term_subs_del_req(t)
224 seqBef := mainCtrl.get_msgcounter(t)
225 xappConn1.handle_xapp_subs_del_req(t, deltrans, e2SubsId) //Retransmitted SubDelReq
226 mainCtrl.wait_msgcounter_change(t, seqBef, 10)
228 e2termConn.handle_e2term_subs_del_resp(t, delreq, delmsg)
229 xappConn1.handle_xapp_subs_del_resp(t, deltrans)
231 //Wait that subs is cleaned
232 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
234 xappConn1.TestMsgCnt(t)
235 xappConn2.TestMsgCnt(t)
236 e2termConn.TestMsgCnt(t)
239 //-----------------------------------------------------------------------------
240 // TestSubDelReqCollision
243 // +-------+ +---------+ +---------+
244 // | xapp | | submgr | | e2term |
245 // +-------+ +---------+ +---------+
251 // |------------->| |
254 // | |------------->|
259 // |------------->| |
262 // | |<-------------|
265 // |<-------------| |
267 //-----------------------------------------------------------------------------
268 func TestSubDelReqCollision(t *testing.T) {
269 xapp.Logger.Info("TestSubDelReqCollision")
272 cretrans := xappConn1.handle_xapp_subs_req(t, nil)
273 crereq, cremsg := e2termConn.handle_e2term_subs_req(t)
274 e2termConn.handle_e2term_subs_resp(t, crereq, cremsg)
275 e2SubsId := xappConn1.handle_xapp_subs_resp(t, cretrans)
278 deltrans := xappConn1.handle_xapp_subs_del_req(t, nil, e2SubsId)
279 delreq, delmsg := e2termConn.handle_e2term_subs_del_req(t)
281 seqBef := mainCtrl.get_msgcounter(t)
282 deltranscol := xappConn1.newXappTransaction(nil, "RAN_NAME_1")
283 xappConn1.handle_xapp_subs_del_req(t, deltranscol, e2SubsId) //Colliding SubDelReq
284 mainCtrl.wait_msgcounter_change(t, seqBef, 10)
286 e2termConn.handle_e2term_subs_del_resp(t, delreq, delmsg)
287 xappConn1.handle_xapp_subs_del_resp(t, deltrans)
289 //Wait that subs is cleaned
290 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
292 xappConn1.TestMsgCnt(t)
293 xappConn2.TestMsgCnt(t)
294 e2termConn.TestMsgCnt(t)
297 //-----------------------------------------------------------------------------
298 // TestSubReqAndSubDelOkTwoParallel
301 // +-------+ +---------+ +---------+
302 // | xapp | | submgr | | e2term |
303 // +-------+ +---------+ +---------+
308 // |------------->| |
311 // | |------------->|
314 // |------------->| |
317 // | |------------->|
320 // | |<-------------|
322 // | |<-------------|
325 // |<-------------| |
327 // |<-------------| |
329 // | [SUBS 1 DELETE] |
331 // | [SUBS 2 DELETE] |
334 //-----------------------------------------------------------------------------
335 func TestSubReqAndSubDelOkTwoParallel(t *testing.T) {
336 xapp.Logger.Info("TestSubReqAndSubDelOkTwoParallel")
339 cretrans1 := xappConn1.handle_xapp_subs_req(t, nil)
340 crereq1, cremsg1 := e2termConn.handle_e2term_subs_req(t)
343 cretrans2 := xappConn2.handle_xapp_subs_req(t, nil)
344 crereq2, cremsg2 := e2termConn.handle_e2term_subs_req(t)
347 e2termConn.handle_e2term_subs_resp(t, crereq1, cremsg1)
348 e2SubsId1 := xappConn1.handle_xapp_subs_resp(t, cretrans1)
351 e2termConn.handle_e2term_subs_resp(t, crereq2, cremsg2)
352 e2SubsId2 := xappConn2.handle_xapp_subs_resp(t, cretrans2)
355 deltrans1 := xappConn1.handle_xapp_subs_del_req(t, nil, e2SubsId1)
356 delreq1, delmsg1 := e2termConn.handle_e2term_subs_del_req(t)
357 e2termConn.handle_e2term_subs_del_resp(t, delreq1, delmsg1)
358 xappConn1.handle_xapp_subs_del_resp(t, deltrans1)
359 //Wait that subs is cleaned
360 mainCtrl.wait_subs_clean(t, e2SubsId1, 10)
363 deltrans2 := xappConn2.handle_xapp_subs_del_req(t, nil, e2SubsId2)
364 delreq2, delmsg2 := e2termConn.handle_e2term_subs_del_req(t)
365 e2termConn.handle_e2term_subs_del_resp(t, delreq2, delmsg2)
366 xappConn2.handle_xapp_subs_del_resp(t, deltrans2)
367 //Wait that subs is cleaned
368 mainCtrl.wait_subs_clean(t, e2SubsId2, 10)
370 xappConn1.TestMsgCnt(t)
371 xappConn2.TestMsgCnt(t)
372 e2termConn.TestMsgCnt(t)
375 //-----------------------------------------------------------------------------
376 // TestSameSubsDiffRan
377 // Same subscription to different RANs
380 // +-------+ +---------+ +---------+
381 // | xapp | | submgr | | e2term |
382 // +-------+ +---------+ +---------+
387 // |------------->| |
390 // | |------------->|
393 // | |<-------------|
396 // |<-------------| |
399 // |------------->| |
402 // | |------------->|
405 // | |<-------------|
408 // |<-------------| |
410 // | [SUBS r1 DELETE] |
412 // | [SUBS r2 DELETE] |
415 //-----------------------------------------------------------------------------
416 func TestSameSubsDiffRan(t *testing.T) {
417 xapp.Logger.Info("TestSameSubsDiffRan")
420 cretrans1 := xappConn1.newXappTransaction(nil, "RAN_NAME_1")
421 xappConn1.handle_xapp_subs_req(t, cretrans1)
422 crereq1, cremsg1 := e2termConn.handle_e2term_subs_req(t)
423 e2termConn.handle_e2term_subs_resp(t, crereq1, cremsg1)
424 e2SubsId1 := xappConn1.handle_xapp_subs_resp(t, cretrans1)
427 cretrans2 := xappConn1.newXappTransaction(nil, "RAN_NAME_2")
428 xappConn1.handle_xapp_subs_req(t, cretrans2)
429 crereq2, cremsg2 := e2termConn.handle_e2term_subs_req(t)
430 e2termConn.handle_e2term_subs_resp(t, crereq2, cremsg2)
431 e2SubsId2 := xappConn1.handle_xapp_subs_resp(t, cretrans2)
434 deltrans1 := xappConn1.newXappTransaction(nil, "RAN_NAME_1")
435 xappConn1.handle_xapp_subs_del_req(t, deltrans1, e2SubsId1)
436 delreq1, delmsg1 := e2termConn.handle_e2term_subs_del_req(t)
437 e2termConn.handle_e2term_subs_del_resp(t, delreq1, delmsg1)
438 xappConn1.handle_xapp_subs_del_resp(t, deltrans1)
439 //Wait that subs is cleaned
440 mainCtrl.wait_subs_clean(t, e2SubsId1, 10)
443 deltrans2 := xappConn1.newXappTransaction(nil, "RAN_NAME_2")
444 xappConn1.handle_xapp_subs_del_req(t, deltrans2, e2SubsId2)
445 delreq2, delmsg2 := e2termConn.handle_e2term_subs_del_req(t)
446 e2termConn.handle_e2term_subs_del_resp(t, delreq2, delmsg2)
447 xappConn1.handle_xapp_subs_del_resp(t, deltrans2)
448 //Wait that subs is cleaned
449 mainCtrl.wait_subs_clean(t, e2SubsId2, 10)
451 xappConn1.TestMsgCnt(t)
452 xappConn2.TestMsgCnt(t)
453 e2termConn.TestMsgCnt(t)
456 //-----------------------------------------------------------------------------
457 // TestSubReqRetryInSubmgr
460 // +-------+ +---------+ +---------+
461 // | xapp | | submgr | | e2term |
462 // +-------+ +---------+ +---------+
465 // |------------->| |
468 // | |------------->|
472 // | |------------->|
475 // | |<-------------|
478 // |<-------------| |
483 //-----------------------------------------------------------------------------
485 func TestSubReqRetryInSubmgr(t *testing.T) {
487 xapp.Logger.Info("TestSubReqRetryInSubmgr start")
489 // Xapp: Send SubsReq
490 cretrans := xappConn1.handle_xapp_subs_req(t, nil)
492 // E2t: Receive 1st SubsReq
493 e2termConn.handle_e2term_subs_req(t)
495 // E2t: Receive 2nd SubsReq and send SubsResp
496 crereq, cremsg := e2termConn.handle_e2term_subs_req(t)
497 e2termConn.handle_e2term_subs_resp(t, crereq, cremsg)
499 // Xapp: Receive SubsResp
500 e2SubsId := xappConn1.handle_xapp_subs_resp(t, cretrans)
502 deltrans := xappConn1.handle_xapp_subs_del_req(t, nil, e2SubsId)
503 delreq, delmsg := e2termConn.handle_e2term_subs_del_req(t)
504 e2termConn.handle_e2term_subs_del_resp(t, delreq, delmsg)
505 xappConn1.handle_xapp_subs_del_resp(t, deltrans)
507 // Wait that subs is cleaned
508 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
510 xappConn1.TestMsgCnt(t)
511 xappConn2.TestMsgCnt(t)
512 e2termConn.TestMsgCnt(t)
515 //-----------------------------------------------------------------------------
516 // TestSubReqTwoRetriesNoRespSubDelRespInSubmgr
519 // +-------+ +---------+ +---------+
520 // | xapp | | submgr | | e2term |
521 // +-------+ +---------+ +---------+
524 // |------------->| |
527 // | |------------->|
531 // | |------------->|
534 // | |------------->|
538 // | |------------->|
542 // | |<-------------|
545 //-----------------------------------------------------------------------------
547 func TestSubReqRetryNoRespSubDelRespInSubmgr(t *testing.T) {
549 xapp.Logger.Info("TestSubReqTwoRetriesNoRespSubDelRespInSubmgr start")
551 // Xapp: Send SubsReq
552 xappConn1.handle_xapp_subs_req(t, nil)
554 // E2t: Receive 1st SubsReq
555 e2termConn.handle_e2term_subs_req(t)
557 // E2t: Receive 2nd SubsReq
558 e2termConn.handle_e2term_subs_req(t)
560 // E2t: Send receive SubsDelReq and send SubsResp
561 delreq, delmsg := e2termConn.handle_e2term_subs_del_req(t)
562 e2termConn.handle_e2term_subs_del_resp(t, delreq, delmsg)
564 // Wait that subs is cleaned
565 mainCtrl.wait_subs_clean(t, int(delreq.RequestId.Seq), 10)
567 xappConn1.TestMsgCnt(t)
568 xappConn2.TestMsgCnt(t)
569 e2termConn.TestMsgCnt(t)
572 //-----------------------------------------------------------------------------
573 // TestSubReqTwoRetriesNoRespAtAllInSubmgr
576 // +-------+ +---------+ +---------+
577 // | xapp | | submgr | | e2term |
578 // +-------+ +---------+ +---------+
581 // |------------->| |
584 // | |------------->|
588 // | |------------->|
591 // | |------------->|
595 // | |------------->|
599 //-----------------------------------------------------------------------------
601 func TestSubReqTwoRetriesNoRespAtAllInSubmgr(t *testing.T) {
603 xapp.Logger.Info("TestSubReqTwoRetriesNoRespAtAllInSubmgr start")
605 // Xapp: Send SubsReq
606 xappConn1.handle_xapp_subs_req(t, nil)
608 // E2t: Receive 1st SubsReq
609 e2termConn.handle_e2term_subs_req(t)
611 // E2t: Receive 2nd SubsReq
612 e2termConn.handle_e2term_subs_req(t)
614 // E2t: Receive 1st SubsDelReq
615 e2termConn.handle_e2term_subs_del_req(t)
617 // E2t: Receive 2nd SubsDelReq
618 delreq, _ := e2termConn.handle_e2term_subs_del_req(t)
620 // Wait that subs is cleaned
621 mainCtrl.wait_subs_clean(t, int(delreq.RequestId.Seq), 15)
623 xappConn1.TestMsgCnt(t)
624 xappConn2.TestMsgCnt(t)
625 e2termConn.TestMsgCnt(t)
628 //-----------------------------------------------------------------------------
629 // TestSubReqSubFailRespInSubmgr
632 // +-------+ +---------+ +---------+
633 // | xapp | | submgr | | e2term |
634 // +-------+ +---------+ +---------+
637 // |------------->| |
640 // | |------------->|
643 // | |<-------------|
646 // |<-------------| |
649 //-----------------------------------------------------------------------------
651 func TestSubReqSubFailRespInSubmgr(t *testing.T) {
653 xapp.Logger.Info("TestSubReqSubFailRespInSubmgr start")
655 // Xapp: Send SubsReq
656 cretrans := xappConn1.handle_xapp_subs_req(t, nil)
658 // E2t: Receive SubsReq and send SubsFail
659 crereq, cremsg := e2termConn.handle_e2term_subs_req(t)
660 fparams := &test_subs_fail_params{}
662 e2termConn.handle_e2term_subs_fail(t, fparams, cremsg)
664 // Xapp: Receive SubsFail
665 e2SubsId := xappConn1.handle_xapp_subs_fail(t, cretrans)
667 // Wait that subs is cleaned
668 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
670 xappConn1.TestMsgCnt(t)
671 xappConn2.TestMsgCnt(t)
672 e2termConn.TestMsgCnt(t)
675 //-----------------------------------------------------------------------------
676 // TestSubDelReqRetryInSubmgr
679 // +-------+ +---------+ +---------+
680 // | xapp | | submgr | | e2term |
681 // +-------+ +---------+ +---------+
687 // |------------->| |
690 // | |------------->|
693 // | |------------->|
696 // | |<-------------|
699 // |<-------------| |
701 //-----------------------------------------------------------------------------
703 func TestSubDelReqRetryInSubmgr(t *testing.T) {
705 xapp.Logger.Info("TestSubDelReqRetryInSubmgr start")
708 cretrans := xappConn1.handle_xapp_subs_req(t, nil)
709 crereq, cremsg := e2termConn.handle_e2term_subs_req(t)
710 e2termConn.handle_e2term_subs_resp(t, crereq, cremsg)
711 e2SubsId := xappConn1.handle_xapp_subs_resp(t, cretrans)
714 // Xapp: Send SubsDelReq
715 deltrans := xappConn1.handle_xapp_subs_del_req(t, nil, e2SubsId)
717 // E2t: Receive 1st SubsDelReq
718 e2termConn.handle_e2term_subs_del_req(t)
720 // E2t: Receive 2nd SubsDelReq and send SubsDelResp
721 delreq, delmsg := e2termConn.handle_e2term_subs_del_req(t)
722 e2termConn.handle_e2term_subs_del_resp(t, delreq, delmsg)
724 // Xapp: Receive SubsDelResp
725 xappConn1.handle_xapp_subs_del_resp(t, deltrans)
727 // Wait that subs is cleaned
728 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
730 xappConn1.TestMsgCnt(t)
731 xappConn2.TestMsgCnt(t)
732 e2termConn.TestMsgCnt(t)
735 //-----------------------------------------------------------------------------
736 // TestSubDelReqTwoRetriesNoRespInSubmgr
739 // +-------+ +---------+ +---------+
740 // | xapp | | submgr | | e2term |
741 // +-------+ +---------+ +---------+
747 // |------------->| |
750 // | |------------->|
753 // | |------------->|
757 // |<-------------| |
759 //-----------------------------------------------------------------------------
761 func TestSubDelReqTwoRetriesNoRespInSubmgr(t *testing.T) {
763 xapp.Logger.Info("TestSubDelReTwoRetriesNoRespInSubmgr start")
766 cretrans := xappConn1.handle_xapp_subs_req(t, nil)
767 crereq, cremsg := e2termConn.handle_e2term_subs_req(t)
768 e2termConn.handle_e2term_subs_resp(t, crereq, cremsg)
769 e2SubsId := xappConn1.handle_xapp_subs_resp(t, cretrans)
772 // Xapp: Send SubsDelReq
773 deltrans := xappConn1.handle_xapp_subs_del_req(t, nil, e2SubsId)
775 // E2t: Receive 1st SubsDelReq
776 e2termConn.handle_e2term_subs_del_req(t)
778 // E2t: Receive 2nd SubsDelReq
779 e2termConn.handle_e2term_subs_del_req(t)
781 // Xapp: Receive SubsDelResp
782 xappConn1.handle_xapp_subs_del_resp(t, deltrans)
784 // Wait that subs is cleaned
785 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
787 xappConn1.TestMsgCnt(t)
788 xappConn2.TestMsgCnt(t)
789 e2termConn.TestMsgCnt(t)
792 //-----------------------------------------------------------------------------
793 // TestSubDelReqSubDelFailRespInSubmgr
796 // +-------+ +---------+ +---------+
797 // | xapp | | submgr | | e2term |
798 // +-------+ +---------+ +---------+
804 // |------------->| |
807 // | |------------->|
810 // | |<-------------|
813 // |<-------------| |
816 //-----------------------------------------------------------------------------
818 func TestSubDelReqSubDelFailRespInSubmgr(t *testing.T) {
820 xapp.Logger.Info("TestSubReqSubDelFailRespInSubmgr start")
823 cretrans := xappConn1.handle_xapp_subs_req(t, nil)
824 crereq, cremsg := e2termConn.handle_e2term_subs_req(t)
825 e2termConn.handle_e2term_subs_resp(t, crereq, cremsg)
826 e2SubsId := xappConn1.handle_xapp_subs_resp(t, cretrans)
828 // Xapp: Send SubsDelReq
829 deltrans := xappConn1.handle_xapp_subs_del_req(t, nil, e2SubsId)
831 // E2t: Send receive SubsDelReq and send SubsDelFail
832 delreq, delmsg := e2termConn.handle_e2term_subs_del_req(t)
833 e2termConn.handle_e2term_subs_del_fail(t, delreq, delmsg)
835 // Xapp: Receive SubsDelResp
836 xappConn1.handle_xapp_subs_del_resp(t, deltrans)
838 // Wait that subs is cleaned
839 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
841 xappConn1.TestMsgCnt(t)
842 xappConn2.TestMsgCnt(t)
843 e2termConn.TestMsgCnt(t)