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 ==================================================================================
27 "gerrit.o-ran-sc.org/r/ric-plt/e2ap/pkg/e2ap"
28 "gerrit.o-ran-sc.org/r/ric-plt/e2ap/pkg/e2ap_wrapper"
29 "gerrit.o-ran-sc.org/r/ric-plt/submgr/pkg/teststube2ap"
30 "gerrit.o-ran-sc.org/r/ric-plt/xapp-frame/pkg/xapp"
31 "github.com/stretchr/testify/assert"
34 func TestSuiteSetup(t *testing.T) {
35 // The effect of this call shall endure thgough the UT suite!
36 // If this causes any issues, the previout interface can be restored
38 // SetPackerIf(e2ap_wrapper.NewAsn1E2APPacker())
40 SetPackerIf(e2ap_wrapper.NewUtAsn1E2APPacker())
42 restDuplicateCtrl.Init()
46 //-----------------------------------------------------------------------------
47 // TestRESTSubReqAndDeleteOkWithE2apUtWrapper
50 // +-------+ +---------+ +---------+ +---------+
51 // | xapp | | submgr | | e2term | | rtmgr |
52 // +-------+ +---------+ +---------+ +---------+
55 // |---------------->| | |
56 // | | RouteCreate | |
57 // | |--------------------------->| // The order of these events may vary
59 // | RESTSubResp | | | // The order of these events may vary
60 // |<----------------| | |
61 // | | RouteResponse| |
62 // | |<---------------------------| // The order of these events may vary
65 // | |------------->| | // The order of these events may vary
68 // | |<-------------| |
70 // |<----------------| | |
72 // | RESTSubDelReq | | |
73 // |---------------->| | |
75 // | |------------->| |
77 // | RESTSubDelResp| | |
78 // |<----------------| | |
81 // | |<-------------| |
85 //-----------------------------------------------------------------------------
86 func TestRESTSubReqAndDeleteOkWithE2apUtWrapper(t *testing.T) {
88 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, nil)
90 deleteSubscription(t, xappConn1, e2termConn1, &restSubId)
92 waitSubsCleanup(t, e2SubsId, 10)
95 //-----------------------------------------------------------------------------
96 // TestRESTSubReqAndE1apDeleteReqPackingError
99 // +-------+ +---------+ +---------+ +---------+
100 // | xapp | | submgr | | e2term | | rtmgr |
101 // +-------+ +---------+ +---------+ +---------+
103 // | RESTSubReq | | |
104 // |---------------->| | |
105 // | | RouteCreate | |
106 // | |--------------------------->| // The order of these events may vary
108 // | RESTSubResp | | | // The order of these events may vary
109 // |<----------------| | |
110 // | | RouteResponse| |
111 // | |<---------------------------| // The order of these events may vary
114 // | |------------->| | // The order of these events may vary
117 // | |<-------------| |
118 // | RESTNotif1 | | |
119 // |<----------------| | |
121 // | RESTSubDelReq | | |
122 // |---------------->| | |
124 // | RESTSubDelResp| | |
125 // |<----------------| | |
129 //-----------------------------------------------------------------------------
130 func TestRESTSubReqAndE1apDeleteReqPackingError(t *testing.T) {
132 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, nil)
134 e2ap_wrapper.AllowE2apToProcess(e2ap_wrapper.SUB_DEL_REQ, false)
135 xappConn1.SendRESTSubsDelReq(t, &restSubId)
136 defer e2ap_wrapper.AllowE2apToProcess(e2ap_wrapper.SUB_DEL_REQ, true)
138 waitSubsCleanup(t, e2SubsId, 10)
141 //-----------------------------------------------------------------------------
142 // TestRESTSubReqAndE1apDeleteRespUnpackingError
145 // +-------+ +---------+ +---------+ +---------+
146 // | xapp | | submgr | | e2term | | rtmgr |
147 // +-------+ +---------+ +---------+ +---------+
149 // | RESTSubReq | | |
150 // |---------------->| | |
151 // | | RouteCreate | |
152 // | |--------------------------->| // The order of these events may vary
154 // | RESTSubResp | | | // The order of these events may vary
155 // |<----------------| | |
156 // | | RouteResponse| |
157 // | |<---------------------------| // The order of these events may vary
160 // | |------------->| | // The order of these events may vary
163 // | |<-------------| |
164 // | RESTNotif1 | | |
165 // |<----------------| | |
167 // | RESTSubDelReq | | |
168 // |---------------->| | |
170 // | |------------->| |
172 // | RESTSubDelResp| | |
173 // |<----------------| | | // The order of these events may vary
175 // | | SubDelResp | |
176 // | |<-------------| | // 1.st NOK
179 // | |------------->| |
181 // | | SubDelResp | |
182 // | |<-------------| | // 2.nd NOK
184 //-----------------------------------------------------------------------------
186 func TestRESTSubReqAndE1apDeleteRespUnpackingError(t *testing.T) {
188 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, nil)
190 xappConn1.SendRESTSubsDelReq(t, &restSubId)
191 e2ap_wrapper.AllowE2apToProcess(e2ap_wrapper.SUB_DEL_RESP, false)
192 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
193 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
195 delreq, delmsg = e2termConn1.RecvSubsDelReq(t)
196 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
198 defer e2ap_wrapper.AllowE2apToProcess(e2ap_wrapper.SUB_DEL_RESP, true)
200 waitSubsCleanup(t, e2SubsId, 10)
203 //-----------------------------------------------------------------------------
204 // TestSubReqAndRouteNok
207 // +-------+ +---------+ +---------+
208 // | xapp | | submgr | | rtmgr |
209 // +-------+ +---------+ +---------+
212 // |------------->| |
215 // | |------------->|
219 // | |<-------------|
221 // | [SUBS INT DELETE] |
224 //-----------------------------------------------------------------------------
226 func TestSubReqAndRouteNok(t *testing.T) {
227 CaseBegin("TestSubReqAndRouteNok")
229 // Init counter check
230 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
231 Counter{cSubReqFromXapp, 1},
232 Counter{cRouteCreateFail, 1},
235 waiter := rtmgrHttp.AllocNextEvent(false)
236 newSubsId := mainCtrl.get_registry_next_subid(t)
237 xappConn1.SendSubsReq(t, nil, nil)
240 //Wait that subs is cleaned
241 mainCtrl.wait_subs_clean(t, newSubsId, 10)
243 xappConn1.TestMsgChanEmpty(t)
244 xappConn2.TestMsgChanEmpty(t)
245 e2termConn1.TestMsgChanEmpty(t)
246 mainCtrl.wait_registry_empty(t, 10)
248 <-time.After(1 * time.Second)
249 mainCtrl.VerifyCounterValues(t)
252 //-----------------------------------------------------------------------------
253 // TestSubReqAndRouteUpdateNok
256 // +-------+ +-------+ +---------+ +---------+
257 // | xapp2 | | xapp1 | | submgr | | rtmgr |
258 // +-------+ +-------+ +---------+ +---------+
260 // | [SUBS CREATE] | |
264 // | SubReq (mergeable) | |
265 // |--------------------------->| | |
267 // | | | RouteUpdate |
268 // | | |------------->|
270 // | | | RouteUpdate |
271 // | | | status:400 |
272 // | | |<-------------|
274 // | [SUBS INT DELETE] | |
277 // | [SUBS DELETE] | |
280 func TestSubReqAndRouteUpdateNok(t *testing.T) {
281 CaseBegin("TestSubReqAndRouteUpdateNok")
283 // Init counter check
284 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
285 Counter{cSubReqFromXapp, 2},
286 Counter{cSubReqToE2, 1},
287 Counter{cSubRespFromE2, 1},
288 Counter{cSubRespToXapp, 1},
289 Counter{cRouteCreateUpdateFail, 1},
290 Counter{cSubDelReqFromXapp, 1},
291 Counter{cSubDelReqToE2, 1},
292 Counter{cSubDelRespFromE2, 1},
293 Counter{cSubDelRespToXapp, 1},
296 cretrans := xappConn1.SendSubsReq(t, nil, nil)
297 crereq, cremsg := e2termConn1.RecvSubsReq(t)
298 e2termConn1.SendSubsResp(t, crereq, cremsg)
299 e2SubsId := xappConn1.RecvSubsResp(t, cretrans)
301 resp, _ := xapp.Subscription.QuerySubscriptions()
302 assert.Equal(t, resp[0].SubscriptionID, int64(e2SubsId))
303 assert.Equal(t, resp[0].Meid, "RAN_NAME_1")
304 assert.Equal(t, resp[0].ClientEndpoint, []string{"localhost:13560"})
306 waiter := rtmgrHttp.AllocNextEvent(false)
307 newSubsId := mainCtrl.get_registry_next_subid(t)
308 xappConn2.SendSubsReq(t, nil, nil)
311 deltrans := xappConn1.SendSubsDelReq(t, nil, e2SubsId)
312 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
314 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
315 xappConn1.RecvSubsDelResp(t, deltrans)
317 //Wait that subs is cleaned
318 mainCtrl.wait_subs_clean(t, newSubsId, 10)
319 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
321 xappConn1.TestMsgChanEmpty(t)
322 xappConn2.TestMsgChanEmpty(t)
323 e2termConn1.TestMsgChanEmpty(t)
324 mainCtrl.wait_registry_empty(t, 10)
326 mainCtrl.VerifyCounterValues(t)
329 //-----------------------------------------------------------------------------
330 // TestSubDelReqAndRouteDeleteNok
333 // +-------+ +---------+ +---------+ +---------+
334 // | xapp | | submgr | | e2term | | rtmgr |
335 // +-------+ +---------+ +---------+ +---------+
337 // | [SUBS CREATE] | |
342 // |------------->| | |
344 // | |------------->| |
346 // | |<-------------| |
348 // |<-------------| | |
349 // | | RouteDelete | |
350 // | |---------------------------->|
352 // | | RouteDelete | |
353 // | | status:400 | |
354 // | |<----------------------------|
356 func TestSubDelReqAndRouteDeleteNok(t *testing.T) {
357 CaseBegin("TestSubDelReqAndRouteDeleteNok")
359 // Init counter check
360 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
361 Counter{cSubReqFromXapp, 1},
362 Counter{cSubReqToE2, 1},
363 Counter{cSubRespFromE2, 1},
364 Counter{cSubRespToXapp, 1},
365 Counter{cSubDelReqFromXapp, 1},
366 Counter{cRouteDeleteFail, 1},
367 Counter{cSubDelReqToE2, 1},
368 Counter{cSubDelRespFromE2, 1},
369 Counter{cSubDelRespToXapp, 1},
372 cretrans := xappConn1.SendSubsReq(t, nil, nil)
373 crereq, cremsg := e2termConn1.RecvSubsReq(t)
374 e2termConn1.SendSubsResp(t, crereq, cremsg)
375 e2SubsId := xappConn1.RecvSubsResp(t, cretrans)
377 resp, _ := xapp.Subscription.QuerySubscriptions()
378 assert.Equal(t, resp[0].SubscriptionID, int64(e2SubsId))
379 assert.Equal(t, resp[0].Meid, "RAN_NAME_1")
380 assert.Equal(t, resp[0].ClientEndpoint, []string{"localhost:13560"})
382 deltrans := xappConn1.SendSubsDelReq(t, nil, e2SubsId)
383 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
385 waiter := rtmgrHttp.AllocNextEvent(false)
386 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
389 xappConn1.RecvSubsDelResp(t, deltrans)
391 //Wait that subs is cleaned
392 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
394 xappConn1.TestMsgChanEmpty(t)
395 xappConn2.TestMsgChanEmpty(t)
396 e2termConn1.TestMsgChanEmpty(t)
397 mainCtrl.wait_registry_empty(t, 10)
399 mainCtrl.VerifyCounterValues(t)
402 //-----------------------------------------------------------------------------
403 // TestSubMergeDelAndRouteUpdateNok
405 // +-------+ +-------+ +---------+ +---------+
406 // | xapp2 | | xapp1 | | submgr | | e2term |
407 // +-------+ +-------+ +---------+ +---------+
412 // | |------------->| |
415 // | | |------------->|
417 // | | |<-------------|
419 // | |<-------------| |
422 // |--------------------------->| |
425 // |<---------------------------| |
427 // | | SubDelReq 1 | |
428 // | |------------->| |
429 // | | | RouteUpdate |
430 // | | |-----> rtmgr |
432 // | | | RouteUpdate |
433 // | | | status:400 |
434 // | | |<----- rtmgr |
436 // | | SubDelResp 1 | |
437 // | |<-------------| |
440 // |--------------------------->| |
442 // | | | SubDelReq 2 |
443 // | | |------------->|
445 // | | | SubDelReq 2 |
446 // | | |------------->|
448 // | SubDelResp 2 | |
449 // |<---------------------------| |
451 //-----------------------------------------------------------------------------
452 func TestSubMergeDelAndRouteUpdateNok(t *testing.T) {
453 CaseBegin("TestSubMergeDelAndRouteUpdateNok")
455 // Init counter check
456 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
457 Counter{cSubReqFromXapp, 2},
458 Counter{cSubReqToE2, 1},
459 Counter{cSubRespFromE2, 1},
460 Counter{cSubRespToXapp, 2},
461 Counter{cSubDelReqFromXapp, 2},
462 Counter{cRouteDeleteUpdateFail, 1},
463 Counter{cSubDelReqToE2, 1},
464 Counter{cSubDelRespFromE2, 1},
465 Counter{cSubDelRespToXapp, 2},
469 rparams1 := &teststube2ap.E2StubSubsReqParams{}
471 cretrans1 := xappConn1.SendSubsReq(t, rparams1, nil)
472 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
473 e2termConn1.SendSubsResp(t, crereq1, cremsg1)
474 e2SubsId1 := xappConn1.RecvSubsResp(t, cretrans1)
477 rparams2 := &teststube2ap.E2StubSubsReqParams{}
479 cretrans2 := xappConn2.SendSubsReq(t, rparams2, nil)
480 e2SubsId2 := xappConn2.RecvSubsResp(t, cretrans2)
482 resp, _ := xapp.Subscription.QuerySubscriptions()
483 assert.Equal(t, resp[0].SubscriptionID, int64(e2SubsId1))
484 assert.Equal(t, resp[0].Meid, "RAN_NAME_1")
485 assert.Equal(t, resp[0].ClientEndpoint, []string{"localhost:13560", "localhost:13660"})
488 waiter := rtmgrHttp.AllocNextEvent(false)
489 deltrans1 := xappConn1.SendSubsDelReq(t, nil, e2SubsId1)
492 xappConn1.RecvSubsDelResp(t, deltrans1)
495 deltrans2 := xappConn2.SendSubsDelReq(t, nil, e2SubsId2)
496 delreq2, delmsg2 := e2termConn1.RecvSubsDelReq(t)
497 e2termConn1.SendSubsDelResp(t, delreq2, delmsg2)
498 xappConn2.RecvSubsDelResp(t, deltrans2)
499 //Wait that subs is cleaned
500 mainCtrl.wait_subs_clean(t, e2SubsId2, 10)
502 xappConn1.TestMsgChanEmpty(t)
503 xappConn2.TestMsgChanEmpty(t)
504 e2termConn1.TestMsgChanEmpty(t)
505 mainCtrl.wait_registry_empty(t, 10)
507 mainCtrl.VerifyCounterValues(t)
510 //-----------------------------------------------------------------------------
512 //-----------------------------------------------------------------------------
513 // TestSubReqAndSubDelOk
516 // +-------+ +---------+ +---------+
517 // | xapp | | submgr | | e2term |
518 // +-------+ +---------+ +---------+
521 // |------------->| |
524 // | |------------->|
527 // | |<-------------|
530 // |<-------------| |
534 // |------------->| |
537 // | |------------->|
540 // | |<-------------|
543 // |<-------------| |
545 //-----------------------------------------------------------------------------
546 func TestSubReqAndSubDelOk(t *testing.T) {
547 CaseBegin("TestSubReqAndSubDelOk")
549 // Init counter check
550 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
551 Counter{cSubReqFromXapp, 1},
552 Counter{cSubReqToE2, 1},
553 Counter{cSubRespFromE2, 1},
554 Counter{cSubRespToXapp, 1},
555 Counter{cSubDelReqFromXapp, 1},
556 Counter{cSubDelReqToE2, 1},
557 Counter{cSubDelRespFromE2, 1},
558 Counter{cSubDelRespToXapp, 1},
561 cretrans := xappConn1.SendSubsReq(t, nil, nil)
562 crereq, cremsg := e2termConn1.RecvSubsReq(t)
563 e2termConn1.SendSubsResp(t, crereq, cremsg)
564 e2SubsId := xappConn1.RecvSubsResp(t, cretrans)
566 resp, _ := xapp.Subscription.QuerySubscriptions()
567 assert.Equal(t, resp[0].SubscriptionID, int64(e2SubsId))
568 assert.Equal(t, resp[0].Meid, "RAN_NAME_1")
569 assert.Equal(t, resp[0].ClientEndpoint, []string{"localhost:13560"})
571 deltrans := xappConn1.SendSubsDelReq(t, nil, e2SubsId)
572 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
574 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
575 xappConn1.RecvSubsDelResp(t, deltrans)
577 //Wait that subs is cleaned
578 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
580 xappConn1.TestMsgChanEmpty(t)
581 xappConn2.TestMsgChanEmpty(t)
582 e2termConn1.TestMsgChanEmpty(t)
583 mainCtrl.wait_registry_empty(t, 10)
585 mainCtrl.VerifyCounterValues(t)
588 //-----------------------------------------------------------------------------
589 // TestSubReqRetransmission
592 // +-------+ +---------+ +---------+
593 // | xapp | | submgr | | e2term |
594 // +-------+ +---------+ +---------+
597 // |------------->| |
600 // | |------------->|
604 // |------------->| |
607 // | |<-------------|
610 // |<-------------| |
615 //-----------------------------------------------------------------------------
616 func TestSubReqRetransmission(t *testing.T) {
617 CaseBegin("TestSubReqRetransmission")
620 cretrans := xappConn1.SendSubsReq(t, nil, nil)
621 crereq, cremsg := e2termConn1.RecvSubsReq(t)
623 seqBef := mainCtrl.get_msgcounter(t)
624 xappConn1.SendSubsReq(t, nil, cretrans) //Retransmitted SubReq
625 mainCtrl.wait_msgcounter_change(t, seqBef, 10)
627 // hack as there is no real way to see has message be handled.
628 // Previuos counter check just tells that is has been received by submgr
629 // --> artificial delay
630 <-time.After(1 * time.Second)
631 e2termConn1.SendSubsResp(t, crereq, cremsg)
632 e2SubsId := xappConn1.RecvSubsResp(t, cretrans)
635 deltrans := xappConn1.SendSubsDelReq(t, nil, e2SubsId)
636 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
637 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
638 xappConn1.RecvSubsDelResp(t, deltrans)
640 //Wait that subs is cleaned
641 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
643 xappConn1.TestMsgChanEmpty(t)
644 xappConn2.TestMsgChanEmpty(t)
645 e2termConn1.TestMsgChanEmpty(t)
646 mainCtrl.wait_registry_empty(t, 10)
649 //-----------------------------------------------------------------------------
650 // TestSubDelReqRetransmission
653 // +-------+ +---------+ +---------+
654 // | xapp | | submgr | | e2term |
655 // +-------+ +---------+ +---------+
661 // |------------->| |
664 // | |------------->|
669 // |------------->| |
672 // | |<-------------|
675 // |<-------------| |
677 //-----------------------------------------------------------------------------
678 func TestSubDelReqRetransmission(t *testing.T) {
679 CaseBegin("TestSubDelReqRetransmission")
682 cretrans := xappConn1.SendSubsReq(t, nil, nil)
683 crereq, cremsg := e2termConn1.RecvSubsReq(t)
684 e2termConn1.SendSubsResp(t, crereq, cremsg)
685 e2SubsId := xappConn1.RecvSubsResp(t, cretrans)
688 deltrans := xappConn1.SendSubsDelReq(t, nil, e2SubsId)
689 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
691 seqBef := mainCtrl.get_msgcounter(t)
692 xappConn1.SendSubsDelReq(t, deltrans, e2SubsId) //Retransmitted SubDelReq
693 mainCtrl.wait_msgcounter_change(t, seqBef, 10)
695 // hack as there is no real way to see has message be handled.
696 // Previuos counter check just tells that is has been received by submgr
697 // --> artificial delay
698 <-time.After(1 * time.Second)
700 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
701 xappConn1.RecvSubsDelResp(t, deltrans)
703 //Wait that subs is cleaned
704 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
706 xappConn1.TestMsgChanEmpty(t)
707 xappConn2.TestMsgChanEmpty(t)
708 e2termConn1.TestMsgChanEmpty(t)
709 mainCtrl.wait_registry_empty(t, 10)
712 //-----------------------------------------------------------------------------
713 // TestSubDelReqCollision
716 // +-------+ +---------+ +---------+
717 // | xapp | | submgr | | e2term |
718 // +-------+ +---------+ +---------+
724 // |------------->| |
727 // | |------------->|
732 // |------------->| |
734 // | | SubDelResp 1 |
735 // | |<-------------|
737 // | SubDelResp 1 | |
738 // |<-------------| |
740 // | SubDelResp 2 | |
741 // |<-------------| |
743 //-----------------------------------------------------------------------------
745 func TestSubDelReqCollision(t *testing.T) {
746 CaseBegin("TestSubDelReqCollision")
749 cretrans := xappConn1.SendSubsReq(t, nil, nil)
750 crereq, cremsg := e2termConn1.RecvSubsReq(t)
751 e2termConn1.SendSubsResp(t, crereq, cremsg)
752 e2SubsId := xappConn1.RecvSubsResp(t, cretrans)
755 xappConn1.SendSubsDelReq(t, nil, e2SubsId)
756 delreq1, delmsg1 := e2termConn1.RecvSubsDelReq(t)
758 // Subs Delete colliding
759 seqBef := mainCtrl.get_msgcounter(t)
760 deltranscol2 := xappConn1.NewRmrTransactionId("", "RAN_NAME_1")
761 xappConn1.SendSubsDelReq(t, deltranscol2, e2SubsId) //Colliding SubDelReq
762 mainCtrl.wait_msgcounter_change(t, seqBef, 10)
764 // hack as there is no real way to see has message be handled.
765 // Previuos counter check just tells that is has been received by submgr
766 // --> artificial delay
767 <-time.After(1 * time.Second)
769 // Del resp for first and second
770 e2termConn1.SendSubsDelResp(t, delreq1, delmsg1)
772 // don't care in which order responses are received
773 xappConn1.RecvSubsDelResp(t, nil)
774 xappConn1.RecvSubsDelResp(t, nil)
776 //Wait that subs is cleaned
777 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
779 xappConn1.TestMsgChanEmpty(t)
780 xappConn2.TestMsgChanEmpty(t)
781 e2termConn1.TestMsgChanEmpty(t)
782 mainCtrl.wait_registry_empty(t, 10)
785 //-----------------------------------------------------------------------------
786 // TestSubReqAndSubDelOkTwoParallel
789 // +-------+ +-------+ +---------+ +---------+
790 // | xapp | | xapp | | submgr | | e2term |
791 // +-------+ +-------+ +---------+ +---------+
796 // | |------------->| |
799 // | | |------------->|
802 // |------------------------>| |
805 // | | |------------->|
808 // | | |<-------------|
810 // | |<-------------| |
813 // | | |<-------------|
815 // |<------------------------| |
817 // | | [SUBS 1 DELETE] |
819 // | | [SUBS 2 DELETE] |
822 //-----------------------------------------------------------------------------
824 func TestSubReqAndSubDelOkTwoParallel(t *testing.T) {
825 CaseBegin("TestSubReqAndSubDelOkTwoParallel")
828 rparams1 := &teststube2ap.E2StubSubsReqParams{}
830 cretrans1 := xappConn1.SendSubsReq(t, rparams1, nil)
831 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
834 rparams2 := &teststube2ap.E2StubSubsReqParams{}
837 rparams2.Req.EventTriggerDefinition.Data.Length = 1
838 rparams2.Req.EventTriggerDefinition.Data.Data = make([]uint8, rparams2.Req.EventTriggerDefinition.Data.Length)
839 rparams2.Req.EventTriggerDefinition.Data.Data[0] = 2
841 cretrans2 := xappConn2.SendSubsReq(t, rparams2, nil)
842 crereq2, cremsg2 := e2termConn1.RecvSubsReq(t)
845 e2termConn1.SendSubsResp(t, crereq1, cremsg1)
846 e2SubsId1 := xappConn1.RecvSubsResp(t, cretrans1)
849 e2termConn1.SendSubsResp(t, crereq2, cremsg2)
850 e2SubsId2 := xappConn2.RecvSubsResp(t, cretrans2)
853 deltrans1 := xappConn1.SendSubsDelReq(t, nil, e2SubsId1)
854 delreq1, delmsg1 := e2termConn1.RecvSubsDelReq(t)
855 e2termConn1.SendSubsDelResp(t, delreq1, delmsg1)
856 xappConn1.RecvSubsDelResp(t, deltrans1)
857 //Wait that subs is cleaned
858 mainCtrl.wait_subs_clean(t, e2SubsId1, 10)
861 deltrans2 := xappConn2.SendSubsDelReq(t, nil, e2SubsId2)
862 delreq2, delmsg2 := e2termConn1.RecvSubsDelReq(t)
863 e2termConn1.SendSubsDelResp(t, delreq2, delmsg2)
864 xappConn2.RecvSubsDelResp(t, deltrans2)
865 //Wait that subs is cleaned
866 mainCtrl.wait_subs_clean(t, e2SubsId2, 10)
868 xappConn1.TestMsgChanEmpty(t)
869 xappConn2.TestMsgChanEmpty(t)
870 e2termConn1.TestMsgChanEmpty(t)
871 mainCtrl.wait_registry_empty(t, 10)
874 //-----------------------------------------------------------------------------
875 // TestSameSubsDiffRan
876 // Same subscription to different RANs
879 // +-------+ +---------+ +---------+
880 // | xapp | | submgr | | e2term |
881 // +-------+ +---------+ +---------+
886 // |------------->| |
889 // | |------------->|
892 // | |<-------------|
895 // |<-------------| |
898 // |------------->| |
901 // | |------------->|
904 // | |<-------------|
907 // |<-------------| |
909 // | [SUBS r1 DELETE] |
911 // | [SUBS r2 DELETE] |
914 //-----------------------------------------------------------------------------
915 func TestSameSubsDiffRan(t *testing.T) {
916 CaseBegin("TestSameSubsDiffRan")
919 cretrans1 := xappConn1.NewRmrTransactionId("", "RAN_NAME_1")
920 xappConn1.SendSubsReq(t, nil, cretrans1)
921 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
922 e2termConn1.SendSubsResp(t, crereq1, cremsg1)
923 e2SubsId1 := xappConn1.RecvSubsResp(t, cretrans1)
926 cretrans2 := xappConn1.NewRmrTransactionId("", "RAN_NAME_2")
927 xappConn1.SendSubsReq(t, nil, cretrans2)
928 crereq2, cremsg2 := e2termConn1.RecvSubsReq(t)
929 e2termConn1.SendSubsResp(t, crereq2, cremsg2)
930 e2SubsId2 := xappConn1.RecvSubsResp(t, cretrans2)
933 deltrans1 := xappConn1.NewRmrTransactionId("", "RAN_NAME_1")
934 xappConn1.SendSubsDelReq(t, deltrans1, e2SubsId1)
935 delreq1, delmsg1 := e2termConn1.RecvSubsDelReq(t)
936 e2termConn1.SendSubsDelResp(t, delreq1, delmsg1)
937 xappConn1.RecvSubsDelResp(t, deltrans1)
938 //Wait that subs is cleaned
939 mainCtrl.wait_subs_clean(t, e2SubsId1, 10)
942 deltrans2 := xappConn1.NewRmrTransactionId("", "RAN_NAME_2")
943 xappConn1.SendSubsDelReq(t, deltrans2, e2SubsId2)
944 delreq2, delmsg2 := e2termConn1.RecvSubsDelReq(t)
945 e2termConn1.SendSubsDelResp(t, delreq2, delmsg2)
946 xappConn1.RecvSubsDelResp(t, deltrans2)
947 //Wait that subs is cleaned
948 mainCtrl.wait_subs_clean(t, e2SubsId2, 10)
950 xappConn1.TestMsgChanEmpty(t)
951 xappConn2.TestMsgChanEmpty(t)
952 e2termConn1.TestMsgChanEmpty(t)
953 mainCtrl.wait_registry_empty(t, 10)
956 //-----------------------------------------------------------------------------
957 // TestSubReqRetryInSubmgr
960 // +-------+ +---------+ +---------+
961 // | xapp | | submgr | | e2term |
962 // +-------+ +---------+ +---------+
965 // |------------->| |
968 // | |------------->|
972 // | |------------->|
975 // | |<-------------|
978 // |<-------------| |
983 //-----------------------------------------------------------------------------
985 func TestSubReqRetryInSubmgr(t *testing.T) {
986 CaseBegin("TestSubReqRetryInSubmgr start")
988 // Init counter check
989 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
990 Counter{cSubReqFromXapp, 1},
991 Counter{cSubReqToE2, 1},
992 Counter{cSubReReqToE2, 1},
993 Counter{cSubRespFromE2, 1},
994 Counter{cSubRespToXapp, 1},
995 Counter{cSubDelReqFromXapp, 1},
996 Counter{cSubDelReqToE2, 1},
997 Counter{cSubDelRespFromE2, 1},
998 Counter{cSubDelRespToXapp, 1},
1001 // Xapp: Send SubsReq
1002 cretrans := xappConn1.SendSubsReq(t, nil, nil)
1004 // E2t: Receive 1st SubsReq
1005 e2termConn1.RecvSubsReq(t)
1007 // E2t: Receive 2nd SubsReq and send SubsResp
1008 crereq, cremsg := e2termConn1.RecvSubsReq(t)
1009 e2termConn1.SendSubsResp(t, crereq, cremsg)
1011 // Xapp: Receive SubsResp
1012 e2SubsId := xappConn1.RecvSubsResp(t, cretrans)
1014 deltrans := xappConn1.SendSubsDelReq(t, nil, e2SubsId)
1015 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
1016 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
1017 xappConn1.RecvSubsDelResp(t, deltrans)
1019 // Wait that subs is cleaned
1020 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
1022 xappConn1.TestMsgChanEmpty(t)
1023 xappConn2.TestMsgChanEmpty(t)
1024 e2termConn1.TestMsgChanEmpty(t)
1025 mainCtrl.wait_registry_empty(t, 10)
1027 mainCtrl.VerifyCounterValues(t)
1030 //-----------------------------------------------------------------------------
1031 // TestSubReqTwoRetriesNoRespSubDelRespInSubmgr
1034 // +-------+ +---------+ +---------+
1035 // | xapp | | submgr | | e2term |
1036 // +-------+ +---------+ +---------+
1039 // |------------->| |
1042 // | |------------->|
1046 // | |------------->|
1049 // | |------------->|
1052 // | |<-------------|
1055 //-----------------------------------------------------------------------------
1056 func TestSubReqRetryNoRespSubDelRespInSubmgr(t *testing.T) {
1057 CaseBegin("TestSubReqTwoRetriesNoRespSubDelRespInSubmgr start")
1059 // Init counter check
1060 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
1061 Counter{cSubReqFromXapp, 1},
1062 Counter{cSubReqToE2, 1},
1063 Counter{cSubReReqToE2, 1},
1064 Counter{cSubReqTimerExpiry, 2},
1065 Counter{cSubDelReqToE2, 1},
1066 Counter{cSubDelRespFromE2, 1},
1069 // Xapp: Send SubsReq
1070 xappConn1.SendSubsReq(t, nil, nil)
1072 // E2t: Receive 1st SubsReq
1073 e2termConn1.RecvSubsReq(t)
1075 // E2t: Receive 2nd SubsReq
1076 e2termConn1.RecvSubsReq(t)
1078 // E2t: Send receive SubsDelReq and send SubsResp
1079 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
1080 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
1082 // Wait that subs is cleaned
1083 mainCtrl.wait_subs_clean(t, delreq.RequestId.InstanceId, 10)
1085 xappConn1.TestMsgChanEmpty(t)
1086 xappConn2.TestMsgChanEmpty(t)
1087 e2termConn1.TestMsgChanEmpty(t)
1088 mainCtrl.wait_registry_empty(t, 10)
1090 mainCtrl.VerifyCounterValues(t)
1093 //-----------------------------------------------------------------------------
1094 // TestSubReqTwoRetriesNoRespAtAllInSubmgr
1097 // +-------+ +---------+ +---------+
1098 // | xapp | | submgr | | e2term |
1099 // +-------+ +---------+ +---------+
1102 // |------------->| |
1105 // | |------------->|
1109 // | |------------->|
1112 // | |------------->|
1116 // | |------------->|
1120 //-----------------------------------------------------------------------------
1122 func TestSubReqTwoRetriesNoRespAtAllInSubmgr(t *testing.T) {
1123 CaseBegin("TestSubReqTwoRetriesNoRespAtAllInSubmgr start")
1125 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
1126 Counter{cSubReqFromXapp, 1},
1127 Counter{cSubReqToE2, 1},
1128 Counter{cSubReReqToE2, 1},
1129 Counter{cSubReqTimerExpiry, 2},
1130 Counter{cSubDelReqToE2, 1},
1131 Counter{cSubDelReReqToE2, 1},
1132 Counter{cSubDelReqTimerExpiry, 2},
1135 // Xapp: Send SubsReq
1136 xappConn1.SendSubsReq(t, nil, nil)
1138 // E2t: Receive 1st SubsReq
1139 e2termConn1.RecvSubsReq(t)
1141 // E2t: Receive 2nd SubsReq
1142 e2termConn1.RecvSubsReq(t)
1144 // E2t: Receive 1st SubsDelReq
1145 e2termConn1.RecvSubsDelReq(t)
1147 // E2t: Receive 2nd SubsDelReq
1148 delreq, _ := e2termConn1.RecvSubsDelReq(t)
1150 // Wait that subs is cleaned
1151 mainCtrl.wait_subs_clean(t, delreq.RequestId.InstanceId, 15)
1153 xappConn1.TestMsgChanEmpty(t)
1154 xappConn2.TestMsgChanEmpty(t)
1155 e2termConn1.TestMsgChanEmpty(t)
1156 mainCtrl.wait_registry_empty(t, 10)
1158 mainCtrl.VerifyCounterValues(t)
1161 //-----------------------------------------------------------------------------
1162 // TestSubReqSubFailRespInSubmgr
1165 // +-------+ +---------+ +---------+
1166 // | xapp | | submgr | | e2term |
1167 // +-------+ +---------+ +---------+
1170 // |------------->| |
1173 // | |------------->|
1176 // | |<-------------|
1179 // | |------------->|
1182 // | |<-------------|
1185 // |<-------------| |
1188 //-----------------------------------------------------------------------------
1190 func TestSubReqSubFailRespInSubmgr(t *testing.T) {
1191 CaseBegin("TestSubReqSubFailRespInSubmgr start")
1193 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
1194 Counter{cSubReqFromXapp, 1},
1195 Counter{cSubReqToE2, 1},
1196 Counter{cSubFailFromE2, 1},
1197 Counter{cSubFailToXapp, 1},
1200 // Xapp: Send SubsReq
1201 cretrans := xappConn1.SendSubsReq(t, nil, nil)
1203 // E2t: Receive SubsReq and send SubsFail (first)
1204 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
1205 fparams1 := &teststube2ap.E2StubSubsFailParams{}
1206 fparams1.Set(crereq1)
1207 e2termConn1.SendSubsFail(t, fparams1, cremsg1)
1209 // E2t: Receive SubsDelReq and send SubsDelResp (internal first)
1210 delreq1, delmsg1 := e2termConn1.RecvSubsDelReq(t)
1211 e2termConn1.SendSubsDelResp(t, delreq1, delmsg1)
1213 // Xapp: Receive SubsFail
1214 e2SubsId := xappConn1.RecvSubsFail(t, cretrans)
1216 // Wait that subs is cleaned
1217 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
1219 xappConn1.TestMsgChanEmpty(t)
1220 xappConn2.TestMsgChanEmpty(t)
1221 e2termConn1.TestMsgChanEmpty(t)
1222 mainCtrl.wait_registry_empty(t, 10)
1224 mainCtrl.VerifyCounterValues(t)
1227 //-----------------------------------------------------------------------------
1228 // TestSubDelReqRetryInSubmgr
1231 // +-------+ +---------+ +---------+
1232 // | xapp | | submgr | | e2term |
1233 // +-------+ +---------+ +---------+
1235 // | [SUBS CREATE] |
1239 // |------------->| |
1242 // | |------------->|
1245 // | |------------->|
1248 // | |<-------------|
1251 // |<-------------| |
1253 //-----------------------------------------------------------------------------
1255 func TestSubDelReqRetryInSubmgr(t *testing.T) {
1257 CaseBegin("TestSubDelReqRetryInSubmgr start")
1260 cretrans := xappConn1.SendSubsReq(t, nil, nil)
1261 crereq, cremsg := e2termConn1.RecvSubsReq(t)
1262 e2termConn1.SendSubsResp(t, crereq, cremsg)
1263 e2SubsId := xappConn1.RecvSubsResp(t, cretrans)
1266 // Xapp: Send SubsDelReq
1267 deltrans := xappConn1.SendSubsDelReq(t, nil, e2SubsId)
1269 // E2t: Receive 1st SubsDelReq
1270 e2termConn1.RecvSubsDelReq(t)
1272 // E2t: Receive 2nd SubsDelReq and send SubsDelResp
1273 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
1274 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
1276 // Xapp: Receive SubsDelResp
1277 xappConn1.RecvSubsDelResp(t, deltrans)
1279 // Wait that subs is cleaned
1280 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
1282 xappConn1.TestMsgChanEmpty(t)
1283 xappConn2.TestMsgChanEmpty(t)
1284 e2termConn1.TestMsgChanEmpty(t)
1285 mainCtrl.wait_registry_empty(t, 10)
1288 //-----------------------------------------------------------------------------
1289 // TestSubDelReqTwoRetriesNoRespInSubmgr
1292 // +-------+ +---------+ +---------+
1293 // | xapp | | submgr | | e2term |
1294 // +-------+ +---------+ +---------+
1296 // | [SUBS CREATE] |
1300 // |------------->| |
1303 // | |------------->|
1306 // | |------------->|
1310 // |<-------------| |
1312 //-----------------------------------------------------------------------------
1314 func TestSubDelReqTwoRetriesNoRespInSubmgr(t *testing.T) {
1316 CaseBegin("TestSubDelReTwoRetriesNoRespInSubmgr start")
1319 cretrans := xappConn1.SendSubsReq(t, nil, nil)
1320 crereq, cremsg := e2termConn1.RecvSubsReq(t)
1321 e2termConn1.SendSubsResp(t, crereq, cremsg)
1322 e2SubsId := xappConn1.RecvSubsResp(t, cretrans)
1325 // Xapp: Send SubsDelReq
1326 deltrans := xappConn1.SendSubsDelReq(t, nil, e2SubsId)
1328 // E2t: Receive 1st SubsDelReq
1329 e2termConn1.RecvSubsDelReq(t)
1331 // E2t: Receive 2nd SubsDelReq
1332 e2termConn1.RecvSubsDelReq(t)
1334 // Xapp: Receive SubsDelResp
1335 xappConn1.RecvSubsDelResp(t, deltrans)
1337 // Wait that subs is cleaned
1338 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
1340 xappConn1.TestMsgChanEmpty(t)
1341 xappConn2.TestMsgChanEmpty(t)
1342 e2termConn1.TestMsgChanEmpty(t)
1343 mainCtrl.wait_registry_empty(t, 10)
1346 //-----------------------------------------------------------------------------
1347 // TestSubDelReqSubDelFailRespInSubmgr
1350 // +-------+ +---------+ +---------+
1351 // | xapp | | submgr | | e2term |
1352 // +-------+ +---------+ +---------+
1354 // | [SUBS CREATE] |
1358 // |------------->| |
1361 // | |------------->|
1364 // | |<-------------|
1367 // |<-------------| |
1370 //-----------------------------------------------------------------------------
1372 func TestSubDelReqSubDelFailRespInSubmgr(t *testing.T) {
1373 CaseBegin("TestSubReqSubDelFailRespInSubmgr start")
1375 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
1376 Counter{cSubReqFromXapp, 1},
1377 Counter{cSubReqToE2, 1},
1378 Counter{cSubRespFromE2, 1},
1379 Counter{cSubRespToXapp, 1},
1380 Counter{cSubDelReqFromXapp, 1},
1381 Counter{cSubDelReqToE2, 1},
1382 Counter{cSubDelFailFromE2, 1},
1383 Counter{cSubDelRespToXapp, 1},
1387 cretrans := xappConn1.SendSubsReq(t, nil, nil)
1388 crereq, cremsg := e2termConn1.RecvSubsReq(t)
1389 e2termConn1.SendSubsResp(t, crereq, cremsg)
1390 e2SubsId := xappConn1.RecvSubsResp(t, cretrans)
1392 // Xapp: Send SubsDelReq
1393 deltrans := xappConn1.SendSubsDelReq(t, nil, e2SubsId)
1395 // E2t: Send receive SubsDelReq and send SubsDelFail
1396 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
1397 e2termConn1.SendSubsDelFail(t, delreq, delmsg)
1399 // Xapp: Receive SubsDelResp
1400 xappConn1.RecvSubsDelResp(t, deltrans)
1402 // Wait that subs is cleaned
1403 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
1405 xappConn1.TestMsgChanEmpty(t)
1406 xappConn2.TestMsgChanEmpty(t)
1407 e2termConn1.TestMsgChanEmpty(t)
1408 mainCtrl.wait_registry_empty(t, 10)
1410 mainCtrl.VerifyCounterValues(t)
1413 //-----------------------------------------------------------------------------
1414 // TestSubReqAndSubDelOkSameAction
1417 // +-------+ +-------+ +---------+ +---------+
1418 // | xapp2 | | xapp1 | | submgr | | e2term |
1419 // +-------+ +-------+ +---------+ +---------+
1424 // | |------------->| |
1427 // | | |------------->|
1429 // | | |<-------------|
1431 // | |<-------------| |
1434 // |--------------------------->| |
1437 // |<---------------------------| |
1439 // | | SubDelReq 1 | |
1440 // | |------------->| |
1442 // | | SubDelResp 1 | |
1443 // | |<-------------| |
1445 // | SubDelReq 2 | |
1446 // |--------------------------->| |
1448 // | | | SubDelReq 2 |
1449 // | | |------------->|
1451 // | | | SubDelReq 2 |
1452 // | | |------------->|
1454 // | SubDelResp 2 | |
1455 // |<---------------------------| |
1457 //-----------------------------------------------------------------------------
1458 func TestSubReqAndSubDelOkSameAction(t *testing.T) {
1459 CaseBegin("TestSubReqAndSubDelOkSameAction")
1461 // Init counter check
1462 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
1463 Counter{cSubReqFromXapp, 2},
1464 Counter{cSubReqToE2, 1},
1465 Counter{cSubRespFromE2, 1},
1466 Counter{cSubRespToXapp, 2},
1467 Counter{cMergedSubscriptions, 1},
1468 Counter{cUnmergedSubscriptions, 1},
1469 Counter{cSubDelReqFromXapp, 2},
1470 Counter{cSubDelReqToE2, 1},
1471 Counter{cSubDelRespFromE2, 1},
1472 Counter{cSubDelRespToXapp, 2},
1476 rparams1 := &teststube2ap.E2StubSubsReqParams{}
1478 cretrans1 := xappConn1.SendSubsReq(t, rparams1, nil)
1479 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
1480 e2termConn1.SendSubsResp(t, crereq1, cremsg1)
1481 e2SubsId1 := xappConn1.RecvSubsResp(t, cretrans1)
1484 rparams2 := &teststube2ap.E2StubSubsReqParams{}
1486 cretrans2 := xappConn2.SendSubsReq(t, rparams2, nil)
1487 //crereq2, cremsg2 := e2termConn1.RecvSubsReq(t)
1488 //e2termConn1.SendSubsResp(t, crereq2, cremsg2)
1489 e2SubsId2 := xappConn2.RecvSubsResp(t, cretrans2)
1491 resp, _ := xapp.Subscription.QuerySubscriptions()
1492 assert.Equal(t, resp[0].SubscriptionID, int64(e2SubsId1))
1493 assert.Equal(t, resp[0].Meid, "RAN_NAME_1")
1494 assert.Equal(t, resp[0].ClientEndpoint, []string{"localhost:13560", "localhost:13660"})
1497 deltrans1 := xappConn1.SendSubsDelReq(t, nil, e2SubsId1)
1498 //e2termConn1.RecvSubsDelReq(t)
1499 //e2termConn1.SendSubsDelResp(t, delreq1, delmsg1)
1500 xappConn1.RecvSubsDelResp(t, deltrans1)
1501 //Wait that subs is cleaned
1502 //mainCtrl.wait_subs_clean(t, e2SubsId1, 10)
1505 deltrans2 := xappConn2.SendSubsDelReq(t, nil, e2SubsId2)
1506 delreq2, delmsg2 := e2termConn1.RecvSubsDelReq(t)
1507 e2termConn1.SendSubsDelResp(t, delreq2, delmsg2)
1508 xappConn2.RecvSubsDelResp(t, deltrans2)
1509 //Wait that subs is cleaned
1510 mainCtrl.wait_subs_clean(t, e2SubsId2, 10)
1512 xappConn1.TestMsgChanEmpty(t)
1513 xappConn2.TestMsgChanEmpty(t)
1514 e2termConn1.TestMsgChanEmpty(t)
1515 mainCtrl.wait_registry_empty(t, 10)
1517 mainCtrl.VerifyCounterValues(t)
1520 //-----------------------------------------------------------------------------
1521 // TestSubReqAndSubDelOkSameActionParallel
1524 // +-------+ +-------+ +---------+ +---------+
1525 // | xapp2 | | xapp1 | | submgr | | e2term |
1526 // +-------+ +-------+ +---------+ +---------+
1531 // | |------------->| |
1534 // | | |------------->|
1536 // |--------------------------->| |
1538 // | | |<-------------|
1540 // | |<-------------| |
1543 // |<---------------------------| |
1545 // | | SubDelReq 1 | |
1546 // | |------------->| |
1548 // | | SubDelResp 1 | |
1549 // | |<-------------| |
1551 // | SubDelReq 2 | |
1552 // |--------------------------->| |
1554 // | | | SubDelReq 2 |
1555 // | | |------------->|
1557 // | | | SubDelReq 2 |
1558 // | | |------------->|
1560 // | SubDelResp 2 | |
1561 // |<---------------------------| |
1563 //-----------------------------------------------------------------------------
1564 func TestSubReqAndSubDelOkSameActionParallel(t *testing.T) {
1565 CaseBegin("TestSubReqAndSubDelOkSameActionParallel")
1568 rparams1 := &teststube2ap.E2StubSubsReqParams{}
1570 cretrans1 := xappConn1.SendSubsReq(t, rparams1, nil)
1571 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
1574 rparams2 := &teststube2ap.E2StubSubsReqParams{}
1576 cretrans2 := xappConn2.SendSubsReq(t, rparams2, nil)
1579 e2termConn1.SendSubsResp(t, crereq1, cremsg1)
1580 e2SubsId1 := xappConn1.RecvSubsResp(t, cretrans1)
1583 e2SubsId2 := xappConn2.RecvSubsResp(t, cretrans2)
1586 deltrans1 := xappConn1.SendSubsDelReq(t, nil, e2SubsId1)
1587 xappConn1.RecvSubsDelResp(t, deltrans1)
1590 deltrans2 := xappConn2.SendSubsDelReq(t, nil, e2SubsId2)
1591 delreq2, delmsg2 := e2termConn1.RecvSubsDelReq(t)
1592 e2termConn1.SendSubsDelResp(t, delreq2, delmsg2)
1593 xappConn2.RecvSubsDelResp(t, deltrans2)
1595 //Wait that subs is cleaned
1596 mainCtrl.wait_subs_clean(t, e2SubsId2, 10)
1598 xappConn1.TestMsgChanEmpty(t)
1599 xappConn2.TestMsgChanEmpty(t)
1600 e2termConn1.TestMsgChanEmpty(t)
1601 mainCtrl.wait_registry_empty(t, 10)
1604 //-----------------------------------------------------------------------------
1605 // TestSubReqAndSubDelNokSameActionParallel
1608 // +-------+ +-------+ +---------+ +---------+
1609 // | xapp2 | | xapp1 | | submgr | | e2term |
1610 // +-------+ +-------+ +---------+ +---------+
1615 // | |------------->| |
1618 // | | |------------->|
1620 // |--------------------------->| |
1622 // | | |<-------------|
1624 // | | | SubDelReq |
1625 // | | |------------->|
1626 // | | | SubDelResp |
1627 // | | |<-------------|
1630 // | |<-------------| |
1633 // |<---------------------------| |
1635 //-----------------------------------------------------------------------------
1636 func TestSubReqAndSubDelNokSameActionParallel(t *testing.T) {
1637 CaseBegin("TestSubReqAndSubDelNokSameActionParallel")
1640 rparams1 := &teststube2ap.E2StubSubsReqParams{}
1642 cretrans1 := xappConn1.SendSubsReq(t, rparams1, nil)
1644 // E2t: Receive SubsReq (first)
1645 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
1648 rparams2 := &teststube2ap.E2StubSubsReqParams{}
1650 subepcnt2 := mainCtrl.get_subs_entrypoint_cnt(t, crereq1.RequestId.InstanceId)
1651 cretrans2 := xappConn2.SendSubsReq(t, rparams2, nil)
1652 mainCtrl.wait_subs_entrypoint_cnt_change(t, crereq1.RequestId.InstanceId, subepcnt2, 10)
1654 // E2t: send SubsFail (first)
1655 fparams1 := &teststube2ap.E2StubSubsFailParams{}
1656 fparams1.Set(crereq1)
1657 e2termConn1.SendSubsFail(t, fparams1, cremsg1)
1659 // E2t: internal delete
1660 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
1661 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
1664 e2SubsId1 := xappConn1.RecvSubsFail(t, cretrans1)
1666 xappConn2.RecvSubsFail(t, cretrans2)
1668 //Wait that subs is cleaned
1669 mainCtrl.wait_subs_clean(t, e2SubsId1, 15)
1671 xappConn1.TestMsgChanEmpty(t)
1672 xappConn2.TestMsgChanEmpty(t)
1673 e2termConn1.TestMsgChanEmpty(t)
1674 mainCtrl.wait_registry_empty(t, 10)
1677 //-----------------------------------------------------------------------------
1678 // TestSubReqAndSubDelNoAnswerSameActionParallel
1681 // +-------+ +-------+ +---------+ +---------+
1682 // | xapp2 | | xapp1 | | submgr | | e2term |
1683 // +-------+ +-------+ +---------+ +---------+
1688 // | |------------->| |
1691 // | | |------------->|
1693 // |--------------------------->| |
1696 // | | |------------->|
1699 // | | | SubDelReq |
1700 // | | |------------->|
1702 // | | | SubDelResp |
1703 // | | |<-------------|
1705 //-----------------------------------------------------------------------------
1706 func TestSubReqAndSubDelNoAnswerSameActionParallel(t *testing.T) {
1707 CaseBegin("TestSubReqAndSubDelNoAnswerSameActionParallel")
1710 rparams1 := &teststube2ap.E2StubSubsReqParams{}
1712 xappConn1.SendSubsReq(t, rparams1, nil)
1714 crereq1, _ := e2termConn1.RecvSubsReq(t)
1717 rparams2 := &teststube2ap.E2StubSubsReqParams{}
1719 subepcnt2 := mainCtrl.get_subs_entrypoint_cnt(t, crereq1.RequestId.InstanceId)
1720 xappConn2.SendSubsReq(t, rparams2, nil)
1721 mainCtrl.wait_subs_entrypoint_cnt_change(t, crereq1.RequestId.InstanceId, subepcnt2, 10)
1723 //Req1 (retransmitted)
1724 e2termConn1.RecvSubsReq(t)
1726 delreq1, delmsg1 := e2termConn1.RecvSubsDelReq(t)
1727 e2termConn1.SendSubsDelResp(t, delreq1, delmsg1)
1729 //Wait that subs is cleaned
1730 mainCtrl.wait_subs_clean(t, delreq1.RequestId.InstanceId, 10)
1732 xappConn1.TestMsgChanEmpty(t)
1733 xappConn2.TestMsgChanEmpty(t)
1734 e2termConn1.TestMsgChanEmpty(t)
1735 mainCtrl.wait_registry_empty(t, 15)
1738 //----------------------------- Policy cases ---------------------------------
1739 //-----------------------------------------------------------------------------
1740 // TestSubReqPolicyAndSubDelOk
1743 // +-------+ +---------+ +---------+
1744 // | xapp | | submgr | | e2term |
1745 // +-------+ +---------+ +---------+
1748 // |------------->| |
1751 // | |------------->|
1754 // | |<-------------|
1757 // |<-------------| |
1761 // |------------->| |
1764 // | |------------->|
1767 // | |<-------------|
1770 // |<-------------| |
1772 //-----------------------------------------------------------------------------
1773 func TestSubReqPolicyAndSubDelOk(t *testing.T) {
1774 CaseBegin("TestSubReqAndSubDelOk")
1776 rparams1 := &teststube2ap.E2StubSubsReqParams{}
1778 rparams1.Req.ActionSetups[0].ActionType = e2ap.E2AP_ActionTypePolicy
1779 cretrans := xappConn1.SendSubsReq(t, rparams1, nil)
1781 crereq, cremsg := e2termConn1.RecvSubsReq(t)
1782 e2termConn1.SendSubsResp(t, crereq, cremsg)
1783 e2SubsId := xappConn1.RecvSubsResp(t, cretrans)
1784 deltrans := xappConn1.SendSubsDelReq(t, nil, e2SubsId)
1785 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
1787 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
1788 xappConn1.RecvSubsDelResp(t, deltrans)
1790 //Wait that subs is cleaned
1791 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
1793 xappConn1.TestMsgChanEmpty(t)
1794 xappConn2.TestMsgChanEmpty(t)
1795 e2termConn1.TestMsgChanEmpty(t)
1796 mainCtrl.wait_registry_empty(t, 10)
1799 //-----------------------------------------------------------------------------
1800 // TestSubReqPolicyChangeAndSubDelOk
1803 // +-------+ +---------+ +---------+
1804 // | xapp | | submgr | | e2term |
1805 // +-------+ +---------+ +---------+
1808 // |------------->| |
1811 // | |------------->|
1814 // | |<-------------|
1817 // |<-------------| |
1820 // |------------->| |
1823 // | |------------->|
1826 // | |<-------------|
1829 // |<-------------| |
1832 // |------------->| |
1835 // | |------------->|
1838 // | |<-------------|
1841 // |<-------------| |
1843 //-----------------------------------------------------------------------------
1845 func TestSubReqPolicyChangeAndSubDelOk(t *testing.T) {
1846 CaseBegin("TestSubReqAndSubDelOk")
1848 rparams1 := &teststube2ap.E2StubSubsReqParams{}
1850 rparams1.Req.ActionSetups[0].ActionType = e2ap.E2AP_ActionTypePolicy
1851 cretrans := xappConn1.SendSubsReq(t, rparams1, nil)
1853 crereq, cremsg := e2termConn1.RecvSubsReq(t)
1854 e2termConn1.SendSubsResp(t, crereq, cremsg)
1855 e2SubsId := xappConn1.RecvSubsResp(t, cretrans)
1858 rparams1.Req.RequestId.InstanceId = e2SubsId
1859 rparams1.Req.ActionSetups[0].SubsequentAction.TimetoWait = e2ap.E2AP_TimeToWaitW200ms
1860 xappConn1.SendSubsReq(t, rparams1, cretrans)
1862 crereq, cremsg = e2termConn1.RecvSubsReq(t)
1863 e2termConn1.SendSubsResp(t, crereq, cremsg)
1864 e2SubsId = xappConn1.RecvSubsResp(t, cretrans)
1865 deltrans := xappConn1.SendSubsDelReq(t, nil, e2SubsId)
1866 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
1868 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
1869 xappConn1.RecvSubsDelResp(t, deltrans)
1871 //Wait that subs is cleaned
1872 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
1874 xappConn1.TestMsgChanEmpty(t)
1875 xappConn2.TestMsgChanEmpty(t)
1876 e2termConn1.TestMsgChanEmpty(t)
1877 mainCtrl.wait_registry_empty(t, 10)
1880 //-----------------------------------------------------------------------------
1881 // TestSubReqAndSubDelOkTwoE2termParallel
1884 // +-------+ +---------+ +---------+ +---------+
1885 // | xapp | | submgr | | e2term1 | | e2term2 |
1886 // +-------+ +---------+ +---------+ +---------+
1891 // |------------->| | |
1894 // | |------------->| |
1897 // |------------->| | |
1900 // | |---------------------------->|
1903 // | |<-------------| |
1905 // |<-------------| | |
1907 // | |<----------------------------|
1909 // |<-------------| | |
1911 // | [SUBS 1 DELETE] | |
1913 // | [SUBS 2 DELETE] | |
1916 //-----------------------------------------------------------------------------
1917 func TestSubReqAndSubDelOkTwoE2termParallel(t *testing.T) {
1918 CaseBegin("TestSubReqAndSubDelOkTwoE2termParallel")
1921 cretrans1 := xappConn1.NewRmrTransactionId("", "RAN_NAME_1")
1922 xappConn1.SendSubsReq(t, nil, cretrans1)
1923 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
1925 cretrans2 := xappConn1.NewRmrTransactionId("", "RAN_NAME_11")
1926 xappConn1.SendSubsReq(t, nil, cretrans2)
1927 crereq2, cremsg2 := e2termConn2.RecvSubsReq(t)
1930 e2termConn1.SendSubsResp(t, crereq1, cremsg1)
1931 e2SubsId1 := xappConn1.RecvSubsResp(t, cretrans1)
1934 e2termConn2.SendSubsResp(t, crereq2, cremsg2)
1935 e2SubsId2 := xappConn1.RecvSubsResp(t, cretrans2)
1938 deltrans1 := xappConn1.SendSubsDelReq(t, nil, e2SubsId1)
1939 delreq1, delmsg1 := e2termConn1.RecvSubsDelReq(t)
1940 e2termConn1.SendSubsDelResp(t, delreq1, delmsg1)
1941 xappConn1.RecvSubsDelResp(t, deltrans1)
1942 //Wait that subs is cleaned
1943 mainCtrl.wait_subs_clean(t, e2SubsId1, 10)
1946 deltrans2 := xappConn1.SendSubsDelReq(t, nil, e2SubsId2)
1947 delreq2, delmsg2 := e2termConn2.RecvSubsDelReq(t)
1948 e2termConn2.SendSubsDelResp(t, delreq2, delmsg2)
1949 xappConn1.RecvSubsDelResp(t, deltrans2)
1950 //Wait that subs is cleaned
1951 mainCtrl.wait_subs_clean(t, e2SubsId2, 10)
1953 xappConn1.TestMsgChanEmpty(t)
1954 xappConn2.TestMsgChanEmpty(t)
1955 e2termConn1.TestMsgChanEmpty(t)
1956 e2termConn2.TestMsgChanEmpty(t)
1957 mainCtrl.wait_registry_empty(t, 10)
1960 //-----------------------------------------------------------------------------
1961 // TestSubReqInsertAndSubDelOk
1964 // +-------+ +---------+ +---------+
1965 // | xapp | | submgr | | e2term |
1966 // +-------+ +---------+ +---------+
1969 // |------------->| |
1972 // | |------------->|
1975 // | |<-------------|
1978 // |<-------------| |
1982 // |------------->| |
1985 // | |------------->|
1988 // | |<-------------|
1991 // |<-------------| |
1993 //-----------------------------------------------------------------------------
1994 func TestSubReqInsertAndSubDelOk(t *testing.T) {
1995 CaseBegin("TestInsertSubReqAndSubDelOk")
1997 rparams1 := &teststube2ap.E2StubSubsReqParams{}
1999 rparams1.Req.ActionSetups[0].ActionType = e2ap.E2AP_ActionTypeInsert
2000 cretrans := xappConn1.SendSubsReq(t, rparams1, nil)
2002 crereq, cremsg := e2termConn1.RecvSubsReq(t)
2003 e2termConn1.SendSubsResp(t, crereq, cremsg)
2004 e2SubsId := xappConn1.RecvSubsResp(t, cretrans)
2005 deltrans := xappConn1.SendSubsDelReq(t, nil, e2SubsId)
2006 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
2008 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
2009 xappConn1.RecvSubsDelResp(t, deltrans)
2011 //Wait that subs is cleaned
2012 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
2014 xappConn1.TestMsgChanEmpty(t)
2015 xappConn2.TestMsgChanEmpty(t)
2016 e2termConn1.TestMsgChanEmpty(t)
2017 mainCtrl.wait_registry_empty(t, 10)
2020 //-----------------------------------------------------------------------------
2021 // TestSubReqRetransmissionWithSameSubIdDiffXid
2023 // This case simulates case where xApp restarts and starts sending same
2024 // subscription requests which have already subscribed successfully
2027 // +-------+ +---------+ +---------+
2028 // | xapp | | submgr | | e2term |
2029 // +-------+ +---------+ +---------+
2032 // |------------->| |
2035 // | |------------->|
2038 // | |<-------------|
2041 // |<-------------| |
2043 // | xApp restart | |
2046 // | (retrans with same xApp generated subid but diff xid)
2047 // |------------->| |
2050 // |<-------------| |
2052 // | [SUBS DELETE] |
2055 //-----------------------------------------------------------------------------
2056 func TestSubReqRetransmissionWithSameSubIdDiffXid(t *testing.T) {
2057 CaseBegin("TestSubReqRetransmissionWithSameSubIdDiffXid")
2060 cretrans := xappConn1.SendSubsReq(t, nil, nil)
2061 crereq, cremsg := e2termConn1.RecvSubsReq(t)
2062 e2termConn1.SendSubsResp(t, crereq, cremsg)
2063 e2SubsId := xappConn1.RecvSubsResp(t, cretrans)
2065 // xApp restart here
2066 // --> artificial delay
2067 <-time.After(1 * time.Second)
2070 cretrans = xappConn1.SendSubsReq(t, nil, nil) //Retransmitted SubReq
2071 e2SubsId = xappConn1.RecvSubsResp(t, cretrans)
2074 deltrans := xappConn1.SendSubsDelReq(t, nil, e2SubsId)
2075 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
2076 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
2077 xappConn1.RecvSubsDelResp(t, deltrans)
2079 //Wait that subs is cleaned
2080 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
2082 xappConn1.TestMsgChanEmpty(t)
2083 xappConn2.TestMsgChanEmpty(t)
2084 e2termConn1.TestMsgChanEmpty(t)
2085 mainCtrl.wait_registry_empty(t, 10)
2088 //-----------------------------------------------------------------------------
2089 // TestSubReqNokAndSubDelOkWithRestartInMiddle
2092 // +-------+ +---------+ +---------+
2093 // | xapp | | submgr | | e2term |
2094 // +-------+ +---------+ +---------+
2097 // |------------->| |
2100 // | |------------->|
2105 // | Submgr restart |
2109 // | |------------->|
2112 // | |<-------------|
2115 //-----------------------------------------------------------------------------
2117 func TestSubReqNokAndSubDelOkWithRestartInMiddle(t *testing.T) {
2118 CaseBegin("TestSubReqNokAndSubDelOkWithRestartInMiddle")
2120 // Remove possible existing subscrition
2121 mainCtrl.removeExistingSubscriptions(t)
2123 mainCtrl.SetResetTestFlag(t, true) // subs.DoNotWaitSubResp will be set TRUE for the subscription
2124 xappConn1.SendSubsReq(t, nil, nil)
2125 e2termConn1.RecvSubsReq(t)
2126 mainCtrl.SetResetTestFlag(t, false)
2128 resp, _ := xapp.Subscription.QuerySubscriptions()
2129 assert.Equal(t, resp[0].Meid, "RAN_NAME_1")
2130 assert.Equal(t, resp[0].ClientEndpoint, []string{"localhost:13560"})
2131 e2SubsId := uint32(resp[0].SubscriptionID)
2132 t.Logf("e2SubsId = %v", e2SubsId)
2134 mainCtrl.SimulateRestart(t)
2135 xapp.Logger.Debug("mainCtrl.SimulateRestart done")
2137 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
2138 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
2140 // Wait that subs is cleaned
2141 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
2143 xappConn1.TestMsgChanEmpty(t)
2144 xappConn2.TestMsgChanEmpty(t)
2145 e2termConn1.TestMsgChanEmpty(t)
2146 mainCtrl.wait_registry_empty(t, 10)
2149 //-----------------------------------------------------------------------------
2150 // TestSubReqAndSubDelOkWithRestartInMiddle
2153 // +-------+ +---------+ +---------+
2154 // | xapp | | submgr | | e2term |
2155 // +-------+ +---------+ +---------+
2158 // |------------->| |
2161 // | |------------->|
2164 // | |<-------------|
2167 // |<-------------| |
2170 // | Submgr restart |
2173 // |------------->| |
2176 // | |------------->|
2179 // | |<-------------|
2182 // |<-------------| |
2184 //-----------------------------------------------------------------------------
2186 func TestSubReqAndSubDelOkWithRestartInMiddle(t *testing.T) {
2187 CaseBegin("TestSubReqAndSubDelOkWithRestartInMiddle")
2189 cretrans := xappConn1.SendSubsReq(t, nil, nil)
2190 crereq, cremsg := e2termConn1.RecvSubsReq(t)
2191 e2termConn1.SendSubsResp(t, crereq, cremsg)
2192 e2SubsId := xappConn1.RecvSubsResp(t, cretrans)
2194 // Check subscription
2195 resp, _ := xapp.Subscription.QuerySubscriptions()
2196 assert.Equal(t, resp[0].SubscriptionID, int64(e2SubsId))
2197 assert.Equal(t, resp[0].Meid, "RAN_NAME_1")
2198 assert.Equal(t, resp[0].ClientEndpoint, []string{"localhost:13560"})
2200 mainCtrl.SimulateRestart(t)
2201 xapp.Logger.Debug("mainCtrl.SimulateRestart done")
2203 // Check that subscription is restored correctly after restart
2204 resp, _ = xapp.Subscription.QuerySubscriptions()
2205 assert.Equal(t, resp[0].SubscriptionID, int64(e2SubsId))
2206 assert.Equal(t, resp[0].Meid, "RAN_NAME_1")
2207 assert.Equal(t, resp[0].ClientEndpoint, []string{"localhost:13560"})
2209 deltrans := xappConn1.SendSubsDelReq(t, nil, e2SubsId)
2210 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
2211 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
2212 xappConn1.RecvSubsDelResp(t, deltrans)
2214 //Wait that subs is cleaned
2215 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
2217 xappConn1.TestMsgChanEmpty(t)
2218 xappConn2.TestMsgChanEmpty(t)
2219 e2termConn1.TestMsgChanEmpty(t)
2220 mainCtrl.wait_registry_empty(t, 10)
2223 //-----------------------------------------------------------------------------
2224 // TestSubReqAndSubDelOkSameActionWithRestartsInMiddle
2227 // +-------+ +-------+ +---------+ +---------+
2228 // | xapp2 | | xapp1 | | submgr | | e2term |
2229 // +-------+ +-------+ +---------+ +---------+
2234 // | |------------->| |
2237 // | | |------------->|
2239 // | | |<-------------|
2241 // | |<-------------| |
2244 // | submgr restart |
2249 // |--------------------------->| |
2252 // |<---------------------------| |
2254 // | | SubDelReq 1 | |
2255 // | |------------->| |
2257 // | | SubDelResp 1 | |
2258 // | |<-------------| |
2262 // | submgr restart |
2265 // | SubDelReq 2 | |
2266 // |--------------------------->| |
2268 // | | | SubDelReq 2 |
2269 // | | |------------->|
2271 // | | | SubDelReq 2 |
2272 // | | |------------->|
2274 // | SubDelResp 2 | |
2275 // |<---------------------------| |
2277 //-----------------------------------------------------------------------------
2279 func TestSubReqAndSubDelOkSameActionWithRestartsInMiddle(t *testing.T) {
2280 CaseBegin("TestSubReqAndSubDelOkSameActionWithRestartsInMiddle")
2283 rparams1 := &teststube2ap.E2StubSubsReqParams{}
2285 cretrans1 := xappConn1.SendSubsReq(t, rparams1, nil)
2286 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
2287 e2termConn1.SendSubsResp(t, crereq1, cremsg1)
2288 e2SubsId1 := xappConn1.RecvSubsResp(t, cretrans1)
2291 rparams2 := &teststube2ap.E2StubSubsReqParams{}
2293 cretrans2 := xappConn2.SendSubsReq(t, rparams2, nil)
2294 e2SubsId2 := xappConn2.RecvSubsResp(t, cretrans2)
2296 // Check subscription
2297 resp, _ := xapp.Subscription.QuerySubscriptions() ////////////////////////////////
2298 assert.Equal(t, resp[0].SubscriptionID, int64(e2SubsId1))
2299 assert.Equal(t, resp[0].Meid, "RAN_NAME_1")
2300 assert.Equal(t, resp[0].ClientEndpoint, []string{"localhost:13560", "localhost:13660"})
2302 mainCtrl.SimulateRestart(t)
2303 xapp.Logger.Debug("mainCtrl.SimulateRestart done")
2305 // Check that subscription is restored correctly after restart
2306 resp, _ = xapp.Subscription.QuerySubscriptions()
2307 assert.Equal(t, resp[0].SubscriptionID, int64(e2SubsId1))
2308 assert.Equal(t, resp[0].Meid, "RAN_NAME_1")
2309 assert.Equal(t, resp[0].ClientEndpoint, []string{"localhost:13560", "localhost:13660"})
2312 deltrans1 := xappConn1.SendSubsDelReq(t, nil, e2SubsId1)
2313 xapp.Logger.Debug("xappConn1.RecvSubsDelResp")
2314 xappConn1.RecvSubsDelResp(t, deltrans1)
2315 xapp.Logger.Debug("xappConn1.RecvSubsDelResp received")
2317 mainCtrl.SimulateRestart(t)
2318 xapp.Logger.Debug("mainCtrl.SimulateRestart done")
2321 deltrans2 := xappConn2.SendSubsDelReq(t, nil, e2SubsId2)
2322 delreq2, delmsg2 := e2termConn1.RecvSubsDelReq(t)
2324 e2termConn1.SendSubsDelResp(t, delreq2, delmsg2)
2325 xappConn2.RecvSubsDelResp(t, deltrans2)
2327 //Wait that subs is cleaned
2328 mainCtrl.wait_subs_clean(t, e2SubsId2, 10)
2330 xappConn1.TestMsgChanEmpty(t)
2331 xappConn2.TestMsgChanEmpty(t)
2332 e2termConn1.TestMsgChanEmpty(t)
2333 mainCtrl.wait_registry_empty(t, 10)
2336 //*****************************************************************************
2337 // REST interface test cases
2338 //*****************************************************************************
2340 //-----------------------------------------------------------------------------
2341 // Test debug GET and POST requests
2344 // +-------+ +---------+
2345 // | user | | submgr |
2346 // +-------+ +---------+
2353 func TestGetSubscriptions(t *testing.T) {
2355 mainCtrl.sendGetRequest(t, "localhost:8088", "/ric/v1/subscriptions")
2358 func TestGetSymptomData(t *testing.T) {
2360 mainCtrl.sendGetRequest(t, "localhost:8080", "/ric/v1/symptomdata")
2363 func TestPostdeleteSubId(t *testing.T) {
2365 mainCtrl.sendPostRequest(t, "localhost:8080", "/ric/v1/test/deletesubid=1")
2368 func TestPostEmptyDb(t *testing.T) {
2370 mainCtrl.sendPostRequest(t, "localhost:8080", "/ric/v1/test/emptydb")
2373 //-----------------------------------------------------------------------------
2374 // TestRESTSubReqAndRouteNok
2377 // +-------+ +---------+ +---------+
2378 // | xapp | | submgr | | rtmgr |
2379 // +-------+ +---------+ +---------+
2382 // |---------------->| |
2384 // | RESTSubResp | |
2385 // |<----------------| |
2386 // | | RouteCreate |
2387 // | |------------->|
2389 // | | RouteCreate |
2391 // | |(Bad request) |
2392 // | |<-------------|
2394 // |<----------------| |
2396 // | [SUBS INT DELETE] |
2398 // | RESTSubDelReq | |
2399 // |---------------->| |
2400 // | RESTSubDelResp | |
2401 // |<----------------| |
2403 //-----------------------------------------------------------------------------
2404 func TestRESTSubReqAndRouteNok(t *testing.T) {
2405 CaseBegin("TestRESTSubReqAndRouteNok")
2407 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
2408 Counter{cRestSubReqFromXapp, 1},
2409 Counter{cRestSubRespToXapp, 1},
2410 Counter{cRouteCreateFail, 1},
2411 Counter{cRestSubFailNotifToXapp, 1},
2412 Counter{cRestSubDelReqFromXapp, 1},
2413 Counter{cRestSubDelRespToXapp, 1},
2416 const subReqCount int = 1
2417 // Add delay for rtmgt HTTP handling so that HTTP response is received before notify on XAPP side
2418 waiter := rtmgrHttp.AllocNextSleep(50, false)
2419 newSubsId := mainCtrl.get_registry_next_subid(t)
2422 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
2423 restSubId := xappConn1.SendRESTSubsReq(t, params)
2424 xappConn1.ExpectRESTNotificationNok(t, restSubId, "failAll")
2425 waiter.WaitResult(t)
2427 e2SubsId := xappConn1.WaitRESTNotification(t, restSubId)
2428 xapp.Logger.Info("TEST: REST notification received e2SubsId=%v", e2SubsId)
2431 xappConn1.SendRESTSubsDelReq(t, &restSubId)
2433 // Wait that subs is cleaned
2434 mainCtrl.wait_subs_clean(t, newSubsId, 10)
2435 waitSubsCleanup(t, e2SubsId, 10)
2436 mainCtrl.VerifyCounterValues(t)
2439 func TestRESTSubReqAndRouteUpdateNok(t *testing.T) {
2440 CaseBegin("TestSubReqAndRouteUpdateNok")
2442 //Init counter check
2443 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
2444 Counter{cRestSubReqFromXapp, 2},
2445 Counter{cRestSubRespToXapp, 2},
2446 Counter{cSubReqToE2, 1},
2447 Counter{cSubRespFromE2, 1},
2448 Counter{cRestSubNotifToXapp, 1},
2449 Counter{cRestSubFailNotifToXapp, 1},
2450 Counter{cRouteCreateUpdateFail, 1},
2451 Counter{cRestSubDelReqFromXapp, 1},
2452 Counter{cSubDelReqToE2, 1},
2453 Counter{cSubDelRespFromE2, 1},
2454 Counter{cRestSubDelRespToXapp, 1},
2457 var params *teststube2ap.RESTSubsReqParams = nil
2460 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
2462 queryXappSubscription(t, int64(e2SubsId), "RAN_NAME_1", []string{"localhost:13560"})
2464 // xapp2 ROUTE creation shall fail with 400 from rtmgr -> submgr
2465 waiter := rtmgrHttp.AllocNextEvent(false)
2466 newSubsId := mainCtrl.get_registry_next_subid(t)
2467 params = xappConn2.GetRESTSubsReqReportParams(subReqCount)
2468 params.SetMeid("RAN_NAME_1")
2469 restSubId2 := xappConn2.SendRESTSubsReq(t, params)
2470 xapp.Logger.Info("Send REST subscriber request for second subscriber : %v", restSubId2)
2471 xappConn2.ExpectRESTNotificationNok(t, restSubId2, "allFail")
2472 waiter.WaitResult(t)
2473 // e2SubsId2 := xappConn2.WaitRESTNotification(t, restSubId2) - TOD: missing delete
2474 xappConn2.WaitRESTNotification(t, restSubId2)
2476 queryXappSubscription(t, int64(e2SubsId), "RAN_NAME_1", []string{"localhost:13560"})
2478 deleteSubscription(t, xappConn1, e2termConn1, &restSubId)
2480 mainCtrl.wait_subs_clean(t, newSubsId, 10)
2481 //Wait that subs is cleaned
2482 waitSubsCleanup(t, e2SubsId, 10)
2484 mainCtrl.VerifyCounterValues(t)
2487 func TestRESTSubDelReqAndRouteDeleteNok(t *testing.T) {
2488 CaseBegin("TestRESTSubDelReqAndRouteDeleteNok")
2490 // Init counter check
2491 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
2492 Counter{cRestSubReqFromXapp, 1},
2493 Counter{cRestSubRespToXapp, 1},
2494 Counter{cSubReqToE2, 1},
2495 Counter{cSubRespFromE2, 1},
2496 Counter{cRestSubNotifToXapp, 1},
2497 Counter{cRestSubDelReqFromXapp, 1},
2498 Counter{cRouteDeleteFail, 1},
2499 Counter{cSubDelReqToE2, 1},
2500 Counter{cSubDelRespFromE2, 1},
2501 Counter{cRestSubDelRespToXapp, 1},
2504 var params *teststube2ap.RESTSubsReqParams = nil
2507 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
2509 queryXappSubscription(t, int64(e2SubsId), "RAN_NAME_1", []string{"localhost:13560"})
2511 waiter := rtmgrHttp.AllocNextEvent(false)
2512 xappConn1.SendRESTSubsDelReq(t, &restSubId)
2513 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
2514 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
2515 waiter.WaitResult(t)
2517 waitSubsCleanup(t, e2SubsId, 10)
2519 mainCtrl.VerifyCounterValues(t)
2522 func TestRESTSubMergeDelAndRouteUpdateNok(t *testing.T) {
2523 CaseBegin("TestRESTSubMergeDelAndRouteUpdateNok")
2525 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
2526 Counter{cRestSubReqFromXapp, 2},
2527 Counter{cRestSubRespToXapp, 2},
2528 Counter{cSubReqToE2, 1},
2529 Counter{cSubRespFromE2, 1},
2530 Counter{cRestSubNotifToXapp, 2},
2531 Counter{cRestSubDelReqFromXapp, 2},
2532 Counter{cRouteDeleteUpdateFail, 1},
2533 Counter{cSubDelReqToE2, 1},
2534 Counter{cSubDelRespFromE2, 1},
2535 Counter{cRestSubDelRespToXapp, 2},
2538 var params *teststube2ap.RESTSubsReqParams = nil
2541 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
2543 queryXappSubscription(t, int64(e2SubsId), "RAN_NAME_1", []string{"localhost:13560"})
2544 restSubId2, e2SubsId2 := createXapp2MergedSubscription(t, "RAN_NAME_1")
2546 queryXappSubscription(t, int64(e2SubsId), "RAN_NAME_1", []string{"localhost:13560", "localhost:13660"})
2548 //Del1, this shall fail on rtmgr side
2549 waiter := rtmgrHttp.AllocNextEvent(false)
2550 xappConn1.SendRESTSubsDelReq(t, &restSubId)
2551 waiter.WaitResult(t)
2553 queryXappSubscription(t, int64(e2SubsId), "RAN_NAME_1", []string{"localhost:13660"})
2556 deleteXapp2Subscription(t, &restSubId2)
2558 waitSubsCleanup(t, e2SubsId2, 10)
2560 mainCtrl.VerifyCounterValues(t)
2563 //-----------------------------------------------------------------------------
2564 // TestRESTSubReqRetransmission
2567 // +-------+ +---------+ +---------+
2568 // | xapp | | submgr | | e2term |
2569 // +-------+ +---------+ +---------+
2571 // | RESTSubReq1 | |
2572 // |---------------->| |
2574 // | RESTSubResp | |
2575 // |<----------------| |
2577 // | |------------->|
2579 // | RESTSubReq2 | |
2581 // |---------------->| |
2582 // | RESTSubResp(201)| |
2583 // |<----------------| |
2586 // | |<-------------|
2588 // |<----------------| |
2590 // | [SUBS DELETE] |
2593 //-----------------------------------------------------------------------------
2595 func TestRESTSubReqRetransmission(t *testing.T) {
2596 CaseBegin("TestRESTSubReqRetransmission")
2598 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
2599 Counter{cRestSubReqFromXapp, 2},
2600 Counter{cRestSubRespToXapp, 2},
2601 Counter{cSubReqToE2, 1},
2602 Counter{cSubRespFromE2, 1},
2603 Counter{cRestSubNotifToXapp, 1},
2604 Counter{cRestSubDelReqFromXapp, 1},
2605 Counter{cSubDelReqToE2, 1},
2606 Counter{cSubDelRespFromE2, 1},
2607 Counter{cRestSubDelRespToXapp, 1},
2609 // Retry/duplicate will get the same way as the first request.
2610 // Contianed duplicate messages from same xapp will not be merged. Here we use xappConn2 to simulate sending
2611 // second request from same xapp as doing it from xappConn1 would not work as notification would not be received
2614 const subReqCount int = 1
2616 // In order to force both XAPP's to create their own subscriptions, force rtmgr to block a while so that 2nd create
2617 // gets into execution before the rtmgrg responds for the first one.
2618 waiter := rtmgrHttp.AllocNextSleep(10, true)
2619 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
2620 restSubId1 := xappConn1.SendRESTSubsReq(t, params)
2621 xappConn2.SendRESTSubsReq(t, params)
2623 waiter.WaitResult(t)
2625 xappConn1.WaitListedRestNotifications(t, []string{restSubId1})
2627 // Depending one goroutine scheduling order, we cannot say for sure which xapp reaches e2term first. Thus
2628 // the order is not significant he6re.
2629 crereq, cremsg := e2termConn1.RecvSubsReq(t)
2630 e2termConn1.SendSubsResp(t, crereq, cremsg)
2632 e2SubsIdA := <-xappConn1.ListedRESTNotifications
2633 xapp.Logger.Info("TEST: 1.st XAPP notification received e2SubsId=%v", e2SubsIdA)
2636 xappConn1.SendRESTSubsDelReq(t, &restSubId1)
2637 delreq1, delmsg1 := e2termConn1.RecvSubsDelReq(t)
2638 e2termConn1.SendSubsDelResp(t, delreq1, delmsg1)
2640 mainCtrl.wait_multi_subs_clean(t, []uint32{e2SubsIdA.E2SubsId}, 10)
2642 mainCtrl.VerifyCounterValues(t)
2645 //-----------------------------------------------------------------------------
2647 // +-------+ +---------+ +---------+ +---------+
2648 // | xapp | | submgr | | e2term | | rtmgr |
2649 // +-------+ +---------+ +---------+ +---------+
2651 // | RESTSubReq | | |
2652 // |---------------->| | |
2653 // | RESTSubResp | | |
2654 // |<----------------| | |
2655 // | | RouteCreate | |
2656 // | |--------------------------->|
2657 // | | RouteResponse| |
2658 // | |<---------------------------| // The order of these events may vary
2660 // | |------------->| | // The order of these events may vary
2662 // | |<-------------| |
2663 // | RESTNotif1 | | |
2664 // |<----------------| | |
2665 // | RESTSubReq | | |
2666 // | [RETRANS1] | | |
2667 // |---------------->| | |
2668 // | RESTNotif1 | | |
2669 // |<----------------| | |
2670 // | RESTSubReq | | |
2671 // | [RETRANS2] | | |
2672 // |---------------->| | |
2673 // | RESTNotif1 | | |
2674 // |<----------------| | |
2675 // | RESTSubDelReq | | |
2676 // |---------------->| | |
2677 // | | SubDelReq | |
2678 // | |------------->| |
2679 // | RESTSubDelResp| | |
2680 // |<----------------| | |
2681 // | | SubDelResp | |
2682 // | |<-------------| |
2685 //-----------------------------------------------------------------------------
2687 func TestRESTSubReqRetransmissionV2(t *testing.T) {
2688 CaseBegin("TestRESTSubReqRetransmissionV2")
2690 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
2691 Counter{cRestSubReqFromXapp, 3},
2692 Counter{cRestSubRespToXapp, 3},
2693 Counter{cSubReqToE2, 1},
2694 Counter{cSubRespFromE2, 1},
2695 Counter{cRestSubNotifToXapp, 3},
2696 Counter{cRestSubDelReqFromXapp, 1},
2697 Counter{cSubDelReqToE2, 1},
2698 Counter{cSubDelRespFromE2, 1},
2699 Counter{cRestSubDelRespToXapp, 1},
2702 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
2704 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
2706 queryXappSubscription(t, int64(e2SubsId), "RAN_NAME_1", []string{"localhost:13560"})
2709 restSubId_resend := xappConn1.SendRESTSubsReq(t, params)
2711 assert.Equal(t, restSubId_resend, restSubId)
2713 <-time.After(100 * time.Millisecond)
2716 restSubId_resend2 := xappConn1.SendRESTSubsReq(t, params)
2718 assert.Equal(t, restSubId_resend2, restSubId)
2720 <-time.After(100 * time.Millisecond)
2722 deleteSubscription(t, xappConn1, e2termConn1, &restSubId)
2724 waitSubsCleanup(t, e2SubsId, 10)
2726 //Wait that subs is cleaned
2727 mainCtrl.VerifyCounterValues(t)
2730 //-----------------------------------------------------------------------------
2732 // +-------+ +---------+ +---------+ +---------+
2733 // | xapp | | submgr | | e2term | | rtmgr |
2734 // +-------+ +---------+ +---------+ +---------+
2736 // | RESTSubReq | | |
2737 // |---------------->| | |
2738 // | RESTSubResp | | |
2739 // |<----------------| | |
2740 // | | RouteCreate | |
2741 // | |--------------------------->|
2742 // | | RouteResponse| |
2743 // | |<---------------------------| // The order of these events may vary
2745 // | |------------->| | // The order of these events may vary
2747 // | |<-------------| |
2748 // | RESTNotif1 | | |
2749 // |<----------------| | |
2750 // | RESTSubReq | | |
2751 // | [RETRANS, with RESTsubsId] | |
2752 // |---------------->| | |
2753 // | RESTNotif1 | | |
2754 // |<----------------| | |
2755 // | RESTSubReq | | |
2756 // | [RETRANS, without RESTsubsId] | |
2757 // |---------------->| | |
2758 // | RESTNotif1 | | |
2759 // |<----------------| | |
2760 // | RESTSubDelReq | | |
2761 // |---------------->| | |
2762 // | | SubDelReq | |
2763 // | |------------->| |
2764 // | RESTSubDelResp| | |
2765 // |<----------------| | |
2766 // | | SubDelResp | |
2767 // | |<-------------| |
2770 //-----------------------------------------------------------------------------
2771 func TestRESTSubReqRetransmissionV3(t *testing.T) {
2772 CaseBegin("TestRESTSubReqRetransmissionV3")
2774 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
2775 Counter{cRestSubReqFromXapp, 3},
2776 Counter{cRestSubRespToXapp, 3},
2777 Counter{cSubReqToE2, 1},
2778 Counter{cSubRespFromE2, 1},
2779 Counter{cRestSubNotifToXapp, 3},
2780 Counter{cRestSubDelReqFromXapp, 1},
2781 Counter{cSubDelReqToE2, 1},
2782 Counter{cSubDelRespFromE2, 1},
2783 Counter{cRestSubDelRespToXapp, 1},
2786 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
2788 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
2790 queryXappSubscription(t, int64(e2SubsId), "RAN_NAME_1", []string{"localhost:13560"})
2792 <-time.After(100 * time.Millisecond)
2794 //1.st resend with subscription ID
2795 params.SetSubscriptionID(&restSubId)
2796 restSubId_resend := xappConn1.SendRESTSubsReq(t, params)
2798 assert.Equal(t, restSubId_resend, restSubId)
2800 <-time.After(100 * time.Millisecond)
2802 //2.nd resend without subscription ID (faking app restart)
2803 params = xappConn1.GetRESTSubsReqReportParams(subReqCount)
2804 restSubId_resend2 := xappConn1.SendRESTSubsReq(t, params)
2806 assert.Equal(t, restSubId_resend2, restSubId)
2808 <-time.After(100 * time.Millisecond)
2810 deleteSubscription(t, xappConn1, e2termConn1, &restSubId)
2812 waitSubsCleanup(t, e2SubsId, 10)
2814 //Wait that subs is cleaned
2815 mainCtrl.VerifyCounterValues(t)
2818 //-----------------------------------------------------------------------------
2820 // +-------+ +---------+ +---------+ +---------+
2821 // | xapp | | submgr | | e2term | | rtmgr |
2822 // +-------+ +---------+ +---------+ +---------+
2824 // | RESTSubReq | | |
2825 // |---------------->| | |
2826 // | RESTSubResp | | |
2827 // |<----------------| | |
2828 // | | RouteCreate | |
2829 // | |--------------------------->|
2830 // | | RouteResponse| |
2831 // | |<---------------------------|
2833 // | |------------->| |
2835 // | |<-------------| |
2836 // | RESTNotif1 | | |
2837 // |<----------------| | |
2838 // | RESTSubReq | | |
2839 // | [with RestSUbsId + one additional e2 subDetail]
2840 // |---------------->| | |
2841 // | RESTNotif1 | | |
2842 // | [for initial e2 subDetail] | |
2843 // |<----------------| | |
2844 // | | RouteCreate | |
2845 // | |--------------------------->|
2846 // | | RouteResponse| |
2847 // | |<---------------------------|
2849 // | |------------->| |
2851 // | |<-------------| |
2852 // | RESTNotif1 | | |
2853 // |<----------------| | |
2854 // | RESTSubReq | | |
2855 // | [with RESTsubsId initial request] |
2856 // |---------------->| | |
2857 // | RESTNotif1 | | |
2858 // |<----------------| | |
2859 // | RESTSubDelReq | | |
2860 // |---------------->| | |
2861 // | RESTSubDelResp| | |
2862 // |<----------------| | |
2863 // | | SubDelReq | |
2864 // | |------------->| |
2865 // | | SubDelResp | |
2866 // | |<-------------| |
2867 // | | SubDelReq | |
2868 // | |------------->| |
2869 // | | SubDelResp | |
2870 // | |<-------------| |
2873 //-----------------------------------------------------------------------------
2875 func TestRESTSubReqRetransmissionV4(t *testing.T) {
2876 CaseBegin("TestRESTSubReqRetransmissionV4")
2878 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
2879 Counter{cRestSubReqFromXapp, 3},
2880 Counter{cRestSubRespToXapp, 3},
2881 Counter{cSubReqToE2, 2},
2882 Counter{cSubRespFromE2, 2},
2883 Counter{cRestSubNotifToXapp, 4},
2884 Counter{cRestSubDelReqFromXapp, 1},
2885 Counter{cSubDelReqToE2, 2},
2886 Counter{cSubDelRespFromE2, 2},
2887 Counter{cRestSubDelRespToXapp, 1},
2890 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
2892 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
2894 <-time.After(100 * time.Millisecond)
2896 // Send modified requst, this time with e2 subscriptions.
2897 params2 := xappConn1.GetRESTSubsReqReportParams(subReqCount + 1)
2898 params2.SetSubscriptionID(&restSubId)
2900 xapp.Subscription.SetResponseCB(xappConn1.SubscriptionRespHandler)
2901 xappConn1.WaitRESTNotificationForAnySubscriptionId(t)
2902 // Resend the original request with an additional e2 subscription (detail), this time with restsubsid
2903 restSubId_resend := xappConn1.SendRESTSubsReq(t, params2)
2905 crereq2, cremsg2 := e2termConn1.RecvSubsReq(t)
2907 xappConn1.ExpectRESTNotification(t, restSubId_resend)
2908 e2termConn1.SendSubsResp(t, crereq2, cremsg2)
2909 e2SubsId2 := xappConn1.WaitRESTNotification(t, restSubId_resend)
2910 assert.NotEqual(t, e2SubsId2, 0)
2912 <-time.After(100 * time.Millisecond)
2914 xapp.Subscription.SetResponseCB(xappConn1.SubscriptionRespHandler)
2915 params = xappConn1.GetRESTSubsReqReportParams(subReqCount)
2916 params.SetSubscriptionID(&restSubId)
2917 xappConn1.WaitRESTNotificationForAnySubscriptionId(t)
2918 // Resend the original request again with only one e2 subscription (detail), this time with restsubsid
2919 restSubId_resend2 := xappConn1.SendRESTSubsReq(t, params)
2920 assert.Equal(t, restSubId_resend, restSubId_resend2)
2922 // Delete both e2 subscriptions
2923 xappConn1.SendRESTSubsDelReq(t, &restSubId)
2924 e2SubsIds := []uint32{e2SubsId, e2SubsId2}
2925 sendAndReceiveMultipleE2DelReqs(t, e2SubsIds, e2termConn1)
2927 waitSubsCleanup(t, e2SubsId, 10)
2929 //Wait that subs is cleaned
2930 mainCtrl.VerifyCounterValues(t)
2933 //-----------------------------------------------------------------------------
2935 // +-------+ +---------+ +---------+ +---------+
2936 // | xapp | | submgr | | e2term | | rtmgr |
2937 // +-------+ +---------+ +---------+ +---------+
2939 // | RESTSubReq | | |
2940 // |---------------->| | |
2941 // | RESTSubResp | | |
2942 // |<----------------| | |
2943 // | | RouteCreate | |
2944 // | |--------------------------->|
2945 // | | RouteResponse| |
2946 // | |<---------------------------|
2948 // | |------------->| |
2950 // | |<-------------| |
2951 // | RESTNotif1 | | |
2952 // |<----------------| | |
2953 // | RESTSubReq | | |
2954 // | [with RestSUbsId + one additional e2 subDetail]
2955 // |---------------->| | |
2956 // | RESTNotif1 | | |
2957 // | [for initial e2 subDetail] | |
2958 // |<----------------| | |
2959 // | | RouteCreate | |
2960 // | |--------------------------->|
2961 // | | RouteResponse| |
2962 // | |<---------------------------|
2964 // | |------------->| |
2966 // | |<-------------| |
2967 // | RESTNotif1 | | |
2968 // |<----------------| | |
2969 // | RESTSubReq | | |
2970 // | [without RESTsubsId initial request] |
2971 // |---------------->| | |
2972 // | RESTNotif1 | | |
2973 // |<----------------| | |
2974 // | RESTSubDelReq | | |
2975 // |---------------->| | |
2976 // | RESTSubDelResp| | |
2977 // |<----------------| | |
2978 // | | SubDelReq | |
2979 // | |------------->| |
2980 // | | SubDelResp | |
2981 // | |<-------------| |
2982 // | | SubDelReq | |
2983 // | |------------->| |
2984 // | | SubDelResp | |
2985 // | |<-------------| |
2988 //-----------------------------------------------------------------------------
2990 func TestRESTSubReqRetransmissionV5(t *testing.T) {
2991 CaseBegin("TestRESTSubReqRetransmissionV5")
2993 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
2994 Counter{cRestSubReqFromXapp, 3},
2995 Counter{cRestSubRespToXapp, 3},
2996 Counter{cSubReqToE2, 2},
2997 Counter{cSubRespFromE2, 2},
2998 Counter{cRestSubNotifToXapp, 4},
2999 Counter{cRestSubDelReqFromXapp, 1},
3000 Counter{cSubDelReqToE2, 2},
3001 Counter{cSubDelRespFromE2, 2},
3002 Counter{cRestSubDelRespToXapp, 1},
3005 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
3007 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
3009 <-time.After(100 * time.Millisecond)
3011 // Send modified requst, this time with e2 subscriptions.
3012 params2 := xappConn1.GetRESTSubsReqReportParams(subReqCount + 1)
3013 params2.SetSubscriptionID(&restSubId)
3015 xapp.Subscription.SetResponseCB(xappConn1.SubscriptionRespHandler)
3016 xappConn1.WaitRESTNotificationForAnySubscriptionId(t)
3017 // Resend the original request with an additional e2 subscription (detail), this time with restsubsid
3018 restSubId_resend := xappConn1.SendRESTSubsReq(t, params2)
3020 crereq2, cremsg2 := e2termConn1.RecvSubsReq(t)
3022 xappConn1.ExpectRESTNotification(t, restSubId_resend)
3023 e2termConn1.SendSubsResp(t, crereq2, cremsg2)
3024 e2SubsId2 := xappConn1.WaitRESTNotification(t, restSubId_resend)
3025 assert.NotEqual(t, e2SubsId2, 0)
3027 <-time.After(100 * time.Millisecond)
3029 xapp.Subscription.SetResponseCB(xappConn1.SubscriptionRespHandler)
3030 params = xappConn1.GetRESTSubsReqReportParams(subReqCount)
3031 xappConn1.WaitRESTNotificationForAnySubscriptionId(t)
3032 // Resend the original request again with only one e2 subscription (detail), WITHOUT restsubsid
3033 // md5sum shall find the original request
3034 restSubId_resend2 := xappConn1.SendRESTSubsReq(t, params)
3035 assert.Equal(t, restSubId_resend, restSubId_resend2)
3037 // Delete both e2 subscriptions
3038 xappConn1.SendRESTSubsDelReq(t, &restSubId)
3039 e2SubsIds := []uint32{e2SubsId, e2SubsId2}
3040 sendAndReceiveMultipleE2DelReqs(t, e2SubsIds, e2termConn1)
3042 waitSubsCleanup(t, e2SubsId, 10)
3044 //Wait that subs is cleaned
3045 mainCtrl.VerifyCounterValues(t)
3048 //-----------------------------------------------------------------------------
3050 // +-------+ +---------+ +---------+ +---------+
3051 // | xapp | | submgr | | e2term | | rtmgr |
3052 // +-------+ +---------+ +---------+ +---------+
3054 // | RESTSubReq | | |
3055 // |---------------->| | |
3056 // | RESTSubResp | | |
3057 // |<----------------| | |
3058 // | | RouteCreate | |
3059 // | |--------------------------->|
3060 // | | RouteResponse| |
3061 // | |<---------------------------|
3063 // | |------------->| |
3065 // | |<-------------| |
3066 // | RESTNotif1 | | |
3067 // |<----------------| | |
3068 // | RESTSubReq | | |
3069 // | [with RestSUbsId + one additional e2 subDetail]
3070 // |---------------->| | |
3071 // | RESTNotif1 | | |
3072 // | [for initial e2 subDetail] | |
3073 // |<----------------| | |
3074 // | | RouteCreate | |
3075 // | |--------------------------->|
3076 // | | RouteResponse| |
3077 // | |<---------------------------|
3079 // | |------------->| |
3081 // | |<-------------| |
3082 // | RESTNotif1 | | |
3083 // |<----------------| | |
3084 // | RESTSubDelReq | | |
3085 // |---------------->| | |
3086 // | RESTSubDelResp| | |
3087 // |<----------------| | |
3088 // | | SubDelReq | |
3089 // | |------------->| |
3090 // | | SubDelResp | |
3091 // | |<-------------| |
3092 // | | SubDelReq | |
3093 // | |------------->| |
3094 // | | SubDelResp | |
3095 // | |<-------------| |
3096 // | RESTSubReq | | |
3097 // | [with RESTsubsId initial request] |
3098 // |---------------->| | |
3099 // | RESTSubResp | | |
3100 // |<----------------| | |
3101 // | | RouteCreate | |
3102 // | |--------------------------->|
3103 // | | RouteResponse| |
3104 // | |<---------------------------|
3106 // | |------------->| |
3108 // | |<-------------| |
3109 // | RESTNotif1 | | |
3110 // |<----------------| | |
3113 //-----------------------------------------------------------------------------
3114 func TestRESTSubReqRetransmissionV6(t *testing.T) {
3115 CaseBegin("TestRESTSubReqRetransmissionV6")
3117 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
3118 Counter{cRestSubReqFromXapp, 3},
3119 Counter{cRestSubRespToXapp, 3},
3120 Counter{cSubReqToE2, 3},
3121 Counter{cSubRespFromE2, 3},
3122 Counter{cRestSubNotifToXapp, 4},
3123 Counter{cRestSubDelReqFromXapp, 2},
3124 Counter{cSubDelReqToE2, 3},
3125 Counter{cSubDelRespFromE2, 3},
3126 Counter{cRestSubDelRespToXapp, 2},
3129 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
3131 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
3133 <-time.After(100 * time.Millisecond)
3135 // Send modified requst, this time with e2 subscriptions.
3136 params2 := xappConn1.GetRESTSubsReqReportParams(subReqCount + 1)
3137 params2.SetSubscriptionID(&restSubId)
3139 xapp.Subscription.SetResponseCB(xappConn1.SubscriptionRespHandler)
3140 xappConn1.WaitRESTNotificationForAnySubscriptionId(t)
3141 // Resend the original request with an additional e2 subscription (detail), this time with restsubsid
3142 restSubId_resend := xappConn1.SendRESTSubsReq(t, params2)
3144 crereq2, cremsg2 := e2termConn1.RecvSubsReq(t)
3146 xappConn1.ExpectRESTNotification(t, restSubId_resend)
3147 e2termConn1.SendSubsResp(t, crereq2, cremsg2)
3148 e2SubsId2 := xappConn1.WaitRESTNotification(t, restSubId_resend)
3149 assert.NotEqual(t, e2SubsId2, 0)
3151 <-time.After(100 * time.Millisecond)
3153 // Delete both e2 subscriptions
3154 xappConn1.SendRESTSubsDelReq(t, &restSubId)
3155 e2SubsIds := []uint32{e2SubsId, e2SubsId2}
3156 sendAndReceiveMultipleE2DelReqs(t, e2SubsIds, e2termConn1)
3158 waitSubsCleanup(t, e2SubsId, 10)
3160 // Resend the original request, we shall find it's previous md5sum/restsubs
3161 // but the restsubscription has been already removed. This shall trigger a
3163 restSubId, e2SubsId = createSubscription(t, xappConn1, e2termConn1, params)
3165 <-time.After(100 * time.Millisecond)
3167 deleteSubscription(t, xappConn1, e2termConn1, &restSubId)
3169 waitSubsCleanup(t, e2SubsId, 10)
3171 //Wait that subs is cleaned
3172 mainCtrl.VerifyCounterValues(t)
3175 func TestRESTSubDelReqRetransmission(t *testing.T) {
3176 CaseBegin("TestRESTSubDelReqRetransmission")
3178 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
3179 Counter{cRestSubReqFromXapp, 1},
3180 Counter{cRestSubRespToXapp, 1},
3181 Counter{cSubReqToE2, 1},
3182 Counter{cSubRespFromE2, 1},
3183 Counter{cRestSubNotifToXapp, 1},
3184 Counter{cRestSubDelReqFromXapp, 2},
3185 Counter{cSubDelReqToE2, 1},
3186 Counter{cSubDelRespFromE2, 1},
3187 Counter{cRestSubDelRespToXapp, 1},
3190 var params *teststube2ap.RESTSubsReqParams = nil
3193 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
3195 queryXappSubscription(t, int64(e2SubsId), "RAN_NAME_1", []string{"localhost:13560"})
3198 xappConn1.SendRESTSubsDelReq(t, &restSubId)
3199 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
3201 seqBef := mainCtrl.get_msgcounter(t)
3202 xappConn1.SendRESTSubsDelReq(t, &restSubId)
3203 mainCtrl.wait_msgcounter_change(t, seqBef, 10)
3205 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
3207 waitSubsCleanup(t, e2SubsId, 10)
3209 mainCtrl.VerifyCounterValues(t)
3212 //-----------------------------------------------------------------------------
3213 // TestRESTSubReqDelReq
3216 // +-------+ +---------+ +---------+
3217 // | xapp | | submgr | | e2term |
3218 // +-------+ +---------+ +---------+
3221 // |---------------->| |
3223 // | RESTSubResp | |
3224 // |<----------------| |
3226 // | |------------->|
3227 // | RESTSubDelReq | |
3228 // |---------------->| |
3229 // | RESTSubDelResp | |
3231 // |<----------------| |
3233 // | |<-------------|
3235 // |<----------------| |
3237 // | [SUBS DELETE] |
3240 //-----------------------------------------------------------------------------
3241 func TestRESTSubReqDelReq(t *testing.T) {
3242 CaseBegin("TestRESTSubReqDelReq")
3244 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
3245 Counter{cRestSubReqFromXapp, 1},
3246 Counter{cRestSubRespToXapp, 1},
3247 Counter{cSubReqToE2, 1},
3248 Counter{cSubRespFromE2, 1},
3249 Counter{cRestSubNotifToXapp, 1},
3250 Counter{cRestSubDelReqFromXapp, 2},
3251 Counter{cSubDelReqToE2, 1},
3252 Counter{cSubDelRespFromE2, 1},
3253 Counter{cRestSubDelRespToXapp, 1},
3256 const subReqCount int = 1
3259 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
3260 restSubId := xappConn1.SendRESTSubsReq(t, params)
3262 // Del. This will fail as processing of the subscription
3263 // is still ongoing in submgr. Deletion is not allowed before
3264 // subscription creation has been completed.
3265 xappConn1.SendRESTSubsDelReq(t, &restSubId)
3266 crereq, cremsg := e2termConn1.RecvSubsReq(t)
3267 xappConn1.ExpectRESTNotification(t, restSubId)
3268 e2termConn1.SendSubsResp(t, crereq, cremsg)
3269 e2SubsId := xappConn1.WaitRESTNotification(t, restSubId)
3272 xappConn1.SendRESTSubsDelReq(t, &restSubId)
3274 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
3275 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
3277 // Wait that subs is cleaned
3278 waitSubsCleanup(t, e2SubsId, 10)
3279 mainCtrl.VerifyCounterValues(t)
3283 func TestRESTSubDelReqCollision(t *testing.T) {
3284 CaseBegin("TestRESTSubDelReqCollision - not relevant for REST API")
3287 func TestRESTSubReqAndSubDelOkTwoParallel(t *testing.T) {
3288 CaseBegin("TestRESTSubReqAndSubDelOkTwoParallel")
3290 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
3291 Counter{cRestSubReqFromXapp, 2},
3292 Counter{cRestSubRespToXapp, 2},
3293 Counter{cSubReqToE2, 2},
3294 Counter{cSubRespFromE2, 2},
3295 Counter{cRestSubNotifToXapp, 2},
3296 Counter{cRestSubDelReqFromXapp, 2},
3297 Counter{cSubDelReqToE2, 2},
3298 Counter{cSubDelRespFromE2, 2},
3299 Counter{cRestSubDelRespToXapp, 2},
3303 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
3304 restSubId1 := xappConn1.SendRESTSubsReq(t, params)
3305 xapp.Logger.Info("Send 1st REST subscriber request for subscriberId : %v", restSubId1)
3308 params = xappConn2.GetRESTSubsReqReportParams(subReqCount)
3309 restSubId2 := xappConn2.SendRESTSubsReq(t, params)
3310 xapp.Logger.Info("Send 2nd REST subscriber request for subscriberId : %v", restSubId2)
3312 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
3313 crereq2, cremsg2 := e2termConn1.RecvSubsReq(t)
3315 //XappConn1 receives both of the responses
3316 xappConn1.WaitListedRestNotifications(t, []string{restSubId1, restSubId2})
3319 e2termConn1.SendSubsResp(t, crereq1, cremsg1)
3321 e2termConn1.SendSubsResp(t, crereq2, cremsg2)
3323 e2SubsIdA := <-xappConn1.ListedRESTNotifications
3324 xapp.Logger.Info("TEST: 1.st XAPP notification received e2SubsId=%v", e2SubsIdA)
3325 e2SubsIdB := <-xappConn1.ListedRESTNotifications
3326 xapp.Logger.Info("TEST: 2.nd XAPP notification received e2SubsId=%v", e2SubsIdB)
3329 deleteSubscription(t, xappConn1, e2termConn1, &restSubId1)
3331 deleteSubscription(t, xappConn2, e2termConn1, &restSubId2)
3333 //Wait that subs is cleaned
3334 mainCtrl.wait_subs_clean(t, e2SubsIdA.E2SubsId, 10)
3335 waitSubsCleanup(t, e2SubsIdB.E2SubsId, 10)
3337 mainCtrl.VerifyCounterValues(t)
3341 func TestRESTSameSubsDiffRan(t *testing.T) {
3342 CaseBegin("TestRESTSameSubsDiffRan")
3344 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
3345 Counter{cRestSubReqFromXapp, 2},
3346 Counter{cRestSubRespToXapp, 2},
3347 Counter{cSubReqToE2, 2},
3348 Counter{cSubRespFromE2, 2},
3349 Counter{cRestSubNotifToXapp, 2},
3350 Counter{cRestSubDelReqFromXapp, 2},
3351 Counter{cSubDelReqToE2, 2},
3352 Counter{cSubDelRespFromE2, 2},
3353 Counter{cRestSubDelRespToXapp, 2},
3356 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
3357 restSubId1, e2SubsId1 := createSubscription(t, xappConn1, e2termConn1, params)
3358 xapp.Logger.Info("Send 1st REST subscriber request for subscriberId : %v", restSubId1)
3360 params = xappConn1.GetRESTSubsReqReportParams(subReqCount)
3361 params.SetMeid("RAN_NAME_2")
3362 restSubId2, e2SubsId2 := createSubscription(t, xappConn1, e2termConn1, params)
3363 xapp.Logger.Info("Send 2nd REST subscriber request for subscriberId : %v", restSubId2)
3366 deleteSubscription(t, xappConn1, e2termConn1, &restSubId1)
3368 deleteSubscription(t, xappConn1, e2termConn1, &restSubId2)
3370 //Wait that subs is cleaned
3371 mainCtrl.wait_subs_clean(t, e2SubsId1, 10)
3372 waitSubsCleanup(t, e2SubsId2, 10)
3374 mainCtrl.VerifyCounterValues(t)
3378 func TestRESTSubReqRetryInSubmgr(t *testing.T) {
3379 CaseBegin("TestRESTSubReqRetryInSubmgr start")
3381 // Init counter check
3382 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
3383 Counter{cRestSubReqFromXapp, 1},
3384 Counter{cRestSubRespToXapp, 1},
3385 Counter{cSubReqToE2, 1},
3386 Counter{cSubReReqToE2, 1},
3387 Counter{cSubRespFromE2, 1},
3388 Counter{cRestSubNotifToXapp, 1},
3389 Counter{cRestSubDelReqFromXapp, 1},
3390 Counter{cSubDelReqToE2, 1},
3391 Counter{cSubDelRespFromE2, 1},
3392 Counter{cRestSubDelRespToXapp, 1},
3395 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
3396 restSubId := xappConn1.SendRESTSubsReq(t, params)
3398 xapp.Logger.Info("Send REST subscriber request for subscriber : %v", restSubId)
3400 // Catch the first message and ignore it
3401 crereq, cremsg := e2termConn1.RecvSubsReq(t)
3402 xapp.Logger.Info("Ignore REST subscriber request for subscriber : %v", restSubId)
3404 // The second request is being handled normally
3405 crereq, cremsg = e2termConn1.RecvSubsReq(t)
3406 xappConn1.ExpectRESTNotification(t, restSubId)
3407 e2termConn1.SendSubsResp(t, crereq, cremsg)
3408 e2SubsId := xappConn1.WaitRESTNotification(t, restSubId)
3410 queryXappSubscription(t, int64(e2SubsId), "RAN_NAME_1", []string{"localhost:13560"})
3412 deleteSubscription(t, xappConn1, e2termConn1, &restSubId)
3414 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
3415 //Wait that subs is cleaned
3416 waitSubsCleanup(t, e2SubsId, 10)
3418 mainCtrl.VerifyCounterValues(t)
3422 //-----------------------------------------------------------------------------
3423 // TestRESTSubReqTwoRetriesNoRespSubDelRespInSubmgr
3426 // +-------+ +---------+ +---------+
3427 // | xapp | | submgr | | e2term |
3428 // +-------+ +---------+ +---------+
3431 // |---------------->| |
3433 // | RESTSubResp | |
3434 // |<----------------| |
3436 // | |------------->|
3440 // | |------------->|
3443 // | |------------->|
3447 // | |------------->|
3451 // | |<-------------|
3454 // |<----------------| |
3456 // | [SUBS DELETE] |
3459 //-----------------------------------------------------------------------------
3461 func TestRESTSubReqRetryNoRespSubDelRespInSubmgr(t *testing.T) {
3462 CaseBegin("TestRESTSubReqTwoRetriesNoRespSubDelRespInSubmgr start")
3464 // Init counter check
3465 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
3466 Counter{cRestSubReqFromXapp, 1},
3467 Counter{cRestSubRespToXapp, 1},
3468 Counter{cSubReqToE2, 1},
3469 Counter{cSubReReqToE2, 1},
3470 Counter{cSubReqTimerExpiry, 2},
3471 Counter{cSubDelReqToE2, 1},
3472 Counter{cSubDelRespFromE2, 1},
3475 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
3476 restSubId := xappConn1.SendRESTSubsReq(t, params)
3477 xapp.Logger.Info("Send REST subscriber request for subscriber : %v", restSubId)
3479 e2termConn1.RecvSubsReq(t)
3480 xapp.Logger.Info("Ignore 1st REST subscriber request for subscriber : %v", restSubId)
3482 e2termConn1.RecvSubsReq(t)
3483 xapp.Logger.Info("Ignore 2nd REST subscriber request for subscriber : %v", restSubId)
3485 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
3486 xappConn1.ExpectRESTNotificationNok(t, restSubId, "allFail")
3487 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
3488 xappConn1.WaitRESTNotification(t, restSubId)
3490 // Wait that subs is cleaned
3491 waitSubsCleanup(t, delreq.RequestId.InstanceId, 10)
3493 mainCtrl.VerifyCounterValues(t)
3496 func TestREST2eTermNotRespondingToSubReq(t *testing.T) {
3497 CaseBegin("TestREST2eTermNotRespondingToSubReq start")
3499 // Init counter check
3500 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
3501 Counter{cRestSubReqFromXapp, 1},
3502 Counter{cRestSubRespToXapp, 1},
3503 Counter{cSubReqToE2, 1},
3504 Counter{cSubReReqToE2, 1},
3505 Counter{cSubReqTimerExpiry, 2},
3506 Counter{cSubDelReqToE2, 1},
3507 Counter{cSubDelReqTimerExpiry, 2},
3510 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
3511 restSubId := xappConn1.SendRESTSubsReq(t, params)
3512 xapp.Logger.Info("Send REST subscriber request for subscriber : %v", restSubId)
3514 e2termConn1.RecvSubsReq(t)
3515 xapp.Logger.Info("Ignore 1st REST subscriber request for subscriber : %v", restSubId)
3517 e2termConn1.RecvSubsReq(t)
3518 xapp.Logger.Info("Ignore 2nd REST subscriber request for subscriber : %v", restSubId)
3520 e2termConn1.RecvSubsDelReq(t)
3521 xapp.Logger.Info("Ignore 1st INTERNAL delete request for subscriber : %v", restSubId)
3523 xappConn1.ExpectRESTNotificationNok(t, restSubId, "allFail")
3524 e2termConn1.RecvSubsDelReq(t)
3525 xapp.Logger.Info("Ignore 2nd INTERNAL delete request for subscriber : %v", restSubId)
3527 e2SubsId := xappConn1.WaitRESTNotification(t, restSubId)
3529 waitSubsCleanup(t, e2SubsId, 10)
3531 mainCtrl.VerifyCounterValues(t)
3535 //-----------------------------------------------------------------------------
3536 // TestRESTSubReqTwoRetriesNoRespSubDelRespInSubmgr
3539 // +-------+ +---------+ +---------+
3540 // | xapp | | submgr | | e2term |
3541 // +-------+ +---------+ +---------+
3544 // |---------------->| |
3546 // | RESTSubResp | |
3547 // |<----------------| |
3549 // | |------------->|
3553 // | |------------->|
3556 // | |------------->|
3560 // | |------------->|
3564 // | |<-------------|
3567 // |<----------------| |
3569 // | [SUBS DELETE] |
3572 //-----------------------------------------------------------------------------
3573 func TestRESTSubReqTwoRetriesNoRespAtAllInSubmgr(t *testing.T) {
3574 CaseBegin("TestRESTSubReqTwoRetriesNoRespAtAllInSubmgr start")
3576 // Init counter check
3577 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
3578 Counter{cRestSubReqFromXapp, 1},
3579 Counter{cRestSubRespToXapp, 1},
3580 Counter{cSubReqToE2, 1},
3581 Counter{cSubReReqToE2, 1},
3582 Counter{cSubReqTimerExpiry, 2},
3583 Counter{cSubDelReqToE2, 1},
3584 Counter{cSubDelReReqToE2, 1},
3585 Counter{cSubDelReqTimerExpiry, 2},
3588 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
3589 restSubId := xappConn1.SendRESTSubsReq(t, params)
3590 xapp.Logger.Info("Send REST subscriber request for subscriber : %v", restSubId)
3592 e2termConn1.RecvSubsReq(t)
3593 xapp.Logger.Info("Ignore 1st REST subscriber request for subscriber : %v", restSubId)
3595 e2termConn1.RecvSubsReq(t)
3596 xapp.Logger.Info("Ignore 2nd REST subscriber request for subscriber : %v", restSubId)
3598 e2termConn1.RecvSubsDelReq(t)
3599 xapp.Logger.Info("Ignore 1st INTERNAL delete request for subscriber : %v", restSubId)
3601 xappConn1.ExpectRESTNotificationNok(t, restSubId, "allFail")
3602 e2termConn1.RecvSubsDelReq(t)
3603 xapp.Logger.Info("Ignore 2nd INTERNAL delete request for subscriber : %v", restSubId)
3605 e2SubsId := xappConn1.WaitRESTNotification(t, restSubId)
3607 waitSubsCleanup(t, e2SubsId, 10)
3609 mainCtrl.VerifyCounterValues(t)
3612 //-----------------------------------------------------------------------------
3613 // TestRESTSubReqSubFailRespInSubmgr
3616 // +-------+ +---------+ +---------+
3617 // | xapp | | submgr | | e2term |
3618 // +-------+ +---------+ +---------+
3621 // |---------------->| |
3623 // | RESTSubResp | |
3624 // |<----------------| |
3626 // | |------------->|
3629 // | |<-------------|
3632 // | |------------->|
3635 // | |<-------------|
3639 // |<----------------| |
3641 // | [SUBS DELETE] |
3644 //-----------------------------------------------------------------------------
3645 func TestRESTSubReqSubFailRespInSubmgr(t *testing.T) {
3646 CaseBegin("TestRESTSubReqSubFailRespInSubmgr")
3648 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
3649 Counter{cRestSubReqFromXapp, 1},
3650 Counter{cRestSubRespToXapp, 1},
3651 Counter{cSubReqToE2, 1},
3652 Counter{cSubFailFromE2, 1},
3653 Counter{cRestSubFailNotifToXapp, 1},
3654 Counter{cRestSubDelReqFromXapp, 1},
3657 const subReqCount int = 1
3659 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
3660 restSubId := xappConn1.SendRESTSubsReq(t, params)
3662 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
3663 fparams1 := &teststube2ap.E2StubSubsFailParams{}
3664 fparams1.Set(crereq1)
3665 e2termConn1.SendSubsFail(t, fparams1, cremsg1)
3667 delreq1, delmsg1 := e2termConn1.RecvSubsDelReq(t)
3668 xappConn1.ExpectRESTNotificationNok(t, restSubId, "allFail")
3669 e2termConn1.SendSubsDelResp(t, delreq1, delmsg1)
3670 e2SubsId := xappConn1.WaitRESTNotification(t, restSubId)
3671 xapp.Logger.Info("TEST: REST notification received e2SubsId=%v", e2SubsId)
3673 // REST subscription sill there to be deleted
3674 xappConn1.SendRESTSubsDelReq(t, &restSubId)
3676 // Wait that subs is cleaned
3677 waitSubsCleanup(t, e2SubsId, 10)
3679 mainCtrl.VerifyCounterValues(t)
3683 //-----------------------------------------------------------------------------
3684 // TestRESTSubDelReqRetryInSubmgr
3687 // +-------+ +---------+ +---------+
3688 // | xapp | | submgr | | e2term |
3689 // +-------+ +---------+ +---------+
3691 // | [SUBS CREATE] |
3694 // | RESTSubDelReq | |
3695 // |---------------->| |
3697 // | RESTSubDelResp | |
3698 // |<----------------| |
3700 // | |------------->|
3703 // | |------------->|
3706 // | |<-------------|
3709 //-----------------------------------------------------------------------------
3710 func TestRESTSubDelReqRetryInSubmgr(t *testing.T) {
3711 CaseBegin("TestRESTSubDelReqRetryInSubmgr")
3713 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
3714 Counter{cRestSubReqFromXapp, 1},
3715 Counter{cRestSubRespToXapp, 1},
3716 Counter{cSubReqToE2, 1},
3717 Counter{cSubRespFromE2, 1},
3718 Counter{cRestSubNotifToXapp, 1},
3719 Counter{cRestSubDelReqFromXapp, 1},
3720 Counter{cSubDelReqToE2, 1},
3721 Counter{cSubDelReReqToE2, 1},
3722 Counter{cSubDelRespFromE2, 1},
3723 Counter{cRestSubDelRespToXapp, 1},
3726 var params *teststube2ap.RESTSubsReqParams = nil
3727 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
3730 xappConn1.SendRESTSubsDelReq(t, &restSubId)
3732 // E2t: Receive 1st SubsDelReq
3733 e2termConn1.RecvSubsDelReq(t)
3735 // E2t: Receive 2nd SubsDelReq and send SubsDelResp
3736 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
3737 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
3739 //Wait that subs is cleaned
3740 waitSubsCleanup(t, e2SubsId, 10)
3742 mainCtrl.VerifyCounterValues(t)
3745 //-----------------------------------------------------------------------------
3746 // TestRESTSubDelReqTwoRetriesNoRespInSubmgr
3749 // +-------+ +---------+ +---------+
3750 // | xapp | | submgr | | e2term |
3751 // +-------+ +---------+ +---------+
3753 // | [SUBS CREATE] |
3756 // | RESTSubDelReq | |
3757 // |---------------->| |
3759 // | RESTSubDelResp | |
3760 // |<----------------| |
3762 // | |------------->|
3765 // | |------------->|
3769 //-----------------------------------------------------------------------------
3770 func TestRESTSubDelReqTwoRetriesNoRespInSubmgr(t *testing.T) {
3771 CaseBegin("TestRESTSubDelReTwoRetriesNoRespInSubmgr")
3773 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
3774 Counter{cRestSubReqFromXapp, 1},
3775 Counter{cRestSubRespToXapp, 1},
3776 Counter{cSubReqToE2, 1},
3777 Counter{cSubRespFromE2, 1},
3778 Counter{cRestSubNotifToXapp, 1},
3779 Counter{cRestSubDelReqFromXapp, 1},
3780 Counter{cSubDelReqToE2, 1},
3781 Counter{cSubDelReReqToE2, 1},
3782 Counter{cSubDelRespFromE2, 1},
3783 Counter{cRestSubDelRespToXapp, 1},
3787 var params *teststube2ap.RESTSubsReqParams = nil
3788 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
3791 xappConn1.SendRESTSubsDelReq(t, &restSubId)
3793 // E2t: Receive 1st SubsDelReq
3794 e2termConn1.RecvSubsDelReq(t)
3796 // E2t: Receive 2nd SubsDelReq and send SubsDelResp
3797 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
3798 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
3800 //Wait that subs is cleaned
3801 waitSubsCleanup(t, e2SubsId, 10)
3803 mainCtrl.VerifyCounterValues(t)
3806 //-----------------------------------------------------------------------------
3807 // TestRESTSubDelReqSubDelFailRespInSubmgr
3810 // +-------+ +---------+ +---------+
3811 // | xapp | | submgr | | e2term |
3812 // +-------+ +---------+ +---------+
3814 // | [SUBS CREATE] |
3817 // | RESTSubDelReq | |
3818 // |---------------->| |
3820 // | RESTSubDelResp | |
3821 // |<----------------| |
3823 // | |------------->|
3826 // | |<-------------|
3829 //-----------------------------------------------------------------------------
3830 func TestRESTSubDelReqSubDelFailRespInSubmgr(t *testing.T) {
3831 CaseBegin("TestRESTSubDelReqSubDelFailRespInSubmgr")
3833 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
3834 Counter{cRestSubReqFromXapp, 1},
3835 Counter{cRestSubRespToXapp, 1},
3836 Counter{cSubReqToE2, 1},
3837 Counter{cSubRespFromE2, 1},
3838 Counter{cRestSubNotifToXapp, 1},
3839 Counter{cRestSubDelReqFromXapp, 1},
3840 Counter{cSubDelReqToE2, 1},
3841 Counter{cSubDelFailFromE2, 1},
3842 Counter{cRestSubDelRespToXapp, 1},
3846 var params *teststube2ap.RESTSubsReqParams = nil
3847 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
3850 xappConn1.SendRESTSubsDelReq(t, &restSubId)
3852 // E2t: Send receive SubsDelReq and send SubsDelFail
3853 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
3854 e2termConn1.SendSubsDelFail(t, delreq, delmsg)
3856 //Wait that subs is cleaned
3857 waitSubsCleanup(t, e2SubsId, 10)
3859 mainCtrl.VerifyCounterValues(t)
3862 //-----------------------------------------------------------------------------
3863 // TestRESTSubReqAndSubDelOkSameAction
3866 // +-------+ +-------+ +---------+ +---------+
3867 // | xapp2 | | xapp1 | | submgr | | e2term |
3868 // +-------+ +-------+ +---------+ +---------+
3870 // | | RESTSubReq1 | |
3871 // | |---------------->| |
3873 // | | RESTSubResp1 | |
3874 // | |<----------------| |
3877 // | | |------------->|
3879 // | | |<-------------|
3880 // | | RESTNotif1 | |
3881 // | |<----------------| |
3883 // | RESTSubReq2 | |
3884 // |------------------------------>| |
3886 // | RESTSubResp2 | |
3887 // |<------------------------------| |
3889 // | | RESTNotif2 | |
3890 // |<------------------------------| |
3892 // | | RESTSubDelReq1 | |
3893 // | |---------------->| |
3895 // | | RESTSubDelResp1 | |
3896 // | |<----------------| |
3898 // | RESTSubDelReq2 | |
3899 // |------------------------------>| |
3901 // | RESTSubDelResp2 | |
3902 // |<------------------------------| |
3904 // | | | SubDelReq2 |
3905 // | | |------------->|
3907 // | | | SubDelResp2 |
3908 // | | |<-------------|
3911 //-----------------------------------------------------------------------------
3912 func TestRESTSubReqAndSubDelOkSameAction(t *testing.T) {
3913 CaseBegin("TestRESTSubReqAndSubDelOkSameAction")
3915 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
3916 Counter{cRestSubReqFromXapp, 2},
3917 Counter{cRestSubRespToXapp, 2},
3918 Counter{cSubReqToE2, 1},
3919 Counter{cSubRespFromE2, 1},
3920 Counter{cRestSubNotifToXapp, 2},
3921 Counter{cMergedSubscriptions, 1},
3922 Counter{cUnmergedSubscriptions, 1},
3923 Counter{cRestSubDelReqFromXapp, 2},
3924 Counter{cSubDelReqToE2, 1},
3925 Counter{cSubDelRespFromE2, 1},
3926 Counter{cRestSubDelRespToXapp, 2},
3930 var params *teststube2ap.RESTSubsReqParams = nil
3933 restSubId1, e2SubsId1 := createSubscription(t, xappConn1, e2termConn1, params)
3934 queryXappSubscription(t, int64(e2SubsId1), "RAN_NAME_1", []string{"localhost:13560"})
3937 params = xappConn2.GetRESTSubsReqReportParams(subReqCount)
3938 params.SetMeid("RAN_NAME_1")
3940 xapp.Subscription.SetResponseCB(xappConn2.SubscriptionRespHandler)
3941 xappConn2.WaitRESTNotificationForAnySubscriptionId(t)
3942 waiter := rtmgrHttp.AllocNextSleep(10, true)
3943 restSubId2 := xappConn2.SendRESTSubsReq(t, params)
3944 waiter.WaitResult(t)
3945 xapp.Logger.Info("Send REST subscriber request for subscriberId : %v", restSubId2)
3946 e2SubsId2 := <-xappConn2.RESTNotification
3947 xapp.Logger.Info("REST notification received e2SubsId=%v", e2SubsId2)
3949 queryXappSubscription(t, int64(e2SubsId1), "RAN_NAME_1", []string{"localhost:13560", "localhost:13660"})
3952 xappConn1.SendRESTSubsDelReq(t, &restSubId1)
3955 deleteXapp2Subscription(t, &restSubId2)
3957 //Wait that subs is cleaned
3958 waitSubsCleanup(t, e2SubsId2, 10)
3960 mainCtrl.VerifyCounterValues(t)
3963 //-----------------------------------------------------------------------------
3964 // TestSubReqAndSubDelOkSameActionParallel
3967 // +-------+ +-------+ +---------+ +---------+
3968 // | xapp2 | | xapp1 | | submgr | | e2term |
3969 // +-------+ +-------+ +---------+ +---------+
3974 // | |------------->| |
3977 // | | |------------->|
3979 // |--------------------------->| |
3981 // | | |<-------------|
3983 // | |<-------------| |
3985 // | | |------------->|
3988 // | | |<-------------|
3990 // |<---------------------------| |
3992 // | | SubDelReq 1 | |
3993 // | |------------->| |
3995 // | | SubDelResp 1 | |
3996 // | |<-------------| |
3998 // | SubDelReq 2 | |
3999 // |--------------------------->| |
4001 // | | | SubDelReq 2 |
4002 // | | |------------->|
4004 // | | | SubDelReq 2 |
4005 // | | |------------->|
4007 // | SubDelResp 2 | |
4008 // |<---------------------------| |
4010 func TestRESTSubReqAndSubDelOkSameActionParallel(t *testing.T) {
4011 CaseBegin("TestRESTSubReqAndSubDelOkSameActionParallel")
4013 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
4014 Counter{cRestSubReqFromXapp, 2},
4015 Counter{cRestSubRespToXapp, 2},
4016 Counter{cSubReqToE2, 2},
4017 Counter{cSubRespFromE2, 2},
4018 Counter{cRestSubNotifToXapp, 2},
4019 Counter{cRestSubDelReqFromXapp, 2},
4020 Counter{cSubDelReqToE2, 2},
4021 Counter{cSubDelRespFromE2, 2},
4022 Counter{cRestSubDelRespToXapp, 2},
4025 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
4026 restSubId1 := xappConn1.SendRESTSubsReq(t, params)
4027 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
4029 params2 := xappConn2.GetRESTSubsReqReportParams(subReqCount)
4030 restSubId2 := xappConn2.SendRESTSubsReq(t, params2)
4032 xappConn1.ExpectRESTNotification(t, restSubId1)
4033 e2termConn1.SendSubsResp(t, crereq1, cremsg1)
4034 e2SubsId1 := xappConn1.WaitRESTNotification(t, restSubId1)
4036 xappConn2.ExpectRESTNotification(t, restSubId2)
4037 crereq2, cremsg2 := e2termConn1.RecvSubsReq(t)
4038 e2termConn1.SendSubsResp(t, crereq2, cremsg2)
4039 e2SubsId2 := xappConn2.WaitRESTNotification(t, restSubId2)
4042 xappConn1.SendRESTSubsDelReq(t, &restSubId1)
4043 delreq1, delmsg1 := e2termConn1.RecvSubsDelReq(t)
4044 e2termConn1.SendSubsDelResp(t, delreq1, delmsg1)
4045 mainCtrl.wait_subs_clean(t, e2SubsId1, 10)
4048 xappConn2.SendRESTSubsDelReq(t, &restSubId2)
4049 delreq2, delmsg2 := e2termConn1.RecvSubsDelReq(t)
4050 e2termConn1.SendSubsDelResp(t, delreq2, delmsg2)
4052 waitSubsCleanup(t, e2SubsId2, 10)
4054 mainCtrl.VerifyCounterValues(t)
4057 //-----------------------------------------------------------------------------
4058 // TestRESTSubReqAndSubDelNoAnswerSameActionParallel
4061 // +-------+ +-------+ +---------+ +---------+
4062 // | xapp2 | | xapp1 | | submgr | | e2term |
4063 // +-------+ +-------+ +---------+ +---------+
4067 // | | RESTSubReq1 | |
4068 // | |---------------->| |
4070 // | | RESTSubResp1 | |
4071 // | |<----------------| |
4073 // | | |------------->|
4074 // | RESTSubReq2 | |
4075 // |------------------------------>| |
4077 // | RESTSubDelResp2 | |
4078 // |<------------------------------| |
4080 // | | |------------->|
4083 // | | | SubDelReq |
4084 // | | |------------->|
4086 // | | | SubDelResp |
4087 // | | |<-------------|
4088 // | | RESTNotif1 | |
4089 // | | unsuccess | |
4090 // | |<----------------| |
4092 // | | unsuccess | |
4093 // |<------------------------------| |
4095 // | | RESTSubDelReq1 | |
4096 // | |---------------->| |
4098 // | | RESTSubDelResp1 | |
4099 // | |<----------------| |
4101 // | RESTSubDelReq2 | |
4102 // |------------------------------>| |
4104 // | RESTSubDelResp2 | |
4105 // |<------------------------------| |
4107 //-----------------------------------------------------------------------------
4108 func TestRESTSubReqAndSubDelNoAnswerSameActionParallel(t *testing.T) {
4109 CaseBegin("TestRESTSubReqAndSubDelNoAnswerSameActionParallel")
4111 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
4112 Counter{cRestSubReqFromXapp, 2},
4113 Counter{cRestSubRespToXapp, 2},
4114 Counter{cSubReqToE2, 1},
4115 Counter{cRestSubFailNotifToXapp, 2},
4116 Counter{cRestSubDelReqFromXapp, 2},
4117 Counter{cSubDelReqToE2, 1},
4118 Counter{cSubDelRespFromE2, 1},
4119 Counter{cRestSubDelRespToXapp, 2},
4122 const subReqCount int = 1
4125 params1 := xappConn1.GetRESTSubsReqReportParams(subReqCount)
4126 restSubId1 := xappConn1.SendRESTSubsReq(t, params1)
4127 crereq1, _ := e2termConn1.RecvSubsReq(t)
4130 subepcnt2 := mainCtrl.get_subs_entrypoint_cnt(t, crereq1.RequestId.InstanceId)
4131 params2 := xappConn2.GetRESTSubsReqReportParams(subReqCount)
4132 params2.SetMeid("RAN_NAME_1")
4133 restSubId2 := xappConn2.SendRESTSubsReq(t, params2)
4134 mainCtrl.wait_subs_entrypoint_cnt_change(t, crereq1.RequestId.InstanceId, subepcnt2, 10)
4136 //Req1 (retransmitted)
4137 e2termConn1.RecvSubsReq(t)
4139 delreq1, delmsg1 := e2termConn1.RecvSubsDelReq(t)
4141 xappConn1.WaitListedRestNotifications(t, []string{restSubId1, restSubId2})
4142 e2termConn1.SendSubsDelResp(t, delreq1, delmsg1)
4144 e2SubsIdA := <-xappConn1.ListedRESTNotifications
4145 xapp.Logger.Info("TEST: 1.st XAPP notification received e2SubsId=%v", e2SubsIdA)
4146 e2SubsIdB := <-xappConn1.ListedRESTNotifications
4147 xapp.Logger.Info("TEST: 2.nd XAPP notification received e2SubsId=%v", e2SubsIdB)
4150 xappConn1.SendRESTSubsDelReq(t, &restSubId1)
4153 xappConn2.SendRESTSubsDelReq(t, &restSubId2)
4155 mainCtrl.wait_multi_subs_clean(t, []uint32{e2SubsIdA.E2SubsId, e2SubsIdB.E2SubsId}, 10)
4157 //Wait that subs is cleaned
4158 waitSubsCleanup(t, e2SubsIdA.E2SubsId, 10)
4160 mainCtrl.VerifyCounterValues(t)
4163 //-----------------------------------------------------------------------------
4164 // TestRESTSubReqAndSubDelNokSameActionParallel
4167 // +-------+ +-------+ +---------+ +---------+
4168 // | xapp2 | | xapp1 | | submgr | | e2term |
4169 // +-------+ +-------+ +---------+ +---------+
4173 // | | RESTSubReq1 | |
4174 // | |---------------->| |
4176 // | | RESTSubResp1 | |
4177 // | |<----------------| |
4179 // | | |------------->|
4180 // | RESTSubReq2 | |
4181 // |------------------------------>| |
4183 // | RESTSubDelResp2 | |
4184 // |<------------------------------| |
4186 // | | |<-------------|
4188 // | | RESTNotif1 | |
4189 // | | unsuccess | |
4190 // | |<----------------| |
4192 // | | unsuccess | |
4193 // |<------------------------------| |
4194 // | | | SubDelReq |
4195 // | | |------------->|
4196 // | | | SubDelResp |
4197 // | | |<-------------|
4199 // | | RESTSubDelReq1 | |
4200 // | |---------------->| |
4202 // | | RESTSubDelResp1 | |
4203 // | |<----------------| |
4205 // | RESTSubDelReq2 | |
4206 // |------------------------------>| |
4208 // | RESTSubDelResp2 | |
4209 // |<------------------------------| |
4211 //-----------------------------------------------------------------------------
4212 func TestRESTSubReqAndSubDelNokSameActionParallel(t *testing.T) {
4213 CaseBegin("TestRESTSubReqAndSubDelNokSameActionParallel")
4215 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
4216 Counter{cRestSubReqFromXapp, 2},
4217 Counter{cRestSubRespToXapp, 2},
4218 Counter{cSubReqToE2, 1},
4219 Counter{cSubFailFromE2, 1},
4220 Counter{cRestSubFailNotifToXapp, 2},
4221 Counter{cRestSubDelReqFromXapp, 2},
4222 Counter{cSubDelReqToE2, 1},
4223 Counter{cSubDelRespFromE2, 1},
4224 Counter{cRestSubDelRespToXapp, 2},
4227 const subReqCount int = 1
4230 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
4231 restSubId1 := xappConn1.SendRESTSubsReq(t, params)
4232 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
4235 subepcnt2 := mainCtrl.get_subs_entrypoint_cnt(t, crereq1.RequestId.InstanceId)
4236 params2 := xappConn2.GetRESTSubsReqReportParams(subReqCount)
4237 params2.SetMeid("RAN_NAME_1")
4238 restSubId2 := xappConn2.SendRESTSubsReq(t, params2)
4239 mainCtrl.wait_subs_entrypoint_cnt_change(t, crereq1.RequestId.InstanceId, subepcnt2, 10)
4241 // E2t: send SubsFail (first)
4242 fparams1 := &teststube2ap.E2StubSubsFailParams{}
4243 fparams1.Set(crereq1)
4244 e2termConn1.SendSubsFail(t, fparams1, cremsg1)
4246 // E2t: internal delete
4247 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
4248 xappConn1.WaitListedRestNotifications(t, []string{restSubId1, restSubId2})
4249 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
4251 e2SubsIdA := <-xappConn1.ListedRESTNotifications
4252 xapp.Logger.Info("TEST: 1.st XAPP notification received e2SubsId=%v", e2SubsIdA)
4253 e2SubsIdB := <-xappConn1.ListedRESTNotifications
4254 xapp.Logger.Info("TEST: 2.nd XAPP notification received e2SubsId=%v", e2SubsIdB)
4257 xappConn1.SendRESTSubsDelReq(t, &restSubId1)
4260 xappConn2.SendRESTSubsDelReq(t, &restSubId2)
4262 //Wait that subs is cleaned
4263 waitSubsCleanup(t, e2SubsIdA.E2SubsId, 10)
4264 waitSubsCleanup(t, e2SubsIdB.E2SubsId, 10)
4266 mainCtrl.VerifyCounterValues(t)
4269 func TestRESTSubReqPolicyAndSubDelOk(t *testing.T) {
4270 CaseBegin("TestRESTSubReqPolicyAndSubDelOk")
4272 // Init counter check
4273 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
4274 Counter{cRestSubReqFromXapp, 1},
4275 Counter{cRestSubRespToXapp, 1},
4276 Counter{cSubReqToE2, 1},
4277 Counter{cSubRespFromE2, 1},
4278 Counter{cRestSubNotifToXapp, 1},
4279 Counter{cRestSubDelReqFromXapp, 1},
4280 Counter{cSubDelReqToE2, 1},
4281 Counter{cSubDelRespFromE2, 1},
4282 Counter{cRestSubDelRespToXapp, 1},
4285 const subReqCount int = 1
4287 params := xappConn1.GetRESTSubsReqPolicyParams(subReqCount)
4288 restSubId := xappConn1.SendRESTSubsReq(t, params)
4289 xapp.Logger.Info("Send REST Policy subscriber request for subscriberId : %v", restSubId)
4291 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
4292 xappConn1.ExpectRESTNotification(t, restSubId)
4293 e2termConn1.SendSubsResp(t, crereq1, cremsg1)
4294 e2SubsId := xappConn1.WaitRESTNotification(t, restSubId)
4295 xapp.Logger.Info("REST notification received e2SubsId=%v", e2SubsId)
4297 xappConn1.SendRESTSubsDelReq(t, &restSubId)
4298 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
4299 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
4301 // Wait that subs is cleaned
4302 waitSubsCleanup(t, e2SubsId, 10)
4303 mainCtrl.VerifyCounterValues(t)
4306 //-----------------------------------------------------------------------------
4307 // TestRESTSubReqPolicyChangeAndSubDelOk
4310 // +-------+ +---------+ +---------+
4311 // | xapp | | submgr | | e2term |
4312 // +-------+ +---------+ +---------+
4315 // |---------------->| |
4317 // | RESTSubResp | |
4318 // |<----------------| |
4320 // | |------------->|
4323 // | |<-------------|
4326 // |<----------------| |
4329 // |---------------->| |
4331 // | RESTSubResp | |
4332 // |<----------------| |
4334 // | |------------->|
4337 // | |<-------------|
4340 // |<----------------| |
4342 // | RESTSubDelReq | |
4343 // |---------------->| |
4346 // | |------------->|
4349 // | |<-------------|
4351 // | RESTSubDelResp | |
4352 // |<----------------| |
4354 //-----------------------------------------------------------------------------
4355 func TestRESTSubReqPolicyChangeAndSubDelOk(t *testing.T) {
4356 CaseBegin("TestRESTSubReqPolicyAndSubDelOk")
4358 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
4359 Counter{cRestSubReqFromXapp, 2},
4360 Counter{cRestSubRespToXapp, 2},
4361 Counter{cSubReqToE2, 2},
4362 Counter{cSubRespFromE2, 2},
4363 Counter{cRestSubNotifToXapp, 2},
4364 Counter{cRestSubDelReqFromXapp, 1},
4365 Counter{cSubDelReqToE2, 1},
4366 Counter{cSubDelRespFromE2, 1},
4367 Counter{cRestSubDelRespToXapp, 1},
4370 const subReqCount int = 1
4373 params := xappConn1.GetRESTSubsReqPolicyParams(subReqCount)
4374 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
4377 // GetRESTSubsReqPolicyParams sets some coutners on tc side.
4379 params = xappConn1.GetRESTSubsReqPolicyParams(subReqCount)
4380 params.SetSubscriptionID(&restSubId)
4381 params.SetTimeToWait("w200ms")
4382 restSubId, e2SubsId = createSubscription(t, xappConn1, e2termConn1, params)
4385 xappConn1.SendRESTSubsDelReq(t, &restSubId)
4387 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
4388 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
4390 // Wait that subs is cleaned
4391 waitSubsCleanup(t, e2SubsId, 10)
4392 mainCtrl.VerifyCounterValues(t)
4395 //-----------------------------------------------------------------------------
4396 // TestRESTSubReqPolicyChangeNOk
4399 // +-------+ +---------+ +---------+
4400 // | xapp | | submgr | | e2term |
4401 // +-------+ +---------+ +---------+
4404 // |---------------->| |
4406 // | RESTSubResp | |
4407 // |<----------------| |
4409 // | |------------->|
4412 // | |<-------------|
4415 // |<----------------| |
4418 // |---------------->| |
4420 // | RESTSubUpdateFail |
4422 // | RESTSubDelReq | |
4423 // |---------------->| |
4426 // | |------------->|
4429 // | |<-------------|
4431 // | RESTSubDelResp | |
4432 // |<----------------| |
4434 //-----------------------------------------------------------------------------
4435 func TestRESTSubReqPolicyChangeNOk(t *testing.T) {
4436 CaseBegin("TestRESTSubReqPolicyChangeNOk")
4438 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
4439 Counter{cRestSubReqFromXapp, 2},
4440 Counter{cRestSubRespToXapp, 1},
4441 Counter{cSubReqToE2, 1},
4442 Counter{cSubRespFromE2, 1},
4443 Counter{cRestSubNotifToXapp, 1},
4444 Counter{cRestSubFailToXapp, 1},
4445 Counter{cRestSubDelReqFromXapp, 1},
4446 Counter{cSubDelReqToE2, 1},
4447 Counter{cSubDelRespFromE2, 1},
4448 Counter{cRestSubDelRespToXapp, 1},
4451 const subReqCount int = 1
4454 params := xappConn1.GetRESTSubsReqPolicyParams(subReqCount)
4455 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
4459 params = xappConn1.GetRESTSubsReqPolicyParams(subReqCount)
4461 restSubIdUpd := strings.ToUpper(restSubId)
4462 params.SetSubscriptionID(&restSubIdUpd)
4463 params.SetTimeToWait("w200ms")
4465 restSubId2 := xappConn1.SendRESTSubsReq(t, params)
4466 assert.Equal(t, restSubId2, "")
4469 xappConn1.SendRESTSubsDelReq(t, &restSubId)
4471 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
4472 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
4474 // Wait that subs is cleaned
4475 waitSubsCleanup(t, e2SubsId, 10)
4476 mainCtrl.VerifyCounterValues(t)
4479 //-----------------------------------------------------------------------------
4480 // TestRESTSubReqAndSubDelOkTwoE2termParallel
4483 // +-------+ +---------+ +---------+ +---------+
4484 // | xapp | | submgr | | e2term1 | | e2term2 |
4485 // +-------+ +---------+ +---------+ +---------+
4489 // | RESTSubReq1 | | |
4490 // |---------------->| | |
4492 // | RESTSubResp1 | | |
4493 // |<----------------| | |
4495 // | |------------->| |
4497 // | RESTSubReq2 | | |
4498 // |---------------->| | |
4500 // | RESTSubResp2 | | |
4501 // |<----------------| | |
4503 // | |---------------------------->|
4506 // | |<-------------| |
4507 // | RESTNotif1 | | |
4508 // |<----------------| | |
4510 // | |<----------------------------|
4511 // | RESTNotif2 | | |
4512 // |<----------------| | |
4514 // | [SUBS 1 DELETE] | |
4516 // | [SUBS 2 DELETE] | |
4519 //-----------------------------------------------------------------------------
4520 func TestRESTSubReqAndSubDelOkTwoE2termParallel(t *testing.T) {
4521 CaseBegin("TestRESTSubReqAndSubDelOkTwoE2termParallel")
4523 // Init counter check
4524 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
4525 Counter{cRestSubReqFromXapp, 2},
4526 Counter{cRestSubRespToXapp, 2},
4527 Counter{cSubReqToE2, 2},
4528 Counter{cSubRespFromE2, 2},
4529 Counter{cRestSubNotifToXapp, 2},
4530 Counter{cRestSubDelReqFromXapp, 2},
4531 Counter{cSubDelReqToE2, 2},
4532 Counter{cSubDelRespFromE2, 2},
4533 Counter{cRestSubDelRespToXapp, 2},
4536 const subReqCount int = 1
4539 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
4540 restSubId1 := xappConn1.SendRESTSubsReq(t, params)
4541 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
4544 params = xappConn2.GetRESTSubsReqReportParams(subReqCount)
4545 params.SetMeid("RAN_NAME_11")
4546 // Here we use xappConn2 to simulate sending second request from same xapp as doing it from xappConn1
4547 // would not work as notification would not be received
4548 restSubId2 := xappConn2.SendRESTSubsReq(t, params)
4549 crereq2, cremsg2 := e2termConn2.RecvSubsReq(t)
4552 xappConn1.ExpectRESTNotification(t, restSubId1)
4553 e2termConn1.SendSubsResp(t, crereq1, cremsg1)
4554 e2SubsId1 := xappConn1.WaitRESTNotification(t, restSubId1)
4555 xapp.Logger.Info("TEST: REST notification received e2SubsId1=%v", e2SubsId1)
4558 xappConn2.ExpectRESTNotification(t, restSubId2)
4559 e2termConn2.SendSubsResp(t, crereq2, cremsg2)
4560 e2SubsId2 := xappConn2.WaitRESTNotification(t, restSubId2)
4561 xapp.Logger.Info("TEST: REST notification received e2SubsId2=%v", e2SubsId2)
4564 xappConn1.SendRESTSubsDelReq(t, &restSubId1)
4565 delreq1, delmsg1 := e2termConn1.RecvSubsDelReq(t)
4566 e2termConn1.SendSubsDelResp(t, delreq1, delmsg1)
4568 // Wait that subs is cleaned
4569 mainCtrl.wait_subs_clean(t, e2SubsId1, 10)
4572 xappConn1.SendRESTSubsDelReq(t, &restSubId2)
4573 delreq2, delmsg2 := e2termConn2.RecvSubsDelReq(t)
4574 e2termConn2.SendSubsDelResp(t, delreq2, delmsg2)
4576 // Wait that subs is cleaned
4577 waitSubsCleanup(t, e2SubsId2, 10)
4579 mainCtrl.VerifyCounterValues(t)
4582 //-----------------------------------------------------------------------------
4583 // TestRESTSubReqAsn1EncodeFail
4585 // In this case submgr send RICSubscriptionDeleteRequest after encode failure which should not happen!
4587 // +-------+ +---------+ +---------+
4588 // | xapp | | submgr | | e2term |
4589 // +-------+ +---------+ +---------+
4592 // |---------------->| |
4594 // | RESTSubResp | |
4595 // |<----------------| |
4596 // | RESTSubDelReq | |
4597 // |---------------->| |
4598 // | RESTSubDelResp | |
4600 // |<----------------| |
4603 //-----------------------------------------------------------------------------
4604 func TestRESTSubReqAsn1EncodeFail(t *testing.T) {
4605 CaseBegin("TestRESTSubReqAsn1EncodeFail")
4607 xapp.Logger.Info("Xapp-frame, v0.8.1 sufficient REST API validation")
4611 //-----------------------------------------------------------------------------
4612 // TestRESTSubReqInsertAndSubDelOk
4615 // +-------+ +---------+ +---------+
4616 // | xapp | | submgr | | e2term |
4617 // +-------+ +---------+ +---------+
4620 // |---------------->| |
4622 // | RESTSubResp | |
4623 // |<----------------| |
4626 // | |------------->|
4629 // | |<-------------|
4631 // |<----------------| |
4634 // | RESTSubDelReq | |
4635 // |---------------->| |
4638 // | |------------->|
4641 // | |<-------------|
4643 // | RESTSubDelResp| |
4644 // |<----------------| |
4646 //-----------------------------------------------------------------------------
4647 func TestRESTSubReqInsertAndSubDelOk(t *testing.T) {
4648 CaseBegin("TestRESTInsertSubReqAndSubDelOk")
4650 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
4651 Counter{cRestSubReqFromXapp, 1},
4652 Counter{cRestSubRespToXapp, 1},
4653 Counter{cSubReqToE2, 1},
4654 Counter{cSubRespFromE2, 1},
4655 Counter{cRestSubNotifToXapp, 1},
4656 Counter{cRestSubDelReqFromXapp, 1},
4657 Counter{cSubDelReqToE2, 1},
4658 Counter{cSubDelRespFromE2, 1},
4659 Counter{cRestSubDelRespToXapp, 1},
4662 const subReqCount int = 1
4664 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
4665 params.SetSubActionTypes("insert")
4668 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
4671 xappConn1.SendRESTSubsDelReq(t, &restSubId)
4673 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
4674 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
4676 // Wait that subs is cleaned
4677 waitSubsCleanup(t, e2SubsId, 10)
4678 mainCtrl.VerifyCounterValues(t)
4681 //-----------------------------------------------------------------------------
4682 // TestRESTSubReqNokAndSubDelOkWithRestartInMiddle
4685 // +-------+ +---------+ +---------+
4686 // | xapp | | submgr | | e2term |
4687 // +-------+ +---------+ +---------+
4690 // |------------->| |
4693 // | |------------->|
4698 // | Submgr restart |
4702 // | |------------->|
4705 // | |<-------------|
4708 //-----------------------------------------------------------------------------
4709 func TestRESTSubReqNokAndSubDelOkWithRestartInMiddle(t *testing.T) {
4710 CaseBegin("TestRESTSubReqNokAndSubDelOkWithRestartInMiddle")
4712 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
4713 Counter{cRestSubReqFromXapp, 1},
4714 Counter{cRestSubRespToXapp, 1},
4715 Counter{cSubReqToE2, 1},
4716 Counter{cSubDelReqFromXapp, 1},
4717 Counter{cSubDelReqToE2, 1},
4718 Counter{cSubDelRespFromE2, 1},
4721 const subReqCount int = 1
4723 // Remove possible existing subscription
4724 mainCtrl.removeExistingSubscriptions(t)
4726 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
4729 mainCtrl.SetResetTestFlag(t, true) // subs.DoNotWaitSubResp will be set TRUE for the subscription
4730 restSubId := xappConn1.SendRESTSubsReq(t, params)
4731 xapp.Logger.Info("Send REST subscriber request for subscriber : %v", restSubId)
4733 e2termConn1.RecvSubsReq(t)
4735 mainCtrl.SetResetTestFlag(t, false)
4737 mainCtrl.SimulateRestart(t)
4738 xapp.Logger.Debug("mainCtrl.SimulateRestart done")
4741 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
4742 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
4744 xappConn1.TestMsgChanEmpty(t)
4745 xappConn2.TestMsgChanEmpty(t)
4746 e2termConn1.TestMsgChanEmpty(t)
4747 mainCtrl.wait_registry_empty(t, 10)
4749 mainCtrl.VerifyCounterValues(t)
4752 //-----------------------------------------------------------------------------
4753 // TestRESTSubReqAndSubDelOkWithRestartInMiddle
4756 // +-------+ +---------+ +---------+
4757 // | xapp | | submgr | | e2term |
4758 // +-------+ +---------+ +---------+
4761 // |---------------->| |
4763 // | RESTSubResp | |
4764 // |<----------------| |
4766 // | |------------->|
4769 // | |<-------------|
4772 // |<----------------| |
4775 // | Submgr restart |
4777 // | RESTSubDelReq | |
4778 // |---------------->| |
4781 // | |------------->|
4784 // | |<-------------|
4786 // | RESTSubDelResp | |
4787 // |<----------------| |
4789 //-----------------------------------------------------------------------------
4791 func TestRESTSubReqAndSubDelOkWithRestartInMiddle(t *testing.T) {
4792 CaseBegin("TestRESTSubReqAndSubDelOkWithRestartInMiddle")
4794 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
4795 Counter{cRestSubReqFromXapp, 1},
4796 Counter{cRestSubRespToXapp, 1},
4797 Counter{cSubReqToE2, 1},
4798 Counter{cSubRespFromE2, 1},
4799 Counter{cRestSubNotifToXapp, 1},
4800 Counter{cRestSubDelReqFromXapp, 1},
4801 Counter{cSubDelReqToE2, 1},
4802 Counter{cRestSubDelRespToXapp, 1},
4805 // Remove possible existing subscription
4806 mainCtrl.removeExistingSubscriptions(t)
4808 var params *teststube2ap.RESTSubsReqParams = nil
4810 // Create subscription
4811 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
4812 xapp.Logger.Info("Send REST subscriber request for subscriber : %v", restSubId)
4814 // Check subscription
4815 queryXappSubscription(t, int64(e2SubsId), "RAN_NAME_1", []string{"localhost:13560"})
4817 // When SDL support for the REST Interface is added
4818 // the submgr restart statement below should be removed
4819 // from the comment.
4821 // mainCtrl.SimulateRestart(t)
4822 // xapp.Logger.Debug("mainCtrl.SimulateRestart done")
4824 // Check subscription
4825 queryXappSubscription(t, int64(e2SubsId), "RAN_NAME_1", []string{"localhost:13560"})
4827 // Delete subscription
4828 deleteSubscription(t, xappConn1, e2termConn1, &restSubId)
4830 //Wait that subs is cleaned
4831 waitSubsCleanup(t, e2SubsId, 10)
4833 mainCtrl.VerifyCounterValues(t)
4836 //-----------------------------------------------------------------------------
4837 // TestRESTSubReqAndSubDelOkSameActionWithRestartsInMiddle
4840 // +-------+ +-------+ +---------+ +---------+
4841 // | xapp2 | | xapp1 | | submgr | | e2term |
4842 // +-------+ +-------+ +---------+ +---------+
4844 // | | RESTSubReq1 | |
4845 // | |---------------->| |
4847 // | | RESTSubResp1 | |
4848 // | |<----------------| |
4851 // | | |------------->|
4853 // | | |<-------------|
4854 // | | RESTNotif1 | |
4855 // | |<----------------| |
4857 // | RESTSubReq2 | |
4858 // |------------------------------>| |
4860 // | RESTSubResp2 | |
4861 // |<------------------------------| |
4863 // | | RESTNotif2 | |
4864 // |<------------------------------| |
4866 // | | Submgr restart |
4868 // | | RESTSubDelReq1 | |
4869 // | |---------------->| |
4871 // | | RESTSubDelResp1 | |
4872 // | |<----------------| |
4874 // | | Submgr restart |
4876 // | RESTSubDelReq2 | |
4877 // |------------------------------>| |
4879 // | RESTSubDelResp2 | |
4880 // |<------------------------------| |
4882 // | | | SubDelReq2 |
4883 // | | |------------->|
4885 // | | | SubDelResp2 |
4886 // | | |<-------------|
4889 //-----------------------------------------------------------------------------
4891 func TestRESTSubReqAndSubDelOkSameActionWithRestartsInMiddle(t *testing.T) {
4892 CaseBegin("TestRESTSubReqAndSubDelOkSameActionWithRestartsInMiddle")
4894 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
4895 Counter{cRestSubReqFromXapp, 2},
4896 Counter{cRestSubRespToXapp, 2},
4897 Counter{cSubReqToE2, 1},
4898 Counter{cSubRespFromE2, 1},
4899 Counter{cRestSubNotifToXapp, 2},
4900 Counter{cMergedSubscriptions, 1},
4901 Counter{cUnmergedSubscriptions, 1},
4902 Counter{cRestSubDelReqFromXapp, 2},
4903 Counter{cSubDelReqToE2, 1},
4904 Counter{cSubDelRespFromE2, 1},
4905 Counter{cRestSubDelRespToXapp, 2},
4908 // Remove possible existing subscription
4909 mainCtrl.removeExistingSubscriptions(t)
4911 var params *teststube2ap.RESTSubsReqParams = nil
4913 // Create subscription 1
4914 restSubId1, e2SubsId1 := createSubscription(t, xappConn1, e2termConn1, params)
4915 xapp.Logger.Info("Send REST subscriber request for subscriber 1 : %v", restSubId1)
4917 // Create subscription 2 with same action
4918 params = xappConn2.GetRESTSubsReqReportParams(subReqCount)
4919 params.SetMeid("RAN_NAME_1")
4920 xapp.Subscription.SetResponseCB(xappConn2.SubscriptionRespHandler)
4921 xappConn2.WaitRESTNotificationForAnySubscriptionId(t)
4922 restSubId2 := xappConn2.SendRESTSubsReq(t, params)
4923 xapp.Logger.Info("Send REST subscriber request for subscriberId : %v", restSubId2)
4924 e2SubsId2 := <-xappConn2.RESTNotification
4925 xapp.Logger.Info("REST notification received e2SubsId=%v", e2SubsId2)
4927 queryXappSubscription(t, int64(e2SubsId1), "RAN_NAME_1", []string{"localhost:13560", "localhost:13660"})
4929 // When SDL support for the REST Interface is added
4930 // the submgr restart statement below should be removed
4931 // from the comment.
4933 // mainCtrl.SimulateRestart(t)
4934 // xapp.Logger.Debug("mainCtrl.SimulateRestart done")
4936 // Delete subscription 1, and wait until it has removed the first endpoint
4937 subepcnt := mainCtrl.get_subs_entrypoint_cnt(t, e2SubsId1)
4938 xappConn1.SendRESTSubsDelReq(t, &restSubId1)
4939 mainCtrl.wait_subs_entrypoint_cnt_change(t, e2SubsId1, subepcnt, 10)
4941 // When SDL support for the REST Interface is added
4942 // the submgr restart statement below should be removed
4943 // from the comment.
4945 // mainCtrl.SimulateRestart(t)
4946 // xapp.Logger.Debug("mainCtrl.SimulateRestart done")
4947 queryXappSubscription(t, int64(e2SubsId1), "RAN_NAME_1", []string{"localhost:13660"})
4949 // Delete subscription 2
4950 deleteXapp2Subscription(t, &restSubId2)
4952 //Wait that subs is cleaned
4953 waitSubsCleanup(t, e2SubsId2, 10)
4955 mainCtrl.VerifyCounterValues(t)
4958 //-----------------------------------------------------------------------------
4959 // TestRESTReportSubReqAndSubDelOk
4962 // +-------+ +---------+ +---------+
4963 // | xapp | | submgr | | e2term |
4964 // +-------+ +---------+ +---------+
4967 // |---------------->| |
4969 // | RESTSubResp | |
4970 // |<----------------| |
4973 // | |------------->|
4976 // | |<-------------|
4978 // |<----------------| |
4980 // | |------------->|
4983 // | |<-------------|
4985 // |<----------------| |
4989 // | RESTSubDelReq | |
4990 // |---------------->| |
4993 // | |------------->|
4996 // | |<-------------|
4998 // | RESTSubDelResp| |
4999 // |<----------------| |
5001 //-----------------------------------------------------------------------------
5003 func TestRESTReportSubReqAndSubDelOk(t *testing.T) {
5004 CaseBegin("TestRESTReportSubReqAndSubDelOk")
5007 RESTReportSubReqAndSubDelOk(t, subReqCount, testIndex)
5010 func RESTReportSubReqAndSubDelOk(t *testing.T, subReqCount int, testIndex int) {
5011 xapp.Logger.Info("TEST: TestRESTReportSubReqAndSubDelOk with testIndex %v", testIndex)
5014 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
5015 restSubId := xappConn1.SendRESTSubsReq(t, params)
5017 var e2SubsId []uint32
5018 for i := 0; i < subReqCount; i++ {
5019 crereq, cremsg := e2termConn1.RecvSubsReq(t)
5020 xappConn1.ExpectRESTNotification(t, restSubId)
5022 e2termConn1.SendSubsResp(t, crereq, cremsg)
5023 instanceId := xappConn1.WaitRESTNotification(t, restSubId)
5024 xapp.Logger.Info("TEST: REST notification received e2SubsId=%v", instanceId)
5025 e2SubsId = append(e2SubsId, instanceId)
5026 resp, _ := xapp.Subscription.QuerySubscriptions()
5027 assert.Equal(t, resp[i].SubscriptionID, (int64)(instanceId))
5028 assert.Equal(t, resp[i].Meid, "RAN_NAME_1")
5029 assert.Equal(t, resp[i].ClientEndpoint, []string{"localhost:13560"})
5034 xappConn1.SendRESTSubsDelReq(t, &restSubId)
5036 for i := 0; i < subReqCount; i++ {
5037 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
5038 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
5041 // Wait that subs is cleaned
5042 for i := 0; i < subReqCount; i++ {
5043 mainCtrl.wait_subs_clean(t, e2SubsId[i], 10)
5046 xappConn1.TestMsgChanEmpty(t)
5047 e2termConn1.TestMsgChanEmpty(t)
5048 mainCtrl.wait_registry_empty(t, 10)
5052 func TestRESTPolicySubReqAndSubDelOk(t *testing.T) {
5053 CaseBegin("TestRESTPolicySubReqAndSubDelOk")
5057 RESTPolicySubReqAndSubDelOk(t, subReqCount, testIndex)
5061 RESTPolicySubReqAndSubDelOk(t, subReqCount, testIndex)
5064 func RESTPolicySubReqAndSubDelOk(t *testing.T, subReqCount int, testIndex int) {
5065 xapp.Logger.Info("TEST: TestRESTPolicySubReqAndSubDelOk with testIndex %v", testIndex)
5068 params := xappConn1.GetRESTSubsReqPolicyParams(subReqCount)
5069 restSubId := xappConn1.SendRESTSubsReq(t, params)
5070 //params := xappConn1.GetRESTSubsReqPolicyParams1(subReqCount)
5071 //restSubId := xappConn1.SendRESTPolicySubsReq(t, params)
5073 var e2SubsId []uint32
5074 for i := 0; i < subReqCount; i++ {
5075 crereq, cremsg := e2termConn1.RecvSubsReq(t)
5076 xappConn1.ExpectRESTNotification(t, restSubId)
5077 e2termConn1.SendSubsResp(t, crereq, cremsg)
5078 instanceId := xappConn1.WaitRESTNotification(t, restSubId)
5079 xapp.Logger.Info("TEST: REST notification received e2SubsId=%v", instanceId)
5080 e2SubsId = append(e2SubsId, instanceId)
5084 xappConn1.SendRESTSubsDelReq(t, &restSubId)
5086 for i := 0; i < subReqCount; i++ {
5087 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
5088 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
5091 // Wait that subs is cleaned
5092 for i := 0; i < subReqCount; i++ {
5093 mainCtrl.wait_subs_clean(t, e2SubsId[i], 10)
5095 xappConn1.TestMsgChanEmpty(t)
5096 e2termConn1.TestMsgChanEmpty(t)
5097 mainCtrl.wait_registry_empty(t, 10)
5100 func TestRESTTwoPolicySubReqAndSubDelOk(t *testing.T) {
5104 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
5105 Counter{cRestSubReqFromXapp, 1},
5106 Counter{cRestSubRespToXapp, 1},
5107 Counter{cSubReqToE2, 2},
5108 Counter{cSubRespFromE2, 2},
5109 Counter{cRestSubNotifToXapp, 2},
5110 Counter{cRestSubDelReqFromXapp, 1},
5111 Counter{cSubDelReqToE2, 2},
5112 Counter{cSubDelRespFromE2, 2},
5113 Counter{cRestSubDelRespToXapp, 1},
5117 params := xappConn1.GetRESTSubsReqPolicyParams(subReqCount)
5118 restSubId := xappConn1.SendRESTSubsReq(t, params)
5119 e2SubsIds := sendAndReceiveMultipleE2SubReqs(t, subReqCount, xappConn1, e2termConn1, restSubId)
5121 assert.Equal(t, len(e2SubsIds), 2)
5124 xappConn1.SendRESTSubsDelReq(t, &restSubId)
5125 sendAndReceiveMultipleE2DelReqs(t, e2SubsIds, e2termConn1)
5127 xappConn1.TestMsgChanEmpty(t)
5128 e2termConn1.TestMsgChanEmpty(t)
5129 mainCtrl.wait_registry_empty(t, 10)
5131 mainCtrl.VerifyCounterValues(t)
5133 func TestRESTPolicySubReqAndSubDelOkFullAmount(t *testing.T) {
5137 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
5138 Counter{cRestSubReqFromXapp, 1},
5139 Counter{cRestSubRespToXapp, 1},
5140 Counter{cSubReqToE2, 19},
5141 Counter{cSubRespFromE2, 19},
5142 Counter{cRestSubNotifToXapp, 19},
5143 Counter{cRestSubDelReqFromXapp, 1},
5144 Counter{cSubDelReqToE2, 19},
5145 Counter{cSubDelRespFromE2, 19},
5146 Counter{cRestSubDelRespToXapp, 1},
5150 params := xappConn1.GetRESTSubsReqPolicyParams(subReqCount)
5151 restSubId := xappConn1.SendRESTSubsReq(t, params)
5152 e2SubsIds := sendAndReceiveMultipleE2SubReqs(t, subReqCount, xappConn1, e2termConn1, restSubId)
5154 assert.Equal(t, len(e2SubsIds), 19)
5156 xappConn1.SendRESTSubsDelReq(t, &restSubId)
5157 sendAndReceiveMultipleE2DelReqs(t, e2SubsIds, e2termConn1)
5159 xappConn1.TestMsgChanEmpty(t)
5160 e2termConn1.TestMsgChanEmpty(t)
5161 mainCtrl.wait_registry_empty(t, 10)
5163 mainCtrl.VerifyCounterValues(t)
5165 func TestRESTTwoReportSubReqAndSubDelOk(t *testing.T) {
5169 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
5170 Counter{cRestSubReqFromXapp, 1},
5171 Counter{cRestSubRespToXapp, 1},
5172 Counter{cSubReqToE2, uint64(subReqCount)},
5173 Counter{cSubRespFromE2, uint64(subReqCount)},
5174 Counter{cRestSubNotifToXapp, uint64(subReqCount)},
5175 Counter{cRestSubDelReqFromXapp, 1},
5176 Counter{cSubDelReqToE2, uint64(subReqCount)},
5177 Counter{cSubDelRespFromE2, uint64(subReqCount)},
5178 Counter{cRestSubDelRespToXapp, 1},
5182 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
5183 restSubId := xappConn1.SendRESTSubsReq(t, params)
5184 e2SubsIds := sendAndReceiveMultipleE2SubReqs(t, subReqCount, xappConn1, e2termConn1, restSubId)
5186 assert.Equal(t, len(e2SubsIds), subReqCount)
5189 xappConn1.SendRESTSubsDelReq(t, &restSubId)
5190 sendAndReceiveMultipleE2DelReqs(t, e2SubsIds, e2termConn1)
5192 xappConn1.TestMsgChanEmpty(t)
5193 e2termConn1.TestMsgChanEmpty(t)
5194 mainCtrl.wait_registry_empty(t, 10)
5196 mainCtrl.VerifyCounterValues(t)
5199 func TestRESTTwoReportSubReqAndSubDelOkNoActParams(t *testing.T) {
5203 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
5204 Counter{cRestSubReqFromXapp, 1},
5205 Counter{cRestSubRespToXapp, 1},
5206 Counter{cSubReqToE2, uint64(subReqCount)},
5207 Counter{cSubRespFromE2, uint64(subReqCount)},
5208 Counter{cRestSubNotifToXapp, uint64(subReqCount)},
5209 Counter{cRestSubDelReqFromXapp, 1},
5210 Counter{cSubDelReqToE2, uint64(subReqCount)},
5211 Counter{cSubDelRespFromE2, uint64(subReqCount)},
5212 Counter{cRestSubDelRespToXapp, 1},
5216 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
5217 restSubId := xappConn1.SendRESTSubsReq(t, params)
5218 e2SubsIds := sendAndReceiveMultipleE2SubReqs(t, subReqCount, xappConn1, e2termConn1, restSubId)
5220 assert.Equal(t, len(e2SubsIds), subReqCount)
5223 xappConn1.SendRESTSubsDelReq(t, &restSubId)
5224 sendAndReceiveMultipleE2DelReqs(t, e2SubsIds, e2termConn1)
5226 xappConn1.TestMsgChanEmpty(t)
5227 e2termConn1.TestMsgChanEmpty(t)
5228 mainCtrl.wait_registry_empty(t, 10)
5230 mainCtrl.VerifyCounterValues(t)
5233 func TestRESTFullAmountReportSubReqAndSubDelOk(t *testing.T) {
5237 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
5238 Counter{cRestSubReqFromXapp, 1},
5239 Counter{cRestSubRespToXapp, 1},
5240 Counter{cSubReqToE2, uint64(subReqCount)},
5241 Counter{cSubRespFromE2, uint64(subReqCount)},
5242 Counter{cRestSubNotifToXapp, uint64(subReqCount)},
5243 Counter{cRestSubDelReqFromXapp, 1},
5244 Counter{cSubDelReqToE2, uint64(subReqCount)},
5245 Counter{cSubDelRespFromE2, uint64(subReqCount)},
5246 Counter{cRestSubDelRespToXapp, 1},
5250 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
5251 restSubId := xappConn1.SendRESTSubsReq(t, params)
5252 e2SubsIds := sendAndReceiveMultipleE2SubReqs(t, subReqCount, xappConn1, e2termConn1, restSubId)
5254 assert.Equal(t, len(e2SubsIds), subReqCount)
5257 xappConn1.SendRESTSubsDelReq(t, &restSubId)
5258 sendAndReceiveMultipleE2DelReqs(t, e2SubsIds, e2termConn1)
5260 xappConn1.TestMsgChanEmpty(t)
5261 e2termConn1.TestMsgChanEmpty(t)
5262 mainCtrl.wait_registry_empty(t, 10)
5264 mainCtrl.VerifyCounterValues(t)
5267 func TestRESTSubReqReportSameActionDiffEventTriggerDefinitionLen(t *testing.T) {
5268 CaseBegin("TestRESTSubReqReportSameActionDiffEventTriggerDefinitionLen")
5270 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
5271 Counter{cRestSubReqFromXapp, 2},
5272 Counter{cRestSubRespToXapp, 2},
5273 Counter{cSubReqToE2, 2},
5274 Counter{cSubRespFromE2, 2},
5275 Counter{cRestSubNotifToXapp, 2},
5276 Counter{cRestSubDelReqFromXapp, 2},
5277 Counter{cSubDelReqToE2, 2},
5278 Counter{cSubDelRespFromE2, 2},
5279 Counter{cRestSubDelRespToXapp, 2},
5283 var params *teststube2ap.RESTSubsReqParams = nil
5286 restSubId1, e2SubsId1 := createSubscription(t, xappConn1, e2termConn1, params)
5287 xapp.Logger.Info("Send REST subscriber request for subscriberId : %v", restSubId1)
5289 queryXappSubscription(t, int64(e2SubsId1), "RAN_NAME_1", []string{"localhost:13560"})
5292 params = xappConn2.GetRESTSubsReqReportParams(subReqCount)
5293 params.SetMeid("RAN_NAME_1")
5294 eventTriggerDefinition := []int64{1234, 1}
5295 params.SetSubEventTriggerDefinition(eventTriggerDefinition)
5297 restSubId2 := xappConn2.SendRESTSubsReq(t, params)
5298 xapp.Logger.Info("Send REST subscriber request for subscriberId : %v", restSubId2)
5299 crereq, cremsg := e2termConn1.RecvSubsReq(t)
5300 xappConn2.ExpectRESTNotification(t, restSubId2)
5301 e2termConn1.SendSubsResp(t, crereq, cremsg)
5302 e2SubsId2 := xappConn2.WaitRESTNotification(t, restSubId2)
5304 deleteXapp1Subscription(t, &restSubId1)
5305 deleteXapp2Subscription(t, &restSubId2)
5307 waitSubsCleanup(t, e2SubsId1, 10)
5308 waitSubsCleanup(t, e2SubsId2, 10)
5310 mainCtrl.VerifyCounterValues(t)
5314 func TestRESTSubReqReportSameActionDiffActionListLen(t *testing.T) {
5315 CaseBegin("TestRESTSubReqReportSameActionDiffActionListLen")
5317 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
5318 Counter{cRestSubReqFromXapp, 2},
5319 Counter{cRestSubRespToXapp, 2},
5320 Counter{cSubReqToE2, 2},
5321 Counter{cSubRespFromE2, 2},
5322 Counter{cRestSubNotifToXapp, 2},
5323 Counter{cRestSubDelReqFromXapp, 2},
5324 Counter{cSubDelReqToE2, 2},
5325 Counter{cSubDelRespFromE2, 2},
5326 Counter{cRestSubDelRespToXapp, 2},
5330 var params *teststube2ap.RESTSubsReqParams = nil
5333 restSubId1, e2SubsId1 := createSubscription(t, xappConn1, e2termConn1, params)
5334 xapp.Logger.Info("Send REST subscriber request for subscriberId : %v", restSubId1)
5336 queryXappSubscription(t, int64(e2SubsId1), "RAN_NAME_1", []string{"localhost:13560"})
5339 params = xappConn2.GetRESTSubsReqReportParams(subReqCount)
5340 params.SetMeid("RAN_NAME_1")
5342 actionId := int64(1)
5343 actionType := "report"
5344 actionDefinition := []int64{5678, 1}
5345 subsequestActionType := "continue"
5346 timeToWait := "w10ms"
5347 params.AppendActionToActionToBeSetupList(actionId, actionType, actionDefinition, subsequestActionType, timeToWait)
5349 restSubId2 := xappConn2.SendRESTSubsReq(t, params)
5350 xapp.Logger.Info("Send REST subscriber request for subscriberId : %v", restSubId2)
5351 crereq, cremsg := e2termConn1.RecvSubsReq(t)
5352 xappConn2.ExpectRESTNotification(t, restSubId2)
5353 e2termConn1.SendSubsResp(t, crereq, cremsg)
5354 e2SubsId2 := xappConn2.WaitRESTNotification(t, restSubId2)
5356 deleteXapp1Subscription(t, &restSubId1)
5357 deleteXapp2Subscription(t, &restSubId2)
5359 waitSubsCleanup(t, e2SubsId1, 10)
5360 waitSubsCleanup(t, e2SubsId2, 10)
5362 mainCtrl.VerifyCounterValues(t)
5366 func TestRESTSubReqReportSameActionDiffActionID(t *testing.T) {
5367 CaseBegin("TestRESTSubReqReportSameActionDiffActionID")
5369 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
5370 Counter{cRestSubReqFromXapp, 2},
5371 Counter{cRestSubRespToXapp, 2},
5372 Counter{cSubReqToE2, 2},
5373 Counter{cSubRespFromE2, 2},
5374 Counter{cRestSubNotifToXapp, 2},
5375 Counter{cRestSubDelReqFromXapp, 2},
5376 Counter{cSubDelReqToE2, 2},
5377 Counter{cSubDelRespFromE2, 2},
5378 Counter{cRestSubDelRespToXapp, 2},
5382 var params *teststube2ap.RESTSubsReqParams = nil
5385 restSubId1, e2SubsId1 := createSubscription(t, xappConn1, e2termConn1, params)
5386 xapp.Logger.Info("Send REST subscriber request for subscriberId : %v", restSubId1)
5388 queryXappSubscription(t, int64(e2SubsId1), "RAN_NAME_1", []string{"localhost:13560"})
5391 params = xappConn2.GetRESTSubsReqReportParams(subReqCount)
5392 params.SetMeid("RAN_NAME_1")
5393 params.SetSubActionIDs(int64(2))
5395 restSubId2 := xappConn2.SendRESTSubsReq(t, params)
5396 xapp.Logger.Info("Send REST subscriber request for subscriberId : %v", restSubId2)
5397 crereq, cremsg := e2termConn1.RecvSubsReq(t)
5398 xappConn2.ExpectRESTNotification(t, restSubId2)
5399 e2termConn1.SendSubsResp(t, crereq, cremsg)
5400 e2SubsId2 := xappConn2.WaitRESTNotification(t, restSubId2)
5402 deleteXapp1Subscription(t, &restSubId1)
5403 deleteXapp2Subscription(t, &restSubId2)
5405 waitSubsCleanup(t, e2SubsId1, 10)
5406 waitSubsCleanup(t, e2SubsId2, 10)
5408 mainCtrl.VerifyCounterValues(t)
5412 func TestRESTSubReqDiffActionType(t *testing.T) {
5413 CaseBegin("TestRESTSubReqDiffActionType")
5415 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
5416 Counter{cRestSubReqFromXapp, 2},
5417 Counter{cRestSubRespToXapp, 2},
5418 Counter{cSubReqToE2, 2},
5419 Counter{cSubRespFromE2, 2},
5420 Counter{cRestSubNotifToXapp, 2},
5421 Counter{cRestSubDelReqFromXapp, 2},
5422 Counter{cSubDelReqToE2, 2},
5423 Counter{cSubDelRespFromE2, 2},
5424 Counter{cRestSubDelRespToXapp, 2},
5428 params := xappConn1.GetRESTSubsReqPolicyParams(subReqCount)
5431 restSubId1, e2SubsId1 := createSubscription(t, xappConn1, e2termConn1, params)
5432 xapp.Logger.Info("Send REST subscriber request for subscriberId : %v", restSubId1)
5434 queryXappSubscription(t, int64(e2SubsId1), "RAN_NAME_1", []string{"localhost:13560"})
5437 params = xappConn2.GetRESTSubsReqReportParams(subReqCount)
5438 params.SetMeid("RAN_NAME_1")
5440 restSubId2 := xappConn2.SendRESTSubsReq(t, params)
5441 xapp.Logger.Info("Send REST subscriber request for subscriberId : %v", restSubId2)
5442 crereq, cremsg := e2termConn1.RecvSubsReq(t)
5443 xappConn2.ExpectRESTNotification(t, restSubId2)
5444 e2termConn1.SendSubsResp(t, crereq, cremsg)
5445 e2SubsId2 := xappConn2.WaitRESTNotification(t, restSubId2)
5447 deleteXapp1Subscription(t, &restSubId1)
5448 deleteXapp2Subscription(t, &restSubId2)
5450 waitSubsCleanup(t, e2SubsId1, 10)
5451 waitSubsCleanup(t, e2SubsId2, 10)
5453 mainCtrl.VerifyCounterValues(t)
5457 func TestRESTSubReqPolicyAndSubDelOkSameAction(t *testing.T) {
5458 CaseBegin("TestRESTSubReqPolicyAndSubDelOkSameAction")
5460 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
5461 Counter{cRestSubReqFromXapp, 2},
5462 Counter{cRestSubRespToXapp, 2},
5463 Counter{cSubReqToE2, 2},
5464 Counter{cSubRespFromE2, 2},
5465 Counter{cRestSubNotifToXapp, 2},
5466 Counter{cRestSubDelReqFromXapp, 2},
5467 Counter{cSubDelReqToE2, 2},
5468 Counter{cSubDelRespFromE2, 2},
5469 Counter{cRestSubDelRespToXapp, 2},
5473 params := xappConn1.GetRESTSubsReqPolicyParams(subReqCount)
5476 restSubId1, e2SubsId1 := createSubscription(t, xappConn1, e2termConn1, params)
5477 xapp.Logger.Info("Send REST subscriber request for subscriberId : %v", restSubId1)
5479 queryXappSubscription(t, int64(e2SubsId1), "RAN_NAME_1", []string{"localhost:13560"})
5482 params = xappConn2.GetRESTSubsReqPolicyParams(subReqCount)
5483 params.SetMeid("RAN_NAME_1")
5485 restSubId2 := xappConn2.SendRESTSubsReq(t, params)
5486 xapp.Logger.Info("Send REST subscriber request for subscriberId : %v", restSubId2)
5487 crereq, cremsg := e2termConn1.RecvSubsReq(t)
5488 xappConn2.ExpectRESTNotification(t, restSubId2)
5489 e2termConn1.SendSubsResp(t, crereq, cremsg)
5490 e2SubsId2 := xappConn2.WaitRESTNotification(t, restSubId2)
5492 deleteXapp1Subscription(t, &restSubId1)
5493 deleteXapp2Subscription(t, &restSubId2)
5495 waitSubsCleanup(t, e2SubsId1, 10)
5496 waitSubsCleanup(t, e2SubsId2, 10)
5498 mainCtrl.VerifyCounterValues(t)
5502 func TestRESTSubReqReportSameActionDiffActionDefinitionLen(t *testing.T) {
5503 CaseBegin("TestRESTSubReqReportSameActionDiffActionDefinitionLen")
5505 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
5506 Counter{cRestSubReqFromXapp, 2},
5507 Counter{cRestSubRespToXapp, 2},
5508 Counter{cSubReqToE2, 2},
5509 Counter{cSubRespFromE2, 2},
5510 Counter{cRestSubNotifToXapp, 2},
5511 Counter{cRestSubDelReqFromXapp, 2},
5512 Counter{cSubDelReqToE2, 2},
5513 Counter{cSubDelRespFromE2, 2},
5514 Counter{cRestSubDelRespToXapp, 2},
5518 var params *teststube2ap.RESTSubsReqParams = nil
5521 restSubId1, e2SubsId1 := createSubscription(t, xappConn1, e2termConn1, params)
5522 xapp.Logger.Info("Send REST subscriber request for subscriberId : %v", restSubId1)
5524 queryXappSubscription(t, int64(e2SubsId1), "RAN_NAME_1", []string{"localhost:13560"})
5527 params = xappConn2.GetRESTSubsReqReportParams(subReqCount)
5528 params.SetMeid("RAN_NAME_1")
5529 actionDefinition := []int64{5678, 1}
5530 params.SetSubActionDefinition(actionDefinition)
5532 restSubId2 := xappConn2.SendRESTSubsReq(t, params)
5533 xapp.Logger.Info("Send REST subscriber request for subscriberId : %v", restSubId2)
5534 crereq, cremsg := e2termConn1.RecvSubsReq(t)
5535 xappConn2.ExpectRESTNotification(t, restSubId2)
5536 e2termConn1.SendSubsResp(t, crereq, cremsg)
5537 e2SubsId2 := xappConn2.WaitRESTNotification(t, restSubId2)
5539 deleteXapp1Subscription(t, &restSubId1)
5540 deleteXapp2Subscription(t, &restSubId2)
5542 waitSubsCleanup(t, e2SubsId1, 10)
5543 waitSubsCleanup(t, e2SubsId2, 10)
5545 mainCtrl.VerifyCounterValues(t)
5549 func TestRESTSubReqReportSameActionDiffActionDefinitionContents(t *testing.T) {
5550 CaseBegin("TestRESTSubReqReportSameActionDiffActionDefinitionContents")
5552 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
5553 Counter{cRestSubReqFromXapp, 2},
5554 Counter{cRestSubRespToXapp, 2},
5555 Counter{cSubReqToE2, 2},
5556 Counter{cSubRespFromE2, 2},
5557 Counter{cRestSubNotifToXapp, 2},
5558 Counter{cRestSubDelReqFromXapp, 2},
5559 Counter{cSubDelReqToE2, 2},
5560 Counter{cSubDelRespFromE2, 2},
5561 Counter{cRestSubDelRespToXapp, 2},
5565 var params *teststube2ap.RESTSubsReqParams = nil
5568 restSubId1, e2SubsId1 := createSubscription(t, xappConn1, e2termConn1, params)
5569 xapp.Logger.Info("Send REST subscriber request for subscriberId : %v", restSubId1)
5571 queryXappSubscription(t, int64(e2SubsId1), "RAN_NAME_1", []string{"localhost:13560"})
5574 params = xappConn2.GetRESTSubsReqReportParams(subReqCount)
5575 params.SetMeid("RAN_NAME_1")
5576 actionDefinition := []int64{56782}
5577 params.SetSubActionDefinition(actionDefinition)
5579 restSubId2 := xappConn2.SendRESTSubsReq(t, params)
5580 xapp.Logger.Info("Send REST subscriber request for subscriberId : %v", restSubId2)
5581 crereq, cremsg := e2termConn1.RecvSubsReq(t)
5582 xappConn2.ExpectRESTNotification(t, restSubId2)
5583 e2termConn1.SendSubsResp(t, crereq, cremsg)
5584 e2SubsId2 := xappConn2.WaitRESTNotification(t, restSubId2)
5586 deleteXapp1Subscription(t, &restSubId1)
5587 deleteXapp2Subscription(t, &restSubId2)
5589 waitSubsCleanup(t, e2SubsId1, 10)
5590 waitSubsCleanup(t, e2SubsId2, 10)
5592 mainCtrl.VerifyCounterValues(t)
5596 func TestRESTSubReqReportSameActionDiffSubsAction(t *testing.T) {
5597 CaseBegin("TestRESTSubReqReportSameActionDiffSubsAction")
5599 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
5600 Counter{cRestSubReqFromXapp, 2},
5601 Counter{cRestSubRespToXapp, 2},
5602 Counter{cSubReqToE2, 2},
5603 Counter{cSubRespFromE2, 2},
5604 Counter{cRestSubNotifToXapp, 2},
5605 Counter{cRestSubDelReqFromXapp, 2},
5606 Counter{cSubDelReqToE2, 2},
5607 Counter{cSubDelRespFromE2, 2},
5608 Counter{cRestSubDelRespToXapp, 2},
5612 var params *teststube2ap.RESTSubsReqParams = nil
5615 restSubId1, e2SubsId1 := createSubscription(t, xappConn1, e2termConn1, params)
5616 xapp.Logger.Info("Send REST subscriber request for subscriberId : %v", restSubId1)
5618 queryXappSubscription(t, int64(e2SubsId1), "RAN_NAME_1", []string{"localhost:13560"})
5621 params = xappConn2.GetRESTSubsReqReportParams(subReqCount)
5622 params.SetMeid("RAN_NAME_1")
5623 params.SetTimeToWait("w200ms")
5624 restSubId2 := xappConn2.SendRESTSubsReq(t, params)
5625 xapp.Logger.Info("Send REST subscriber request for subscriberId : %v", restSubId2)
5626 crereq, cremsg := e2termConn1.RecvSubsReq(t)
5627 xappConn2.ExpectRESTNotification(t, restSubId2)
5628 e2termConn1.SendSubsResp(t, crereq, cremsg)
5629 e2SubsId2 := xappConn2.WaitRESTNotification(t, restSubId2)
5631 deleteXapp1Subscription(t, &restSubId1)
5632 deleteXapp2Subscription(t, &restSubId2)
5634 waitSubsCleanup(t, e2SubsId1, 10)
5635 waitSubsCleanup(t, e2SubsId2, 10)
5637 mainCtrl.VerifyCounterValues(t)
5641 //-----------------------------------------------------------------------------
5642 // TestRESTUnpackSubscriptionResponseDecodeFail
5645 // +-------+ +---------+ +---------+
5646 // | xapp | | submgr | | e2term |
5647 // +-------+ +---------+ +---------+
5650 // |---------------->| |
5652 // | RESTSubResp | |
5653 // |<----------------| |
5656 // | |------------->|
5658 // | | SubResp | ASN.1 decode fails
5659 // | |<-------------|
5662 // | |------------->|
5664 // | | SubFail | Duplicated action
5665 // | |<-------------|
5666 // | RESTNotif (fail)| |
5667 // |<----------------| |
5669 // | |------------->|
5672 // | |<-------------|
5674 //-----------------------------------------------------------------------------
5676 func TestRESTUnpackSubscriptionResponseDecodeFail(t *testing.T) {
5677 xapp.Logger.Info("TEST: TestRESTUnpackSubscriptionResponseDecodeFail")
5681 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
5682 restSubId := xappConn1.SendRESTSubsReq(t, params)
5684 crereq, cremsg := e2termConn1.RecvSubsReq(t)
5685 // Decode of this response fails which will result resending original request
5686 e2termConn1.SendInvalidE2Asn1Resp(t, cremsg, xapp.RIC_SUB_RESP)
5688 _, cremsg = e2termConn1.RecvSubsReq(t)
5690 xappConn1.ExpectRESTNotificationNok(t, restSubId, "allFail")
5692 // Subscription already created in E2 Node.
5693 fparams := &teststube2ap.E2StubSubsFailParams{}
5695 fparams.SetCauseVal(0, 1, 3) // CauseRIC / duplicate-action
5696 e2termConn1.SendSubsFail(t, fparams, cremsg)
5698 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
5699 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
5701 instanceId := xappConn1.WaitRESTNotification(t, restSubId)
5702 xapp.Logger.Info("TEST: REST notification received e2SubsId=%v", instanceId)
5704 // Wait that subs is cleaned
5705 mainCtrl.wait_subs_clean(t, crereq.RequestId.InstanceId, 10)
5707 xappConn1.TestMsgChanEmpty(t)
5708 e2termConn1.TestMsgChanEmpty(t)
5709 mainCtrl.wait_registry_empty(t, 10)
5712 //-----------------------------------------------------------------------------
5713 // TestRESTUnpackSubscriptionResponseUnknownInstanceId
5716 // +-------+ +---------+ +---------+
5717 // | xapp | | submgr | | e2term |
5718 // +-------+ +---------+ +---------+
5721 // |---------------->| |
5723 // | RESTSubResp | |
5724 // |<----------------| |
5727 // | |------------->|
5729 // | | SubResp | Unknown instanceId
5730 // | |<-------------|
5733 // | |------------->|
5735 // | | SubFail | Duplicated action
5736 // | |<-------------|
5737 // | RESTNotif (fail)| |
5738 // |<----------------| |
5740 // | |------------->|
5743 // | |<-------------|
5745 //-----------------------------------------------------------------------------
5747 func TestRESTUnpackSubscriptionResponseUnknownInstanceId(t *testing.T) {
5748 xapp.Logger.Info("TEST: TestRESTUnpackSubscriptionResponseUnknownInstanceId")
5752 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
5753 restSubId := xappConn1.SendRESTSubsReq(t, params)
5755 crereq, cremsg := e2termConn1.RecvSubsReq(t)
5757 // Unknown instanceId in this response which will result resending original request
5758 orgInstanceId := crereq.RequestId.InstanceId
5759 crereq.RequestId.InstanceId = 0
5760 e2termConn1.SendSubsResp(t, crereq, cremsg)
5762 _, cremsg = e2termConn1.RecvSubsReq(t)
5764 xappConn1.ExpectRESTNotificationNok(t, restSubId, "allFail")
5766 // Subscription already created in E2 Node.
5767 fparams := &teststube2ap.E2StubSubsFailParams{}
5769 fparams.SetCauseVal(0, 1, 3) // CauseRIC / duplicate-action
5770 e2termConn1.SendSubsFail(t, fparams, cremsg)
5772 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
5773 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
5775 instanceId := xappConn1.WaitRESTNotification(t, restSubId)
5776 xapp.Logger.Info("TEST: REST notification received e2SubsId=%v", instanceId)
5778 // Wait that subs is cleaned
5779 mainCtrl.wait_subs_clean(t, orgInstanceId, 10)
5781 xappConn1.TestMsgChanEmpty(t)
5782 e2termConn1.TestMsgChanEmpty(t)
5783 mainCtrl.wait_registry_empty(t, 10)
5786 //-----------------------------------------------------------------------------
5787 // TestRESTUnpackSubscriptionResponseNoTransaction
5790 // +-------+ +---------+ +---------+
5791 // | xapp | | submgr | | e2term |
5792 // +-------+ +---------+ +---------+
5795 // |---------------->| |
5797 // | RESTSubResp | |
5798 // |<----------------| |
5801 // | |------------->|
5803 // | | SubResp | No transaction for the response
5804 // | |<-------------|
5807 // | |------------->|
5809 // | | SubFail | Duplicated action
5810 // | |<-------------|
5811 // | RESTNotif (fail)| |
5812 // |<----------------| |
5814 // | |------------->|
5817 // | |<-------------|
5820 // | |------------->|
5823 // | |<-------------|
5825 //-----------------------------------------------------------------------------
5826 func TestRESTUnpackSubscriptionResponseNoTransaction(t *testing.T) {
5827 xapp.Logger.Info("TEST: TestRESTUnpackSubscriptionResponseNoTransaction")
5831 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
5832 restSubId := xappConn1.SendRESTSubsReq(t, params)
5834 crereq, cremsg := e2termConn1.RecvSubsReq(t)
5836 mainCtrl.MakeTransactionNil(t, crereq.RequestId.InstanceId)
5837 // No transaction exist for this response which will result resending original request
5838 e2termConn1.SendSubsResp(t, crereq, cremsg)
5840 _, cremsg = e2termConn1.RecvSubsReq(t)
5842 xappConn1.ExpectRESTNotificationNok(t, restSubId, "allFail")
5844 // Subscription already created in E2 Node.
5845 fparams := &teststube2ap.E2StubSubsFailParams{}
5847 fparams.SetCauseVal(0, 1, 3) // CauseRIC / duplicate-action
5848 e2termConn1.SendSubsFail(t, fparams, cremsg)
5850 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
5851 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
5853 // Resending happens because there no transaction
5854 delreq, delmsg = e2termConn1.RecvSubsDelReq(t)
5855 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
5857 instanceId := xappConn1.WaitRESTNotification(t, restSubId)
5858 xapp.Logger.Info("TEST: REST notification received e2SubsId=%v", instanceId)
5860 // Wait that subs is cleaned
5861 mainCtrl.wait_subs_clean(t, crereq.RequestId.InstanceId, 10)
5863 xappConn1.TestMsgChanEmpty(t)
5864 e2termConn1.TestMsgChanEmpty(t)
5865 mainCtrl.wait_registry_empty(t, 10)
5869 //-----------------------------------------------------------------------------
5870 // TestRESTUnpackSubscriptionFailureDecodeFail
5873 // +-------+ +---------+ +---------+
5874 // | xapp | | submgr | | e2term |
5875 // +-------+ +---------+ +---------+
5878 // |---------------->| |
5880 // | RESTSubResp | |
5881 // |<----------------| |
5884 // | |------------->|
5886 // | | SubFail | ASN.1 decode fails
5887 // | |<-------------|
5890 // | |------------->|
5892 // | | SubFail | Duplicated action
5893 // | |<-------------|
5894 // | RESTNotif (fail)| |
5895 // |<----------------| |
5897 // | |------------->|
5900 // | |<-------------|
5902 //-----------------------------------------------------------------------------
5903 func TestRESTUnpackSubscriptionFailureDecodeFail(t *testing.T) {
5904 xapp.Logger.Info("TEST: TestRESTUnpackSubscriptionFailureDecodeFail")
5908 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
5909 restSubId := xappConn1.SendRESTSubsReq(t, params)
5911 crereq, cremsg := e2termConn1.RecvSubsReq(t)
5913 // Decode of this response fails which will result resending original request
5914 e2termConn1.SendInvalidE2Asn1Resp(t, cremsg, xapp.RIC_SUB_FAILURE)
5916 _, cremsg = e2termConn1.RecvSubsReq(t)
5918 xappConn1.ExpectRESTNotificationNok(t, restSubId, "allFail")
5920 // Subscription already created in E2 Node.
5921 fparams := &teststube2ap.E2StubSubsFailParams{}
5923 fparams.SetCauseVal(0, 1, 3) // CauseRIC / duplicate-action
5924 e2termConn1.SendSubsFail(t, fparams, cremsg)
5926 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
5927 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
5929 instanceId := xappConn1.WaitRESTNotification(t, restSubId)
5930 xapp.Logger.Info("TEST: REST notification received e2SubsId=%v", instanceId)
5932 // Wait that subs is cleaned
5933 mainCtrl.wait_subs_clean(t, crereq.RequestId.InstanceId, 10)
5935 xappConn1.TestMsgChanEmpty(t)
5936 e2termConn1.TestMsgChanEmpty(t)
5937 mainCtrl.wait_registry_empty(t, 10)
5940 //-----------------------------------------------------------------------------
5941 // TestRESTUnpackSubscriptionResponseUnknownInstanceId
5944 // +-------+ +---------+ +---------+
5945 // | xapp | | submgr | | e2term |
5946 // +-------+ +---------+ +---------+
5949 // |---------------->| |
5951 // | RESTSubResp | |
5952 // |<----------------| |
5955 // | |------------->|
5957 // | | SubFail | Unknown instanceId
5958 // | |<-------------|
5961 // | |------------->|
5963 // | | SubFail | Duplicated action
5964 // | |<-------------|
5965 // | RESTNotif (fail)| |
5966 // |<----------------| |
5968 // | |------------->|
5971 // | |<-------------|
5973 //-----------------------------------------------------------------------------
5974 func TestRESTUnpackSubscriptionFailureUnknownInstanceId(t *testing.T) {
5975 xapp.Logger.Info("TEST: TestRESTUnpackSubscriptionFailureUnknownInstanceId")
5979 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
5980 restSubId := xappConn1.SendRESTSubsReq(t, params)
5982 crereq, cremsg := e2termConn1.RecvSubsReq(t)
5984 // Unknown instanceId in this response which will result resending original request
5985 fparams := &teststube2ap.E2StubSubsFailParams{}
5987 fparams.Fail.RequestId.InstanceId = 0
5988 e2termConn1.SendSubsFail(t, fparams, cremsg)
5990 _, cremsg = e2termConn1.RecvSubsReq(t)
5992 xappConn1.ExpectRESTNotificationNok(t, restSubId, "allFail")
5994 // Subscription already created in E2 Node.
5995 fparams.SetCauseVal(0, 1, 3) // CauseRIC / duplicate-action
5996 e2termConn1.SendSubsFail(t, fparams, cremsg)
5998 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
5999 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
6001 instanceId := xappConn1.WaitRESTNotification(t, restSubId)
6002 xapp.Logger.Info("TEST: REST notification received e2SubsId=%v", instanceId)
6004 // Wait that subs is cleaned
6005 mainCtrl.wait_subs_clean(t, crereq.RequestId.InstanceId, 10)
6007 xappConn1.TestMsgChanEmpty(t)
6008 e2termConn1.TestMsgChanEmpty(t)
6009 mainCtrl.wait_registry_empty(t, 10)
6012 //-----------------------------------------------------------------------------
6013 // TestRESTUnpackSubscriptionFailureNoTransaction
6016 // +-------+ +---------+ +---------+
6017 // | xapp | | submgr | | e2term |
6018 // +-------+ +---------+ +---------+
6021 // |---------------->| |
6023 // | RESTSubResp | |
6024 // |<----------------| |
6027 // | |------------->|
6029 // | | SubFail | No transaction for the response
6030 // | |<-------------|
6033 // | |------------->|
6035 // | | SubFail | Duplicated action
6036 // | |<-------------|
6037 // | RESTNotif (fail)| |
6038 // |<----------------| |
6040 // | |------------->|
6043 // | |<-------------|
6045 //-----------------------------------------------------------------------------
6046 func TestRESTUnpackSubscriptionFailureNoTransaction(t *testing.T) {
6047 xapp.Logger.Info("TEST: TestRESTUnpackSubscriptionFailureNoTransaction")
6051 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
6052 restSubId := xappConn1.SendRESTSubsReq(t, params)
6054 crereq, cremsg := e2termConn1.RecvSubsReq(t)
6056 mainCtrl.MakeTransactionNil(t, crereq.RequestId.InstanceId)
6058 // No transaction exist for this response which will result resending original request
6059 fparams := &teststube2ap.E2StubSubsFailParams{}
6061 e2termConn1.SendSubsFail(t, fparams, cremsg)
6063 _, cremsg = e2termConn1.RecvSubsReq(t)
6065 xappConn1.ExpectRESTNotificationNok(t, restSubId, "allFail")
6067 // Subscription already created in E2 Node.
6068 fparams.SetCauseVal(0, 1, 3) // CauseRIC / duplicate-action
6069 e2termConn1.SendSubsFail(t, fparams, cremsg)
6071 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
6072 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
6074 // Resending happens because there no transaction
6075 delreq, delmsg = e2termConn1.RecvSubsDelReq(t)
6076 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
6078 instanceId := xappConn1.WaitRESTNotification(t, restSubId)
6079 xapp.Logger.Info("TEST: REST notification received e2SubsId=%v", instanceId)
6081 // Wait that subs is cleaned
6082 mainCtrl.wait_subs_clean(t, crereq.RequestId.InstanceId, 10)
6084 xappConn1.TestMsgChanEmpty(t)
6085 e2termConn1.TestMsgChanEmpty(t)
6086 mainCtrl.wait_registry_empty(t, 10)
6089 //-----------------------------------------------------------------------------
6090 // TestRESTUnpackSubscriptionDeleteResponseDecodeFail
6093 // +-------+ +---------+ +---------+
6094 // | xapp | | submgr | | e2term |
6095 // +-------+ +---------+ +---------+
6097 // | [SUBS CREATE] |
6100 // | RESTSubDelReq | |
6101 // |---------------->| |
6103 // | RESTSubDelResp | |
6104 // |<----------------| |
6107 // | |------------->|
6109 // | | SubDelResp | ASN.1 decode fails
6110 // | |<-------------|
6113 // | |------------->|
6115 // | | SubDelFail | Subscription does exist any more
6116 // | |<-------------|
6119 //-----------------------------------------------------------------------------
6120 func TestRESTUnpackSubscriptionDeleteResponseDecodeFail(t *testing.T) {
6121 xapp.Logger.Info("TEST: TestRESTUnpackSubscriptionDeleteResponseDecodeFail")
6124 var params *teststube2ap.RESTSubsReqParams = nil
6125 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
6128 xappConn1.SendRESTSubsDelReq(t, &restSubId)
6130 // E2t: Receive 1st SubsDelReq
6131 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
6133 // Decode of this response fails which will result resending original request
6134 e2termConn1.SendInvalidE2Asn1Resp(t, delmsg, xapp.RIC_SUB_DEL_REQ)
6136 // E2t: Receive 2nd SubsDelReq and send SubsDelResp
6137 delreq, delmsg = e2termConn1.RecvSubsDelReq(t)
6139 // Subscription does not exist in in E2 Node.
6140 e2termConn1.SendSubsDelFail(t, delreq, delmsg)
6142 // Wait that subs is cleaned
6143 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
6145 xappConn1.TestMsgChanEmpty(t)
6146 e2termConn1.TestMsgChanEmpty(t)
6147 mainCtrl.wait_registry_empty(t, 10)
6150 //-----------------------------------------------------------------------------
6151 // TestRESTUnpackSubscriptionDeleteResponseUnknownInstanceId
6154 // +-------+ +---------+ +---------+
6155 // | xapp | | submgr | | e2term |
6156 // +-------+ +---------+ +---------+
6158 // | [SUBS CREATE] |
6161 // | RESTSubDelReq | |
6162 // |---------------->| |
6164 // | RESTSubDelResp | |
6165 // |<----------------| |
6168 // | |------------->|
6170 // | | SubDelResp | Unknown instanceId
6171 // | |<-------------|
6174 // | |------------->|
6176 // | | SubDelFail | Subscription does exist any more
6177 // | |<-------------|
6179 //-----------------------------------------------------------------------------
6180 func TestRESTUnpackSubscriptionDeleteResponseUnknownInstanceId(t *testing.T) {
6181 xapp.Logger.Info("TEST: TestRESTUnpackSubscriptionDeleteResponseUnknownInstanceId")
6184 var params *teststube2ap.RESTSubsReqParams = nil
6185 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
6188 xappConn1.SendRESTSubsDelReq(t, &restSubId)
6190 // E2t: Receive 1st SubsDelReq
6191 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
6193 // Unknown instanceId in this response which will result resending original request
6194 delreq.RequestId.InstanceId = 0
6195 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
6197 // E2t: Receive 2nd SubsDelReq
6198 delreq, delmsg = e2termConn1.RecvSubsDelReq(t)
6200 // Subscription does not exist in in E2 Node.
6201 e2termConn1.SendSubsDelFail(t, delreq, delmsg)
6203 // Wait that subs is cleaned
6204 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
6206 xappConn1.TestMsgChanEmpty(t)
6207 e2termConn1.TestMsgChanEmpty(t)
6208 mainCtrl.wait_registry_empty(t, 10)
6211 //-----------------------------------------------------------------------------
6212 // TestRESTUnpackSubscriptionDeleteResponseNoTransaction
6215 // +-------+ +---------+ +---------+
6216 // | xapp | | submgr | | e2term |
6217 // +-------+ +---------+ +---------+
6219 // | [SUBS CREATE] |
6222 // | RESTSubDelReq | |
6223 // |---------------->| |
6225 // | RESTSubDelResp | |
6226 // |<----------------| |
6229 // | |------------->|
6231 // | | SubDelResp | No transaction for the response
6232 // | |<-------------|
6235 // | |------------->|
6237 // | | SubDelFail | Subscription does exist any more
6238 // | |<-------------|
6240 //-----------------------------------------------------------------------------
6241 func TestRESTUnpackSubscriptionDeleteResponseNoTransaction(t *testing.T) {
6242 xapp.Logger.Info("TEST: TestRESTUnpackSubscriptionDeleteResponseNoTransaction")
6245 var params *teststube2ap.RESTSubsReqParams = nil
6246 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
6249 xappConn1.SendRESTSubsDelReq(t, &restSubId)
6251 // E2t: Receive 1st SubsDelReq
6252 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
6254 mainCtrl.MakeTransactionNil(t, e2SubsId)
6256 // No transaction exist for this response which will result resending original request
6257 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
6259 // E2t: Receive 2nd SubsDelReq
6260 delreq, delmsg = e2termConn1.RecvSubsDelReq(t)
6262 // Subscription does not exist in in E2 Node.
6263 e2termConn1.SendSubsDelFail(t, delreq, delmsg)
6265 // Wait that subs is cleaned
6266 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
6268 xappConn1.TestMsgChanEmpty(t)
6269 e2termConn1.TestMsgChanEmpty(t)
6270 mainCtrl.wait_registry_empty(t, 10)
6273 //-----------------------------------------------------------------------------
6274 // TestRESTUnpackSubscriptionDeleteFailureDecodeFail
6277 // +-------+ +---------+ +---------+
6278 // | xapp | | submgr | | e2term |
6279 // +-------+ +---------+ +---------+
6281 // | [SUBS CREATE] |
6284 // | RESTSubDelReq | |
6285 // |---------------->| |
6287 // | RESTSubDelResp | |
6288 // |<----------------| |
6291 // | |------------->|
6293 // | | SubDelFail | ASN.1 decode fails
6294 // | |<-------------|
6297 // | |------------->|
6299 // | | SubDelFail | Subscription does exist any more
6300 // | |<-------------|
6302 //-----------------------------------------------------------------------------
6303 func TestRESTUnpackSubscriptionDeleteFailureDecodeFail(t *testing.T) {
6304 xapp.Logger.Info("TEST: TestRESTUnpackSubscriptionDeleteFailureDecodeFail")
6307 var params *teststube2ap.RESTSubsReqParams = nil
6308 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
6311 xappConn1.SendRESTSubsDelReq(t, &restSubId)
6313 // E2t: Receive 1st SubsDelReq
6314 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
6316 // Decode of this response fails which will result resending original request
6317 e2termConn1.SendInvalidE2Asn1Resp(t, delmsg, xapp.RIC_SUB_DEL_FAILURE)
6319 // E2t: Receive 2nd SubsDelReq and send SubsDelResp
6320 delreq, delmsg = e2termConn1.RecvSubsDelReq(t)
6322 // Subscription does not exist in in E2 Node.
6323 e2termConn1.SendSubsDelFail(t, delreq, delmsg)
6325 // Wait that subs is cleaned
6326 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
6328 xappConn1.TestMsgChanEmpty(t)
6329 e2termConn1.TestMsgChanEmpty(t)
6330 mainCtrl.wait_registry_empty(t, 10)
6333 //-----------------------------------------------------------------------------
6334 // TestRESTUnpackSubscriptionDeleteailureUnknownInstanceId
6337 // +-------+ +---------+ +---------+
6338 // | xapp | | submgr | | e2term |
6339 // +-------+ +---------+ +---------+
6341 // | [SUBS CREATE] |
6344 // | RESTSubDelReq | |
6345 // |---------------->| |
6347 // | RESTSubDelResp | |
6348 // |<----------------| |
6351 // | |------------->|
6353 // | | SubDelFail | Unknown instanceId
6354 // | |<-------------|
6357 // | |------------->|
6359 // | | SubDelFail | Subscription does exist any more
6360 // | |<-------------|
6362 //-----------------------------------------------------------------------------
6363 func TestRESTUnpackSubscriptionDeleteailureUnknownInstanceId(t *testing.T) {
6364 xapp.Logger.Info("TEST: TestRESTUnpackSubscriptionDeleteailureUnknownInstanceId")
6367 var params *teststube2ap.RESTSubsReqParams = nil
6368 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
6371 xappConn1.SendRESTSubsDelReq(t, &restSubId)
6373 // E2t: Receive 1st SubsDelReq
6374 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
6376 // Unknown instanceId in this response which will result resending original request
6377 delreq.RequestId.InstanceId = 0
6378 e2termConn1.SendSubsDelFail(t, delreq, delmsg)
6380 // E2t: Receive 2nd SubsDelReq
6381 delreq, delmsg = e2termConn1.RecvSubsDelReq(t)
6383 // Subscription does not exist in in E2 Node.
6384 e2termConn1.SendSubsDelFail(t, delreq, delmsg)
6386 // Wait that subs is cleaned
6387 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
6389 xappConn1.TestMsgChanEmpty(t)
6390 e2termConn1.TestMsgChanEmpty(t)
6391 mainCtrl.wait_registry_empty(t, 10)
6394 //-----------------------------------------------------------------------------
6395 // TestRESTUnpackSubscriptionDeleteFailureNoTransaction
6398 // +-------+ +---------+ +---------+
6399 // | xapp | | submgr | | e2term |
6400 // +-------+ +---------+ +---------+
6402 // | [SUBS CREATE] |
6405 // | RESTSubDelReq | |
6406 // |---------------->| |
6408 // | RESTSubDelResp | |
6409 // |<----------------| |
6412 // | |------------->|
6414 // | | SubDelFail | No transaction for the response
6415 // | |<-------------|
6418 // | |------------->|
6420 // | | SubDelFail | Subscription does exist any more
6421 // | |<-------------|
6423 //-----------------------------------------------------------------------------
6424 func TestRESTUnpackSubscriptionDeleteFailureNoTransaction(t *testing.T) {
6425 xapp.Logger.Info("TEST: TestRESTUnpackSubscriptionDeleteFailureNoTransaction")
6428 var params *teststube2ap.RESTSubsReqParams = nil
6429 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
6432 xappConn1.SendRESTSubsDelReq(t, &restSubId)
6434 // E2t: Receive 1st SubsDelReq
6435 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
6437 mainCtrl.MakeTransactionNil(t, e2SubsId)
6439 // No transaction exist for this response which will result resending original request
6440 e2termConn1.SendSubsDelFail(t, delreq, delmsg)
6442 // E2t: Receive 2nd SubsDelReq
6443 delreq, delmsg = e2termConn1.RecvSubsDelReq(t)
6445 // Subscription does not exist in in E2 Node.
6446 e2termConn1.SendSubsDelFail(t, delreq, delmsg)
6448 // Wait that subs is cleaned
6449 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
6451 xappConn1.TestMsgChanEmpty(t)
6452 e2termConn1.TestMsgChanEmpty(t)
6453 mainCtrl.wait_registry_empty(t, 10)
6456 //-----------------------------------------------------------------------------
6457 // TestRESTSubReqFailAsn1PackSubReqError
6460 // +-------+ +---------+ +---------+
6461 // | xapp | | submgr | | e2term |
6462 // +-------+ +---------+ +---------+
6465 // |---------------->| |
6467 // | RESTSubResp | |
6468 // |<----------------| |
6470 // | ASN.1 encode fails |
6473 // | |------------->|
6476 // | |<-------------|
6480 // |<----------------| |
6482 // | [SUBS DELETE] |
6485 //-----------------------------------------------------------------------------
6486 func TestRESTSubReqFailAsn1PackSubReqError(t *testing.T) {
6488 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
6489 Counter{cRestSubReqFromXapp, 1},
6490 Counter{cRestSubRespToXapp, 1},
6491 Counter{cSubDelReqToE2, 1},
6492 Counter{cSubDelFailFromE2, 1},
6493 Counter{cRestSubFailNotifToXapp, 1},
6498 var params *teststube2ap.RESTSubsReqParams = nil
6499 params = xappConn1.GetRESTSubsReqReportParams(subReqCount)
6500 e2ap_wrapper.AllowE2apToProcess(e2ap_wrapper.SUB_REQ, false)
6503 restSubId := xappConn1.SendRESTSubsReq(t, params)
6504 xapp.Logger.Info("Send REST subscriber request for subscriberId : %v", restSubId)
6506 // E2t: Receive SubsDelReq
6507 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
6508 xappConn1.ExpectRESTNotificationNok(t, restSubId, "allFail")
6510 // Subscription does not exist in in E2 Node.
6511 e2termConn1.SendSubsDelFail(t, delreq, delmsg)
6513 e2SubsId := xappConn1.WaitRESTNotification(t, restSubId)
6514 xapp.Logger.Info("TEST: REST notification received e2SubsId=%v", e2SubsId)
6516 e2ap_wrapper.AllowE2apToProcess(e2ap_wrapper.SUB_REQ, true)
6517 // Wait that subs is cleaned
6518 waitSubsCleanup(t, e2SubsId, 10)
6519 mainCtrl.VerifyCounterValues(t)
6522 ////////////////////////////////////////////////////////////////////////////////////
6523 // Services for UT cases
6524 ////////////////////////////////////////////////////////////////////////////////////
6525 const subReqCount int = 1
6526 const host string = "localhost"
6528 func createSubscription(t *testing.T, fromXappConn *teststube2ap.E2Stub, toE2termConn *teststube2ap.E2Stub, params *teststube2ap.RESTSubsReqParams) (string, uint32) {
6530 params = fromXappConn.GetRESTSubsReqReportParams(subReqCount)
6532 restSubId := fromXappConn.SendRESTSubsReq(t, params)
6533 xapp.Logger.Info("Send REST subscriber request for subscriberId : %v", restSubId)
6535 crereq1, cremsg1 := toE2termConn.RecvSubsReq(t)
6536 fromXappConn.ExpectRESTNotification(t, restSubId)
6537 toE2termConn.SendSubsResp(t, crereq1, cremsg1)
6538 e2SubsId := fromXappConn.WaitRESTNotification(t, restSubId)
6539 xapp.Logger.Info("REST notification received e2SubsId=%v", e2SubsId)
6541 return restSubId, e2SubsId
6544 func createXapp2MergedSubscription(t *testing.T, meid string) (string, uint32) {
6546 params := xappConn2.GetRESTSubsReqReportParams(subReqCount)
6548 params.SetMeid(meid)
6550 xapp.Subscription.SetResponseCB(xappConn2.SubscriptionRespHandler)
6551 restSubId := xappConn2.SendRESTSubsReq(t, params)
6552 xappConn2.ExpectRESTNotification(t, restSubId)
6553 xapp.Logger.Info("Send REST subscriber request for subscriberId : %v", restSubId)
6554 e2SubsId := xappConn2.WaitRESTNotification(t, restSubId)
6555 xapp.Logger.Info("REST notification received e2SubsId=%v", e2SubsId)
6557 return restSubId, e2SubsId
6560 func createXapp1PolicySubscription(t *testing.T) (string, uint32) {
6561 params := xappConn1.GetRESTSubsReqPolicyParams(subReqCount)
6562 restSubId := xappConn1.SendRESTSubsReq(t, params)
6563 xapp.Logger.Info("Send REST Policy subscriber request for subscriberId : %v", restSubId)
6565 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
6566 xappConn1.ExpectRESTNotification(t, restSubId)
6567 e2termConn1.SendSubsResp(t, crereq1, cremsg1)
6568 e2SubsId := xappConn1.WaitRESTNotification(t, restSubId)
6569 xapp.Logger.Info("REST notification received e2SubsId=%v", e2SubsId)
6571 return restSubId, e2SubsId
6574 func createXapp1ReportSubscriptionE2Fail(t *testing.T) (string, uint32) {
6575 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
6576 restSubId := xappConn1.SendRESTSubsReq(t, params)
6578 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
6579 fparams1 := &teststube2ap.E2StubSubsFailParams{}
6580 fparams1.Set(crereq1)
6581 e2termConn1.SendSubsFail(t, fparams1, cremsg1)
6583 delreq1, delmsg1 := e2termConn1.RecvSubsDelReq(t)
6584 xappConn1.ExpectRESTNotification(t, restSubId)
6585 e2termConn1.SendSubsDelResp(t, delreq1, delmsg1)
6586 e2SubsId := xappConn1.WaitRESTNotification(t, restSubId)
6587 xapp.Logger.Info("TEST: REST notification received e2SubsId=%v", e2SubsId)
6589 return restSubId, e2SubsId
6592 func deleteSubscription(t *testing.T, fromXappConn *teststube2ap.E2Stub, toE2termConn *teststube2ap.E2Stub, restSubId *string) {
6593 fromXappConn.SendRESTSubsDelReq(t, restSubId)
6594 delreq, delmsg := toE2termConn.RecvSubsDelReq(t)
6595 toE2termConn.SendSubsDelResp(t, delreq, delmsg)
6598 func deleteXapp1Subscription(t *testing.T, restSubId *string) {
6599 xappConn1.SendRESTSubsDelReq(t, restSubId)
6600 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
6601 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
6604 func deleteXapp2Subscription(t *testing.T, restSubId *string) {
6605 xappConn2.SendRESTSubsDelReq(t, restSubId)
6606 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
6607 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
6610 func queryXappSubscription(t *testing.T, e2SubsId int64, meid string, endpoint []string) {
6611 resp, _ := xapp.Subscription.QuerySubscriptions()
6612 assert.Equal(t, resp[0].SubscriptionID, e2SubsId)
6613 assert.Equal(t, resp[0].Meid, meid)
6614 assert.Equal(t, resp[0].ClientEndpoint, endpoint)
6617 func waitSubsCleanup(t *testing.T, e2SubsId uint32, timeout int) {
6618 //Wait that subs is cleaned
6619 mainCtrl.wait_subs_clean(t, e2SubsId, timeout)
6621 xappConn1.TestMsgChanEmpty(t)
6622 xappConn2.TestMsgChanEmpty(t)
6623 e2termConn1.TestMsgChanEmpty(t)
6624 mainCtrl.wait_registry_empty(t, timeout)
6627 func sendAndReceiveMultipleE2SubReqs(t *testing.T, count int, fromXappConn *teststube2ap.E2Stub, toE2termConn *teststube2ap.E2Stub, restSubId string) []uint32 {
6629 var e2SubsId []uint32
6631 for i := 0; i < count; i++ {
6632 xapp.Logger.Info("TEST: %d ===================================== BEGIN CRE ============================================", i+1)
6633 crereq, cremsg := toE2termConn.RecvSubsReq(t)
6634 fromXappConn.ExpectRESTNotification(t, restSubId)
6635 toE2termConn.SendSubsResp(t, crereq, cremsg)
6636 instanceId := fromXappConn.WaitRESTNotification(t, restSubId)
6637 e2SubsId = append(e2SubsId, instanceId)
6638 xapp.Logger.Info("TEST: %v", e2SubsId)
6639 xapp.Logger.Info("TEST: %d ===================================== END CRE ============================================", i+1)
6640 <-time.After(100 * time.Millisecond)
6645 func sendAndReceiveMultipleE2DelReqs(t *testing.T, e2SubsIds []uint32, toE2termConn *teststube2ap.E2Stub) {
6647 for i := 0; i < len(e2SubsIds); i++ {
6648 xapp.Logger.Info("TEST: %d ===================================== BEGIN DEL ============================================", i+1)
6649 delreq, delmsg := toE2termConn.RecvSubsDelReq(t)
6650 toE2termConn.SendSubsDelResp(t, delreq, delmsg)
6651 <-time.After(1 * time.Second)
6652 xapp.Logger.Info("TEST: %d ===================================== END DEL ============================================", i+1)
6653 <-time.After(100 * time.Millisecond)
6656 // Wait that subs is cleaned
6657 for i := 0; i < len(e2SubsIds); i++ {
6658 mainCtrl.wait_subs_clean(t, e2SubsIds[i], 10)