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 ==================================================================================
26 "gerrit.o-ran-sc.org/r/ric-plt/e2ap/pkg/e2ap"
27 "gerrit.o-ran-sc.org/r/ric-plt/e2ap/pkg/e2ap_wrapper"
28 "gerrit.o-ran-sc.org/r/ric-plt/submgr/pkg/teststube2ap"
29 "gerrit.o-ran-sc.org/r/ric-plt/xapp-frame/pkg/xapp"
30 "github.com/stretchr/testify/assert"
33 func TestSuiteSetup(t *testing.T) {
34 // The effect of this call shall endure thgough the UT suite!
35 // If this causes any issues, the previout interface can be restored
37 // SetPackerIf(e2ap_wrapper.NewAsn1E2APPacker())
39 SetPackerIf(e2ap_wrapper.NewUtAsn1E2APPacker())
42 //-----------------------------------------------------------------------------
43 // TestRESTSubReqAndDeleteOkWithE2apUtWrapper
46 // +-------+ +---------+ +---------+ +---------+
47 // | xapp | | submgr | | e2term | | rtmgr |
48 // +-------+ +---------+ +---------+ +---------+
51 // |---------------->| | |
52 // | | RouteCreate | |
53 // | |--------------------------->| // The order of these events may vary
55 // | RESTSubResp | | | // The order of these events may vary
56 // |<----------------| | |
57 // | | RouteResponse| |
58 // | |<---------------------------| // The order of these events may vary
61 // | |------------->| | // The order of these events may vary
64 // | |<-------------| |
66 // |<----------------| | |
68 // | RESTSubDelReq | | |
69 // |---------------->| | |
71 // | |------------->| |
73 // | RESTSubDelResp| | |
74 // |<----------------| | |
77 // | |<-------------| |
81 //-----------------------------------------------------------------------------
82 func TestRESTSubReqAndDeleteOkWithE2apUtWrapper(t *testing.T) {
84 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, nil)
86 deleteSubscription(t, xappConn1, e2termConn1, &restSubId)
88 waitSubsCleanup(t, e2SubsId, 10)
91 //-----------------------------------------------------------------------------
92 // TestRESTSubReqAndE1apDeleteReqPackingError
95 // +-------+ +---------+ +---------+ +---------+
96 // | xapp | | submgr | | e2term | | rtmgr |
97 // +-------+ +---------+ +---------+ +---------+
100 // |---------------->| | |
101 // | | RouteCreate | |
102 // | |--------------------------->| // The order of these events may vary
104 // | RESTSubResp | | | // The order of these events may vary
105 // |<----------------| | |
106 // | | RouteResponse| |
107 // | |<---------------------------| // The order of these events may vary
110 // | |------------->| | // The order of these events may vary
113 // | |<-------------| |
114 // | RESTNotif1 | | |
115 // |<----------------| | |
117 // | RESTSubDelReq | | |
118 // |---------------->| | |
120 // | RESTSubDelResp| | |
121 // |<----------------| | |
125 //-----------------------------------------------------------------------------
126 func TestRESTSubReqAndE1apDeleteReqPackingError(t *testing.T) {
128 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, nil)
130 e2ap_wrapper.AllowE2apToProcess(e2ap_wrapper.SUB_DEL_REQ, false)
131 xappConn1.SendRESTSubsDelReq(t, &restSubId)
132 defer e2ap_wrapper.AllowE2apToProcess(e2ap_wrapper.SUB_DEL_REQ, true)
134 waitSubsCleanup(t, e2SubsId, 10)
137 //-----------------------------------------------------------------------------
138 // TestRESTSubReqAndE1apDeleteRespUnpackingError
141 // +-------+ +---------+ +---------+ +---------+
142 // | xapp | | submgr | | e2term | | rtmgr |
143 // +-------+ +---------+ +---------+ +---------+
145 // | RESTSubReq | | |
146 // |---------------->| | |
147 // | | RouteCreate | |
148 // | |--------------------------->| // The order of these events may vary
150 // | RESTSubResp | | | // The order of these events may vary
151 // |<----------------| | |
152 // | | RouteResponse| |
153 // | |<---------------------------| // The order of these events may vary
156 // | |------------->| | // The order of these events may vary
159 // | |<-------------| |
160 // | RESTNotif1 | | |
161 // |<----------------| | |
163 // | RESTSubDelReq | | |
164 // |---------------->| | |
166 // | |------------->| |
168 // | RESTSubDelResp| | |
169 // |<----------------| | | // The order of these events may vary
171 // | | SubDelResp | |
172 // | |<-------------| | // 1.st NOK
175 // | |------------->| |
177 // | | SubDelResp | |
178 // | |<-------------| | // 2.nd NOK
180 //-----------------------------------------------------------------------------
182 func TestRESTSubReqAndE1apDeleteRespUnpackingError(t *testing.T) {
184 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, nil)
186 xappConn1.SendRESTSubsDelReq(t, &restSubId)
187 e2ap_wrapper.AllowE2apToProcess(e2ap_wrapper.SUB_DEL_RESP, false)
188 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
189 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
191 delreq, delmsg = e2termConn1.RecvSubsDelReq(t)
192 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
194 defer e2ap_wrapper.AllowE2apToProcess(e2ap_wrapper.SUB_DEL_RESP, true)
196 waitSubsCleanup(t, e2SubsId, 10)
199 //-----------------------------------------------------------------------------
200 // TestSubReqAndRouteNok
203 // +-------+ +---------+ +---------+
204 // | xapp | | submgr | | rtmgr |
205 // +-------+ +---------+ +---------+
208 // |------------->| |
211 // | |------------->|
215 // | |<-------------|
217 // | [SUBS INT DELETE] |
220 //-----------------------------------------------------------------------------
222 func TestSubReqAndRouteNok(t *testing.T) {
223 CaseBegin("TestSubReqAndRouteNok")
225 // Init counter check
226 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
227 Counter{cSubReqFromXapp, 1},
228 Counter{cRouteCreateFail, 1},
231 waiter := rtmgrHttp.AllocNextEvent(false)
232 newSubsId := mainCtrl.get_registry_next_subid(t)
233 xappConn1.SendSubsReq(t, nil, nil)
236 //Wait that subs is cleaned
237 mainCtrl.wait_subs_clean(t, newSubsId, 10)
239 xappConn1.TestMsgChanEmpty(t)
240 xappConn2.TestMsgChanEmpty(t)
241 e2termConn1.TestMsgChanEmpty(t)
242 mainCtrl.wait_registry_empty(t, 10)
244 <-time.After(1 * time.Second)
245 mainCtrl.VerifyCounterValues(t)
248 //-----------------------------------------------------------------------------
249 // TestSubReqAndRouteUpdateNok
252 // +-------+ +-------+ +---------+ +---------+
253 // | xapp2 | | xapp1 | | submgr | | rtmgr |
254 // +-------+ +-------+ +---------+ +---------+
256 // | [SUBS CREATE] | |
260 // | SubReq (mergeable) | |
261 // |--------------------------->| | |
263 // | | | RouteUpdate |
264 // | | |------------->|
266 // | | | RouteUpdate |
267 // | | | status:400 |
268 // | | |<-------------|
270 // | [SUBS INT DELETE] | |
273 // | [SUBS DELETE] | |
276 func TestSubReqAndRouteUpdateNok(t *testing.T) {
277 CaseBegin("TestSubReqAndRouteUpdateNok")
279 // Init counter check
280 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
281 Counter{cSubReqFromXapp, 2},
282 Counter{cSubReqToE2, 1},
283 Counter{cSubRespFromE2, 1},
284 Counter{cSubRespToXapp, 1},
285 Counter{cRouteCreateUpdateFail, 1},
286 Counter{cSubDelReqFromXapp, 1},
287 Counter{cSubDelReqToE2, 1},
288 Counter{cSubDelRespFromE2, 1},
289 Counter{cSubDelRespToXapp, 1},
292 cretrans := xappConn1.SendSubsReq(t, nil, nil)
293 crereq, cremsg := e2termConn1.RecvSubsReq(t)
294 e2termConn1.SendSubsResp(t, crereq, cremsg)
295 e2SubsId := xappConn1.RecvSubsResp(t, cretrans)
297 resp, _ := xapp.Subscription.QuerySubscriptions()
298 assert.Equal(t, resp[0].SubscriptionID, int64(e2SubsId))
299 assert.Equal(t, resp[0].Meid, "RAN_NAME_1")
300 assert.Equal(t, resp[0].ClientEndpoint, []string{"localhost:13560"})
302 waiter := rtmgrHttp.AllocNextEvent(false)
303 newSubsId := mainCtrl.get_registry_next_subid(t)
304 xappConn2.SendSubsReq(t, nil, nil)
307 deltrans := xappConn1.SendSubsDelReq(t, nil, e2SubsId)
308 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
310 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
311 xappConn1.RecvSubsDelResp(t, deltrans)
313 //Wait that subs is cleaned
314 mainCtrl.wait_subs_clean(t, newSubsId, 10)
315 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
317 xappConn1.TestMsgChanEmpty(t)
318 xappConn2.TestMsgChanEmpty(t)
319 e2termConn1.TestMsgChanEmpty(t)
320 mainCtrl.wait_registry_empty(t, 10)
322 mainCtrl.VerifyCounterValues(t)
325 //-----------------------------------------------------------------------------
326 // TestSubDelReqAndRouteDeleteNok
329 // +-------+ +---------+ +---------+ +---------+
330 // | xapp | | submgr | | e2term | | rtmgr |
331 // +-------+ +---------+ +---------+ +---------+
333 // | [SUBS CREATE] | |
338 // |------------->| | |
340 // | |------------->| |
342 // | |<-------------| |
344 // |<-------------| | |
345 // | | RouteDelete | |
346 // | |---------------------------->|
348 // | | RouteDelete | |
349 // | | status:400 | |
350 // | |<----------------------------|
352 func TestSubDelReqAndRouteDeleteNok(t *testing.T) {
353 CaseBegin("TestSubDelReqAndRouteDeleteNok")
355 // Init counter check
356 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
357 Counter{cSubReqFromXapp, 1},
358 Counter{cSubReqToE2, 1},
359 Counter{cSubRespFromE2, 1},
360 Counter{cSubRespToXapp, 1},
361 Counter{cSubDelReqFromXapp, 1},
362 Counter{cRouteDeleteFail, 1},
363 Counter{cSubDelReqToE2, 1},
364 Counter{cSubDelRespFromE2, 1},
365 Counter{cSubDelRespToXapp, 1},
368 cretrans := xappConn1.SendSubsReq(t, nil, nil)
369 crereq, cremsg := e2termConn1.RecvSubsReq(t)
370 e2termConn1.SendSubsResp(t, crereq, cremsg)
371 e2SubsId := xappConn1.RecvSubsResp(t, cretrans)
373 resp, _ := xapp.Subscription.QuerySubscriptions()
374 assert.Equal(t, resp[0].SubscriptionID, int64(e2SubsId))
375 assert.Equal(t, resp[0].Meid, "RAN_NAME_1")
376 assert.Equal(t, resp[0].ClientEndpoint, []string{"localhost:13560"})
378 deltrans := xappConn1.SendSubsDelReq(t, nil, e2SubsId)
379 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
381 waiter := rtmgrHttp.AllocNextEvent(false)
382 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
385 xappConn1.RecvSubsDelResp(t, deltrans)
387 //Wait that subs is cleaned
388 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
390 xappConn1.TestMsgChanEmpty(t)
391 xappConn2.TestMsgChanEmpty(t)
392 e2termConn1.TestMsgChanEmpty(t)
393 mainCtrl.wait_registry_empty(t, 10)
395 mainCtrl.VerifyCounterValues(t)
398 //-----------------------------------------------------------------------------
399 // TestSubMergeDelAndRouteUpdateNok
401 // +-------+ +-------+ +---------+ +---------+
402 // | xapp2 | | xapp1 | | submgr | | e2term |
403 // +-------+ +-------+ +---------+ +---------+
408 // | |------------->| |
411 // | | |------------->|
413 // | | |<-------------|
415 // | |<-------------| |
418 // |--------------------------->| |
421 // |<---------------------------| |
423 // | | SubDelReq 1 | |
424 // | |------------->| |
425 // | | | RouteUpdate |
426 // | | |-----> rtmgr |
428 // | | | RouteUpdate |
429 // | | | status:400 |
430 // | | |<----- rtmgr |
432 // | | SubDelResp 1 | |
433 // | |<-------------| |
436 // |--------------------------->| |
438 // | | | SubDelReq 2 |
439 // | | |------------->|
441 // | | | SubDelReq 2 |
442 // | | |------------->|
444 // | SubDelResp 2 | |
445 // |<---------------------------| |
447 //-----------------------------------------------------------------------------
448 func TestSubMergeDelAndRouteUpdateNok(t *testing.T) {
449 CaseBegin("TestSubMergeDelAndRouteUpdateNok")
451 // Init counter check
452 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
453 Counter{cSubReqFromXapp, 2},
454 Counter{cSubReqToE2, 1},
455 Counter{cSubRespFromE2, 1},
456 Counter{cSubRespToXapp, 2},
457 Counter{cSubDelReqFromXapp, 2},
458 Counter{cRouteDeleteUpdateFail, 1},
459 Counter{cSubDelReqToE2, 1},
460 Counter{cSubDelRespFromE2, 1},
461 Counter{cSubDelRespToXapp, 2},
465 rparams1 := &teststube2ap.E2StubSubsReqParams{}
467 cretrans1 := xappConn1.SendSubsReq(t, rparams1, nil)
468 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
469 e2termConn1.SendSubsResp(t, crereq1, cremsg1)
470 e2SubsId1 := xappConn1.RecvSubsResp(t, cretrans1)
473 rparams2 := &teststube2ap.E2StubSubsReqParams{}
475 cretrans2 := xappConn2.SendSubsReq(t, rparams2, nil)
476 e2SubsId2 := xappConn2.RecvSubsResp(t, cretrans2)
478 resp, _ := xapp.Subscription.QuerySubscriptions()
479 assert.Equal(t, resp[0].SubscriptionID, int64(e2SubsId1))
480 assert.Equal(t, resp[0].Meid, "RAN_NAME_1")
481 assert.Equal(t, resp[0].ClientEndpoint, []string{"localhost:13560", "localhost:13660"})
484 waiter := rtmgrHttp.AllocNextEvent(false)
485 deltrans1 := xappConn1.SendSubsDelReq(t, nil, e2SubsId1)
488 xappConn1.RecvSubsDelResp(t, deltrans1)
491 deltrans2 := xappConn2.SendSubsDelReq(t, nil, e2SubsId2)
492 delreq2, delmsg2 := e2termConn1.RecvSubsDelReq(t)
493 e2termConn1.SendSubsDelResp(t, delreq2, delmsg2)
494 xappConn2.RecvSubsDelResp(t, deltrans2)
495 //Wait that subs is cleaned
496 mainCtrl.wait_subs_clean(t, e2SubsId2, 10)
498 xappConn1.TestMsgChanEmpty(t)
499 xappConn2.TestMsgChanEmpty(t)
500 e2termConn1.TestMsgChanEmpty(t)
501 mainCtrl.wait_registry_empty(t, 10)
503 mainCtrl.VerifyCounterValues(t)
506 //-----------------------------------------------------------------------------
508 //-----------------------------------------------------------------------------
509 // TestSubReqAndSubDelOk
512 // +-------+ +---------+ +---------+
513 // | xapp | | submgr | | e2term |
514 // +-------+ +---------+ +---------+
517 // |------------->| |
520 // | |------------->|
523 // | |<-------------|
526 // |<-------------| |
530 // |------------->| |
533 // | |------------->|
536 // | |<-------------|
539 // |<-------------| |
541 //-----------------------------------------------------------------------------
542 func TestSubReqAndSubDelOk(t *testing.T) {
543 CaseBegin("TestSubReqAndSubDelOk")
545 // Init counter check
546 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
547 Counter{cSubReqFromXapp, 1},
548 Counter{cSubReqToE2, 1},
549 Counter{cSubRespFromE2, 1},
550 Counter{cSubRespToXapp, 1},
551 Counter{cSubDelReqFromXapp, 1},
552 Counter{cSubDelReqToE2, 1},
553 Counter{cSubDelRespFromE2, 1},
554 Counter{cSubDelRespToXapp, 1},
557 cretrans := xappConn1.SendSubsReq(t, nil, nil)
558 crereq, cremsg := e2termConn1.RecvSubsReq(t)
559 e2termConn1.SendSubsResp(t, crereq, cremsg)
560 e2SubsId := xappConn1.RecvSubsResp(t, cretrans)
562 resp, _ := xapp.Subscription.QuerySubscriptions()
563 assert.Equal(t, resp[0].SubscriptionID, int64(e2SubsId))
564 assert.Equal(t, resp[0].Meid, "RAN_NAME_1")
565 assert.Equal(t, resp[0].ClientEndpoint, []string{"localhost:13560"})
567 deltrans := xappConn1.SendSubsDelReq(t, nil, e2SubsId)
568 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
570 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
571 xappConn1.RecvSubsDelResp(t, deltrans)
573 //Wait that subs is cleaned
574 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
576 xappConn1.TestMsgChanEmpty(t)
577 xappConn2.TestMsgChanEmpty(t)
578 e2termConn1.TestMsgChanEmpty(t)
579 mainCtrl.wait_registry_empty(t, 10)
581 mainCtrl.VerifyCounterValues(t)
584 //-----------------------------------------------------------------------------
585 // TestSubReqRetransmission
588 // +-------+ +---------+ +---------+
589 // | xapp | | submgr | | e2term |
590 // +-------+ +---------+ +---------+
593 // |------------->| |
596 // | |------------->|
600 // |------------->| |
603 // | |<-------------|
606 // |<-------------| |
611 //-----------------------------------------------------------------------------
612 func TestSubReqRetransmission(t *testing.T) {
613 CaseBegin("TestSubReqRetransmission")
616 cretrans := xappConn1.SendSubsReq(t, nil, nil)
617 crereq, cremsg := e2termConn1.RecvSubsReq(t)
619 seqBef := mainCtrl.get_msgcounter(t)
620 xappConn1.SendSubsReq(t, nil, cretrans) //Retransmitted SubReq
621 mainCtrl.wait_msgcounter_change(t, seqBef, 10)
623 // hack as there is no real way to see has message be handled.
624 // Previuos counter check just tells that is has been received by submgr
625 // --> artificial delay
626 <-time.After(1 * time.Second)
627 e2termConn1.SendSubsResp(t, crereq, cremsg)
628 e2SubsId := xappConn1.RecvSubsResp(t, cretrans)
631 deltrans := xappConn1.SendSubsDelReq(t, nil, e2SubsId)
632 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
633 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
634 xappConn1.RecvSubsDelResp(t, deltrans)
636 //Wait that subs is cleaned
637 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
639 xappConn1.TestMsgChanEmpty(t)
640 xappConn2.TestMsgChanEmpty(t)
641 e2termConn1.TestMsgChanEmpty(t)
642 mainCtrl.wait_registry_empty(t, 10)
645 //-----------------------------------------------------------------------------
646 // TestSubDelReqRetransmission
649 // +-------+ +---------+ +---------+
650 // | xapp | | submgr | | e2term |
651 // +-------+ +---------+ +---------+
657 // |------------->| |
660 // | |------------->|
665 // |------------->| |
668 // | |<-------------|
671 // |<-------------| |
673 //-----------------------------------------------------------------------------
674 func TestSubDelReqRetransmission(t *testing.T) {
675 CaseBegin("TestSubDelReqRetransmission")
678 cretrans := xappConn1.SendSubsReq(t, nil, nil)
679 crereq, cremsg := e2termConn1.RecvSubsReq(t)
680 e2termConn1.SendSubsResp(t, crereq, cremsg)
681 e2SubsId := xappConn1.RecvSubsResp(t, cretrans)
684 deltrans := xappConn1.SendSubsDelReq(t, nil, e2SubsId)
685 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
687 seqBef := mainCtrl.get_msgcounter(t)
688 xappConn1.SendSubsDelReq(t, deltrans, e2SubsId) //Retransmitted SubDelReq
689 mainCtrl.wait_msgcounter_change(t, seqBef, 10)
691 // hack as there is no real way to see has message be handled.
692 // Previuos counter check just tells that is has been received by submgr
693 // --> artificial delay
694 <-time.After(1 * time.Second)
696 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
697 xappConn1.RecvSubsDelResp(t, deltrans)
699 //Wait that subs is cleaned
700 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
702 xappConn1.TestMsgChanEmpty(t)
703 xappConn2.TestMsgChanEmpty(t)
704 e2termConn1.TestMsgChanEmpty(t)
705 mainCtrl.wait_registry_empty(t, 10)
708 //-----------------------------------------------------------------------------
709 // TestSubDelReqCollision
712 // +-------+ +---------+ +---------+
713 // | xapp | | submgr | | e2term |
714 // +-------+ +---------+ +---------+
720 // |------------->| |
723 // | |------------->|
728 // |------------->| |
730 // | | SubDelResp 1 |
731 // | |<-------------|
733 // | SubDelResp 1 | |
734 // |<-------------| |
736 // | SubDelResp 2 | |
737 // |<-------------| |
739 //-----------------------------------------------------------------------------
741 func TestSubDelReqCollision(t *testing.T) {
742 CaseBegin("TestSubDelReqCollision")
745 cretrans := xappConn1.SendSubsReq(t, nil, nil)
746 crereq, cremsg := e2termConn1.RecvSubsReq(t)
747 e2termConn1.SendSubsResp(t, crereq, cremsg)
748 e2SubsId := xappConn1.RecvSubsResp(t, cretrans)
751 xappConn1.SendSubsDelReq(t, nil, e2SubsId)
752 delreq1, delmsg1 := e2termConn1.RecvSubsDelReq(t)
754 // Subs Delete colliding
755 seqBef := mainCtrl.get_msgcounter(t)
756 deltranscol2 := xappConn1.NewRmrTransactionId("", "RAN_NAME_1")
757 xappConn1.SendSubsDelReq(t, deltranscol2, e2SubsId) //Colliding SubDelReq
758 mainCtrl.wait_msgcounter_change(t, seqBef, 10)
760 // hack as there is no real way to see has message be handled.
761 // Previuos counter check just tells that is has been received by submgr
762 // --> artificial delay
763 <-time.After(1 * time.Second)
765 // Del resp for first and second
766 e2termConn1.SendSubsDelResp(t, delreq1, delmsg1)
768 // don't care in which order responses are received
769 xappConn1.RecvSubsDelResp(t, nil)
770 xappConn1.RecvSubsDelResp(t, nil)
772 //Wait that subs is cleaned
773 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
775 xappConn1.TestMsgChanEmpty(t)
776 xappConn2.TestMsgChanEmpty(t)
777 e2termConn1.TestMsgChanEmpty(t)
778 mainCtrl.wait_registry_empty(t, 10)
781 //-----------------------------------------------------------------------------
782 // TestSubReqAndSubDelOkTwoParallel
785 // +-------+ +-------+ +---------+ +---------+
786 // | xapp | | xapp | | submgr | | e2term |
787 // +-------+ +-------+ +---------+ +---------+
792 // | |------------->| |
795 // | | |------------->|
798 // |------------------------>| |
801 // | | |------------->|
804 // | | |<-------------|
806 // | |<-------------| |
809 // | | |<-------------|
811 // |<------------------------| |
813 // | | [SUBS 1 DELETE] |
815 // | | [SUBS 2 DELETE] |
818 //-----------------------------------------------------------------------------
820 func TestSubReqAndSubDelOkTwoParallel(t *testing.T) {
821 CaseBegin("TestSubReqAndSubDelOkTwoParallel")
824 rparams1 := &teststube2ap.E2StubSubsReqParams{}
826 cretrans1 := xappConn1.SendSubsReq(t, rparams1, nil)
827 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
830 rparams2 := &teststube2ap.E2StubSubsReqParams{}
833 rparams2.Req.EventTriggerDefinition.Data.Length = 1
834 rparams2.Req.EventTriggerDefinition.Data.Data = make([]uint8, rparams2.Req.EventTriggerDefinition.Data.Length)
835 rparams2.Req.EventTriggerDefinition.Data.Data[0] = 2
837 cretrans2 := xappConn2.SendSubsReq(t, rparams2, nil)
838 crereq2, cremsg2 := e2termConn1.RecvSubsReq(t)
841 e2termConn1.SendSubsResp(t, crereq1, cremsg1)
842 e2SubsId1 := xappConn1.RecvSubsResp(t, cretrans1)
845 e2termConn1.SendSubsResp(t, crereq2, cremsg2)
846 e2SubsId2 := xappConn2.RecvSubsResp(t, cretrans2)
849 deltrans1 := xappConn1.SendSubsDelReq(t, nil, e2SubsId1)
850 delreq1, delmsg1 := e2termConn1.RecvSubsDelReq(t)
851 e2termConn1.SendSubsDelResp(t, delreq1, delmsg1)
852 xappConn1.RecvSubsDelResp(t, deltrans1)
853 //Wait that subs is cleaned
854 mainCtrl.wait_subs_clean(t, e2SubsId1, 10)
857 deltrans2 := xappConn2.SendSubsDelReq(t, nil, e2SubsId2)
858 delreq2, delmsg2 := e2termConn1.RecvSubsDelReq(t)
859 e2termConn1.SendSubsDelResp(t, delreq2, delmsg2)
860 xappConn2.RecvSubsDelResp(t, deltrans2)
861 //Wait that subs is cleaned
862 mainCtrl.wait_subs_clean(t, e2SubsId2, 10)
864 xappConn1.TestMsgChanEmpty(t)
865 xappConn2.TestMsgChanEmpty(t)
866 e2termConn1.TestMsgChanEmpty(t)
867 mainCtrl.wait_registry_empty(t, 10)
870 //-----------------------------------------------------------------------------
871 // TestSameSubsDiffRan
872 // Same subscription to different RANs
875 // +-------+ +---------+ +---------+
876 // | xapp | | submgr | | e2term |
877 // +-------+ +---------+ +---------+
882 // |------------->| |
885 // | |------------->|
888 // | |<-------------|
891 // |<-------------| |
894 // |------------->| |
897 // | |------------->|
900 // | |<-------------|
903 // |<-------------| |
905 // | [SUBS r1 DELETE] |
907 // | [SUBS r2 DELETE] |
910 //-----------------------------------------------------------------------------
911 func TestSameSubsDiffRan(t *testing.T) {
912 CaseBegin("TestSameSubsDiffRan")
915 cretrans1 := xappConn1.NewRmrTransactionId("", "RAN_NAME_1")
916 xappConn1.SendSubsReq(t, nil, cretrans1)
917 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
918 e2termConn1.SendSubsResp(t, crereq1, cremsg1)
919 e2SubsId1 := xappConn1.RecvSubsResp(t, cretrans1)
922 cretrans2 := xappConn1.NewRmrTransactionId("", "RAN_NAME_2")
923 xappConn1.SendSubsReq(t, nil, cretrans2)
924 crereq2, cremsg2 := e2termConn1.RecvSubsReq(t)
925 e2termConn1.SendSubsResp(t, crereq2, cremsg2)
926 e2SubsId2 := xappConn1.RecvSubsResp(t, cretrans2)
929 deltrans1 := xappConn1.NewRmrTransactionId("", "RAN_NAME_1")
930 xappConn1.SendSubsDelReq(t, deltrans1, e2SubsId1)
931 delreq1, delmsg1 := e2termConn1.RecvSubsDelReq(t)
932 e2termConn1.SendSubsDelResp(t, delreq1, delmsg1)
933 xappConn1.RecvSubsDelResp(t, deltrans1)
934 //Wait that subs is cleaned
935 mainCtrl.wait_subs_clean(t, e2SubsId1, 10)
938 deltrans2 := xappConn1.NewRmrTransactionId("", "RAN_NAME_2")
939 xappConn1.SendSubsDelReq(t, deltrans2, e2SubsId2)
940 delreq2, delmsg2 := e2termConn1.RecvSubsDelReq(t)
941 e2termConn1.SendSubsDelResp(t, delreq2, delmsg2)
942 xappConn1.RecvSubsDelResp(t, deltrans2)
943 //Wait that subs is cleaned
944 mainCtrl.wait_subs_clean(t, e2SubsId2, 10)
946 xappConn1.TestMsgChanEmpty(t)
947 xappConn2.TestMsgChanEmpty(t)
948 e2termConn1.TestMsgChanEmpty(t)
949 mainCtrl.wait_registry_empty(t, 10)
952 //-----------------------------------------------------------------------------
953 // TestSubReqRetryInSubmgr
956 // +-------+ +---------+ +---------+
957 // | xapp | | submgr | | e2term |
958 // +-------+ +---------+ +---------+
961 // |------------->| |
964 // | |------------->|
968 // | |------------->|
971 // | |<-------------|
974 // |<-------------| |
979 //-----------------------------------------------------------------------------
981 func TestSubReqRetryInSubmgr(t *testing.T) {
982 CaseBegin("TestSubReqRetryInSubmgr start")
984 // Init counter check
985 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
986 Counter{cSubReqFromXapp, 1},
987 Counter{cSubReqToE2, 1},
988 Counter{cSubReReqToE2, 1},
989 Counter{cSubRespFromE2, 1},
990 Counter{cSubRespToXapp, 1},
991 Counter{cSubDelReqFromXapp, 1},
992 Counter{cSubDelReqToE2, 1},
993 Counter{cSubDelRespFromE2, 1},
994 Counter{cSubDelRespToXapp, 1},
997 // Xapp: Send SubsReq
998 cretrans := xappConn1.SendSubsReq(t, nil, nil)
1000 // E2t: Receive 1st SubsReq
1001 e2termConn1.RecvSubsReq(t)
1003 // E2t: Receive 2nd SubsReq and send SubsResp
1004 crereq, cremsg := e2termConn1.RecvSubsReq(t)
1005 e2termConn1.SendSubsResp(t, crereq, cremsg)
1007 // Xapp: Receive SubsResp
1008 e2SubsId := xappConn1.RecvSubsResp(t, cretrans)
1010 deltrans := xappConn1.SendSubsDelReq(t, nil, e2SubsId)
1011 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
1012 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
1013 xappConn1.RecvSubsDelResp(t, deltrans)
1015 // Wait that subs is cleaned
1016 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
1018 xappConn1.TestMsgChanEmpty(t)
1019 xappConn2.TestMsgChanEmpty(t)
1020 e2termConn1.TestMsgChanEmpty(t)
1021 mainCtrl.wait_registry_empty(t, 10)
1023 mainCtrl.VerifyCounterValues(t)
1026 //-----------------------------------------------------------------------------
1027 // TestSubReqTwoRetriesNoRespSubDelRespInSubmgr
1030 // +-------+ +---------+ +---------+
1031 // | xapp | | submgr | | e2term |
1032 // +-------+ +---------+ +---------+
1035 // |------------->| |
1038 // | |------------->|
1042 // | |------------->|
1045 // | |------------->|
1048 // | |<-------------|
1051 //-----------------------------------------------------------------------------
1052 func TestSubReqRetryNoRespSubDelRespInSubmgr(t *testing.T) {
1053 CaseBegin("TestSubReqTwoRetriesNoRespSubDelRespInSubmgr start")
1055 // Init counter check
1056 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
1057 Counter{cSubReqFromXapp, 1},
1058 Counter{cSubReqToE2, 1},
1059 Counter{cSubReReqToE2, 1},
1060 Counter{cSubReqTimerExpiry, 2},
1061 Counter{cSubDelReqToE2, 1},
1062 Counter{cSubDelRespFromE2, 1},
1065 // Xapp: Send SubsReq
1066 xappConn1.SendSubsReq(t, nil, nil)
1068 // E2t: Receive 1st SubsReq
1069 e2termConn1.RecvSubsReq(t)
1071 // E2t: Receive 2nd SubsReq
1072 e2termConn1.RecvSubsReq(t)
1074 // E2t: Send receive SubsDelReq and send SubsResp
1075 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
1076 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
1078 // Wait that subs is cleaned
1079 mainCtrl.wait_subs_clean(t, delreq.RequestId.InstanceId, 10)
1081 xappConn1.TestMsgChanEmpty(t)
1082 xappConn2.TestMsgChanEmpty(t)
1083 e2termConn1.TestMsgChanEmpty(t)
1084 mainCtrl.wait_registry_empty(t, 10)
1086 mainCtrl.VerifyCounterValues(t)
1089 //-----------------------------------------------------------------------------
1090 // TestSubReqTwoRetriesNoRespAtAllInSubmgr
1093 // +-------+ +---------+ +---------+
1094 // | xapp | | submgr | | e2term |
1095 // +-------+ +---------+ +---------+
1098 // |------------->| |
1101 // | |------------->|
1105 // | |------------->|
1108 // | |------------->|
1112 // | |------------->|
1116 //-----------------------------------------------------------------------------
1118 func TestSubReqTwoRetriesNoRespAtAllInSubmgr(t *testing.T) {
1119 CaseBegin("TestSubReqTwoRetriesNoRespAtAllInSubmgr start")
1121 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
1122 Counter{cSubReqFromXapp, 1},
1123 Counter{cSubReqToE2, 1},
1124 Counter{cSubReReqToE2, 1},
1125 Counter{cSubReqTimerExpiry, 2},
1126 Counter{cSubDelReqToE2, 1},
1127 Counter{cSubDelReReqToE2, 1},
1128 Counter{cSubDelReqTimerExpiry, 2},
1131 // Xapp: Send SubsReq
1132 xappConn1.SendSubsReq(t, nil, nil)
1134 // E2t: Receive 1st SubsReq
1135 e2termConn1.RecvSubsReq(t)
1137 // E2t: Receive 2nd SubsReq
1138 e2termConn1.RecvSubsReq(t)
1140 // E2t: Receive 1st SubsDelReq
1141 e2termConn1.RecvSubsDelReq(t)
1143 // E2t: Receive 2nd SubsDelReq
1144 delreq, _ := e2termConn1.RecvSubsDelReq(t)
1146 // Wait that subs is cleaned
1147 mainCtrl.wait_subs_clean(t, delreq.RequestId.InstanceId, 15)
1149 xappConn1.TestMsgChanEmpty(t)
1150 xappConn2.TestMsgChanEmpty(t)
1151 e2termConn1.TestMsgChanEmpty(t)
1152 mainCtrl.wait_registry_empty(t, 10)
1154 mainCtrl.VerifyCounterValues(t)
1157 //-----------------------------------------------------------------------------
1158 // TestSubReqSubFailRespInSubmgr
1161 // +-------+ +---------+ +---------+
1162 // | xapp | | submgr | | e2term |
1163 // +-------+ +---------+ +---------+
1166 // |------------->| |
1169 // | |------------->|
1172 // | |<-------------|
1175 // | |------------->|
1178 // | |<-------------|
1181 // |<-------------| |
1184 //-----------------------------------------------------------------------------
1186 func TestSubReqSubFailRespInSubmgr(t *testing.T) {
1187 CaseBegin("TestSubReqSubFailRespInSubmgr start")
1189 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
1190 Counter{cSubReqFromXapp, 1},
1191 Counter{cSubReqToE2, 1},
1192 Counter{cSubFailFromE2, 1},
1193 Counter{cSubFailToXapp, 1},
1196 // Xapp: Send SubsReq
1197 cretrans := xappConn1.SendSubsReq(t, nil, nil)
1199 // E2t: Receive SubsReq and send SubsFail (first)
1200 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
1201 fparams1 := &teststube2ap.E2StubSubsFailParams{}
1202 fparams1.Set(crereq1)
1203 e2termConn1.SendSubsFail(t, fparams1, cremsg1)
1205 // E2t: Receive SubsDelReq and send SubsDelResp (internal first)
1206 delreq1, delmsg1 := e2termConn1.RecvSubsDelReq(t)
1207 e2termConn1.SendSubsDelResp(t, delreq1, delmsg1)
1209 // Xapp: Receive SubsFail
1210 e2SubsId := xappConn1.RecvSubsFail(t, cretrans)
1212 // Wait that subs is cleaned
1213 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
1215 xappConn1.TestMsgChanEmpty(t)
1216 xappConn2.TestMsgChanEmpty(t)
1217 e2termConn1.TestMsgChanEmpty(t)
1218 mainCtrl.wait_registry_empty(t, 10)
1220 mainCtrl.VerifyCounterValues(t)
1223 //-----------------------------------------------------------------------------
1224 // TestSubDelReqRetryInSubmgr
1227 // +-------+ +---------+ +---------+
1228 // | xapp | | submgr | | e2term |
1229 // +-------+ +---------+ +---------+
1231 // | [SUBS CREATE] |
1235 // |------------->| |
1238 // | |------------->|
1241 // | |------------->|
1244 // | |<-------------|
1247 // |<-------------| |
1249 //-----------------------------------------------------------------------------
1251 func TestSubDelReqRetryInSubmgr(t *testing.T) {
1253 CaseBegin("TestSubDelReqRetryInSubmgr start")
1256 cretrans := xappConn1.SendSubsReq(t, nil, nil)
1257 crereq, cremsg := e2termConn1.RecvSubsReq(t)
1258 e2termConn1.SendSubsResp(t, crereq, cremsg)
1259 e2SubsId := xappConn1.RecvSubsResp(t, cretrans)
1262 // Xapp: Send SubsDelReq
1263 deltrans := xappConn1.SendSubsDelReq(t, nil, e2SubsId)
1265 // E2t: Receive 1st SubsDelReq
1266 e2termConn1.RecvSubsDelReq(t)
1268 // E2t: Receive 2nd SubsDelReq and send SubsDelResp
1269 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
1270 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
1272 // Xapp: Receive SubsDelResp
1273 xappConn1.RecvSubsDelResp(t, deltrans)
1275 // Wait that subs is cleaned
1276 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
1278 xappConn1.TestMsgChanEmpty(t)
1279 xappConn2.TestMsgChanEmpty(t)
1280 e2termConn1.TestMsgChanEmpty(t)
1281 mainCtrl.wait_registry_empty(t, 10)
1284 //-----------------------------------------------------------------------------
1285 // TestSubDelReqTwoRetriesNoRespInSubmgr
1288 // +-------+ +---------+ +---------+
1289 // | xapp | | submgr | | e2term |
1290 // +-------+ +---------+ +---------+
1292 // | [SUBS CREATE] |
1296 // |------------->| |
1299 // | |------------->|
1302 // | |------------->|
1306 // |<-------------| |
1308 //-----------------------------------------------------------------------------
1310 func TestSubDelReqTwoRetriesNoRespInSubmgr(t *testing.T) {
1312 CaseBegin("TestSubDelReTwoRetriesNoRespInSubmgr start")
1315 cretrans := xappConn1.SendSubsReq(t, nil, nil)
1316 crereq, cremsg := e2termConn1.RecvSubsReq(t)
1317 e2termConn1.SendSubsResp(t, crereq, cremsg)
1318 e2SubsId := xappConn1.RecvSubsResp(t, cretrans)
1321 // Xapp: Send SubsDelReq
1322 deltrans := xappConn1.SendSubsDelReq(t, nil, e2SubsId)
1324 // E2t: Receive 1st SubsDelReq
1325 e2termConn1.RecvSubsDelReq(t)
1327 // E2t: Receive 2nd SubsDelReq
1328 e2termConn1.RecvSubsDelReq(t)
1330 // Xapp: Receive SubsDelResp
1331 xappConn1.RecvSubsDelResp(t, deltrans)
1333 // Wait that subs is cleaned
1334 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
1336 xappConn1.TestMsgChanEmpty(t)
1337 xappConn2.TestMsgChanEmpty(t)
1338 e2termConn1.TestMsgChanEmpty(t)
1339 mainCtrl.wait_registry_empty(t, 10)
1342 //-----------------------------------------------------------------------------
1343 // TestSubDelReqSubDelFailRespInSubmgr
1346 // +-------+ +---------+ +---------+
1347 // | xapp | | submgr | | e2term |
1348 // +-------+ +---------+ +---------+
1350 // | [SUBS CREATE] |
1354 // |------------->| |
1357 // | |------------->|
1360 // | |<-------------|
1363 // |<-------------| |
1366 //-----------------------------------------------------------------------------
1368 func TestSubDelReqSubDelFailRespInSubmgr(t *testing.T) {
1369 CaseBegin("TestSubReqSubDelFailRespInSubmgr start")
1371 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
1372 Counter{cSubReqFromXapp, 1},
1373 Counter{cSubReqToE2, 1},
1374 Counter{cSubRespFromE2, 1},
1375 Counter{cSubRespToXapp, 1},
1376 Counter{cSubDelReqFromXapp, 1},
1377 Counter{cSubDelReqToE2, 1},
1378 Counter{cSubDelFailFromE2, 1},
1379 Counter{cSubDelRespToXapp, 1},
1383 cretrans := xappConn1.SendSubsReq(t, nil, nil)
1384 crereq, cremsg := e2termConn1.RecvSubsReq(t)
1385 e2termConn1.SendSubsResp(t, crereq, cremsg)
1386 e2SubsId := xappConn1.RecvSubsResp(t, cretrans)
1388 // Xapp: Send SubsDelReq
1389 deltrans := xappConn1.SendSubsDelReq(t, nil, e2SubsId)
1391 // E2t: Send receive SubsDelReq and send SubsDelFail
1392 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
1393 e2termConn1.SendSubsDelFail(t, delreq, delmsg)
1395 // Xapp: Receive SubsDelResp
1396 xappConn1.RecvSubsDelResp(t, deltrans)
1398 // Wait that subs is cleaned
1399 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
1401 xappConn1.TestMsgChanEmpty(t)
1402 xappConn2.TestMsgChanEmpty(t)
1403 e2termConn1.TestMsgChanEmpty(t)
1404 mainCtrl.wait_registry_empty(t, 10)
1406 mainCtrl.VerifyCounterValues(t)
1409 //-----------------------------------------------------------------------------
1410 // TestSubReqAndSubDelOkSameAction
1413 // +-------+ +-------+ +---------+ +---------+
1414 // | xapp2 | | xapp1 | | submgr | | e2term |
1415 // +-------+ +-------+ +---------+ +---------+
1420 // | |------------->| |
1423 // | | |------------->|
1425 // | | |<-------------|
1427 // | |<-------------| |
1430 // |--------------------------->| |
1433 // |<---------------------------| |
1435 // | | SubDelReq 1 | |
1436 // | |------------->| |
1438 // | | SubDelResp 1 | |
1439 // | |<-------------| |
1441 // | SubDelReq 2 | |
1442 // |--------------------------->| |
1444 // | | | SubDelReq 2 |
1445 // | | |------------->|
1447 // | | | SubDelReq 2 |
1448 // | | |------------->|
1450 // | SubDelResp 2 | |
1451 // |<---------------------------| |
1453 //-----------------------------------------------------------------------------
1454 func TestSubReqAndSubDelOkSameAction(t *testing.T) {
1455 CaseBegin("TestSubReqAndSubDelOkSameAction")
1457 // Init counter check
1458 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
1459 Counter{cSubReqFromXapp, 2},
1460 Counter{cSubReqToE2, 1},
1461 Counter{cSubRespFromE2, 1},
1462 Counter{cSubRespToXapp, 2},
1463 Counter{cMergedSubscriptions, 1},
1464 Counter{cUnmergedSubscriptions, 1},
1465 Counter{cSubDelReqFromXapp, 2},
1466 Counter{cSubDelReqToE2, 1},
1467 Counter{cSubDelRespFromE2, 1},
1468 Counter{cSubDelRespToXapp, 2},
1472 rparams1 := &teststube2ap.E2StubSubsReqParams{}
1474 cretrans1 := xappConn1.SendSubsReq(t, rparams1, nil)
1475 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
1476 e2termConn1.SendSubsResp(t, crereq1, cremsg1)
1477 e2SubsId1 := xappConn1.RecvSubsResp(t, cretrans1)
1480 rparams2 := &teststube2ap.E2StubSubsReqParams{}
1482 cretrans2 := xappConn2.SendSubsReq(t, rparams2, nil)
1483 //crereq2, cremsg2 := e2termConn1.RecvSubsReq(t)
1484 //e2termConn1.SendSubsResp(t, crereq2, cremsg2)
1485 e2SubsId2 := xappConn2.RecvSubsResp(t, cretrans2)
1487 resp, _ := xapp.Subscription.QuerySubscriptions()
1488 assert.Equal(t, resp[0].SubscriptionID, int64(e2SubsId1))
1489 assert.Equal(t, resp[0].Meid, "RAN_NAME_1")
1490 assert.Equal(t, resp[0].ClientEndpoint, []string{"localhost:13560", "localhost:13660"})
1493 deltrans1 := xappConn1.SendSubsDelReq(t, nil, e2SubsId1)
1494 //e2termConn1.RecvSubsDelReq(t)
1495 //e2termConn1.SendSubsDelResp(t, delreq1, delmsg1)
1496 xappConn1.RecvSubsDelResp(t, deltrans1)
1497 //Wait that subs is cleaned
1498 //mainCtrl.wait_subs_clean(t, e2SubsId1, 10)
1501 deltrans2 := xappConn2.SendSubsDelReq(t, nil, e2SubsId2)
1502 delreq2, delmsg2 := e2termConn1.RecvSubsDelReq(t)
1503 e2termConn1.SendSubsDelResp(t, delreq2, delmsg2)
1504 xappConn2.RecvSubsDelResp(t, deltrans2)
1505 //Wait that subs is cleaned
1506 mainCtrl.wait_subs_clean(t, e2SubsId2, 10)
1508 xappConn1.TestMsgChanEmpty(t)
1509 xappConn2.TestMsgChanEmpty(t)
1510 e2termConn1.TestMsgChanEmpty(t)
1511 mainCtrl.wait_registry_empty(t, 10)
1513 mainCtrl.VerifyCounterValues(t)
1516 //-----------------------------------------------------------------------------
1517 // TestSubReqAndSubDelOkSameActionParallel
1520 // +-------+ +-------+ +---------+ +---------+
1521 // | xapp2 | | xapp1 | | submgr | | e2term |
1522 // +-------+ +-------+ +---------+ +---------+
1527 // | |------------->| |
1530 // | | |------------->|
1532 // |--------------------------->| |
1534 // | | |<-------------|
1536 // | |<-------------| |
1539 // |<---------------------------| |
1541 // | | SubDelReq 1 | |
1542 // | |------------->| |
1544 // | | SubDelResp 1 | |
1545 // | |<-------------| |
1547 // | SubDelReq 2 | |
1548 // |--------------------------->| |
1550 // | | | SubDelReq 2 |
1551 // | | |------------->|
1553 // | | | SubDelReq 2 |
1554 // | | |------------->|
1556 // | SubDelResp 2 | |
1557 // |<---------------------------| |
1559 //-----------------------------------------------------------------------------
1560 func TestSubReqAndSubDelOkSameActionParallel(t *testing.T) {
1561 CaseBegin("TestSubReqAndSubDelOkSameActionParallel")
1564 rparams1 := &teststube2ap.E2StubSubsReqParams{}
1566 cretrans1 := xappConn1.SendSubsReq(t, rparams1, nil)
1567 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
1570 rparams2 := &teststube2ap.E2StubSubsReqParams{}
1572 cretrans2 := xappConn2.SendSubsReq(t, rparams2, nil)
1575 e2termConn1.SendSubsResp(t, crereq1, cremsg1)
1576 e2SubsId1 := xappConn1.RecvSubsResp(t, cretrans1)
1579 e2SubsId2 := xappConn2.RecvSubsResp(t, cretrans2)
1582 deltrans1 := xappConn1.SendSubsDelReq(t, nil, e2SubsId1)
1583 xappConn1.RecvSubsDelResp(t, deltrans1)
1586 deltrans2 := xappConn2.SendSubsDelReq(t, nil, e2SubsId2)
1587 delreq2, delmsg2 := e2termConn1.RecvSubsDelReq(t)
1588 e2termConn1.SendSubsDelResp(t, delreq2, delmsg2)
1589 xappConn2.RecvSubsDelResp(t, deltrans2)
1591 //Wait that subs is cleaned
1592 mainCtrl.wait_subs_clean(t, e2SubsId2, 10)
1594 xappConn1.TestMsgChanEmpty(t)
1595 xappConn2.TestMsgChanEmpty(t)
1596 e2termConn1.TestMsgChanEmpty(t)
1597 mainCtrl.wait_registry_empty(t, 10)
1600 //-----------------------------------------------------------------------------
1601 // TestSubReqAndSubDelNokSameActionParallel
1604 // +-------+ +-------+ +---------+ +---------+
1605 // | xapp2 | | xapp1 | | submgr | | e2term |
1606 // +-------+ +-------+ +---------+ +---------+
1611 // | |------------->| |
1614 // | | |------------->|
1616 // |--------------------------->| |
1618 // | | |<-------------|
1620 // | | | SubDelReq |
1621 // | | |------------->|
1622 // | | | SubDelResp |
1623 // | | |<-------------|
1626 // | |<-------------| |
1629 // |<---------------------------| |
1631 //-----------------------------------------------------------------------------
1632 func TestSubReqAndSubDelNokSameActionParallel(t *testing.T) {
1633 CaseBegin("TestSubReqAndSubDelNokSameActionParallel")
1636 rparams1 := &teststube2ap.E2StubSubsReqParams{}
1638 cretrans1 := xappConn1.SendSubsReq(t, rparams1, nil)
1640 // E2t: Receive SubsReq (first)
1641 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
1644 rparams2 := &teststube2ap.E2StubSubsReqParams{}
1646 subepcnt2 := mainCtrl.get_subs_entrypoint_cnt(t, crereq1.RequestId.InstanceId)
1647 cretrans2 := xappConn2.SendSubsReq(t, rparams2, nil)
1648 mainCtrl.wait_subs_entrypoint_cnt_change(t, crereq1.RequestId.InstanceId, subepcnt2, 10)
1650 // E2t: send SubsFail (first)
1651 fparams1 := &teststube2ap.E2StubSubsFailParams{}
1652 fparams1.Set(crereq1)
1653 e2termConn1.SendSubsFail(t, fparams1, cremsg1)
1655 // E2t: internal delete
1656 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
1657 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
1660 e2SubsId1 := xappConn1.RecvSubsFail(t, cretrans1)
1662 xappConn2.RecvSubsFail(t, cretrans2)
1664 //Wait that subs is cleaned
1665 mainCtrl.wait_subs_clean(t, e2SubsId1, 15)
1667 xappConn1.TestMsgChanEmpty(t)
1668 xappConn2.TestMsgChanEmpty(t)
1669 e2termConn1.TestMsgChanEmpty(t)
1670 mainCtrl.wait_registry_empty(t, 10)
1673 //-----------------------------------------------------------------------------
1674 // TestSubReqAndSubDelNoAnswerSameActionParallel
1677 // +-------+ +-------+ +---------+ +---------+
1678 // | xapp2 | | xapp1 | | submgr | | e2term |
1679 // +-------+ +-------+ +---------+ +---------+
1684 // | |------------->| |
1687 // | | |------------->|
1689 // |--------------------------->| |
1692 // | | |------------->|
1695 // | | | SubDelReq |
1696 // | | |------------->|
1698 // | | | SubDelResp |
1699 // | | |<-------------|
1701 //-----------------------------------------------------------------------------
1702 func TestSubReqAndSubDelNoAnswerSameActionParallel(t *testing.T) {
1703 CaseBegin("TestSubReqAndSubDelNoAnswerSameActionParallel")
1706 rparams1 := &teststube2ap.E2StubSubsReqParams{}
1708 xappConn1.SendSubsReq(t, rparams1, nil)
1710 crereq1, _ := e2termConn1.RecvSubsReq(t)
1713 rparams2 := &teststube2ap.E2StubSubsReqParams{}
1715 subepcnt2 := mainCtrl.get_subs_entrypoint_cnt(t, crereq1.RequestId.InstanceId)
1716 xappConn2.SendSubsReq(t, rparams2, nil)
1717 mainCtrl.wait_subs_entrypoint_cnt_change(t, crereq1.RequestId.InstanceId, subepcnt2, 10)
1719 //Req1 (retransmitted)
1720 e2termConn1.RecvSubsReq(t)
1722 delreq1, delmsg1 := e2termConn1.RecvSubsDelReq(t)
1723 e2termConn1.SendSubsDelResp(t, delreq1, delmsg1)
1725 //Wait that subs is cleaned
1726 mainCtrl.wait_subs_clean(t, delreq1.RequestId.InstanceId, 10)
1728 xappConn1.TestMsgChanEmpty(t)
1729 xappConn2.TestMsgChanEmpty(t)
1730 e2termConn1.TestMsgChanEmpty(t)
1731 mainCtrl.wait_registry_empty(t, 15)
1734 //----------------------------- Policy cases ---------------------------------
1735 //-----------------------------------------------------------------------------
1736 // TestSubReqPolicyAndSubDelOk
1739 // +-------+ +---------+ +---------+
1740 // | xapp | | submgr | | e2term |
1741 // +-------+ +---------+ +---------+
1744 // |------------->| |
1747 // | |------------->|
1750 // | |<-------------|
1753 // |<-------------| |
1757 // |------------->| |
1760 // | |------------->|
1763 // | |<-------------|
1766 // |<-------------| |
1768 //-----------------------------------------------------------------------------
1769 func TestSubReqPolicyAndSubDelOk(t *testing.T) {
1770 CaseBegin("TestSubReqAndSubDelOk")
1772 rparams1 := &teststube2ap.E2StubSubsReqParams{}
1774 rparams1.Req.ActionSetups[0].ActionType = e2ap.E2AP_ActionTypePolicy
1775 cretrans := xappConn1.SendSubsReq(t, rparams1, nil)
1777 crereq, cremsg := e2termConn1.RecvSubsReq(t)
1778 e2termConn1.SendSubsResp(t, crereq, cremsg)
1779 e2SubsId := xappConn1.RecvSubsResp(t, cretrans)
1780 deltrans := xappConn1.SendSubsDelReq(t, nil, e2SubsId)
1781 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
1783 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
1784 xappConn1.RecvSubsDelResp(t, deltrans)
1786 //Wait that subs is cleaned
1787 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
1789 xappConn1.TestMsgChanEmpty(t)
1790 xappConn2.TestMsgChanEmpty(t)
1791 e2termConn1.TestMsgChanEmpty(t)
1792 mainCtrl.wait_registry_empty(t, 10)
1795 //-----------------------------------------------------------------------------
1796 // TestSubReqPolicyChangeAndSubDelOk
1799 // +-------+ +---------+ +---------+
1800 // | xapp | | submgr | | e2term |
1801 // +-------+ +---------+ +---------+
1804 // |------------->| |
1807 // | |------------->|
1810 // | |<-------------|
1813 // |<-------------| |
1816 // |------------->| |
1819 // | |------------->|
1822 // | |<-------------|
1825 // |<-------------| |
1828 // |------------->| |
1831 // | |------------->|
1834 // | |<-------------|
1837 // |<-------------| |
1839 //-----------------------------------------------------------------------------
1841 func TestSubReqPolicyChangeAndSubDelOk(t *testing.T) {
1842 CaseBegin("TestSubReqAndSubDelOk")
1844 rparams1 := &teststube2ap.E2StubSubsReqParams{}
1846 rparams1.Req.ActionSetups[0].ActionType = e2ap.E2AP_ActionTypePolicy
1847 cretrans := xappConn1.SendSubsReq(t, rparams1, nil)
1849 crereq, cremsg := e2termConn1.RecvSubsReq(t)
1850 e2termConn1.SendSubsResp(t, crereq, cremsg)
1851 e2SubsId := xappConn1.RecvSubsResp(t, cretrans)
1854 rparams1.Req.RequestId.InstanceId = e2SubsId
1855 rparams1.Req.ActionSetups[0].SubsequentAction.TimetoWait = e2ap.E2AP_TimeToWaitW200ms
1856 xappConn1.SendSubsReq(t, rparams1, cretrans)
1858 crereq, cremsg = e2termConn1.RecvSubsReq(t)
1859 e2termConn1.SendSubsResp(t, crereq, cremsg)
1860 e2SubsId = xappConn1.RecvSubsResp(t, cretrans)
1861 deltrans := xappConn1.SendSubsDelReq(t, nil, e2SubsId)
1862 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
1864 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
1865 xappConn1.RecvSubsDelResp(t, deltrans)
1867 //Wait that subs is cleaned
1868 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
1870 xappConn1.TestMsgChanEmpty(t)
1871 xappConn2.TestMsgChanEmpty(t)
1872 e2termConn1.TestMsgChanEmpty(t)
1873 mainCtrl.wait_registry_empty(t, 10)
1876 //-----------------------------------------------------------------------------
1877 // TestSubReqAndSubDelOkTwoE2termParallel
1880 // +-------+ +---------+ +---------+ +---------+
1881 // | xapp | | submgr | | e2term1 | | e2term2 |
1882 // +-------+ +---------+ +---------+ +---------+
1887 // |------------->| | |
1890 // | |------------->| |
1893 // |------------->| | |
1896 // | |---------------------------->|
1899 // | |<-------------| |
1901 // |<-------------| | |
1903 // | |<----------------------------|
1905 // |<-------------| | |
1907 // | [SUBS 1 DELETE] | |
1909 // | [SUBS 2 DELETE] | |
1912 //-----------------------------------------------------------------------------
1913 func TestSubReqAndSubDelOkTwoE2termParallel(t *testing.T) {
1914 CaseBegin("TestSubReqAndSubDelOkTwoE2termParallel")
1917 cretrans1 := xappConn1.NewRmrTransactionId("", "RAN_NAME_1")
1918 xappConn1.SendSubsReq(t, nil, cretrans1)
1919 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
1921 cretrans2 := xappConn1.NewRmrTransactionId("", "RAN_NAME_11")
1922 xappConn1.SendSubsReq(t, nil, cretrans2)
1923 crereq2, cremsg2 := e2termConn2.RecvSubsReq(t)
1926 e2termConn1.SendSubsResp(t, crereq1, cremsg1)
1927 e2SubsId1 := xappConn1.RecvSubsResp(t, cretrans1)
1930 e2termConn2.SendSubsResp(t, crereq2, cremsg2)
1931 e2SubsId2 := xappConn1.RecvSubsResp(t, cretrans2)
1934 deltrans1 := xappConn1.SendSubsDelReq(t, nil, e2SubsId1)
1935 delreq1, delmsg1 := e2termConn1.RecvSubsDelReq(t)
1936 e2termConn1.SendSubsDelResp(t, delreq1, delmsg1)
1937 xappConn1.RecvSubsDelResp(t, deltrans1)
1938 //Wait that subs is cleaned
1939 mainCtrl.wait_subs_clean(t, e2SubsId1, 10)
1942 deltrans2 := xappConn1.SendSubsDelReq(t, nil, e2SubsId2)
1943 delreq2, delmsg2 := e2termConn2.RecvSubsDelReq(t)
1944 e2termConn2.SendSubsDelResp(t, delreq2, delmsg2)
1945 xappConn1.RecvSubsDelResp(t, deltrans2)
1946 //Wait that subs is cleaned
1947 mainCtrl.wait_subs_clean(t, e2SubsId2, 10)
1949 xappConn1.TestMsgChanEmpty(t)
1950 xappConn2.TestMsgChanEmpty(t)
1951 e2termConn1.TestMsgChanEmpty(t)
1952 e2termConn2.TestMsgChanEmpty(t)
1953 mainCtrl.wait_registry_empty(t, 10)
1956 //-----------------------------------------------------------------------------
1957 // TestSubReqInsertAndSubDelOk
1960 // +-------+ +---------+ +---------+
1961 // | xapp | | submgr | | e2term |
1962 // +-------+ +---------+ +---------+
1965 // |------------->| |
1968 // | |------------->|
1971 // | |<-------------|
1974 // |<-------------| |
1978 // |------------->| |
1981 // | |------------->|
1984 // | |<-------------|
1987 // |<-------------| |
1989 //-----------------------------------------------------------------------------
1990 func TestSubReqInsertAndSubDelOk(t *testing.T) {
1991 CaseBegin("TestInsertSubReqAndSubDelOk")
1993 rparams1 := &teststube2ap.E2StubSubsReqParams{}
1995 rparams1.Req.ActionSetups[0].ActionType = e2ap.E2AP_ActionTypeInsert
1996 cretrans := xappConn1.SendSubsReq(t, rparams1, nil)
1998 crereq, cremsg := e2termConn1.RecvSubsReq(t)
1999 e2termConn1.SendSubsResp(t, crereq, cremsg)
2000 e2SubsId := xappConn1.RecvSubsResp(t, cretrans)
2001 deltrans := xappConn1.SendSubsDelReq(t, nil, e2SubsId)
2002 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
2004 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
2005 xappConn1.RecvSubsDelResp(t, deltrans)
2007 //Wait that subs is cleaned
2008 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
2010 xappConn1.TestMsgChanEmpty(t)
2011 xappConn2.TestMsgChanEmpty(t)
2012 e2termConn1.TestMsgChanEmpty(t)
2013 mainCtrl.wait_registry_empty(t, 10)
2016 //-----------------------------------------------------------------------------
2017 // TestSubReqRetransmissionWithSameSubIdDiffXid
2019 // This case simulates case where xApp restarts and starts sending same
2020 // subscription requests which have already subscribed successfully
2023 // +-------+ +---------+ +---------+
2024 // | xapp | | submgr | | e2term |
2025 // +-------+ +---------+ +---------+
2028 // |------------->| |
2031 // | |------------->|
2034 // | |<-------------|
2037 // |<-------------| |
2039 // | xApp restart | |
2042 // | (retrans with same xApp generated subid but diff xid)
2043 // |------------->| |
2046 // |<-------------| |
2048 // | [SUBS DELETE] |
2051 //-----------------------------------------------------------------------------
2052 func TestSubReqRetransmissionWithSameSubIdDiffXid(t *testing.T) {
2053 CaseBegin("TestSubReqRetransmissionWithSameSubIdDiffXid")
2056 cretrans := xappConn1.SendSubsReq(t, nil, nil)
2057 crereq, cremsg := e2termConn1.RecvSubsReq(t)
2058 e2termConn1.SendSubsResp(t, crereq, cremsg)
2059 e2SubsId := xappConn1.RecvSubsResp(t, cretrans)
2061 // xApp restart here
2062 // --> artificial delay
2063 <-time.After(1 * time.Second)
2066 cretrans = xappConn1.SendSubsReq(t, nil, nil) //Retransmitted SubReq
2067 e2SubsId = xappConn1.RecvSubsResp(t, cretrans)
2070 deltrans := xappConn1.SendSubsDelReq(t, nil, e2SubsId)
2071 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
2072 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
2073 xappConn1.RecvSubsDelResp(t, deltrans)
2075 //Wait that subs is cleaned
2076 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
2078 xappConn1.TestMsgChanEmpty(t)
2079 xappConn2.TestMsgChanEmpty(t)
2080 e2termConn1.TestMsgChanEmpty(t)
2081 mainCtrl.wait_registry_empty(t, 10)
2084 //-----------------------------------------------------------------------------
2085 // TestSubReqNokAndSubDelOkWithRestartInMiddle
2088 // +-------+ +---------+ +---------+
2089 // | xapp | | submgr | | e2term |
2090 // +-------+ +---------+ +---------+
2093 // |------------->| |
2096 // | |------------->|
2101 // | Submgr restart |
2105 // | |------------->|
2108 // | |<-------------|
2111 //-----------------------------------------------------------------------------
2113 func TestSubReqNokAndSubDelOkWithRestartInMiddle(t *testing.T) {
2114 CaseBegin("TestSubReqNokAndSubDelOkWithRestartInMiddle")
2116 // Remove possible existing subscrition
2117 mainCtrl.removeExistingSubscriptions(t)
2119 mainCtrl.SetResetTestFlag(t, true) // subs.DoNotWaitSubResp will be set TRUE for the subscription
2120 xappConn1.SendSubsReq(t, nil, nil)
2121 e2termConn1.RecvSubsReq(t)
2122 mainCtrl.SetResetTestFlag(t, false)
2124 resp, _ := xapp.Subscription.QuerySubscriptions()
2125 assert.Equal(t, resp[0].Meid, "RAN_NAME_1")
2126 assert.Equal(t, resp[0].ClientEndpoint, []string{"localhost:13560"})
2127 e2SubsId := uint32(resp[0].SubscriptionID)
2128 t.Logf("e2SubsId = %v", e2SubsId)
2130 mainCtrl.SimulateRestart(t)
2131 xapp.Logger.Debug("mainCtrl.SimulateRestart done")
2133 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
2134 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
2136 // Wait that subs is cleaned
2137 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
2139 xappConn1.TestMsgChanEmpty(t)
2140 xappConn2.TestMsgChanEmpty(t)
2141 e2termConn1.TestMsgChanEmpty(t)
2142 mainCtrl.wait_registry_empty(t, 10)
2145 //-----------------------------------------------------------------------------
2146 // TestSubReqAndSubDelOkWithRestartInMiddle
2149 // +-------+ +---------+ +---------+
2150 // | xapp | | submgr | | e2term |
2151 // +-------+ +---------+ +---------+
2154 // |------------->| |
2157 // | |------------->|
2160 // | |<-------------|
2163 // |<-------------| |
2166 // | Submgr restart |
2169 // |------------->| |
2172 // | |------------->|
2175 // | |<-------------|
2178 // |<-------------| |
2180 //-----------------------------------------------------------------------------
2182 func TestSubReqAndSubDelOkWithRestartInMiddle(t *testing.T) {
2183 CaseBegin("TestSubReqAndSubDelOkWithRestartInMiddle")
2185 cretrans := xappConn1.SendSubsReq(t, nil, nil)
2186 crereq, cremsg := e2termConn1.RecvSubsReq(t)
2187 e2termConn1.SendSubsResp(t, crereq, cremsg)
2188 e2SubsId := xappConn1.RecvSubsResp(t, cretrans)
2190 // Check subscription
2191 resp, _ := xapp.Subscription.QuerySubscriptions()
2192 assert.Equal(t, resp[0].SubscriptionID, int64(e2SubsId))
2193 assert.Equal(t, resp[0].Meid, "RAN_NAME_1")
2194 assert.Equal(t, resp[0].ClientEndpoint, []string{"localhost:13560"})
2196 mainCtrl.SimulateRestart(t)
2197 xapp.Logger.Debug("mainCtrl.SimulateRestart done")
2199 // Check that subscription is restored correctly after restart
2200 resp, _ = xapp.Subscription.QuerySubscriptions()
2201 assert.Equal(t, resp[0].SubscriptionID, int64(e2SubsId))
2202 assert.Equal(t, resp[0].Meid, "RAN_NAME_1")
2203 assert.Equal(t, resp[0].ClientEndpoint, []string{"localhost:13560"})
2205 deltrans := xappConn1.SendSubsDelReq(t, nil, e2SubsId)
2206 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
2207 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
2208 xappConn1.RecvSubsDelResp(t, deltrans)
2210 //Wait that subs is cleaned
2211 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
2213 xappConn1.TestMsgChanEmpty(t)
2214 xappConn2.TestMsgChanEmpty(t)
2215 e2termConn1.TestMsgChanEmpty(t)
2216 mainCtrl.wait_registry_empty(t, 10)
2219 //-----------------------------------------------------------------------------
2220 // TestSubReqAndSubDelOkSameActionWithRestartsInMiddle
2223 // +-------+ +-------+ +---------+ +---------+
2224 // | xapp2 | | xapp1 | | submgr | | e2term |
2225 // +-------+ +-------+ +---------+ +---------+
2230 // | |------------->| |
2233 // | | |------------->|
2235 // | | |<-------------|
2237 // | |<-------------| |
2240 // | submgr restart |
2245 // |--------------------------->| |
2248 // |<---------------------------| |
2250 // | | SubDelReq 1 | |
2251 // | |------------->| |
2253 // | | SubDelResp 1 | |
2254 // | |<-------------| |
2258 // | submgr restart |
2261 // | SubDelReq 2 | |
2262 // |--------------------------->| |
2264 // | | | SubDelReq 2 |
2265 // | | |------------->|
2267 // | | | SubDelReq 2 |
2268 // | | |------------->|
2270 // | SubDelResp 2 | |
2271 // |<---------------------------| |
2273 //-----------------------------------------------------------------------------
2275 func TestSubReqAndSubDelOkSameActionWithRestartsInMiddle(t *testing.T) {
2276 CaseBegin("TestSubReqAndSubDelOkSameActionWithRestartsInMiddle")
2279 rparams1 := &teststube2ap.E2StubSubsReqParams{}
2281 cretrans1 := xappConn1.SendSubsReq(t, rparams1, nil)
2282 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
2283 e2termConn1.SendSubsResp(t, crereq1, cremsg1)
2284 e2SubsId1 := xappConn1.RecvSubsResp(t, cretrans1)
2287 rparams2 := &teststube2ap.E2StubSubsReqParams{}
2289 cretrans2 := xappConn2.SendSubsReq(t, rparams2, nil)
2290 e2SubsId2 := xappConn2.RecvSubsResp(t, cretrans2)
2292 // Check subscription
2293 resp, _ := xapp.Subscription.QuerySubscriptions() ////////////////////////////////
2294 assert.Equal(t, resp[0].SubscriptionID, int64(e2SubsId1))
2295 assert.Equal(t, resp[0].Meid, "RAN_NAME_1")
2296 assert.Equal(t, resp[0].ClientEndpoint, []string{"localhost:13560", "localhost:13660"})
2298 mainCtrl.SimulateRestart(t)
2299 xapp.Logger.Debug("mainCtrl.SimulateRestart done")
2301 // Check that subscription is restored correctly after restart
2302 resp, _ = xapp.Subscription.QuerySubscriptions()
2303 assert.Equal(t, resp[0].SubscriptionID, int64(e2SubsId1))
2304 assert.Equal(t, resp[0].Meid, "RAN_NAME_1")
2305 assert.Equal(t, resp[0].ClientEndpoint, []string{"localhost:13560", "localhost:13660"})
2308 deltrans1 := xappConn1.SendSubsDelReq(t, nil, e2SubsId1)
2309 xapp.Logger.Debug("xappConn1.RecvSubsDelResp")
2310 xappConn1.RecvSubsDelResp(t, deltrans1)
2311 xapp.Logger.Debug("xappConn1.RecvSubsDelResp received")
2313 mainCtrl.SimulateRestart(t)
2314 xapp.Logger.Debug("mainCtrl.SimulateRestart done")
2317 deltrans2 := xappConn2.SendSubsDelReq(t, nil, e2SubsId2)
2318 delreq2, delmsg2 := e2termConn1.RecvSubsDelReq(t)
2320 e2termConn1.SendSubsDelResp(t, delreq2, delmsg2)
2321 xappConn2.RecvSubsDelResp(t, deltrans2)
2323 //Wait that subs is cleaned
2324 mainCtrl.wait_subs_clean(t, e2SubsId2, 10)
2326 xappConn1.TestMsgChanEmpty(t)
2327 xappConn2.TestMsgChanEmpty(t)
2328 e2termConn1.TestMsgChanEmpty(t)
2329 mainCtrl.wait_registry_empty(t, 10)
2332 //*****************************************************************************
2333 // REST interface test cases
2334 //*****************************************************************************
2336 //-----------------------------------------------------------------------------
2337 // Test debug GET and POST requests
2340 // +-------+ +---------+
2341 // | user | | submgr |
2342 // +-------+ +---------+
2349 func TestGetSubscriptions(t *testing.T) {
2351 mainCtrl.sendGetRequest(t, "localhost:8088", "/ric/v1/subscriptions")
2354 func TestGetSymptomData(t *testing.T) {
2356 mainCtrl.sendGetRequest(t, "localhost:8080", "/ric/v1/symptomdata")
2359 func TestPostdeleteSubId(t *testing.T) {
2361 mainCtrl.sendPostRequest(t, "localhost:8080", "/ric/v1/test/deletesubid=1")
2364 func TestPostEmptyDb(t *testing.T) {
2366 mainCtrl.sendPostRequest(t, "localhost:8080", "/ric/v1/test/emptydb")
2369 //-----------------------------------------------------------------------------
2370 // TestRESTSubReqAndRouteNok
2373 // +-------+ +---------+ +---------+
2374 // | xapp | | submgr | | rtmgr |
2375 // +-------+ +---------+ +---------+
2378 // |---------------->| |
2380 // | RESTSubResp | |
2381 // |<----------------| |
2382 // | | RouteCreate |
2383 // | |------------->|
2385 // | | RouteCreate |
2387 // | |(Bad request) |
2388 // | |<-------------|
2390 // |<----------------| |
2392 // | [SUBS INT DELETE] |
2394 // | RESTSubDelReq | |
2395 // |---------------->| |
2396 // | RESTSubDelResp | |
2397 // |<----------------| |
2399 //-----------------------------------------------------------------------------
2400 func TestRESTSubReqAndRouteNok(t *testing.T) {
2401 CaseBegin("TestRESTSubReqAndRouteNok")
2403 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
2404 Counter{cSubReqFromXapp, 1},
2405 Counter{cRouteCreateFail, 1},
2406 Counter{cSubRespToXapp, 1},
2407 Counter{cSubDelReqFromXapp, 1},
2408 Counter{cSubDelRespToXapp, 1},
2411 const subReqCount int = 1
2412 const parameterSet = 1
2413 const actionDefinitionPresent bool = true
2414 const actionParamCount int = 1
2415 // Add delay for rtmgt HTTP handling so that HTTP response is received before notify on XAPP side
2416 waiter := rtmgrHttp.AllocNextSleep(50, false)
2417 newSubsId := mainCtrl.get_registry_next_subid(t)
2420 params := xappConn1.GetRESTSubsReqReportParams(subReqCount, parameterSet, actionDefinitionPresent, actionParamCount)
2421 restSubId := xappConn1.SendRESTSubsReq(t, params)
2422 xappConn1.ExpectRESTNotification(t, restSubId)
2423 waiter.WaitResult(t)
2425 e2SubsId := xappConn1.WaitRESTNotification(t, restSubId)
2426 xapp.Logger.Info("TEST: REST notification received e2SubsId=%v", e2SubsId)
2429 xappConn1.SendRESTSubsDelReq(t, &restSubId)
2431 // Wait that subs is cleaned
2432 mainCtrl.wait_subs_clean(t, newSubsId, 10)
2433 waitSubsCleanup(t, e2SubsId, 10)
2434 mainCtrl.VerifyCounterValues(t)
2437 func TestRESTSubReqAndRouteUpdateNok(t *testing.T) {
2438 CaseBegin("TestSubReqAndRouteUpdateNok")
2440 //Init counter check
2441 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
2442 Counter{cSubReqFromXapp, 2},
2443 Counter{cSubReqToE2, 1},
2444 Counter{cSubRespFromE2, 1},
2445 Counter{cSubRespToXapp, 2},
2446 Counter{cRouteCreateUpdateFail, 1},
2447 Counter{cSubDelReqFromXapp, 1},
2448 Counter{cSubDelReqToE2, 1},
2449 Counter{cSubDelRespFromE2, 1},
2450 Counter{cSubDelRespToXapp, 1},
2453 var params *teststube2ap.RESTSubsReqParams = nil
2456 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
2458 queryXappSubscription(t, int64(e2SubsId), "RAN_NAME_1", []string{"localhost:13560"})
2460 // xapp2 ROUTE creation shall fail with 400 from rtmgr -> submgr
2461 waiter := rtmgrHttp.AllocNextEvent(false)
2462 newSubsId := mainCtrl.get_registry_next_subid(t)
2463 params = xappConn2.GetRESTSubsReqReportParams(subReqCount, parameterSet, actionDefinitionPresent, actionParamCount)
2464 params.SetMeid("RAN_NAME_1")
2465 restSubId2 := xappConn2.SendRESTSubsReq(t, params)
2466 xapp.Logger.Info("Send REST subscriber request for second subscriber : %v", restSubId2)
2467 xappConn2.ExpectRESTNotification(t, restSubId2)
2468 waiter.WaitResult(t)
2469 // e2SubsId2 := xappConn2.WaitRESTNotification(t, restSubId2) - TOD: missing delete
2470 xappConn2.WaitRESTNotification(t, restSubId2)
2472 queryXappSubscription(t, int64(e2SubsId), "RAN_NAME_1", []string{"localhost:13560"})
2474 deleteSubscription(t, xappConn1, e2termConn1, &restSubId)
2476 mainCtrl.wait_subs_clean(t, newSubsId, 10)
2477 //Wait that subs is cleaned
2478 waitSubsCleanup(t, e2SubsId, 10)
2480 mainCtrl.VerifyCounterValues(t)
2483 func TestRESTSubDelReqAndRouteDeleteNok(t *testing.T) {
2484 CaseBegin("TestRESTSubDelReqAndRouteDeleteNok")
2486 // Init counter check
2487 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
2488 Counter{cSubReqFromXapp, 1},
2489 Counter{cSubReqToE2, 1},
2490 Counter{cSubRespFromE2, 1},
2491 Counter{cSubRespToXapp, 1},
2492 Counter{cSubDelReqFromXapp, 1},
2493 Counter{cRouteDeleteFail, 1},
2494 Counter{cSubDelReqToE2, 1},
2495 Counter{cSubDelRespFromE2, 1},
2496 Counter{cSubDelRespToXapp, 1},
2499 var params *teststube2ap.RESTSubsReqParams = nil
2502 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
2504 queryXappSubscription(t, int64(e2SubsId), "RAN_NAME_1", []string{"localhost:13560"})
2506 waiter := rtmgrHttp.AllocNextEvent(false)
2507 xappConn1.SendRESTSubsDelReq(t, &restSubId)
2508 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
2509 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
2510 waiter.WaitResult(t)
2512 waitSubsCleanup(t, e2SubsId, 10)
2514 mainCtrl.VerifyCounterValues(t)
2517 func TestRESTSubMergeDelAndRouteUpdateNok(t *testing.T) {
2518 CaseBegin("TestRESTSubMergeDelAndRouteUpdateNok")
2520 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
2521 Counter{cSubReqFromXapp, 2},
2522 Counter{cSubReqToE2, 1},
2523 Counter{cSubRespFromE2, 1},
2524 Counter{cSubRespToXapp, 2},
2525 Counter{cSubDelReqFromXapp, 2},
2526 Counter{cRouteDeleteUpdateFail, 1},
2527 Counter{cSubDelReqToE2, 1},
2528 Counter{cSubDelRespFromE2, 1},
2529 Counter{cSubDelRespToXapp, 2},
2532 var params *teststube2ap.RESTSubsReqParams = nil
2535 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
2537 queryXappSubscription(t, int64(e2SubsId), "RAN_NAME_1", []string{"localhost:13560"})
2538 restSubId2, e2SubsId2 := createXapp2MergedSubscription(t, "RAN_NAME_1")
2540 queryXappSubscription(t, int64(e2SubsId), "RAN_NAME_1", []string{"localhost:13560", "localhost:13660"})
2542 //Del1, this shall fail on rtmgr side
2543 waiter := rtmgrHttp.AllocNextEvent(false)
2544 xappConn1.SendRESTSubsDelReq(t, &restSubId)
2545 waiter.WaitResult(t)
2547 queryXappSubscription(t, int64(e2SubsId), "RAN_NAME_1", []string{"localhost:13660"})
2550 deleteXapp2Subscription(t, &restSubId2)
2552 waitSubsCleanup(t, e2SubsId2, 10)
2554 mainCtrl.VerifyCounterValues(t)
2557 //-----------------------------------------------------------------------------
2558 // TestRESTSubReqRetransmission
2561 // +-------+ +---------+ +---------+
2562 // | xapp | | submgr | | e2term |
2563 // +-------+ +---------+ +---------+
2565 // | RESTSubReq1 | |
2566 // |---------------->| |
2568 // | RESTSubResp | |
2569 // |<----------------| |
2571 // | |------------->|
2573 // | RESTSubReq2 | |
2575 // |---------------->| |
2578 // | |------------->|
2579 // | RESTSubResp2 | |
2580 // |<----------------| |
2582 // | |<-------------|
2584 // |<----------------| |
2586 // | |<-------------|
2588 // |<----------------| |
2590 // | [SUBS DELETE] |
2593 //-----------------------------------------------------------------------------
2595 func TestRESTSubReqRetransmission(t *testing.T) {
2596 CaseBegin("TestRESTSubReqRetransmission")
2598 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
2599 Counter{cSubReqFromXapp, 2},
2600 Counter{cSubReqToE2, 2},
2601 Counter{cSubRespFromE2, 2},
2602 Counter{cSubRespToXapp, 2},
2603 Counter{cSubDelReqFromXapp, 2},
2604 Counter{cSubDelReqToE2, 2},
2605 Counter{cSubDelRespFromE2, 2},
2606 Counter{cSubDelRespToXapp, 2},
2608 // Retry/duplicate will get the same way as the first request. Submgr cannot detect duplicate RESTRequests
2609 // Contianed duplicate messages from same xapp will not be merged. Here we use xappConn2 to simulate sending
2610 // second request from same xapp as doing it from xappConn1 would not work as notification would not be received
2613 const subReqCount int = 1
2614 const parameterSet = 1
2615 const actionDefinitionPresent bool = true
2616 const actionParamCount int = 1
2618 // In order to force both XAPP's to create their own subscriptions, force rtmgr to block a while so that 2nd create
2619 // gets into execution before the rtmgrg responds for the first one.
2620 waiter := rtmgrHttp.AllocNextSleep(10, true)
2621 params := xappConn1.GetRESTSubsReqReportParams(subReqCount, parameterSet, actionDefinitionPresent, actionParamCount)
2622 restSubId1 := xappConn1.SendRESTSubsReq(t, params)
2623 restSubId2 := xappConn2.SendRESTSubsReq(t, params)
2625 waiter.WaitResult(t)
2627 xappConn1.WaitListedRestNotifications(t, []string{restSubId1, restSubId2})
2629 // Depending one goroutine scheduling order, we cannot say for sure which xapp reaches e2term first. Thus
2630 // the order is not significant he6re.
2631 crereq, cremsg := e2termConn1.RecvSubsReq(t)
2632 e2termConn1.SendSubsResp(t, crereq, cremsg)
2633 crereq, cremsg = e2termConn1.RecvSubsReq(t)
2634 e2termConn1.SendSubsResp(t, crereq, cremsg)
2636 e2SubsIdA := <-xappConn1.ListedRESTNotifications
2637 xapp.Logger.Info("TEST: 1.st XAPP notification received e2SubsId=%v", e2SubsIdA)
2638 e2SubsIdB := <-xappConn1.ListedRESTNotifications
2639 xapp.Logger.Info("TEST: 2.nd XAPP notification received e2SubsId=%v", e2SubsIdB)
2642 xappConn1.SendRESTSubsDelReq(t, &restSubId1)
2643 delreq1, delmsg1 := e2termConn1.RecvSubsDelReq(t)
2644 e2termConn1.SendSubsDelResp(t, delreq1, delmsg1)
2647 xappConn2.SendRESTSubsDelReq(t, &restSubId2)
2648 delreq2, delmsg2 := e2termConn1.RecvSubsDelReq(t)
2649 e2termConn1.SendSubsDelResp(t, delreq2, delmsg2)
2651 mainCtrl.wait_multi_subs_clean(t, []uint32{e2SubsIdA.E2SubsId, e2SubsIdB.E2SubsId}, 10)
2653 waitSubsCleanup(t, e2SubsIdB.E2SubsId, 10)
2655 mainCtrl.VerifyCounterValues(t)
2658 func TestRESTSubDelReqRetransmission(t *testing.T) {
2659 CaseBegin("TestRESTSubDelReqRetransmission")
2661 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
2662 Counter{cSubReqFromXapp, 1},
2663 Counter{cSubReqToE2, 1},
2664 Counter{cSubRespFromE2, 1},
2665 Counter{cSubRespToXapp, 1},
2666 Counter{cSubDelReqFromXapp, 2},
2667 Counter{cSubDelReqToE2, 1},
2668 Counter{cSubDelRespFromE2, 1},
2669 Counter{cSubDelRespToXapp, 1},
2672 var params *teststube2ap.RESTSubsReqParams = nil
2675 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
2677 queryXappSubscription(t, int64(e2SubsId), "RAN_NAME_1", []string{"localhost:13560"})
2680 xappConn1.SendRESTSubsDelReq(t, &restSubId)
2681 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
2683 seqBef := mainCtrl.get_msgcounter(t)
2684 xappConn1.SendRESTSubsDelReq(t, &restSubId)
2685 mainCtrl.wait_msgcounter_change(t, seqBef, 10)
2687 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
2689 waitSubsCleanup(t, e2SubsId, 10)
2691 mainCtrl.VerifyCounterValues(t)
2694 //-----------------------------------------------------------------------------
2695 // TestRESTSubReqDelReq
2698 // +-------+ +---------+ +---------+
2699 // | xapp | | submgr | | e2term |
2700 // +-------+ +---------+ +---------+
2703 // |---------------->| |
2705 // | RESTSubResp | |
2706 // |<----------------| |
2708 // | |------------->|
2709 // | RESTSubDelReq | |
2710 // |---------------->| |
2711 // | RESTSubDelResp | |
2713 // |<----------------| |
2715 // | |<-------------|
2717 // |<----------------| |
2719 // | [SUBS DELETE] |
2722 //-----------------------------------------------------------------------------
2723 func TestRESTSubReqDelReq(t *testing.T) {
2724 CaseBegin("TestRESTSubReqDelReq")
2726 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
2727 Counter{cSubReqFromXapp, 1},
2728 Counter{cSubReqToE2, 1},
2729 Counter{cSubRespFromE2, 1},
2730 Counter{cSubRespToXapp, 1},
2731 Counter{cSubDelReqFromXapp, 2},
2732 Counter{cSubDelReqToE2, 1},
2733 Counter{cSubDelRespFromE2, 1},
2734 Counter{cSubDelRespToXapp, 1},
2737 const subReqCount int = 1
2738 const parameterSet = 1
2739 const actionDefinitionPresent bool = true
2740 const actionParamCount int = 1
2743 params := xappConn1.GetRESTSubsReqReportParams(subReqCount, parameterSet, actionDefinitionPresent, actionParamCount)
2744 restSubId := xappConn1.SendRESTSubsReq(t, params)
2746 // Del. This will fail as processing of the subscription
2747 // is still ongoing in submgr. Deletion is not allowed before
2748 // subscription creation has been completed.
2749 xappConn1.SendRESTSubsDelReq(t, &restSubId)
2750 crereq, cremsg := e2termConn1.RecvSubsReq(t)
2751 xappConn1.ExpectRESTNotification(t, restSubId)
2752 e2termConn1.SendSubsResp(t, crereq, cremsg)
2753 e2SubsId := xappConn1.WaitRESTNotification(t, restSubId)
2756 xappConn1.SendRESTSubsDelReq(t, &restSubId)
2758 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
2759 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
2761 // Wait that subs is cleaned
2762 waitSubsCleanup(t, e2SubsId, 10)
2763 mainCtrl.VerifyCounterValues(t)
2767 func TestRESTSubDelReqCollision(t *testing.T) {
2768 CaseBegin("TestRESTSubDelReqCollision - not relevant for REST API")
2771 func TestRESTSubReqAndSubDelOkTwoParallel(t *testing.T) {
2772 CaseBegin("TestRESTSubReqAndSubDelOkTwoParallel")
2774 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
2775 Counter{cSubReqFromXapp, 2},
2776 Counter{cSubReqToE2, 2},
2777 Counter{cSubRespFromE2, 2},
2778 Counter{cSubRespToXapp, 2},
2779 Counter{cSubDelReqFromXapp, 2},
2780 Counter{cSubDelReqToE2, 2},
2781 Counter{cSubDelRespFromE2, 2},
2782 Counter{cSubDelRespToXapp, 2},
2786 params := xappConn1.GetRESTSubsReqReportParams(subReqCount, parameterSet, actionDefinitionPresent, actionParamCount)
2787 restSubId1 := xappConn1.SendRESTSubsReq(t, params)
2788 xapp.Logger.Info("Send 1st REST subscriber request for subscriberId : %v", restSubId1)
2791 params = xappConn2.GetRESTSubsReqReportParams(subReqCount, parameterSet, actionDefinitionPresent, actionParamCount)
2792 restSubId2 := xappConn2.SendRESTSubsReq(t, params)
2793 xapp.Logger.Info("Send 2nd REST subscriber request for subscriberId : %v", restSubId2)
2795 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
2796 crereq2, cremsg2 := e2termConn1.RecvSubsReq(t)
2798 //XappConn1 receives both of the responses
2799 xappConn1.WaitListedRestNotifications(t, []string{restSubId1, restSubId2})
2802 e2termConn1.SendSubsResp(t, crereq1, cremsg1)
2804 e2termConn1.SendSubsResp(t, crereq2, cremsg2)
2806 e2SubsIdA := <-xappConn1.ListedRESTNotifications
2807 xapp.Logger.Info("TEST: 1.st XAPP notification received e2SubsId=%v", e2SubsIdA)
2808 e2SubsIdB := <-xappConn1.ListedRESTNotifications
2809 xapp.Logger.Info("TEST: 2.nd XAPP notification received e2SubsId=%v", e2SubsIdB)
2812 deleteSubscription(t, xappConn1, e2termConn1, &restSubId1)
2814 deleteSubscription(t, xappConn2, e2termConn1, &restSubId2)
2816 //Wait that subs is cleaned
2817 mainCtrl.wait_subs_clean(t, e2SubsIdA.E2SubsId, 10)
2818 waitSubsCleanup(t, e2SubsIdB.E2SubsId, 10)
2820 mainCtrl.VerifyCounterValues(t)
2824 func TestRESTSameSubsDiffRan(t *testing.T) {
2825 CaseBegin("TestRESTSameSubsDiffRan")
2827 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
2828 Counter{cSubReqFromXapp, 2},
2829 Counter{cSubReqToE2, 2},
2830 Counter{cSubRespFromE2, 2},
2831 Counter{cSubRespToXapp, 2},
2832 Counter{cSubDelReqFromXapp, 2},
2833 Counter{cSubDelReqToE2, 2},
2834 Counter{cSubDelRespFromE2, 2},
2835 Counter{cSubDelRespToXapp, 2},
2838 params := xappConn1.GetRESTSubsReqReportParams(subReqCount, parameterSet, actionDefinitionPresent, actionParamCount)
2839 restSubId1, e2SubsId1 := createSubscription(t, xappConn1, e2termConn1, params)
2840 xapp.Logger.Info("Send 1st REST subscriber request for subscriberId : %v", restSubId1)
2842 params = xappConn1.GetRESTSubsReqReportParams(subReqCount, parameterSet, actionDefinitionPresent, actionParamCount)
2843 params.SetMeid("RAN_NAME_2")
2844 restSubId2, e2SubsId2 := createSubscription(t, xappConn1, e2termConn1, params)
2845 xapp.Logger.Info("Send 2nd REST subscriber request for subscriberId : %v", restSubId2)
2848 deleteSubscription(t, xappConn1, e2termConn1, &restSubId1)
2850 deleteSubscription(t, xappConn1, e2termConn1, &restSubId2)
2852 //Wait that subs is cleaned
2853 mainCtrl.wait_subs_clean(t, e2SubsId1, 10)
2854 waitSubsCleanup(t, e2SubsId2, 10)
2856 mainCtrl.VerifyCounterValues(t)
2860 func TestRESTSubReqRetryInSubmgr(t *testing.T) {
2861 CaseBegin("TestRESTSubReqRetryInSubmgr start")
2863 // Init counter check
2864 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
2865 Counter{cSubReqFromXapp, 1},
2866 Counter{cSubReqToE2, 1},
2867 Counter{cSubReReqToE2, 1},
2868 Counter{cSubRespFromE2, 1},
2869 Counter{cSubRespToXapp, 1},
2870 Counter{cSubDelReqFromXapp, 1},
2871 Counter{cSubDelReqToE2, 1},
2872 Counter{cSubDelRespFromE2, 1},
2873 Counter{cSubDelRespToXapp, 1},
2876 params := xappConn1.GetRESTSubsReqReportParams(subReqCount, parameterSet, actionDefinitionPresent, actionParamCount)
2877 restSubId := xappConn1.SendRESTSubsReq(t, params)
2879 xapp.Logger.Info("Send REST subscriber request for subscriber : %v", restSubId)
2881 // Catch the first message and ignore it
2882 crereq, cremsg := e2termConn1.RecvSubsReq(t)
2883 xapp.Logger.Info("Ignore REST subscriber request for subscriber : %v", restSubId)
2885 // The second request is being handled normally
2886 crereq, cremsg = e2termConn1.RecvSubsReq(t)
2887 xappConn1.ExpectRESTNotification(t, restSubId)
2888 e2termConn1.SendSubsResp(t, crereq, cremsg)
2889 e2SubsId := xappConn1.WaitRESTNotification(t, restSubId)
2891 queryXappSubscription(t, int64(e2SubsId), "RAN_NAME_1", []string{"localhost:13560"})
2893 deleteSubscription(t, xappConn1, e2termConn1, &restSubId)
2895 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
2896 //Wait that subs is cleaned
2897 waitSubsCleanup(t, e2SubsId, 10)
2899 mainCtrl.VerifyCounterValues(t)
2903 //-----------------------------------------------------------------------------
2904 // TestRESTSubReqTwoRetriesNoRespSubDelRespInSubmgr
2907 // +-------+ +---------+ +---------+
2908 // | xapp | | submgr | | e2term |
2909 // +-------+ +---------+ +---------+
2912 // |---------------->| |
2914 // | RESTSubResp | |
2915 // |<----------------| |
2917 // | |------------->|
2921 // | |------------->|
2924 // | |------------->|
2928 // | |------------->|
2932 // | |<-------------|
2935 // |<----------------| |
2937 // | [SUBS DELETE] |
2940 //-----------------------------------------------------------------------------
2941 func TestRESTSubReqRetryNoRespSubDelRespInSubmgr(t *testing.T) {
2942 CaseBegin("TestRESTSubReqTwoRetriesNoRespSubDelRespInSubmgr start")
2944 // Init counter check
2945 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
2946 Counter{cSubReqFromXapp, 1},
2947 Counter{cSubReqToE2, 1},
2948 Counter{cSubReReqToE2, 1},
2949 Counter{cSubReqTimerExpiry, 2},
2950 Counter{cSubDelReqToE2, 1},
2951 Counter{cSubDelRespFromE2, 1},
2954 params := xappConn1.GetRESTSubsReqReportParams(subReqCount, parameterSet, actionDefinitionPresent, actionParamCount)
2955 restSubId := xappConn1.SendRESTSubsReq(t, params)
2956 xapp.Logger.Info("Send REST subscriber request for subscriber : %v", restSubId)
2958 e2termConn1.RecvSubsReq(t)
2959 xapp.Logger.Info("Ignore 1st REST subscriber request for subscriber : %v", restSubId)
2961 e2termConn1.RecvSubsReq(t)
2962 xapp.Logger.Info("Ignore 2nd REST subscriber request for subscriber : %v", restSubId)
2964 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
2965 xappConn1.ExpectRESTNotification(t, restSubId)
2966 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
2967 // e2SubsId := xappConn1.WaitRESTNotification(t, restSubId) - TODO: Should we delete this?
2968 xappConn1.WaitRESTNotification(t, restSubId)
2970 // Wait that subs is cleaned
2971 waitSubsCleanup(t, delreq.RequestId.InstanceId, 10)
2973 mainCtrl.VerifyCounterValues(t)
2976 func TestREST2eTermNotRespondingToSubReq(t *testing.T) {
2977 CaseBegin("TestREST2eTermNotRespondingToSubReq start")
2979 // Init counter check
2980 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
2981 Counter{cSubReqFromXapp, 1},
2982 Counter{cSubReqToE2, 1},
2983 Counter{cSubReReqToE2, 1},
2984 Counter{cSubReqTimerExpiry, 2},
2985 Counter{cSubDelReqToE2, 1},
2986 Counter{cSubDelReqTimerExpiry, 2},
2989 params := xappConn1.GetRESTSubsReqReportParams(subReqCount, parameterSet, actionDefinitionPresent, actionParamCount)
2990 restSubId := xappConn1.SendRESTSubsReq(t, params)
2991 xapp.Logger.Info("Send REST subscriber request for subscriber : %v", restSubId)
2993 e2termConn1.RecvSubsReq(t)
2994 xapp.Logger.Info("Ignore 1st REST subscriber request for subscriber : %v", restSubId)
2996 e2termConn1.RecvSubsReq(t)
2997 xapp.Logger.Info("Ignore 2nd REST subscriber request for subscriber : %v", restSubId)
2999 e2termConn1.RecvSubsDelReq(t)
3000 xapp.Logger.Info("Ignore 1st INTERNAL delete request for subscriber : %v", restSubId)
3002 xappConn1.ExpectRESTNotification(t, restSubId)
3003 e2termConn1.RecvSubsDelReq(t)
3004 xapp.Logger.Info("Ignore 2nd INTERNAL delete request for subscriber : %v", restSubId)
3006 e2SubsId := xappConn1.WaitRESTNotification(t, restSubId)
3008 waitSubsCleanup(t, e2SubsId, 10)
3010 mainCtrl.VerifyCounterValues(t)
3014 //-----------------------------------------------------------------------------
3015 // TestRESTSubReqTwoRetriesNoRespSubDelRespInSubmgr
3018 // +-------+ +---------+ +---------+
3019 // | xapp | | submgr | | e2term |
3020 // +-------+ +---------+ +---------+
3023 // |---------------->| |
3025 // | RESTSubResp | |
3026 // |<----------------| |
3028 // | |------------->|
3032 // | |------------->|
3035 // | |------------->|
3039 // | |------------->|
3043 // | |<-------------|
3046 // |<----------------| |
3048 // | [SUBS DELETE] |
3051 //-----------------------------------------------------------------------------
3052 func TestRESTSubReqTwoRetriesNoRespAtAllInSubmgr(t *testing.T) {
3053 CaseBegin("TestRESTSubReqTwoRetriesNoRespAtAllInSubmgr start")
3055 // Init counter check
3056 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
3057 Counter{cSubReqFromXapp, 1},
3058 Counter{cSubReqToE2, 1},
3059 Counter{cSubReReqToE2, 1},
3060 Counter{cSubReqTimerExpiry, 2},
3061 Counter{cSubDelReqToE2, 1},
3062 Counter{cSubDelReReqToE2, 1},
3063 Counter{cSubDelReqTimerExpiry, 2},
3066 params := xappConn1.GetRESTSubsReqReportParams(subReqCount, parameterSet, actionDefinitionPresent, actionParamCount)
3067 restSubId := xappConn1.SendRESTSubsReq(t, params)
3068 xapp.Logger.Info("Send REST subscriber request for subscriber : %v", restSubId)
3070 e2termConn1.RecvSubsReq(t)
3071 xapp.Logger.Info("Ignore 1st REST subscriber request for subscriber : %v", restSubId)
3073 e2termConn1.RecvSubsReq(t)
3074 xapp.Logger.Info("Ignore 2nd REST subscriber request for subscriber : %v", restSubId)
3076 e2termConn1.RecvSubsDelReq(t)
3077 xapp.Logger.Info("Ignore 1st INTERNAL delete request for subscriber : %v", restSubId)
3079 xappConn1.ExpectRESTNotification(t, restSubId)
3080 e2termConn1.RecvSubsDelReq(t)
3081 xapp.Logger.Info("Ignore 2nd INTERNAL delete request for subscriber : %v", restSubId)
3083 e2SubsId := xappConn1.WaitRESTNotification(t, restSubId)
3085 waitSubsCleanup(t, e2SubsId, 10)
3087 mainCtrl.VerifyCounterValues(t)
3090 //-----------------------------------------------------------------------------
3091 // TestRESTSubReqSubFailRespInSubmgr
3094 // +-------+ +---------+ +---------+
3095 // | xapp | | submgr | | e2term |
3096 // +-------+ +---------+ +---------+
3099 // |---------------->| |
3101 // | RESTSubResp | |
3102 // |<----------------| |
3104 // | |------------->|
3107 // | |<-------------|
3110 // | |------------->|
3113 // | |<-------------|
3117 // |<----------------| |
3119 // | [SUBS DELETE] |
3122 //-----------------------------------------------------------------------------
3123 func TestRESTSubReqSubFailRespInSubmgr(t *testing.T) {
3124 CaseBegin("TestRESTSubReqSubFailRespInSubmgr")
3126 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
3127 Counter{cSubReqFromXapp, 1},
3128 Counter{cSubReqToE2, 1},
3129 Counter{cSubFailFromE2, 1},
3130 Counter{cSubRespToXapp, 1},
3131 Counter{cSubDelReqFromXapp, 1},
3134 const subReqCount int = 1
3135 const parameterSet = 1
3136 const actionDefinitionPresent bool = true
3137 const actionParamCount int = 1
3139 params := xappConn1.GetRESTSubsReqReportParams(subReqCount, parameterSet, actionDefinitionPresent, actionParamCount)
3140 restSubId := xappConn1.SendRESTSubsReq(t, params)
3142 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
3143 fparams1 := &teststube2ap.E2StubSubsFailParams{}
3144 fparams1.Set(crereq1)
3145 e2termConn1.SendSubsFail(t, fparams1, cremsg1)
3147 delreq1, delmsg1 := e2termConn1.RecvSubsDelReq(t)
3148 xappConn1.ExpectRESTNotification(t, restSubId)
3149 e2termConn1.SendSubsDelResp(t, delreq1, delmsg1)
3150 e2SubsId := xappConn1.WaitRESTNotification(t, restSubId)
3151 xapp.Logger.Info("TEST: REST notification received e2SubsId=%v", e2SubsId)
3153 // REST subscription sill there to be deleted
3154 xappConn1.SendRESTSubsDelReq(t, &restSubId)
3156 // Wait that subs is cleaned
3157 waitSubsCleanup(t, e2SubsId, 10)
3159 mainCtrl.VerifyCounterValues(t)
3163 //-----------------------------------------------------------------------------
3164 // TestRESTSubDelReqRetryInSubmgr
3167 // +-------+ +---------+ +---------+
3168 // | xapp | | submgr | | e2term |
3169 // +-------+ +---------+ +---------+
3171 // | [SUBS CREATE] |
3174 // | RESTSubDelReq | |
3175 // |---------------->| |
3177 // | RESTSubDelResp | |
3178 // |<----------------| |
3180 // | |------------->|
3183 // | |------------->|
3186 // | |<-------------|
3189 //-----------------------------------------------------------------------------
3190 func TestRESTSubDelReqRetryInSubmgr(t *testing.T) {
3191 CaseBegin("TestRESTSubDelReqRetryInSubmgr")
3193 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
3194 Counter{cSubReqFromXapp, 1},
3195 Counter{cSubReqToE2, 1},
3196 Counter{cSubRespFromE2, 1},
3197 Counter{cSubRespToXapp, 1},
3198 Counter{cSubDelReqFromXapp, 1},
3199 Counter{cSubDelReqToE2, 1},
3200 Counter{cSubDelReReqToE2, 1},
3201 Counter{cSubDelRespFromE2, 1},
3202 Counter{cSubDelRespToXapp, 1},
3205 var params *teststube2ap.RESTSubsReqParams = nil
3206 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
3209 xappConn1.SendRESTSubsDelReq(t, &restSubId)
3211 // E2t: Receive 1st SubsDelReq
3212 e2termConn1.RecvSubsDelReq(t)
3214 // E2t: Receive 2nd SubsDelReq and send SubsDelResp
3215 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
3216 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
3218 //Wait that subs is cleaned
3219 waitSubsCleanup(t, e2SubsId, 10)
3221 mainCtrl.VerifyCounterValues(t)
3224 //-----------------------------------------------------------------------------
3225 // TestRESTSubDelReqTwoRetriesNoRespInSubmgr
3228 // +-------+ +---------+ +---------+
3229 // | xapp | | submgr | | e2term |
3230 // +-------+ +---------+ +---------+
3232 // | [SUBS CREATE] |
3235 // | RESTSubDelReq | |
3236 // |---------------->| |
3238 // | RESTSubDelResp | |
3239 // |<----------------| |
3241 // | |------------->|
3244 // | |------------->|
3248 //-----------------------------------------------------------------------------
3249 func TestRESTSubDelReqTwoRetriesNoRespInSubmgr(t *testing.T) {
3250 CaseBegin("TestRESTSubDelReTwoRetriesNoRespInSubmgr")
3252 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
3253 Counter{cSubReqFromXapp, 1},
3254 Counter{cSubReqToE2, 1},
3255 Counter{cSubRespFromE2, 1},
3256 Counter{cSubRespToXapp, 1},
3257 Counter{cSubDelReqFromXapp, 1},
3258 Counter{cSubDelReqToE2, 1},
3259 Counter{cSubDelReReqToE2, 1},
3260 Counter{cSubDelRespFromE2, 1},
3261 Counter{cSubDelRespToXapp, 1},
3265 var params *teststube2ap.RESTSubsReqParams = nil
3266 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
3269 xappConn1.SendRESTSubsDelReq(t, &restSubId)
3271 // E2t: Receive 1st SubsDelReq
3272 e2termConn1.RecvSubsDelReq(t)
3274 // E2t: Receive 2nd SubsDelReq and send SubsDelResp
3275 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
3276 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
3278 //Wait that subs is cleaned
3279 waitSubsCleanup(t, e2SubsId, 10)
3281 mainCtrl.VerifyCounterValues(t)
3284 //-----------------------------------------------------------------------------
3285 // TestRESTSubDelReqSubDelFailRespInSubmgr
3288 // +-------+ +---------+ +---------+
3289 // | xapp | | submgr | | e2term |
3290 // +-------+ +---------+ +---------+
3292 // | [SUBS CREATE] |
3295 // | RESTSubDelReq | |
3296 // |---------------->| |
3298 // | RESTSubDelResp | |
3299 // |<----------------| |
3301 // | |------------->|
3304 // | |<-------------|
3307 //-----------------------------------------------------------------------------
3308 func TestRESTSubDelReqSubDelFailRespInSubmgr(t *testing.T) {
3309 CaseBegin("TestRESTSubDelReqSubDelFailRespInSubmgr")
3311 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
3312 Counter{cSubReqFromXapp, 1},
3313 Counter{cSubReqToE2, 1},
3314 Counter{cSubRespFromE2, 1},
3315 Counter{cSubRespToXapp, 1},
3316 Counter{cSubDelReqFromXapp, 1},
3317 Counter{cSubDelReqToE2, 1},
3318 Counter{cSubDelFailFromE2, 1},
3319 Counter{cSubDelRespToXapp, 1},
3323 var params *teststube2ap.RESTSubsReqParams = nil
3324 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
3327 xappConn1.SendRESTSubsDelReq(t, &restSubId)
3329 // E2t: Send receive SubsDelReq and send SubsDelFail
3330 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
3331 e2termConn1.SendSubsDelFail(t, delreq, delmsg)
3333 //Wait that subs is cleaned
3334 waitSubsCleanup(t, e2SubsId, 10)
3336 mainCtrl.VerifyCounterValues(t)
3339 //-----------------------------------------------------------------------------
3340 // TestRESTSubReqAndSubDelOkSameAction
3343 // +-------+ +-------+ +---------+ +---------+
3344 // | xapp2 | | xapp1 | | submgr | | e2term |
3345 // +-------+ +-------+ +---------+ +---------+
3347 // | | RESTSubReq1 | |
3348 // | |---------------->| |
3350 // | | RESTSubResp1 | |
3351 // | |<----------------| |
3354 // | | |------------->|
3356 // | | |<-------------|
3357 // | | RESTNotif1 | |
3358 // | |<----------------| |
3360 // | RESTSubReq2 | |
3361 // |------------------------------>| |
3363 // | RESTSubResp2 | |
3364 // |<------------------------------| |
3366 // | | RESTNotif2 | |
3367 // |<------------------------------| |
3369 // | | RESTSubDelReq1 | |
3370 // | |---------------->| |
3372 // | | RESTSubDelResp1 | |
3373 // | |<----------------| |
3375 // | RESTSubDelReq2 | |
3376 // |------------------------------>| |
3378 // | RESTSubDelResp2 | |
3379 // |<------------------------------| |
3381 // | | | SubDelReq2 |
3382 // | | |------------->|
3384 // | | | SubDelResp2 |
3385 // | | |<-------------|
3388 //-----------------------------------------------------------------------------
3389 func TestRESTSubReqAndSubDelOkSameAction(t *testing.T) {
3390 CaseBegin("TestRESTSubReqAndSubDelOkSameAction")
3392 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
3393 Counter{cSubReqFromXapp, 2},
3394 Counter{cSubReqToE2, 1},
3395 Counter{cSubRespFromE2, 1},
3396 Counter{cSubRespToXapp, 2},
3397 Counter{cMergedSubscriptions, 1},
3398 Counter{cUnmergedSubscriptions, 1},
3399 Counter{cSubDelReqFromXapp, 2},
3400 Counter{cSubDelReqToE2, 1},
3401 Counter{cSubDelRespFromE2, 1},
3402 Counter{cSubDelRespToXapp, 2},
3406 var params *teststube2ap.RESTSubsReqParams = nil
3409 restSubId1, e2SubsId1 := createSubscription(t, xappConn1, e2termConn1, params)
3410 queryXappSubscription(t, int64(e2SubsId1), "RAN_NAME_1", []string{"localhost:13560"})
3413 params = xappConn2.GetRESTSubsReqReportParams(subReqCount, parameterSet, actionDefinitionPresent, actionParamCount)
3414 params.SetMeid("RAN_NAME_1")
3416 xapp.Subscription.SetResponseCB(xappConn2.SubscriptionRespHandler)
3417 xappConn2.WaitRESTNotificationForAnySubscriptionId(t)
3418 waiter := rtmgrHttp.AllocNextSleep(10, true)
3419 restSubId2 := xappConn2.SendRESTSubsReq(t, params)
3420 waiter.WaitResult(t)
3421 xapp.Logger.Info("Send REST subscriber request for subscriberId : %v", restSubId2)
3422 e2SubsId2 := <-xappConn2.RESTNotification
3423 xapp.Logger.Info("REST notification received e2SubsId=%v", e2SubsId2)
3425 queryXappSubscription(t, int64(e2SubsId1), "RAN_NAME_1", []string{"localhost:13560", "localhost:13660"})
3428 xappConn1.SendRESTSubsDelReq(t, &restSubId1)
3431 deleteXapp2Subscription(t, &restSubId2)
3433 //Wait that subs is cleaned
3434 waitSubsCleanup(t, e2SubsId2, 10)
3436 mainCtrl.VerifyCounterValues(t)
3439 //-----------------------------------------------------------------------------
3440 // TestSubReqAndSubDelOkSameActionParallel
3443 // +-------+ +-------+ +---------+ +---------+
3444 // | xapp2 | | xapp1 | | submgr | | e2term |
3445 // +-------+ +-------+ +---------+ +---------+
3450 // | |------------->| |
3453 // | | |------------->|
3455 // |--------------------------->| |
3457 // | | |<-------------|
3459 // | |<-------------| |
3461 // | | |------------->|
3464 // | | |<-------------|
3466 // |<---------------------------| |
3468 // | | SubDelReq 1 | |
3469 // | |------------->| |
3471 // | | SubDelResp 1 | |
3472 // | |<-------------| |
3474 // | SubDelReq 2 | |
3475 // |--------------------------->| |
3477 // | | | SubDelReq 2 |
3478 // | | |------------->|
3480 // | | | SubDelReq 2 |
3481 // | | |------------->|
3483 // | SubDelResp 2 | |
3484 // |<---------------------------| |
3486 func TestRESTSubReqAndSubDelOkSameActionParallel(t *testing.T) {
3487 CaseBegin("TestRESTSubReqAndSubDelOkSameActionParallel")
3489 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
3490 Counter{cSubReqFromXapp, 2},
3491 Counter{cSubReqToE2, 2},
3492 Counter{cSubRespFromE2, 2},
3493 Counter{cSubRespToXapp, 2},
3494 Counter{cSubDelReqFromXapp, 2},
3495 Counter{cSubDelReqToE2, 2},
3496 Counter{cSubDelRespFromE2, 2},
3497 Counter{cSubDelRespToXapp, 2},
3500 params := xappConn1.GetRESTSubsReqReportParams(subReqCount, parameterSet, actionDefinitionPresent, actionParamCount)
3501 restSubId1 := xappConn1.SendRESTSubsReq(t, params)
3502 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
3504 params2 := xappConn2.GetRESTSubsReqReportParams(subReqCount, parameterSet, actionDefinitionPresent, actionParamCount)
3505 restSubId2 := xappConn2.SendRESTSubsReq(t, params2)
3507 xappConn1.ExpectRESTNotification(t, restSubId1)
3508 e2termConn1.SendSubsResp(t, crereq1, cremsg1)
3509 e2SubsId1 := xappConn1.WaitRESTNotification(t, restSubId1)
3511 xappConn2.ExpectRESTNotification(t, restSubId2)
3512 crereq2, cremsg2 := e2termConn1.RecvSubsReq(t)
3513 e2termConn1.SendSubsResp(t, crereq2, cremsg2)
3514 e2SubsId2 := xappConn2.WaitRESTNotification(t, restSubId2)
3517 xappConn1.SendRESTSubsDelReq(t, &restSubId1)
3518 delreq1, delmsg1 := e2termConn1.RecvSubsDelReq(t)
3519 e2termConn1.SendSubsDelResp(t, delreq1, delmsg1)
3520 mainCtrl.wait_subs_clean(t, e2SubsId1, 10)
3523 xappConn2.SendRESTSubsDelReq(t, &restSubId2)
3524 delreq2, delmsg2 := e2termConn1.RecvSubsDelReq(t)
3525 e2termConn1.SendSubsDelResp(t, delreq2, delmsg2)
3527 waitSubsCleanup(t, e2SubsId2, 10)
3529 mainCtrl.VerifyCounterValues(t)
3532 //-----------------------------------------------------------------------------
3533 // TestRESTSubReqAndSubDelNoAnswerSameActionParallel
3536 // +-------+ +-------+ +---------+ +---------+
3537 // | xapp2 | | xapp1 | | submgr | | e2term |
3538 // +-------+ +-------+ +---------+ +---------+
3542 // | | RESTSubReq1 | |
3543 // | |---------------->| |
3545 // | | RESTSubResp1 | |
3546 // | |<----------------| |
3548 // | | |------------->|
3549 // | RESTSubReq2 | |
3550 // |------------------------------>| |
3552 // | RESTSubDelResp2 | |
3553 // |<------------------------------| |
3555 // | | |------------->|
3558 // | | | SubDelReq |
3559 // | | |------------->|
3561 // | | | SubDelResp |
3562 // | | |<-------------|
3563 // | | RESTNotif1 | |
3564 // | | unsuccess | |
3565 // | |<----------------| |
3567 // | | unsuccess | |
3568 // |<------------------------------| |
3570 // | | RESTSubDelReq1 | |
3571 // | |---------------->| |
3573 // | | RESTSubDelResp1 | |
3574 // | |<----------------| |
3576 // | RESTSubDelReq2 | |
3577 // |------------------------------>| |
3579 // | RESTSubDelResp2 | |
3580 // |<------------------------------| |
3582 //-----------------------------------------------------------------------------
3583 func TestRESTSubReqAndSubDelNoAnswerSameActionParallel(t *testing.T) {
3584 CaseBegin("TestRESTSubReqAndSubDelNoAnswerSameActionParallel")
3586 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
3587 Counter{cSubReqFromXapp, 2},
3588 Counter{cSubReqToE2, 1},
3589 Counter{cSubRespToXapp, 2},
3590 Counter{cSubDelReqFromXapp, 2},
3591 Counter{cSubDelReqToE2, 1},
3592 Counter{cSubDelRespFromE2, 1},
3593 Counter{cSubDelRespToXapp, 2},
3596 const subReqCount int = 1
3597 const parameterSet = 1
3598 const actionDefinitionPresent bool = true
3599 const actionParamCount int = 1
3602 params1 := xappConn1.GetRESTSubsReqReportParams(subReqCount, parameterSet, actionDefinitionPresent, actionParamCount)
3603 restSubId1 := xappConn1.SendRESTSubsReq(t, params1)
3604 crereq1, _ := e2termConn1.RecvSubsReq(t)
3607 subepcnt2 := mainCtrl.get_subs_entrypoint_cnt(t, crereq1.RequestId.InstanceId)
3608 params2 := xappConn2.GetRESTSubsReqReportParams(subReqCount, parameterSet, actionDefinitionPresent, actionParamCount)
3609 params2.SetMeid("RAN_NAME_1")
3610 restSubId2 := xappConn2.SendRESTSubsReq(t, params2)
3611 mainCtrl.wait_subs_entrypoint_cnt_change(t, crereq1.RequestId.InstanceId, subepcnt2, 10)
3613 //Req1 (retransmitted)
3614 e2termConn1.RecvSubsReq(t)
3616 delreq1, delmsg1 := e2termConn1.RecvSubsDelReq(t)
3618 xappConn1.WaitListedRestNotifications(t, []string{restSubId1, restSubId2})
3619 e2termConn1.SendSubsDelResp(t, delreq1, delmsg1)
3621 e2SubsIdA := <-xappConn1.ListedRESTNotifications
3622 xapp.Logger.Info("TEST: 1.st XAPP notification received e2SubsId=%v", e2SubsIdA)
3623 e2SubsIdB := <-xappConn1.ListedRESTNotifications
3624 xapp.Logger.Info("TEST: 2.nd XAPP notification received e2SubsId=%v", e2SubsIdB)
3627 xappConn1.SendRESTSubsDelReq(t, &restSubId1)
3630 xappConn2.SendRESTSubsDelReq(t, &restSubId2)
3632 mainCtrl.wait_multi_subs_clean(t, []uint32{e2SubsIdA.E2SubsId, e2SubsIdB.E2SubsId}, 10)
3634 //Wait that subs is cleaned
3635 waitSubsCleanup(t, e2SubsIdA.E2SubsId, 10)
3637 mainCtrl.VerifyCounterValues(t)
3640 //-----------------------------------------------------------------------------
3641 // TestRESTSubReqAndSubDelNokSameActionParallel
3644 // +-------+ +-------+ +---------+ +---------+
3645 // | xapp2 | | xapp1 | | submgr | | e2term |
3646 // +-------+ +-------+ +---------+ +---------+
3650 // | | RESTSubReq1 | |
3651 // | |---------------->| |
3653 // | | RESTSubResp1 | |
3654 // | |<----------------| |
3656 // | | |------------->|
3657 // | RESTSubReq2 | |
3658 // |------------------------------>| |
3660 // | RESTSubDelResp2 | |
3661 // |<------------------------------| |
3663 // | | |<-------------|
3665 // | | RESTNotif1 | |
3666 // | | unsuccess | |
3667 // | |<----------------| |
3669 // | | unsuccess | |
3670 // |<------------------------------| |
3671 // | | | SubDelReq |
3672 // | | |------------->|
3673 // | | | SubDelResp |
3674 // | | |<-------------|
3676 // | | RESTSubDelReq1 | |
3677 // | |---------------->| |
3679 // | | RESTSubDelResp1 | |
3680 // | |<----------------| |
3682 // | RESTSubDelReq2 | |
3683 // |------------------------------>| |
3685 // | RESTSubDelResp2 | |
3686 // |<------------------------------| |
3688 //-----------------------------------------------------------------------------
3689 func TestRESTSubReqAndSubDelNokSameActionParallel(t *testing.T) {
3690 CaseBegin("TestRESTSubReqAndSubDelNokSameActionParallel")
3692 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
3693 Counter{cSubReqFromXapp, 2},
3694 Counter{cSubReqToE2, 1},
3695 Counter{cSubFailFromE2, 1},
3696 Counter{cSubRespToXapp, 2},
3697 Counter{cSubDelReqFromXapp, 2},
3698 Counter{cSubDelReqToE2, 1},
3699 Counter{cSubDelRespFromE2, 1},
3700 Counter{cSubDelRespToXapp, 2},
3703 const subReqCount int = 1
3704 const parameterSet = 1
3705 const actionDefinitionPresent bool = true
3706 const actionParamCount int = 1
3709 params := xappConn1.GetRESTSubsReqReportParams(subReqCount, parameterSet, actionDefinitionPresent, actionParamCount)
3710 restSubId1 := xappConn1.SendRESTSubsReq(t, params)
3711 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
3714 subepcnt2 := mainCtrl.get_subs_entrypoint_cnt(t, crereq1.RequestId.InstanceId)
3715 params2 := xappConn2.GetRESTSubsReqReportParams(subReqCount, parameterSet, actionDefinitionPresent, actionParamCount)
3716 params2.SetMeid("RAN_NAME_1")
3717 restSubId2 := xappConn2.SendRESTSubsReq(t, params2)
3718 mainCtrl.wait_subs_entrypoint_cnt_change(t, crereq1.RequestId.InstanceId, subepcnt2, 10)
3720 // E2t: send SubsFail (first)
3721 fparams1 := &teststube2ap.E2StubSubsFailParams{}
3722 fparams1.Set(crereq1)
3723 e2termConn1.SendSubsFail(t, fparams1, cremsg1)
3725 // E2t: internal delete
3726 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
3727 xappConn1.WaitListedRestNotifications(t, []string{restSubId1, restSubId2})
3728 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
3730 e2SubsIdA := <-xappConn1.ListedRESTNotifications
3731 xapp.Logger.Info("TEST: 1.st XAPP notification received e2SubsId=%v", e2SubsIdA)
3732 e2SubsIdB := <-xappConn1.ListedRESTNotifications
3733 xapp.Logger.Info("TEST: 2.nd XAPP notification received e2SubsId=%v", e2SubsIdB)
3736 xappConn1.SendRESTSubsDelReq(t, &restSubId1)
3739 xappConn2.SendRESTSubsDelReq(t, &restSubId2)
3741 //Wait that subs is cleaned
3742 waitSubsCleanup(t, e2SubsIdA.E2SubsId, 10)
3743 waitSubsCleanup(t, e2SubsIdB.E2SubsId, 10)
3745 mainCtrl.VerifyCounterValues(t)
3748 func TestRESTSubReqPolicyAndSubDelOk(t *testing.T) {
3749 CaseBegin("TestRESTSubReqPolicyAndSubDelOk")
3751 // Init counter check
3752 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
3753 Counter{cSubReqFromXapp, 1},
3754 Counter{cSubReqToE2, 1},
3755 Counter{cSubRespFromE2, 1},
3756 Counter{cSubRespToXapp, 1},
3757 Counter{cSubDelReqFromXapp, 1},
3758 Counter{cSubDelReqToE2, 1},
3759 Counter{cSubDelRespFromE2, 1},
3760 Counter{cSubDelRespToXapp, 1},
3763 const subReqCount int = 1
3764 const parameterSet = 1
3765 const actionDefinitionPresent bool = true
3766 const actionParamCount int = 1
3768 params := xappConn1.GetRESTSubsReqPolicyParams(subReqCount, actionDefinitionPresent, policyParamCount)
3769 restSubId := xappConn1.SendRESTSubsReq(t, params)
3770 xapp.Logger.Info("Send REST Policy subscriber request for subscriberId : %v", restSubId)
3772 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
3773 xappConn1.ExpectRESTNotification(t, restSubId)
3774 e2termConn1.SendSubsResp(t, crereq1, cremsg1)
3775 e2SubsId := xappConn1.WaitRESTNotification(t, restSubId)
3776 xapp.Logger.Info("REST notification received e2SubsId=%v", e2SubsId)
3778 xappConn1.SendRESTSubsDelReq(t, &restSubId)
3779 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
3780 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
3782 // Wait that subs is cleaned
3783 waitSubsCleanup(t, e2SubsId, 10)
3784 mainCtrl.VerifyCounterValues(t)
3787 //-----------------------------------------------------------------------------
3788 // TestRESTSubReqPolicyChangeAndSubDelOk
3791 // +-------+ +---------+ +---------+
3792 // | xapp | | submgr | | e2term |
3793 // +-------+ +---------+ +---------+
3796 // |---------------->| |
3798 // | RESTSubResp | |
3799 // |<----------------| |
3801 // | |------------->|
3804 // | |<-------------|
3807 // |<----------------| |
3810 // |---------------->| |
3812 // | RESTSubResp | |
3813 // |<----------------| |
3815 // | |------------->|
3818 // | |<-------------|
3821 // |<----------------| |
3823 // | RESTSubDelReq | |
3824 // |---------------->| |
3827 // | |------------->|
3830 // | |<-------------|
3832 // | RESTSubDelResp | |
3833 // |<----------------| |
3835 //-----------------------------------------------------------------------------
3836 func TestRESTSubReqPolicyChangeAndSubDelOk(t *testing.T) {
3837 CaseBegin("TestRESTSubReqPolicyAndSubDelOk")
3839 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
3840 Counter{cSubReqFromXapp, 2},
3841 Counter{cSubReqToE2, 2},
3842 Counter{cSubRespFromE2, 2},
3843 Counter{cSubRespToXapp, 2},
3844 Counter{cSubDelReqFromXapp, 1},
3845 Counter{cSubDelReqToE2, 1},
3846 Counter{cSubDelRespFromE2, 1},
3847 Counter{cSubDelRespToXapp, 1},
3850 const subReqCount int = 1
3851 const parameterSet = 1
3852 const actionDefinitionPresent bool = true
3853 const policyParamCount int = 1
3856 params := xappConn1.GetRESTSubsReqPolicyParams(subReqCount, actionDefinitionPresent, policyParamCount)
3857 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
3860 instanceId := int64(e2SubsId)
3861 // GetRESTSubsReqPolicyParams sets some coutners on tc side.
3862 params = xappConn1.GetRESTSubsReqPolicyParams(subReqCount, actionDefinitionPresent, policyParamCount)
3863 params.SubsReqParams.SubscriptionDetails[0].InstanceID = &instanceId
3864 params.SetTimeToWait("w200ms")
3865 restSubId, e2SubsId = createSubscription(t, xappConn1, e2termConn1, params)
3868 xappConn1.SendRESTSubsDelReq(t, &restSubId)
3870 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
3871 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
3873 // Wait that subs is cleaned
3874 waitSubsCleanup(t, e2SubsId, 10)
3875 mainCtrl.VerifyCounterValues(t)
3878 //-----------------------------------------------------------------------------
3879 // TestRESTSubReqAndSubDelOkTwoE2termParallel
3882 // +-------+ +---------+ +---------+ +---------+
3883 // | xapp | | submgr | | e2term1 | | e2term2 |
3884 // +-------+ +---------+ +---------+ +---------+
3888 // | RESTSubReq1 | | |
3889 // |---------------->| | |
3891 // | RESTSubResp1 | | |
3892 // |<----------------| | |
3894 // | |------------->| |
3896 // | RESTSubReq2 | | |
3897 // |---------------->| | |
3899 // | RESTSubResp2 | | |
3900 // |<----------------| | |
3902 // | |---------------------------->|
3905 // | |<-------------| |
3906 // | RESTNotif1 | | |
3907 // |<----------------| | |
3909 // | |<----------------------------|
3910 // | RESTNotif2 | | |
3911 // |<----------------| | |
3913 // | [SUBS 1 DELETE] | |
3915 // | [SUBS 2 DELETE] | |
3918 //-----------------------------------------------------------------------------
3919 func TestRESTSubReqAndSubDelOkTwoE2termParallel(t *testing.T) {
3920 CaseBegin("TestRESTSubReqAndSubDelOkTwoE2termParallel")
3922 // Init counter check
3923 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
3924 Counter{cSubReqFromXapp, 2},
3925 Counter{cSubReqToE2, 2},
3926 Counter{cSubRespFromE2, 2},
3927 Counter{cSubRespToXapp, 2},
3928 Counter{cSubDelReqFromXapp, 2},
3929 Counter{cSubDelReqToE2, 2},
3930 Counter{cSubDelRespFromE2, 2},
3931 Counter{cSubDelRespToXapp, 2},
3934 const subReqCount int = 1
3935 const parameterSet = 1
3936 const actionDefinitionPresent bool = true
3937 const actionParamCount int = 1
3940 params := xappConn1.GetRESTSubsReqReportParams(subReqCount, parameterSet, actionDefinitionPresent, actionParamCount)
3941 restSubId1 := xappConn1.SendRESTSubsReq(t, params)
3942 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
3945 params = xappConn2.GetRESTSubsReqReportParams(subReqCount, parameterSet, actionDefinitionPresent, actionParamCount)
3946 params.SetMeid("RAN_NAME_11")
3947 // Here we use xappConn2 to simulate sending second request from same xapp as doing it from xappConn1
3948 // would not work as notification would not be received
3949 restSubId2 := xappConn2.SendRESTSubsReq(t, params)
3950 crereq2, cremsg2 := e2termConn2.RecvSubsReq(t)
3953 xappConn1.ExpectRESTNotification(t, restSubId1)
3954 e2termConn1.SendSubsResp(t, crereq1, cremsg1)
3955 e2SubsId1 := xappConn1.WaitRESTNotification(t, restSubId1)
3956 xapp.Logger.Info("TEST: REST notification received e2SubsId1=%v", e2SubsId1)
3959 xappConn2.ExpectRESTNotification(t, restSubId2)
3960 e2termConn2.SendSubsResp(t, crereq2, cremsg2)
3961 e2SubsId2 := xappConn2.WaitRESTNotification(t, restSubId2)
3962 xapp.Logger.Info("TEST: REST notification received e2SubsId2=%v", e2SubsId2)
3965 xappConn1.SendRESTSubsDelReq(t, &restSubId1)
3966 delreq1, delmsg1 := e2termConn1.RecvSubsDelReq(t)
3967 e2termConn1.SendSubsDelResp(t, delreq1, delmsg1)
3969 // Wait that subs is cleaned
3970 mainCtrl.wait_subs_clean(t, e2SubsId1, 10)
3973 xappConn1.SendRESTSubsDelReq(t, &restSubId2)
3974 delreq2, delmsg2 := e2termConn2.RecvSubsDelReq(t)
3975 e2termConn2.SendSubsDelResp(t, delreq2, delmsg2)
3977 // Wait that subs is cleaned
3978 waitSubsCleanup(t, e2SubsId2, 10)
3980 mainCtrl.VerifyCounterValues(t)
3983 //-----------------------------------------------------------------------------
3984 // TestRESTSubReqAsn1EncodeFail
3986 // In this case submgr send RICSubscriptionDeleteRequest after encode failure which should not happen!
3988 // +-------+ +---------+ +---------+
3989 // | xapp | | submgr | | e2term |
3990 // +-------+ +---------+ +---------+
3993 // |---------------->| |
3995 // | RESTSubResp | |
3996 // |<----------------| |
3997 // | RESTSubDelReq | |
3998 // |---------------->| |
3999 // | RESTSubDelResp | |
4001 // |<----------------| |
4004 //-----------------------------------------------------------------------------
4005 func TestRESTSubReqAsn1EncodeFail(t *testing.T) {
4006 CaseBegin("TestRESTSubReqAsn1EncodeFail")
4008 xapp.Logger.Info("Xapp-frame, v0.8.1 sufficient REST API validation")
4012 //-----------------------------------------------------------------------------
4013 // TestRESTSubReqInsertAndSubDelOk
4016 // +-------+ +---------+ +---------+
4017 // | xapp | | submgr | | e2term |
4018 // +-------+ +---------+ +---------+
4021 // |---------------->| |
4023 // | RESTSubResp | |
4024 // |<----------------| |
4027 // | |------------->|
4030 // | |<-------------|
4032 // |<----------------| |
4035 // | RESTSubDelReq | |
4036 // |---------------->| |
4039 // | |------------->|
4042 // | |<-------------|
4044 // | RESTSubDelResp| |
4045 // |<----------------| |
4047 //-----------------------------------------------------------------------------
4048 func TestRESTSubReqInsertAndSubDelOk(t *testing.T) {
4049 CaseBegin("TestRESTInsertSubReqAndSubDelOk")
4051 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
4052 Counter{cSubReqFromXapp, 1},
4053 Counter{cSubReqToE2, 1},
4054 Counter{cSubRespFromE2, 1},
4055 Counter{cSubRespToXapp, 1},
4056 Counter{cSubDelReqFromXapp, 1},
4057 Counter{cSubDelReqToE2, 1},
4058 Counter{cSubDelRespFromE2, 1},
4059 Counter{cSubDelRespToXapp, 1},
4062 const subReqCount int = 1
4063 const parameterSet int = 1
4064 const actionDefinitionPresent bool = true
4065 const actionParamCount int = 1
4067 params := xappConn1.GetRESTSubsReqReportParams(subReqCount, parameterSet, actionDefinitionPresent, actionParamCount)
4068 params.SetSubActionTypes("insert")
4071 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
4074 xappConn1.SendRESTSubsDelReq(t, &restSubId)
4076 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
4077 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
4079 // Wait that subs is cleaned
4080 waitSubsCleanup(t, e2SubsId, 10)
4081 mainCtrl.VerifyCounterValues(t)
4084 //-----------------------------------------------------------------------------
4085 // TestRESTSubReqNokAndSubDelOkWithRestartInMiddle
4088 // +-------+ +---------+ +---------+
4089 // | xapp | | submgr | | e2term |
4090 // +-------+ +---------+ +---------+
4093 // |------------->| |
4096 // | |------------->|
4101 // | Submgr restart |
4105 // | |------------->|
4108 // | |<-------------|
4111 //-----------------------------------------------------------------------------
4112 func TestRESTSubReqNokAndSubDelOkWithRestartInMiddle(t *testing.T) {
4113 CaseBegin("TestRESTSubReqNokAndSubDelOkWithRestartInMiddle")
4115 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
4116 Counter{cSubReqFromXapp, 1},
4117 Counter{cSubReqToE2, 1},
4118 Counter{cSubDelReqFromXapp, 1},
4119 Counter{cSubDelReqToE2, 1},
4120 Counter{cSubDelRespFromE2, 1},
4123 const subReqCount int = 1
4124 const parameterSet = 1
4125 const actionDefinitionPresent bool = true
4126 const actionParamCount int = 1
4128 // Remove possible existing subscription
4129 mainCtrl.removeExistingSubscriptions(t)
4131 params := xappConn1.GetRESTSubsReqReportParams(subReqCount, parameterSet, actionDefinitionPresent, actionParamCount)
4134 mainCtrl.SetResetTestFlag(t, true) // subs.DoNotWaitSubResp will be set TRUE for the subscription
4135 restSubId := xappConn1.SendRESTSubsReq(t, params)
4136 xapp.Logger.Info("Send REST subscriber request for subscriber : %v", restSubId)
4138 e2termConn1.RecvSubsReq(t)
4140 mainCtrl.SetResetTestFlag(t, false)
4142 mainCtrl.SimulateRestart(t)
4143 xapp.Logger.Debug("mainCtrl.SimulateRestart done")
4146 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
4147 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
4149 xappConn1.TestMsgChanEmpty(t)
4150 xappConn2.TestMsgChanEmpty(t)
4151 e2termConn1.TestMsgChanEmpty(t)
4152 mainCtrl.wait_registry_empty(t, 10)
4154 mainCtrl.VerifyCounterValues(t)
4157 //-----------------------------------------------------------------------------
4158 // TestRESTSubReqAndSubDelOkWithRestartInMiddle
4161 // +-------+ +---------+ +---------+
4162 // | xapp | | submgr | | e2term |
4163 // +-------+ +---------+ +---------+
4166 // |---------------->| |
4168 // | RESTSubResp | |
4169 // |<----------------| |
4171 // | |------------->|
4174 // | |<-------------|
4177 // |<----------------| |
4180 // | Submgr restart |
4182 // | RESTSubDelReq | |
4183 // |---------------->| |
4186 // | |------------->|
4189 // | |<-------------|
4191 // | RESTSubDelResp | |
4192 // |<----------------| |
4194 //-----------------------------------------------------------------------------
4195 func TestRESTSubReqAndSubDelOkWithRestartInMiddle(t *testing.T) {
4196 CaseBegin("TestRESTSubReqAndSubDelOkWithRestartInMiddle")
4198 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
4199 Counter{cSubReqFromXapp, 1},
4200 Counter{cSubReqToE2, 1},
4201 Counter{cSubRespFromE2, 1},
4202 Counter{cSubRespToXapp, 1},
4203 Counter{cSubDelReqFromXapp, 1},
4204 Counter{cSubDelReqToE2, 1},
4205 Counter{cSubDelRespToXapp, 1},
4208 // Remove possible existing subscription
4209 mainCtrl.removeExistingSubscriptions(t)
4211 var params *teststube2ap.RESTSubsReqParams = nil
4213 // Create subscription
4214 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
4215 xapp.Logger.Info("Send REST subscriber request for subscriber : %v", restSubId)
4217 // Check subscription
4218 queryXappSubscription(t, int64(e2SubsId), "RAN_NAME_1", []string{"localhost:13560"})
4220 // When SDL support for the REST Interface is added
4221 // the submgr restart statement below should be removed
4222 // from the comment.
4224 // mainCtrl.SimulateRestart(t)
4225 // xapp.Logger.Debug("mainCtrl.SimulateRestart done")
4227 // Check subscription
4228 queryXappSubscription(t, int64(e2SubsId), "RAN_NAME_1", []string{"localhost:13560"})
4230 // Delete subscription
4231 deleteSubscription(t, xappConn1, e2termConn1, &restSubId)
4233 //Wait that subs is cleaned
4234 waitSubsCleanup(t, e2SubsId, 10)
4236 mainCtrl.VerifyCounterValues(t)
4239 //-----------------------------------------------------------------------------
4240 // TestRESTSubReqAndSubDelOkSameActionWithRestartsInMiddle
4243 // +-------+ +-------+ +---------+ +---------+
4244 // | xapp2 | | xapp1 | | submgr | | e2term |
4245 // +-------+ +-------+ +---------+ +---------+
4247 // | | RESTSubReq1 | |
4248 // | |---------------->| |
4250 // | | RESTSubResp1 | |
4251 // | |<----------------| |
4254 // | | |------------->|
4256 // | | |<-------------|
4257 // | | RESTNotif1 | |
4258 // | |<----------------| |
4260 // | RESTSubReq2 | |
4261 // |------------------------------>| |
4263 // | RESTSubResp2 | |
4264 // |<------------------------------| |
4266 // | | RESTNotif2 | |
4267 // |<------------------------------| |
4269 // | | Submgr restart |
4271 // | | RESTSubDelReq1 | |
4272 // | |---------------->| |
4274 // | | RESTSubDelResp1 | |
4275 // | |<----------------| |
4277 // | | Submgr restart |
4279 // | RESTSubDelReq2 | |
4280 // |------------------------------>| |
4282 // | RESTSubDelResp2 | |
4283 // |<------------------------------| |
4285 // | | | SubDelReq2 |
4286 // | | |------------->|
4288 // | | | SubDelResp2 |
4289 // | | |<-------------|
4292 //-----------------------------------------------------------------------------
4293 func TestRESTSubReqAndSubDelOkSameActionWithRestartsInMiddle(t *testing.T) {
4294 CaseBegin("TestRESTSubReqAndSubDelOkSameActionWithRestartsInMiddle")
4296 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
4297 Counter{cSubReqFromXapp, 2},
4298 Counter{cSubReqToE2, 1},
4299 Counter{cSubRespFromE2, 1},
4300 Counter{cSubRespToXapp, 2},
4301 Counter{cMergedSubscriptions, 1},
4302 Counter{cUnmergedSubscriptions, 1},
4303 Counter{cSubDelReqFromXapp, 2},
4304 Counter{cSubDelReqToE2, 1},
4305 Counter{cSubDelRespFromE2, 1},
4306 Counter{cSubDelRespToXapp, 2},
4309 // Remove possible existing subscription
4310 mainCtrl.removeExistingSubscriptions(t)
4312 var params *teststube2ap.RESTSubsReqParams = nil
4314 // Create subscription 1
4315 restSubId1, e2SubsId1 := createSubscription(t, xappConn1, e2termConn1, params)
4316 xapp.Logger.Info("Send REST subscriber request for subscriber 1 : %v", restSubId1)
4318 // Create subscription 2 with same action
4319 params = xappConn2.GetRESTSubsReqReportParams(subReqCount, parameterSet, actionDefinitionPresent, actionParamCount)
4320 params.SetMeid("RAN_NAME_1")
4321 xapp.Subscription.SetResponseCB(xappConn2.SubscriptionRespHandler)
4322 xappConn2.WaitRESTNotificationForAnySubscriptionId(t)
4323 restSubId2 := xappConn2.SendRESTSubsReq(t, params)
4324 xapp.Logger.Info("Send REST subscriber request for subscriberId : %v", restSubId2)
4325 e2SubsId2 := <-xappConn2.RESTNotification
4326 xapp.Logger.Info("REST notification received e2SubsId=%v", e2SubsId2)
4328 queryXappSubscription(t, int64(e2SubsId1), "RAN_NAME_1", []string{"localhost:13560", "localhost:13660"})
4330 // When SDL support for the REST Interface is added
4331 // the submgr restart statement below should be removed
4332 // from the comment.
4334 // mainCtrl.SimulateRestart(t)
4335 // xapp.Logger.Debug("mainCtrl.SimulateRestart done")
4337 // Delete subscription 1, and wait until it has removed the first endpoint
4338 subepcnt := mainCtrl.get_subs_entrypoint_cnt(t, e2SubsId1)
4339 xappConn1.SendRESTSubsDelReq(t, &restSubId1)
4340 mainCtrl.wait_subs_entrypoint_cnt_change(t, e2SubsId1, subepcnt, 10)
4342 // When SDL support for the REST Interface is added
4343 // the submgr restart statement below should be removed
4344 // from the comment.
4346 // mainCtrl.SimulateRestart(t)
4347 // xapp.Logger.Debug("mainCtrl.SimulateRestart done")
4348 queryXappSubscription(t, int64(e2SubsId1), "RAN_NAME_1", []string{"localhost:13660"})
4350 // Delete subscription 2
4351 deleteXapp2Subscription(t, &restSubId2)
4353 //Wait that subs is cleaned
4354 waitSubsCleanup(t, e2SubsId2, 10)
4356 mainCtrl.VerifyCounterValues(t)
4359 //-----------------------------------------------------------------------------
4360 // TestRESTReportSubReqAndSubDelOk
4363 // +-------+ +---------+ +---------+
4364 // | xapp | | submgr | | e2term |
4365 // +-------+ +---------+ +---------+
4368 // |---------------->| |
4370 // | RESTSubResp | |
4371 // |<----------------| |
4374 // | |------------->|
4377 // | |<-------------|
4379 // |<----------------| |
4381 // | |------------->|
4384 // | |<-------------|
4386 // |<----------------| |
4390 // | RESTSubDelReq | |
4391 // |---------------->| |
4394 // | |------------->|
4397 // | |<-------------|
4399 // | RESTSubDelResp| |
4400 // |<----------------| |
4402 //-----------------------------------------------------------------------------
4403 func TestRESTReportSubReqAndSubDelOk(t *testing.T) {
4404 CaseBegin("TestRESTReportSubReqAndSubDelOk")
4406 parameterSet := 1 // E2SM-gNB-X2
4407 actionDefinitionPresent := true
4408 actionParamCount := 1
4410 RESTReportSubReqAndSubDelOk(t, subReqCount, parameterSet, actionDefinitionPresent, actionParamCount, testIndex)
4413 func RESTReportSubReqAndSubDelOk(t *testing.T, subReqCount int, parameterSet int, actionDefinitionPresent bool, actionParamCount int, testIndex int) {
4414 xapp.Logger.Info("TEST: TestRESTReportSubReqAndSubDelOk with parameter set %v", testIndex)
4417 params := xappConn1.GetRESTSubsReqReportParams(subReqCount, parameterSet, actionDefinitionPresent, actionParamCount)
4418 restSubId := xappConn1.SendRESTSubsReq(t, params)
4420 var e2SubsId []uint32
4421 for i := 0; i < subReqCount; i++ {
4422 crereq, cremsg := e2termConn1.RecvSubsReq(t)
4423 xappConn1.ExpectRESTNotification(t, restSubId)
4425 e2termConn1.SendSubsResp(t, crereq, cremsg)
4426 instanceId := xappConn1.WaitRESTNotification(t, restSubId)
4427 xapp.Logger.Info("TEST: REST notification received e2SubsId=%v", instanceId)
4428 e2SubsId = append(e2SubsId, instanceId)
4429 resp, _ := xapp.Subscription.QuerySubscriptions()
4430 assert.Equal(t, resp[i].SubscriptionID, (int64)(instanceId))
4431 assert.Equal(t, resp[i].Meid, "RAN_NAME_1")
4432 assert.Equal(t, resp[i].ClientEndpoint, []string{"localhost:13560"})
4437 xappConn1.SendRESTSubsDelReq(t, &restSubId)
4439 for i := 0; i < subReqCount; i++ {
4440 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
4441 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
4444 // Wait that subs is cleaned
4445 for i := 0; i < subReqCount; i++ {
4446 mainCtrl.wait_subs_clean(t, e2SubsId[i], 10)
4449 xappConn1.TestMsgChanEmpty(t)
4450 e2termConn1.TestMsgChanEmpty(t)
4451 mainCtrl.wait_registry_empty(t, 10)
4455 func TestRESTPolicySubReqAndSubDelOk(t *testing.T) {
4456 CaseBegin("TestRESTPolicySubReqAndSubDelOk")
4459 actionDefinitionPresent := true
4460 policyParamCount := 1
4462 RESTPolicySubReqAndSubDelOk(t, subReqCount, actionDefinitionPresent, policyParamCount, testIndex)
4465 actionDefinitionPresent = false
4466 policyParamCount = 0
4468 RESTPolicySubReqAndSubDelOk(t, subReqCount, actionDefinitionPresent, policyParamCount, testIndex)
4471 func RESTPolicySubReqAndSubDelOk(t *testing.T, subReqCount int, actionDefinitionPresent bool, policyParamCount int, testIndex int) {
4472 xapp.Logger.Info("TEST: TestRESTPolicySubReqAndSubDelOk with parameter set %v", testIndex)
4475 params := xappConn1.GetRESTSubsReqPolicyParams(subReqCount, actionDefinitionPresent, policyParamCount)
4476 restSubId := xappConn1.SendRESTSubsReq(t, params)
4477 //params := xappConn1.GetRESTSubsReqPolicyParams1(subReqCount, actionDefinitionPresent, policyParamCount)
4478 //restSubId := xappConn1.SendRESTPolicySubsReq(t, params)
4480 var e2SubsId []uint32
4481 for i := 0; i < subReqCount; i++ {
4482 crereq, cremsg := e2termConn1.RecvSubsReq(t)
4483 xappConn1.ExpectRESTNotification(t, restSubId)
4484 e2termConn1.SendSubsResp(t, crereq, cremsg)
4485 instanceId := xappConn1.WaitRESTNotification(t, restSubId)
4486 xapp.Logger.Info("TEST: REST notification received e2SubsId=%v", instanceId)
4487 e2SubsId = append(e2SubsId, instanceId)
4491 xappConn1.SendRESTSubsDelReq(t, &restSubId)
4493 for i := 0; i < subReqCount; i++ {
4494 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
4495 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
4498 // Wait that subs is cleaned
4499 for i := 0; i < subReqCount; i++ {
4500 mainCtrl.wait_subs_clean(t, e2SubsId[i], 10)
4502 xappConn1.TestMsgChanEmpty(t)
4503 e2termConn1.TestMsgChanEmpty(t)
4504 mainCtrl.wait_registry_empty(t, 10)
4507 func TestRESTTwoPolicySubReqAndSubDelOk(t *testing.T) {
4511 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
4512 Counter{cSubReqFromXapp, 1},
4513 Counter{cSubReqToE2, 2},
4514 Counter{cSubRespFromE2, 2},
4515 Counter{cSubRespToXapp, 2},
4516 Counter{cSubDelReqFromXapp, 1},
4517 Counter{cSubDelReqToE2, 2},
4518 Counter{cSubDelRespFromE2, 2},
4519 Counter{cSubDelRespToXapp, 1},
4523 params := xappConn1.GetRESTSubsReqPolicyParams(subReqCount, actionDefinitionPresent, policyParamCount)
4524 restSubId := xappConn1.SendRESTSubsReq(t, params)
4525 e2SubsIds := sendAndReceiveMultipleE2SubReqs(t, subReqCount, xappConn1, e2termConn1, restSubId)
4527 assert.Equal(t, len(e2SubsIds), 2)
4530 xappConn1.SendRESTSubsDelReq(t, &restSubId)
4531 sendAndReceiveMultipleE2DelReqs(t, e2SubsIds, e2termConn1)
4533 xappConn1.TestMsgChanEmpty(t)
4534 e2termConn1.TestMsgChanEmpty(t)
4535 mainCtrl.wait_registry_empty(t, 10)
4537 mainCtrl.VerifyCounterValues(t)
4539 func TestRESTPolicySubReqAndSubDelOkFullAmount(t *testing.T) {
4543 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
4544 Counter{cSubReqFromXapp, 1},
4545 Counter{cSubReqToE2, 19},
4546 Counter{cSubRespFromE2, 19},
4547 Counter{cSubRespToXapp, 19},
4548 Counter{cSubDelReqFromXapp, 1},
4549 Counter{cSubDelReqToE2, 19},
4550 Counter{cSubDelRespFromE2, 19},
4551 Counter{cSubDelRespToXapp, 1},
4555 params := xappConn1.GetRESTSubsReqPolicyParams(subReqCount, actionDefinitionPresent, policyParamCount)
4556 restSubId := xappConn1.SendRESTSubsReq(t, params)
4557 e2SubsIds := sendAndReceiveMultipleE2SubReqs(t, subReqCount, xappConn1, e2termConn1, restSubId)
4559 assert.Equal(t, len(e2SubsIds), 19)
4561 xappConn1.SendRESTSubsDelReq(t, &restSubId)
4562 sendAndReceiveMultipleE2DelReqs(t, e2SubsIds, e2termConn1)
4564 xappConn1.TestMsgChanEmpty(t)
4565 e2termConn1.TestMsgChanEmpty(t)
4566 mainCtrl.wait_registry_empty(t, 10)
4568 mainCtrl.VerifyCounterValues(t)
4570 func TestRESTTwoReportSubReqAndSubDelOk(t *testing.T) {
4574 actionDefinitionPresent := true
4575 actionParamCount := 1
4577 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
4578 Counter{cSubReqFromXapp, 1},
4579 Counter{cSubReqToE2, uint64(subReqCount)},
4580 Counter{cSubRespFromE2, uint64(subReqCount)},
4581 Counter{cSubRespToXapp, uint64(subReqCount)},
4582 Counter{cSubDelReqFromXapp, 1},
4583 Counter{cSubDelReqToE2, uint64(subReqCount)},
4584 Counter{cSubDelRespFromE2, uint64(subReqCount)},
4585 Counter{cSubDelRespToXapp, 1},
4589 params := xappConn1.GetRESTSubsReqReportParams(subReqCount, parameterSet, actionDefinitionPresent, actionParamCount)
4590 restSubId := xappConn1.SendRESTSubsReq(t, params)
4591 e2SubsIds := sendAndReceiveMultipleE2SubReqs(t, subReqCount, xappConn1, e2termConn1, restSubId)
4593 assert.Equal(t, len(e2SubsIds), subReqCount)
4596 xappConn1.SendRESTSubsDelReq(t, &restSubId)
4597 sendAndReceiveMultipleE2DelReqs(t, e2SubsIds, e2termConn1)
4599 xappConn1.TestMsgChanEmpty(t)
4600 e2termConn1.TestMsgChanEmpty(t)
4601 mainCtrl.wait_registry_empty(t, 10)
4603 mainCtrl.VerifyCounterValues(t)
4606 func TestRESTTwoReportSubReqAndSubDelOkNoActParams(t *testing.T) {
4610 actionDefinitionPresent := false
4611 actionParamCount := 0
4613 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
4614 Counter{cSubReqFromXapp, 1},
4615 Counter{cSubReqToE2, uint64(subReqCount)},
4616 Counter{cSubRespFromE2, uint64(subReqCount)},
4617 Counter{cSubRespToXapp, uint64(subReqCount)},
4618 Counter{cSubDelReqFromXapp, 1},
4619 Counter{cSubDelReqToE2, uint64(subReqCount)},
4620 Counter{cSubDelRespFromE2, uint64(subReqCount)},
4621 Counter{cSubDelRespToXapp, 1},
4625 params := xappConn1.GetRESTSubsReqReportParams(subReqCount, parameterSet, actionDefinitionPresent, actionParamCount)
4626 restSubId := xappConn1.SendRESTSubsReq(t, params)
4627 e2SubsIds := sendAndReceiveMultipleE2SubReqs(t, subReqCount, xappConn1, e2termConn1, restSubId)
4629 assert.Equal(t, len(e2SubsIds), subReqCount)
4632 xappConn1.SendRESTSubsDelReq(t, &restSubId)
4633 sendAndReceiveMultipleE2DelReqs(t, e2SubsIds, e2termConn1)
4635 xappConn1.TestMsgChanEmpty(t)
4636 e2termConn1.TestMsgChanEmpty(t)
4637 mainCtrl.wait_registry_empty(t, 10)
4639 mainCtrl.VerifyCounterValues(t)
4642 func TestRESTFullAmountReportSubReqAndSubDelOk(t *testing.T) {
4646 actionDefinitionPresent := false
4647 actionParamCount := 0
4649 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
4650 Counter{cSubReqFromXapp, 1},
4651 Counter{cSubReqToE2, uint64(subReqCount)},
4652 Counter{cSubRespFromE2, uint64(subReqCount)},
4653 Counter{cSubRespToXapp, uint64(subReqCount)},
4654 Counter{cSubDelReqFromXapp, 1},
4655 Counter{cSubDelReqToE2, uint64(subReqCount)},
4656 Counter{cSubDelRespFromE2, uint64(subReqCount)},
4657 Counter{cSubDelRespToXapp, 1},
4661 params := xappConn1.GetRESTSubsReqReportParams(subReqCount, parameterSet, actionDefinitionPresent, actionParamCount)
4662 restSubId := xappConn1.SendRESTSubsReq(t, params)
4663 e2SubsIds := sendAndReceiveMultipleE2SubReqs(t, subReqCount, xappConn1, e2termConn1, restSubId)
4665 assert.Equal(t, len(e2SubsIds), subReqCount)
4668 xappConn1.SendRESTSubsDelReq(t, &restSubId)
4669 sendAndReceiveMultipleE2DelReqs(t, e2SubsIds, e2termConn1)
4671 xappConn1.TestMsgChanEmpty(t)
4672 e2termConn1.TestMsgChanEmpty(t)
4673 mainCtrl.wait_registry_empty(t, 10)
4675 mainCtrl.VerifyCounterValues(t)
4678 func TestRESTSubReqReportSameActionDiffEventTriggerDefinitionLen(t *testing.T) {
4679 CaseBegin("TestRESTSubReqReportSameActionDiffEventTriggerDefinitionLen")
4681 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
4682 Counter{cSubReqFromXapp, 2},
4683 Counter{cSubReqToE2, 2},
4684 Counter{cSubRespFromE2, 2},
4685 Counter{cSubRespToXapp, 2},
4686 Counter{cSubDelReqFromXapp, 2},
4687 Counter{cSubDelReqToE2, 2},
4688 Counter{cSubDelRespFromE2, 2},
4689 Counter{cSubDelRespToXapp, 2},
4693 var params *teststube2ap.RESTSubsReqParams = nil
4696 restSubId1, e2SubsId1 := createSubscription(t, xappConn1, e2termConn1, params)
4697 xapp.Logger.Info("Send REST subscriber request for subscriberId : %v", restSubId1)
4699 queryXappSubscription(t, int64(e2SubsId1), "RAN_NAME_1", []string{"localhost:13560"})
4702 params = xappConn2.GetRESTSubsReqReportParams(subReqCount, parameterSet, actionDefinitionPresent, actionParamCount)
4703 params.SetMeid("RAN_NAME_1")
4704 eventTriggerDefinition := "1234"
4705 params.SetSubEventTriggerDefinition(eventTriggerDefinition)
4707 restSubId2 := xappConn2.SendRESTSubsReq(t, params)
4708 xapp.Logger.Info("Send REST subscriber request for subscriberId : %v", restSubId2)
4709 crereq, cremsg := e2termConn1.RecvSubsReq(t)
4710 xappConn2.ExpectRESTNotification(t, restSubId2)
4711 e2termConn1.SendSubsResp(t, crereq, cremsg)
4712 e2SubsId2 := xappConn2.WaitRESTNotification(t, restSubId2)
4714 deleteXapp1Subscription(t, &restSubId1)
4715 deleteXapp2Subscription(t, &restSubId2)
4717 waitSubsCleanup(t, e2SubsId1, 10)
4718 waitSubsCleanup(t, e2SubsId2, 10)
4720 mainCtrl.VerifyCounterValues(t)
4724 func TestRESTSubReqReportSameActionDiffActionListLen(t *testing.T) {
4725 CaseBegin("TestRESTSubReqReportSameActionDiffActionListLen")
4727 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
4728 Counter{cSubReqFromXapp, 2},
4729 Counter{cSubReqToE2, 2},
4730 Counter{cSubRespFromE2, 2},
4731 Counter{cSubRespToXapp, 2},
4732 Counter{cSubDelReqFromXapp, 2},
4733 Counter{cSubDelReqToE2, 2},
4734 Counter{cSubDelRespFromE2, 2},
4735 Counter{cSubDelRespToXapp, 2},
4739 var params *teststube2ap.RESTSubsReqParams = nil
4742 restSubId1, e2SubsId1 := createSubscription(t, xappConn1, e2termConn1, params)
4743 xapp.Logger.Info("Send REST subscriber request for subscriberId : %v", restSubId1)
4745 queryXappSubscription(t, int64(e2SubsId1), "RAN_NAME_1", []string{"localhost:13560"})
4748 params = xappConn2.GetRESTSubsReqReportParams(subReqCount, parameterSet, actionDefinitionPresent, actionParamCount)
4749 params.SetMeid("RAN_NAME_1")
4751 actionId := int64(1)
4752 actionType := "report"
4753 actionDefinition := "56781"
4754 subsequestActionType := "continue"
4755 timeToWait := "w10ms"
4756 params.AppendActionToActionToBeSetupList(actionId, actionType, actionDefinition, subsequestActionType, timeToWait)
4758 restSubId2 := xappConn2.SendRESTSubsReq(t, params)
4759 xapp.Logger.Info("Send REST subscriber request for subscriberId : %v", restSubId2)
4760 crereq, cremsg := e2termConn1.RecvSubsReq(t)
4761 xappConn2.ExpectRESTNotification(t, restSubId2)
4762 e2termConn1.SendSubsResp(t, crereq, cremsg)
4763 e2SubsId2 := xappConn2.WaitRESTNotification(t, restSubId2)
4765 deleteXapp1Subscription(t, &restSubId1)
4766 deleteXapp2Subscription(t, &restSubId2)
4768 waitSubsCleanup(t, e2SubsId1, 10)
4769 waitSubsCleanup(t, e2SubsId2, 10)
4771 mainCtrl.VerifyCounterValues(t)
4775 func TestRESTSubReqReportSameActionDiffActionID(t *testing.T) {
4776 CaseBegin("TestRESTSubReqReportSameActionDiffActionID")
4778 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
4779 Counter{cSubReqFromXapp, 2},
4780 Counter{cSubReqToE2, 2},
4781 Counter{cSubRespFromE2, 2},
4782 Counter{cSubRespToXapp, 2},
4783 Counter{cSubDelReqFromXapp, 2},
4784 Counter{cSubDelReqToE2, 2},
4785 Counter{cSubDelRespFromE2, 2},
4786 Counter{cSubDelRespToXapp, 2},
4790 var params *teststube2ap.RESTSubsReqParams = nil
4793 restSubId1, e2SubsId1 := createSubscription(t, xappConn1, e2termConn1, params)
4794 xapp.Logger.Info("Send REST subscriber request for subscriberId : %v", restSubId1)
4796 queryXappSubscription(t, int64(e2SubsId1), "RAN_NAME_1", []string{"localhost:13560"})
4799 params = xappConn2.GetRESTSubsReqReportParams(subReqCount, parameterSet, actionDefinitionPresent, actionParamCount)
4800 params.SetMeid("RAN_NAME_1")
4801 params.SetSubActionIDs(int64(2))
4803 restSubId2 := xappConn2.SendRESTSubsReq(t, params)
4804 xapp.Logger.Info("Send REST subscriber request for subscriberId : %v", restSubId2)
4805 crereq, cremsg := e2termConn1.RecvSubsReq(t)
4806 xappConn2.ExpectRESTNotification(t, restSubId2)
4807 e2termConn1.SendSubsResp(t, crereq, cremsg)
4808 e2SubsId2 := xappConn2.WaitRESTNotification(t, restSubId2)
4810 deleteXapp1Subscription(t, &restSubId1)
4811 deleteXapp2Subscription(t, &restSubId2)
4813 waitSubsCleanup(t, e2SubsId1, 10)
4814 waitSubsCleanup(t, e2SubsId2, 10)
4816 mainCtrl.VerifyCounterValues(t)
4820 func TestRESTSubReqDiffActionType(t *testing.T) {
4821 CaseBegin("TestRESTSubReqDiffActionType")
4823 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
4824 Counter{cSubReqFromXapp, 2},
4825 Counter{cSubReqToE2, 2},
4826 Counter{cSubRespFromE2, 2},
4827 Counter{cSubRespToXapp, 2},
4828 Counter{cSubDelReqFromXapp, 2},
4829 Counter{cSubDelReqToE2, 2},
4830 Counter{cSubDelRespFromE2, 2},
4831 Counter{cSubDelRespToXapp, 2},
4835 params := xappConn1.GetRESTSubsReqPolicyParams(subReqCount, actionDefinitionPresent, policyParamCount)
4838 restSubId1, e2SubsId1 := createSubscription(t, xappConn1, e2termConn1, params)
4839 xapp.Logger.Info("Send REST subscriber request for subscriberId : %v", restSubId1)
4841 queryXappSubscription(t, int64(e2SubsId1), "RAN_NAME_1", []string{"localhost:13560"})
4844 params = xappConn2.GetRESTSubsReqReportParams(subReqCount, parameterSet, actionDefinitionPresent, actionParamCount)
4845 params.SetMeid("RAN_NAME_1")
4847 restSubId2 := xappConn2.SendRESTSubsReq(t, params)
4848 xapp.Logger.Info("Send REST subscriber request for subscriberId : %v", restSubId2)
4849 crereq, cremsg := e2termConn1.RecvSubsReq(t)
4850 xappConn2.ExpectRESTNotification(t, restSubId2)
4851 e2termConn1.SendSubsResp(t, crereq, cremsg)
4852 e2SubsId2 := xappConn2.WaitRESTNotification(t, restSubId2)
4854 deleteXapp1Subscription(t, &restSubId1)
4855 deleteXapp2Subscription(t, &restSubId2)
4857 waitSubsCleanup(t, e2SubsId1, 10)
4858 waitSubsCleanup(t, e2SubsId2, 10)
4860 mainCtrl.VerifyCounterValues(t)
4864 func TestRESTSubReqPolicyAndSubDelOkSameAction(t *testing.T) {
4865 CaseBegin("TestRESTSubReqPolicyAndSubDelOkSameAction")
4867 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
4868 Counter{cSubReqFromXapp, 2},
4869 Counter{cSubReqToE2, 2},
4870 Counter{cSubRespFromE2, 2},
4871 Counter{cSubRespToXapp, 2},
4872 Counter{cSubDelReqFromXapp, 2},
4873 Counter{cSubDelReqToE2, 2},
4874 Counter{cSubDelRespFromE2, 2},
4875 Counter{cSubDelRespToXapp, 2},
4879 params := xappConn1.GetRESTSubsReqPolicyParams(subReqCount, actionDefinitionPresent, policyParamCount)
4882 restSubId1, e2SubsId1 := createSubscription(t, xappConn1, e2termConn1, params)
4883 xapp.Logger.Info("Send REST subscriber request for subscriberId : %v", restSubId1)
4885 queryXappSubscription(t, int64(e2SubsId1), "RAN_NAME_1", []string{"localhost:13560"})
4888 params = xappConn2.GetRESTSubsReqPolicyParams(subReqCount, actionDefinitionPresent, policyParamCount)
4889 params.SetMeid("RAN_NAME_1")
4891 restSubId2 := xappConn2.SendRESTSubsReq(t, params)
4892 xapp.Logger.Info("Send REST subscriber request for subscriberId : %v", restSubId2)
4893 crereq, cremsg := e2termConn1.RecvSubsReq(t)
4894 xappConn2.ExpectRESTNotification(t, restSubId2)
4895 e2termConn1.SendSubsResp(t, crereq, cremsg)
4896 e2SubsId2 := xappConn2.WaitRESTNotification(t, restSubId2)
4898 deleteXapp1Subscription(t, &restSubId1)
4899 deleteXapp2Subscription(t, &restSubId2)
4901 waitSubsCleanup(t, e2SubsId1, 10)
4902 waitSubsCleanup(t, e2SubsId2, 10)
4904 mainCtrl.VerifyCounterValues(t)
4908 func TestRESTSubReqReportSameActionDiffActionDefinitionLen(t *testing.T) {
4909 CaseBegin("TestRESTSubReqReportSameActionDiffActionDefinitionLen")
4911 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
4912 Counter{cSubReqFromXapp, 2},
4913 Counter{cSubReqToE2, 2},
4914 Counter{cSubRespFromE2, 2},
4915 Counter{cSubRespToXapp, 2},
4916 Counter{cSubDelReqFromXapp, 2},
4917 Counter{cSubDelReqToE2, 2},
4918 Counter{cSubDelRespFromE2, 2},
4919 Counter{cSubDelRespToXapp, 2},
4923 var params *teststube2ap.RESTSubsReqParams = nil
4926 restSubId1, e2SubsId1 := createSubscription(t, xappConn1, e2termConn1, params)
4927 xapp.Logger.Info("Send REST subscriber request for subscriberId : %v", restSubId1)
4929 queryXappSubscription(t, int64(e2SubsId1), "RAN_NAME_1", []string{"localhost:13560"})
4932 params = xappConn2.GetRESTSubsReqReportParams(subReqCount, parameterSet, actionDefinitionPresent, actionParamCount)
4933 params.SetMeid("RAN_NAME_1")
4934 actionDefinition := "5678"
4935 params.SetSubActionDefinition(actionDefinition)
4937 restSubId2 := xappConn2.SendRESTSubsReq(t, params)
4938 xapp.Logger.Info("Send REST subscriber request for subscriberId : %v", restSubId2)
4939 crereq, cremsg := e2termConn1.RecvSubsReq(t)
4940 xappConn2.ExpectRESTNotification(t, restSubId2)
4941 e2termConn1.SendSubsResp(t, crereq, cremsg)
4942 e2SubsId2 := xappConn2.WaitRESTNotification(t, restSubId2)
4944 deleteXapp1Subscription(t, &restSubId1)
4945 deleteXapp2Subscription(t, &restSubId2)
4947 waitSubsCleanup(t, e2SubsId1, 10)
4948 waitSubsCleanup(t, e2SubsId2, 10)
4950 mainCtrl.VerifyCounterValues(t)
4954 func TestRESTSubReqReportSameActionDiffActionDefinitionContents(t *testing.T) {
4955 CaseBegin("TestRESTSubReqReportSameActionDiffActionDefinitionContents")
4957 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
4958 Counter{cSubReqFromXapp, 2},
4959 Counter{cSubReqToE2, 2},
4960 Counter{cSubRespFromE2, 2},
4961 Counter{cSubRespToXapp, 2},
4962 Counter{cSubDelReqFromXapp, 2},
4963 Counter{cSubDelReqToE2, 2},
4964 Counter{cSubDelRespFromE2, 2},
4965 Counter{cSubDelRespToXapp, 2},
4969 var params *teststube2ap.RESTSubsReqParams = nil
4972 restSubId1, e2SubsId1 := createSubscription(t, xappConn1, e2termConn1, params)
4973 xapp.Logger.Info("Send REST subscriber request for subscriberId : %v", restSubId1)
4975 queryXappSubscription(t, int64(e2SubsId1), "RAN_NAME_1", []string{"localhost:13560"})
4978 params = xappConn2.GetRESTSubsReqReportParams(subReqCount, parameterSet, actionDefinitionPresent, actionParamCount)
4979 params.SetMeid("RAN_NAME_1")
4980 actionDefinition := "56782"
4981 params.SetSubActionDefinition(actionDefinition)
4983 restSubId2 := xappConn2.SendRESTSubsReq(t, params)
4984 xapp.Logger.Info("Send REST subscriber request for subscriberId : %v", restSubId2)
4985 crereq, cremsg := e2termConn1.RecvSubsReq(t)
4986 xappConn2.ExpectRESTNotification(t, restSubId2)
4987 e2termConn1.SendSubsResp(t, crereq, cremsg)
4988 e2SubsId2 := xappConn2.WaitRESTNotification(t, restSubId2)
4990 deleteXapp1Subscription(t, &restSubId1)
4991 deleteXapp2Subscription(t, &restSubId2)
4993 waitSubsCleanup(t, e2SubsId1, 10)
4994 waitSubsCleanup(t, e2SubsId2, 10)
4996 mainCtrl.VerifyCounterValues(t)
5000 func TestRESTSubReqReportSameActionDiffSubsAction(t *testing.T) {
5001 CaseBegin("TestRESTSubReqReportSameActionDiffSubsAction")
5003 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
5004 Counter{cSubReqFromXapp, 2},
5005 Counter{cSubReqToE2, 2},
5006 Counter{cSubRespFromE2, 2},
5007 Counter{cSubRespToXapp, 2},
5008 Counter{cSubDelReqFromXapp, 2},
5009 Counter{cSubDelReqToE2, 2},
5010 Counter{cSubDelRespFromE2, 2},
5011 Counter{cSubDelRespToXapp, 2},
5015 var params *teststube2ap.RESTSubsReqParams = nil
5018 restSubId1, e2SubsId1 := createSubscription(t, xappConn1, e2termConn1, params)
5019 xapp.Logger.Info("Send REST subscriber request for subscriberId : %v", restSubId1)
5021 queryXappSubscription(t, int64(e2SubsId1), "RAN_NAME_1", []string{"localhost:13560"})
5024 params = xappConn2.GetRESTSubsReqReportParams(subReqCount, parameterSet, actionDefinitionPresent, actionParamCount)
5025 params.SetMeid("RAN_NAME_1")
5026 params.SetTimeToWait("w200ms")
5027 restSubId2 := xappConn2.SendRESTSubsReq(t, params)
5028 xapp.Logger.Info("Send REST subscriber request for subscriberId : %v", restSubId2)
5029 crereq, cremsg := e2termConn1.RecvSubsReq(t)
5030 xappConn2.ExpectRESTNotification(t, restSubId2)
5031 e2termConn1.SendSubsResp(t, crereq, cremsg)
5032 e2SubsId2 := xappConn2.WaitRESTNotification(t, restSubId2)
5034 deleteXapp1Subscription(t, &restSubId1)
5035 deleteXapp2Subscription(t, &restSubId2)
5037 waitSubsCleanup(t, e2SubsId1, 10)
5038 waitSubsCleanup(t, e2SubsId2, 10)
5040 mainCtrl.VerifyCounterValues(t)
5044 //-----------------------------------------------------------------------------
5045 // TestRESTUnpackSubscriptionResponseDecodeFail
5048 // +-------+ +---------+ +---------+
5049 // | xapp | | submgr | | e2term |
5050 // +-------+ +---------+ +---------+
5053 // |---------------->| |
5055 // | RESTSubResp | |
5056 // |<----------------| |
5059 // | |------------->|
5061 // | | SubResp | ASN.1 decode fails
5062 // | |<-------------|
5065 // | |------------->|
5067 // | | SubFail | Duplicated action
5068 // | |<-------------|
5069 // | RESTNotif (fail)| |
5070 // |<----------------| |
5072 // | |------------->|
5075 // | |<-------------|
5077 //-----------------------------------------------------------------------------
5078 func TestRESTUnpackSubscriptionResponseDecodeFail(t *testing.T) {
5079 xapp.Logger.Info("TEST: TestRESTUnpackSubscriptionResponseDecodeFail")
5081 parameterSet := 1 // E2SM-gNB-X2
5082 actionDefinitionPresent := true
5083 actionParamCount := 1
5086 params := xappConn1.GetRESTSubsReqReportParams(subReqCount, parameterSet, actionDefinitionPresent, actionParamCount)
5087 restSubId := xappConn1.SendRESTSubsReq(t, params)
5089 crereq, cremsg := e2termConn1.RecvSubsReq(t)
5090 // Decode of this response fails which will result resending original request
5091 e2termConn1.SendInvalidE2Asn1Resp(t, cremsg, xapp.RIC_SUB_RESP)
5093 _, cremsg = e2termConn1.RecvSubsReq(t)
5095 xappConn1.ExpectRESTNotification(t, restSubId)
5097 // Subscription already created in E2 Node.
5098 fparams := &teststube2ap.E2StubSubsFailParams{}
5100 fparams.SetCauseVal(0, 1, 3) // CauseRIC / duplicate-action
5101 e2termConn1.SendSubsFail(t, fparams, cremsg)
5103 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
5104 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
5106 instanceId := xappConn1.WaitRESTNotification(t, restSubId)
5107 xapp.Logger.Info("TEST: REST notification received e2SubsId=%v", instanceId)
5109 // Wait that subs is cleaned
5110 mainCtrl.wait_subs_clean(t, crereq.RequestId.InstanceId, 10)
5112 xappConn1.TestMsgChanEmpty(t)
5113 e2termConn1.TestMsgChanEmpty(t)
5114 mainCtrl.wait_registry_empty(t, 10)
5117 //-----------------------------------------------------------------------------
5118 // TestRESTUnpackSubscriptionResponseUnknownInstanceId
5121 // +-------+ +---------+ +---------+
5122 // | xapp | | submgr | | e2term |
5123 // +-------+ +---------+ +---------+
5126 // |---------------->| |
5128 // | RESTSubResp | |
5129 // |<----------------| |
5132 // | |------------->|
5134 // | | SubResp | Unknown instanceId
5135 // | |<-------------|
5138 // | |------------->|
5140 // | | SubFail | Duplicated action
5141 // | |<-------------|
5142 // | RESTNotif (fail)| |
5143 // |<----------------| |
5145 // | |------------->|
5148 // | |<-------------|
5150 //-----------------------------------------------------------------------------
5151 func TestRESTUnpackSubscriptionResponseUnknownInstanceId(t *testing.T) {
5152 xapp.Logger.Info("TEST: TestRESTUnpackSubscriptionResponseUnknownInstanceId")
5154 parameterSet := 1 // E2SM-gNB-X2
5155 actionDefinitionPresent := true
5156 actionParamCount := 1
5159 params := xappConn1.GetRESTSubsReqReportParams(subReqCount, parameterSet, actionDefinitionPresent, actionParamCount)
5160 restSubId := xappConn1.SendRESTSubsReq(t, params)
5162 crereq, cremsg := e2termConn1.RecvSubsReq(t)
5164 // Unknown instanceId in this response which will result resending original request
5165 orgInstanceId := crereq.RequestId.InstanceId
5166 crereq.RequestId.InstanceId = 0
5167 e2termConn1.SendSubsResp(t, crereq, cremsg)
5169 _, cremsg = e2termConn1.RecvSubsReq(t)
5171 xappConn1.ExpectRESTNotification(t, restSubId)
5173 // Subscription already created in E2 Node.
5174 fparams := &teststube2ap.E2StubSubsFailParams{}
5176 fparams.SetCauseVal(0, 1, 3) // CauseRIC / duplicate-action
5177 e2termConn1.SendSubsFail(t, fparams, cremsg)
5179 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
5180 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
5182 instanceId := xappConn1.WaitRESTNotification(t, restSubId)
5183 xapp.Logger.Info("TEST: REST notification received e2SubsId=%v", instanceId)
5185 // Wait that subs is cleaned
5186 mainCtrl.wait_subs_clean(t, orgInstanceId, 10)
5188 xappConn1.TestMsgChanEmpty(t)
5189 e2termConn1.TestMsgChanEmpty(t)
5190 mainCtrl.wait_registry_empty(t, 10)
5193 //-----------------------------------------------------------------------------
5194 // TestRESTUnpackSubscriptionResponseNoTransaction
5197 // +-------+ +---------+ +---------+
5198 // | xapp | | submgr | | e2term |
5199 // +-------+ +---------+ +---------+
5202 // |---------------->| |
5204 // | RESTSubResp | |
5205 // |<----------------| |
5208 // | |------------->|
5210 // | | SubResp | No transaction for the response
5211 // | |<-------------|
5214 // | |------------->|
5216 // | | SubFail | Duplicated action
5217 // | |<-------------|
5218 // | RESTNotif (fail)| |
5219 // |<----------------| |
5221 // | |------------->|
5224 // | |<-------------|
5227 // | |------------->|
5230 // | |<-------------|
5232 //-----------------------------------------------------------------------------
5233 func TestRESTUnpackSubscriptionResponseNoTransaction(t *testing.T) {
5234 xapp.Logger.Info("TEST: TestRESTUnpackSubscriptionResponseNoTransaction")
5236 parameterSet := 1 // E2SM-gNB-X2
5237 actionDefinitionPresent := true
5238 actionParamCount := 1
5241 params := xappConn1.GetRESTSubsReqReportParams(subReqCount, parameterSet, actionDefinitionPresent, actionParamCount)
5242 restSubId := xappConn1.SendRESTSubsReq(t, params)
5244 crereq, cremsg := e2termConn1.RecvSubsReq(t)
5246 mainCtrl.MakeTransactionNil(t, crereq.RequestId.InstanceId)
5247 // No transaction exist for this response which will result resending original request
5248 e2termConn1.SendSubsResp(t, crereq, cremsg)
5250 _, cremsg = e2termConn1.RecvSubsReq(t)
5252 xappConn1.ExpectRESTNotification(t, restSubId)
5254 // Subscription already created in E2 Node.
5255 fparams := &teststube2ap.E2StubSubsFailParams{}
5257 fparams.SetCauseVal(0, 1, 3) // CauseRIC / duplicate-action
5258 e2termConn1.SendSubsFail(t, fparams, cremsg)
5260 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
5261 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
5263 // Resending happens because there no transaction
5264 delreq, delmsg = e2termConn1.RecvSubsDelReq(t)
5265 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
5267 instanceId := xappConn1.WaitRESTNotification(t, restSubId)
5268 xapp.Logger.Info("TEST: REST notification received e2SubsId=%v", instanceId)
5270 // Wait that subs is cleaned
5271 mainCtrl.wait_subs_clean(t, crereq.RequestId.InstanceId, 10)
5273 xappConn1.TestMsgChanEmpty(t)
5274 e2termConn1.TestMsgChanEmpty(t)
5275 mainCtrl.wait_registry_empty(t, 10)
5279 //-----------------------------------------------------------------------------
5280 // TestRESTUnpackSubscriptionFailureDecodeFail
5283 // +-------+ +---------+ +---------+
5284 // | xapp | | submgr | | e2term |
5285 // +-------+ +---------+ +---------+
5288 // |---------------->| |
5290 // | RESTSubResp | |
5291 // |<----------------| |
5294 // | |------------->|
5296 // | | SubFail | ASN.1 decode fails
5297 // | |<-------------|
5300 // | |------------->|
5302 // | | SubFail | Duplicated action
5303 // | |<-------------|
5304 // | RESTNotif (fail)| |
5305 // |<----------------| |
5307 // | |------------->|
5310 // | |<-------------|
5312 //-----------------------------------------------------------------------------
5313 func TestRESTUnpackSubscriptionFailureDecodeFail(t *testing.T) {
5314 xapp.Logger.Info("TEST: TestRESTUnpackSubscriptionFailureDecodeFail")
5316 parameterSet := 1 // E2SM-gNB-X2
5317 actionDefinitionPresent := true
5318 actionParamCount := 1
5321 params := xappConn1.GetRESTSubsReqReportParams(subReqCount, parameterSet, actionDefinitionPresent, actionParamCount)
5322 restSubId := xappConn1.SendRESTSubsReq(t, params)
5324 crereq, cremsg := e2termConn1.RecvSubsReq(t)
5326 // Decode of this response fails which will result resending original request
5327 e2termConn1.SendInvalidE2Asn1Resp(t, cremsg, xapp.RIC_SUB_FAILURE)
5329 _, cremsg = e2termConn1.RecvSubsReq(t)
5331 xappConn1.ExpectRESTNotification(t, restSubId)
5333 // Subscription already created in E2 Node.
5334 fparams := &teststube2ap.E2StubSubsFailParams{}
5336 fparams.SetCauseVal(0, 1, 3) // CauseRIC / duplicate-action
5337 e2termConn1.SendSubsFail(t, fparams, cremsg)
5339 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
5340 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
5342 instanceId := xappConn1.WaitRESTNotification(t, restSubId)
5343 xapp.Logger.Info("TEST: REST notification received e2SubsId=%v", instanceId)
5345 // Wait that subs is cleaned
5346 mainCtrl.wait_subs_clean(t, crereq.RequestId.InstanceId, 10)
5348 xappConn1.TestMsgChanEmpty(t)
5349 e2termConn1.TestMsgChanEmpty(t)
5350 mainCtrl.wait_registry_empty(t, 10)
5353 //-----------------------------------------------------------------------------
5354 // TestRESTUnpackSubscriptionResponseUnknownInstanceId
5357 // +-------+ +---------+ +---------+
5358 // | xapp | | submgr | | e2term |
5359 // +-------+ +---------+ +---------+
5362 // |---------------->| |
5364 // | RESTSubResp | |
5365 // |<----------------| |
5368 // | |------------->|
5370 // | | SubFail | Unknown instanceId
5371 // | |<-------------|
5374 // | |------------->|
5376 // | | SubFail | Duplicated action
5377 // | |<-------------|
5378 // | RESTNotif (fail)| |
5379 // |<----------------| |
5381 // | |------------->|
5384 // | |<-------------|
5386 //-----------------------------------------------------------------------------
5387 func TestRESTUnpackSubscriptionFailureUnknownInstanceId(t *testing.T) {
5388 xapp.Logger.Info("TEST: TestRESTUnpackSubscriptionFailureUnknownInstanceId")
5390 parameterSet := 1 // E2SM-gNB-X2
5391 actionDefinitionPresent := true
5392 actionParamCount := 1
5395 params := xappConn1.GetRESTSubsReqReportParams(subReqCount, parameterSet, actionDefinitionPresent, actionParamCount)
5396 restSubId := xappConn1.SendRESTSubsReq(t, params)
5398 crereq, cremsg := e2termConn1.RecvSubsReq(t)
5400 // Unknown instanceId in this response which will result resending original request
5401 fparams := &teststube2ap.E2StubSubsFailParams{}
5403 fparams.Fail.RequestId.InstanceId = 0
5404 e2termConn1.SendSubsFail(t, fparams, cremsg)
5406 _, cremsg = e2termConn1.RecvSubsReq(t)
5408 xappConn1.ExpectRESTNotification(t, restSubId)
5410 // Subscription already created in E2 Node.
5411 fparams.SetCauseVal(0, 1, 3) // CauseRIC / duplicate-action
5412 e2termConn1.SendSubsFail(t, fparams, cremsg)
5414 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
5415 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
5417 instanceId := xappConn1.WaitRESTNotification(t, restSubId)
5418 xapp.Logger.Info("TEST: REST notification received e2SubsId=%v", instanceId)
5420 // Wait that subs is cleaned
5421 mainCtrl.wait_subs_clean(t, crereq.RequestId.InstanceId, 10)
5423 xappConn1.TestMsgChanEmpty(t)
5424 e2termConn1.TestMsgChanEmpty(t)
5425 mainCtrl.wait_registry_empty(t, 10)
5428 //-----------------------------------------------------------------------------
5429 // TestRESTUnpackSubscriptionFailureNoTransaction
5432 // +-------+ +---------+ +---------+
5433 // | xapp | | submgr | | e2term |
5434 // +-------+ +---------+ +---------+
5437 // |---------------->| |
5439 // | RESTSubResp | |
5440 // |<----------------| |
5443 // | |------------->|
5445 // | | SubFail | No transaction for the response
5446 // | |<-------------|
5449 // | |------------->|
5451 // | | SubFail | Duplicated action
5452 // | |<-------------|
5453 // | RESTNotif (fail)| |
5454 // |<----------------| |
5456 // | |------------->|
5459 // | |<-------------|
5461 //-----------------------------------------------------------------------------
5462 func TestRESTUnpackSubscriptionFailureNoTransaction(t *testing.T) {
5463 xapp.Logger.Info("TEST: TestRESTUnpackSubscriptionFailureNoTransaction")
5465 parameterSet := 1 // E2SM-gNB-X2
5466 actionDefinitionPresent := true
5467 actionParamCount := 1
5470 params := xappConn1.GetRESTSubsReqReportParams(subReqCount, parameterSet, actionDefinitionPresent, actionParamCount)
5471 restSubId := xappConn1.SendRESTSubsReq(t, params)
5473 crereq, cremsg := e2termConn1.RecvSubsReq(t)
5475 mainCtrl.MakeTransactionNil(t, crereq.RequestId.InstanceId)
5477 // No transaction exist for this response which will result resending original request
5478 fparams := &teststube2ap.E2StubSubsFailParams{}
5480 e2termConn1.SendSubsFail(t, fparams, cremsg)
5482 _, cremsg = e2termConn1.RecvSubsReq(t)
5484 xappConn1.ExpectRESTNotification(t, restSubId)
5486 // Subscription already created in E2 Node.
5487 fparams.SetCauseVal(0, 1, 3) // CauseRIC / duplicate-action
5488 e2termConn1.SendSubsFail(t, fparams, cremsg)
5490 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
5491 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
5493 // Resending happens because there no transaction
5494 delreq, delmsg = e2termConn1.RecvSubsDelReq(t)
5495 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
5497 instanceId := xappConn1.WaitRESTNotification(t, restSubId)
5498 xapp.Logger.Info("TEST: REST notification received e2SubsId=%v", instanceId)
5500 // Wait that subs is cleaned
5501 mainCtrl.wait_subs_clean(t, crereq.RequestId.InstanceId, 10)
5503 xappConn1.TestMsgChanEmpty(t)
5504 e2termConn1.TestMsgChanEmpty(t)
5505 mainCtrl.wait_registry_empty(t, 10)
5508 //-----------------------------------------------------------------------------
5509 // TestRESTUnpackSubscriptionDeleteResponseDecodeFail
5512 // +-------+ +---------+ +---------+
5513 // | xapp | | submgr | | e2term |
5514 // +-------+ +---------+ +---------+
5516 // | [SUBS CREATE] |
5519 // | RESTSubDelReq | |
5520 // |---------------->| |
5522 // | RESTSubDelResp | |
5523 // |<----------------| |
5526 // | |------------->|
5528 // | | SubDelResp | ASN.1 decode fails
5529 // | |<-------------|
5532 // | |------------->|
5534 // | | SubDelFail | Subscription does exist any more
5535 // | |<-------------|
5538 //-----------------------------------------------------------------------------
5539 func TestRESTUnpackSubscriptionDeleteResponseDecodeFail(t *testing.T) {
5540 xapp.Logger.Info("TEST: TestRESTUnpackSubscriptionDeleteResponseDecodeFail")
5543 var params *teststube2ap.RESTSubsReqParams = nil
5544 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
5547 xappConn1.SendRESTSubsDelReq(t, &restSubId)
5549 // E2t: Receive 1st SubsDelReq
5550 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
5552 // Decode of this response fails which will result resending original request
5553 e2termConn1.SendInvalidE2Asn1Resp(t, delmsg, xapp.RIC_SUB_DEL_REQ)
5555 // E2t: Receive 2nd SubsDelReq and send SubsDelResp
5556 delreq, delmsg = e2termConn1.RecvSubsDelReq(t)
5558 // Subscription does not exist in in E2 Node.
5559 e2termConn1.SendSubsDelFail(t, delreq, delmsg)
5561 // Wait that subs is cleaned
5562 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
5564 xappConn1.TestMsgChanEmpty(t)
5565 e2termConn1.TestMsgChanEmpty(t)
5566 mainCtrl.wait_registry_empty(t, 10)
5569 //-----------------------------------------------------------------------------
5570 // TestRESTUnpackSubscriptionDeleteResponseUnknownInstanceId
5573 // +-------+ +---------+ +---------+
5574 // | xapp | | submgr | | e2term |
5575 // +-------+ +---------+ +---------+
5577 // | [SUBS CREATE] |
5580 // | RESTSubDelReq | |
5581 // |---------------->| |
5583 // | RESTSubDelResp | |
5584 // |<----------------| |
5587 // | |------------->|
5589 // | | SubDelResp | Unknown instanceId
5590 // | |<-------------|
5593 // | |------------->|
5595 // | | SubDelFail | Subscription does exist any more
5596 // | |<-------------|
5598 //-----------------------------------------------------------------------------
5599 func TestRESTUnpackSubscriptionDeleteResponseUnknownInstanceId(t *testing.T) {
5600 xapp.Logger.Info("TEST: TestRESTUnpackSubscriptionDeleteResponseUnknownInstanceId")
5603 var params *teststube2ap.RESTSubsReqParams = nil
5604 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
5607 xappConn1.SendRESTSubsDelReq(t, &restSubId)
5609 // E2t: Receive 1st SubsDelReq
5610 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
5612 // Unknown instanceId in this response which will result resending original request
5613 delreq.RequestId.InstanceId = 0
5614 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
5616 // E2t: Receive 2nd SubsDelReq
5617 delreq, delmsg = e2termConn1.RecvSubsDelReq(t)
5619 // Subscription does not exist in in E2 Node.
5620 e2termConn1.SendSubsDelFail(t, delreq, delmsg)
5622 // Wait that subs is cleaned
5623 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
5625 xappConn1.TestMsgChanEmpty(t)
5626 e2termConn1.TestMsgChanEmpty(t)
5627 mainCtrl.wait_registry_empty(t, 10)
5630 //-----------------------------------------------------------------------------
5631 // TestRESTUnpackSubscriptionDeleteResponseNoTransaction
5634 // +-------+ +---------+ +---------+
5635 // | xapp | | submgr | | e2term |
5636 // +-------+ +---------+ +---------+
5638 // | [SUBS CREATE] |
5641 // | RESTSubDelReq | |
5642 // |---------------->| |
5644 // | RESTSubDelResp | |
5645 // |<----------------| |
5648 // | |------------->|
5650 // | | SubDelResp | No transaction for the response
5651 // | |<-------------|
5654 // | |------------->|
5656 // | | SubDelFail | Subscription does exist any more
5657 // | |<-------------|
5659 //-----------------------------------------------------------------------------
5660 func TestRESTUnpackSubscriptionDeleteResponseNoTransaction(t *testing.T) {
5661 xapp.Logger.Info("TEST: TestRESTUnpackSubscriptionDeleteResponseNoTransaction")
5664 var params *teststube2ap.RESTSubsReqParams = nil
5665 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
5668 xappConn1.SendRESTSubsDelReq(t, &restSubId)
5670 // E2t: Receive 1st SubsDelReq
5671 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
5673 mainCtrl.MakeTransactionNil(t, e2SubsId)
5675 // No transaction exist for this response which will result resending original request
5676 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
5678 // E2t: Receive 2nd SubsDelReq
5679 delreq, delmsg = e2termConn1.RecvSubsDelReq(t)
5681 // Subscription does not exist in in E2 Node.
5682 e2termConn1.SendSubsDelFail(t, delreq, delmsg)
5684 // Wait that subs is cleaned
5685 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
5687 xappConn1.TestMsgChanEmpty(t)
5688 e2termConn1.TestMsgChanEmpty(t)
5689 mainCtrl.wait_registry_empty(t, 10)
5692 //-----------------------------------------------------------------------------
5693 // TestRESTUnpackSubscriptionDeleteFailureDecodeFail
5696 // +-------+ +---------+ +---------+
5697 // | xapp | | submgr | | e2term |
5698 // +-------+ +---------+ +---------+
5700 // | [SUBS CREATE] |
5703 // | RESTSubDelReq | |
5704 // |---------------->| |
5706 // | RESTSubDelResp | |
5707 // |<----------------| |
5710 // | |------------->|
5712 // | | SubDelFail | ASN.1 decode fails
5713 // | |<-------------|
5716 // | |------------->|
5718 // | | SubDelFail | Subscription does exist any more
5719 // | |<-------------|
5721 //-----------------------------------------------------------------------------
5722 func TestRESTUnpackSubscriptionDeleteFailureDecodeFail(t *testing.T) {
5723 xapp.Logger.Info("TEST: TestRESTUnpackSubscriptionDeleteFailureDecodeFail")
5726 var params *teststube2ap.RESTSubsReqParams = nil
5727 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
5730 xappConn1.SendRESTSubsDelReq(t, &restSubId)
5732 // E2t: Receive 1st SubsDelReq
5733 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
5735 // Decode of this response fails which will result resending original request
5736 e2termConn1.SendInvalidE2Asn1Resp(t, delmsg, xapp.RIC_SUB_DEL_FAILURE)
5738 // E2t: Receive 2nd SubsDelReq and send SubsDelResp
5739 delreq, delmsg = e2termConn1.RecvSubsDelReq(t)
5741 // Subscription does not exist in in E2 Node.
5742 e2termConn1.SendSubsDelFail(t, delreq, delmsg)
5744 // Wait that subs is cleaned
5745 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
5747 xappConn1.TestMsgChanEmpty(t)
5748 e2termConn1.TestMsgChanEmpty(t)
5749 mainCtrl.wait_registry_empty(t, 10)
5752 //-----------------------------------------------------------------------------
5753 // TestRESTUnpackSubscriptionDeleteailureUnknownInstanceId
5756 // +-------+ +---------+ +---------+
5757 // | xapp | | submgr | | e2term |
5758 // +-------+ +---------+ +---------+
5760 // | [SUBS CREATE] |
5763 // | RESTSubDelReq | |
5764 // |---------------->| |
5766 // | RESTSubDelResp | |
5767 // |<----------------| |
5770 // | |------------->|
5772 // | | SubDelFail | Unknown instanceId
5773 // | |<-------------|
5776 // | |------------->|
5778 // | | SubDelFail | Subscription does exist any more
5779 // | |<-------------|
5781 //-----------------------------------------------------------------------------
5782 func TestRESTUnpackSubscriptionDeleteailureUnknownInstanceId(t *testing.T) {
5783 xapp.Logger.Info("TEST: TestRESTUnpackSubscriptionDeleteailureUnknownInstanceId")
5786 var params *teststube2ap.RESTSubsReqParams = nil
5787 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
5790 xappConn1.SendRESTSubsDelReq(t, &restSubId)
5792 // E2t: Receive 1st SubsDelReq
5793 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
5795 // Unknown instanceId in this response which will result resending original request
5796 delreq.RequestId.InstanceId = 0
5797 e2termConn1.SendSubsDelFail(t, delreq, delmsg)
5799 // E2t: Receive 2nd SubsDelReq
5800 delreq, delmsg = e2termConn1.RecvSubsDelReq(t)
5802 // Subscription does not exist in in E2 Node.
5803 e2termConn1.SendSubsDelFail(t, delreq, delmsg)
5805 // Wait that subs is cleaned
5806 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
5808 xappConn1.TestMsgChanEmpty(t)
5809 e2termConn1.TestMsgChanEmpty(t)
5810 mainCtrl.wait_registry_empty(t, 10)
5813 //-----------------------------------------------------------------------------
5814 // TestRESTUnpackSubscriptionDeleteFailureNoTransaction
5817 // +-------+ +---------+ +---------+
5818 // | xapp | | submgr | | e2term |
5819 // +-------+ +---------+ +---------+
5821 // | [SUBS CREATE] |
5824 // | RESTSubDelReq | |
5825 // |---------------->| |
5827 // | RESTSubDelResp | |
5828 // |<----------------| |
5831 // | |------------->|
5833 // | | SubDelFail | No transaction for the response
5834 // | |<-------------|
5837 // | |------------->|
5839 // | | SubDelFail | Subscription does exist any more
5840 // | |<-------------|
5842 //-----------------------------------------------------------------------------
5843 func TestRESTUnpackSubscriptionDeleteFailureNoTransaction(t *testing.T) {
5844 xapp.Logger.Info("TEST: TestRESTUnpackSubscriptionDeleteFailureNoTransaction")
5847 var params *teststube2ap.RESTSubsReqParams = nil
5848 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
5851 xappConn1.SendRESTSubsDelReq(t, &restSubId)
5853 // E2t: Receive 1st SubsDelReq
5854 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
5856 mainCtrl.MakeTransactionNil(t, e2SubsId)
5858 // No transaction exist for this response which will result resending original request
5859 e2termConn1.SendSubsDelFail(t, delreq, delmsg)
5861 // E2t: Receive 2nd SubsDelReq
5862 delreq, delmsg = e2termConn1.RecvSubsDelReq(t)
5864 // Subscription does not exist in in E2 Node.
5865 e2termConn1.SendSubsDelFail(t, delreq, delmsg)
5867 // Wait that subs is cleaned
5868 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
5870 xappConn1.TestMsgChanEmpty(t)
5871 e2termConn1.TestMsgChanEmpty(t)
5872 mainCtrl.wait_registry_empty(t, 10)
5875 ////////////////////////////////////////////////////////////////////////////////////
5876 // Services for UT cases
5877 ////////////////////////////////////////////////////////////////////////////////////
5878 const subReqCount int = 1
5879 const parameterSet = 1
5880 const actionDefinitionPresent bool = true
5881 const actionParamCount int = 1
5882 const policyParamCount int = 1
5883 const host string = "localhost"
5885 func createSubscription(t *testing.T, fromXappConn *teststube2ap.E2Stub, toE2termConn *teststube2ap.E2Stub, params *teststube2ap.RESTSubsReqParams) (string, uint32) {
5887 params = fromXappConn.GetRESTSubsReqReportParams(subReqCount, parameterSet, actionDefinitionPresent, actionParamCount)
5889 restSubId := fromXappConn.SendRESTSubsReq(t, params)
5890 xapp.Logger.Info("Send REST subscriber request for subscriberId : %v", restSubId)
5892 crereq1, cremsg1 := toE2termConn.RecvSubsReq(t)
5893 fromXappConn.ExpectRESTNotification(t, restSubId)
5894 toE2termConn.SendSubsResp(t, crereq1, cremsg1)
5895 e2SubsId := fromXappConn.WaitRESTNotification(t, restSubId)
5896 xapp.Logger.Info("REST notification received e2SubsId=%v", e2SubsId)
5898 return restSubId, e2SubsId
5901 func createXapp2MergedSubscription(t *testing.T, meid string) (string, uint32) {
5903 params := xappConn2.GetRESTSubsReqReportParams(subReqCount, parameterSet, actionDefinitionPresent, actionParamCount)
5905 params.SetMeid(meid)
5907 xapp.Subscription.SetResponseCB(xappConn2.SubscriptionRespHandler)
5908 restSubId := xappConn2.SendRESTSubsReq(t, params)
5909 xappConn2.ExpectRESTNotification(t, restSubId)
5910 xapp.Logger.Info("Send REST subscriber request for subscriberId : %v", restSubId)
5911 e2SubsId := xappConn2.WaitRESTNotification(t, restSubId)
5912 xapp.Logger.Info("REST notification received e2SubsId=%v", e2SubsId)
5914 return restSubId, e2SubsId
5917 func createXapp1PolicySubscription(t *testing.T) (string, uint32) {
5918 params := xappConn1.GetRESTSubsReqPolicyParams(subReqCount, actionDefinitionPresent, policyParamCount)
5919 restSubId := xappConn1.SendRESTSubsReq(t, params)
5920 xapp.Logger.Info("Send REST Policy subscriber request for subscriberId : %v", restSubId)
5922 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
5923 xappConn1.ExpectRESTNotification(t, restSubId)
5924 e2termConn1.SendSubsResp(t, crereq1, cremsg1)
5925 e2SubsId := xappConn1.WaitRESTNotification(t, restSubId)
5926 xapp.Logger.Info("REST notification received e2SubsId=%v", e2SubsId)
5928 return restSubId, e2SubsId
5931 func createXapp1ReportSubscriptionE2Fail(t *testing.T) (string, uint32) {
5932 params := xappConn1.GetRESTSubsReqReportParams(subReqCount, parameterSet, actionDefinitionPresent, actionParamCount)
5933 restSubId := xappConn1.SendRESTSubsReq(t, params)
5935 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
5936 fparams1 := &teststube2ap.E2StubSubsFailParams{}
5937 fparams1.Set(crereq1)
5938 e2termConn1.SendSubsFail(t, fparams1, cremsg1)
5940 delreq1, delmsg1 := e2termConn1.RecvSubsDelReq(t)
5941 xappConn1.ExpectRESTNotification(t, restSubId)
5942 e2termConn1.SendSubsDelResp(t, delreq1, delmsg1)
5943 e2SubsId := xappConn1.WaitRESTNotification(t, restSubId)
5944 xapp.Logger.Info("TEST: REST notification received e2SubsId=%v", e2SubsId)
5946 return restSubId, e2SubsId
5949 func deleteSubscription(t *testing.T, fromXappConn *teststube2ap.E2Stub, toE2termConn *teststube2ap.E2Stub, restSubId *string) {
5950 fromXappConn.SendRESTSubsDelReq(t, restSubId)
5951 delreq, delmsg := toE2termConn.RecvSubsDelReq(t)
5952 toE2termConn.SendSubsDelResp(t, delreq, delmsg)
5955 func deleteXapp1Subscription(t *testing.T, restSubId *string) {
5956 xappConn1.SendRESTSubsDelReq(t, restSubId)
5957 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
5958 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
5961 func deleteXapp2Subscription(t *testing.T, restSubId *string) {
5962 xappConn2.SendRESTSubsDelReq(t, restSubId)
5963 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
5964 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
5967 func queryXappSubscription(t *testing.T, e2SubsId int64, meid string, endpoint []string) {
5968 resp, _ := xapp.Subscription.QuerySubscriptions()
5969 assert.Equal(t, resp[0].SubscriptionID, e2SubsId)
5970 assert.Equal(t, resp[0].Meid, meid)
5971 assert.Equal(t, resp[0].ClientEndpoint, endpoint)
5974 func waitSubsCleanup(t *testing.T, e2SubsId uint32, timeout int) {
5975 //Wait that subs is cleaned
5976 mainCtrl.wait_subs_clean(t, e2SubsId, timeout)
5978 xappConn1.TestMsgChanEmpty(t)
5979 xappConn2.TestMsgChanEmpty(t)
5980 e2termConn1.TestMsgChanEmpty(t)
5981 mainCtrl.wait_registry_empty(t, timeout)
5984 func sendAndReceiveMultipleE2SubReqs(t *testing.T, count int, fromXappConn *teststube2ap.E2Stub, toE2termConn *teststube2ap.E2Stub, restSubId string) []uint32 {
5986 var e2SubsId []uint32
5988 for i := 0; i < count; i++ {
5989 xapp.Logger.Info("TEST: %d ===================================== BEGIN CRE ============================================", i+1)
5990 crereq, cremsg := toE2termConn.RecvSubsReq(t)
5991 fromXappConn.ExpectRESTNotification(t, restSubId)
5992 toE2termConn.SendSubsResp(t, crereq, cremsg)
5993 instanceId := fromXappConn.WaitRESTNotification(t, restSubId)
5994 e2SubsId = append(e2SubsId, instanceId)
5995 xapp.Logger.Info("TEST: %v", e2SubsId)
5996 xapp.Logger.Info("TEST: %d ===================================== END CRE ============================================", i+1)
5997 <-time.After(100 * time.Millisecond)
6002 func sendAndReceiveMultipleE2DelReqs(t *testing.T, e2SubsIds []uint32, toE2termConn *teststube2ap.E2Stub) {
6004 for i := 0; i < len(e2SubsIds); i++ {
6005 xapp.Logger.Info("TEST: %d ===================================== BEGIN DEL ============================================", i+1)
6006 delreq, delmsg := toE2termConn.RecvSubsDelReq(t)
6007 toE2termConn.SendSubsDelResp(t, delreq, delmsg)
6008 <-time.After(1 * time.Second)
6009 xapp.Logger.Info("TEST: %d ===================================== END DEL ============================================", i+1)
6010 <-time.After(100 * time.Millisecond)
6013 // Wait that subs is cleaned
6014 for i := 0; i < len(e2SubsIds); i++ {
6015 mainCtrl.wait_subs_clean(t, e2SubsIds[i], 10)