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{cRouteCreateFail, 1},
2406 Counter{cRestSubFailToXapp, 1},
2407 Counter{cRestSubDelReqFromXapp, 1},
2408 Counter{cRestSubDelRespToXapp, 1},
2411 const subReqCount int = 1
2412 // Add delay for rtmgt HTTP handling so that HTTP response is received before notify on XAPP side
2413 waiter := rtmgrHttp.AllocNextSleep(50, false)
2414 newSubsId := mainCtrl.get_registry_next_subid(t)
2417 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
2418 restSubId := xappConn1.SendRESTSubsReq(t, params)
2419 xappConn1.ExpectRESTNotification(t, restSubId)
2420 waiter.WaitResult(t)
2422 e2SubsId := xappConn1.WaitRESTNotification(t, restSubId)
2423 xapp.Logger.Info("TEST: REST notification received e2SubsId=%v", e2SubsId)
2426 xappConn1.SendRESTSubsDelReq(t, &restSubId)
2428 // Wait that subs is cleaned
2429 mainCtrl.wait_subs_clean(t, newSubsId, 10)
2430 waitSubsCleanup(t, e2SubsId, 10)
2431 mainCtrl.VerifyCounterValues(t)
2434 func TestRESTSubReqAndRouteUpdateNok(t *testing.T) {
2435 CaseBegin("TestSubReqAndRouteUpdateNok")
2437 //Init counter check
2438 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
2439 Counter{cRestSubReqFromXapp, 2},
2440 Counter{cSubReqToE2, 1},
2441 Counter{cSubRespFromE2, 1},
2442 Counter{cRestSubRespToXapp, 1},
2443 Counter{cRestSubFailToXapp, 1},
2444 Counter{cRouteCreateUpdateFail, 1},
2445 Counter{cRestSubDelReqFromXapp, 1},
2446 Counter{cSubDelReqToE2, 1},
2447 Counter{cSubDelRespFromE2, 1},
2448 Counter{cRestSubDelRespToXapp, 1},
2451 var params *teststube2ap.RESTSubsReqParams = nil
2454 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
2456 queryXappSubscription(t, int64(e2SubsId), "RAN_NAME_1", []string{"localhost:13560"})
2458 // xapp2 ROUTE creation shall fail with 400 from rtmgr -> submgr
2459 waiter := rtmgrHttp.AllocNextEvent(false)
2460 newSubsId := mainCtrl.get_registry_next_subid(t)
2461 params = xappConn2.GetRESTSubsReqReportParams(subReqCount)
2462 params.SetMeid("RAN_NAME_1")
2463 restSubId2 := xappConn2.SendRESTSubsReq(t, params)
2464 xapp.Logger.Info("Send REST subscriber request for second subscriber : %v", restSubId2)
2465 xappConn2.ExpectRESTNotification(t, restSubId2)
2466 waiter.WaitResult(t)
2467 // e2SubsId2 := xappConn2.WaitRESTNotification(t, restSubId2) - TOD: missing delete
2468 xappConn2.WaitRESTNotification(t, restSubId2)
2470 queryXappSubscription(t, int64(e2SubsId), "RAN_NAME_1", []string{"localhost:13560"})
2472 deleteSubscription(t, xappConn1, e2termConn1, &restSubId)
2474 mainCtrl.wait_subs_clean(t, newSubsId, 10)
2475 //Wait that subs is cleaned
2476 waitSubsCleanup(t, e2SubsId, 10)
2478 mainCtrl.VerifyCounterValues(t)
2481 func TestRESTSubDelReqAndRouteDeleteNok(t *testing.T) {
2482 CaseBegin("TestRESTSubDelReqAndRouteDeleteNok")
2484 // Init counter check
2485 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
2486 Counter{cRestSubReqFromXapp, 1},
2487 Counter{cSubReqToE2, 1},
2488 Counter{cSubRespFromE2, 1},
2489 Counter{cRestSubRespToXapp, 1},
2490 Counter{cRestSubDelReqFromXapp, 1},
2491 Counter{cRouteDeleteFail, 1},
2492 Counter{cSubDelReqToE2, 1},
2493 Counter{cSubDelRespFromE2, 1},
2494 Counter{cRestSubDelRespToXapp, 1},
2497 var params *teststube2ap.RESTSubsReqParams = nil
2500 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
2502 queryXappSubscription(t, int64(e2SubsId), "RAN_NAME_1", []string{"localhost:13560"})
2504 waiter := rtmgrHttp.AllocNextEvent(false)
2505 xappConn1.SendRESTSubsDelReq(t, &restSubId)
2506 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
2507 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
2508 waiter.WaitResult(t)
2510 waitSubsCleanup(t, e2SubsId, 10)
2512 mainCtrl.VerifyCounterValues(t)
2515 func TestRESTSubMergeDelAndRouteUpdateNok(t *testing.T) {
2516 CaseBegin("TestRESTSubMergeDelAndRouteUpdateNok")
2518 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
2519 Counter{cRestSubReqFromXapp, 2},
2520 Counter{cSubReqToE2, 1},
2521 Counter{cSubRespFromE2, 1},
2522 Counter{cRestSubRespToXapp, 2},
2523 Counter{cRestSubDelReqFromXapp, 2},
2524 Counter{cRouteDeleteUpdateFail, 1},
2525 Counter{cSubDelReqToE2, 1},
2526 Counter{cSubDelRespFromE2, 1},
2527 Counter{cRestSubDelRespToXapp, 2},
2530 var params *teststube2ap.RESTSubsReqParams = nil
2533 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
2535 queryXappSubscription(t, int64(e2SubsId), "RAN_NAME_1", []string{"localhost:13560"})
2536 restSubId2, e2SubsId2 := createXapp2MergedSubscription(t, "RAN_NAME_1")
2538 queryXappSubscription(t, int64(e2SubsId), "RAN_NAME_1", []string{"localhost:13560", "localhost:13660"})
2540 //Del1, this shall fail on rtmgr side
2541 waiter := rtmgrHttp.AllocNextEvent(false)
2542 xappConn1.SendRESTSubsDelReq(t, &restSubId)
2543 waiter.WaitResult(t)
2545 queryXappSubscription(t, int64(e2SubsId), "RAN_NAME_1", []string{"localhost:13660"})
2548 deleteXapp2Subscription(t, &restSubId2)
2550 waitSubsCleanup(t, e2SubsId2, 10)
2552 mainCtrl.VerifyCounterValues(t)
2555 //-----------------------------------------------------------------------------
2556 // TestRESTSubReqRetransmission
2559 // +-------+ +---------+ +---------+
2560 // | xapp | | submgr | | e2term |
2561 // +-------+ +---------+ +---------+
2563 // | RESTSubReq1 | |
2564 // |---------------->| |
2566 // | RESTSubResp | |
2567 // |<----------------| |
2569 // | |------------->|
2571 // | RESTSubReq2 | |
2573 // |---------------->| |
2576 // | |------------->|
2577 // | RESTSubResp2 | |
2578 // |<----------------| |
2580 // | |<-------------|
2582 // |<----------------| |
2584 // | |<-------------|
2586 // |<----------------| |
2588 // | [SUBS DELETE] |
2591 //-----------------------------------------------------------------------------
2593 func TestRESTSubReqRetransmission(t *testing.T) {
2594 CaseBegin("TestRESTSubReqRetransmission")
2596 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
2597 Counter{cRestSubReqFromXapp, 2},
2598 Counter{cSubReqToE2, 2},
2599 Counter{cSubRespFromE2, 2},
2600 Counter{cRestSubRespToXapp, 2},
2601 Counter{cRestSubDelReqFromXapp, 2},
2602 Counter{cSubDelReqToE2, 2},
2603 Counter{cSubDelRespFromE2, 2},
2604 Counter{cRestSubDelRespToXapp, 2},
2606 // Retry/duplicate will get the same way as the first request. Submgr cannot detect duplicate RESTRequests
2607 // Contianed duplicate messages from same xapp will not be merged. Here we use xappConn2 to simulate sending
2608 // second request from same xapp as doing it from xappConn1 would not work as notification would not be received
2611 const subReqCount int = 1
2613 // In order to force both XAPP's to create their own subscriptions, force rtmgr to block a while so that 2nd create
2614 // gets into execution before the rtmgrg responds for the first one.
2615 waiter := rtmgrHttp.AllocNextSleep(10, true)
2616 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
2617 restSubId1 := xappConn1.SendRESTSubsReq(t, params)
2618 restSubId2 := xappConn2.SendRESTSubsReq(t, params)
2620 waiter.WaitResult(t)
2622 xappConn1.WaitListedRestNotifications(t, []string{restSubId1, restSubId2})
2624 // Depending one goroutine scheduling order, we cannot say for sure which xapp reaches e2term first. Thus
2625 // the order is not significant he6re.
2626 crereq, cremsg := e2termConn1.RecvSubsReq(t)
2627 e2termConn1.SendSubsResp(t, crereq, cremsg)
2628 crereq, cremsg = e2termConn1.RecvSubsReq(t)
2629 e2termConn1.SendSubsResp(t, crereq, cremsg)
2631 e2SubsIdA := <-xappConn1.ListedRESTNotifications
2632 xapp.Logger.Info("TEST: 1.st XAPP notification received e2SubsId=%v", e2SubsIdA)
2633 e2SubsIdB := <-xappConn1.ListedRESTNotifications
2634 xapp.Logger.Info("TEST: 2.nd XAPP notification received e2SubsId=%v", e2SubsIdB)
2637 xappConn1.SendRESTSubsDelReq(t, &restSubId1)
2638 delreq1, delmsg1 := e2termConn1.RecvSubsDelReq(t)
2639 e2termConn1.SendSubsDelResp(t, delreq1, delmsg1)
2642 xappConn2.SendRESTSubsDelReq(t, &restSubId2)
2643 delreq2, delmsg2 := e2termConn1.RecvSubsDelReq(t)
2644 e2termConn1.SendSubsDelResp(t, delreq2, delmsg2)
2646 mainCtrl.wait_multi_subs_clean(t, []uint32{e2SubsIdA.E2SubsId, e2SubsIdB.E2SubsId}, 10)
2648 waitSubsCleanup(t, e2SubsIdB.E2SubsId, 10)
2650 mainCtrl.VerifyCounterValues(t)
2653 func TestRESTSubDelReqRetransmission(t *testing.T) {
2654 CaseBegin("TestRESTSubDelReqRetransmission")
2656 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
2657 Counter{cRestSubReqFromXapp, 1},
2658 Counter{cSubReqToE2, 1},
2659 Counter{cSubRespFromE2, 1},
2660 Counter{cRestSubRespToXapp, 1},
2661 Counter{cRestSubDelReqFromXapp, 2},
2662 Counter{cSubDelReqToE2, 1},
2663 Counter{cSubDelRespFromE2, 1},
2664 Counter{cRestSubDelRespToXapp, 1},
2667 var params *teststube2ap.RESTSubsReqParams = nil
2670 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
2672 queryXappSubscription(t, int64(e2SubsId), "RAN_NAME_1", []string{"localhost:13560"})
2675 xappConn1.SendRESTSubsDelReq(t, &restSubId)
2676 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
2678 seqBef := mainCtrl.get_msgcounter(t)
2679 xappConn1.SendRESTSubsDelReq(t, &restSubId)
2680 mainCtrl.wait_msgcounter_change(t, seqBef, 10)
2682 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
2684 waitSubsCleanup(t, e2SubsId, 10)
2686 mainCtrl.VerifyCounterValues(t)
2689 //-----------------------------------------------------------------------------
2690 // TestRESTSubReqDelReq
2693 // +-------+ +---------+ +---------+
2694 // | xapp | | submgr | | e2term |
2695 // +-------+ +---------+ +---------+
2698 // |---------------->| |
2700 // | RESTSubResp | |
2701 // |<----------------| |
2703 // | |------------->|
2704 // | RESTSubDelReq | |
2705 // |---------------->| |
2706 // | RESTSubDelResp | |
2708 // |<----------------| |
2710 // | |<-------------|
2712 // |<----------------| |
2714 // | [SUBS DELETE] |
2717 //-----------------------------------------------------------------------------
2718 func TestRESTSubReqDelReq(t *testing.T) {
2719 CaseBegin("TestRESTSubReqDelReq")
2721 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
2722 Counter{cRestSubReqFromXapp, 1},
2723 Counter{cSubReqToE2, 1},
2724 Counter{cSubRespFromE2, 1},
2725 Counter{cRestSubRespToXapp, 1},
2726 Counter{cRestSubDelReqFromXapp, 2},
2727 Counter{cSubDelReqToE2, 1},
2728 Counter{cSubDelRespFromE2, 1},
2729 Counter{cRestSubDelRespToXapp, 1},
2732 const subReqCount int = 1
2735 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
2736 restSubId := xappConn1.SendRESTSubsReq(t, params)
2738 // Del. This will fail as processing of the subscription
2739 // is still ongoing in submgr. Deletion is not allowed before
2740 // subscription creation has been completed.
2741 xappConn1.SendRESTSubsDelReq(t, &restSubId)
2742 crereq, cremsg := e2termConn1.RecvSubsReq(t)
2743 xappConn1.ExpectRESTNotification(t, restSubId)
2744 e2termConn1.SendSubsResp(t, crereq, cremsg)
2745 e2SubsId := xappConn1.WaitRESTNotification(t, restSubId)
2748 xappConn1.SendRESTSubsDelReq(t, &restSubId)
2750 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
2751 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
2753 // Wait that subs is cleaned
2754 waitSubsCleanup(t, e2SubsId, 10)
2755 mainCtrl.VerifyCounterValues(t)
2759 func TestRESTSubDelReqCollision(t *testing.T) {
2760 CaseBegin("TestRESTSubDelReqCollision - not relevant for REST API")
2763 func TestRESTSubReqAndSubDelOkTwoParallel(t *testing.T) {
2764 CaseBegin("TestRESTSubReqAndSubDelOkTwoParallel")
2766 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
2767 Counter{cRestSubReqFromXapp, 2},
2768 Counter{cSubReqToE2, 2},
2769 Counter{cSubRespFromE2, 2},
2770 Counter{cRestSubRespToXapp, 2},
2771 Counter{cRestSubDelReqFromXapp, 2},
2772 Counter{cSubDelReqToE2, 2},
2773 Counter{cSubDelRespFromE2, 2},
2774 Counter{cRestSubDelRespToXapp, 2},
2778 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
2779 restSubId1 := xappConn1.SendRESTSubsReq(t, params)
2780 xapp.Logger.Info("Send 1st REST subscriber request for subscriberId : %v", restSubId1)
2783 params = xappConn2.GetRESTSubsReqReportParams(subReqCount)
2784 restSubId2 := xappConn2.SendRESTSubsReq(t, params)
2785 xapp.Logger.Info("Send 2nd REST subscriber request for subscriberId : %v", restSubId2)
2787 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
2788 crereq2, cremsg2 := e2termConn1.RecvSubsReq(t)
2790 //XappConn1 receives both of the responses
2791 xappConn1.WaitListedRestNotifications(t, []string{restSubId1, restSubId2})
2794 e2termConn1.SendSubsResp(t, crereq1, cremsg1)
2796 e2termConn1.SendSubsResp(t, crereq2, cremsg2)
2798 e2SubsIdA := <-xappConn1.ListedRESTNotifications
2799 xapp.Logger.Info("TEST: 1.st XAPP notification received e2SubsId=%v", e2SubsIdA)
2800 e2SubsIdB := <-xappConn1.ListedRESTNotifications
2801 xapp.Logger.Info("TEST: 2.nd XAPP notification received e2SubsId=%v", e2SubsIdB)
2804 deleteSubscription(t, xappConn1, e2termConn1, &restSubId1)
2806 deleteSubscription(t, xappConn2, e2termConn1, &restSubId2)
2808 //Wait that subs is cleaned
2809 mainCtrl.wait_subs_clean(t, e2SubsIdA.E2SubsId, 10)
2810 waitSubsCleanup(t, e2SubsIdB.E2SubsId, 10)
2812 mainCtrl.VerifyCounterValues(t)
2816 func TestRESTSameSubsDiffRan(t *testing.T) {
2817 CaseBegin("TestRESTSameSubsDiffRan")
2819 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
2820 Counter{cRestSubReqFromXapp, 2},
2821 Counter{cSubReqToE2, 2},
2822 Counter{cSubRespFromE2, 2},
2823 Counter{cRestSubRespToXapp, 2},
2824 Counter{cRestSubDelReqFromXapp, 2},
2825 Counter{cSubDelReqToE2, 2},
2826 Counter{cSubDelRespFromE2, 2},
2827 Counter{cRestSubDelRespToXapp, 2},
2830 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
2831 restSubId1, e2SubsId1 := createSubscription(t, xappConn1, e2termConn1, params)
2832 xapp.Logger.Info("Send 1st REST subscriber request for subscriberId : %v", restSubId1)
2834 params = xappConn1.GetRESTSubsReqReportParams(subReqCount)
2835 params.SetMeid("RAN_NAME_2")
2836 restSubId2, e2SubsId2 := createSubscription(t, xappConn1, e2termConn1, params)
2837 xapp.Logger.Info("Send 2nd REST subscriber request for subscriberId : %v", restSubId2)
2840 deleteSubscription(t, xappConn1, e2termConn1, &restSubId1)
2842 deleteSubscription(t, xappConn1, e2termConn1, &restSubId2)
2844 //Wait that subs is cleaned
2845 mainCtrl.wait_subs_clean(t, e2SubsId1, 10)
2846 waitSubsCleanup(t, e2SubsId2, 10)
2848 mainCtrl.VerifyCounterValues(t)
2852 func TestRESTSubReqRetryInSubmgr(t *testing.T) {
2853 CaseBegin("TestRESTSubReqRetryInSubmgr start")
2855 // Init counter check
2856 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
2857 Counter{cRestSubReqFromXapp, 1},
2858 Counter{cSubReqToE2, 1},
2859 Counter{cSubReReqToE2, 1},
2860 Counter{cSubRespFromE2, 1},
2861 Counter{cRestSubRespToXapp, 1},
2862 Counter{cRestSubDelReqFromXapp, 1},
2863 Counter{cSubDelReqToE2, 1},
2864 Counter{cSubDelRespFromE2, 1},
2865 Counter{cRestSubDelRespToXapp, 1},
2868 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
2869 restSubId := xappConn1.SendRESTSubsReq(t, params)
2871 xapp.Logger.Info("Send REST subscriber request for subscriber : %v", restSubId)
2873 // Catch the first message and ignore it
2874 crereq, cremsg := e2termConn1.RecvSubsReq(t)
2875 xapp.Logger.Info("Ignore REST subscriber request for subscriber : %v", restSubId)
2877 // The second request is being handled normally
2878 crereq, cremsg = e2termConn1.RecvSubsReq(t)
2879 xappConn1.ExpectRESTNotification(t, restSubId)
2880 e2termConn1.SendSubsResp(t, crereq, cremsg)
2881 e2SubsId := xappConn1.WaitRESTNotification(t, restSubId)
2883 queryXappSubscription(t, int64(e2SubsId), "RAN_NAME_1", []string{"localhost:13560"})
2885 deleteSubscription(t, xappConn1, e2termConn1, &restSubId)
2887 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
2888 //Wait that subs is cleaned
2889 waitSubsCleanup(t, e2SubsId, 10)
2891 mainCtrl.VerifyCounterValues(t)
2895 //-----------------------------------------------------------------------------
2896 // TestRESTSubReqTwoRetriesNoRespSubDelRespInSubmgr
2899 // +-------+ +---------+ +---------+
2900 // | xapp | | submgr | | e2term |
2901 // +-------+ +---------+ +---------+
2904 // |---------------->| |
2906 // | RESTSubResp | |
2907 // |<----------------| |
2909 // | |------------->|
2913 // | |------------->|
2916 // | |------------->|
2920 // | |------------->|
2924 // | |<-------------|
2927 // |<----------------| |
2929 // | [SUBS DELETE] |
2932 //-----------------------------------------------------------------------------
2933 func TestRESTSubReqRetryNoRespSubDelRespInSubmgr(t *testing.T) {
2934 CaseBegin("TestRESTSubReqTwoRetriesNoRespSubDelRespInSubmgr start")
2936 // Init counter check
2937 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
2938 Counter{cRestSubReqFromXapp, 1},
2939 Counter{cSubReqToE2, 1},
2940 Counter{cSubReReqToE2, 1},
2941 Counter{cSubReqTimerExpiry, 2},
2942 Counter{cSubDelReqToE2, 1},
2943 Counter{cSubDelRespFromE2, 1},
2946 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
2947 restSubId := xappConn1.SendRESTSubsReq(t, params)
2948 xapp.Logger.Info("Send REST subscriber request for subscriber : %v", restSubId)
2950 e2termConn1.RecvSubsReq(t)
2951 xapp.Logger.Info("Ignore 1st REST subscriber request for subscriber : %v", restSubId)
2953 e2termConn1.RecvSubsReq(t)
2954 xapp.Logger.Info("Ignore 2nd REST subscriber request for subscriber : %v", restSubId)
2956 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
2957 xappConn1.ExpectRESTNotification(t, restSubId)
2958 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
2959 // e2SubsId := xappConn1.WaitRESTNotification(t, restSubId) - TODO: Should we delete this?
2960 xappConn1.WaitRESTNotification(t, restSubId)
2962 // Wait that subs is cleaned
2963 waitSubsCleanup(t, delreq.RequestId.InstanceId, 10)
2965 mainCtrl.VerifyCounterValues(t)
2968 func TestREST2eTermNotRespondingToSubReq(t *testing.T) {
2969 CaseBegin("TestREST2eTermNotRespondingToSubReq start")
2971 // Init counter check
2972 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
2973 Counter{cRestSubReqFromXapp, 1},
2974 Counter{cSubReqToE2, 1},
2975 Counter{cSubReReqToE2, 1},
2976 Counter{cSubReqTimerExpiry, 2},
2977 Counter{cSubDelReqToE2, 1},
2978 Counter{cSubDelReqTimerExpiry, 2},
2981 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
2982 restSubId := xappConn1.SendRESTSubsReq(t, params)
2983 xapp.Logger.Info("Send REST subscriber request for subscriber : %v", restSubId)
2985 e2termConn1.RecvSubsReq(t)
2986 xapp.Logger.Info("Ignore 1st REST subscriber request for subscriber : %v", restSubId)
2988 e2termConn1.RecvSubsReq(t)
2989 xapp.Logger.Info("Ignore 2nd REST subscriber request for subscriber : %v", restSubId)
2991 e2termConn1.RecvSubsDelReq(t)
2992 xapp.Logger.Info("Ignore 1st INTERNAL delete request for subscriber : %v", restSubId)
2994 xappConn1.ExpectRESTNotification(t, restSubId)
2995 e2termConn1.RecvSubsDelReq(t)
2996 xapp.Logger.Info("Ignore 2nd INTERNAL delete request for subscriber : %v", restSubId)
2998 e2SubsId := xappConn1.WaitRESTNotification(t, restSubId)
3000 waitSubsCleanup(t, e2SubsId, 10)
3002 mainCtrl.VerifyCounterValues(t)
3006 //-----------------------------------------------------------------------------
3007 // TestRESTSubReqTwoRetriesNoRespSubDelRespInSubmgr
3010 // +-------+ +---------+ +---------+
3011 // | xapp | | submgr | | e2term |
3012 // +-------+ +---------+ +---------+
3015 // |---------------->| |
3017 // | RESTSubResp | |
3018 // |<----------------| |
3020 // | |------------->|
3024 // | |------------->|
3027 // | |------------->|
3031 // | |------------->|
3035 // | |<-------------|
3038 // |<----------------| |
3040 // | [SUBS DELETE] |
3043 //-----------------------------------------------------------------------------
3044 func TestRESTSubReqTwoRetriesNoRespAtAllInSubmgr(t *testing.T) {
3045 CaseBegin("TestRESTSubReqTwoRetriesNoRespAtAllInSubmgr start")
3047 // Init counter check
3048 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
3049 Counter{cRestSubReqFromXapp, 1},
3050 Counter{cSubReqToE2, 1},
3051 Counter{cSubReReqToE2, 1},
3052 Counter{cSubReqTimerExpiry, 2},
3053 Counter{cSubDelReqToE2, 1},
3054 Counter{cSubDelReReqToE2, 1},
3055 Counter{cSubDelReqTimerExpiry, 2},
3058 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
3059 restSubId := xappConn1.SendRESTSubsReq(t, params)
3060 xapp.Logger.Info("Send REST subscriber request for subscriber : %v", restSubId)
3062 e2termConn1.RecvSubsReq(t)
3063 xapp.Logger.Info("Ignore 1st REST subscriber request for subscriber : %v", restSubId)
3065 e2termConn1.RecvSubsReq(t)
3066 xapp.Logger.Info("Ignore 2nd REST subscriber request for subscriber : %v", restSubId)
3068 e2termConn1.RecvSubsDelReq(t)
3069 xapp.Logger.Info("Ignore 1st INTERNAL delete request for subscriber : %v", restSubId)
3071 xappConn1.ExpectRESTNotification(t, restSubId)
3072 e2termConn1.RecvSubsDelReq(t)
3073 xapp.Logger.Info("Ignore 2nd INTERNAL delete request for subscriber : %v", restSubId)
3075 e2SubsId := xappConn1.WaitRESTNotification(t, restSubId)
3077 waitSubsCleanup(t, e2SubsId, 10)
3079 mainCtrl.VerifyCounterValues(t)
3082 //-----------------------------------------------------------------------------
3083 // TestRESTSubReqSubFailRespInSubmgr
3086 // +-------+ +---------+ +---------+
3087 // | xapp | | submgr | | e2term |
3088 // +-------+ +---------+ +---------+
3091 // |---------------->| |
3093 // | RESTSubResp | |
3094 // |<----------------| |
3096 // | |------------->|
3099 // | |<-------------|
3102 // | |------------->|
3105 // | |<-------------|
3109 // |<----------------| |
3111 // | [SUBS DELETE] |
3114 //-----------------------------------------------------------------------------
3115 func TestRESTSubReqSubFailRespInSubmgr(t *testing.T) {
3116 CaseBegin("TestRESTSubReqSubFailRespInSubmgr")
3118 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
3119 Counter{cRestSubReqFromXapp, 1},
3120 Counter{cSubReqToE2, 1},
3121 Counter{cSubFailFromE2, 1},
3122 Counter{cRestSubFailToXapp, 1},
3123 Counter{cRestSubDelReqFromXapp, 1},
3126 const subReqCount int = 1
3128 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
3129 restSubId := xappConn1.SendRESTSubsReq(t, params)
3131 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
3132 fparams1 := &teststube2ap.E2StubSubsFailParams{}
3133 fparams1.Set(crereq1)
3134 e2termConn1.SendSubsFail(t, fparams1, cremsg1)
3136 delreq1, delmsg1 := e2termConn1.RecvSubsDelReq(t)
3137 xappConn1.ExpectRESTNotification(t, restSubId)
3138 e2termConn1.SendSubsDelResp(t, delreq1, delmsg1)
3139 e2SubsId := xappConn1.WaitRESTNotification(t, restSubId)
3140 xapp.Logger.Info("TEST: REST notification received e2SubsId=%v", e2SubsId)
3142 // REST subscription sill there to be deleted
3143 xappConn1.SendRESTSubsDelReq(t, &restSubId)
3145 // Wait that subs is cleaned
3146 waitSubsCleanup(t, e2SubsId, 10)
3148 mainCtrl.VerifyCounterValues(t)
3152 //-----------------------------------------------------------------------------
3153 // TestRESTSubDelReqRetryInSubmgr
3156 // +-------+ +---------+ +---------+
3157 // | xapp | | submgr | | e2term |
3158 // +-------+ +---------+ +---------+
3160 // | [SUBS CREATE] |
3163 // | RESTSubDelReq | |
3164 // |---------------->| |
3166 // | RESTSubDelResp | |
3167 // |<----------------| |
3169 // | |------------->|
3172 // | |------------->|
3175 // | |<-------------|
3178 //-----------------------------------------------------------------------------
3179 func TestRESTSubDelReqRetryInSubmgr(t *testing.T) {
3180 CaseBegin("TestRESTSubDelReqRetryInSubmgr")
3182 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
3183 Counter{cRestSubReqFromXapp, 1},
3184 Counter{cSubReqToE2, 1},
3185 Counter{cSubRespFromE2, 1},
3186 Counter{cRestSubRespToXapp, 1},
3187 Counter{cRestSubDelReqFromXapp, 1},
3188 Counter{cSubDelReqToE2, 1},
3189 Counter{cSubDelReReqToE2, 1},
3190 Counter{cSubDelRespFromE2, 1},
3191 Counter{cRestSubDelRespToXapp, 1},
3194 var params *teststube2ap.RESTSubsReqParams = nil
3195 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
3198 xappConn1.SendRESTSubsDelReq(t, &restSubId)
3200 // E2t: Receive 1st SubsDelReq
3201 e2termConn1.RecvSubsDelReq(t)
3203 // E2t: Receive 2nd SubsDelReq and send SubsDelResp
3204 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
3205 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
3207 //Wait that subs is cleaned
3208 waitSubsCleanup(t, e2SubsId, 10)
3210 mainCtrl.VerifyCounterValues(t)
3213 //-----------------------------------------------------------------------------
3214 // TestRESTSubDelReqTwoRetriesNoRespInSubmgr
3217 // +-------+ +---------+ +---------+
3218 // | xapp | | submgr | | e2term |
3219 // +-------+ +---------+ +---------+
3221 // | [SUBS CREATE] |
3224 // | RESTSubDelReq | |
3225 // |---------------->| |
3227 // | RESTSubDelResp | |
3228 // |<----------------| |
3230 // | |------------->|
3233 // | |------------->|
3237 //-----------------------------------------------------------------------------
3238 func TestRESTSubDelReqTwoRetriesNoRespInSubmgr(t *testing.T) {
3239 CaseBegin("TestRESTSubDelReTwoRetriesNoRespInSubmgr")
3241 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
3242 Counter{cRestSubReqFromXapp, 1},
3243 Counter{cSubReqToE2, 1},
3244 Counter{cSubRespFromE2, 1},
3245 Counter{cRestSubRespToXapp, 1},
3246 Counter{cRestSubDelReqFromXapp, 1},
3247 Counter{cSubDelReqToE2, 1},
3248 Counter{cSubDelReReqToE2, 1},
3249 Counter{cSubDelRespFromE2, 1},
3250 Counter{cRestSubDelRespToXapp, 1},
3254 var params *teststube2ap.RESTSubsReqParams = nil
3255 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
3258 xappConn1.SendRESTSubsDelReq(t, &restSubId)
3260 // E2t: Receive 1st SubsDelReq
3261 e2termConn1.RecvSubsDelReq(t)
3263 // E2t: Receive 2nd SubsDelReq and send SubsDelResp
3264 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
3265 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
3267 //Wait that subs is cleaned
3268 waitSubsCleanup(t, e2SubsId, 10)
3270 mainCtrl.VerifyCounterValues(t)
3273 //-----------------------------------------------------------------------------
3274 // TestRESTSubDelReqSubDelFailRespInSubmgr
3277 // +-------+ +---------+ +---------+
3278 // | xapp | | submgr | | e2term |
3279 // +-------+ +---------+ +---------+
3281 // | [SUBS CREATE] |
3284 // | RESTSubDelReq | |
3285 // |---------------->| |
3287 // | RESTSubDelResp | |
3288 // |<----------------| |
3290 // | |------------->|
3293 // | |<-------------|
3296 //-----------------------------------------------------------------------------
3297 func TestRESTSubDelReqSubDelFailRespInSubmgr(t *testing.T) {
3298 CaseBegin("TestRESTSubDelReqSubDelFailRespInSubmgr")
3300 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
3301 Counter{cRestSubReqFromXapp, 1},
3302 Counter{cSubReqToE2, 1},
3303 Counter{cSubRespFromE2, 1},
3304 Counter{cRestSubRespToXapp, 1},
3305 Counter{cRestSubDelReqFromXapp, 1},
3306 Counter{cSubDelReqToE2, 1},
3307 Counter{cSubDelFailFromE2, 1},
3308 Counter{cRestSubDelRespToXapp, 1},
3312 var params *teststube2ap.RESTSubsReqParams = nil
3313 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
3316 xappConn1.SendRESTSubsDelReq(t, &restSubId)
3318 // E2t: Send receive SubsDelReq and send SubsDelFail
3319 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
3320 e2termConn1.SendSubsDelFail(t, delreq, delmsg)
3322 //Wait that subs is cleaned
3323 waitSubsCleanup(t, e2SubsId, 10)
3325 mainCtrl.VerifyCounterValues(t)
3328 //-----------------------------------------------------------------------------
3329 // TestRESTSubReqAndSubDelOkSameAction
3332 // +-------+ +-------+ +---------+ +---------+
3333 // | xapp2 | | xapp1 | | submgr | | e2term |
3334 // +-------+ +-------+ +---------+ +---------+
3336 // | | RESTSubReq1 | |
3337 // | |---------------->| |
3339 // | | RESTSubResp1 | |
3340 // | |<----------------| |
3343 // | | |------------->|
3345 // | | |<-------------|
3346 // | | RESTNotif1 | |
3347 // | |<----------------| |
3349 // | RESTSubReq2 | |
3350 // |------------------------------>| |
3352 // | RESTSubResp2 | |
3353 // |<------------------------------| |
3355 // | | RESTNotif2 | |
3356 // |<------------------------------| |
3358 // | | RESTSubDelReq1 | |
3359 // | |---------------->| |
3361 // | | RESTSubDelResp1 | |
3362 // | |<----------------| |
3364 // | RESTSubDelReq2 | |
3365 // |------------------------------>| |
3367 // | RESTSubDelResp2 | |
3368 // |<------------------------------| |
3370 // | | | SubDelReq2 |
3371 // | | |------------->|
3373 // | | | SubDelResp2 |
3374 // | | |<-------------|
3377 //-----------------------------------------------------------------------------
3378 func TestRESTSubReqAndSubDelOkSameAction(t *testing.T) {
3379 CaseBegin("TestRESTSubReqAndSubDelOkSameAction")
3381 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
3382 Counter{cRestSubReqFromXapp, 2},
3383 Counter{cSubReqToE2, 1},
3384 Counter{cSubRespFromE2, 1},
3385 Counter{cRestSubRespToXapp, 2},
3386 Counter{cMergedSubscriptions, 1},
3387 Counter{cUnmergedSubscriptions, 1},
3388 Counter{cRestSubDelReqFromXapp, 2},
3389 Counter{cSubDelReqToE2, 1},
3390 Counter{cSubDelRespFromE2, 1},
3391 Counter{cRestSubDelRespToXapp, 2},
3395 var params *teststube2ap.RESTSubsReqParams = nil
3398 restSubId1, e2SubsId1 := createSubscription(t, xappConn1, e2termConn1, params)
3399 queryXappSubscription(t, int64(e2SubsId1), "RAN_NAME_1", []string{"localhost:13560"})
3402 params = xappConn2.GetRESTSubsReqReportParams(subReqCount)
3403 params.SetMeid("RAN_NAME_1")
3405 xapp.Subscription.SetResponseCB(xappConn2.SubscriptionRespHandler)
3406 xappConn2.WaitRESTNotificationForAnySubscriptionId(t)
3407 waiter := rtmgrHttp.AllocNextSleep(10, true)
3408 restSubId2 := xappConn2.SendRESTSubsReq(t, params)
3409 waiter.WaitResult(t)
3410 xapp.Logger.Info("Send REST subscriber request for subscriberId : %v", restSubId2)
3411 e2SubsId2 := <-xappConn2.RESTNotification
3412 xapp.Logger.Info("REST notification received e2SubsId=%v", e2SubsId2)
3414 queryXappSubscription(t, int64(e2SubsId1), "RAN_NAME_1", []string{"localhost:13560", "localhost:13660"})
3417 xappConn1.SendRESTSubsDelReq(t, &restSubId1)
3420 deleteXapp2Subscription(t, &restSubId2)
3422 //Wait that subs is cleaned
3423 waitSubsCleanup(t, e2SubsId2, 10)
3425 mainCtrl.VerifyCounterValues(t)
3428 //-----------------------------------------------------------------------------
3429 // TestSubReqAndSubDelOkSameActionParallel
3432 // +-------+ +-------+ +---------+ +---------+
3433 // | xapp2 | | xapp1 | | submgr | | e2term |
3434 // +-------+ +-------+ +---------+ +---------+
3439 // | |------------->| |
3442 // | | |------------->|
3444 // |--------------------------->| |
3446 // | | |<-------------|
3448 // | |<-------------| |
3450 // | | |------------->|
3453 // | | |<-------------|
3455 // |<---------------------------| |
3457 // | | SubDelReq 1 | |
3458 // | |------------->| |
3460 // | | SubDelResp 1 | |
3461 // | |<-------------| |
3463 // | SubDelReq 2 | |
3464 // |--------------------------->| |
3466 // | | | SubDelReq 2 |
3467 // | | |------------->|
3469 // | | | SubDelReq 2 |
3470 // | | |------------->|
3472 // | SubDelResp 2 | |
3473 // |<---------------------------| |
3475 func TestRESTSubReqAndSubDelOkSameActionParallel(t *testing.T) {
3476 CaseBegin("TestRESTSubReqAndSubDelOkSameActionParallel")
3478 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
3479 Counter{cRestSubReqFromXapp, 2},
3480 Counter{cSubReqToE2, 2},
3481 Counter{cSubRespFromE2, 2},
3482 Counter{cRestSubRespToXapp, 2},
3483 Counter{cRestSubDelReqFromXapp, 2},
3484 Counter{cSubDelReqToE2, 2},
3485 Counter{cSubDelRespFromE2, 2},
3486 Counter{cRestSubDelRespToXapp, 2},
3489 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
3490 restSubId1 := xappConn1.SendRESTSubsReq(t, params)
3491 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
3493 params2 := xappConn2.GetRESTSubsReqReportParams(subReqCount)
3494 restSubId2 := xappConn2.SendRESTSubsReq(t, params2)
3496 xappConn1.ExpectRESTNotification(t, restSubId1)
3497 e2termConn1.SendSubsResp(t, crereq1, cremsg1)
3498 e2SubsId1 := xappConn1.WaitRESTNotification(t, restSubId1)
3500 xappConn2.ExpectRESTNotification(t, restSubId2)
3501 crereq2, cremsg2 := e2termConn1.RecvSubsReq(t)
3502 e2termConn1.SendSubsResp(t, crereq2, cremsg2)
3503 e2SubsId2 := xappConn2.WaitRESTNotification(t, restSubId2)
3506 xappConn1.SendRESTSubsDelReq(t, &restSubId1)
3507 delreq1, delmsg1 := e2termConn1.RecvSubsDelReq(t)
3508 e2termConn1.SendSubsDelResp(t, delreq1, delmsg1)
3509 mainCtrl.wait_subs_clean(t, e2SubsId1, 10)
3512 xappConn2.SendRESTSubsDelReq(t, &restSubId2)
3513 delreq2, delmsg2 := e2termConn1.RecvSubsDelReq(t)
3514 e2termConn1.SendSubsDelResp(t, delreq2, delmsg2)
3516 waitSubsCleanup(t, e2SubsId2, 10)
3518 mainCtrl.VerifyCounterValues(t)
3521 //-----------------------------------------------------------------------------
3522 // TestRESTSubReqAndSubDelNoAnswerSameActionParallel
3525 // +-------+ +-------+ +---------+ +---------+
3526 // | xapp2 | | xapp1 | | submgr | | e2term |
3527 // +-------+ +-------+ +---------+ +---------+
3531 // | | RESTSubReq1 | |
3532 // | |---------------->| |
3534 // | | RESTSubResp1 | |
3535 // | |<----------------| |
3537 // | | |------------->|
3538 // | RESTSubReq2 | |
3539 // |------------------------------>| |
3541 // | RESTSubDelResp2 | |
3542 // |<------------------------------| |
3544 // | | |------------->|
3547 // | | | SubDelReq |
3548 // | | |------------->|
3550 // | | | SubDelResp |
3551 // | | |<-------------|
3552 // | | RESTNotif1 | |
3553 // | | unsuccess | |
3554 // | |<----------------| |
3556 // | | unsuccess | |
3557 // |<------------------------------| |
3559 // | | RESTSubDelReq1 | |
3560 // | |---------------->| |
3562 // | | RESTSubDelResp1 | |
3563 // | |<----------------| |
3565 // | RESTSubDelReq2 | |
3566 // |------------------------------>| |
3568 // | RESTSubDelResp2 | |
3569 // |<------------------------------| |
3571 //-----------------------------------------------------------------------------
3572 func TestRESTSubReqAndSubDelNoAnswerSameActionParallel(t *testing.T) {
3573 CaseBegin("TestRESTSubReqAndSubDelNoAnswerSameActionParallel")
3575 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
3576 Counter{cRestSubReqFromXapp, 2},
3577 Counter{cSubReqToE2, 1},
3578 Counter{cRestSubFailToXapp, 2},
3579 Counter{cRestSubDelReqFromXapp, 2},
3580 Counter{cSubDelReqToE2, 1},
3581 Counter{cSubDelRespFromE2, 1},
3582 Counter{cRestSubDelRespToXapp, 2},
3585 const subReqCount int = 1
3588 params1 := xappConn1.GetRESTSubsReqReportParams(subReqCount)
3589 restSubId1 := xappConn1.SendRESTSubsReq(t, params1)
3590 crereq1, _ := e2termConn1.RecvSubsReq(t)
3593 subepcnt2 := mainCtrl.get_subs_entrypoint_cnt(t, crereq1.RequestId.InstanceId)
3594 params2 := xappConn2.GetRESTSubsReqReportParams(subReqCount)
3595 params2.SetMeid("RAN_NAME_1")
3596 restSubId2 := xappConn2.SendRESTSubsReq(t, params2)
3597 mainCtrl.wait_subs_entrypoint_cnt_change(t, crereq1.RequestId.InstanceId, subepcnt2, 10)
3599 //Req1 (retransmitted)
3600 e2termConn1.RecvSubsReq(t)
3602 delreq1, delmsg1 := e2termConn1.RecvSubsDelReq(t)
3604 xappConn1.WaitListedRestNotifications(t, []string{restSubId1, restSubId2})
3605 e2termConn1.SendSubsDelResp(t, delreq1, delmsg1)
3607 e2SubsIdA := <-xappConn1.ListedRESTNotifications
3608 xapp.Logger.Info("TEST: 1.st XAPP notification received e2SubsId=%v", e2SubsIdA)
3609 e2SubsIdB := <-xappConn1.ListedRESTNotifications
3610 xapp.Logger.Info("TEST: 2.nd XAPP notification received e2SubsId=%v", e2SubsIdB)
3613 xappConn1.SendRESTSubsDelReq(t, &restSubId1)
3616 xappConn2.SendRESTSubsDelReq(t, &restSubId2)
3618 mainCtrl.wait_multi_subs_clean(t, []uint32{e2SubsIdA.E2SubsId, e2SubsIdB.E2SubsId}, 10)
3620 //Wait that subs is cleaned
3621 waitSubsCleanup(t, e2SubsIdA.E2SubsId, 10)
3623 mainCtrl.VerifyCounterValues(t)
3626 //-----------------------------------------------------------------------------
3627 // TestRESTSubReqAndSubDelNokSameActionParallel
3630 // +-------+ +-------+ +---------+ +---------+
3631 // | xapp2 | | xapp1 | | submgr | | e2term |
3632 // +-------+ +-------+ +---------+ +---------+
3636 // | | RESTSubReq1 | |
3637 // | |---------------->| |
3639 // | | RESTSubResp1 | |
3640 // | |<----------------| |
3642 // | | |------------->|
3643 // | RESTSubReq2 | |
3644 // |------------------------------>| |
3646 // | RESTSubDelResp2 | |
3647 // |<------------------------------| |
3649 // | | |<-------------|
3651 // | | RESTNotif1 | |
3652 // | | unsuccess | |
3653 // | |<----------------| |
3655 // | | unsuccess | |
3656 // |<------------------------------| |
3657 // | | | SubDelReq |
3658 // | | |------------->|
3659 // | | | SubDelResp |
3660 // | | |<-------------|
3662 // | | RESTSubDelReq1 | |
3663 // | |---------------->| |
3665 // | | RESTSubDelResp1 | |
3666 // | |<----------------| |
3668 // | RESTSubDelReq2 | |
3669 // |------------------------------>| |
3671 // | RESTSubDelResp2 | |
3672 // |<------------------------------| |
3674 //-----------------------------------------------------------------------------
3675 func TestRESTSubReqAndSubDelNokSameActionParallel(t *testing.T) {
3676 CaseBegin("TestRESTSubReqAndSubDelNokSameActionParallel")
3678 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
3679 Counter{cRestSubReqFromXapp, 2},
3680 Counter{cSubReqToE2, 1},
3681 Counter{cSubFailFromE2, 1},
3682 Counter{cRestSubFailToXapp, 2},
3683 Counter{cRestSubDelReqFromXapp, 2},
3684 Counter{cSubDelReqToE2, 1},
3685 Counter{cSubDelRespFromE2, 1},
3686 Counter{cRestSubDelRespToXapp, 2},
3689 const subReqCount int = 1
3692 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
3693 restSubId1 := xappConn1.SendRESTSubsReq(t, params)
3694 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
3697 subepcnt2 := mainCtrl.get_subs_entrypoint_cnt(t, crereq1.RequestId.InstanceId)
3698 params2 := xappConn2.GetRESTSubsReqReportParams(subReqCount)
3699 params2.SetMeid("RAN_NAME_1")
3700 restSubId2 := xappConn2.SendRESTSubsReq(t, params2)
3701 mainCtrl.wait_subs_entrypoint_cnt_change(t, crereq1.RequestId.InstanceId, subepcnt2, 10)
3703 // E2t: send SubsFail (first)
3704 fparams1 := &teststube2ap.E2StubSubsFailParams{}
3705 fparams1.Set(crereq1)
3706 e2termConn1.SendSubsFail(t, fparams1, cremsg1)
3708 // E2t: internal delete
3709 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
3710 xappConn1.WaitListedRestNotifications(t, []string{restSubId1, restSubId2})
3711 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
3713 e2SubsIdA := <-xappConn1.ListedRESTNotifications
3714 xapp.Logger.Info("TEST: 1.st XAPP notification received e2SubsId=%v", e2SubsIdA)
3715 e2SubsIdB := <-xappConn1.ListedRESTNotifications
3716 xapp.Logger.Info("TEST: 2.nd XAPP notification received e2SubsId=%v", e2SubsIdB)
3719 xappConn1.SendRESTSubsDelReq(t, &restSubId1)
3722 xappConn2.SendRESTSubsDelReq(t, &restSubId2)
3724 //Wait that subs is cleaned
3725 waitSubsCleanup(t, e2SubsIdA.E2SubsId, 10)
3726 waitSubsCleanup(t, e2SubsIdB.E2SubsId, 10)
3728 mainCtrl.VerifyCounterValues(t)
3731 func TestRESTSubReqPolicyAndSubDelOk(t *testing.T) {
3732 CaseBegin("TestRESTSubReqPolicyAndSubDelOk")
3734 // Init counter check
3735 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
3736 Counter{cRestSubReqFromXapp, 1},
3737 Counter{cSubReqToE2, 1},
3738 Counter{cSubRespFromE2, 1},
3739 Counter{cRestSubRespToXapp, 1},
3740 Counter{cRestSubDelReqFromXapp, 1},
3741 Counter{cSubDelReqToE2, 1},
3742 Counter{cSubDelRespFromE2, 1},
3743 Counter{cRestSubDelRespToXapp, 1},
3746 const subReqCount int = 1
3748 params := xappConn1.GetRESTSubsReqPolicyParams(subReqCount)
3749 restSubId := xappConn1.SendRESTSubsReq(t, params)
3750 xapp.Logger.Info("Send REST Policy subscriber request for subscriberId : %v", restSubId)
3752 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
3753 xappConn1.ExpectRESTNotification(t, restSubId)
3754 e2termConn1.SendSubsResp(t, crereq1, cremsg1)
3755 e2SubsId := xappConn1.WaitRESTNotification(t, restSubId)
3756 xapp.Logger.Info("REST notification received e2SubsId=%v", e2SubsId)
3758 xappConn1.SendRESTSubsDelReq(t, &restSubId)
3759 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
3760 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
3762 // Wait that subs is cleaned
3763 waitSubsCleanup(t, e2SubsId, 10)
3764 mainCtrl.VerifyCounterValues(t)
3767 //-----------------------------------------------------------------------------
3768 // TestRESTSubReqPolicyChangeAndSubDelOk
3771 // +-------+ +---------+ +---------+
3772 // | xapp | | submgr | | e2term |
3773 // +-------+ +---------+ +---------+
3776 // |---------------->| |
3778 // | RESTSubResp | |
3779 // |<----------------| |
3781 // | |------------->|
3784 // | |<-------------|
3787 // |<----------------| |
3790 // |---------------->| |
3792 // | RESTSubResp | |
3793 // |<----------------| |
3795 // | |------------->|
3798 // | |<-------------|
3801 // |<----------------| |
3803 // | RESTSubDelReq | |
3804 // |---------------->| |
3807 // | |------------->|
3810 // | |<-------------|
3812 // | RESTSubDelResp | |
3813 // |<----------------| |
3815 //-----------------------------------------------------------------------------
3816 func TestRESTSubReqPolicyChangeAndSubDelOk(t *testing.T) {
3817 CaseBegin("TestRESTSubReqPolicyAndSubDelOk")
3819 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
3820 Counter{cRestSubReqFromXapp, 2},
3821 Counter{cSubReqToE2, 2},
3822 Counter{cSubRespFromE2, 2},
3823 Counter{cRestSubRespToXapp, 2},
3824 Counter{cRestSubDelReqFromXapp, 1},
3825 Counter{cSubDelReqToE2, 1},
3826 Counter{cSubDelRespFromE2, 1},
3827 Counter{cRestSubDelRespToXapp, 1},
3830 const subReqCount int = 1
3833 params := xappConn1.GetRESTSubsReqPolicyParams(subReqCount)
3834 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
3837 instanceId := int64(e2SubsId)
3838 // GetRESTSubsReqPolicyParams sets some coutners on tc side.
3839 params = xappConn1.GetRESTSubsReqPolicyParams(subReqCount)
3840 params.SubsReqParams.SubscriptionDetails[0].InstanceID = &instanceId
3841 params.SetTimeToWait("w200ms")
3842 restSubId, e2SubsId = createSubscription(t, xappConn1, e2termConn1, params)
3845 xappConn1.SendRESTSubsDelReq(t, &restSubId)
3847 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
3848 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
3850 // Wait that subs is cleaned
3851 waitSubsCleanup(t, e2SubsId, 10)
3852 mainCtrl.VerifyCounterValues(t)
3855 //-----------------------------------------------------------------------------
3856 // TestRESTSubReqAndSubDelOkTwoE2termParallel
3859 // +-------+ +---------+ +---------+ +---------+
3860 // | xapp | | submgr | | e2term1 | | e2term2 |
3861 // +-------+ +---------+ +---------+ +---------+
3865 // | RESTSubReq1 | | |
3866 // |---------------->| | |
3868 // | RESTSubResp1 | | |
3869 // |<----------------| | |
3871 // | |------------->| |
3873 // | RESTSubReq2 | | |
3874 // |---------------->| | |
3876 // | RESTSubResp2 | | |
3877 // |<----------------| | |
3879 // | |---------------------------->|
3882 // | |<-------------| |
3883 // | RESTNotif1 | | |
3884 // |<----------------| | |
3886 // | |<----------------------------|
3887 // | RESTNotif2 | | |
3888 // |<----------------| | |
3890 // | [SUBS 1 DELETE] | |
3892 // | [SUBS 2 DELETE] | |
3895 //-----------------------------------------------------------------------------
3896 func TestRESTSubReqAndSubDelOkTwoE2termParallel(t *testing.T) {
3897 CaseBegin("TestRESTSubReqAndSubDelOkTwoE2termParallel")
3899 // Init counter check
3900 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
3901 Counter{cRestSubReqFromXapp, 2},
3902 Counter{cSubReqToE2, 2},
3903 Counter{cSubRespFromE2, 2},
3904 Counter{cRestSubRespToXapp, 2},
3905 Counter{cRestSubDelReqFromXapp, 2},
3906 Counter{cSubDelReqToE2, 2},
3907 Counter{cSubDelRespFromE2, 2},
3908 Counter{cRestSubDelRespToXapp, 2},
3911 const subReqCount int = 1
3914 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
3915 restSubId1 := xappConn1.SendRESTSubsReq(t, params)
3916 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
3919 params = xappConn2.GetRESTSubsReqReportParams(subReqCount)
3920 params.SetMeid("RAN_NAME_11")
3921 // Here we use xappConn2 to simulate sending second request from same xapp as doing it from xappConn1
3922 // would not work as notification would not be received
3923 restSubId2 := xappConn2.SendRESTSubsReq(t, params)
3924 crereq2, cremsg2 := e2termConn2.RecvSubsReq(t)
3927 xappConn1.ExpectRESTNotification(t, restSubId1)
3928 e2termConn1.SendSubsResp(t, crereq1, cremsg1)
3929 e2SubsId1 := xappConn1.WaitRESTNotification(t, restSubId1)
3930 xapp.Logger.Info("TEST: REST notification received e2SubsId1=%v", e2SubsId1)
3933 xappConn2.ExpectRESTNotification(t, restSubId2)
3934 e2termConn2.SendSubsResp(t, crereq2, cremsg2)
3935 e2SubsId2 := xappConn2.WaitRESTNotification(t, restSubId2)
3936 xapp.Logger.Info("TEST: REST notification received e2SubsId2=%v", e2SubsId2)
3939 xappConn1.SendRESTSubsDelReq(t, &restSubId1)
3940 delreq1, delmsg1 := e2termConn1.RecvSubsDelReq(t)
3941 e2termConn1.SendSubsDelResp(t, delreq1, delmsg1)
3943 // Wait that subs is cleaned
3944 mainCtrl.wait_subs_clean(t, e2SubsId1, 10)
3947 xappConn1.SendRESTSubsDelReq(t, &restSubId2)
3948 delreq2, delmsg2 := e2termConn2.RecvSubsDelReq(t)
3949 e2termConn2.SendSubsDelResp(t, delreq2, delmsg2)
3951 // Wait that subs is cleaned
3952 waitSubsCleanup(t, e2SubsId2, 10)
3954 mainCtrl.VerifyCounterValues(t)
3957 //-----------------------------------------------------------------------------
3958 // TestRESTSubReqAsn1EncodeFail
3960 // In this case submgr send RICSubscriptionDeleteRequest after encode failure which should not happen!
3962 // +-------+ +---------+ +---------+
3963 // | xapp | | submgr | | e2term |
3964 // +-------+ +---------+ +---------+
3967 // |---------------->| |
3969 // | RESTSubResp | |
3970 // |<----------------| |
3971 // | RESTSubDelReq | |
3972 // |---------------->| |
3973 // | RESTSubDelResp | |
3975 // |<----------------| |
3978 //-----------------------------------------------------------------------------
3979 func TestRESTSubReqAsn1EncodeFail(t *testing.T) {
3980 CaseBegin("TestRESTSubReqAsn1EncodeFail")
3982 xapp.Logger.Info("Xapp-frame, v0.8.1 sufficient REST API validation")
3986 //-----------------------------------------------------------------------------
3987 // TestRESTSubReqInsertAndSubDelOk
3990 // +-------+ +---------+ +---------+
3991 // | xapp | | submgr | | e2term |
3992 // +-------+ +---------+ +---------+
3995 // |---------------->| |
3997 // | RESTSubResp | |
3998 // |<----------------| |
4001 // | |------------->|
4004 // | |<-------------|
4006 // |<----------------| |
4009 // | RESTSubDelReq | |
4010 // |---------------->| |
4013 // | |------------->|
4016 // | |<-------------|
4018 // | RESTSubDelResp| |
4019 // |<----------------| |
4021 //-----------------------------------------------------------------------------
4022 func TestRESTSubReqInsertAndSubDelOk(t *testing.T) {
4023 CaseBegin("TestRESTInsertSubReqAndSubDelOk")
4025 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
4026 Counter{cRestSubReqFromXapp, 1},
4027 Counter{cSubReqToE2, 1},
4028 Counter{cSubRespFromE2, 1},
4029 Counter{cRestSubRespToXapp, 1},
4030 Counter{cRestSubDelReqFromXapp, 1},
4031 Counter{cSubDelReqToE2, 1},
4032 Counter{cSubDelRespFromE2, 1},
4033 Counter{cRestSubDelRespToXapp, 1},
4036 const subReqCount int = 1
4038 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
4039 params.SetSubActionTypes("insert")
4042 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
4045 xappConn1.SendRESTSubsDelReq(t, &restSubId)
4047 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
4048 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
4050 // Wait that subs is cleaned
4051 waitSubsCleanup(t, e2SubsId, 10)
4052 mainCtrl.VerifyCounterValues(t)
4055 //-----------------------------------------------------------------------------
4056 // TestRESTSubReqNokAndSubDelOkWithRestartInMiddle
4059 // +-------+ +---------+ +---------+
4060 // | xapp | | submgr | | e2term |
4061 // +-------+ +---------+ +---------+
4064 // |------------->| |
4067 // | |------------->|
4072 // | Submgr restart |
4076 // | |------------->|
4079 // | |<-------------|
4082 //-----------------------------------------------------------------------------
4083 func TestRESTSubReqNokAndSubDelOkWithRestartInMiddle(t *testing.T) {
4084 CaseBegin("TestRESTSubReqNokAndSubDelOkWithRestartInMiddle")
4086 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
4087 Counter{cRestSubReqFromXapp, 1},
4088 Counter{cSubReqToE2, 1},
4089 Counter{cSubDelReqFromXapp, 1},
4090 Counter{cSubDelReqToE2, 1},
4091 Counter{cSubDelRespFromE2, 1},
4094 const subReqCount int = 1
4096 // Remove possible existing subscription
4097 mainCtrl.removeExistingSubscriptions(t)
4099 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
4102 mainCtrl.SetResetTestFlag(t, true) // subs.DoNotWaitSubResp will be set TRUE for the subscription
4103 restSubId := xappConn1.SendRESTSubsReq(t, params)
4104 xapp.Logger.Info("Send REST subscriber request for subscriber : %v", restSubId)
4106 e2termConn1.RecvSubsReq(t)
4108 mainCtrl.SetResetTestFlag(t, false)
4110 mainCtrl.SimulateRestart(t)
4111 xapp.Logger.Debug("mainCtrl.SimulateRestart done")
4114 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
4115 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
4117 xappConn1.TestMsgChanEmpty(t)
4118 xappConn2.TestMsgChanEmpty(t)
4119 e2termConn1.TestMsgChanEmpty(t)
4120 mainCtrl.wait_registry_empty(t, 10)
4122 mainCtrl.VerifyCounterValues(t)
4125 //-----------------------------------------------------------------------------
4126 // TestRESTSubReqAndSubDelOkWithRestartInMiddle
4129 // +-------+ +---------+ +---------+
4130 // | xapp | | submgr | | e2term |
4131 // +-------+ +---------+ +---------+
4134 // |---------------->| |
4136 // | RESTSubResp | |
4137 // |<----------------| |
4139 // | |------------->|
4142 // | |<-------------|
4145 // |<----------------| |
4148 // | Submgr restart |
4150 // | RESTSubDelReq | |
4151 // |---------------->| |
4154 // | |------------->|
4157 // | |<-------------|
4159 // | RESTSubDelResp | |
4160 // |<----------------| |
4162 //-----------------------------------------------------------------------------
4163 func TestRESTSubReqAndSubDelOkWithRestartInMiddle(t *testing.T) {
4164 CaseBegin("TestRESTSubReqAndSubDelOkWithRestartInMiddle")
4166 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
4167 Counter{cRestSubReqFromXapp, 1},
4168 Counter{cSubReqToE2, 1},
4169 Counter{cSubRespFromE2, 1},
4170 Counter{cRestSubRespToXapp, 1},
4171 Counter{cRestSubDelReqFromXapp, 1},
4172 Counter{cSubDelReqToE2, 1},
4173 Counter{cRestSubDelRespToXapp, 1},
4176 // Remove possible existing subscription
4177 mainCtrl.removeExistingSubscriptions(t)
4179 var params *teststube2ap.RESTSubsReqParams = nil
4181 // Create subscription
4182 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
4183 xapp.Logger.Info("Send REST subscriber request for subscriber : %v", restSubId)
4185 // Check subscription
4186 queryXappSubscription(t, int64(e2SubsId), "RAN_NAME_1", []string{"localhost:13560"})
4188 // When SDL support for the REST Interface is added
4189 // the submgr restart statement below should be removed
4190 // from the comment.
4192 // mainCtrl.SimulateRestart(t)
4193 // xapp.Logger.Debug("mainCtrl.SimulateRestart done")
4195 // Check subscription
4196 queryXappSubscription(t, int64(e2SubsId), "RAN_NAME_1", []string{"localhost:13560"})
4198 // Delete subscription
4199 deleteSubscription(t, xappConn1, e2termConn1, &restSubId)
4201 //Wait that subs is cleaned
4202 waitSubsCleanup(t, e2SubsId, 10)
4204 mainCtrl.VerifyCounterValues(t)
4207 //-----------------------------------------------------------------------------
4208 // TestRESTSubReqAndSubDelOkSameActionWithRestartsInMiddle
4211 // +-------+ +-------+ +---------+ +---------+
4212 // | xapp2 | | xapp1 | | submgr | | e2term |
4213 // +-------+ +-------+ +---------+ +---------+
4215 // | | RESTSubReq1 | |
4216 // | |---------------->| |
4218 // | | RESTSubResp1 | |
4219 // | |<----------------| |
4222 // | | |------------->|
4224 // | | |<-------------|
4225 // | | RESTNotif1 | |
4226 // | |<----------------| |
4228 // | RESTSubReq2 | |
4229 // |------------------------------>| |
4231 // | RESTSubResp2 | |
4232 // |<------------------------------| |
4234 // | | RESTNotif2 | |
4235 // |<------------------------------| |
4237 // | | Submgr restart |
4239 // | | RESTSubDelReq1 | |
4240 // | |---------------->| |
4242 // | | RESTSubDelResp1 | |
4243 // | |<----------------| |
4245 // | | Submgr restart |
4247 // | RESTSubDelReq2 | |
4248 // |------------------------------>| |
4250 // | RESTSubDelResp2 | |
4251 // |<------------------------------| |
4253 // | | | SubDelReq2 |
4254 // | | |------------->|
4256 // | | | SubDelResp2 |
4257 // | | |<-------------|
4260 //-----------------------------------------------------------------------------
4261 func TestRESTSubReqAndSubDelOkSameActionWithRestartsInMiddle(t *testing.T) {
4262 CaseBegin("TestRESTSubReqAndSubDelOkSameActionWithRestartsInMiddle")
4264 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
4265 Counter{cRestSubReqFromXapp, 2},
4266 Counter{cSubReqToE2, 1},
4267 Counter{cSubRespFromE2, 1},
4268 Counter{cRestSubRespToXapp, 2},
4269 Counter{cMergedSubscriptions, 1},
4270 Counter{cUnmergedSubscriptions, 1},
4271 Counter{cRestSubDelReqFromXapp, 2},
4272 Counter{cSubDelReqToE2, 1},
4273 Counter{cSubDelRespFromE2, 1},
4274 Counter{cRestSubDelRespToXapp, 2},
4277 // Remove possible existing subscription
4278 mainCtrl.removeExistingSubscriptions(t)
4280 var params *teststube2ap.RESTSubsReqParams = nil
4282 // Create subscription 1
4283 restSubId1, e2SubsId1 := createSubscription(t, xappConn1, e2termConn1, params)
4284 xapp.Logger.Info("Send REST subscriber request for subscriber 1 : %v", restSubId1)
4286 // Create subscription 2 with same action
4287 params = xappConn2.GetRESTSubsReqReportParams(subReqCount)
4288 params.SetMeid("RAN_NAME_1")
4289 xapp.Subscription.SetResponseCB(xappConn2.SubscriptionRespHandler)
4290 xappConn2.WaitRESTNotificationForAnySubscriptionId(t)
4291 restSubId2 := xappConn2.SendRESTSubsReq(t, params)
4292 xapp.Logger.Info("Send REST subscriber request for subscriberId : %v", restSubId2)
4293 e2SubsId2 := <-xappConn2.RESTNotification
4294 xapp.Logger.Info("REST notification received e2SubsId=%v", e2SubsId2)
4296 queryXappSubscription(t, int64(e2SubsId1), "RAN_NAME_1", []string{"localhost:13560", "localhost:13660"})
4298 // When SDL support for the REST Interface is added
4299 // the submgr restart statement below should be removed
4300 // from the comment.
4302 // mainCtrl.SimulateRestart(t)
4303 // xapp.Logger.Debug("mainCtrl.SimulateRestart done")
4305 // Delete subscription 1, and wait until it has removed the first endpoint
4306 subepcnt := mainCtrl.get_subs_entrypoint_cnt(t, e2SubsId1)
4307 xappConn1.SendRESTSubsDelReq(t, &restSubId1)
4308 mainCtrl.wait_subs_entrypoint_cnt_change(t, e2SubsId1, subepcnt, 10)
4310 // When SDL support for the REST Interface is added
4311 // the submgr restart statement below should be removed
4312 // from the comment.
4314 // mainCtrl.SimulateRestart(t)
4315 // xapp.Logger.Debug("mainCtrl.SimulateRestart done")
4316 queryXappSubscription(t, int64(e2SubsId1), "RAN_NAME_1", []string{"localhost:13660"})
4318 // Delete subscription 2
4319 deleteXapp2Subscription(t, &restSubId2)
4321 //Wait that subs is cleaned
4322 waitSubsCleanup(t, e2SubsId2, 10)
4324 mainCtrl.VerifyCounterValues(t)
4327 //-----------------------------------------------------------------------------
4328 // TestRESTReportSubReqAndSubDelOk
4331 // +-------+ +---------+ +---------+
4332 // | xapp | | submgr | | e2term |
4333 // +-------+ +---------+ +---------+
4336 // |---------------->| |
4338 // | RESTSubResp | |
4339 // |<----------------| |
4342 // | |------------->|
4345 // | |<-------------|
4347 // |<----------------| |
4349 // | |------------->|
4352 // | |<-------------|
4354 // |<----------------| |
4358 // | RESTSubDelReq | |
4359 // |---------------->| |
4362 // | |------------->|
4365 // | |<-------------|
4367 // | RESTSubDelResp| |
4368 // |<----------------| |
4370 //-----------------------------------------------------------------------------
4371 func TestRESTReportSubReqAndSubDelOk(t *testing.T) {
4372 CaseBegin("TestRESTReportSubReqAndSubDelOk")
4375 RESTReportSubReqAndSubDelOk(t, subReqCount, testIndex)
4378 func RESTReportSubReqAndSubDelOk(t *testing.T, subReqCount int, testIndex int) {
4379 xapp.Logger.Info("TEST: TestRESTReportSubReqAndSubDelOk with testIndex %v", testIndex)
4382 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
4383 restSubId := xappConn1.SendRESTSubsReq(t, params)
4385 var e2SubsId []uint32
4386 for i := 0; i < subReqCount; i++ {
4387 crereq, cremsg := e2termConn1.RecvSubsReq(t)
4388 xappConn1.ExpectRESTNotification(t, restSubId)
4390 e2termConn1.SendSubsResp(t, crereq, cremsg)
4391 instanceId := xappConn1.WaitRESTNotification(t, restSubId)
4392 xapp.Logger.Info("TEST: REST notification received e2SubsId=%v", instanceId)
4393 e2SubsId = append(e2SubsId, instanceId)
4394 resp, _ := xapp.Subscription.QuerySubscriptions()
4395 assert.Equal(t, resp[i].SubscriptionID, (int64)(instanceId))
4396 assert.Equal(t, resp[i].Meid, "RAN_NAME_1")
4397 assert.Equal(t, resp[i].ClientEndpoint, []string{"localhost:13560"})
4402 xappConn1.SendRESTSubsDelReq(t, &restSubId)
4404 for i := 0; i < subReqCount; i++ {
4405 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
4406 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
4409 // Wait that subs is cleaned
4410 for i := 0; i < subReqCount; i++ {
4411 mainCtrl.wait_subs_clean(t, e2SubsId[i], 10)
4414 xappConn1.TestMsgChanEmpty(t)
4415 e2termConn1.TestMsgChanEmpty(t)
4416 mainCtrl.wait_registry_empty(t, 10)
4420 func TestRESTPolicySubReqAndSubDelOk(t *testing.T) {
4421 CaseBegin("TestRESTPolicySubReqAndSubDelOk")
4425 RESTPolicySubReqAndSubDelOk(t, subReqCount, testIndex)
4429 RESTPolicySubReqAndSubDelOk(t, subReqCount, testIndex)
4432 func RESTPolicySubReqAndSubDelOk(t *testing.T, subReqCount int, testIndex int) {
4433 xapp.Logger.Info("TEST: TestRESTPolicySubReqAndSubDelOk with testIndex %v", testIndex)
4436 params := xappConn1.GetRESTSubsReqPolicyParams(subReqCount)
4437 restSubId := xappConn1.SendRESTSubsReq(t, params)
4438 //params := xappConn1.GetRESTSubsReqPolicyParams1(subReqCount)
4439 //restSubId := xappConn1.SendRESTPolicySubsReq(t, params)
4441 var e2SubsId []uint32
4442 for i := 0; i < subReqCount; i++ {
4443 crereq, cremsg := e2termConn1.RecvSubsReq(t)
4444 xappConn1.ExpectRESTNotification(t, restSubId)
4445 e2termConn1.SendSubsResp(t, crereq, cremsg)
4446 instanceId := xappConn1.WaitRESTNotification(t, restSubId)
4447 xapp.Logger.Info("TEST: REST notification received e2SubsId=%v", instanceId)
4448 e2SubsId = append(e2SubsId, instanceId)
4452 xappConn1.SendRESTSubsDelReq(t, &restSubId)
4454 for i := 0; i < subReqCount; i++ {
4455 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
4456 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
4459 // Wait that subs is cleaned
4460 for i := 0; i < subReqCount; i++ {
4461 mainCtrl.wait_subs_clean(t, e2SubsId[i], 10)
4463 xappConn1.TestMsgChanEmpty(t)
4464 e2termConn1.TestMsgChanEmpty(t)
4465 mainCtrl.wait_registry_empty(t, 10)
4468 func TestRESTTwoPolicySubReqAndSubDelOk(t *testing.T) {
4472 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
4473 Counter{cRestSubReqFromXapp, 1},
4474 Counter{cSubReqToE2, 2},
4475 Counter{cSubRespFromE2, 2},
4476 Counter{cRestSubRespToXapp, 2},
4477 Counter{cRestSubDelReqFromXapp, 1},
4478 Counter{cSubDelReqToE2, 2},
4479 Counter{cSubDelRespFromE2, 2},
4480 Counter{cRestSubDelRespToXapp, 1},
4484 params := xappConn1.GetRESTSubsReqPolicyParams(subReqCount)
4485 restSubId := xappConn1.SendRESTSubsReq(t, params)
4486 e2SubsIds := sendAndReceiveMultipleE2SubReqs(t, subReqCount, xappConn1, e2termConn1, restSubId)
4488 assert.Equal(t, len(e2SubsIds), 2)
4491 xappConn1.SendRESTSubsDelReq(t, &restSubId)
4492 sendAndReceiveMultipleE2DelReqs(t, e2SubsIds, e2termConn1)
4494 xappConn1.TestMsgChanEmpty(t)
4495 e2termConn1.TestMsgChanEmpty(t)
4496 mainCtrl.wait_registry_empty(t, 10)
4498 mainCtrl.VerifyCounterValues(t)
4500 func TestRESTPolicySubReqAndSubDelOkFullAmount(t *testing.T) {
4504 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
4505 Counter{cRestSubReqFromXapp, 1},
4506 Counter{cSubReqToE2, 19},
4507 Counter{cSubRespFromE2, 19},
4508 Counter{cRestSubRespToXapp, 19},
4509 Counter{cRestSubDelReqFromXapp, 1},
4510 Counter{cSubDelReqToE2, 19},
4511 Counter{cSubDelRespFromE2, 19},
4512 Counter{cRestSubDelRespToXapp, 1},
4516 params := xappConn1.GetRESTSubsReqPolicyParams(subReqCount)
4517 restSubId := xappConn1.SendRESTSubsReq(t, params)
4518 e2SubsIds := sendAndReceiveMultipleE2SubReqs(t, subReqCount, xappConn1, e2termConn1, restSubId)
4520 assert.Equal(t, len(e2SubsIds), 19)
4522 xappConn1.SendRESTSubsDelReq(t, &restSubId)
4523 sendAndReceiveMultipleE2DelReqs(t, e2SubsIds, e2termConn1)
4525 xappConn1.TestMsgChanEmpty(t)
4526 e2termConn1.TestMsgChanEmpty(t)
4527 mainCtrl.wait_registry_empty(t, 10)
4529 mainCtrl.VerifyCounterValues(t)
4531 func TestRESTTwoReportSubReqAndSubDelOk(t *testing.T) {
4535 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
4536 Counter{cRestSubReqFromXapp, 1},
4537 Counter{cSubReqToE2, uint64(subReqCount)},
4538 Counter{cSubRespFromE2, uint64(subReqCount)},
4539 Counter{cRestSubRespToXapp, uint64(subReqCount)},
4540 Counter{cRestSubDelReqFromXapp, 1},
4541 Counter{cSubDelReqToE2, uint64(subReqCount)},
4542 Counter{cSubDelRespFromE2, uint64(subReqCount)},
4543 Counter{cRestSubDelRespToXapp, 1},
4547 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
4548 restSubId := xappConn1.SendRESTSubsReq(t, params)
4549 e2SubsIds := sendAndReceiveMultipleE2SubReqs(t, subReqCount, xappConn1, e2termConn1, restSubId)
4551 assert.Equal(t, len(e2SubsIds), subReqCount)
4554 xappConn1.SendRESTSubsDelReq(t, &restSubId)
4555 sendAndReceiveMultipleE2DelReqs(t, e2SubsIds, e2termConn1)
4557 xappConn1.TestMsgChanEmpty(t)
4558 e2termConn1.TestMsgChanEmpty(t)
4559 mainCtrl.wait_registry_empty(t, 10)
4561 mainCtrl.VerifyCounterValues(t)
4564 func TestRESTTwoReportSubReqAndSubDelOkNoActParams(t *testing.T) {
4568 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
4569 Counter{cRestSubReqFromXapp, 1},
4570 Counter{cSubReqToE2, uint64(subReqCount)},
4571 Counter{cSubRespFromE2, uint64(subReqCount)},
4572 Counter{cRestSubRespToXapp, uint64(subReqCount)},
4573 Counter{cRestSubDelReqFromXapp, 1},
4574 Counter{cSubDelReqToE2, uint64(subReqCount)},
4575 Counter{cSubDelRespFromE2, uint64(subReqCount)},
4576 Counter{cRestSubDelRespToXapp, 1},
4580 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
4581 restSubId := xappConn1.SendRESTSubsReq(t, params)
4582 e2SubsIds := sendAndReceiveMultipleE2SubReqs(t, subReqCount, xappConn1, e2termConn1, restSubId)
4584 assert.Equal(t, len(e2SubsIds), subReqCount)
4587 xappConn1.SendRESTSubsDelReq(t, &restSubId)
4588 sendAndReceiveMultipleE2DelReqs(t, e2SubsIds, e2termConn1)
4590 xappConn1.TestMsgChanEmpty(t)
4591 e2termConn1.TestMsgChanEmpty(t)
4592 mainCtrl.wait_registry_empty(t, 10)
4594 mainCtrl.VerifyCounterValues(t)
4597 func TestRESTFullAmountReportSubReqAndSubDelOk(t *testing.T) {
4601 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
4602 Counter{cRestSubReqFromXapp, 1},
4603 Counter{cSubReqToE2, uint64(subReqCount)},
4604 Counter{cSubRespFromE2, uint64(subReqCount)},
4605 Counter{cRestSubRespToXapp, uint64(subReqCount)},
4606 Counter{cRestSubDelReqFromXapp, 1},
4607 Counter{cSubDelReqToE2, uint64(subReqCount)},
4608 Counter{cSubDelRespFromE2, uint64(subReqCount)},
4609 Counter{cRestSubDelRespToXapp, 1},
4613 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
4614 restSubId := xappConn1.SendRESTSubsReq(t, params)
4615 e2SubsIds := sendAndReceiveMultipleE2SubReqs(t, subReqCount, xappConn1, e2termConn1, restSubId)
4617 assert.Equal(t, len(e2SubsIds), subReqCount)
4620 xappConn1.SendRESTSubsDelReq(t, &restSubId)
4621 sendAndReceiveMultipleE2DelReqs(t, e2SubsIds, e2termConn1)
4623 xappConn1.TestMsgChanEmpty(t)
4624 e2termConn1.TestMsgChanEmpty(t)
4625 mainCtrl.wait_registry_empty(t, 10)
4627 mainCtrl.VerifyCounterValues(t)
4630 func TestRESTSubReqReportSameActionDiffEventTriggerDefinitionLen(t *testing.T) {
4631 CaseBegin("TestRESTSubReqReportSameActionDiffEventTriggerDefinitionLen")
4633 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
4634 Counter{cRestSubReqFromXapp, 2},
4635 Counter{cSubReqToE2, 2},
4636 Counter{cSubRespFromE2, 2},
4637 Counter{cRestSubRespToXapp, 2},
4638 Counter{cRestSubDelReqFromXapp, 2},
4639 Counter{cSubDelReqToE2, 2},
4640 Counter{cSubDelRespFromE2, 2},
4641 Counter{cRestSubDelRespToXapp, 2},
4645 var params *teststube2ap.RESTSubsReqParams = nil
4648 restSubId1, e2SubsId1 := createSubscription(t, xappConn1, e2termConn1, params)
4649 xapp.Logger.Info("Send REST subscriber request for subscriberId : %v", restSubId1)
4651 queryXappSubscription(t, int64(e2SubsId1), "RAN_NAME_1", []string{"localhost:13560"})
4654 params = xappConn2.GetRESTSubsReqReportParams(subReqCount)
4655 params.SetMeid("RAN_NAME_1")
4656 eventTriggerDefinition := "1234"
4657 params.SetSubEventTriggerDefinition(eventTriggerDefinition)
4659 restSubId2 := xappConn2.SendRESTSubsReq(t, params)
4660 xapp.Logger.Info("Send REST subscriber request for subscriberId : %v", restSubId2)
4661 crereq, cremsg := e2termConn1.RecvSubsReq(t)
4662 xappConn2.ExpectRESTNotification(t, restSubId2)
4663 e2termConn1.SendSubsResp(t, crereq, cremsg)
4664 e2SubsId2 := xappConn2.WaitRESTNotification(t, restSubId2)
4666 deleteXapp1Subscription(t, &restSubId1)
4667 deleteXapp2Subscription(t, &restSubId2)
4669 waitSubsCleanup(t, e2SubsId1, 10)
4670 waitSubsCleanup(t, e2SubsId2, 10)
4672 mainCtrl.VerifyCounterValues(t)
4676 func TestRESTSubReqReportSameActionDiffActionListLen(t *testing.T) {
4677 CaseBegin("TestRESTSubReqReportSameActionDiffActionListLen")
4679 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
4680 Counter{cRestSubReqFromXapp, 2},
4681 Counter{cSubReqToE2, 2},
4682 Counter{cSubRespFromE2, 2},
4683 Counter{cRestSubRespToXapp, 2},
4684 Counter{cRestSubDelReqFromXapp, 2},
4685 Counter{cSubDelReqToE2, 2},
4686 Counter{cSubDelRespFromE2, 2},
4687 Counter{cRestSubDelRespToXapp, 2},
4691 var params *teststube2ap.RESTSubsReqParams = nil
4694 restSubId1, e2SubsId1 := createSubscription(t, xappConn1, e2termConn1, params)
4695 xapp.Logger.Info("Send REST subscriber request for subscriberId : %v", restSubId1)
4697 queryXappSubscription(t, int64(e2SubsId1), "RAN_NAME_1", []string{"localhost:13560"})
4700 params = xappConn2.GetRESTSubsReqReportParams(subReqCount)
4701 params.SetMeid("RAN_NAME_1")
4703 actionId := int64(1)
4704 actionType := "report"
4705 actionDefinition := "56781"
4706 subsequestActionType := "continue"
4707 timeToWait := "w10ms"
4708 params.AppendActionToActionToBeSetupList(actionId, actionType, actionDefinition, subsequestActionType, timeToWait)
4710 restSubId2 := xappConn2.SendRESTSubsReq(t, params)
4711 xapp.Logger.Info("Send REST subscriber request for subscriberId : %v", restSubId2)
4712 crereq, cremsg := e2termConn1.RecvSubsReq(t)
4713 xappConn2.ExpectRESTNotification(t, restSubId2)
4714 e2termConn1.SendSubsResp(t, crereq, cremsg)
4715 e2SubsId2 := xappConn2.WaitRESTNotification(t, restSubId2)
4717 deleteXapp1Subscription(t, &restSubId1)
4718 deleteXapp2Subscription(t, &restSubId2)
4720 waitSubsCleanup(t, e2SubsId1, 10)
4721 waitSubsCleanup(t, e2SubsId2, 10)
4723 mainCtrl.VerifyCounterValues(t)
4727 func TestRESTSubReqReportSameActionDiffActionID(t *testing.T) {
4728 CaseBegin("TestRESTSubReqReportSameActionDiffActionID")
4730 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
4731 Counter{cRestSubReqFromXapp, 2},
4732 Counter{cSubReqToE2, 2},
4733 Counter{cSubRespFromE2, 2},
4734 Counter{cRestSubRespToXapp, 2},
4735 Counter{cRestSubDelReqFromXapp, 2},
4736 Counter{cSubDelReqToE2, 2},
4737 Counter{cSubDelRespFromE2, 2},
4738 Counter{cRestSubDelRespToXapp, 2},
4742 var params *teststube2ap.RESTSubsReqParams = nil
4745 restSubId1, e2SubsId1 := createSubscription(t, xappConn1, e2termConn1, params)
4746 xapp.Logger.Info("Send REST subscriber request for subscriberId : %v", restSubId1)
4748 queryXappSubscription(t, int64(e2SubsId1), "RAN_NAME_1", []string{"localhost:13560"})
4751 params = xappConn2.GetRESTSubsReqReportParams(subReqCount)
4752 params.SetMeid("RAN_NAME_1")
4753 params.SetSubActionIDs(int64(2))
4755 restSubId2 := xappConn2.SendRESTSubsReq(t, params)
4756 xapp.Logger.Info("Send REST subscriber request for subscriberId : %v", restSubId2)
4757 crereq, cremsg := e2termConn1.RecvSubsReq(t)
4758 xappConn2.ExpectRESTNotification(t, restSubId2)
4759 e2termConn1.SendSubsResp(t, crereq, cremsg)
4760 e2SubsId2 := xappConn2.WaitRESTNotification(t, restSubId2)
4762 deleteXapp1Subscription(t, &restSubId1)
4763 deleteXapp2Subscription(t, &restSubId2)
4765 waitSubsCleanup(t, e2SubsId1, 10)
4766 waitSubsCleanup(t, e2SubsId2, 10)
4768 mainCtrl.VerifyCounterValues(t)
4772 func TestRESTSubReqDiffActionType(t *testing.T) {
4773 CaseBegin("TestRESTSubReqDiffActionType")
4775 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
4776 Counter{cRestSubReqFromXapp, 2},
4777 Counter{cSubReqToE2, 2},
4778 Counter{cSubRespFromE2, 2},
4779 Counter{cRestSubRespToXapp, 2},
4780 Counter{cRestSubDelReqFromXapp, 2},
4781 Counter{cSubDelReqToE2, 2},
4782 Counter{cSubDelRespFromE2, 2},
4783 Counter{cRestSubDelRespToXapp, 2},
4787 params := xappConn1.GetRESTSubsReqPolicyParams(subReqCount)
4790 restSubId1, e2SubsId1 := createSubscription(t, xappConn1, e2termConn1, params)
4791 xapp.Logger.Info("Send REST subscriber request for subscriberId : %v", restSubId1)
4793 queryXappSubscription(t, int64(e2SubsId1), "RAN_NAME_1", []string{"localhost:13560"})
4796 params = xappConn2.GetRESTSubsReqReportParams(subReqCount)
4797 params.SetMeid("RAN_NAME_1")
4799 restSubId2 := xappConn2.SendRESTSubsReq(t, params)
4800 xapp.Logger.Info("Send REST subscriber request for subscriberId : %v", restSubId2)
4801 crereq, cremsg := e2termConn1.RecvSubsReq(t)
4802 xappConn2.ExpectRESTNotification(t, restSubId2)
4803 e2termConn1.SendSubsResp(t, crereq, cremsg)
4804 e2SubsId2 := xappConn2.WaitRESTNotification(t, restSubId2)
4806 deleteXapp1Subscription(t, &restSubId1)
4807 deleteXapp2Subscription(t, &restSubId2)
4809 waitSubsCleanup(t, e2SubsId1, 10)
4810 waitSubsCleanup(t, e2SubsId2, 10)
4812 mainCtrl.VerifyCounterValues(t)
4816 func TestRESTSubReqPolicyAndSubDelOkSameAction(t *testing.T) {
4817 CaseBegin("TestRESTSubReqPolicyAndSubDelOkSameAction")
4819 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
4820 Counter{cRestSubReqFromXapp, 2},
4821 Counter{cSubReqToE2, 2},
4822 Counter{cSubRespFromE2, 2},
4823 Counter{cRestSubRespToXapp, 2},
4824 Counter{cRestSubDelReqFromXapp, 2},
4825 Counter{cSubDelReqToE2, 2},
4826 Counter{cSubDelRespFromE2, 2},
4827 Counter{cRestSubDelRespToXapp, 2},
4831 params := xappConn1.GetRESTSubsReqPolicyParams(subReqCount)
4834 restSubId1, e2SubsId1 := createSubscription(t, xappConn1, e2termConn1, params)
4835 xapp.Logger.Info("Send REST subscriber request for subscriberId : %v", restSubId1)
4837 queryXappSubscription(t, int64(e2SubsId1), "RAN_NAME_1", []string{"localhost:13560"})
4840 params = xappConn2.GetRESTSubsReqPolicyParams(subReqCount)
4841 params.SetMeid("RAN_NAME_1")
4843 restSubId2 := xappConn2.SendRESTSubsReq(t, params)
4844 xapp.Logger.Info("Send REST subscriber request for subscriberId : %v", restSubId2)
4845 crereq, cremsg := e2termConn1.RecvSubsReq(t)
4846 xappConn2.ExpectRESTNotification(t, restSubId2)
4847 e2termConn1.SendSubsResp(t, crereq, cremsg)
4848 e2SubsId2 := xappConn2.WaitRESTNotification(t, restSubId2)
4850 deleteXapp1Subscription(t, &restSubId1)
4851 deleteXapp2Subscription(t, &restSubId2)
4853 waitSubsCleanup(t, e2SubsId1, 10)
4854 waitSubsCleanup(t, e2SubsId2, 10)
4856 mainCtrl.VerifyCounterValues(t)
4860 func TestRESTSubReqReportSameActionDiffActionDefinitionLen(t *testing.T) {
4861 CaseBegin("TestRESTSubReqReportSameActionDiffActionDefinitionLen")
4863 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
4864 Counter{cRestSubReqFromXapp, 2},
4865 Counter{cSubReqToE2, 2},
4866 Counter{cSubRespFromE2, 2},
4867 Counter{cRestSubRespToXapp, 2},
4868 Counter{cRestSubDelReqFromXapp, 2},
4869 Counter{cSubDelReqToE2, 2},
4870 Counter{cSubDelRespFromE2, 2},
4871 Counter{cRestSubDelRespToXapp, 2},
4875 var params *teststube2ap.RESTSubsReqParams = nil
4878 restSubId1, e2SubsId1 := createSubscription(t, xappConn1, e2termConn1, params)
4879 xapp.Logger.Info("Send REST subscriber request for subscriberId : %v", restSubId1)
4881 queryXappSubscription(t, int64(e2SubsId1), "RAN_NAME_1", []string{"localhost:13560"})
4884 params = xappConn2.GetRESTSubsReqReportParams(subReqCount)
4885 params.SetMeid("RAN_NAME_1")
4886 actionDefinition := "5678"
4887 params.SetSubActionDefinition(actionDefinition)
4889 restSubId2 := xappConn2.SendRESTSubsReq(t, params)
4890 xapp.Logger.Info("Send REST subscriber request for subscriberId : %v", restSubId2)
4891 crereq, cremsg := e2termConn1.RecvSubsReq(t)
4892 xappConn2.ExpectRESTNotification(t, restSubId2)
4893 e2termConn1.SendSubsResp(t, crereq, cremsg)
4894 e2SubsId2 := xappConn2.WaitRESTNotification(t, restSubId2)
4896 deleteXapp1Subscription(t, &restSubId1)
4897 deleteXapp2Subscription(t, &restSubId2)
4899 waitSubsCleanup(t, e2SubsId1, 10)
4900 waitSubsCleanup(t, e2SubsId2, 10)
4902 mainCtrl.VerifyCounterValues(t)
4906 func TestRESTSubReqReportSameActionDiffActionDefinitionContents(t *testing.T) {
4907 CaseBegin("TestRESTSubReqReportSameActionDiffActionDefinitionContents")
4909 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
4910 Counter{cRestSubReqFromXapp, 2},
4911 Counter{cSubReqToE2, 2},
4912 Counter{cSubRespFromE2, 2},
4913 Counter{cRestSubRespToXapp, 2},
4914 Counter{cRestSubDelReqFromXapp, 2},
4915 Counter{cSubDelReqToE2, 2},
4916 Counter{cSubDelRespFromE2, 2},
4917 Counter{cRestSubDelRespToXapp, 2},
4921 var params *teststube2ap.RESTSubsReqParams = nil
4924 restSubId1, e2SubsId1 := createSubscription(t, xappConn1, e2termConn1, params)
4925 xapp.Logger.Info("Send REST subscriber request for subscriberId : %v", restSubId1)
4927 queryXappSubscription(t, int64(e2SubsId1), "RAN_NAME_1", []string{"localhost:13560"})
4930 params = xappConn2.GetRESTSubsReqReportParams(subReqCount)
4931 params.SetMeid("RAN_NAME_1")
4932 actionDefinition := "56782"
4933 params.SetSubActionDefinition(actionDefinition)
4935 restSubId2 := xappConn2.SendRESTSubsReq(t, params)
4936 xapp.Logger.Info("Send REST subscriber request for subscriberId : %v", restSubId2)
4937 crereq, cremsg := e2termConn1.RecvSubsReq(t)
4938 xappConn2.ExpectRESTNotification(t, restSubId2)
4939 e2termConn1.SendSubsResp(t, crereq, cremsg)
4940 e2SubsId2 := xappConn2.WaitRESTNotification(t, restSubId2)
4942 deleteXapp1Subscription(t, &restSubId1)
4943 deleteXapp2Subscription(t, &restSubId2)
4945 waitSubsCleanup(t, e2SubsId1, 10)
4946 waitSubsCleanup(t, e2SubsId2, 10)
4948 mainCtrl.VerifyCounterValues(t)
4952 func TestRESTSubReqReportSameActionDiffSubsAction(t *testing.T) {
4953 CaseBegin("TestRESTSubReqReportSameActionDiffSubsAction")
4955 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
4956 Counter{cRestSubReqFromXapp, 2},
4957 Counter{cSubReqToE2, 2},
4958 Counter{cSubRespFromE2, 2},
4959 Counter{cRestSubRespToXapp, 2},
4960 Counter{cRestSubDelReqFromXapp, 2},
4961 Counter{cSubDelReqToE2, 2},
4962 Counter{cSubDelRespFromE2, 2},
4963 Counter{cRestSubDelRespToXapp, 2},
4967 var params *teststube2ap.RESTSubsReqParams = nil
4970 restSubId1, e2SubsId1 := createSubscription(t, xappConn1, e2termConn1, params)
4971 xapp.Logger.Info("Send REST subscriber request for subscriberId : %v", restSubId1)
4973 queryXappSubscription(t, int64(e2SubsId1), "RAN_NAME_1", []string{"localhost:13560"})
4976 params = xappConn2.GetRESTSubsReqReportParams(subReqCount)
4977 params.SetMeid("RAN_NAME_1")
4978 params.SetTimeToWait("w200ms")
4979 restSubId2 := xappConn2.SendRESTSubsReq(t, params)
4980 xapp.Logger.Info("Send REST subscriber request for subscriberId : %v", restSubId2)
4981 crereq, cremsg := e2termConn1.RecvSubsReq(t)
4982 xappConn2.ExpectRESTNotification(t, restSubId2)
4983 e2termConn1.SendSubsResp(t, crereq, cremsg)
4984 e2SubsId2 := xappConn2.WaitRESTNotification(t, restSubId2)
4986 deleteXapp1Subscription(t, &restSubId1)
4987 deleteXapp2Subscription(t, &restSubId2)
4989 waitSubsCleanup(t, e2SubsId1, 10)
4990 waitSubsCleanup(t, e2SubsId2, 10)
4992 mainCtrl.VerifyCounterValues(t)
4996 //-----------------------------------------------------------------------------
4997 // TestRESTUnpackSubscriptionResponseDecodeFail
5000 // +-------+ +---------+ +---------+
5001 // | xapp | | submgr | | e2term |
5002 // +-------+ +---------+ +---------+
5005 // |---------------->| |
5007 // | RESTSubResp | |
5008 // |<----------------| |
5011 // | |------------->|
5013 // | | SubResp | ASN.1 decode fails
5014 // | |<-------------|
5017 // | |------------->|
5019 // | | SubFail | Duplicated action
5020 // | |<-------------|
5021 // | RESTNotif (fail)| |
5022 // |<----------------| |
5024 // | |------------->|
5027 // | |<-------------|
5029 //-----------------------------------------------------------------------------
5030 func TestRESTUnpackSubscriptionResponseDecodeFail(t *testing.T) {
5031 xapp.Logger.Info("TEST: TestRESTUnpackSubscriptionResponseDecodeFail")
5035 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
5036 restSubId := xappConn1.SendRESTSubsReq(t, params)
5038 crereq, cremsg := e2termConn1.RecvSubsReq(t)
5039 // Decode of this response fails which will result resending original request
5040 e2termConn1.SendInvalidE2Asn1Resp(t, cremsg, xapp.RIC_SUB_RESP)
5042 _, cremsg = e2termConn1.RecvSubsReq(t)
5044 xappConn1.ExpectRESTNotification(t, restSubId)
5046 // Subscription already created in E2 Node.
5047 fparams := &teststube2ap.E2StubSubsFailParams{}
5049 fparams.SetCauseVal(0, 1, 3) // CauseRIC / duplicate-action
5050 e2termConn1.SendSubsFail(t, fparams, cremsg)
5052 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
5053 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
5055 instanceId := xappConn1.WaitRESTNotification(t, restSubId)
5056 xapp.Logger.Info("TEST: REST notification received e2SubsId=%v", instanceId)
5058 // Wait that subs is cleaned
5059 mainCtrl.wait_subs_clean(t, crereq.RequestId.InstanceId, 10)
5061 xappConn1.TestMsgChanEmpty(t)
5062 e2termConn1.TestMsgChanEmpty(t)
5063 mainCtrl.wait_registry_empty(t, 10)
5066 //-----------------------------------------------------------------------------
5067 // TestRESTUnpackSubscriptionResponseUnknownInstanceId
5070 // +-------+ +---------+ +---------+
5071 // | xapp | | submgr | | e2term |
5072 // +-------+ +---------+ +---------+
5075 // |---------------->| |
5077 // | RESTSubResp | |
5078 // |<----------------| |
5081 // | |------------->|
5083 // | | SubResp | Unknown instanceId
5084 // | |<-------------|
5087 // | |------------->|
5089 // | | SubFail | Duplicated action
5090 // | |<-------------|
5091 // | RESTNotif (fail)| |
5092 // |<----------------| |
5094 // | |------------->|
5097 // | |<-------------|
5099 //-----------------------------------------------------------------------------
5100 func TestRESTUnpackSubscriptionResponseUnknownInstanceId(t *testing.T) {
5101 xapp.Logger.Info("TEST: TestRESTUnpackSubscriptionResponseUnknownInstanceId")
5105 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
5106 restSubId := xappConn1.SendRESTSubsReq(t, params)
5108 crereq, cremsg := e2termConn1.RecvSubsReq(t)
5110 // Unknown instanceId in this response which will result resending original request
5111 orgInstanceId := crereq.RequestId.InstanceId
5112 crereq.RequestId.InstanceId = 0
5113 e2termConn1.SendSubsResp(t, crereq, cremsg)
5115 _, cremsg = e2termConn1.RecvSubsReq(t)
5117 xappConn1.ExpectRESTNotification(t, restSubId)
5119 // Subscription already created in E2 Node.
5120 fparams := &teststube2ap.E2StubSubsFailParams{}
5122 fparams.SetCauseVal(0, 1, 3) // CauseRIC / duplicate-action
5123 e2termConn1.SendSubsFail(t, fparams, cremsg)
5125 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
5126 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
5128 instanceId := xappConn1.WaitRESTNotification(t, restSubId)
5129 xapp.Logger.Info("TEST: REST notification received e2SubsId=%v", instanceId)
5131 // Wait that subs is cleaned
5132 mainCtrl.wait_subs_clean(t, orgInstanceId, 10)
5134 xappConn1.TestMsgChanEmpty(t)
5135 e2termConn1.TestMsgChanEmpty(t)
5136 mainCtrl.wait_registry_empty(t, 10)
5139 //-----------------------------------------------------------------------------
5140 // TestRESTUnpackSubscriptionResponseNoTransaction
5143 // +-------+ +---------+ +---------+
5144 // | xapp | | submgr | | e2term |
5145 // +-------+ +---------+ +---------+
5148 // |---------------->| |
5150 // | RESTSubResp | |
5151 // |<----------------| |
5154 // | |------------->|
5156 // | | SubResp | No transaction for the response
5157 // | |<-------------|
5160 // | |------------->|
5162 // | | SubFail | Duplicated action
5163 // | |<-------------|
5164 // | RESTNotif (fail)| |
5165 // |<----------------| |
5167 // | |------------->|
5170 // | |<-------------|
5173 // | |------------->|
5176 // | |<-------------|
5178 //-----------------------------------------------------------------------------
5179 func TestRESTUnpackSubscriptionResponseNoTransaction(t *testing.T) {
5180 xapp.Logger.Info("TEST: TestRESTUnpackSubscriptionResponseNoTransaction")
5184 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
5185 restSubId := xappConn1.SendRESTSubsReq(t, params)
5187 crereq, cremsg := e2termConn1.RecvSubsReq(t)
5189 mainCtrl.MakeTransactionNil(t, crereq.RequestId.InstanceId)
5190 // No transaction exist for this response which will result resending original request
5191 e2termConn1.SendSubsResp(t, crereq, cremsg)
5193 _, cremsg = e2termConn1.RecvSubsReq(t)
5195 xappConn1.ExpectRESTNotification(t, restSubId)
5197 // Subscription already created in E2 Node.
5198 fparams := &teststube2ap.E2StubSubsFailParams{}
5200 fparams.SetCauseVal(0, 1, 3) // CauseRIC / duplicate-action
5201 e2termConn1.SendSubsFail(t, fparams, cremsg)
5203 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
5204 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
5206 // Resending happens because there no transaction
5207 delreq, delmsg = e2termConn1.RecvSubsDelReq(t)
5208 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
5210 instanceId := xappConn1.WaitRESTNotification(t, restSubId)
5211 xapp.Logger.Info("TEST: REST notification received e2SubsId=%v", instanceId)
5213 // Wait that subs is cleaned
5214 mainCtrl.wait_subs_clean(t, crereq.RequestId.InstanceId, 10)
5216 xappConn1.TestMsgChanEmpty(t)
5217 e2termConn1.TestMsgChanEmpty(t)
5218 mainCtrl.wait_registry_empty(t, 10)
5222 //-----------------------------------------------------------------------------
5223 // TestRESTUnpackSubscriptionFailureDecodeFail
5226 // +-------+ +---------+ +---------+
5227 // | xapp | | submgr | | e2term |
5228 // +-------+ +---------+ +---------+
5231 // |---------------->| |
5233 // | RESTSubResp | |
5234 // |<----------------| |
5237 // | |------------->|
5239 // | | SubFail | ASN.1 decode fails
5240 // | |<-------------|
5243 // | |------------->|
5245 // | | SubFail | Duplicated action
5246 // | |<-------------|
5247 // | RESTNotif (fail)| |
5248 // |<----------------| |
5250 // | |------------->|
5253 // | |<-------------|
5255 //-----------------------------------------------------------------------------
5256 func TestRESTUnpackSubscriptionFailureDecodeFail(t *testing.T) {
5257 xapp.Logger.Info("TEST: TestRESTUnpackSubscriptionFailureDecodeFail")
5261 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
5262 restSubId := xappConn1.SendRESTSubsReq(t, params)
5264 crereq, cremsg := e2termConn1.RecvSubsReq(t)
5266 // Decode of this response fails which will result resending original request
5267 e2termConn1.SendInvalidE2Asn1Resp(t, cremsg, xapp.RIC_SUB_FAILURE)
5269 _, cremsg = e2termConn1.RecvSubsReq(t)
5271 xappConn1.ExpectRESTNotification(t, restSubId)
5273 // Subscription already created in E2 Node.
5274 fparams := &teststube2ap.E2StubSubsFailParams{}
5276 fparams.SetCauseVal(0, 1, 3) // CauseRIC / duplicate-action
5277 e2termConn1.SendSubsFail(t, fparams, cremsg)
5279 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
5280 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
5282 instanceId := xappConn1.WaitRESTNotification(t, restSubId)
5283 xapp.Logger.Info("TEST: REST notification received e2SubsId=%v", instanceId)
5285 // Wait that subs is cleaned
5286 mainCtrl.wait_subs_clean(t, crereq.RequestId.InstanceId, 10)
5288 xappConn1.TestMsgChanEmpty(t)
5289 e2termConn1.TestMsgChanEmpty(t)
5290 mainCtrl.wait_registry_empty(t, 10)
5293 //-----------------------------------------------------------------------------
5294 // TestRESTUnpackSubscriptionResponseUnknownInstanceId
5297 // +-------+ +---------+ +---------+
5298 // | xapp | | submgr | | e2term |
5299 // +-------+ +---------+ +---------+
5302 // |---------------->| |
5304 // | RESTSubResp | |
5305 // |<----------------| |
5308 // | |------------->|
5310 // | | SubFail | Unknown instanceId
5311 // | |<-------------|
5314 // | |------------->|
5316 // | | SubFail | Duplicated action
5317 // | |<-------------|
5318 // | RESTNotif (fail)| |
5319 // |<----------------| |
5321 // | |------------->|
5324 // | |<-------------|
5326 //-----------------------------------------------------------------------------
5327 func TestRESTUnpackSubscriptionFailureUnknownInstanceId(t *testing.T) {
5328 xapp.Logger.Info("TEST: TestRESTUnpackSubscriptionFailureUnknownInstanceId")
5332 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
5333 restSubId := xappConn1.SendRESTSubsReq(t, params)
5335 crereq, cremsg := e2termConn1.RecvSubsReq(t)
5337 // Unknown instanceId in this response which will result resending original request
5338 fparams := &teststube2ap.E2StubSubsFailParams{}
5340 fparams.Fail.RequestId.InstanceId = 0
5341 e2termConn1.SendSubsFail(t, fparams, cremsg)
5343 _, cremsg = e2termConn1.RecvSubsReq(t)
5345 xappConn1.ExpectRESTNotification(t, restSubId)
5347 // Subscription already created in E2 Node.
5348 fparams.SetCauseVal(0, 1, 3) // CauseRIC / duplicate-action
5349 e2termConn1.SendSubsFail(t, fparams, cremsg)
5351 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
5352 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
5354 instanceId := xappConn1.WaitRESTNotification(t, restSubId)
5355 xapp.Logger.Info("TEST: REST notification received e2SubsId=%v", instanceId)
5357 // Wait that subs is cleaned
5358 mainCtrl.wait_subs_clean(t, crereq.RequestId.InstanceId, 10)
5360 xappConn1.TestMsgChanEmpty(t)
5361 e2termConn1.TestMsgChanEmpty(t)
5362 mainCtrl.wait_registry_empty(t, 10)
5365 //-----------------------------------------------------------------------------
5366 // TestRESTUnpackSubscriptionFailureNoTransaction
5369 // +-------+ +---------+ +---------+
5370 // | xapp | | submgr | | e2term |
5371 // +-------+ +---------+ +---------+
5374 // |---------------->| |
5376 // | RESTSubResp | |
5377 // |<----------------| |
5380 // | |------------->|
5382 // | | SubFail | No transaction for the response
5383 // | |<-------------|
5386 // | |------------->|
5388 // | | SubFail | Duplicated action
5389 // | |<-------------|
5390 // | RESTNotif (fail)| |
5391 // |<----------------| |
5393 // | |------------->|
5396 // | |<-------------|
5398 //-----------------------------------------------------------------------------
5399 func TestRESTUnpackSubscriptionFailureNoTransaction(t *testing.T) {
5400 xapp.Logger.Info("TEST: TestRESTUnpackSubscriptionFailureNoTransaction")
5404 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
5405 restSubId := xappConn1.SendRESTSubsReq(t, params)
5407 crereq, cremsg := e2termConn1.RecvSubsReq(t)
5409 mainCtrl.MakeTransactionNil(t, crereq.RequestId.InstanceId)
5411 // No transaction exist for this response which will result resending original request
5412 fparams := &teststube2ap.E2StubSubsFailParams{}
5414 e2termConn1.SendSubsFail(t, fparams, cremsg)
5416 _, cremsg = e2termConn1.RecvSubsReq(t)
5418 xappConn1.ExpectRESTNotification(t, restSubId)
5420 // Subscription already created in E2 Node.
5421 fparams.SetCauseVal(0, 1, 3) // CauseRIC / duplicate-action
5422 e2termConn1.SendSubsFail(t, fparams, cremsg)
5424 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
5425 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
5427 // Resending happens because there no transaction
5428 delreq, delmsg = e2termConn1.RecvSubsDelReq(t)
5429 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
5431 instanceId := xappConn1.WaitRESTNotification(t, restSubId)
5432 xapp.Logger.Info("TEST: REST notification received e2SubsId=%v", instanceId)
5434 // Wait that subs is cleaned
5435 mainCtrl.wait_subs_clean(t, crereq.RequestId.InstanceId, 10)
5437 xappConn1.TestMsgChanEmpty(t)
5438 e2termConn1.TestMsgChanEmpty(t)
5439 mainCtrl.wait_registry_empty(t, 10)
5442 //-----------------------------------------------------------------------------
5443 // TestRESTUnpackSubscriptionDeleteResponseDecodeFail
5446 // +-------+ +---------+ +---------+
5447 // | xapp | | submgr | | e2term |
5448 // +-------+ +---------+ +---------+
5450 // | [SUBS CREATE] |
5453 // | RESTSubDelReq | |
5454 // |---------------->| |
5456 // | RESTSubDelResp | |
5457 // |<----------------| |
5460 // | |------------->|
5462 // | | SubDelResp | ASN.1 decode fails
5463 // | |<-------------|
5466 // | |------------->|
5468 // | | SubDelFail | Subscription does exist any more
5469 // | |<-------------|
5472 //-----------------------------------------------------------------------------
5473 func TestRESTUnpackSubscriptionDeleteResponseDecodeFail(t *testing.T) {
5474 xapp.Logger.Info("TEST: TestRESTUnpackSubscriptionDeleteResponseDecodeFail")
5477 var params *teststube2ap.RESTSubsReqParams = nil
5478 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
5481 xappConn1.SendRESTSubsDelReq(t, &restSubId)
5483 // E2t: Receive 1st SubsDelReq
5484 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
5486 // Decode of this response fails which will result resending original request
5487 e2termConn1.SendInvalidE2Asn1Resp(t, delmsg, xapp.RIC_SUB_DEL_REQ)
5489 // E2t: Receive 2nd SubsDelReq and send SubsDelResp
5490 delreq, delmsg = e2termConn1.RecvSubsDelReq(t)
5492 // Subscription does not exist in in E2 Node.
5493 e2termConn1.SendSubsDelFail(t, delreq, delmsg)
5495 // Wait that subs is cleaned
5496 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
5498 xappConn1.TestMsgChanEmpty(t)
5499 e2termConn1.TestMsgChanEmpty(t)
5500 mainCtrl.wait_registry_empty(t, 10)
5503 //-----------------------------------------------------------------------------
5504 // TestRESTUnpackSubscriptionDeleteResponseUnknownInstanceId
5507 // +-------+ +---------+ +---------+
5508 // | xapp | | submgr | | e2term |
5509 // +-------+ +---------+ +---------+
5511 // | [SUBS CREATE] |
5514 // | RESTSubDelReq | |
5515 // |---------------->| |
5517 // | RESTSubDelResp | |
5518 // |<----------------| |
5521 // | |------------->|
5523 // | | SubDelResp | Unknown instanceId
5524 // | |<-------------|
5527 // | |------------->|
5529 // | | SubDelFail | Subscription does exist any more
5530 // | |<-------------|
5532 //-----------------------------------------------------------------------------
5533 func TestRESTUnpackSubscriptionDeleteResponseUnknownInstanceId(t *testing.T) {
5534 xapp.Logger.Info("TEST: TestRESTUnpackSubscriptionDeleteResponseUnknownInstanceId")
5537 var params *teststube2ap.RESTSubsReqParams = nil
5538 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
5541 xappConn1.SendRESTSubsDelReq(t, &restSubId)
5543 // E2t: Receive 1st SubsDelReq
5544 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
5546 // Unknown instanceId in this response which will result resending original request
5547 delreq.RequestId.InstanceId = 0
5548 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
5550 // E2t: Receive 2nd SubsDelReq
5551 delreq, delmsg = e2termConn1.RecvSubsDelReq(t)
5553 // Subscription does not exist in in E2 Node.
5554 e2termConn1.SendSubsDelFail(t, delreq, delmsg)
5556 // Wait that subs is cleaned
5557 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
5559 xappConn1.TestMsgChanEmpty(t)
5560 e2termConn1.TestMsgChanEmpty(t)
5561 mainCtrl.wait_registry_empty(t, 10)
5564 //-----------------------------------------------------------------------------
5565 // TestRESTUnpackSubscriptionDeleteResponseNoTransaction
5568 // +-------+ +---------+ +---------+
5569 // | xapp | | submgr | | e2term |
5570 // +-------+ +---------+ +---------+
5572 // | [SUBS CREATE] |
5575 // | RESTSubDelReq | |
5576 // |---------------->| |
5578 // | RESTSubDelResp | |
5579 // |<----------------| |
5582 // | |------------->|
5584 // | | SubDelResp | No transaction for the response
5585 // | |<-------------|
5588 // | |------------->|
5590 // | | SubDelFail | Subscription does exist any more
5591 // | |<-------------|
5593 //-----------------------------------------------------------------------------
5594 func TestRESTUnpackSubscriptionDeleteResponseNoTransaction(t *testing.T) {
5595 xapp.Logger.Info("TEST: TestRESTUnpackSubscriptionDeleteResponseNoTransaction")
5598 var params *teststube2ap.RESTSubsReqParams = nil
5599 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
5602 xappConn1.SendRESTSubsDelReq(t, &restSubId)
5604 // E2t: Receive 1st SubsDelReq
5605 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
5607 mainCtrl.MakeTransactionNil(t, e2SubsId)
5609 // No transaction exist for this response which will result resending original request
5610 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
5612 // E2t: Receive 2nd SubsDelReq
5613 delreq, delmsg = e2termConn1.RecvSubsDelReq(t)
5615 // Subscription does not exist in in E2 Node.
5616 e2termConn1.SendSubsDelFail(t, delreq, delmsg)
5618 // Wait that subs is cleaned
5619 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
5621 xappConn1.TestMsgChanEmpty(t)
5622 e2termConn1.TestMsgChanEmpty(t)
5623 mainCtrl.wait_registry_empty(t, 10)
5626 //-----------------------------------------------------------------------------
5627 // TestRESTUnpackSubscriptionDeleteFailureDecodeFail
5630 // +-------+ +---------+ +---------+
5631 // | xapp | | submgr | | e2term |
5632 // +-------+ +---------+ +---------+
5634 // | [SUBS CREATE] |
5637 // | RESTSubDelReq | |
5638 // |---------------->| |
5640 // | RESTSubDelResp | |
5641 // |<----------------| |
5644 // | |------------->|
5646 // | | SubDelFail | ASN.1 decode fails
5647 // | |<-------------|
5650 // | |------------->|
5652 // | | SubDelFail | Subscription does exist any more
5653 // | |<-------------|
5655 //-----------------------------------------------------------------------------
5656 func TestRESTUnpackSubscriptionDeleteFailureDecodeFail(t *testing.T) {
5657 xapp.Logger.Info("TEST: TestRESTUnpackSubscriptionDeleteFailureDecodeFail")
5660 var params *teststube2ap.RESTSubsReqParams = nil
5661 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
5664 xappConn1.SendRESTSubsDelReq(t, &restSubId)
5666 // E2t: Receive 1st SubsDelReq
5667 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
5669 // Decode of this response fails which will result resending original request
5670 e2termConn1.SendInvalidE2Asn1Resp(t, delmsg, xapp.RIC_SUB_DEL_FAILURE)
5672 // E2t: Receive 2nd SubsDelReq and send SubsDelResp
5673 delreq, delmsg = e2termConn1.RecvSubsDelReq(t)
5675 // Subscription does not exist in in E2 Node.
5676 e2termConn1.SendSubsDelFail(t, delreq, delmsg)
5678 // Wait that subs is cleaned
5679 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
5681 xappConn1.TestMsgChanEmpty(t)
5682 e2termConn1.TestMsgChanEmpty(t)
5683 mainCtrl.wait_registry_empty(t, 10)
5686 //-----------------------------------------------------------------------------
5687 // TestRESTUnpackSubscriptionDeleteailureUnknownInstanceId
5690 // +-------+ +---------+ +---------+
5691 // | xapp | | submgr | | e2term |
5692 // +-------+ +---------+ +---------+
5694 // | [SUBS CREATE] |
5697 // | RESTSubDelReq | |
5698 // |---------------->| |
5700 // | RESTSubDelResp | |
5701 // |<----------------| |
5704 // | |------------->|
5706 // | | SubDelFail | Unknown instanceId
5707 // | |<-------------|
5710 // | |------------->|
5712 // | | SubDelFail | Subscription does exist any more
5713 // | |<-------------|
5715 //-----------------------------------------------------------------------------
5716 func TestRESTUnpackSubscriptionDeleteailureUnknownInstanceId(t *testing.T) {
5717 xapp.Logger.Info("TEST: TestRESTUnpackSubscriptionDeleteailureUnknownInstanceId")
5720 var params *teststube2ap.RESTSubsReqParams = nil
5721 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
5724 xappConn1.SendRESTSubsDelReq(t, &restSubId)
5726 // E2t: Receive 1st SubsDelReq
5727 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
5729 // Unknown instanceId in this response which will result resending original request
5730 delreq.RequestId.InstanceId = 0
5731 e2termConn1.SendSubsDelFail(t, delreq, delmsg)
5733 // E2t: Receive 2nd SubsDelReq
5734 delreq, delmsg = e2termConn1.RecvSubsDelReq(t)
5736 // Subscription does not exist in in E2 Node.
5737 e2termConn1.SendSubsDelFail(t, delreq, delmsg)
5739 // Wait that subs is cleaned
5740 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
5742 xappConn1.TestMsgChanEmpty(t)
5743 e2termConn1.TestMsgChanEmpty(t)
5744 mainCtrl.wait_registry_empty(t, 10)
5747 //-----------------------------------------------------------------------------
5748 // TestRESTUnpackSubscriptionDeleteFailureNoTransaction
5751 // +-------+ +---------+ +---------+
5752 // | xapp | | submgr | | e2term |
5753 // +-------+ +---------+ +---------+
5755 // | [SUBS CREATE] |
5758 // | RESTSubDelReq | |
5759 // |---------------->| |
5761 // | RESTSubDelResp | |
5762 // |<----------------| |
5765 // | |------------->|
5767 // | | SubDelFail | No transaction for the response
5768 // | |<-------------|
5771 // | |------------->|
5773 // | | SubDelFail | Subscription does exist any more
5774 // | |<-------------|
5776 //-----------------------------------------------------------------------------
5777 func TestRESTUnpackSubscriptionDeleteFailureNoTransaction(t *testing.T) {
5778 xapp.Logger.Info("TEST: TestRESTUnpackSubscriptionDeleteFailureNoTransaction")
5781 var params *teststube2ap.RESTSubsReqParams = nil
5782 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
5785 xappConn1.SendRESTSubsDelReq(t, &restSubId)
5787 // E2t: Receive 1st SubsDelReq
5788 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
5790 mainCtrl.MakeTransactionNil(t, e2SubsId)
5792 // No transaction exist for this response which will result resending original request
5793 e2termConn1.SendSubsDelFail(t, delreq, delmsg)
5795 // E2t: Receive 2nd SubsDelReq
5796 delreq, delmsg = e2termConn1.RecvSubsDelReq(t)
5798 // Subscription does not exist in in E2 Node.
5799 e2termConn1.SendSubsDelFail(t, delreq, delmsg)
5801 // Wait that subs is cleaned
5802 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
5804 xappConn1.TestMsgChanEmpty(t)
5805 e2termConn1.TestMsgChanEmpty(t)
5806 mainCtrl.wait_registry_empty(t, 10)
5809 //-----------------------------------------------------------------------------
5810 // TestRESTSubReqFailAsn1PackSubReqError
5813 // +-------+ +---------+ +---------+
5814 // | xapp | | submgr | | e2term |
5815 // +-------+ +---------+ +---------+
5818 // |---------------->| |
5820 // | RESTSubResp | |
5821 // |<----------------| |
5823 // | ASN.1 encode fails |
5826 // | |------------->|
5829 // | |<-------------|
5833 // |<----------------| |
5835 // | [SUBS DELETE] |
5838 //-----------------------------------------------------------------------------
5839 func TestRESTSubReqFailAsn1PackSubReqError(t *testing.T) {
5841 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
5842 Counter{cRestSubReqFromXapp, 1},
5843 Counter{cSubDelReqToE2, 1},
5844 Counter{cSubDelFailFromE2, 1},
5845 Counter{cRestSubFailToXapp, 1},
5850 var params *teststube2ap.RESTSubsReqParams = nil
5851 params = xappConn1.GetRESTSubsReqReportParams(subReqCount)
5852 e2ap_wrapper.AllowE2apToProcess(e2ap_wrapper.SUB_REQ, false)
5855 restSubId := xappConn1.SendRESTSubsReq(t, params)
5856 xapp.Logger.Info("Send REST subscriber request for subscriberId : %v", restSubId)
5858 // E2t: Receive SubsDelReq
5859 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
5860 xappConn1.ExpectRESTNotification(t, restSubId)
5862 // Subscription does not exist in in E2 Node.
5863 e2termConn1.SendSubsDelFail(t, delreq, delmsg)
5865 e2SubsId := xappConn1.WaitRESTNotification(t, restSubId)
5866 xapp.Logger.Info("TEST: REST notification received e2SubsId=%v", e2SubsId)
5868 e2ap_wrapper.AllowE2apToProcess(e2ap_wrapper.SUB_REQ, true)
5869 // Wait that subs is cleaned
5870 waitSubsCleanup(t, e2SubsId, 10)
5871 mainCtrl.VerifyCounterValues(t)
5874 ////////////////////////////////////////////////////////////////////////////////////
5875 // Services for UT cases
5876 ////////////////////////////////////////////////////////////////////////////////////
5877 const subReqCount int = 1
5878 const host string = "localhost"
5880 func createSubscription(t *testing.T, fromXappConn *teststube2ap.E2Stub, toE2termConn *teststube2ap.E2Stub, params *teststube2ap.RESTSubsReqParams) (string, uint32) {
5882 params = fromXappConn.GetRESTSubsReqReportParams(subReqCount)
5884 restSubId := fromXappConn.SendRESTSubsReq(t, params)
5885 xapp.Logger.Info("Send REST subscriber request for subscriberId : %v", restSubId)
5887 crereq1, cremsg1 := toE2termConn.RecvSubsReq(t)
5888 fromXappConn.ExpectRESTNotification(t, restSubId)
5889 toE2termConn.SendSubsResp(t, crereq1, cremsg1)
5890 e2SubsId := fromXappConn.WaitRESTNotification(t, restSubId)
5891 xapp.Logger.Info("REST notification received e2SubsId=%v", e2SubsId)
5893 return restSubId, e2SubsId
5896 func createXapp2MergedSubscription(t *testing.T, meid string) (string, uint32) {
5898 params := xappConn2.GetRESTSubsReqReportParams(subReqCount)
5900 params.SetMeid(meid)
5902 xapp.Subscription.SetResponseCB(xappConn2.SubscriptionRespHandler)
5903 restSubId := xappConn2.SendRESTSubsReq(t, params)
5904 xappConn2.ExpectRESTNotification(t, restSubId)
5905 xapp.Logger.Info("Send REST subscriber request for subscriberId : %v", restSubId)
5906 e2SubsId := xappConn2.WaitRESTNotification(t, restSubId)
5907 xapp.Logger.Info("REST notification received e2SubsId=%v", e2SubsId)
5909 return restSubId, e2SubsId
5912 func createXapp1PolicySubscription(t *testing.T) (string, uint32) {
5913 params := xappConn1.GetRESTSubsReqPolicyParams(subReqCount)
5914 restSubId := xappConn1.SendRESTSubsReq(t, params)
5915 xapp.Logger.Info("Send REST Policy subscriber request for subscriberId : %v", restSubId)
5917 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
5918 xappConn1.ExpectRESTNotification(t, restSubId)
5919 e2termConn1.SendSubsResp(t, crereq1, cremsg1)
5920 e2SubsId := xappConn1.WaitRESTNotification(t, restSubId)
5921 xapp.Logger.Info("REST notification received e2SubsId=%v", e2SubsId)
5923 return restSubId, e2SubsId
5926 func createXapp1ReportSubscriptionE2Fail(t *testing.T) (string, uint32) {
5927 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
5928 restSubId := xappConn1.SendRESTSubsReq(t, params)
5930 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
5931 fparams1 := &teststube2ap.E2StubSubsFailParams{}
5932 fparams1.Set(crereq1)
5933 e2termConn1.SendSubsFail(t, fparams1, cremsg1)
5935 delreq1, delmsg1 := e2termConn1.RecvSubsDelReq(t)
5936 xappConn1.ExpectRESTNotification(t, restSubId)
5937 e2termConn1.SendSubsDelResp(t, delreq1, delmsg1)
5938 e2SubsId := xappConn1.WaitRESTNotification(t, restSubId)
5939 xapp.Logger.Info("TEST: REST notification received e2SubsId=%v", e2SubsId)
5941 return restSubId, e2SubsId
5944 func deleteSubscription(t *testing.T, fromXappConn *teststube2ap.E2Stub, toE2termConn *teststube2ap.E2Stub, restSubId *string) {
5945 fromXappConn.SendRESTSubsDelReq(t, restSubId)
5946 delreq, delmsg := toE2termConn.RecvSubsDelReq(t)
5947 toE2termConn.SendSubsDelResp(t, delreq, delmsg)
5950 func deleteXapp1Subscription(t *testing.T, restSubId *string) {
5951 xappConn1.SendRESTSubsDelReq(t, restSubId)
5952 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
5953 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
5956 func deleteXapp2Subscription(t *testing.T, restSubId *string) {
5957 xappConn2.SendRESTSubsDelReq(t, restSubId)
5958 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
5959 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
5962 func queryXappSubscription(t *testing.T, e2SubsId int64, meid string, endpoint []string) {
5963 resp, _ := xapp.Subscription.QuerySubscriptions()
5964 assert.Equal(t, resp[0].SubscriptionID, e2SubsId)
5965 assert.Equal(t, resp[0].Meid, meid)
5966 assert.Equal(t, resp[0].ClientEndpoint, endpoint)
5969 func waitSubsCleanup(t *testing.T, e2SubsId uint32, timeout int) {
5970 //Wait that subs is cleaned
5971 mainCtrl.wait_subs_clean(t, e2SubsId, timeout)
5973 xappConn1.TestMsgChanEmpty(t)
5974 xappConn2.TestMsgChanEmpty(t)
5975 e2termConn1.TestMsgChanEmpty(t)
5976 mainCtrl.wait_registry_empty(t, timeout)
5979 func sendAndReceiveMultipleE2SubReqs(t *testing.T, count int, fromXappConn *teststube2ap.E2Stub, toE2termConn *teststube2ap.E2Stub, restSubId string) []uint32 {
5981 var e2SubsId []uint32
5983 for i := 0; i < count; i++ {
5984 xapp.Logger.Info("TEST: %d ===================================== BEGIN CRE ============================================", i+1)
5985 crereq, cremsg := toE2termConn.RecvSubsReq(t)
5986 fromXappConn.ExpectRESTNotification(t, restSubId)
5987 toE2termConn.SendSubsResp(t, crereq, cremsg)
5988 instanceId := fromXappConn.WaitRESTNotification(t, restSubId)
5989 e2SubsId = append(e2SubsId, instanceId)
5990 xapp.Logger.Info("TEST: %v", e2SubsId)
5991 xapp.Logger.Info("TEST: %d ===================================== END CRE ============================================", i+1)
5992 <-time.After(100 * time.Millisecond)
5997 func sendAndReceiveMultipleE2DelReqs(t *testing.T, e2SubsIds []uint32, toE2termConn *teststube2ap.E2Stub) {
5999 for i := 0; i < len(e2SubsIds); i++ {
6000 xapp.Logger.Info("TEST: %d ===================================== BEGIN DEL ============================================", i+1)
6001 delreq, delmsg := toE2termConn.RecvSubsDelReq(t)
6002 toE2termConn.SendSubsDelResp(t, delreq, delmsg)
6003 <-time.After(1 * time.Second)
6004 xapp.Logger.Info("TEST: %d ===================================== END DEL ============================================", i+1)
6005 <-time.After(100 * time.Millisecond)
6008 // Wait that subs is cleaned
6009 for i := 0; i < len(e2SubsIds); i++ {
6010 mainCtrl.wait_subs_clean(t, e2SubsIds[i], 10)