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{cRestSubReqFromXapp, 1},
2405 Counter{cRestSubRespToXapp, 1},
2406 Counter{cRouteCreateFail, 1},
2407 Counter{cRestSubFailNotifToXapp, 1},
2408 Counter{cRestSubDelReqFromXapp, 1},
2409 Counter{cRestSubDelRespToXapp, 1},
2412 const subReqCount int = 1
2413 // Add delay for rtmgt HTTP handling so that HTTP response is received before notify on XAPP side
2414 waiter := rtmgrHttp.AllocNextSleep(50, false)
2415 newSubsId := mainCtrl.get_registry_next_subid(t)
2418 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
2419 restSubId := xappConn1.SendRESTSubsReq(t, params)
2420 xappConn1.ExpectRESTNotification(t, restSubId)
2421 waiter.WaitResult(t)
2423 e2SubsId := xappConn1.WaitRESTNotification(t, restSubId)
2424 xapp.Logger.Info("TEST: REST notification received e2SubsId=%v", e2SubsId)
2427 xappConn1.SendRESTSubsDelReq(t, &restSubId)
2429 // Wait that subs is cleaned
2430 mainCtrl.wait_subs_clean(t, newSubsId, 10)
2431 waitSubsCleanup(t, e2SubsId, 10)
2432 mainCtrl.VerifyCounterValues(t)
2435 func TestRESTSubReqAndRouteUpdateNok(t *testing.T) {
2436 CaseBegin("TestSubReqAndRouteUpdateNok")
2438 //Init counter check
2439 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
2440 Counter{cRestSubReqFromXapp, 2},
2441 Counter{cRestSubRespToXapp, 2},
2442 Counter{cSubReqToE2, 1},
2443 Counter{cSubRespFromE2, 1},
2444 Counter{cRestSubNotifToXapp, 1},
2445 Counter{cRestSubFailNotifToXapp, 1},
2446 Counter{cRouteCreateUpdateFail, 1},
2447 Counter{cRestSubDelReqFromXapp, 1},
2448 Counter{cSubDelReqToE2, 1},
2449 Counter{cSubDelRespFromE2, 1},
2450 Counter{cRestSubDelRespToXapp, 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)
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{cRestSubReqFromXapp, 1},
2489 Counter{cRestSubRespToXapp, 1},
2490 Counter{cSubReqToE2, 1},
2491 Counter{cSubRespFromE2, 1},
2492 Counter{cRestSubNotifToXapp, 1},
2493 Counter{cRestSubDelReqFromXapp, 1},
2494 Counter{cRouteDeleteFail, 1},
2495 Counter{cSubDelReqToE2, 1},
2496 Counter{cSubDelRespFromE2, 1},
2497 Counter{cRestSubDelRespToXapp, 1},
2500 var params *teststube2ap.RESTSubsReqParams = nil
2503 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
2505 queryXappSubscription(t, int64(e2SubsId), "RAN_NAME_1", []string{"localhost:13560"})
2507 waiter := rtmgrHttp.AllocNextEvent(false)
2508 xappConn1.SendRESTSubsDelReq(t, &restSubId)
2509 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
2510 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
2511 waiter.WaitResult(t)
2513 waitSubsCleanup(t, e2SubsId, 10)
2515 mainCtrl.VerifyCounterValues(t)
2518 func TestRESTSubMergeDelAndRouteUpdateNok(t *testing.T) {
2519 CaseBegin("TestRESTSubMergeDelAndRouteUpdateNok")
2521 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
2522 Counter{cRestSubReqFromXapp, 2},
2523 Counter{cRestSubRespToXapp, 2},
2524 Counter{cSubReqToE2, 1},
2525 Counter{cSubRespFromE2, 1},
2526 Counter{cRestSubNotifToXapp, 2},
2527 Counter{cRestSubDelReqFromXapp, 2},
2528 Counter{cRouteDeleteUpdateFail, 1},
2529 Counter{cSubDelReqToE2, 1},
2530 Counter{cSubDelRespFromE2, 1},
2531 Counter{cRestSubDelRespToXapp, 2},
2534 var params *teststube2ap.RESTSubsReqParams = nil
2537 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
2539 queryXappSubscription(t, int64(e2SubsId), "RAN_NAME_1", []string{"localhost:13560"})
2540 restSubId2, e2SubsId2 := createXapp2MergedSubscription(t, "RAN_NAME_1")
2542 queryXappSubscription(t, int64(e2SubsId), "RAN_NAME_1", []string{"localhost:13560", "localhost:13660"})
2544 //Del1, this shall fail on rtmgr side
2545 waiter := rtmgrHttp.AllocNextEvent(false)
2546 xappConn1.SendRESTSubsDelReq(t, &restSubId)
2547 waiter.WaitResult(t)
2549 queryXappSubscription(t, int64(e2SubsId), "RAN_NAME_1", []string{"localhost:13660"})
2552 deleteXapp2Subscription(t, &restSubId2)
2554 waitSubsCleanup(t, e2SubsId2, 10)
2556 mainCtrl.VerifyCounterValues(t)
2559 //-----------------------------------------------------------------------------
2560 // TestRESTSubReqRetransmission
2563 // +-------+ +---------+ +---------+
2564 // | xapp | | submgr | | e2term |
2565 // +-------+ +---------+ +---------+
2567 // | RESTSubReq1 | |
2568 // |---------------->| |
2570 // | RESTSubResp | |
2571 // |<----------------| |
2573 // | |------------->|
2575 // | RESTSubReq2 | |
2577 // |---------------->| |
2580 // | |------------->|
2581 // | RESTSubResp2 | |
2582 // |<----------------| |
2584 // | |<-------------|
2586 // |<----------------| |
2588 // | |<-------------|
2590 // |<----------------| |
2592 // | [SUBS DELETE] |
2595 //-----------------------------------------------------------------------------
2597 func TestRESTSubReqRetransmission(t *testing.T) {
2598 CaseBegin("TestRESTSubReqRetransmission")
2600 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
2601 Counter{cRestSubReqFromXapp, 2},
2602 Counter{cRestSubRespToXapp, 2},
2603 Counter{cSubReqToE2, 2},
2604 Counter{cSubRespFromE2, 2},
2605 Counter{cRestSubNotifToXapp, 2},
2606 Counter{cRestSubDelReqFromXapp, 2},
2607 Counter{cSubDelReqToE2, 2},
2608 Counter{cSubDelRespFromE2, 2},
2609 Counter{cRestSubDelRespToXapp, 2},
2611 // Retry/duplicate will get the same way as the first request. Submgr cannot detect duplicate RESTRequests
2612 // Contianed duplicate messages from same xapp will not be merged. Here we use xappConn2 to simulate sending
2613 // second request from same xapp as doing it from xappConn1 would not work as notification would not be received
2616 const subReqCount 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)
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{cRestSubReqFromXapp, 1},
2663 Counter{cRestSubRespToXapp, 1},
2664 Counter{cSubReqToE2, 1},
2665 Counter{cSubRespFromE2, 1},
2666 Counter{cRestSubNotifToXapp, 1},
2667 Counter{cRestSubDelReqFromXapp, 2},
2668 Counter{cSubDelReqToE2, 1},
2669 Counter{cSubDelRespFromE2, 1},
2670 Counter{cRestSubDelRespToXapp, 1},
2673 var params *teststube2ap.RESTSubsReqParams = nil
2676 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
2678 queryXappSubscription(t, int64(e2SubsId), "RAN_NAME_1", []string{"localhost:13560"})
2681 xappConn1.SendRESTSubsDelReq(t, &restSubId)
2682 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
2684 seqBef := mainCtrl.get_msgcounter(t)
2685 xappConn1.SendRESTSubsDelReq(t, &restSubId)
2686 mainCtrl.wait_msgcounter_change(t, seqBef, 10)
2688 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
2690 waitSubsCleanup(t, e2SubsId, 10)
2692 mainCtrl.VerifyCounterValues(t)
2695 //-----------------------------------------------------------------------------
2696 // TestRESTSubReqDelReq
2699 // +-------+ +---------+ +---------+
2700 // | xapp | | submgr | | e2term |
2701 // +-------+ +---------+ +---------+
2704 // |---------------->| |
2706 // | RESTSubResp | |
2707 // |<----------------| |
2709 // | |------------->|
2710 // | RESTSubDelReq | |
2711 // |---------------->| |
2712 // | RESTSubDelResp | |
2714 // |<----------------| |
2716 // | |<-------------|
2718 // |<----------------| |
2720 // | [SUBS DELETE] |
2723 //-----------------------------------------------------------------------------
2724 func TestRESTSubReqDelReq(t *testing.T) {
2725 CaseBegin("TestRESTSubReqDelReq")
2727 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
2728 Counter{cRestSubReqFromXapp, 1},
2729 Counter{cRestSubRespToXapp, 1},
2730 Counter{cSubReqToE2, 1},
2731 Counter{cSubRespFromE2, 1},
2732 Counter{cRestSubNotifToXapp, 1},
2733 Counter{cRestSubDelReqFromXapp, 2},
2734 Counter{cSubDelReqToE2, 1},
2735 Counter{cSubDelRespFromE2, 1},
2736 Counter{cRestSubDelRespToXapp, 1},
2739 const subReqCount int = 1
2742 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
2743 restSubId := xappConn1.SendRESTSubsReq(t, params)
2745 // Del. This will fail as processing of the subscription
2746 // is still ongoing in submgr. Deletion is not allowed before
2747 // subscription creation has been completed.
2748 xappConn1.SendRESTSubsDelReq(t, &restSubId)
2749 crereq, cremsg := e2termConn1.RecvSubsReq(t)
2750 xappConn1.ExpectRESTNotification(t, restSubId)
2751 e2termConn1.SendSubsResp(t, crereq, cremsg)
2752 e2SubsId := xappConn1.WaitRESTNotification(t, restSubId)
2755 xappConn1.SendRESTSubsDelReq(t, &restSubId)
2757 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
2758 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
2760 // Wait that subs is cleaned
2761 waitSubsCleanup(t, e2SubsId, 10)
2762 mainCtrl.VerifyCounterValues(t)
2766 func TestRESTSubDelReqCollision(t *testing.T) {
2767 CaseBegin("TestRESTSubDelReqCollision - not relevant for REST API")
2770 func TestRESTSubReqAndSubDelOkTwoParallel(t *testing.T) {
2771 CaseBegin("TestRESTSubReqAndSubDelOkTwoParallel")
2773 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
2774 Counter{cRestSubReqFromXapp, 2},
2775 Counter{cRestSubRespToXapp, 2},
2776 Counter{cSubReqToE2, 2},
2777 Counter{cSubRespFromE2, 2},
2778 Counter{cRestSubNotifToXapp, 2},
2779 Counter{cRestSubDelReqFromXapp, 2},
2780 Counter{cSubDelReqToE2, 2},
2781 Counter{cSubDelRespFromE2, 2},
2782 Counter{cRestSubDelRespToXapp, 2},
2786 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
2787 restSubId1 := xappConn1.SendRESTSubsReq(t, params)
2788 xapp.Logger.Info("Send 1st REST subscriber request for subscriberId : %v", restSubId1)
2791 params = xappConn2.GetRESTSubsReqReportParams(subReqCount)
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{cRestSubReqFromXapp, 2},
2829 Counter{cRestSubRespToXapp, 2},
2830 Counter{cSubReqToE2, 2},
2831 Counter{cSubRespFromE2, 2},
2832 Counter{cRestSubNotifToXapp, 2},
2833 Counter{cRestSubDelReqFromXapp, 2},
2834 Counter{cSubDelReqToE2, 2},
2835 Counter{cSubDelRespFromE2, 2},
2836 Counter{cRestSubDelRespToXapp, 2},
2839 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
2840 restSubId1, e2SubsId1 := createSubscription(t, xappConn1, e2termConn1, params)
2841 xapp.Logger.Info("Send 1st REST subscriber request for subscriberId : %v", restSubId1)
2843 params = xappConn1.GetRESTSubsReqReportParams(subReqCount)
2844 params.SetMeid("RAN_NAME_2")
2845 restSubId2, e2SubsId2 := createSubscription(t, xappConn1, e2termConn1, params)
2846 xapp.Logger.Info("Send 2nd REST subscriber request for subscriberId : %v", restSubId2)
2849 deleteSubscription(t, xappConn1, e2termConn1, &restSubId1)
2851 deleteSubscription(t, xappConn1, e2termConn1, &restSubId2)
2853 //Wait that subs is cleaned
2854 mainCtrl.wait_subs_clean(t, e2SubsId1, 10)
2855 waitSubsCleanup(t, e2SubsId2, 10)
2857 mainCtrl.VerifyCounterValues(t)
2861 func TestRESTSubReqRetryInSubmgr(t *testing.T) {
2862 CaseBegin("TestRESTSubReqRetryInSubmgr start")
2864 // Init counter check
2865 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
2866 Counter{cRestSubReqFromXapp, 1},
2867 Counter{cRestSubRespToXapp, 1},
2868 Counter{cSubReqToE2, 1},
2869 Counter{cSubReReqToE2, 1},
2870 Counter{cSubRespFromE2, 1},
2871 Counter{cRestSubNotifToXapp, 1},
2872 Counter{cRestSubDelReqFromXapp, 1},
2873 Counter{cSubDelReqToE2, 1},
2874 Counter{cSubDelRespFromE2, 1},
2875 Counter{cRestSubDelRespToXapp, 1},
2878 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
2879 restSubId := xappConn1.SendRESTSubsReq(t, params)
2881 xapp.Logger.Info("Send REST subscriber request for subscriber : %v", restSubId)
2883 // Catch the first message and ignore it
2884 crereq, cremsg := e2termConn1.RecvSubsReq(t)
2885 xapp.Logger.Info("Ignore REST subscriber request for subscriber : %v", restSubId)
2887 // The second request is being handled normally
2888 crereq, cremsg = e2termConn1.RecvSubsReq(t)
2889 xappConn1.ExpectRESTNotification(t, restSubId)
2890 e2termConn1.SendSubsResp(t, crereq, cremsg)
2891 e2SubsId := xappConn1.WaitRESTNotification(t, restSubId)
2893 queryXappSubscription(t, int64(e2SubsId), "RAN_NAME_1", []string{"localhost:13560"})
2895 deleteSubscription(t, xappConn1, e2termConn1, &restSubId)
2897 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
2898 //Wait that subs is cleaned
2899 waitSubsCleanup(t, e2SubsId, 10)
2901 mainCtrl.VerifyCounterValues(t)
2905 //-----------------------------------------------------------------------------
2906 // TestRESTSubReqTwoRetriesNoRespSubDelRespInSubmgr
2909 // +-------+ +---------+ +---------+
2910 // | xapp | | submgr | | e2term |
2911 // +-------+ +---------+ +---------+
2914 // |---------------->| |
2916 // | RESTSubResp | |
2917 // |<----------------| |
2919 // | |------------->|
2923 // | |------------->|
2926 // | |------------->|
2930 // | |------------->|
2934 // | |<-------------|
2937 // |<----------------| |
2939 // | [SUBS DELETE] |
2942 //-----------------------------------------------------------------------------
2943 func TestRESTSubReqRetryNoRespSubDelRespInSubmgr(t *testing.T) {
2944 CaseBegin("TestRESTSubReqTwoRetriesNoRespSubDelRespInSubmgr start")
2946 // Init counter check
2947 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
2948 Counter{cRestSubReqFromXapp, 1},
2949 Counter{cRestSubRespToXapp, 1},
2950 Counter{cSubReqToE2, 1},
2951 Counter{cSubReReqToE2, 1},
2952 Counter{cSubReqTimerExpiry, 2},
2953 Counter{cSubDelReqToE2, 1},
2954 Counter{cSubDelRespFromE2, 1},
2957 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
2958 restSubId := xappConn1.SendRESTSubsReq(t, params)
2959 xapp.Logger.Info("Send REST subscriber request for subscriber : %v", restSubId)
2961 e2termConn1.RecvSubsReq(t)
2962 xapp.Logger.Info("Ignore 1st REST subscriber request for subscriber : %v", restSubId)
2964 e2termConn1.RecvSubsReq(t)
2965 xapp.Logger.Info("Ignore 2nd REST subscriber request for subscriber : %v", restSubId)
2967 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
2968 xappConn1.ExpectRESTNotification(t, restSubId)
2969 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
2970 // e2SubsId := xappConn1.WaitRESTNotification(t, restSubId) - TODO: Should we delete this?
2971 xappConn1.WaitRESTNotification(t, restSubId)
2973 // Wait that subs is cleaned
2974 waitSubsCleanup(t, delreq.RequestId.InstanceId, 10)
2976 mainCtrl.VerifyCounterValues(t)
2979 func TestREST2eTermNotRespondingToSubReq(t *testing.T) {
2980 CaseBegin("TestREST2eTermNotRespondingToSubReq start")
2982 // Init counter check
2983 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
2984 Counter{cRestSubReqFromXapp, 1},
2985 Counter{cRestSubRespToXapp, 1},
2986 Counter{cSubReqToE2, 1},
2987 Counter{cSubReReqToE2, 1},
2988 Counter{cSubReqTimerExpiry, 2},
2989 Counter{cSubDelReqToE2, 1},
2990 Counter{cSubDelReqTimerExpiry, 2},
2993 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
2994 restSubId := xappConn1.SendRESTSubsReq(t, params)
2995 xapp.Logger.Info("Send REST subscriber request for subscriber : %v", restSubId)
2997 e2termConn1.RecvSubsReq(t)
2998 xapp.Logger.Info("Ignore 1st REST subscriber request for subscriber : %v", restSubId)
3000 e2termConn1.RecvSubsReq(t)
3001 xapp.Logger.Info("Ignore 2nd REST subscriber request for subscriber : %v", restSubId)
3003 e2termConn1.RecvSubsDelReq(t)
3004 xapp.Logger.Info("Ignore 1st INTERNAL delete request for subscriber : %v", restSubId)
3006 xappConn1.ExpectRESTNotification(t, restSubId)
3007 e2termConn1.RecvSubsDelReq(t)
3008 xapp.Logger.Info("Ignore 2nd INTERNAL delete request for subscriber : %v", restSubId)
3010 e2SubsId := xappConn1.WaitRESTNotification(t, restSubId)
3012 waitSubsCleanup(t, e2SubsId, 10)
3014 mainCtrl.VerifyCounterValues(t)
3018 //-----------------------------------------------------------------------------
3019 // TestRESTSubReqTwoRetriesNoRespSubDelRespInSubmgr
3022 // +-------+ +---------+ +---------+
3023 // | xapp | | submgr | | e2term |
3024 // +-------+ +---------+ +---------+
3027 // |---------------->| |
3029 // | RESTSubResp | |
3030 // |<----------------| |
3032 // | |------------->|
3036 // | |------------->|
3039 // | |------------->|
3043 // | |------------->|
3047 // | |<-------------|
3050 // |<----------------| |
3052 // | [SUBS DELETE] |
3055 //-----------------------------------------------------------------------------
3056 func TestRESTSubReqTwoRetriesNoRespAtAllInSubmgr(t *testing.T) {
3057 CaseBegin("TestRESTSubReqTwoRetriesNoRespAtAllInSubmgr start")
3059 // Init counter check
3060 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
3061 Counter{cRestSubReqFromXapp, 1},
3062 Counter{cRestSubRespToXapp, 1},
3063 Counter{cSubReqToE2, 1},
3064 Counter{cSubReReqToE2, 1},
3065 Counter{cSubReqTimerExpiry, 2},
3066 Counter{cSubDelReqToE2, 1},
3067 Counter{cSubDelReReqToE2, 1},
3068 Counter{cSubDelReqTimerExpiry, 2},
3071 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
3072 restSubId := xappConn1.SendRESTSubsReq(t, params)
3073 xapp.Logger.Info("Send REST subscriber request for subscriber : %v", restSubId)
3075 e2termConn1.RecvSubsReq(t)
3076 xapp.Logger.Info("Ignore 1st REST subscriber request for subscriber : %v", restSubId)
3078 e2termConn1.RecvSubsReq(t)
3079 xapp.Logger.Info("Ignore 2nd REST subscriber request for subscriber : %v", restSubId)
3081 e2termConn1.RecvSubsDelReq(t)
3082 xapp.Logger.Info("Ignore 1st INTERNAL delete request for subscriber : %v", restSubId)
3084 xappConn1.ExpectRESTNotification(t, restSubId)
3085 e2termConn1.RecvSubsDelReq(t)
3086 xapp.Logger.Info("Ignore 2nd INTERNAL delete request for subscriber : %v", restSubId)
3088 e2SubsId := xappConn1.WaitRESTNotification(t, restSubId)
3090 waitSubsCleanup(t, e2SubsId, 10)
3092 mainCtrl.VerifyCounterValues(t)
3095 //-----------------------------------------------------------------------------
3096 // TestRESTSubReqSubFailRespInSubmgr
3099 // +-------+ +---------+ +---------+
3100 // | xapp | | submgr | | e2term |
3101 // +-------+ +---------+ +---------+
3104 // |---------------->| |
3106 // | RESTSubResp | |
3107 // |<----------------| |
3109 // | |------------->|
3112 // | |<-------------|
3115 // | |------------->|
3118 // | |<-------------|
3122 // |<----------------| |
3124 // | [SUBS DELETE] |
3127 //-----------------------------------------------------------------------------
3128 func TestRESTSubReqSubFailRespInSubmgr(t *testing.T) {
3129 CaseBegin("TestRESTSubReqSubFailRespInSubmgr")
3131 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
3132 Counter{cRestSubReqFromXapp, 1},
3133 Counter{cRestSubRespToXapp, 1},
3134 Counter{cSubReqToE2, 1},
3135 Counter{cSubFailFromE2, 1},
3136 Counter{cRestSubFailNotifToXapp, 1},
3137 Counter{cRestSubDelReqFromXapp, 1},
3140 const subReqCount int = 1
3142 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
3143 restSubId := xappConn1.SendRESTSubsReq(t, params)
3145 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
3146 fparams1 := &teststube2ap.E2StubSubsFailParams{}
3147 fparams1.Set(crereq1)
3148 e2termConn1.SendSubsFail(t, fparams1, cremsg1)
3150 delreq1, delmsg1 := e2termConn1.RecvSubsDelReq(t)
3151 xappConn1.ExpectRESTNotification(t, restSubId)
3152 e2termConn1.SendSubsDelResp(t, delreq1, delmsg1)
3153 e2SubsId := xappConn1.WaitRESTNotification(t, restSubId)
3154 xapp.Logger.Info("TEST: REST notification received e2SubsId=%v", e2SubsId)
3156 // REST subscription sill there to be deleted
3157 xappConn1.SendRESTSubsDelReq(t, &restSubId)
3159 // Wait that subs is cleaned
3160 waitSubsCleanup(t, e2SubsId, 10)
3162 mainCtrl.VerifyCounterValues(t)
3166 //-----------------------------------------------------------------------------
3167 // TestRESTSubDelReqRetryInSubmgr
3170 // +-------+ +---------+ +---------+
3171 // | xapp | | submgr | | e2term |
3172 // +-------+ +---------+ +---------+
3174 // | [SUBS CREATE] |
3177 // | RESTSubDelReq | |
3178 // |---------------->| |
3180 // | RESTSubDelResp | |
3181 // |<----------------| |
3183 // | |------------->|
3186 // | |------------->|
3189 // | |<-------------|
3192 //-----------------------------------------------------------------------------
3193 func TestRESTSubDelReqRetryInSubmgr(t *testing.T) {
3194 CaseBegin("TestRESTSubDelReqRetryInSubmgr")
3196 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
3197 Counter{cRestSubReqFromXapp, 1},
3198 Counter{cRestSubRespToXapp, 1},
3199 Counter{cSubReqToE2, 1},
3200 Counter{cSubRespFromE2, 1},
3201 Counter{cRestSubNotifToXapp, 1},
3202 Counter{cRestSubDelReqFromXapp, 1},
3203 Counter{cSubDelReqToE2, 1},
3204 Counter{cSubDelReReqToE2, 1},
3205 Counter{cSubDelRespFromE2, 1},
3206 Counter{cRestSubDelRespToXapp, 1},
3209 var params *teststube2ap.RESTSubsReqParams = nil
3210 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
3213 xappConn1.SendRESTSubsDelReq(t, &restSubId)
3215 // E2t: Receive 1st SubsDelReq
3216 e2termConn1.RecvSubsDelReq(t)
3218 // E2t: Receive 2nd SubsDelReq and send SubsDelResp
3219 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
3220 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
3222 //Wait that subs is cleaned
3223 waitSubsCleanup(t, e2SubsId, 10)
3225 mainCtrl.VerifyCounterValues(t)
3228 //-----------------------------------------------------------------------------
3229 // TestRESTSubDelReqTwoRetriesNoRespInSubmgr
3232 // +-------+ +---------+ +---------+
3233 // | xapp | | submgr | | e2term |
3234 // +-------+ +---------+ +---------+
3236 // | [SUBS CREATE] |
3239 // | RESTSubDelReq | |
3240 // |---------------->| |
3242 // | RESTSubDelResp | |
3243 // |<----------------| |
3245 // | |------------->|
3248 // | |------------->|
3252 //-----------------------------------------------------------------------------
3253 func TestRESTSubDelReqTwoRetriesNoRespInSubmgr(t *testing.T) {
3254 CaseBegin("TestRESTSubDelReTwoRetriesNoRespInSubmgr")
3256 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
3257 Counter{cRestSubReqFromXapp, 1},
3258 Counter{cRestSubRespToXapp, 1},
3259 Counter{cSubReqToE2, 1},
3260 Counter{cSubRespFromE2, 1},
3261 Counter{cRestSubNotifToXapp, 1},
3262 Counter{cRestSubDelReqFromXapp, 1},
3263 Counter{cSubDelReqToE2, 1},
3264 Counter{cSubDelReReqToE2, 1},
3265 Counter{cSubDelRespFromE2, 1},
3266 Counter{cRestSubDelRespToXapp, 1},
3270 var params *teststube2ap.RESTSubsReqParams = nil
3271 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
3274 xappConn1.SendRESTSubsDelReq(t, &restSubId)
3276 // E2t: Receive 1st SubsDelReq
3277 e2termConn1.RecvSubsDelReq(t)
3279 // E2t: Receive 2nd SubsDelReq and send SubsDelResp
3280 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
3281 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
3283 //Wait that subs is cleaned
3284 waitSubsCleanup(t, e2SubsId, 10)
3286 mainCtrl.VerifyCounterValues(t)
3289 //-----------------------------------------------------------------------------
3290 // TestRESTSubDelReqSubDelFailRespInSubmgr
3293 // +-------+ +---------+ +---------+
3294 // | xapp | | submgr | | e2term |
3295 // +-------+ +---------+ +---------+
3297 // | [SUBS CREATE] |
3300 // | RESTSubDelReq | |
3301 // |---------------->| |
3303 // | RESTSubDelResp | |
3304 // |<----------------| |
3306 // | |------------->|
3309 // | |<-------------|
3312 //-----------------------------------------------------------------------------
3313 func TestRESTSubDelReqSubDelFailRespInSubmgr(t *testing.T) {
3314 CaseBegin("TestRESTSubDelReqSubDelFailRespInSubmgr")
3316 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
3317 Counter{cRestSubReqFromXapp, 1},
3318 Counter{cRestSubRespToXapp, 1},
3319 Counter{cSubReqToE2, 1},
3320 Counter{cSubRespFromE2, 1},
3321 Counter{cRestSubNotifToXapp, 1},
3322 Counter{cRestSubDelReqFromXapp, 1},
3323 Counter{cSubDelReqToE2, 1},
3324 Counter{cSubDelFailFromE2, 1},
3325 Counter{cRestSubDelRespToXapp, 1},
3329 var params *teststube2ap.RESTSubsReqParams = nil
3330 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
3333 xappConn1.SendRESTSubsDelReq(t, &restSubId)
3335 // E2t: Send receive SubsDelReq and send SubsDelFail
3336 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
3337 e2termConn1.SendSubsDelFail(t, delreq, delmsg)
3339 //Wait that subs is cleaned
3340 waitSubsCleanup(t, e2SubsId, 10)
3342 mainCtrl.VerifyCounterValues(t)
3345 //-----------------------------------------------------------------------------
3346 // TestRESTSubReqAndSubDelOkSameAction
3349 // +-------+ +-------+ +---------+ +---------+
3350 // | xapp2 | | xapp1 | | submgr | | e2term |
3351 // +-------+ +-------+ +---------+ +---------+
3353 // | | RESTSubReq1 | |
3354 // | |---------------->| |
3356 // | | RESTSubResp1 | |
3357 // | |<----------------| |
3360 // | | |------------->|
3362 // | | |<-------------|
3363 // | | RESTNotif1 | |
3364 // | |<----------------| |
3366 // | RESTSubReq2 | |
3367 // |------------------------------>| |
3369 // | RESTSubResp2 | |
3370 // |<------------------------------| |
3372 // | | RESTNotif2 | |
3373 // |<------------------------------| |
3375 // | | RESTSubDelReq1 | |
3376 // | |---------------->| |
3378 // | | RESTSubDelResp1 | |
3379 // | |<----------------| |
3381 // | RESTSubDelReq2 | |
3382 // |------------------------------>| |
3384 // | RESTSubDelResp2 | |
3385 // |<------------------------------| |
3387 // | | | SubDelReq2 |
3388 // | | |------------->|
3390 // | | | SubDelResp2 |
3391 // | | |<-------------|
3394 //-----------------------------------------------------------------------------
3395 func TestRESTSubReqAndSubDelOkSameAction(t *testing.T) {
3396 CaseBegin("TestRESTSubReqAndSubDelOkSameAction")
3398 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
3399 Counter{cRestSubReqFromXapp, 2},
3400 Counter{cRestSubRespToXapp, 2},
3401 Counter{cSubReqToE2, 1},
3402 Counter{cSubRespFromE2, 1},
3403 Counter{cRestSubNotifToXapp, 2},
3404 Counter{cMergedSubscriptions, 1},
3405 Counter{cUnmergedSubscriptions, 1},
3406 Counter{cRestSubDelReqFromXapp, 2},
3407 Counter{cSubDelReqToE2, 1},
3408 Counter{cSubDelRespFromE2, 1},
3409 Counter{cRestSubDelRespToXapp, 2},
3413 var params *teststube2ap.RESTSubsReqParams = nil
3416 restSubId1, e2SubsId1 := createSubscription(t, xappConn1, e2termConn1, params)
3417 queryXappSubscription(t, int64(e2SubsId1), "RAN_NAME_1", []string{"localhost:13560"})
3420 params = xappConn2.GetRESTSubsReqReportParams(subReqCount)
3421 params.SetMeid("RAN_NAME_1")
3423 xapp.Subscription.SetResponseCB(xappConn2.SubscriptionRespHandler)
3424 xappConn2.WaitRESTNotificationForAnySubscriptionId(t)
3425 waiter := rtmgrHttp.AllocNextSleep(10, true)
3426 restSubId2 := xappConn2.SendRESTSubsReq(t, params)
3427 waiter.WaitResult(t)
3428 xapp.Logger.Info("Send REST subscriber request for subscriberId : %v", restSubId2)
3429 e2SubsId2 := <-xappConn2.RESTNotification
3430 xapp.Logger.Info("REST notification received e2SubsId=%v", e2SubsId2)
3432 queryXappSubscription(t, int64(e2SubsId1), "RAN_NAME_1", []string{"localhost:13560", "localhost:13660"})
3435 xappConn1.SendRESTSubsDelReq(t, &restSubId1)
3438 deleteXapp2Subscription(t, &restSubId2)
3440 //Wait that subs is cleaned
3441 waitSubsCleanup(t, e2SubsId2, 10)
3443 mainCtrl.VerifyCounterValues(t)
3446 //-----------------------------------------------------------------------------
3447 // TestSubReqAndSubDelOkSameActionParallel
3450 // +-------+ +-------+ +---------+ +---------+
3451 // | xapp2 | | xapp1 | | submgr | | e2term |
3452 // +-------+ +-------+ +---------+ +---------+
3457 // | |------------->| |
3460 // | | |------------->|
3462 // |--------------------------->| |
3464 // | | |<-------------|
3466 // | |<-------------| |
3468 // | | |------------->|
3471 // | | |<-------------|
3473 // |<---------------------------| |
3475 // | | SubDelReq 1 | |
3476 // | |------------->| |
3478 // | | SubDelResp 1 | |
3479 // | |<-------------| |
3481 // | SubDelReq 2 | |
3482 // |--------------------------->| |
3484 // | | | SubDelReq 2 |
3485 // | | |------------->|
3487 // | | | SubDelReq 2 |
3488 // | | |------------->|
3490 // | SubDelResp 2 | |
3491 // |<---------------------------| |
3493 func TestRESTSubReqAndSubDelOkSameActionParallel(t *testing.T) {
3494 CaseBegin("TestRESTSubReqAndSubDelOkSameActionParallel")
3496 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
3497 Counter{cRestSubReqFromXapp, 2},
3498 Counter{cRestSubRespToXapp, 2},
3499 Counter{cSubReqToE2, 2},
3500 Counter{cSubRespFromE2, 2},
3501 Counter{cRestSubNotifToXapp, 2},
3502 Counter{cRestSubDelReqFromXapp, 2},
3503 Counter{cSubDelReqToE2, 2},
3504 Counter{cSubDelRespFromE2, 2},
3505 Counter{cRestSubDelRespToXapp, 2},
3508 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
3509 restSubId1 := xappConn1.SendRESTSubsReq(t, params)
3510 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
3512 params2 := xappConn2.GetRESTSubsReqReportParams(subReqCount)
3513 restSubId2 := xappConn2.SendRESTSubsReq(t, params2)
3515 xappConn1.ExpectRESTNotification(t, restSubId1)
3516 e2termConn1.SendSubsResp(t, crereq1, cremsg1)
3517 e2SubsId1 := xappConn1.WaitRESTNotification(t, restSubId1)
3519 xappConn2.ExpectRESTNotification(t, restSubId2)
3520 crereq2, cremsg2 := e2termConn1.RecvSubsReq(t)
3521 e2termConn1.SendSubsResp(t, crereq2, cremsg2)
3522 e2SubsId2 := xappConn2.WaitRESTNotification(t, restSubId2)
3525 xappConn1.SendRESTSubsDelReq(t, &restSubId1)
3526 delreq1, delmsg1 := e2termConn1.RecvSubsDelReq(t)
3527 e2termConn1.SendSubsDelResp(t, delreq1, delmsg1)
3528 mainCtrl.wait_subs_clean(t, e2SubsId1, 10)
3531 xappConn2.SendRESTSubsDelReq(t, &restSubId2)
3532 delreq2, delmsg2 := e2termConn1.RecvSubsDelReq(t)
3533 e2termConn1.SendSubsDelResp(t, delreq2, delmsg2)
3535 waitSubsCleanup(t, e2SubsId2, 10)
3537 mainCtrl.VerifyCounterValues(t)
3540 //-----------------------------------------------------------------------------
3541 // TestRESTSubReqAndSubDelNoAnswerSameActionParallel
3544 // +-------+ +-------+ +---------+ +---------+
3545 // | xapp2 | | xapp1 | | submgr | | e2term |
3546 // +-------+ +-------+ +---------+ +---------+
3550 // | | RESTSubReq1 | |
3551 // | |---------------->| |
3553 // | | RESTSubResp1 | |
3554 // | |<----------------| |
3556 // | | |------------->|
3557 // | RESTSubReq2 | |
3558 // |------------------------------>| |
3560 // | RESTSubDelResp2 | |
3561 // |<------------------------------| |
3563 // | | |------------->|
3566 // | | | SubDelReq |
3567 // | | |------------->|
3569 // | | | SubDelResp |
3570 // | | |<-------------|
3571 // | | RESTNotif1 | |
3572 // | | unsuccess | |
3573 // | |<----------------| |
3575 // | | unsuccess | |
3576 // |<------------------------------| |
3578 // | | RESTSubDelReq1 | |
3579 // | |---------------->| |
3581 // | | RESTSubDelResp1 | |
3582 // | |<----------------| |
3584 // | RESTSubDelReq2 | |
3585 // |------------------------------>| |
3587 // | RESTSubDelResp2 | |
3588 // |<------------------------------| |
3590 //-----------------------------------------------------------------------------
3591 func TestRESTSubReqAndSubDelNoAnswerSameActionParallel(t *testing.T) {
3592 CaseBegin("TestRESTSubReqAndSubDelNoAnswerSameActionParallel")
3594 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
3595 Counter{cRestSubReqFromXapp, 2},
3596 Counter{cRestSubRespToXapp, 2},
3597 Counter{cSubReqToE2, 1},
3598 Counter{cRestSubFailNotifToXapp, 2},
3599 Counter{cRestSubDelReqFromXapp, 2},
3600 Counter{cSubDelReqToE2, 1},
3601 Counter{cSubDelRespFromE2, 1},
3602 Counter{cRestSubDelRespToXapp, 2},
3605 const subReqCount int = 1
3608 params1 := xappConn1.GetRESTSubsReqReportParams(subReqCount)
3609 restSubId1 := xappConn1.SendRESTSubsReq(t, params1)
3610 crereq1, _ := e2termConn1.RecvSubsReq(t)
3613 subepcnt2 := mainCtrl.get_subs_entrypoint_cnt(t, crereq1.RequestId.InstanceId)
3614 params2 := xappConn2.GetRESTSubsReqReportParams(subReqCount)
3615 params2.SetMeid("RAN_NAME_1")
3616 restSubId2 := xappConn2.SendRESTSubsReq(t, params2)
3617 mainCtrl.wait_subs_entrypoint_cnt_change(t, crereq1.RequestId.InstanceId, subepcnt2, 10)
3619 //Req1 (retransmitted)
3620 e2termConn1.RecvSubsReq(t)
3622 delreq1, delmsg1 := e2termConn1.RecvSubsDelReq(t)
3624 xappConn1.WaitListedRestNotifications(t, []string{restSubId1, restSubId2})
3625 e2termConn1.SendSubsDelResp(t, delreq1, delmsg1)
3627 e2SubsIdA := <-xappConn1.ListedRESTNotifications
3628 xapp.Logger.Info("TEST: 1.st XAPP notification received e2SubsId=%v", e2SubsIdA)
3629 e2SubsIdB := <-xappConn1.ListedRESTNotifications
3630 xapp.Logger.Info("TEST: 2.nd XAPP notification received e2SubsId=%v", e2SubsIdB)
3633 xappConn1.SendRESTSubsDelReq(t, &restSubId1)
3636 xappConn2.SendRESTSubsDelReq(t, &restSubId2)
3638 mainCtrl.wait_multi_subs_clean(t, []uint32{e2SubsIdA.E2SubsId, e2SubsIdB.E2SubsId}, 10)
3640 //Wait that subs is cleaned
3641 waitSubsCleanup(t, e2SubsIdA.E2SubsId, 10)
3643 mainCtrl.VerifyCounterValues(t)
3646 //-----------------------------------------------------------------------------
3647 // TestRESTSubReqAndSubDelNokSameActionParallel
3650 // +-------+ +-------+ +---------+ +---------+
3651 // | xapp2 | | xapp1 | | submgr | | e2term |
3652 // +-------+ +-------+ +---------+ +---------+
3656 // | | RESTSubReq1 | |
3657 // | |---------------->| |
3659 // | | RESTSubResp1 | |
3660 // | |<----------------| |
3662 // | | |------------->|
3663 // | RESTSubReq2 | |
3664 // |------------------------------>| |
3666 // | RESTSubDelResp2 | |
3667 // |<------------------------------| |
3669 // | | |<-------------|
3671 // | | RESTNotif1 | |
3672 // | | unsuccess | |
3673 // | |<----------------| |
3675 // | | unsuccess | |
3676 // |<------------------------------| |
3677 // | | | SubDelReq |
3678 // | | |------------->|
3679 // | | | SubDelResp |
3680 // | | |<-------------|
3682 // | | RESTSubDelReq1 | |
3683 // | |---------------->| |
3685 // | | RESTSubDelResp1 | |
3686 // | |<----------------| |
3688 // | RESTSubDelReq2 | |
3689 // |------------------------------>| |
3691 // | RESTSubDelResp2 | |
3692 // |<------------------------------| |
3694 //-----------------------------------------------------------------------------
3695 func TestRESTSubReqAndSubDelNokSameActionParallel(t *testing.T) {
3696 CaseBegin("TestRESTSubReqAndSubDelNokSameActionParallel")
3698 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
3699 Counter{cRestSubReqFromXapp, 2},
3700 Counter{cRestSubRespToXapp, 2},
3701 Counter{cSubReqToE2, 1},
3702 Counter{cSubFailFromE2, 1},
3703 Counter{cRestSubFailNotifToXapp, 2},
3704 Counter{cRestSubDelReqFromXapp, 2},
3705 Counter{cSubDelReqToE2, 1},
3706 Counter{cSubDelRespFromE2, 1},
3707 Counter{cRestSubDelRespToXapp, 2},
3710 const subReqCount int = 1
3713 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
3714 restSubId1 := xappConn1.SendRESTSubsReq(t, params)
3715 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
3718 subepcnt2 := mainCtrl.get_subs_entrypoint_cnt(t, crereq1.RequestId.InstanceId)
3719 params2 := xappConn2.GetRESTSubsReqReportParams(subReqCount)
3720 params2.SetMeid("RAN_NAME_1")
3721 restSubId2 := xappConn2.SendRESTSubsReq(t, params2)
3722 mainCtrl.wait_subs_entrypoint_cnt_change(t, crereq1.RequestId.InstanceId, subepcnt2, 10)
3724 // E2t: send SubsFail (first)
3725 fparams1 := &teststube2ap.E2StubSubsFailParams{}
3726 fparams1.Set(crereq1)
3727 e2termConn1.SendSubsFail(t, fparams1, cremsg1)
3729 // E2t: internal delete
3730 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
3731 xappConn1.WaitListedRestNotifications(t, []string{restSubId1, restSubId2})
3732 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
3734 e2SubsIdA := <-xappConn1.ListedRESTNotifications
3735 xapp.Logger.Info("TEST: 1.st XAPP notification received e2SubsId=%v", e2SubsIdA)
3736 e2SubsIdB := <-xappConn1.ListedRESTNotifications
3737 xapp.Logger.Info("TEST: 2.nd XAPP notification received e2SubsId=%v", e2SubsIdB)
3740 xappConn1.SendRESTSubsDelReq(t, &restSubId1)
3743 xappConn2.SendRESTSubsDelReq(t, &restSubId2)
3745 //Wait that subs is cleaned
3746 waitSubsCleanup(t, e2SubsIdA.E2SubsId, 10)
3747 waitSubsCleanup(t, e2SubsIdB.E2SubsId, 10)
3749 mainCtrl.VerifyCounterValues(t)
3752 func TestRESTSubReqPolicyAndSubDelOk(t *testing.T) {
3753 CaseBegin("TestRESTSubReqPolicyAndSubDelOk")
3755 // Init counter check
3756 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
3757 Counter{cRestSubReqFromXapp, 1},
3758 Counter{cRestSubRespToXapp, 1},
3759 Counter{cSubReqToE2, 1},
3760 Counter{cSubRespFromE2, 1},
3761 Counter{cRestSubNotifToXapp, 1},
3762 Counter{cRestSubDelReqFromXapp, 1},
3763 Counter{cSubDelReqToE2, 1},
3764 Counter{cSubDelRespFromE2, 1},
3765 Counter{cRestSubDelRespToXapp, 1},
3768 const subReqCount int = 1
3770 params := xappConn1.GetRESTSubsReqPolicyParams(subReqCount)
3771 restSubId := xappConn1.SendRESTSubsReq(t, params)
3772 xapp.Logger.Info("Send REST Policy subscriber request for subscriberId : %v", restSubId)
3774 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
3775 xappConn1.ExpectRESTNotification(t, restSubId)
3776 e2termConn1.SendSubsResp(t, crereq1, cremsg1)
3777 e2SubsId := xappConn1.WaitRESTNotification(t, restSubId)
3778 xapp.Logger.Info("REST notification received e2SubsId=%v", e2SubsId)
3780 xappConn1.SendRESTSubsDelReq(t, &restSubId)
3781 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
3782 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
3784 // Wait that subs is cleaned
3785 waitSubsCleanup(t, e2SubsId, 10)
3786 mainCtrl.VerifyCounterValues(t)
3789 //-----------------------------------------------------------------------------
3790 // TestRESTSubReqPolicyChangeAndSubDelOk
3793 // +-------+ +---------+ +---------+
3794 // | xapp | | submgr | | e2term |
3795 // +-------+ +---------+ +---------+
3798 // |---------------->| |
3800 // | RESTSubResp | |
3801 // |<----------------| |
3803 // | |------------->|
3806 // | |<-------------|
3809 // |<----------------| |
3812 // |---------------->| |
3814 // | RESTSubResp | |
3815 // |<----------------| |
3817 // | |------------->|
3820 // | |<-------------|
3823 // |<----------------| |
3825 // | RESTSubDelReq | |
3826 // |---------------->| |
3829 // | |------------->|
3832 // | |<-------------|
3834 // | RESTSubDelResp | |
3835 // |<----------------| |
3837 //-----------------------------------------------------------------------------
3838 func TestRESTSubReqPolicyChangeAndSubDelOk(t *testing.T) {
3839 CaseBegin("TestRESTSubReqPolicyAndSubDelOk")
3841 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
3842 Counter{cRestSubReqFromXapp, 2},
3843 Counter{cRestSubRespToXapp, 2},
3844 Counter{cSubReqToE2, 2},
3845 Counter{cSubRespFromE2, 2},
3846 Counter{cRestSubNotifToXapp, 2},
3847 Counter{cRestSubDelReqFromXapp, 1},
3848 Counter{cSubDelReqToE2, 1},
3849 Counter{cSubDelRespFromE2, 1},
3850 Counter{cRestSubDelRespToXapp, 1},
3853 const subReqCount int = 1
3856 params := xappConn1.GetRESTSubsReqPolicyParams(subReqCount)
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)
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{cRestSubReqFromXapp, 2},
3925 Counter{cRestSubRespToXapp, 2},
3926 Counter{cSubReqToE2, 2},
3927 Counter{cSubRespFromE2, 2},
3928 Counter{cRestSubNotifToXapp, 2},
3929 Counter{cRestSubDelReqFromXapp, 2},
3930 Counter{cSubDelReqToE2, 2},
3931 Counter{cSubDelRespFromE2, 2},
3932 Counter{cRestSubDelRespToXapp, 2},
3935 const subReqCount int = 1
3938 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
3939 restSubId1 := xappConn1.SendRESTSubsReq(t, params)
3940 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
3943 params = xappConn2.GetRESTSubsReqReportParams(subReqCount)
3944 params.SetMeid("RAN_NAME_11")
3945 // Here we use xappConn2 to simulate sending second request from same xapp as doing it from xappConn1
3946 // would not work as notification would not be received
3947 restSubId2 := xappConn2.SendRESTSubsReq(t, params)
3948 crereq2, cremsg2 := e2termConn2.RecvSubsReq(t)
3951 xappConn1.ExpectRESTNotification(t, restSubId1)
3952 e2termConn1.SendSubsResp(t, crereq1, cremsg1)
3953 e2SubsId1 := xappConn1.WaitRESTNotification(t, restSubId1)
3954 xapp.Logger.Info("TEST: REST notification received e2SubsId1=%v", e2SubsId1)
3957 xappConn2.ExpectRESTNotification(t, restSubId2)
3958 e2termConn2.SendSubsResp(t, crereq2, cremsg2)
3959 e2SubsId2 := xappConn2.WaitRESTNotification(t, restSubId2)
3960 xapp.Logger.Info("TEST: REST notification received e2SubsId2=%v", e2SubsId2)
3963 xappConn1.SendRESTSubsDelReq(t, &restSubId1)
3964 delreq1, delmsg1 := e2termConn1.RecvSubsDelReq(t)
3965 e2termConn1.SendSubsDelResp(t, delreq1, delmsg1)
3967 // Wait that subs is cleaned
3968 mainCtrl.wait_subs_clean(t, e2SubsId1, 10)
3971 xappConn1.SendRESTSubsDelReq(t, &restSubId2)
3972 delreq2, delmsg2 := e2termConn2.RecvSubsDelReq(t)
3973 e2termConn2.SendSubsDelResp(t, delreq2, delmsg2)
3975 // Wait that subs is cleaned
3976 waitSubsCleanup(t, e2SubsId2, 10)
3978 mainCtrl.VerifyCounterValues(t)
3981 //-----------------------------------------------------------------------------
3982 // TestRESTSubReqAsn1EncodeFail
3984 // In this case submgr send RICSubscriptionDeleteRequest after encode failure which should not happen!
3986 // +-------+ +---------+ +---------+
3987 // | xapp | | submgr | | e2term |
3988 // +-------+ +---------+ +---------+
3991 // |---------------->| |
3993 // | RESTSubResp | |
3994 // |<----------------| |
3995 // | RESTSubDelReq | |
3996 // |---------------->| |
3997 // | RESTSubDelResp | |
3999 // |<----------------| |
4002 //-----------------------------------------------------------------------------
4003 func TestRESTSubReqAsn1EncodeFail(t *testing.T) {
4004 CaseBegin("TestRESTSubReqAsn1EncodeFail")
4006 xapp.Logger.Info("Xapp-frame, v0.8.1 sufficient REST API validation")
4010 //-----------------------------------------------------------------------------
4011 // TestRESTSubReqInsertAndSubDelOk
4014 // +-------+ +---------+ +---------+
4015 // | xapp | | submgr | | e2term |
4016 // +-------+ +---------+ +---------+
4019 // |---------------->| |
4021 // | RESTSubResp | |
4022 // |<----------------| |
4025 // | |------------->|
4028 // | |<-------------|
4030 // |<----------------| |
4033 // | RESTSubDelReq | |
4034 // |---------------->| |
4037 // | |------------->|
4040 // | |<-------------|
4042 // | RESTSubDelResp| |
4043 // |<----------------| |
4045 //-----------------------------------------------------------------------------
4046 func TestRESTSubReqInsertAndSubDelOk(t *testing.T) {
4047 CaseBegin("TestRESTInsertSubReqAndSubDelOk")
4049 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
4050 Counter{cRestSubReqFromXapp, 1},
4051 Counter{cRestSubRespToXapp, 1},
4052 Counter{cSubReqToE2, 1},
4053 Counter{cSubRespFromE2, 1},
4054 Counter{cRestSubNotifToXapp, 1},
4055 Counter{cRestSubDelReqFromXapp, 1},
4056 Counter{cSubDelReqToE2, 1},
4057 Counter{cSubDelRespFromE2, 1},
4058 Counter{cRestSubDelRespToXapp, 1},
4061 const subReqCount int = 1
4063 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
4064 params.SetSubActionTypes("insert")
4067 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
4070 xappConn1.SendRESTSubsDelReq(t, &restSubId)
4072 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
4073 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
4075 // Wait that subs is cleaned
4076 waitSubsCleanup(t, e2SubsId, 10)
4077 mainCtrl.VerifyCounterValues(t)
4080 //-----------------------------------------------------------------------------
4081 // TestRESTSubReqNokAndSubDelOkWithRestartInMiddle
4084 // +-------+ +---------+ +---------+
4085 // | xapp | | submgr | | e2term |
4086 // +-------+ +---------+ +---------+
4089 // |------------->| |
4092 // | |------------->|
4097 // | Submgr restart |
4101 // | |------------->|
4104 // | |<-------------|
4107 //-----------------------------------------------------------------------------
4108 func TestRESTSubReqNokAndSubDelOkWithRestartInMiddle(t *testing.T) {
4109 CaseBegin("TestRESTSubReqNokAndSubDelOkWithRestartInMiddle")
4111 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
4112 Counter{cRestSubReqFromXapp, 1},
4113 Counter{cRestSubRespToXapp, 1},
4114 Counter{cSubReqToE2, 1},
4115 Counter{cSubDelReqFromXapp, 1},
4116 Counter{cSubDelReqToE2, 1},
4117 Counter{cSubDelRespFromE2, 1},
4120 const subReqCount int = 1
4122 // Remove possible existing subscription
4123 mainCtrl.removeExistingSubscriptions(t)
4125 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
4128 mainCtrl.SetResetTestFlag(t, true) // subs.DoNotWaitSubResp will be set TRUE for the subscription
4129 restSubId := xappConn1.SendRESTSubsReq(t, params)
4130 xapp.Logger.Info("Send REST subscriber request for subscriber : %v", restSubId)
4132 e2termConn1.RecvSubsReq(t)
4134 mainCtrl.SetResetTestFlag(t, false)
4136 mainCtrl.SimulateRestart(t)
4137 xapp.Logger.Debug("mainCtrl.SimulateRestart done")
4140 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
4141 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
4143 xappConn1.TestMsgChanEmpty(t)
4144 xappConn2.TestMsgChanEmpty(t)
4145 e2termConn1.TestMsgChanEmpty(t)
4146 mainCtrl.wait_registry_empty(t, 10)
4148 mainCtrl.VerifyCounterValues(t)
4151 //-----------------------------------------------------------------------------
4152 // TestRESTSubReqAndSubDelOkWithRestartInMiddle
4155 // +-------+ +---------+ +---------+
4156 // | xapp | | submgr | | e2term |
4157 // +-------+ +---------+ +---------+
4160 // |---------------->| |
4162 // | RESTSubResp | |
4163 // |<----------------| |
4165 // | |------------->|
4168 // | |<-------------|
4171 // |<----------------| |
4174 // | Submgr restart |
4176 // | RESTSubDelReq | |
4177 // |---------------->| |
4180 // | |------------->|
4183 // | |<-------------|
4185 // | RESTSubDelResp | |
4186 // |<----------------| |
4188 //-----------------------------------------------------------------------------
4189 func TestRESTSubReqAndSubDelOkWithRestartInMiddle(t *testing.T) {
4190 CaseBegin("TestRESTSubReqAndSubDelOkWithRestartInMiddle")
4192 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
4193 Counter{cRestSubReqFromXapp, 1},
4194 Counter{cRestSubRespToXapp, 1},
4195 Counter{cSubReqToE2, 1},
4196 Counter{cSubRespFromE2, 1},
4197 Counter{cRestSubNotifToXapp, 1},
4198 Counter{cRestSubDelReqFromXapp, 1},
4199 Counter{cSubDelReqToE2, 1},
4200 Counter{cRestSubDelRespToXapp, 1},
4203 // Remove possible existing subscription
4204 mainCtrl.removeExistingSubscriptions(t)
4206 var params *teststube2ap.RESTSubsReqParams = nil
4208 // Create subscription
4209 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
4210 xapp.Logger.Info("Send REST subscriber request for subscriber : %v", restSubId)
4212 // Check subscription
4213 queryXappSubscription(t, int64(e2SubsId), "RAN_NAME_1", []string{"localhost:13560"})
4215 // When SDL support for the REST Interface is added
4216 // the submgr restart statement below should be removed
4217 // from the comment.
4219 // mainCtrl.SimulateRestart(t)
4220 // xapp.Logger.Debug("mainCtrl.SimulateRestart done")
4222 // Check subscription
4223 queryXappSubscription(t, int64(e2SubsId), "RAN_NAME_1", []string{"localhost:13560"})
4225 // Delete subscription
4226 deleteSubscription(t, xappConn1, e2termConn1, &restSubId)
4228 //Wait that subs is cleaned
4229 waitSubsCleanup(t, e2SubsId, 10)
4231 mainCtrl.VerifyCounterValues(t)
4234 //-----------------------------------------------------------------------------
4235 // TestRESTSubReqAndSubDelOkSameActionWithRestartsInMiddle
4238 // +-------+ +-------+ +---------+ +---------+
4239 // | xapp2 | | xapp1 | | submgr | | e2term |
4240 // +-------+ +-------+ +---------+ +---------+
4242 // | | RESTSubReq1 | |
4243 // | |---------------->| |
4245 // | | RESTSubResp1 | |
4246 // | |<----------------| |
4249 // | | |------------->|
4251 // | | |<-------------|
4252 // | | RESTNotif1 | |
4253 // | |<----------------| |
4255 // | RESTSubReq2 | |
4256 // |------------------------------>| |
4258 // | RESTSubResp2 | |
4259 // |<------------------------------| |
4261 // | | RESTNotif2 | |
4262 // |<------------------------------| |
4264 // | | Submgr restart |
4266 // | | RESTSubDelReq1 | |
4267 // | |---------------->| |
4269 // | | RESTSubDelResp1 | |
4270 // | |<----------------| |
4272 // | | Submgr restart |
4274 // | RESTSubDelReq2 | |
4275 // |------------------------------>| |
4277 // | RESTSubDelResp2 | |
4278 // |<------------------------------| |
4280 // | | | SubDelReq2 |
4281 // | | |------------->|
4283 // | | | SubDelResp2 |
4284 // | | |<-------------|
4287 //-----------------------------------------------------------------------------
4288 func TestRESTSubReqAndSubDelOkSameActionWithRestartsInMiddle(t *testing.T) {
4289 CaseBegin("TestRESTSubReqAndSubDelOkSameActionWithRestartsInMiddle")
4291 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
4292 Counter{cRestSubReqFromXapp, 2},
4293 Counter{cRestSubRespToXapp, 2},
4294 Counter{cSubReqToE2, 1},
4295 Counter{cSubRespFromE2, 1},
4296 Counter{cRestSubNotifToXapp, 2},
4297 Counter{cMergedSubscriptions, 1},
4298 Counter{cUnmergedSubscriptions, 1},
4299 Counter{cRestSubDelReqFromXapp, 2},
4300 Counter{cSubDelReqToE2, 1},
4301 Counter{cSubDelRespFromE2, 1},
4302 Counter{cRestSubDelRespToXapp, 2},
4305 // Remove possible existing subscription
4306 mainCtrl.removeExistingSubscriptions(t)
4308 var params *teststube2ap.RESTSubsReqParams = nil
4310 // Create subscription 1
4311 restSubId1, e2SubsId1 := createSubscription(t, xappConn1, e2termConn1, params)
4312 xapp.Logger.Info("Send REST subscriber request for subscriber 1 : %v", restSubId1)
4314 // Create subscription 2 with same action
4315 params = xappConn2.GetRESTSubsReqReportParams(subReqCount)
4316 params.SetMeid("RAN_NAME_1")
4317 xapp.Subscription.SetResponseCB(xappConn2.SubscriptionRespHandler)
4318 xappConn2.WaitRESTNotificationForAnySubscriptionId(t)
4319 restSubId2 := xappConn2.SendRESTSubsReq(t, params)
4320 xapp.Logger.Info("Send REST subscriber request for subscriberId : %v", restSubId2)
4321 e2SubsId2 := <-xappConn2.RESTNotification
4322 xapp.Logger.Info("REST notification received e2SubsId=%v", e2SubsId2)
4324 queryXappSubscription(t, int64(e2SubsId1), "RAN_NAME_1", []string{"localhost:13560", "localhost:13660"})
4326 // When SDL support for the REST Interface is added
4327 // the submgr restart statement below should be removed
4328 // from the comment.
4330 // mainCtrl.SimulateRestart(t)
4331 // xapp.Logger.Debug("mainCtrl.SimulateRestart done")
4333 // Delete subscription 1, and wait until it has removed the first endpoint
4334 subepcnt := mainCtrl.get_subs_entrypoint_cnt(t, e2SubsId1)
4335 xappConn1.SendRESTSubsDelReq(t, &restSubId1)
4336 mainCtrl.wait_subs_entrypoint_cnt_change(t, e2SubsId1, subepcnt, 10)
4338 // When SDL support for the REST Interface is added
4339 // the submgr restart statement below should be removed
4340 // from the comment.
4342 // mainCtrl.SimulateRestart(t)
4343 // xapp.Logger.Debug("mainCtrl.SimulateRestart done")
4344 queryXappSubscription(t, int64(e2SubsId1), "RAN_NAME_1", []string{"localhost:13660"})
4346 // Delete subscription 2
4347 deleteXapp2Subscription(t, &restSubId2)
4349 //Wait that subs is cleaned
4350 waitSubsCleanup(t, e2SubsId2, 10)
4352 mainCtrl.VerifyCounterValues(t)
4355 //-----------------------------------------------------------------------------
4356 // TestRESTReportSubReqAndSubDelOk
4359 // +-------+ +---------+ +---------+
4360 // | xapp | | submgr | | e2term |
4361 // +-------+ +---------+ +---------+
4364 // |---------------->| |
4366 // | RESTSubResp | |
4367 // |<----------------| |
4370 // | |------------->|
4373 // | |<-------------|
4375 // |<----------------| |
4377 // | |------------->|
4380 // | |<-------------|
4382 // |<----------------| |
4386 // | RESTSubDelReq | |
4387 // |---------------->| |
4390 // | |------------->|
4393 // | |<-------------|
4395 // | RESTSubDelResp| |
4396 // |<----------------| |
4398 //-----------------------------------------------------------------------------
4399 func TestRESTReportSubReqAndSubDelOk(t *testing.T) {
4400 CaseBegin("TestRESTReportSubReqAndSubDelOk")
4403 RESTReportSubReqAndSubDelOk(t, subReqCount, testIndex)
4406 func RESTReportSubReqAndSubDelOk(t *testing.T, subReqCount int, testIndex int) {
4407 xapp.Logger.Info("TEST: TestRESTReportSubReqAndSubDelOk with testIndex %v", testIndex)
4410 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
4411 restSubId := xappConn1.SendRESTSubsReq(t, params)
4413 var e2SubsId []uint32
4414 for i := 0; i < subReqCount; i++ {
4415 crereq, cremsg := e2termConn1.RecvSubsReq(t)
4416 xappConn1.ExpectRESTNotification(t, restSubId)
4418 e2termConn1.SendSubsResp(t, crereq, cremsg)
4419 instanceId := xappConn1.WaitRESTNotification(t, restSubId)
4420 xapp.Logger.Info("TEST: REST notification received e2SubsId=%v", instanceId)
4421 e2SubsId = append(e2SubsId, instanceId)
4422 resp, _ := xapp.Subscription.QuerySubscriptions()
4423 assert.Equal(t, resp[i].SubscriptionID, (int64)(instanceId))
4424 assert.Equal(t, resp[i].Meid, "RAN_NAME_1")
4425 assert.Equal(t, resp[i].ClientEndpoint, []string{"localhost:13560"})
4430 xappConn1.SendRESTSubsDelReq(t, &restSubId)
4432 for i := 0; i < subReqCount; i++ {
4433 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
4434 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
4437 // Wait that subs is cleaned
4438 for i := 0; i < subReqCount; i++ {
4439 mainCtrl.wait_subs_clean(t, e2SubsId[i], 10)
4442 xappConn1.TestMsgChanEmpty(t)
4443 e2termConn1.TestMsgChanEmpty(t)
4444 mainCtrl.wait_registry_empty(t, 10)
4448 func TestRESTPolicySubReqAndSubDelOk(t *testing.T) {
4449 CaseBegin("TestRESTPolicySubReqAndSubDelOk")
4453 RESTPolicySubReqAndSubDelOk(t, subReqCount, testIndex)
4457 RESTPolicySubReqAndSubDelOk(t, subReqCount, testIndex)
4460 func RESTPolicySubReqAndSubDelOk(t *testing.T, subReqCount int, testIndex int) {
4461 xapp.Logger.Info("TEST: TestRESTPolicySubReqAndSubDelOk with testIndex %v", testIndex)
4464 params := xappConn1.GetRESTSubsReqPolicyParams(subReqCount)
4465 restSubId := xappConn1.SendRESTSubsReq(t, params)
4466 //params := xappConn1.GetRESTSubsReqPolicyParams1(subReqCount)
4467 //restSubId := xappConn1.SendRESTPolicySubsReq(t, params)
4469 var e2SubsId []uint32
4470 for i := 0; i < subReqCount; i++ {
4471 crereq, cremsg := e2termConn1.RecvSubsReq(t)
4472 xappConn1.ExpectRESTNotification(t, restSubId)
4473 e2termConn1.SendSubsResp(t, crereq, cremsg)
4474 instanceId := xappConn1.WaitRESTNotification(t, restSubId)
4475 xapp.Logger.Info("TEST: REST notification received e2SubsId=%v", instanceId)
4476 e2SubsId = append(e2SubsId, instanceId)
4480 xappConn1.SendRESTSubsDelReq(t, &restSubId)
4482 for i := 0; i < subReqCount; i++ {
4483 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
4484 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
4487 // Wait that subs is cleaned
4488 for i := 0; i < subReqCount; i++ {
4489 mainCtrl.wait_subs_clean(t, e2SubsId[i], 10)
4491 xappConn1.TestMsgChanEmpty(t)
4492 e2termConn1.TestMsgChanEmpty(t)
4493 mainCtrl.wait_registry_empty(t, 10)
4496 func TestRESTTwoPolicySubReqAndSubDelOk(t *testing.T) {
4500 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
4501 Counter{cRestSubReqFromXapp, 1},
4502 Counter{cRestSubRespToXapp, 1},
4503 Counter{cSubReqToE2, 2},
4504 Counter{cSubRespFromE2, 2},
4505 Counter{cRestSubNotifToXapp, 2},
4506 Counter{cRestSubDelReqFromXapp, 1},
4507 Counter{cSubDelReqToE2, 2},
4508 Counter{cSubDelRespFromE2, 2},
4509 Counter{cRestSubDelRespToXapp, 1},
4513 params := xappConn1.GetRESTSubsReqPolicyParams(subReqCount)
4514 restSubId := xappConn1.SendRESTSubsReq(t, params)
4515 e2SubsIds := sendAndReceiveMultipleE2SubReqs(t, subReqCount, xappConn1, e2termConn1, restSubId)
4517 assert.Equal(t, len(e2SubsIds), 2)
4520 xappConn1.SendRESTSubsDelReq(t, &restSubId)
4521 sendAndReceiveMultipleE2DelReqs(t, e2SubsIds, e2termConn1)
4523 xappConn1.TestMsgChanEmpty(t)
4524 e2termConn1.TestMsgChanEmpty(t)
4525 mainCtrl.wait_registry_empty(t, 10)
4527 mainCtrl.VerifyCounterValues(t)
4529 func TestRESTPolicySubReqAndSubDelOkFullAmount(t *testing.T) {
4533 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
4534 Counter{cRestSubReqFromXapp, 1},
4535 Counter{cRestSubRespToXapp, 1},
4536 Counter{cSubReqToE2, 19},
4537 Counter{cSubRespFromE2, 19},
4538 Counter{cRestSubNotifToXapp, 19},
4539 Counter{cRestSubDelReqFromXapp, 1},
4540 Counter{cSubDelReqToE2, 19},
4541 Counter{cSubDelRespFromE2, 19},
4542 Counter{cRestSubDelRespToXapp, 1},
4546 params := xappConn1.GetRESTSubsReqPolicyParams(subReqCount)
4547 restSubId := xappConn1.SendRESTSubsReq(t, params)
4548 e2SubsIds := sendAndReceiveMultipleE2SubReqs(t, subReqCount, xappConn1, e2termConn1, restSubId)
4550 assert.Equal(t, len(e2SubsIds), 19)
4552 xappConn1.SendRESTSubsDelReq(t, &restSubId)
4553 sendAndReceiveMultipleE2DelReqs(t, e2SubsIds, e2termConn1)
4555 xappConn1.TestMsgChanEmpty(t)
4556 e2termConn1.TestMsgChanEmpty(t)
4557 mainCtrl.wait_registry_empty(t, 10)
4559 mainCtrl.VerifyCounterValues(t)
4561 func TestRESTTwoReportSubReqAndSubDelOk(t *testing.T) {
4565 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
4566 Counter{cRestSubReqFromXapp, 1},
4567 Counter{cRestSubRespToXapp, 1},
4568 Counter{cSubReqToE2, uint64(subReqCount)},
4569 Counter{cSubRespFromE2, uint64(subReqCount)},
4570 Counter{cRestSubNotifToXapp, uint64(subReqCount)},
4571 Counter{cRestSubDelReqFromXapp, 1},
4572 Counter{cSubDelReqToE2, uint64(subReqCount)},
4573 Counter{cSubDelRespFromE2, uint64(subReqCount)},
4574 Counter{cRestSubDelRespToXapp, 1},
4578 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
4579 restSubId := xappConn1.SendRESTSubsReq(t, params)
4580 e2SubsIds := sendAndReceiveMultipleE2SubReqs(t, subReqCount, xappConn1, e2termConn1, restSubId)
4582 assert.Equal(t, len(e2SubsIds), subReqCount)
4585 xappConn1.SendRESTSubsDelReq(t, &restSubId)
4586 sendAndReceiveMultipleE2DelReqs(t, e2SubsIds, e2termConn1)
4588 xappConn1.TestMsgChanEmpty(t)
4589 e2termConn1.TestMsgChanEmpty(t)
4590 mainCtrl.wait_registry_empty(t, 10)
4592 mainCtrl.VerifyCounterValues(t)
4595 func TestRESTTwoReportSubReqAndSubDelOkNoActParams(t *testing.T) {
4599 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
4600 Counter{cRestSubReqFromXapp, 1},
4601 Counter{cRestSubRespToXapp, 1},
4602 Counter{cSubReqToE2, uint64(subReqCount)},
4603 Counter{cSubRespFromE2, uint64(subReqCount)},
4604 Counter{cRestSubNotifToXapp, uint64(subReqCount)},
4605 Counter{cRestSubDelReqFromXapp, 1},
4606 Counter{cSubDelReqToE2, uint64(subReqCount)},
4607 Counter{cSubDelRespFromE2, uint64(subReqCount)},
4608 Counter{cRestSubDelRespToXapp, 1},
4612 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
4613 restSubId := xappConn1.SendRESTSubsReq(t, params)
4614 e2SubsIds := sendAndReceiveMultipleE2SubReqs(t, subReqCount, xappConn1, e2termConn1, restSubId)
4616 assert.Equal(t, len(e2SubsIds), subReqCount)
4619 xappConn1.SendRESTSubsDelReq(t, &restSubId)
4620 sendAndReceiveMultipleE2DelReqs(t, e2SubsIds, e2termConn1)
4622 xappConn1.TestMsgChanEmpty(t)
4623 e2termConn1.TestMsgChanEmpty(t)
4624 mainCtrl.wait_registry_empty(t, 10)
4626 mainCtrl.VerifyCounterValues(t)
4629 func TestRESTFullAmountReportSubReqAndSubDelOk(t *testing.T) {
4633 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
4634 Counter{cRestSubReqFromXapp, 1},
4635 Counter{cRestSubRespToXapp, 1},
4636 Counter{cSubReqToE2, uint64(subReqCount)},
4637 Counter{cSubRespFromE2, uint64(subReqCount)},
4638 Counter{cRestSubNotifToXapp, uint64(subReqCount)},
4639 Counter{cRestSubDelReqFromXapp, 1},
4640 Counter{cSubDelReqToE2, uint64(subReqCount)},
4641 Counter{cSubDelRespFromE2, uint64(subReqCount)},
4642 Counter{cRestSubDelRespToXapp, 1},
4646 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
4647 restSubId := xappConn1.SendRESTSubsReq(t, params)
4648 e2SubsIds := sendAndReceiveMultipleE2SubReqs(t, subReqCount, xappConn1, e2termConn1, restSubId)
4650 assert.Equal(t, len(e2SubsIds), subReqCount)
4653 xappConn1.SendRESTSubsDelReq(t, &restSubId)
4654 sendAndReceiveMultipleE2DelReqs(t, e2SubsIds, e2termConn1)
4656 xappConn1.TestMsgChanEmpty(t)
4657 e2termConn1.TestMsgChanEmpty(t)
4658 mainCtrl.wait_registry_empty(t, 10)
4660 mainCtrl.VerifyCounterValues(t)
4663 func TestRESTSubReqReportSameActionDiffEventTriggerDefinitionLen(t *testing.T) {
4664 CaseBegin("TestRESTSubReqReportSameActionDiffEventTriggerDefinitionLen")
4666 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
4667 Counter{cRestSubReqFromXapp, 2},
4668 Counter{cRestSubRespToXapp, 2},
4669 Counter{cSubReqToE2, 2},
4670 Counter{cSubRespFromE2, 2},
4671 Counter{cRestSubNotifToXapp, 2},
4672 Counter{cRestSubDelReqFromXapp, 2},
4673 Counter{cSubDelReqToE2, 2},
4674 Counter{cSubDelRespFromE2, 2},
4675 Counter{cRestSubDelRespToXapp, 2},
4679 var params *teststube2ap.RESTSubsReqParams = nil
4682 restSubId1, e2SubsId1 := createSubscription(t, xappConn1, e2termConn1, params)
4683 xapp.Logger.Info("Send REST subscriber request for subscriberId : %v", restSubId1)
4685 queryXappSubscription(t, int64(e2SubsId1), "RAN_NAME_1", []string{"localhost:13560"})
4688 params = xappConn2.GetRESTSubsReqReportParams(subReqCount)
4689 params.SetMeid("RAN_NAME_1")
4690 eventTriggerDefinition := "1234"
4691 params.SetSubEventTriggerDefinition(eventTriggerDefinition)
4693 restSubId2 := xappConn2.SendRESTSubsReq(t, params)
4694 xapp.Logger.Info("Send REST subscriber request for subscriberId : %v", restSubId2)
4695 crereq, cremsg := e2termConn1.RecvSubsReq(t)
4696 xappConn2.ExpectRESTNotification(t, restSubId2)
4697 e2termConn1.SendSubsResp(t, crereq, cremsg)
4698 e2SubsId2 := xappConn2.WaitRESTNotification(t, restSubId2)
4700 deleteXapp1Subscription(t, &restSubId1)
4701 deleteXapp2Subscription(t, &restSubId2)
4703 waitSubsCleanup(t, e2SubsId1, 10)
4704 waitSubsCleanup(t, e2SubsId2, 10)
4706 mainCtrl.VerifyCounterValues(t)
4710 func TestRESTSubReqReportSameActionDiffActionListLen(t *testing.T) {
4711 CaseBegin("TestRESTSubReqReportSameActionDiffActionListLen")
4713 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
4714 Counter{cRestSubReqFromXapp, 2},
4715 Counter{cRestSubRespToXapp, 2},
4716 Counter{cSubReqToE2, 2},
4717 Counter{cSubRespFromE2, 2},
4718 Counter{cRestSubNotifToXapp, 2},
4719 Counter{cRestSubDelReqFromXapp, 2},
4720 Counter{cSubDelReqToE2, 2},
4721 Counter{cSubDelRespFromE2, 2},
4722 Counter{cRestSubDelRespToXapp, 2},
4726 var params *teststube2ap.RESTSubsReqParams = nil
4729 restSubId1, e2SubsId1 := createSubscription(t, xappConn1, e2termConn1, params)
4730 xapp.Logger.Info("Send REST subscriber request for subscriberId : %v", restSubId1)
4732 queryXappSubscription(t, int64(e2SubsId1), "RAN_NAME_1", []string{"localhost:13560"})
4735 params = xappConn2.GetRESTSubsReqReportParams(subReqCount)
4736 params.SetMeid("RAN_NAME_1")
4738 actionId := int64(1)
4739 actionType := "report"
4740 actionDefinition := "56781"
4741 subsequestActionType := "continue"
4742 timeToWait := "w10ms"
4743 params.AppendActionToActionToBeSetupList(actionId, actionType, actionDefinition, subsequestActionType, timeToWait)
4745 restSubId2 := xappConn2.SendRESTSubsReq(t, params)
4746 xapp.Logger.Info("Send REST subscriber request for subscriberId : %v", restSubId2)
4747 crereq, cremsg := e2termConn1.RecvSubsReq(t)
4748 xappConn2.ExpectRESTNotification(t, restSubId2)
4749 e2termConn1.SendSubsResp(t, crereq, cremsg)
4750 e2SubsId2 := xappConn2.WaitRESTNotification(t, restSubId2)
4752 deleteXapp1Subscription(t, &restSubId1)
4753 deleteXapp2Subscription(t, &restSubId2)
4755 waitSubsCleanup(t, e2SubsId1, 10)
4756 waitSubsCleanup(t, e2SubsId2, 10)
4758 mainCtrl.VerifyCounterValues(t)
4762 func TestRESTSubReqReportSameActionDiffActionID(t *testing.T) {
4763 CaseBegin("TestRESTSubReqReportSameActionDiffActionID")
4765 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
4766 Counter{cRestSubReqFromXapp, 2},
4767 Counter{cRestSubRespToXapp, 2},
4768 Counter{cSubReqToE2, 2},
4769 Counter{cSubRespFromE2, 2},
4770 Counter{cRestSubNotifToXapp, 2},
4771 Counter{cRestSubDelReqFromXapp, 2},
4772 Counter{cSubDelReqToE2, 2},
4773 Counter{cSubDelRespFromE2, 2},
4774 Counter{cRestSubDelRespToXapp, 2},
4778 var params *teststube2ap.RESTSubsReqParams = nil
4781 restSubId1, e2SubsId1 := createSubscription(t, xappConn1, e2termConn1, params)
4782 xapp.Logger.Info("Send REST subscriber request for subscriberId : %v", restSubId1)
4784 queryXappSubscription(t, int64(e2SubsId1), "RAN_NAME_1", []string{"localhost:13560"})
4787 params = xappConn2.GetRESTSubsReqReportParams(subReqCount)
4788 params.SetMeid("RAN_NAME_1")
4789 params.SetSubActionIDs(int64(2))
4791 restSubId2 := xappConn2.SendRESTSubsReq(t, params)
4792 xapp.Logger.Info("Send REST subscriber request for subscriberId : %v", restSubId2)
4793 crereq, cremsg := e2termConn1.RecvSubsReq(t)
4794 xappConn2.ExpectRESTNotification(t, restSubId2)
4795 e2termConn1.SendSubsResp(t, crereq, cremsg)
4796 e2SubsId2 := xappConn2.WaitRESTNotification(t, restSubId2)
4798 deleteXapp1Subscription(t, &restSubId1)
4799 deleteXapp2Subscription(t, &restSubId2)
4801 waitSubsCleanup(t, e2SubsId1, 10)
4802 waitSubsCleanup(t, e2SubsId2, 10)
4804 mainCtrl.VerifyCounterValues(t)
4808 func TestRESTSubReqDiffActionType(t *testing.T) {
4809 CaseBegin("TestRESTSubReqDiffActionType")
4811 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
4812 Counter{cRestSubReqFromXapp, 2},
4813 Counter{cRestSubRespToXapp, 2},
4814 Counter{cSubReqToE2, 2},
4815 Counter{cSubRespFromE2, 2},
4816 Counter{cRestSubNotifToXapp, 2},
4817 Counter{cRestSubDelReqFromXapp, 2},
4818 Counter{cSubDelReqToE2, 2},
4819 Counter{cSubDelRespFromE2, 2},
4820 Counter{cRestSubDelRespToXapp, 2},
4824 params := xappConn1.GetRESTSubsReqPolicyParams(subReqCount)
4827 restSubId1, e2SubsId1 := createSubscription(t, xappConn1, e2termConn1, params)
4828 xapp.Logger.Info("Send REST subscriber request for subscriberId : %v", restSubId1)
4830 queryXappSubscription(t, int64(e2SubsId1), "RAN_NAME_1", []string{"localhost:13560"})
4833 params = xappConn2.GetRESTSubsReqReportParams(subReqCount)
4834 params.SetMeid("RAN_NAME_1")
4836 restSubId2 := xappConn2.SendRESTSubsReq(t, params)
4837 xapp.Logger.Info("Send REST subscriber request for subscriberId : %v", restSubId2)
4838 crereq, cremsg := e2termConn1.RecvSubsReq(t)
4839 xappConn2.ExpectRESTNotification(t, restSubId2)
4840 e2termConn1.SendSubsResp(t, crereq, cremsg)
4841 e2SubsId2 := xappConn2.WaitRESTNotification(t, restSubId2)
4843 deleteXapp1Subscription(t, &restSubId1)
4844 deleteXapp2Subscription(t, &restSubId2)
4846 waitSubsCleanup(t, e2SubsId1, 10)
4847 waitSubsCleanup(t, e2SubsId2, 10)
4849 mainCtrl.VerifyCounterValues(t)
4853 func TestRESTSubReqPolicyAndSubDelOkSameAction(t *testing.T) {
4854 CaseBegin("TestRESTSubReqPolicyAndSubDelOkSameAction")
4856 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
4857 Counter{cRestSubReqFromXapp, 2},
4858 Counter{cRestSubRespToXapp, 2},
4859 Counter{cSubReqToE2, 2},
4860 Counter{cSubRespFromE2, 2},
4861 Counter{cRestSubNotifToXapp, 2},
4862 Counter{cRestSubDelReqFromXapp, 2},
4863 Counter{cSubDelReqToE2, 2},
4864 Counter{cSubDelRespFromE2, 2},
4865 Counter{cRestSubDelRespToXapp, 2},
4869 params := xappConn1.GetRESTSubsReqPolicyParams(subReqCount)
4872 restSubId1, e2SubsId1 := createSubscription(t, xappConn1, e2termConn1, params)
4873 xapp.Logger.Info("Send REST subscriber request for subscriberId : %v", restSubId1)
4875 queryXappSubscription(t, int64(e2SubsId1), "RAN_NAME_1", []string{"localhost:13560"})
4878 params = xappConn2.GetRESTSubsReqPolicyParams(subReqCount)
4879 params.SetMeid("RAN_NAME_1")
4881 restSubId2 := xappConn2.SendRESTSubsReq(t, params)
4882 xapp.Logger.Info("Send REST subscriber request for subscriberId : %v", restSubId2)
4883 crereq, cremsg := e2termConn1.RecvSubsReq(t)
4884 xappConn2.ExpectRESTNotification(t, restSubId2)
4885 e2termConn1.SendSubsResp(t, crereq, cremsg)
4886 e2SubsId2 := xappConn2.WaitRESTNotification(t, restSubId2)
4888 deleteXapp1Subscription(t, &restSubId1)
4889 deleteXapp2Subscription(t, &restSubId2)
4891 waitSubsCleanup(t, e2SubsId1, 10)
4892 waitSubsCleanup(t, e2SubsId2, 10)
4894 mainCtrl.VerifyCounterValues(t)
4898 func TestRESTSubReqReportSameActionDiffActionDefinitionLen(t *testing.T) {
4899 CaseBegin("TestRESTSubReqReportSameActionDiffActionDefinitionLen")
4901 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
4902 Counter{cRestSubReqFromXapp, 2},
4903 Counter{cRestSubRespToXapp, 2},
4904 Counter{cSubReqToE2, 2},
4905 Counter{cSubRespFromE2, 2},
4906 Counter{cRestSubNotifToXapp, 2},
4907 Counter{cRestSubDelReqFromXapp, 2},
4908 Counter{cSubDelReqToE2, 2},
4909 Counter{cSubDelRespFromE2, 2},
4910 Counter{cRestSubDelRespToXapp, 2},
4914 var params *teststube2ap.RESTSubsReqParams = nil
4917 restSubId1, e2SubsId1 := createSubscription(t, xappConn1, e2termConn1, params)
4918 xapp.Logger.Info("Send REST subscriber request for subscriberId : %v", restSubId1)
4920 queryXappSubscription(t, int64(e2SubsId1), "RAN_NAME_1", []string{"localhost:13560"})
4923 params = xappConn2.GetRESTSubsReqReportParams(subReqCount)
4924 params.SetMeid("RAN_NAME_1")
4925 actionDefinition := "5678"
4926 params.SetSubActionDefinition(actionDefinition)
4928 restSubId2 := xappConn2.SendRESTSubsReq(t, params)
4929 xapp.Logger.Info("Send REST subscriber request for subscriberId : %v", restSubId2)
4930 crereq, cremsg := e2termConn1.RecvSubsReq(t)
4931 xappConn2.ExpectRESTNotification(t, restSubId2)
4932 e2termConn1.SendSubsResp(t, crereq, cremsg)
4933 e2SubsId2 := xappConn2.WaitRESTNotification(t, restSubId2)
4935 deleteXapp1Subscription(t, &restSubId1)
4936 deleteXapp2Subscription(t, &restSubId2)
4938 waitSubsCleanup(t, e2SubsId1, 10)
4939 waitSubsCleanup(t, e2SubsId2, 10)
4941 mainCtrl.VerifyCounterValues(t)
4945 func TestRESTSubReqReportSameActionDiffActionDefinitionContents(t *testing.T) {
4946 CaseBegin("TestRESTSubReqReportSameActionDiffActionDefinitionContents")
4948 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
4949 Counter{cRestSubReqFromXapp, 2},
4950 Counter{cRestSubRespToXapp, 2},
4951 Counter{cSubReqToE2, 2},
4952 Counter{cSubRespFromE2, 2},
4953 Counter{cRestSubNotifToXapp, 2},
4954 Counter{cRestSubDelReqFromXapp, 2},
4955 Counter{cSubDelReqToE2, 2},
4956 Counter{cSubDelRespFromE2, 2},
4957 Counter{cRestSubDelRespToXapp, 2},
4961 var params *teststube2ap.RESTSubsReqParams = nil
4964 restSubId1, e2SubsId1 := createSubscription(t, xappConn1, e2termConn1, params)
4965 xapp.Logger.Info("Send REST subscriber request for subscriberId : %v", restSubId1)
4967 queryXappSubscription(t, int64(e2SubsId1), "RAN_NAME_1", []string{"localhost:13560"})
4970 params = xappConn2.GetRESTSubsReqReportParams(subReqCount)
4971 params.SetMeid("RAN_NAME_1")
4972 actionDefinition := "56782"
4973 params.SetSubActionDefinition(actionDefinition)
4975 restSubId2 := xappConn2.SendRESTSubsReq(t, params)
4976 xapp.Logger.Info("Send REST subscriber request for subscriberId : %v", restSubId2)
4977 crereq, cremsg := e2termConn1.RecvSubsReq(t)
4978 xappConn2.ExpectRESTNotification(t, restSubId2)
4979 e2termConn1.SendSubsResp(t, crereq, cremsg)
4980 e2SubsId2 := xappConn2.WaitRESTNotification(t, restSubId2)
4982 deleteXapp1Subscription(t, &restSubId1)
4983 deleteXapp2Subscription(t, &restSubId2)
4985 waitSubsCleanup(t, e2SubsId1, 10)
4986 waitSubsCleanup(t, e2SubsId2, 10)
4988 mainCtrl.VerifyCounterValues(t)
4992 func TestRESTSubReqReportSameActionDiffSubsAction(t *testing.T) {
4993 CaseBegin("TestRESTSubReqReportSameActionDiffSubsAction")
4995 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
4996 Counter{cRestSubReqFromXapp, 2},
4997 Counter{cRestSubRespToXapp, 2},
4998 Counter{cSubReqToE2, 2},
4999 Counter{cSubRespFromE2, 2},
5000 Counter{cRestSubNotifToXapp, 2},
5001 Counter{cRestSubDelReqFromXapp, 2},
5002 Counter{cSubDelReqToE2, 2},
5003 Counter{cSubDelRespFromE2, 2},
5004 Counter{cRestSubDelRespToXapp, 2},
5008 var params *teststube2ap.RESTSubsReqParams = nil
5011 restSubId1, e2SubsId1 := createSubscription(t, xappConn1, e2termConn1, params)
5012 xapp.Logger.Info("Send REST subscriber request for subscriberId : %v", restSubId1)
5014 queryXappSubscription(t, int64(e2SubsId1), "RAN_NAME_1", []string{"localhost:13560"})
5017 params = xappConn2.GetRESTSubsReqReportParams(subReqCount)
5018 params.SetMeid("RAN_NAME_1")
5019 params.SetTimeToWait("w200ms")
5020 restSubId2 := xappConn2.SendRESTSubsReq(t, params)
5021 xapp.Logger.Info("Send REST subscriber request for subscriberId : %v", restSubId2)
5022 crereq, cremsg := e2termConn1.RecvSubsReq(t)
5023 xappConn2.ExpectRESTNotification(t, restSubId2)
5024 e2termConn1.SendSubsResp(t, crereq, cremsg)
5025 e2SubsId2 := xappConn2.WaitRESTNotification(t, restSubId2)
5027 deleteXapp1Subscription(t, &restSubId1)
5028 deleteXapp2Subscription(t, &restSubId2)
5030 waitSubsCleanup(t, e2SubsId1, 10)
5031 waitSubsCleanup(t, e2SubsId2, 10)
5033 mainCtrl.VerifyCounterValues(t)
5037 //-----------------------------------------------------------------------------
5038 // TestRESTUnpackSubscriptionResponseDecodeFail
5041 // +-------+ +---------+ +---------+
5042 // | xapp | | submgr | | e2term |
5043 // +-------+ +---------+ +---------+
5046 // |---------------->| |
5048 // | RESTSubResp | |
5049 // |<----------------| |
5052 // | |------------->|
5054 // | | SubResp | ASN.1 decode fails
5055 // | |<-------------|
5058 // | |------------->|
5060 // | | SubFail | Duplicated action
5061 // | |<-------------|
5062 // | RESTNotif (fail)| |
5063 // |<----------------| |
5065 // | |------------->|
5068 // | |<-------------|
5070 //-----------------------------------------------------------------------------
5071 func TestRESTUnpackSubscriptionResponseDecodeFail(t *testing.T) {
5072 xapp.Logger.Info("TEST: TestRESTUnpackSubscriptionResponseDecodeFail")
5076 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
5077 restSubId := xappConn1.SendRESTSubsReq(t, params)
5079 crereq, cremsg := e2termConn1.RecvSubsReq(t)
5080 // Decode of this response fails which will result resending original request
5081 e2termConn1.SendInvalidE2Asn1Resp(t, cremsg, xapp.RIC_SUB_RESP)
5083 _, cremsg = e2termConn1.RecvSubsReq(t)
5085 xappConn1.ExpectRESTNotification(t, restSubId)
5087 // Subscription already created in E2 Node.
5088 fparams := &teststube2ap.E2StubSubsFailParams{}
5090 fparams.SetCauseVal(0, 1, 3) // CauseRIC / duplicate-action
5091 e2termConn1.SendSubsFail(t, fparams, cremsg)
5093 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
5094 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
5096 instanceId := xappConn1.WaitRESTNotification(t, restSubId)
5097 xapp.Logger.Info("TEST: REST notification received e2SubsId=%v", instanceId)
5099 // Wait that subs is cleaned
5100 mainCtrl.wait_subs_clean(t, crereq.RequestId.InstanceId, 10)
5102 xappConn1.TestMsgChanEmpty(t)
5103 e2termConn1.TestMsgChanEmpty(t)
5104 mainCtrl.wait_registry_empty(t, 10)
5107 //-----------------------------------------------------------------------------
5108 // TestRESTUnpackSubscriptionResponseUnknownInstanceId
5111 // +-------+ +---------+ +---------+
5112 // | xapp | | submgr | | e2term |
5113 // +-------+ +---------+ +---------+
5116 // |---------------->| |
5118 // | RESTSubResp | |
5119 // |<----------------| |
5122 // | |------------->|
5124 // | | SubResp | Unknown instanceId
5125 // | |<-------------|
5128 // | |------------->|
5130 // | | SubFail | Duplicated action
5131 // | |<-------------|
5132 // | RESTNotif (fail)| |
5133 // |<----------------| |
5135 // | |------------->|
5138 // | |<-------------|
5140 //-----------------------------------------------------------------------------
5141 func TestRESTUnpackSubscriptionResponseUnknownInstanceId(t *testing.T) {
5142 xapp.Logger.Info("TEST: TestRESTUnpackSubscriptionResponseUnknownInstanceId")
5146 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
5147 restSubId := xappConn1.SendRESTSubsReq(t, params)
5149 crereq, cremsg := e2termConn1.RecvSubsReq(t)
5151 // Unknown instanceId in this response which will result resending original request
5152 orgInstanceId := crereq.RequestId.InstanceId
5153 crereq.RequestId.InstanceId = 0
5154 e2termConn1.SendSubsResp(t, crereq, cremsg)
5156 _, cremsg = e2termConn1.RecvSubsReq(t)
5158 xappConn1.ExpectRESTNotification(t, restSubId)
5160 // Subscription already created in E2 Node.
5161 fparams := &teststube2ap.E2StubSubsFailParams{}
5163 fparams.SetCauseVal(0, 1, 3) // CauseRIC / duplicate-action
5164 e2termConn1.SendSubsFail(t, fparams, cremsg)
5166 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
5167 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
5169 instanceId := xappConn1.WaitRESTNotification(t, restSubId)
5170 xapp.Logger.Info("TEST: REST notification received e2SubsId=%v", instanceId)
5172 // Wait that subs is cleaned
5173 mainCtrl.wait_subs_clean(t, orgInstanceId, 10)
5175 xappConn1.TestMsgChanEmpty(t)
5176 e2termConn1.TestMsgChanEmpty(t)
5177 mainCtrl.wait_registry_empty(t, 10)
5180 //-----------------------------------------------------------------------------
5181 // TestRESTUnpackSubscriptionResponseNoTransaction
5184 // +-------+ +---------+ +---------+
5185 // | xapp | | submgr | | e2term |
5186 // +-------+ +---------+ +---------+
5189 // |---------------->| |
5191 // | RESTSubResp | |
5192 // |<----------------| |
5195 // | |------------->|
5197 // | | SubResp | No transaction for the response
5198 // | |<-------------|
5201 // | |------------->|
5203 // | | SubFail | Duplicated action
5204 // | |<-------------|
5205 // | RESTNotif (fail)| |
5206 // |<----------------| |
5208 // | |------------->|
5211 // | |<-------------|
5214 // | |------------->|
5217 // | |<-------------|
5219 //-----------------------------------------------------------------------------
5220 func TestRESTUnpackSubscriptionResponseNoTransaction(t *testing.T) {
5221 xapp.Logger.Info("TEST: TestRESTUnpackSubscriptionResponseNoTransaction")
5225 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
5226 restSubId := xappConn1.SendRESTSubsReq(t, params)
5228 crereq, cremsg := e2termConn1.RecvSubsReq(t)
5230 mainCtrl.MakeTransactionNil(t, crereq.RequestId.InstanceId)
5231 // No transaction exist for this response which will result resending original request
5232 e2termConn1.SendSubsResp(t, crereq, cremsg)
5234 _, cremsg = e2termConn1.RecvSubsReq(t)
5236 xappConn1.ExpectRESTNotification(t, restSubId)
5238 // Subscription already created in E2 Node.
5239 fparams := &teststube2ap.E2StubSubsFailParams{}
5241 fparams.SetCauseVal(0, 1, 3) // CauseRIC / duplicate-action
5242 e2termConn1.SendSubsFail(t, fparams, cremsg)
5244 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
5245 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
5247 // Resending happens because there no transaction
5248 delreq, delmsg = e2termConn1.RecvSubsDelReq(t)
5249 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
5251 instanceId := xappConn1.WaitRESTNotification(t, restSubId)
5252 xapp.Logger.Info("TEST: REST notification received e2SubsId=%v", instanceId)
5254 // Wait that subs is cleaned
5255 mainCtrl.wait_subs_clean(t, crereq.RequestId.InstanceId, 10)
5257 xappConn1.TestMsgChanEmpty(t)
5258 e2termConn1.TestMsgChanEmpty(t)
5259 mainCtrl.wait_registry_empty(t, 10)
5263 //-----------------------------------------------------------------------------
5264 // TestRESTUnpackSubscriptionFailureDecodeFail
5267 // +-------+ +---------+ +---------+
5268 // | xapp | | submgr | | e2term |
5269 // +-------+ +---------+ +---------+
5272 // |---------------->| |
5274 // | RESTSubResp | |
5275 // |<----------------| |
5278 // | |------------->|
5280 // | | SubFail | ASN.1 decode fails
5281 // | |<-------------|
5284 // | |------------->|
5286 // | | SubFail | Duplicated action
5287 // | |<-------------|
5288 // | RESTNotif (fail)| |
5289 // |<----------------| |
5291 // | |------------->|
5294 // | |<-------------|
5296 //-----------------------------------------------------------------------------
5297 func TestRESTUnpackSubscriptionFailureDecodeFail(t *testing.T) {
5298 xapp.Logger.Info("TEST: TestRESTUnpackSubscriptionFailureDecodeFail")
5302 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
5303 restSubId := xappConn1.SendRESTSubsReq(t, params)
5305 crereq, cremsg := e2termConn1.RecvSubsReq(t)
5307 // Decode of this response fails which will result resending original request
5308 e2termConn1.SendInvalidE2Asn1Resp(t, cremsg, xapp.RIC_SUB_FAILURE)
5310 _, cremsg = e2termConn1.RecvSubsReq(t)
5312 xappConn1.ExpectRESTNotification(t, restSubId)
5314 // Subscription already created in E2 Node.
5315 fparams := &teststube2ap.E2StubSubsFailParams{}
5317 fparams.SetCauseVal(0, 1, 3) // CauseRIC / duplicate-action
5318 e2termConn1.SendSubsFail(t, fparams, cremsg)
5320 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
5321 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
5323 instanceId := xappConn1.WaitRESTNotification(t, restSubId)
5324 xapp.Logger.Info("TEST: REST notification received e2SubsId=%v", instanceId)
5326 // Wait that subs is cleaned
5327 mainCtrl.wait_subs_clean(t, crereq.RequestId.InstanceId, 10)
5329 xappConn1.TestMsgChanEmpty(t)
5330 e2termConn1.TestMsgChanEmpty(t)
5331 mainCtrl.wait_registry_empty(t, 10)
5334 //-----------------------------------------------------------------------------
5335 // TestRESTUnpackSubscriptionResponseUnknownInstanceId
5338 // +-------+ +---------+ +---------+
5339 // | xapp | | submgr | | e2term |
5340 // +-------+ +---------+ +---------+
5343 // |---------------->| |
5345 // | RESTSubResp | |
5346 // |<----------------| |
5349 // | |------------->|
5351 // | | SubFail | Unknown instanceId
5352 // | |<-------------|
5355 // | |------------->|
5357 // | | SubFail | Duplicated action
5358 // | |<-------------|
5359 // | RESTNotif (fail)| |
5360 // |<----------------| |
5362 // | |------------->|
5365 // | |<-------------|
5367 //-----------------------------------------------------------------------------
5368 func TestRESTUnpackSubscriptionFailureUnknownInstanceId(t *testing.T) {
5369 xapp.Logger.Info("TEST: TestRESTUnpackSubscriptionFailureUnknownInstanceId")
5373 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
5374 restSubId := xappConn1.SendRESTSubsReq(t, params)
5376 crereq, cremsg := e2termConn1.RecvSubsReq(t)
5378 // Unknown instanceId in this response which will result resending original request
5379 fparams := &teststube2ap.E2StubSubsFailParams{}
5381 fparams.Fail.RequestId.InstanceId = 0
5382 e2termConn1.SendSubsFail(t, fparams, cremsg)
5384 _, cremsg = e2termConn1.RecvSubsReq(t)
5386 xappConn1.ExpectRESTNotification(t, restSubId)
5388 // Subscription already created in E2 Node.
5389 fparams.SetCauseVal(0, 1, 3) // CauseRIC / duplicate-action
5390 e2termConn1.SendSubsFail(t, fparams, cremsg)
5392 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
5393 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
5395 instanceId := xappConn1.WaitRESTNotification(t, restSubId)
5396 xapp.Logger.Info("TEST: REST notification received e2SubsId=%v", instanceId)
5398 // Wait that subs is cleaned
5399 mainCtrl.wait_subs_clean(t, crereq.RequestId.InstanceId, 10)
5401 xappConn1.TestMsgChanEmpty(t)
5402 e2termConn1.TestMsgChanEmpty(t)
5403 mainCtrl.wait_registry_empty(t, 10)
5406 //-----------------------------------------------------------------------------
5407 // TestRESTUnpackSubscriptionFailureNoTransaction
5410 // +-------+ +---------+ +---------+
5411 // | xapp | | submgr | | e2term |
5412 // +-------+ +---------+ +---------+
5415 // |---------------->| |
5417 // | RESTSubResp | |
5418 // |<----------------| |
5421 // | |------------->|
5423 // | | SubFail | No transaction for the response
5424 // | |<-------------|
5427 // | |------------->|
5429 // | | SubFail | Duplicated action
5430 // | |<-------------|
5431 // | RESTNotif (fail)| |
5432 // |<----------------| |
5434 // | |------------->|
5437 // | |<-------------|
5439 //-----------------------------------------------------------------------------
5440 func TestRESTUnpackSubscriptionFailureNoTransaction(t *testing.T) {
5441 xapp.Logger.Info("TEST: TestRESTUnpackSubscriptionFailureNoTransaction")
5445 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
5446 restSubId := xappConn1.SendRESTSubsReq(t, params)
5448 crereq, cremsg := e2termConn1.RecvSubsReq(t)
5450 mainCtrl.MakeTransactionNil(t, crereq.RequestId.InstanceId)
5452 // No transaction exist for this response which will result resending original request
5453 fparams := &teststube2ap.E2StubSubsFailParams{}
5455 e2termConn1.SendSubsFail(t, fparams, cremsg)
5457 _, cremsg = e2termConn1.RecvSubsReq(t)
5459 xappConn1.ExpectRESTNotification(t, restSubId)
5461 // Subscription already created in E2 Node.
5462 fparams.SetCauseVal(0, 1, 3) // CauseRIC / duplicate-action
5463 e2termConn1.SendSubsFail(t, fparams, cremsg)
5465 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
5466 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
5468 // Resending happens because there no transaction
5469 delreq, delmsg = e2termConn1.RecvSubsDelReq(t)
5470 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
5472 instanceId := xappConn1.WaitRESTNotification(t, restSubId)
5473 xapp.Logger.Info("TEST: REST notification received e2SubsId=%v", instanceId)
5475 // Wait that subs is cleaned
5476 mainCtrl.wait_subs_clean(t, crereq.RequestId.InstanceId, 10)
5478 xappConn1.TestMsgChanEmpty(t)
5479 e2termConn1.TestMsgChanEmpty(t)
5480 mainCtrl.wait_registry_empty(t, 10)
5483 //-----------------------------------------------------------------------------
5484 // TestRESTUnpackSubscriptionDeleteResponseDecodeFail
5487 // +-------+ +---------+ +---------+
5488 // | xapp | | submgr | | e2term |
5489 // +-------+ +---------+ +---------+
5491 // | [SUBS CREATE] |
5494 // | RESTSubDelReq | |
5495 // |---------------->| |
5497 // | RESTSubDelResp | |
5498 // |<----------------| |
5501 // | |------------->|
5503 // | | SubDelResp | ASN.1 decode fails
5504 // | |<-------------|
5507 // | |------------->|
5509 // | | SubDelFail | Subscription does exist any more
5510 // | |<-------------|
5513 //-----------------------------------------------------------------------------
5514 func TestRESTUnpackSubscriptionDeleteResponseDecodeFail(t *testing.T) {
5515 xapp.Logger.Info("TEST: TestRESTUnpackSubscriptionDeleteResponseDecodeFail")
5518 var params *teststube2ap.RESTSubsReqParams = nil
5519 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
5522 xappConn1.SendRESTSubsDelReq(t, &restSubId)
5524 // E2t: Receive 1st SubsDelReq
5525 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
5527 // Decode of this response fails which will result resending original request
5528 e2termConn1.SendInvalidE2Asn1Resp(t, delmsg, xapp.RIC_SUB_DEL_REQ)
5530 // E2t: Receive 2nd SubsDelReq and send SubsDelResp
5531 delreq, delmsg = e2termConn1.RecvSubsDelReq(t)
5533 // Subscription does not exist in in E2 Node.
5534 e2termConn1.SendSubsDelFail(t, delreq, delmsg)
5536 // Wait that subs is cleaned
5537 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
5539 xappConn1.TestMsgChanEmpty(t)
5540 e2termConn1.TestMsgChanEmpty(t)
5541 mainCtrl.wait_registry_empty(t, 10)
5544 //-----------------------------------------------------------------------------
5545 // TestRESTUnpackSubscriptionDeleteResponseUnknownInstanceId
5548 // +-------+ +---------+ +---------+
5549 // | xapp | | submgr | | e2term |
5550 // +-------+ +---------+ +---------+
5552 // | [SUBS CREATE] |
5555 // | RESTSubDelReq | |
5556 // |---------------->| |
5558 // | RESTSubDelResp | |
5559 // |<----------------| |
5562 // | |------------->|
5564 // | | SubDelResp | Unknown instanceId
5565 // | |<-------------|
5568 // | |------------->|
5570 // | | SubDelFail | Subscription does exist any more
5571 // | |<-------------|
5573 //-----------------------------------------------------------------------------
5574 func TestRESTUnpackSubscriptionDeleteResponseUnknownInstanceId(t *testing.T) {
5575 xapp.Logger.Info("TEST: TestRESTUnpackSubscriptionDeleteResponseUnknownInstanceId")
5578 var params *teststube2ap.RESTSubsReqParams = nil
5579 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
5582 xappConn1.SendRESTSubsDelReq(t, &restSubId)
5584 // E2t: Receive 1st SubsDelReq
5585 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
5587 // Unknown instanceId in this response which will result resending original request
5588 delreq.RequestId.InstanceId = 0
5589 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
5591 // E2t: Receive 2nd SubsDelReq
5592 delreq, delmsg = e2termConn1.RecvSubsDelReq(t)
5594 // Subscription does not exist in in E2 Node.
5595 e2termConn1.SendSubsDelFail(t, delreq, delmsg)
5597 // Wait that subs is cleaned
5598 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
5600 xappConn1.TestMsgChanEmpty(t)
5601 e2termConn1.TestMsgChanEmpty(t)
5602 mainCtrl.wait_registry_empty(t, 10)
5605 //-----------------------------------------------------------------------------
5606 // TestRESTUnpackSubscriptionDeleteResponseNoTransaction
5609 // +-------+ +---------+ +---------+
5610 // | xapp | | submgr | | e2term |
5611 // +-------+ +---------+ +---------+
5613 // | [SUBS CREATE] |
5616 // | RESTSubDelReq | |
5617 // |---------------->| |
5619 // | RESTSubDelResp | |
5620 // |<----------------| |
5623 // | |------------->|
5625 // | | SubDelResp | No transaction for the response
5626 // | |<-------------|
5629 // | |------------->|
5631 // | | SubDelFail | Subscription does exist any more
5632 // | |<-------------|
5634 //-----------------------------------------------------------------------------
5635 func TestRESTUnpackSubscriptionDeleteResponseNoTransaction(t *testing.T) {
5636 xapp.Logger.Info("TEST: TestRESTUnpackSubscriptionDeleteResponseNoTransaction")
5639 var params *teststube2ap.RESTSubsReqParams = nil
5640 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
5643 xappConn1.SendRESTSubsDelReq(t, &restSubId)
5645 // E2t: Receive 1st SubsDelReq
5646 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
5648 mainCtrl.MakeTransactionNil(t, e2SubsId)
5650 // No transaction exist for this response which will result resending original request
5651 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
5653 // E2t: Receive 2nd SubsDelReq
5654 delreq, delmsg = e2termConn1.RecvSubsDelReq(t)
5656 // Subscription does not exist in in E2 Node.
5657 e2termConn1.SendSubsDelFail(t, delreq, delmsg)
5659 // Wait that subs is cleaned
5660 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
5662 xappConn1.TestMsgChanEmpty(t)
5663 e2termConn1.TestMsgChanEmpty(t)
5664 mainCtrl.wait_registry_empty(t, 10)
5667 //-----------------------------------------------------------------------------
5668 // TestRESTUnpackSubscriptionDeleteFailureDecodeFail
5671 // +-------+ +---------+ +---------+
5672 // | xapp | | submgr | | e2term |
5673 // +-------+ +---------+ +---------+
5675 // | [SUBS CREATE] |
5678 // | RESTSubDelReq | |
5679 // |---------------->| |
5681 // | RESTSubDelResp | |
5682 // |<----------------| |
5685 // | |------------->|
5687 // | | SubDelFail | ASN.1 decode fails
5688 // | |<-------------|
5691 // | |------------->|
5693 // | | SubDelFail | Subscription does exist any more
5694 // | |<-------------|
5696 //-----------------------------------------------------------------------------
5697 func TestRESTUnpackSubscriptionDeleteFailureDecodeFail(t *testing.T) {
5698 xapp.Logger.Info("TEST: TestRESTUnpackSubscriptionDeleteFailureDecodeFail")
5701 var params *teststube2ap.RESTSubsReqParams = nil
5702 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
5705 xappConn1.SendRESTSubsDelReq(t, &restSubId)
5707 // E2t: Receive 1st SubsDelReq
5708 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
5710 // Decode of this response fails which will result resending original request
5711 e2termConn1.SendInvalidE2Asn1Resp(t, delmsg, xapp.RIC_SUB_DEL_FAILURE)
5713 // E2t: Receive 2nd SubsDelReq and send SubsDelResp
5714 delreq, delmsg = e2termConn1.RecvSubsDelReq(t)
5716 // Subscription does not exist in in E2 Node.
5717 e2termConn1.SendSubsDelFail(t, delreq, delmsg)
5719 // Wait that subs is cleaned
5720 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
5722 xappConn1.TestMsgChanEmpty(t)
5723 e2termConn1.TestMsgChanEmpty(t)
5724 mainCtrl.wait_registry_empty(t, 10)
5727 //-----------------------------------------------------------------------------
5728 // TestRESTUnpackSubscriptionDeleteailureUnknownInstanceId
5731 // +-------+ +---------+ +---------+
5732 // | xapp | | submgr | | e2term |
5733 // +-------+ +---------+ +---------+
5735 // | [SUBS CREATE] |
5738 // | RESTSubDelReq | |
5739 // |---------------->| |
5741 // | RESTSubDelResp | |
5742 // |<----------------| |
5745 // | |------------->|
5747 // | | SubDelFail | Unknown instanceId
5748 // | |<-------------|
5751 // | |------------->|
5753 // | | SubDelFail | Subscription does exist any more
5754 // | |<-------------|
5756 //-----------------------------------------------------------------------------
5757 func TestRESTUnpackSubscriptionDeleteailureUnknownInstanceId(t *testing.T) {
5758 xapp.Logger.Info("TEST: TestRESTUnpackSubscriptionDeleteailureUnknownInstanceId")
5761 var params *teststube2ap.RESTSubsReqParams = nil
5762 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
5765 xappConn1.SendRESTSubsDelReq(t, &restSubId)
5767 // E2t: Receive 1st SubsDelReq
5768 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
5770 // Unknown instanceId in this response which will result resending original request
5771 delreq.RequestId.InstanceId = 0
5772 e2termConn1.SendSubsDelFail(t, delreq, delmsg)
5774 // E2t: Receive 2nd SubsDelReq
5775 delreq, delmsg = e2termConn1.RecvSubsDelReq(t)
5777 // Subscription does not exist in in E2 Node.
5778 e2termConn1.SendSubsDelFail(t, delreq, delmsg)
5780 // Wait that subs is cleaned
5781 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
5783 xappConn1.TestMsgChanEmpty(t)
5784 e2termConn1.TestMsgChanEmpty(t)
5785 mainCtrl.wait_registry_empty(t, 10)
5788 //-----------------------------------------------------------------------------
5789 // TestRESTUnpackSubscriptionDeleteFailureNoTransaction
5792 // +-------+ +---------+ +---------+
5793 // | xapp | | submgr | | e2term |
5794 // +-------+ +---------+ +---------+
5796 // | [SUBS CREATE] |
5799 // | RESTSubDelReq | |
5800 // |---------------->| |
5802 // | RESTSubDelResp | |
5803 // |<----------------| |
5806 // | |------------->|
5808 // | | SubDelFail | No transaction for the response
5809 // | |<-------------|
5812 // | |------------->|
5814 // | | SubDelFail | Subscription does exist any more
5815 // | |<-------------|
5817 //-----------------------------------------------------------------------------
5818 func TestRESTUnpackSubscriptionDeleteFailureNoTransaction(t *testing.T) {
5819 xapp.Logger.Info("TEST: TestRESTUnpackSubscriptionDeleteFailureNoTransaction")
5822 var params *teststube2ap.RESTSubsReqParams = nil
5823 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
5826 xappConn1.SendRESTSubsDelReq(t, &restSubId)
5828 // E2t: Receive 1st SubsDelReq
5829 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
5831 mainCtrl.MakeTransactionNil(t, e2SubsId)
5833 // No transaction exist for this response which will result resending original request
5834 e2termConn1.SendSubsDelFail(t, delreq, delmsg)
5836 // E2t: Receive 2nd SubsDelReq
5837 delreq, delmsg = e2termConn1.RecvSubsDelReq(t)
5839 // Subscription does not exist in in E2 Node.
5840 e2termConn1.SendSubsDelFail(t, delreq, delmsg)
5842 // Wait that subs is cleaned
5843 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
5845 xappConn1.TestMsgChanEmpty(t)
5846 e2termConn1.TestMsgChanEmpty(t)
5847 mainCtrl.wait_registry_empty(t, 10)
5850 //-----------------------------------------------------------------------------
5851 // TestRESTSubReqFailAsn1PackSubReqError
5854 // +-------+ +---------+ +---------+
5855 // | xapp | | submgr | | e2term |
5856 // +-------+ +---------+ +---------+
5859 // |---------------->| |
5861 // | RESTSubResp | |
5862 // |<----------------| |
5864 // | ASN.1 encode fails |
5867 // | |------------->|
5870 // | |<-------------|
5874 // |<----------------| |
5876 // | [SUBS DELETE] |
5879 //-----------------------------------------------------------------------------
5880 func TestRESTSubReqFailAsn1PackSubReqError(t *testing.T) {
5882 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
5883 Counter{cRestSubReqFromXapp, 1},
5884 Counter{cRestSubRespToXapp, 1},
5885 Counter{cSubDelReqToE2, 1},
5886 Counter{cSubDelFailFromE2, 1},
5887 Counter{cRestSubFailNotifToXapp, 1},
5892 var params *teststube2ap.RESTSubsReqParams = nil
5893 params = xappConn1.GetRESTSubsReqReportParams(subReqCount)
5894 e2ap_wrapper.AllowE2apToProcess(e2ap_wrapper.SUB_REQ, false)
5897 restSubId := xappConn1.SendRESTSubsReq(t, params)
5898 xapp.Logger.Info("Send REST subscriber request for subscriberId : %v", restSubId)
5900 // E2t: Receive SubsDelReq
5901 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
5902 xappConn1.ExpectRESTNotification(t, restSubId)
5904 // Subscription does not exist in in E2 Node.
5905 e2termConn1.SendSubsDelFail(t, delreq, delmsg)
5907 e2SubsId := xappConn1.WaitRESTNotification(t, restSubId)
5908 xapp.Logger.Info("TEST: REST notification received e2SubsId=%v", e2SubsId)
5910 e2ap_wrapper.AllowE2apToProcess(e2ap_wrapper.SUB_REQ, true)
5911 // Wait that subs is cleaned
5912 waitSubsCleanup(t, e2SubsId, 10)
5913 mainCtrl.VerifyCounterValues(t)
5916 ////////////////////////////////////////////////////////////////////////////////////
5917 // Services for UT cases
5918 ////////////////////////////////////////////////////////////////////////////////////
5919 const subReqCount int = 1
5920 const host string = "localhost"
5922 func createSubscription(t *testing.T, fromXappConn *teststube2ap.E2Stub, toE2termConn *teststube2ap.E2Stub, params *teststube2ap.RESTSubsReqParams) (string, uint32) {
5924 params = fromXappConn.GetRESTSubsReqReportParams(subReqCount)
5926 restSubId := fromXappConn.SendRESTSubsReq(t, params)
5927 xapp.Logger.Info("Send REST subscriber request for subscriberId : %v", restSubId)
5929 crereq1, cremsg1 := toE2termConn.RecvSubsReq(t)
5930 fromXappConn.ExpectRESTNotification(t, restSubId)
5931 toE2termConn.SendSubsResp(t, crereq1, cremsg1)
5932 e2SubsId := fromXappConn.WaitRESTNotification(t, restSubId)
5933 xapp.Logger.Info("REST notification received e2SubsId=%v", e2SubsId)
5935 return restSubId, e2SubsId
5938 func createXapp2MergedSubscription(t *testing.T, meid string) (string, uint32) {
5940 params := xappConn2.GetRESTSubsReqReportParams(subReqCount)
5942 params.SetMeid(meid)
5944 xapp.Subscription.SetResponseCB(xappConn2.SubscriptionRespHandler)
5945 restSubId := xappConn2.SendRESTSubsReq(t, params)
5946 xappConn2.ExpectRESTNotification(t, restSubId)
5947 xapp.Logger.Info("Send REST subscriber request for subscriberId : %v", restSubId)
5948 e2SubsId := xappConn2.WaitRESTNotification(t, restSubId)
5949 xapp.Logger.Info("REST notification received e2SubsId=%v", e2SubsId)
5951 return restSubId, e2SubsId
5954 func createXapp1PolicySubscription(t *testing.T) (string, uint32) {
5955 params := xappConn1.GetRESTSubsReqPolicyParams(subReqCount)
5956 restSubId := xappConn1.SendRESTSubsReq(t, params)
5957 xapp.Logger.Info("Send REST Policy subscriber request for subscriberId : %v", restSubId)
5959 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
5960 xappConn1.ExpectRESTNotification(t, restSubId)
5961 e2termConn1.SendSubsResp(t, crereq1, cremsg1)
5962 e2SubsId := xappConn1.WaitRESTNotification(t, restSubId)
5963 xapp.Logger.Info("REST notification received e2SubsId=%v", e2SubsId)
5965 return restSubId, e2SubsId
5968 func createXapp1ReportSubscriptionE2Fail(t *testing.T) (string, uint32) {
5969 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
5970 restSubId := xappConn1.SendRESTSubsReq(t, params)
5972 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
5973 fparams1 := &teststube2ap.E2StubSubsFailParams{}
5974 fparams1.Set(crereq1)
5975 e2termConn1.SendSubsFail(t, fparams1, cremsg1)
5977 delreq1, delmsg1 := e2termConn1.RecvSubsDelReq(t)
5978 xappConn1.ExpectRESTNotification(t, restSubId)
5979 e2termConn1.SendSubsDelResp(t, delreq1, delmsg1)
5980 e2SubsId := xappConn1.WaitRESTNotification(t, restSubId)
5981 xapp.Logger.Info("TEST: REST notification received e2SubsId=%v", e2SubsId)
5983 return restSubId, e2SubsId
5986 func deleteSubscription(t *testing.T, fromXappConn *teststube2ap.E2Stub, toE2termConn *teststube2ap.E2Stub, restSubId *string) {
5987 fromXappConn.SendRESTSubsDelReq(t, restSubId)
5988 delreq, delmsg := toE2termConn.RecvSubsDelReq(t)
5989 toE2termConn.SendSubsDelResp(t, delreq, delmsg)
5992 func deleteXapp1Subscription(t *testing.T, restSubId *string) {
5993 xappConn1.SendRESTSubsDelReq(t, restSubId)
5994 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
5995 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
5998 func deleteXapp2Subscription(t *testing.T, restSubId *string) {
5999 xappConn2.SendRESTSubsDelReq(t, restSubId)
6000 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
6001 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
6004 func queryXappSubscription(t *testing.T, e2SubsId int64, meid string, endpoint []string) {
6005 resp, _ := xapp.Subscription.QuerySubscriptions()
6006 assert.Equal(t, resp[0].SubscriptionID, e2SubsId)
6007 assert.Equal(t, resp[0].Meid, meid)
6008 assert.Equal(t, resp[0].ClientEndpoint, endpoint)
6011 func waitSubsCleanup(t *testing.T, e2SubsId uint32, timeout int) {
6012 //Wait that subs is cleaned
6013 mainCtrl.wait_subs_clean(t, e2SubsId, timeout)
6015 xappConn1.TestMsgChanEmpty(t)
6016 xappConn2.TestMsgChanEmpty(t)
6017 e2termConn1.TestMsgChanEmpty(t)
6018 mainCtrl.wait_registry_empty(t, timeout)
6021 func sendAndReceiveMultipleE2SubReqs(t *testing.T, count int, fromXappConn *teststube2ap.E2Stub, toE2termConn *teststube2ap.E2Stub, restSubId string) []uint32 {
6023 var e2SubsId []uint32
6025 for i := 0; i < count; i++ {
6026 xapp.Logger.Info("TEST: %d ===================================== BEGIN CRE ============================================", i+1)
6027 crereq, cremsg := toE2termConn.RecvSubsReq(t)
6028 fromXappConn.ExpectRESTNotification(t, restSubId)
6029 toE2termConn.SendSubsResp(t, crereq, cremsg)
6030 instanceId := fromXappConn.WaitRESTNotification(t, restSubId)
6031 e2SubsId = append(e2SubsId, instanceId)
6032 xapp.Logger.Info("TEST: %v", e2SubsId)
6033 xapp.Logger.Info("TEST: %d ===================================== END CRE ============================================", i+1)
6034 <-time.After(100 * time.Millisecond)
6039 func sendAndReceiveMultipleE2DelReqs(t *testing.T, e2SubsIds []uint32, toE2termConn *teststube2ap.E2Stub) {
6041 for i := 0; i < len(e2SubsIds); i++ {
6042 xapp.Logger.Info("TEST: %d ===================================== BEGIN DEL ============================================", i+1)
6043 delreq, delmsg := toE2termConn.RecvSubsDelReq(t)
6044 toE2termConn.SendSubsDelResp(t, delreq, delmsg)
6045 <-time.After(1 * time.Second)
6046 xapp.Logger.Info("TEST: %d ===================================== END DEL ============================================", i+1)
6047 <-time.After(100 * time.Millisecond)
6050 // Wait that subs is cleaned
6051 for i := 0; i < len(e2SubsIds); i++ {
6052 mainCtrl.wait_subs_clean(t, e2SubsIds[i], 10)