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 ==================================================================================
29 "gerrit.o-ran-sc.org/r/ric-plt/e2ap/pkg/e2ap"
30 "gerrit.o-ran-sc.org/r/ric-plt/e2ap/pkg/e2ap_wrapper"
31 "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities"
32 "gerrit.o-ran-sc.org/r/ric-plt/submgr/pkg/teststube2ap"
33 "gerrit.o-ran-sc.org/r/ric-plt/xapp-frame/pkg/xapp"
34 "github.com/stretchr/testify/assert"
37 // In below test cases there is done only one retry for E2 messages
38 // In Helm chart retry count is currently 2 By default. Retry count
39 // used in test cases is defined in submgr-config.yaml file.
41 func TestSuiteSetup(t *testing.T) {
42 // The effect of this call shall endure though the UT suite!
43 // If this causes any issues, the previous interface can be restored
45 // SetPackerIf(e2ap_wrapper.NewAsn1E2APPacker())
47 mainCtrl.InitAllCounterMap()
48 SetPackerIf(e2ap_wrapper.NewUtAsn1E2APPacker())
49 mainCtrl.c.restDuplicateCtrl.Init()
52 func TestRanStatusChangeViaSDLNotification(t *testing.T) {
54 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
55 Counter{cE2StateChangedToUp, 3},
58 // Current UT test cases use these ran names
59 xappRnibMock.CreateGnb("RAN_NAME_1", entities.ConnectionStatus_DISCONNECTED)
60 xappRnibMock.CreateGnb("RAN_NAME_11", entities.ConnectionStatus_DISCONNECTED)
61 xappRnibMock.CreateGnb("RAN_NAME_2", entities.ConnectionStatus_DISCONNECTED)
63 mainCtrl.c.e2IfState.ReadE2ConfigurationFromRnib()
64 mainCtrl.c.e2IfState.SubscribeChannels()
66 mainCtrl.SetE2State(t, "RAN_NAME_1_CONNECTED")
67 mainCtrl.SetE2State(t, "RAN_NAME_2_CONNECTED")
68 mainCtrl.SetE2State(t, "RAN_NAME_11_CONNECTED")
70 mainCtrl.VerifyCounterValues(t)
73 //-----------------------------------------------------------------------------
74 // TestRESTSubReqAfterE2ConnBreak
77 // +-------+ +---------+ +---------+
78 // | xapp | | submgr | | e2term |
79 // +-------+ +---------+ +---------+
81 // | [E2 Conn. DOWN] |
84 // |---------------->| |
86 // |<----------------| |
89 //-----------------------------------------------------------------------------
91 func TestRESTSubReqAfterE2ConnBreak(t *testing.T) {
93 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
94 Counter{cRestSubReqFromXapp, 1},
95 Counter{cRestReqRejDueE2Down, 1},
96 Counter{cE2StateChangedToDown, 1},
97 Counter{cE2StateChangedToUp, 1},
100 // E2 disconnect after E2term has received response
101 mainCtrl.SetE2State(t, "RAN_NAME_1_DISCONNECTED")
103 const subReqCount int = 1
104 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
105 xappConn1.SendRESTSubsReq(t, params)
107 // Restore E2 connection for following test cases
108 mainCtrl.SetE2State(t, "RAN_NAME_1_CONNECTED")
110 mainCtrl.VerifyAllClean(t)
111 mainCtrl.VerifyCounterValues(t)
114 //-----------------------------------------------------------------------------
115 // TestRESTSubReqE2ConnBreak
118 // +-------+ +---------+ +---------+
119 // | xapp | | submgr | | e2term |
120 // +-------+ +---------+ +---------+
123 // |---------------->| |
125 // |<----------------| |
127 // | |------------->|
129 // | |<-------------|
131 // | [E2 Conn. DOWN] |
132 // | [Int. SUBS DELETE] |
134 // | RESTNotif(unsuccessful) |
135 // |<----------------| |
139 //-----------------------------------------------------------------------------
140 func TestRESTSubReqE2ConnBreak(t *testing.T) {
142 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
143 Counter{cRestSubReqFromXapp, 1},
144 Counter{cRestSubRespToXapp, 1},
145 Counter{cSubReqToE2, 1},
146 Counter{cSubRespFromE2, 1},
147 Counter{cRestSubFailNotifToXapp, 1},
148 Counter{cE2StateChangedToDown, 1},
149 Counter{cE2StateChangedToUp, 1},
153 const subReqCount int = 1
154 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
155 restSubId := xappConn1.SendRESTSubsReq(t, params)
157 crereq, cremsg := e2termConn1.RecvSubsReq(t)
158 xappConn1.ExpectRESTNotification(t, restSubId)
160 // E2 disconnect after E2term has received response
161 mainCtrl.SetE2State(t, "RAN_NAME_1_DISCONNECTED")
163 e2termConn1.SendSubsResp(t, crereq, cremsg)
164 e2SubsId := xappConn1.WaitRESTNotification(t, restSubId)
166 <-time.After(time.Second * 1)
167 assert.Equal(t, 0, len(mainCtrl.c.registry.register))
168 assert.Equal(t, 0, len(mainCtrl.c.registry.restSubscriptions))
170 subIds, register, err := mainCtrl.c.ReadAllSubscriptionsFromSdl()
172 xapp.Logger.Error("%v", err)
174 assert.Equal(t, 65534, len(subIds)) // range 1-65535 , FFFF = 65535
175 assert.Equal(t, 0, len(register))
178 restSubscriptions, err := mainCtrl.c.ReadAllRESTSubscriptionsFromSdl()
180 xapp.Logger.Error("%v", err)
182 assert.Equal(t, 0, len(restSubscriptions))
185 // Restore E2 connection for following test cases
186 mainCtrl.SetE2State(t, "RAN_NAME_1_CONNECTED")
188 // Wait that subs is cleaned
189 waitSubsCleanup(t, e2SubsId, 10)
190 mainCtrl.VerifyCounterValues(t)
191 mainCtrl.VerifyAllClean(t)
194 //-----------------------------------------------------------------------------
195 // TestRESTSubscriptionDeleteAfterE2ConnectionBreak
198 // +-------+ +---------+ +---------+
199 // | xapp | | submgr | | e2term |
200 // +-------+ +---------+ +---------+
204 // | [E2 Conn. DOWN] |
206 // | RESTSubDelReq | |
207 // |---------------->| |
209 // | RESTSubDelResp | |
210 // |<----------------| |
212 // | [No valid subscription found] |
215 //-----------------------------------------------------------------------------
216 func TestRESTSubscriptionDeleteAfterE2ConnectionBreak(t *testing.T) {
217 xapp.Logger.Debug("TEST: TestRESTSubscriptionDeleteAfterE2ConnectionBreak")
219 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
220 Counter{cRestSubReqFromXapp, 1},
221 Counter{cRestSubRespToXapp, 1},
222 Counter{cSubReqToE2, 1},
223 Counter{cSubRespFromE2, 1},
224 Counter{cRestSubNotifToXapp, 1},
225 Counter{cRestSubDelReqFromXapp, 1},
226 Counter{cRestSubDelRespToXapp, 1},
227 Counter{cE2StateChangedToDown, 1},
228 Counter{cE2StateChangedToUp, 1},
232 var params *teststube2ap.RESTSubsReqParams = nil
233 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
235 // E2 disconnect after E2term has received response
236 mainCtrl.SetE2State(t, "RAN_NAME_1_DISCONNECTED")
239 xappConn1.SendRESTSubsDelReq(t, &restSubId)
241 <-time.After(time.Second * 1)
242 assert.Equal(t, 0, len(mainCtrl.c.registry.register))
243 assert.Equal(t, 0, len(mainCtrl.c.registry.restSubscriptions))
245 subIds, register, err := mainCtrl.c.ReadAllSubscriptionsFromSdl()
247 xapp.Logger.Error("%v", err)
249 assert.Equal(t, 65534, len(subIds)) // range 1-65535 , FFFF = 65535
250 assert.Equal(t, 0, len(register))
253 restSubscriptions, err := mainCtrl.c.ReadAllRESTSubscriptionsFromSdl()
255 xapp.Logger.Error("%v", err)
257 assert.Equal(t, 0, len(restSubscriptions))
260 // Restore E2 connection for following test cases
261 mainCtrl.SetE2State(t, "RAN_NAME_1_CONNECTED")
263 // Wait that subs is cleaned
264 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
266 xappConn1.TestMsgChanEmpty(t)
267 e2termConn1.TestMsgChanEmpty(t)
268 mainCtrl.wait_registry_empty(t, 10)
269 mainCtrl.VerifyCounterValues(t)
270 mainCtrl.VerifyAllClean(t)
273 //-----------------------------------------------------------------------------
274 // TestRESTOtherE2ConnectionChanges
278 // +-------+ +---------+ +---------+
279 // | xapp | | submgr | | e2term |
280 // +-------+ +---------+ +---------+
284 // | [E2 CONNECTED_SETUP_FAILED] |
285 // | [E2 CONNECTING] |
286 // | [E2 SHUTTING_DOWN] |
287 // | [E2 SHUT_DOWN] |
292 //-----------------------------------------------------------------------------
293 func TestRESTOtherE2ConnectionChanges(t *testing.T) {
294 xapp.Logger.Debug("TEST: TestRESTOtherE2ConnectionChanges")
296 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
297 Counter{cRestSubReqFromXapp, 1},
298 Counter{cRestSubRespToXapp, 1},
299 Counter{cSubReqToE2, 1},
300 Counter{cSubRespFromE2, 1},
301 Counter{cRestSubNotifToXapp, 1},
302 Counter{cRestSubDelReqFromXapp, 1},
303 Counter{cSubDelReqToE2, 1},
304 Counter{cSubDelRespFromE2, 1},
305 Counter{cRestSubDelRespToXapp, 1},
306 Counter{cE2StateChangedToUp, 1},
310 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
311 restSubId := xappConn1.SendRESTSubsReq(t, params)
313 crereq, cremsg := e2termConn1.RecvSubsReq(t)
314 xappConn1.ExpectRESTNotification(t, restSubId)
315 e2termConn1.SendSubsResp(t, crereq, cremsg)
316 e2SubsId := xappConn1.WaitRESTNotification(t, restSubId)
318 // Submgr should not react to any other connection state changes than CONNECTED and DISCONNECTED
319 mainCtrl.SetE2State(t, "RAN_NAME_1_CONNECTED_SETUP_FAILED")
320 mainCtrl.SetE2State(t, "RAN_NAME_1_CONNECTING")
321 mainCtrl.SetE2State(t, "RAN_NAME_1_SHUTTING_DOWN")
322 mainCtrl.SetE2State(t, "RAN_NAME_1_SHUT_DOWN")
325 xappConn1.SendRESTSubsDelReq(t, &restSubId)
326 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
327 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
329 // Restore E2 connection for following test cases
330 mainCtrl.SetE2State(t, "RAN_NAME_1_CONNECTED")
332 // Wait that subs is cleaned
333 waitSubsCleanup(t, e2SubsId, 10)
334 mainCtrl.VerifyCounterValues(t)
335 mainCtrl.VerifyAllClean(t)
338 //-----------------------------------------------------------------------------
339 // TestRESTSubReqAndDeleteOkWithE2apUtWrapper
342 // +-------+ +---------+ +---------+ +---------+
343 // | xapp | | submgr | | e2term | | rtmgr |
344 // +-------+ +---------+ +---------+ +---------+
346 // | RESTSubReq | | |
347 // |---------------->| | |
348 // | | RouteCreate | |
349 // | |--------------------------->| // The order of these events may vary
351 // | RESTSubResp | | | // The order of these events may vary
352 // |<----------------| | |
353 // | | RouteResponse| |
354 // | |<---------------------------| // The order of these events may vary
357 // | |------------->| | // The order of these events may vary
360 // | |<-------------| |
361 // | RESTNotif1 | | |
362 // |<----------------| | |
364 // | RESTSubDelReq | | |
365 // |---------------->| | |
367 // | |------------->| |
369 // | RESTSubDelResp| | |
370 // |<----------------| | |
372 // | | SubDelResp | |
373 // | |<-------------| |
377 //-----------------------------------------------------------------------------
378 func TestRESTSubReqAndDeleteOkWithE2apUtWrapper(t *testing.T) {
380 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, nil)
382 deleteSubscription(t, xappConn1, e2termConn1, &restSubId)
384 waitSubsCleanup(t, e2SubsId, 10)
385 mainCtrl.VerifyAllClean(t)
388 //-----------------------------------------------------------------------------
389 // TestRESTSubReqAndE1apDeleteReqPackingError
392 // +-------+ +---------+ +---------+ +---------+
393 // | xapp | | submgr | | e2term | | rtmgr |
394 // +-------+ +---------+ +---------+ +---------+
396 // | RESTSubReq | | |
397 // |---------------->| | |
398 // | | RouteCreate | |
399 // | |--------------------------->| // The order of these events may vary
401 // | RESTSubResp | | | // The order of these events may vary
402 // |<----------------| | |
403 // | | RouteResponse| |
404 // | |<---------------------------| // The order of these events may vary
407 // | |------------->| | // The order of these events may vary
410 // | |<-------------| |
411 // | RESTNotif1 | | |
412 // |<----------------| | |
414 // | RESTSubDelReq | | |
415 // |---------------->| | |
417 // | RESTSubDelResp| | |
418 // |<----------------| | |
422 //-----------------------------------------------------------------------------
423 func TestRESTSubReqAndE1apDeleteReqPackingError(t *testing.T) {
425 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, nil)
427 e2ap_wrapper.AllowE2apToProcess(e2ap_wrapper.SUB_DEL_REQ, false)
428 xappConn1.SendRESTSubsDelReq(t, &restSubId)
429 defer e2ap_wrapper.AllowE2apToProcess(e2ap_wrapper.SUB_DEL_REQ, true)
431 waitSubsCleanup(t, e2SubsId, 10)
432 mainCtrl.VerifyAllClean(t)
435 //-----------------------------------------------------------------------------
436 // TestRESTSubReqAndE2APDeleteRespUnpackingError
439 // +-------+ +---------+ +---------+ +---------+
440 // | xapp | | submgr | | e2term | | rtmgr |
441 // +-------+ +---------+ +---------+ +---------+
443 // | RESTSubReq | | |
444 // |---------------->| | |
445 // | | RouteCreate | |
446 // | |--------------------------->| // The order of these events may vary
448 // | RESTSubResp | | | // The order of these events may vary
449 // |<----------------| | |
450 // | | RouteResponse| |
451 // | |<---------------------------| // The order of these events may vary
454 // | |------------->| | // The order of these events may vary
457 // | |<-------------| |
458 // | RESTNotif1 | | |
459 // |<----------------| | |
461 // | RESTSubDelReq | | |
462 // |---------------->| | |
464 // | |------------->| |
466 // | RESTSubDelResp| | |
467 // |<----------------| | | // The order of these events may vary
469 // | | SubDelResp | |
470 // | |<-------------| | // 1.st NOK
473 // | |------------->| |
475 // | | SubDelResp | |
476 // | |<-------------| | // 2.nd NOK
478 //-----------------------------------------------------------------------------
480 func TestRESTSubReqAndE2APDeleteRespUnpackingError(t *testing.T) {
482 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, nil)
484 xappConn1.SendRESTSubsDelReq(t, &restSubId)
485 e2ap_wrapper.AllowE2apToProcess(e2ap_wrapper.SUB_DEL_RESP, false)
486 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
487 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
489 delreq, delmsg = e2termConn1.RecvSubsDelReq(t)
490 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
492 defer e2ap_wrapper.AllowE2apToProcess(e2ap_wrapper.SUB_DEL_RESP, true)
494 waitSubsCleanup(t, e2SubsId, 10)
495 mainCtrl.VerifyAllClean(t)
498 //-----------------------------------------------------------------------------
499 // TestSubReqAndRouteNok
502 // +-------+ +---------+ +---------+
503 // | xapp | | submgr | | rtmgr |
504 // +-------+ +---------+ +---------+
507 // |------------->| |
510 // | |------------->|
514 // | |<-------------|
516 // | [SUBS INT DELETE] |
519 //-----------------------------------------------------------------------------
521 func TestSubReqAndRouteNok(t *testing.T) {
522 CaseBegin("TestSubReqAndRouteNok")
524 // Init counter check
525 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
526 Counter{cSubReqFromXapp, 1},
527 Counter{cRouteCreateFail, 1},
530 waiter := rtmgrHttp.AllocNextEvent(false)
531 newSubsId := mainCtrl.get_registry_next_subid(t)
532 xappConn1.SendSubsReq(t, nil, nil)
535 //Wait that subs is cleaned
536 mainCtrl.wait_subs_clean(t, newSubsId, 10)
538 xappConn1.TestMsgChanEmpty(t)
539 xappConn2.TestMsgChanEmpty(t)
540 e2termConn1.TestMsgChanEmpty(t)
541 mainCtrl.wait_registry_empty(t, 10)
543 <-time.After(1 * time.Second)
544 mainCtrl.VerifyCounterValues(t)
547 //-----------------------------------------------------------------------------
548 // TestSubReqAndRouteUpdateNok
551 // +-------+ +-------+ +---------+ +---------+
552 // | xapp2 | | xapp1 | | submgr | | rtmgr |
553 // +-------+ +-------+ +---------+ +---------+
555 // | [SUBS CREATE] | |
559 // | SubReq (mergeable) | |
560 // |--------------------------->| | |
562 // | | | RouteUpdate |
563 // | | |------------->|
565 // | | | RouteUpdate |
566 // | | | status:400 |
567 // | | |<-------------|
569 // | [SUBS INT DELETE] | |
572 // | [SUBS DELETE] | |
575 func TestSubReqAndRouteUpdateNok(t *testing.T) {
576 CaseBegin("TestSubReqAndRouteUpdateNok")
578 // Init counter check
579 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
580 Counter{cSubReqFromXapp, 2},
581 Counter{cSubReqToE2, 1},
582 Counter{cSubRespFromE2, 1},
583 Counter{cSubRespToXapp, 1},
584 Counter{cRouteCreateUpdateFail, 1},
585 Counter{cSubDelReqFromXapp, 1},
586 Counter{cSubDelReqToE2, 1},
587 Counter{cSubDelRespFromE2, 1},
588 Counter{cSubDelRespToXapp, 1},
591 cretrans := xappConn1.SendSubsReq(t, nil, nil)
592 crereq, cremsg := e2termConn1.RecvSubsReq(t)
593 e2termConn1.SendSubsResp(t, crereq, cremsg)
594 e2SubsId := xappConn1.RecvSubsResp(t, cretrans)
596 resp, _ := xapp.Subscription.QuerySubscriptions()
597 assert.Equal(t, resp[0].SubscriptionID, int64(e2SubsId))
598 assert.Equal(t, resp[0].Meid, "RAN_NAME_1")
599 assert.Equal(t, resp[0].ClientEndpoint, []string{"localhost:13560"})
601 waiter := rtmgrHttp.AllocNextEvent(false)
602 newSubsId := mainCtrl.get_registry_next_subid(t)
603 xappConn2.SendSubsReq(t, nil, nil)
606 deltrans := xappConn1.SendSubsDelReq(t, nil, e2SubsId)
607 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
609 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
610 xappConn1.RecvSubsDelResp(t, deltrans)
612 //Wait that subs is cleaned
613 mainCtrl.wait_subs_clean(t, newSubsId, 10)
614 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
616 xappConn1.TestMsgChanEmpty(t)
617 xappConn2.TestMsgChanEmpty(t)
618 e2termConn1.TestMsgChanEmpty(t)
619 mainCtrl.wait_registry_empty(t, 10)
621 mainCtrl.VerifyCounterValues(t)
624 //-----------------------------------------------------------------------------
625 // TestSubDelReqAndRouteDeleteNok
628 // +-------+ +---------+ +---------+ +---------+
629 // | xapp | | submgr | | e2term | | rtmgr |
630 // +-------+ +---------+ +---------+ +---------+
632 // | [SUBS CREATE] | |
637 // |------------->| | |
639 // | |------------->| |
641 // | |<-------------| |
643 // |<-------------| | |
644 // | | RouteDelete | |
645 // | |---------------------------->|
647 // | | RouteDelete | |
648 // | | status:400 | |
649 // | |<----------------------------|
651 func TestSubDelReqAndRouteDeleteNok(t *testing.T) {
652 CaseBegin("TestSubDelReqAndRouteDeleteNok")
654 // Init counter check
655 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
656 Counter{cSubReqFromXapp, 1},
657 Counter{cSubReqToE2, 1},
658 Counter{cSubRespFromE2, 1},
659 Counter{cSubRespToXapp, 1},
660 Counter{cSubDelReqFromXapp, 1},
661 Counter{cRouteDeleteFail, 1},
662 Counter{cSubDelReqToE2, 1},
663 Counter{cSubDelRespFromE2, 1},
664 Counter{cSubDelRespToXapp, 1},
667 cretrans := xappConn1.SendSubsReq(t, nil, nil)
668 crereq, cremsg := e2termConn1.RecvSubsReq(t)
669 e2termConn1.SendSubsResp(t, crereq, cremsg)
670 e2SubsId := xappConn1.RecvSubsResp(t, cretrans)
672 resp, _ := xapp.Subscription.QuerySubscriptions()
673 assert.Equal(t, resp[0].SubscriptionID, int64(e2SubsId))
674 assert.Equal(t, resp[0].Meid, "RAN_NAME_1")
675 assert.Equal(t, resp[0].ClientEndpoint, []string{"localhost:13560"})
677 deltrans := xappConn1.SendSubsDelReq(t, nil, e2SubsId)
678 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
680 waiter := rtmgrHttp.AllocNextEvent(false)
681 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
684 xappConn1.RecvSubsDelResp(t, deltrans)
686 //Wait that subs is cleaned
687 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
689 xappConn1.TestMsgChanEmpty(t)
690 xappConn2.TestMsgChanEmpty(t)
691 e2termConn1.TestMsgChanEmpty(t)
692 mainCtrl.wait_registry_empty(t, 10)
693 mainCtrl.VerifyCounterValues(t)
696 //-----------------------------------------------------------------------------
697 // TestSubMergeDelAndRouteUpdateNok
699 // +-------+ +-------+ +---------+ +---------+
700 // | xapp2 | | xapp1 | | submgr | | e2term |
701 // +-------+ +-------+ +---------+ +---------+
706 // | |------------->| |
709 // | | |------------->|
711 // | | |<-------------|
713 // | |<-------------| |
716 // |--------------------------->| |
719 // |<---------------------------| |
721 // | | SubDelReq 1 | |
722 // | |------------->| |
723 // | | | RouteUpdate |
724 // | | |-----> rtmgr |
726 // | | | RouteUpdate |
727 // | | | status:400 |
728 // | | |<----- rtmgr |
730 // | | SubDelResp 1 | |
731 // | |<-------------| |
734 // |--------------------------->| |
736 // | | | SubDelReq 2 |
737 // | | |------------->|
739 // | | | SubDelReq 2 |
740 // | | |------------->|
742 // | SubDelResp 2 | |
743 // |<---------------------------| |
745 //-----------------------------------------------------------------------------
746 func TestSubMergeDelAndRouteUpdateNok(t *testing.T) {
747 CaseBegin("TestSubMergeDelAndRouteUpdateNok")
749 // Init counter check
750 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
751 Counter{cSubReqFromXapp, 2},
752 Counter{cMergedSubscriptions, 1},
753 Counter{cSubReqToE2, 1},
754 Counter{cSubRespFromE2, 1},
755 Counter{cSubRespToXapp, 2},
756 Counter{cSubDelReqFromXapp, 2},
757 Counter{cRouteDeleteUpdateFail, 1},
758 Counter{cSubDelReqToE2, 1},
759 Counter{cSubDelRespFromE2, 1},
760 Counter{cSubDelRespToXapp, 2},
761 Counter{cUnmergedSubscriptions, 1},
765 rparams1 := &teststube2ap.E2StubSubsReqParams{}
767 cretrans1 := xappConn1.SendSubsReq(t, rparams1, nil)
768 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
769 e2termConn1.SendSubsResp(t, crereq1, cremsg1)
770 e2SubsId1 := xappConn1.RecvSubsResp(t, cretrans1)
773 rparams2 := &teststube2ap.E2StubSubsReqParams{}
775 cretrans2 := xappConn2.SendSubsReq(t, rparams2, nil)
776 e2SubsId2 := xappConn2.RecvSubsResp(t, cretrans2)
778 resp, _ := xapp.Subscription.QuerySubscriptions()
779 assert.Equal(t, resp[0].SubscriptionID, int64(e2SubsId1))
780 assert.Equal(t, resp[0].Meid, "RAN_NAME_1")
781 assert.Equal(t, resp[0].ClientEndpoint, []string{"localhost:13560", "localhost:13660"})
784 waiter := rtmgrHttp.AllocNextEvent(false)
785 deltrans1 := xappConn1.SendSubsDelReq(t, nil, e2SubsId1)
788 xappConn1.RecvSubsDelResp(t, deltrans1)
791 deltrans2 := xappConn2.SendSubsDelReq(t, nil, e2SubsId2)
792 delreq2, delmsg2 := e2termConn1.RecvSubsDelReq(t)
793 e2termConn1.SendSubsDelResp(t, delreq2, delmsg2)
794 xappConn2.RecvSubsDelResp(t, deltrans2)
795 //Wait that subs is cleaned
796 mainCtrl.wait_subs_clean(t, e2SubsId2, 10)
798 xappConn1.TestMsgChanEmpty(t)
799 xappConn2.TestMsgChanEmpty(t)
800 e2termConn1.TestMsgChanEmpty(t)
801 mainCtrl.wait_registry_empty(t, 10)
803 mainCtrl.VerifyCounterValues(t)
806 //-----------------------------------------------------------------------------
808 //-----------------------------------------------------------------------------
809 // TestSubReqAndSubDelOk
812 // +-------+ +---------+ +---------+
813 // | xapp | | submgr | | e2term |
814 // +-------+ +---------+ +---------+
817 // |------------->| |
820 // | |------------->|
823 // | |<-------------|
826 // |<-------------| |
830 // |------------->| |
833 // | |------------->|
836 // | |<-------------|
839 // |<-------------| |
841 //-----------------------------------------------------------------------------
842 func TestSubReqAndSubDelOk(t *testing.T) {
843 CaseBegin("TestSubReqAndSubDelOk")
845 // Init counter check
846 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
847 Counter{cSubReqFromXapp, 1},
848 Counter{cSubReqToE2, 1},
849 Counter{cSubRespFromE2, 1},
850 Counter{cSubRespToXapp, 1},
851 Counter{cSubDelReqFromXapp, 1},
852 Counter{cSubDelReqToE2, 1},
853 Counter{cSubDelRespFromE2, 1},
854 Counter{cSubDelRespToXapp, 1},
857 cretrans := xappConn1.SendSubsReq(t, nil, nil)
858 crereq, cremsg := e2termConn1.RecvSubsReq(t)
859 e2termConn1.SendSubsResp(t, crereq, cremsg)
860 e2SubsId := xappConn1.RecvSubsResp(t, cretrans)
862 resp, _ := xapp.Subscription.QuerySubscriptions()
863 assert.Equal(t, resp[0].SubscriptionID, int64(e2SubsId))
864 assert.Equal(t, resp[0].Meid, "RAN_NAME_1")
865 assert.Equal(t, resp[0].ClientEndpoint, []string{"localhost:13560"})
867 deltrans := xappConn1.SendSubsDelReq(t, nil, e2SubsId)
868 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
870 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
871 xappConn1.RecvSubsDelResp(t, deltrans)
873 //Wait that subs is cleaned
874 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
876 xappConn1.TestMsgChanEmpty(t)
877 xappConn2.TestMsgChanEmpty(t)
878 e2termConn1.TestMsgChanEmpty(t)
879 mainCtrl.wait_registry_empty(t, 10)
881 mainCtrl.VerifyCounterValues(t)
884 //-----------------------------------------------------------------------------
885 // TestSubReqRetransmission
888 // +-------+ +---------+ +---------+
889 // | xapp | | submgr | | e2term |
890 // +-------+ +---------+ +---------+
893 // |------------->| |
896 // | |------------->|
900 // |------------->| |
903 // | |<-------------|
906 // |<-------------| |
911 //-----------------------------------------------------------------------------
912 func TestSubReqRetransmission(t *testing.T) {
913 CaseBegin("TestSubReqRetransmission")
916 cretrans := xappConn1.SendSubsReq(t, nil, nil)
917 crereq, cremsg := e2termConn1.RecvSubsReq(t)
919 seqBef := mainCtrl.get_msgcounter(t)
920 xappConn1.SendSubsReq(t, nil, cretrans) //Retransmitted SubReq
921 mainCtrl.wait_msgcounter_change(t, seqBef, 10)
923 // hack as there is no real way to see has message be handled.
924 // Previuos counter check just tells that is has been received by submgr
925 // --> artificial delay
926 <-time.After(1 * time.Second)
927 e2termConn1.SendSubsResp(t, crereq, cremsg)
928 e2SubsId := xappConn1.RecvSubsResp(t, cretrans)
931 deltrans := xappConn1.SendSubsDelReq(t, nil, e2SubsId)
932 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
933 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
934 xappConn1.RecvSubsDelResp(t, deltrans)
936 //Wait that subs is cleaned
937 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
939 xappConn1.TestMsgChanEmpty(t)
940 xappConn2.TestMsgChanEmpty(t)
941 e2termConn1.TestMsgChanEmpty(t)
942 mainCtrl.wait_registry_empty(t, 10)
945 //-----------------------------------------------------------------------------
946 // TestSubDelReqRetransmission
949 // +-------+ +---------+ +---------+
950 // | xapp | | submgr | | e2term |
951 // +-------+ +---------+ +---------+
957 // |------------->| |
960 // | |------------->|
965 // |------------->| |
968 // | |<-------------|
971 // |<-------------| |
973 //-----------------------------------------------------------------------------
974 func TestSubDelReqRetransmission(t *testing.T) {
975 CaseBegin("TestSubDelReqRetransmission")
978 cretrans := xappConn1.SendSubsReq(t, nil, nil)
979 crereq, cremsg := e2termConn1.RecvSubsReq(t)
980 e2termConn1.SendSubsResp(t, crereq, cremsg)
981 e2SubsId := xappConn1.RecvSubsResp(t, cretrans)
984 deltrans := xappConn1.SendSubsDelReq(t, nil, e2SubsId)
985 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
987 seqBef := mainCtrl.get_msgcounter(t)
988 xappConn1.SendSubsDelReq(t, deltrans, e2SubsId) //Retransmitted SubDelReq
989 mainCtrl.wait_msgcounter_change(t, seqBef, 10)
991 // hack as there is no real way to see has message be handled.
992 // Previuos counter check just tells that is has been received by submgr
993 // --> artificial delay
994 <-time.After(1 * time.Second)
996 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
997 xappConn1.RecvSubsDelResp(t, deltrans)
999 //Wait that subs is cleaned
1000 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
1002 xappConn1.TestMsgChanEmpty(t)
1003 xappConn2.TestMsgChanEmpty(t)
1004 e2termConn1.TestMsgChanEmpty(t)
1005 mainCtrl.wait_registry_empty(t, 10)
1008 //-----------------------------------------------------------------------------
1009 // TestSubDelReqCollision
1012 // +-------+ +---------+ +---------+
1013 // | xapp | | submgr | | e2term |
1014 // +-------+ +---------+ +---------+
1016 // | [SUBS CREATE] |
1019 // | SubDelReq 1 | |
1020 // |------------->| |
1022 // | | SubDelReq 1 |
1023 // | |------------->|
1025 // | SubDelReq 2 | |
1028 // |------------->| |
1030 // | | SubDelResp 1 |
1031 // | |<-------------|
1033 // | SubDelResp 1 | |
1034 // |<-------------| |
1036 // | SubDelResp 2 | |
1037 // |<-------------| |
1039 //-----------------------------------------------------------------------------
1041 func TestSubDelReqCollision(t *testing.T) {
1042 CaseBegin("TestSubDelReqCollision")
1045 cretrans := xappConn1.SendSubsReq(t, nil, nil)
1046 crereq, cremsg := e2termConn1.RecvSubsReq(t)
1047 e2termConn1.SendSubsResp(t, crereq, cremsg)
1048 e2SubsId := xappConn1.RecvSubsResp(t, cretrans)
1051 xappConn1.SendSubsDelReq(t, nil, e2SubsId)
1052 delreq1, delmsg1 := e2termConn1.RecvSubsDelReq(t)
1054 // Subs Delete colliding
1055 seqBef := mainCtrl.get_msgcounter(t)
1056 deltranscol2 := xappConn1.NewRmrTransactionId("", "RAN_NAME_1")
1057 xappConn1.SendSubsDelReq(t, deltranscol2, e2SubsId) //Colliding SubDelReq
1058 mainCtrl.wait_msgcounter_change(t, seqBef, 10)
1060 // hack as there is no real way to see has message be handled.
1061 // Previuos counter check just tells that is has been received by submgr
1062 // --> artificial delay
1063 <-time.After(1 * time.Second)
1065 // Del resp for first and second
1066 e2termConn1.SendSubsDelResp(t, delreq1, delmsg1)
1068 // don't care in which order responses are received
1069 xappConn1.RecvSubsDelResp(t, nil)
1070 xappConn1.RecvSubsDelResp(t, nil)
1072 //Wait that subs is cleaned
1073 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
1075 xappConn1.TestMsgChanEmpty(t)
1076 xappConn2.TestMsgChanEmpty(t)
1077 e2termConn1.TestMsgChanEmpty(t)
1078 mainCtrl.wait_registry_empty(t, 10)
1081 //-----------------------------------------------------------------------------
1082 // TestSubReqAndSubDelOkTwoParallel
1085 // +-------+ +-------+ +---------+ +---------+
1086 // | xapp | | xapp | | submgr | | e2term |
1087 // +-------+ +-------+ +---------+ +---------+
1092 // | |------------->| |
1095 // | | |------------->|
1098 // |------------------------>| |
1101 // | | |------------->|
1104 // | | |<-------------|
1106 // | |<-------------| |
1109 // | | |<-------------|
1111 // |<------------------------| |
1113 // | | [SUBS 1 DELETE] |
1115 // | | [SUBS 2 DELETE] |
1118 //-----------------------------------------------------------------------------
1120 func TestSubReqAndSubDelOkTwoParallel(t *testing.T) {
1121 CaseBegin("TestSubReqAndSubDelOkTwoParallel")
1124 rparams1 := &teststube2ap.E2StubSubsReqParams{}
1126 cretrans1 := xappConn1.SendSubsReq(t, rparams1, nil)
1127 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
1130 rparams2 := &teststube2ap.E2StubSubsReqParams{}
1133 rparams2.Req.EventTriggerDefinition.Data.Length = 1
1134 rparams2.Req.EventTriggerDefinition.Data.Data = make([]uint8, rparams2.Req.EventTriggerDefinition.Data.Length)
1135 rparams2.Req.EventTriggerDefinition.Data.Data[0] = 2
1137 cretrans2 := xappConn2.SendSubsReq(t, rparams2, nil)
1138 crereq2, cremsg2 := e2termConn1.RecvSubsReq(t)
1141 e2termConn1.SendSubsResp(t, crereq1, cremsg1)
1142 e2SubsId1 := xappConn1.RecvSubsResp(t, cretrans1)
1145 e2termConn1.SendSubsResp(t, crereq2, cremsg2)
1146 e2SubsId2 := xappConn2.RecvSubsResp(t, cretrans2)
1149 deltrans1 := xappConn1.SendSubsDelReq(t, nil, e2SubsId1)
1150 delreq1, delmsg1 := e2termConn1.RecvSubsDelReq(t)
1151 e2termConn1.SendSubsDelResp(t, delreq1, delmsg1)
1152 xappConn1.RecvSubsDelResp(t, deltrans1)
1153 //Wait that subs is cleaned
1154 mainCtrl.wait_subs_clean(t, e2SubsId1, 10)
1157 deltrans2 := xappConn2.SendSubsDelReq(t, nil, e2SubsId2)
1158 delreq2, delmsg2 := e2termConn1.RecvSubsDelReq(t)
1159 e2termConn1.SendSubsDelResp(t, delreq2, delmsg2)
1160 xappConn2.RecvSubsDelResp(t, deltrans2)
1161 //Wait that subs is cleaned
1162 mainCtrl.wait_subs_clean(t, e2SubsId2, 10)
1164 xappConn1.TestMsgChanEmpty(t)
1165 xappConn2.TestMsgChanEmpty(t)
1166 e2termConn1.TestMsgChanEmpty(t)
1167 mainCtrl.wait_registry_empty(t, 10)
1170 //-----------------------------------------------------------------------------
1171 // TestSameSubsDiffRan
1172 // Same subscription to different RANs
1175 // +-------+ +---------+ +---------+
1176 // | xapp | | submgr | | e2term |
1177 // +-------+ +---------+ +---------+
1182 // |------------->| |
1185 // | |------------->|
1187 // | | SubResp(r1) |
1188 // | |<-------------|
1190 // | SubResp(r1) | |
1191 // |<-------------| |
1194 // |------------->| |
1197 // | |------------->|
1199 // | | SubResp(r2) |
1200 // | |<-------------|
1202 // | SubResp(r2) | |
1203 // |<-------------| |
1205 // | [SUBS r1 DELETE] |
1207 // | [SUBS r2 DELETE] |
1210 //-----------------------------------------------------------------------------
1211 func TestSameSubsDiffRan(t *testing.T) {
1212 CaseBegin("TestSameSubsDiffRan")
1215 cretrans1 := xappConn1.NewRmrTransactionId("", "RAN_NAME_1")
1216 xappConn1.SendSubsReq(t, nil, cretrans1)
1217 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
1218 e2termConn1.SendSubsResp(t, crereq1, cremsg1)
1219 e2SubsId1 := xappConn1.RecvSubsResp(t, cretrans1)
1222 cretrans2 := xappConn1.NewRmrTransactionId("", "RAN_NAME_2")
1223 xappConn1.SendSubsReq(t, nil, cretrans2)
1224 crereq2, cremsg2 := e2termConn1.RecvSubsReq(t)
1225 e2termConn1.SendSubsResp(t, crereq2, cremsg2)
1226 e2SubsId2 := xappConn1.RecvSubsResp(t, cretrans2)
1229 deltrans1 := xappConn1.NewRmrTransactionId("", "RAN_NAME_1")
1230 xappConn1.SendSubsDelReq(t, deltrans1, e2SubsId1)
1231 delreq1, delmsg1 := e2termConn1.RecvSubsDelReq(t)
1232 e2termConn1.SendSubsDelResp(t, delreq1, delmsg1)
1233 xappConn1.RecvSubsDelResp(t, deltrans1)
1234 //Wait that subs is cleaned
1235 mainCtrl.wait_subs_clean(t, e2SubsId1, 10)
1238 deltrans2 := xappConn1.NewRmrTransactionId("", "RAN_NAME_2")
1239 xappConn1.SendSubsDelReq(t, deltrans2, e2SubsId2)
1240 delreq2, delmsg2 := e2termConn1.RecvSubsDelReq(t)
1241 e2termConn1.SendSubsDelResp(t, delreq2, delmsg2)
1242 xappConn1.RecvSubsDelResp(t, deltrans2)
1243 //Wait that subs is cleaned
1244 mainCtrl.wait_subs_clean(t, e2SubsId2, 10)
1246 xappConn1.TestMsgChanEmpty(t)
1247 xappConn2.TestMsgChanEmpty(t)
1248 e2termConn1.TestMsgChanEmpty(t)
1249 mainCtrl.wait_registry_empty(t, 10)
1252 //-----------------------------------------------------------------------------
1253 // TestSubReqRetryInSubmgr
1256 // +-------+ +---------+ +---------+
1257 // | xapp | | submgr | | e2term |
1258 // +-------+ +---------+ +---------+
1261 // |------------->| |
1264 // | |------------->|
1268 // | |------------->|
1271 // | |<-------------|
1274 // |<-------------| |
1276 // | [SUBS DELETE] |
1279 //-----------------------------------------------------------------------------
1281 func TestSubReqRetryInSubmgr(t *testing.T) {
1282 CaseBegin("TestSubReqRetryInSubmgr start")
1284 // Init counter check
1285 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
1286 Counter{cSubReqFromXapp, 1},
1287 Counter{cSubReqToE2, 1},
1288 Counter{cSubReqTimerExpiry, 1},
1289 Counter{cSubReReqToE2, 1},
1290 Counter{cSubRespFromE2, 1},
1291 Counter{cSubRespToXapp, 1},
1292 Counter{cSubDelReqFromXapp, 1},
1293 Counter{cSubDelReqToE2, 1},
1294 Counter{cSubDelRespFromE2, 1},
1295 Counter{cSubDelRespToXapp, 1},
1298 // Xapp: Send SubsReq
1299 cretrans := xappConn1.SendSubsReq(t, nil, nil)
1301 // E2t: Receive 1st SubsReq
1302 e2termConn1.RecvSubsReq(t)
1304 // E2t: Receive 2nd SubsReq and send SubsResp
1305 crereq, cremsg := e2termConn1.RecvSubsReq(t)
1306 e2termConn1.SendSubsResp(t, crereq, cremsg)
1308 // Xapp: Receive SubsResp
1309 e2SubsId := xappConn1.RecvSubsResp(t, cretrans)
1311 deltrans := xappConn1.SendSubsDelReq(t, nil, e2SubsId)
1312 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
1313 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
1314 xappConn1.RecvSubsDelResp(t, deltrans)
1316 // Wait that subs is cleaned
1317 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
1319 xappConn1.TestMsgChanEmpty(t)
1320 xappConn2.TestMsgChanEmpty(t)
1321 e2termConn1.TestMsgChanEmpty(t)
1322 mainCtrl.wait_registry_empty(t, 10)
1324 mainCtrl.VerifyCounterValues(t)
1327 //-----------------------------------------------------------------------------
1328 // TestSubReqTwoRetriesNoRespSubDelRespInSubmgr
1331 // +-------+ +---------+ +---------+
1332 // | xapp | | submgr | | e2term |
1333 // +-------+ +---------+ +---------+
1336 // |------------->| |
1339 // | |------------->|
1343 // | |------------->|
1346 // | |------------->|
1349 // | |<-------------|
1352 //-----------------------------------------------------------------------------
1353 func TestSubReqRetryNoRespSubDelRespInSubmgr(t *testing.T) {
1354 CaseBegin("TestSubReqTwoRetriesNoRespSubDelRespInSubmgr start")
1356 // Init counter check
1357 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
1358 Counter{cSubReqFromXapp, 1},
1359 Counter{cSubReqToE2, 1},
1360 Counter{cSubReReqToE2, 1},
1361 Counter{cSubReqTimerExpiry, 2},
1362 Counter{cSubDelReqToE2, 1},
1363 Counter{cSubDelRespFromE2, 1},
1366 // Xapp: Send SubsReq
1367 xappConn1.SendSubsReq(t, nil, nil)
1369 // E2t: Receive 1st SubsReq
1370 e2termConn1.RecvSubsReq(t)
1372 // E2t: Receive 2nd SubsReq
1373 e2termConn1.RecvSubsReq(t)
1375 // E2t: Send receive SubsDelReq and send SubsResp
1376 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
1377 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
1379 // Wait that subs is cleaned
1380 mainCtrl.wait_subs_clean(t, delreq.RequestId.InstanceId, 10)
1382 xappConn1.TestMsgChanEmpty(t)
1383 xappConn2.TestMsgChanEmpty(t)
1384 e2termConn1.TestMsgChanEmpty(t)
1385 mainCtrl.wait_registry_empty(t, 10)
1387 mainCtrl.VerifyCounterValues(t)
1390 //-----------------------------------------------------------------------------
1391 // TestSubReqTwoRetriesNoRespAtAllInSubmgr
1394 // +-------+ +---------+ +---------+
1395 // | xapp | | submgr | | e2term |
1396 // +-------+ +---------+ +---------+
1399 // |------------->| |
1402 // | |------------->|
1406 // | |------------->|
1409 // | |------------->|
1413 // | |------------->|
1417 //-----------------------------------------------------------------------------
1419 func TestSubReqTwoRetriesNoRespAtAllInSubmgr(t *testing.T) {
1420 CaseBegin("TestSubReqTwoRetriesNoRespAtAllInSubmgr start")
1422 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
1423 Counter{cSubReqFromXapp, 1},
1424 Counter{cSubReqToE2, 1},
1425 Counter{cSubReReqToE2, 1},
1426 Counter{cSubReqTimerExpiry, 2},
1427 Counter{cSubDelReqToE2, 1},
1428 Counter{cSubDelReReqToE2, 1},
1429 Counter{cSubDelReqTimerExpiry, 2},
1432 // Xapp: Send SubsReq
1433 xappConn1.SendSubsReq(t, nil, nil)
1435 // E2t: Receive 1st SubsReq
1436 e2termConn1.RecvSubsReq(t)
1438 // E2t: Receive 2nd SubsReq
1439 e2termConn1.RecvSubsReq(t)
1441 // E2t: Receive 1st SubsDelReq
1442 e2termConn1.RecvSubsDelReq(t)
1444 // E2t: Receive 2nd SubsDelReq
1445 delreq, _ := e2termConn1.RecvSubsDelReq(t)
1447 // Wait that subs is cleaned
1448 mainCtrl.wait_subs_clean(t, delreq.RequestId.InstanceId, 15)
1450 xappConn1.TestMsgChanEmpty(t)
1451 xappConn2.TestMsgChanEmpty(t)
1452 e2termConn1.TestMsgChanEmpty(t)
1453 mainCtrl.wait_registry_empty(t, 10)
1455 mainCtrl.VerifyCounterValues(t)
1458 //-----------------------------------------------------------------------------
1459 // TestSubReqSubFailRespInSubmgr
1462 // +-------+ +---------+ +---------+
1463 // | xapp | | submgr | | e2term |
1464 // +-------+ +---------+ +---------+
1467 // |------------->| |
1470 // | |------------->|
1473 // | |<-------------|
1476 // |<-------------| |
1479 //-----------------------------------------------------------------------------
1481 func TestSubReqSubFailRespInSubmgr(t *testing.T) {
1482 CaseBegin("TestSubReqSubFailRespInSubmgr start")
1484 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
1485 Counter{cSubReqFromXapp, 1},
1486 Counter{cSubReqToE2, 1},
1487 Counter{cSubFailFromE2, 1},
1488 Counter{cSubFailToXapp, 1},
1491 // Xapp: Send SubsReq
1492 cretrans := xappConn1.SendSubsReq(t, nil, nil)
1494 // E2t: Receive SubsReq and send SubsFail (first)
1495 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
1496 fparams1 := &teststube2ap.E2StubSubsFailParams{}
1497 fparams1.Set(crereq1)
1498 e2termConn1.SendSubsFail(t, fparams1, cremsg1)
1500 // Xapp: Receive SubsFail
1501 e2SubsId := xappConn1.RecvSubsFail(t, cretrans)
1503 // Wait that subs is cleaned
1504 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
1506 xappConn1.TestMsgChanEmpty(t)
1507 xappConn2.TestMsgChanEmpty(t)
1508 e2termConn1.TestMsgChanEmpty(t)
1509 mainCtrl.wait_registry_empty(t, 10)
1511 mainCtrl.VerifyCounterValues(t)
1514 //-----------------------------------------------------------------------------
1515 // TestSubDelReqRetryInSubmgr
1518 // +-------+ +---------+ +---------+
1519 // | xapp | | submgr | | e2term |
1520 // +-------+ +---------+ +---------+
1522 // | [SUBS CREATE] |
1526 // |------------->| |
1529 // | |------------->|
1532 // | |------------->|
1535 // | |<-------------|
1538 // |<-------------| |
1540 //-----------------------------------------------------------------------------
1542 func TestSubDelReqRetryInSubmgr(t *testing.T) {
1544 CaseBegin("TestSubDelReqRetryInSubmgr start")
1547 cretrans := xappConn1.SendSubsReq(t, nil, nil)
1548 crereq, cremsg := e2termConn1.RecvSubsReq(t)
1549 e2termConn1.SendSubsResp(t, crereq, cremsg)
1550 e2SubsId := xappConn1.RecvSubsResp(t, cretrans)
1553 // Xapp: Send SubsDelReq
1554 deltrans := xappConn1.SendSubsDelReq(t, nil, e2SubsId)
1556 // E2t: Receive 1st SubsDelReq
1557 e2termConn1.RecvSubsDelReq(t)
1559 // E2t: Receive 2nd SubsDelReq and send SubsDelResp
1560 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
1561 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
1563 // Xapp: Receive SubsDelResp
1564 xappConn1.RecvSubsDelResp(t, deltrans)
1566 // Wait that subs is cleaned
1567 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
1569 xappConn1.TestMsgChanEmpty(t)
1570 xappConn2.TestMsgChanEmpty(t)
1571 e2termConn1.TestMsgChanEmpty(t)
1572 mainCtrl.wait_registry_empty(t, 10)
1575 //-----------------------------------------------------------------------------
1576 // TestSubDelReqTwoRetriesNoRespInSubmgr
1579 // +-------+ +---------+ +---------+
1580 // | xapp | | submgr | | e2term |
1581 // +-------+ +---------+ +---------+
1583 // | [SUBS CREATE] |
1587 // |------------->| |
1590 // | |------------->|
1593 // | |------------->|
1597 // |<-------------| |
1599 //-----------------------------------------------------------------------------
1601 func TestSubDelReqTwoRetriesNoRespInSubmgr(t *testing.T) {
1603 CaseBegin("TestSubDelReTwoRetriesNoRespInSubmgr start")
1606 cretrans := xappConn1.SendSubsReq(t, nil, nil)
1607 crereq, cremsg := e2termConn1.RecvSubsReq(t)
1608 e2termConn1.SendSubsResp(t, crereq, cremsg)
1609 e2SubsId := xappConn1.RecvSubsResp(t, cretrans)
1612 // Xapp: Send SubsDelReq
1613 deltrans := xappConn1.SendSubsDelReq(t, nil, e2SubsId)
1615 // E2t: Receive 1st SubsDelReq
1616 e2termConn1.RecvSubsDelReq(t)
1618 // E2t: Receive 2nd SubsDelReq
1619 e2termConn1.RecvSubsDelReq(t)
1621 // Xapp: Receive SubsDelResp
1622 xappConn1.RecvSubsDelResp(t, deltrans)
1624 // Wait that subs is cleaned
1625 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
1627 xappConn1.TestMsgChanEmpty(t)
1628 xappConn2.TestMsgChanEmpty(t)
1629 e2termConn1.TestMsgChanEmpty(t)
1630 mainCtrl.wait_registry_empty(t, 10)
1633 //-----------------------------------------------------------------------------
1634 // TestSubDelReqSubDelFailRespInSubmgr
1637 // +-------+ +---------+ +---------+
1638 // | xapp | | submgr | | e2term |
1639 // +-------+ +---------+ +---------+
1641 // | [SUBS CREATE] |
1645 // |------------->| |
1648 // | |------------->|
1651 // | |<-------------|
1654 // |<-------------| |
1657 //-----------------------------------------------------------------------------
1659 func TestSubDelReqSubDelFailRespInSubmgr(t *testing.T) {
1660 CaseBegin("TestSubReqSubDelFailRespInSubmgr start")
1662 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
1663 Counter{cSubReqFromXapp, 1},
1664 Counter{cSubReqToE2, 1},
1665 Counter{cSubRespFromE2, 1},
1666 Counter{cSubRespToXapp, 1},
1667 Counter{cSubDelReqFromXapp, 1},
1668 Counter{cSubDelReqToE2, 1},
1669 Counter{cSubDelFailFromE2, 1},
1670 Counter{cSubDelRespToXapp, 1},
1674 cretrans := xappConn1.SendSubsReq(t, nil, nil)
1675 crereq, cremsg := e2termConn1.RecvSubsReq(t)
1676 e2termConn1.SendSubsResp(t, crereq, cremsg)
1677 e2SubsId := xappConn1.RecvSubsResp(t, cretrans)
1679 // Xapp: Send SubsDelReq
1680 deltrans := xappConn1.SendSubsDelReq(t, nil, e2SubsId)
1682 // E2t: Send receive SubsDelReq and send SubsDelFail
1683 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
1684 e2termConn1.SendSubsDelFail(t, delreq, delmsg)
1686 // Xapp: Receive SubsDelResp
1687 xappConn1.RecvSubsDelResp(t, deltrans)
1689 // Wait that subs is cleaned
1690 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
1692 xappConn1.TestMsgChanEmpty(t)
1693 xappConn2.TestMsgChanEmpty(t)
1694 e2termConn1.TestMsgChanEmpty(t)
1695 mainCtrl.wait_registry_empty(t, 10)
1697 mainCtrl.VerifyCounterValues(t)
1700 //-----------------------------------------------------------------------------
1701 // TestSubReqAndSubDelOkSameAction
1704 // +-------+ +-------+ +---------+ +---------+
1705 // | xapp2 | | xapp1 | | submgr | | e2term |
1706 // +-------+ +-------+ +---------+ +---------+
1711 // | |------------->| |
1714 // | | |------------->|
1716 // | | |<-------------|
1718 // | |<-------------| |
1721 // |--------------------------->| |
1724 // |<---------------------------| |
1726 // | | SubDelReq 1 | |
1727 // | |------------->| |
1729 // | | SubDelResp 1 | |
1730 // | |<-------------| |
1732 // | SubDelReq 2 | |
1733 // |--------------------------->| |
1735 // | | | SubDelReq 2 |
1736 // | | |------------->|
1738 // | | | SubDelReq 2 |
1739 // | | |------------->|
1741 // | SubDelResp 2 | |
1742 // |<---------------------------| |
1744 //-----------------------------------------------------------------------------
1745 func TestSubReqAndSubDelOkSameAction(t *testing.T) {
1746 CaseBegin("TestSubReqAndSubDelOkSameAction")
1748 // Init counter check
1749 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
1750 Counter{cSubReqFromXapp, 2},
1751 Counter{cSubReqToE2, 1},
1752 Counter{cSubRespFromE2, 1},
1753 Counter{cSubRespToXapp, 2},
1754 Counter{cMergedSubscriptions, 1},
1755 Counter{cUnmergedSubscriptions, 1},
1756 Counter{cSubDelReqFromXapp, 2},
1757 Counter{cSubDelReqToE2, 1},
1758 Counter{cSubDelRespFromE2, 1},
1759 Counter{cSubDelRespToXapp, 2},
1763 rparams1 := &teststube2ap.E2StubSubsReqParams{}
1765 cretrans1 := xappConn1.SendSubsReq(t, rparams1, nil)
1766 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
1767 e2termConn1.SendSubsResp(t, crereq1, cremsg1)
1768 e2SubsId1 := xappConn1.RecvSubsResp(t, cretrans1)
1771 rparams2 := &teststube2ap.E2StubSubsReqParams{}
1773 cretrans2 := xappConn2.SendSubsReq(t, rparams2, nil)
1774 e2SubsId2 := xappConn2.RecvSubsResp(t, cretrans2)
1776 resp, _ := xapp.Subscription.QuerySubscriptions()
1777 assert.Equal(t, resp[0].SubscriptionID, int64(e2SubsId1))
1778 assert.Equal(t, resp[0].Meid, "RAN_NAME_1")
1779 assert.Equal(t, resp[0].ClientEndpoint, []string{"localhost:13560", "localhost:13660"})
1782 deltrans1 := xappConn1.SendSubsDelReq(t, nil, e2SubsId1)
1783 xappConn1.RecvSubsDelResp(t, deltrans1)
1786 deltrans2 := xappConn2.SendSubsDelReq(t, nil, e2SubsId2)
1787 delreq2, delmsg2 := e2termConn1.RecvSubsDelReq(t)
1788 e2termConn1.SendSubsDelResp(t, delreq2, delmsg2)
1789 xappConn2.RecvSubsDelResp(t, deltrans2)
1790 //Wait that subs is cleaned
1791 mainCtrl.wait_subs_clean(t, e2SubsId2, 10)
1793 xappConn1.TestMsgChanEmpty(t)
1794 xappConn2.TestMsgChanEmpty(t)
1795 e2termConn1.TestMsgChanEmpty(t)
1796 mainCtrl.wait_registry_empty(t, 10)
1798 mainCtrl.VerifyCounterValues(t)
1801 //-----------------------------------------------------------------------------
1802 // TestSubReqAndSubDelOkSameActionParallel
1805 // +-------+ +-------+ +---------+ +---------+
1806 // | xapp2 | | xapp1 | | submgr | | e2term |
1807 // +-------+ +-------+ +---------+ +---------+
1812 // | |------------->| |
1815 // | | |------------->|
1817 // |--------------------------->| |
1819 // | | |<-------------|
1821 // | |<-------------| |
1824 // |<---------------------------| |
1826 // | | SubDelReq 1 | |
1827 // | |------------->| |
1829 // | | SubDelResp 1 | |
1830 // | |<-------------| |
1832 // | SubDelReq 2 | |
1833 // |--------------------------->| |
1835 // | | | SubDelReq 2 |
1836 // | | |------------->|
1838 // | | | SubDelReq 2 |
1839 // | | |------------->|
1841 // | SubDelResp 2 | |
1842 // |<---------------------------| |
1844 //-----------------------------------------------------------------------------
1845 func TestSubReqAndSubDelOkSameActionParallel(t *testing.T) {
1846 CaseBegin("TestSubReqAndSubDelOkSameActionParallel")
1849 rparams1 := &teststube2ap.E2StubSubsReqParams{}
1851 cretrans1 := xappConn1.SendSubsReq(t, rparams1, nil)
1852 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
1855 rparams2 := &teststube2ap.E2StubSubsReqParams{}
1857 cretrans2 := xappConn2.SendSubsReq(t, rparams2, nil)
1860 e2termConn1.SendSubsResp(t, crereq1, cremsg1)
1861 e2SubsId1 := xappConn1.RecvSubsResp(t, cretrans1)
1864 e2SubsId2 := xappConn2.RecvSubsResp(t, cretrans2)
1867 deltrans1 := xappConn1.SendSubsDelReq(t, nil, e2SubsId1)
1868 xappConn1.RecvSubsDelResp(t, deltrans1)
1871 deltrans2 := xappConn2.SendSubsDelReq(t, nil, e2SubsId2)
1872 delreq2, delmsg2 := e2termConn1.RecvSubsDelReq(t)
1873 e2termConn1.SendSubsDelResp(t, delreq2, delmsg2)
1874 xappConn2.RecvSubsDelResp(t, deltrans2)
1876 //Wait that subs is cleaned
1877 mainCtrl.wait_subs_clean(t, e2SubsId2, 10)
1879 xappConn1.TestMsgChanEmpty(t)
1880 xappConn2.TestMsgChanEmpty(t)
1881 e2termConn1.TestMsgChanEmpty(t)
1882 mainCtrl.wait_registry_empty(t, 10)
1885 //-----------------------------------------------------------------------------
1886 // TestSubReqAndSubDelNokSameActionParallel
1889 // +-------+ +-------+ +---------+ +---------+
1890 // | xapp2 | | xapp1 | | submgr | | e2term |
1891 // +-------+ +-------+ +---------+ +---------+
1896 // | |------------->| |
1899 // | | |------------->|
1901 // |--------------------------->| |
1903 // | | |<-------------|
1906 // | |<-------------| |
1909 // |<---------------------------| |
1911 //-----------------------------------------------------------------------------
1912 func TestSubReqAndSubDelNokSameActionParallel(t *testing.T) {
1913 CaseBegin("TestSubReqAndSubDelNokSameActionParallel")
1916 rparams1 := &teststube2ap.E2StubSubsReqParams{}
1918 cretrans1 := xappConn1.SendSubsReq(t, rparams1, nil)
1920 // E2t: Receive SubsReq (first)
1921 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
1924 rparams2 := &teststube2ap.E2StubSubsReqParams{}
1926 subepcnt2 := mainCtrl.get_subs_entrypoint_cnt(t, crereq1.RequestId.InstanceId)
1927 cretrans2 := xappConn2.SendSubsReq(t, rparams2, nil)
1928 mainCtrl.wait_subs_entrypoint_cnt_change(t, crereq1.RequestId.InstanceId, subepcnt2, 10)
1930 // E2t: send SubsFail (first)
1931 fparams1 := &teststube2ap.E2StubSubsFailParams{}
1932 fparams1.Set(crereq1)
1933 e2termConn1.SendSubsFail(t, fparams1, cremsg1)
1936 e2SubsId1 := xappConn1.RecvSubsFail(t, cretrans1)
1938 xappConn2.RecvSubsFail(t, cretrans2)
1940 //Wait that subs is cleaned
1941 mainCtrl.wait_subs_clean(t, e2SubsId1, 15)
1943 xappConn1.TestMsgChanEmpty(t)
1944 xappConn2.TestMsgChanEmpty(t)
1945 e2termConn1.TestMsgChanEmpty(t)
1946 mainCtrl.wait_registry_empty(t, 10)
1949 //-----------------------------------------------------------------------------
1950 // TestSubReqAndSubDelNoAnswerSameActionParallel
1953 // +-------+ +-------+ +---------+ +---------+
1954 // | xapp2 | | xapp1 | | submgr | | e2term |
1955 // +-------+ +-------+ +---------+ +---------+
1960 // | |------------->| |
1963 // | | |------------->|
1965 // |--------------------------->| |
1968 // | | |------------->|
1971 // | | | SubDelReq |
1972 // | | |------------->|
1974 // | | | SubDelResp |
1975 // | | |<-------------|
1977 //-----------------------------------------------------------------------------
1978 func TestSubReqAndSubDelNoAnswerSameActionParallel(t *testing.T) {
1979 CaseBegin("TestSubReqAndSubDelNoAnswerSameActionParallel")
1982 rparams1 := &teststube2ap.E2StubSubsReqParams{}
1984 xappConn1.SendSubsReq(t, rparams1, nil)
1986 crereq1, _ := e2termConn1.RecvSubsReq(t)
1989 rparams2 := &teststube2ap.E2StubSubsReqParams{}
1991 subepcnt2 := mainCtrl.get_subs_entrypoint_cnt(t, crereq1.RequestId.InstanceId)
1992 xappConn2.SendSubsReq(t, rparams2, nil)
1993 mainCtrl.wait_subs_entrypoint_cnt_change(t, crereq1.RequestId.InstanceId, subepcnt2, 10)
1995 //Req1 (retransmitted)
1996 e2termConn1.RecvSubsReq(t)
1998 delreq1, delmsg1 := e2termConn1.RecvSubsDelReq(t)
1999 e2termConn1.SendSubsDelResp(t, delreq1, delmsg1)
2001 //Wait that subs is cleaned
2002 mainCtrl.wait_subs_clean(t, delreq1.RequestId.InstanceId, 10)
2004 xappConn1.TestMsgChanEmpty(t)
2005 xappConn2.TestMsgChanEmpty(t)
2006 e2termConn1.TestMsgChanEmpty(t)
2007 mainCtrl.wait_registry_empty(t, 15)
2010 //----------------------------- Policy cases ---------------------------------
2011 //-----------------------------------------------------------------------------
2012 // TestSubReqPolicyAndSubDelOk
2015 // +-------+ +---------+ +---------+
2016 // | xapp | | submgr | | e2term |
2017 // +-------+ +---------+ +---------+
2020 // |------------->| |
2023 // | |------------->|
2026 // | |<-------------|
2029 // |<-------------| |
2033 // |------------->| |
2036 // | |------------->|
2039 // | |<-------------|
2042 // |<-------------| |
2044 //-----------------------------------------------------------------------------
2045 func TestSubReqPolicyAndSubDelOk(t *testing.T) {
2046 CaseBegin("TestSubReqAndSubDelOk")
2048 rparams1 := &teststube2ap.E2StubSubsReqParams{}
2050 rparams1.Req.ActionSetups[0].ActionType = e2ap.E2AP_ActionTypePolicy
2051 cretrans := xappConn1.SendSubsReq(t, rparams1, nil)
2053 crereq, cremsg := e2termConn1.RecvSubsReq(t)
2054 e2termConn1.SendSubsResp(t, crereq, cremsg)
2055 e2SubsId := xappConn1.RecvSubsResp(t, cretrans)
2056 deltrans := xappConn1.SendSubsDelReq(t, nil, e2SubsId)
2057 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
2059 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
2060 xappConn1.RecvSubsDelResp(t, deltrans)
2062 //Wait that subs is cleaned
2063 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
2065 xappConn1.TestMsgChanEmpty(t)
2066 xappConn2.TestMsgChanEmpty(t)
2067 e2termConn1.TestMsgChanEmpty(t)
2068 mainCtrl.wait_registry_empty(t, 10)
2071 //-----------------------------------------------------------------------------
2072 // TestSubReqPolicyChangeAndSubDelOk
2075 // +-------+ +---------+ +---------+
2076 // | xapp | | submgr | | e2term |
2077 // +-------+ +---------+ +---------+
2080 // |------------->| |
2083 // | |------------->|
2086 // | |<-------------|
2089 // |<-------------| |
2092 // |------------->| |
2095 // | |------------->|
2098 // | |<-------------|
2101 // |<-------------| |
2104 // |------------->| |
2107 // | |------------->|
2110 // | |<-------------|
2113 // |<-------------| |
2115 //-----------------------------------------------------------------------------
2117 func TestSubReqPolicyChangeAndSubDelOk(t *testing.T) {
2118 CaseBegin("TestSubReqAndSubDelOk")
2120 rparams1 := &teststube2ap.E2StubSubsReqParams{}
2122 rparams1.Req.ActionSetups[0].ActionType = e2ap.E2AP_ActionTypePolicy
2123 cretrans := xappConn1.SendSubsReq(t, rparams1, nil)
2125 crereq, cremsg := e2termConn1.RecvSubsReq(t)
2126 e2termConn1.SendSubsResp(t, crereq, cremsg)
2127 e2SubsId := xappConn1.RecvSubsResp(t, cretrans)
2130 rparams1.Req.RequestId.InstanceId = e2SubsId
2131 rparams1.Req.ActionSetups[0].SubsequentAction.TimetoWait = e2ap.E2AP_TimeToWaitW200ms
2132 xappConn1.SendSubsReq(t, rparams1, cretrans)
2134 crereq, cremsg = e2termConn1.RecvSubsReq(t)
2135 e2termConn1.SendSubsResp(t, crereq, cremsg)
2136 e2SubsId = xappConn1.RecvSubsResp(t, cretrans)
2137 deltrans := xappConn1.SendSubsDelReq(t, nil, e2SubsId)
2138 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
2140 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
2141 xappConn1.RecvSubsDelResp(t, deltrans)
2143 //Wait that subs is cleaned
2144 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
2146 xappConn1.TestMsgChanEmpty(t)
2147 xappConn2.TestMsgChanEmpty(t)
2148 e2termConn1.TestMsgChanEmpty(t)
2149 mainCtrl.wait_registry_empty(t, 10)
2152 //-----------------------------------------------------------------------------
2153 // TestSubReqAndSubDelOkTwoE2termParallel
2156 // +-------+ +---------+ +---------+ +---------+
2157 // | xapp | | submgr | | e2term1 | | e2term2 |
2158 // +-------+ +---------+ +---------+ +---------+
2163 // |------------->| | |
2166 // | |------------->| |
2169 // |------------->| | |
2172 // | |---------------------------->|
2175 // | |<-------------| |
2177 // |<-------------| | |
2179 // | |<----------------------------|
2181 // |<-------------| | |
2183 // | [SUBS 1 DELETE] | |
2185 // | [SUBS 2 DELETE] | |
2188 //-----------------------------------------------------------------------------
2189 func TestSubReqAndSubDelOkTwoE2termParallel(t *testing.T) {
2190 CaseBegin("TestSubReqAndSubDelOkTwoE2termParallel")
2193 cretrans1 := xappConn1.NewRmrTransactionId("", "RAN_NAME_1")
2194 xappConn1.SendSubsReq(t, nil, cretrans1)
2195 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
2197 cretrans2 := xappConn1.NewRmrTransactionId("", "RAN_NAME_11")
2198 xappConn1.SendSubsReq(t, nil, cretrans2)
2199 crereq2, cremsg2 := e2termConn2.RecvSubsReq(t)
2202 e2termConn1.SendSubsResp(t, crereq1, cremsg1)
2203 e2SubsId1 := xappConn1.RecvSubsResp(t, cretrans1)
2206 e2termConn2.SendSubsResp(t, crereq2, cremsg2)
2207 e2SubsId2 := xappConn1.RecvSubsResp(t, cretrans2)
2210 deltrans1 := xappConn1.SendSubsDelReq(t, nil, e2SubsId1)
2211 delreq1, delmsg1 := e2termConn1.RecvSubsDelReq(t)
2212 e2termConn1.SendSubsDelResp(t, delreq1, delmsg1)
2213 xappConn1.RecvSubsDelResp(t, deltrans1)
2214 //Wait that subs is cleaned
2215 mainCtrl.wait_subs_clean(t, e2SubsId1, 10)
2218 deltrans2 := xappConn1.SendSubsDelReq(t, nil, e2SubsId2)
2219 delreq2, delmsg2 := e2termConn2.RecvSubsDelReq(t)
2220 e2termConn2.SendSubsDelResp(t, delreq2, delmsg2)
2221 xappConn1.RecvSubsDelResp(t, deltrans2)
2222 //Wait that subs is cleaned
2223 mainCtrl.wait_subs_clean(t, e2SubsId2, 10)
2225 xappConn1.TestMsgChanEmpty(t)
2226 xappConn2.TestMsgChanEmpty(t)
2227 e2termConn1.TestMsgChanEmpty(t)
2228 e2termConn2.TestMsgChanEmpty(t)
2229 mainCtrl.wait_registry_empty(t, 10)
2232 //-----------------------------------------------------------------------------
2233 // TestSubReqInsertAndSubDelOk
2236 // +-------+ +---------+ +---------+
2237 // | xapp | | submgr | | e2term |
2238 // +-------+ +---------+ +---------+
2241 // |------------->| |
2244 // | |------------->|
2247 // | |<-------------|
2250 // |<-------------| |
2254 // |------------->| |
2257 // | |------------->|
2260 // | |<-------------|
2263 // |<-------------| |
2265 //-----------------------------------------------------------------------------
2266 func TestSubReqInsertAndSubDelOk(t *testing.T) {
2267 CaseBegin("TestInsertSubReqAndSubDelOk")
2269 rparams1 := &teststube2ap.E2StubSubsReqParams{}
2271 rparams1.Req.ActionSetups[0].ActionType = e2ap.E2AP_ActionTypeInsert
2272 cretrans := xappConn1.SendSubsReq(t, rparams1, nil)
2274 crereq, cremsg := e2termConn1.RecvSubsReq(t)
2275 e2termConn1.SendSubsResp(t, crereq, cremsg)
2276 e2SubsId := xappConn1.RecvSubsResp(t, cretrans)
2277 deltrans := xappConn1.SendSubsDelReq(t, nil, e2SubsId)
2278 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
2280 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
2281 xappConn1.RecvSubsDelResp(t, deltrans)
2283 //Wait that subs is cleaned
2284 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
2286 xappConn1.TestMsgChanEmpty(t)
2287 xappConn2.TestMsgChanEmpty(t)
2288 e2termConn1.TestMsgChanEmpty(t)
2289 mainCtrl.wait_registry_empty(t, 10)
2292 //-----------------------------------------------------------------------------
2293 // TestSubReqRetransmissionWithSameSubIdDiffXid
2295 // This case simulates case where xApp restarts and starts sending same
2296 // subscription requests which have already subscribed successfully
2299 // +-------+ +---------+ +---------+
2300 // | xapp | | submgr | | e2term |
2301 // +-------+ +---------+ +---------+
2304 // |------------->| |
2307 // | |------------->|
2310 // | |<-------------|
2313 // |<-------------| |
2315 // | xApp restart | |
2318 // | (retrans with same xApp generated subid but diff xid)
2319 // |------------->| |
2322 // |<-------------| |
2324 // | [SUBS DELETE] |
2327 //-----------------------------------------------------------------------------
2328 func TestSubReqRetransmissionWithSameSubIdDiffXid(t *testing.T) {
2329 CaseBegin("TestSubReqRetransmissionWithSameSubIdDiffXid")
2332 cretrans := xappConn1.SendSubsReq(t, nil, nil)
2333 crereq, cremsg := e2termConn1.RecvSubsReq(t)
2334 e2termConn1.SendSubsResp(t, crereq, cremsg)
2335 e2SubsId := xappConn1.RecvSubsResp(t, cretrans)
2337 // xApp restart here
2338 // --> artificial delay
2339 <-time.After(1 * time.Second)
2342 cretrans = xappConn1.SendSubsReq(t, nil, nil) //Retransmitted SubReq
2343 e2SubsId = xappConn1.RecvSubsResp(t, cretrans)
2346 deltrans := xappConn1.SendSubsDelReq(t, nil, e2SubsId)
2347 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
2348 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
2349 xappConn1.RecvSubsDelResp(t, deltrans)
2351 //Wait that subs is cleaned
2352 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
2354 xappConn1.TestMsgChanEmpty(t)
2355 xappConn2.TestMsgChanEmpty(t)
2356 e2termConn1.TestMsgChanEmpty(t)
2357 mainCtrl.wait_registry_empty(t, 10)
2360 //-----------------------------------------------------------------------------
2361 // TestSubReqNokAndSubDelOkWithRestartInMiddle
2364 // +-------+ +---------+ +---------+
2365 // | xapp | | submgr | | e2term |
2366 // +-------+ +---------+ +---------+
2369 // |------------->| |
2372 // | |------------->|
2377 // | Submgr restart |
2381 // | |------------->|
2384 // | |<-------------|
2387 //-----------------------------------------------------------------------------
2389 func TestSubReqNokAndSubDelOkWithRestartInMiddle(t *testing.T) {
2390 CaseBegin("TestSubReqNokAndSubDelOkWithRestartInMiddle")
2392 mainCtrl.SetResetTestFlag(t, true) // subs.DoNotWaitSubResp will be set TRUE for the subscription
2393 xappConn1.SendSubsReq(t, nil, nil)
2394 e2termConn1.RecvSubsReq(t)
2395 mainCtrl.SetResetTestFlag(t, false)
2397 resp, _ := xapp.Subscription.QuerySubscriptions()
2398 assert.Equal(t, resp[0].Meid, "RAN_NAME_1")
2399 assert.Equal(t, resp[0].ClientEndpoint, []string{"localhost:13560"})
2400 e2SubsId := uint32(resp[0].SubscriptionID)
2401 t.Logf("e2SubsId = %v", e2SubsId)
2403 mainCtrl.SimulateRestart(t)
2404 xapp.Logger.Debug("mainCtrl.SimulateRestart done")
2406 // Submgr send delete for uncompleted subscription
2407 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
2408 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
2410 // Wait that subs is cleaned
2411 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
2413 xappConn1.TestMsgChanEmpty(t)
2414 xappConn2.TestMsgChanEmpty(t)
2415 e2termConn1.TestMsgChanEmpty(t)
2416 mainCtrl.wait_registry_empty(t, 10)
2419 //-----------------------------------------------------------------------------
2420 // TestSubReqAndSubDelOkWithRestartInMiddle
2423 // +-------+ +---------+ +---------+
2424 // | xapp | | submgr | | e2term |
2425 // +-------+ +---------+ +---------+
2428 // |------------->| |
2431 // | |------------->|
2434 // | |<-------------|
2437 // |<-------------| |
2440 // | Submgr restart |
2443 // |------------->| |
2446 // | |------------->|
2449 // | |<-------------|
2452 // |<-------------| |
2454 //-----------------------------------------------------------------------------
2456 func TestSubReqAndSubDelOkWithRestartInMiddle(t *testing.T) {
2457 CaseBegin("TestSubReqAndSubDelOkWithRestartInMiddle")
2459 cretrans := xappConn1.SendSubsReq(t, nil, nil)
2460 crereq, cremsg := e2termConn1.RecvSubsReq(t)
2461 e2termConn1.SendSubsResp(t, crereq, cremsg)
2462 e2SubsId := xappConn1.RecvSubsResp(t, cretrans)
2464 // Check subscription
2465 resp, _ := xapp.Subscription.QuerySubscriptions()
2466 assert.Equal(t, resp[0].SubscriptionID, int64(e2SubsId))
2467 assert.Equal(t, resp[0].Meid, "RAN_NAME_1")
2468 assert.Equal(t, resp[0].ClientEndpoint, []string{"localhost:13560"})
2470 mainCtrl.SimulateRestart(t)
2471 xapp.Logger.Debug("mainCtrl.SimulateRestart done")
2473 // ReadE2Subscriptions() for testing is running in own go routine (go mainCtrl.c.ReadE2Subscriptions())
2474 // That needs to be completed before successful subscription query is possible
2475 <-time.After(time.Second * 1)
2477 // Check that subscription is restored correctly after restart
2478 resp, _ = xapp.Subscription.QuerySubscriptions()
2479 assert.Equal(t, resp[0].SubscriptionID, int64(e2SubsId))
2480 assert.Equal(t, resp[0].Meid, "RAN_NAME_1")
2481 assert.Equal(t, resp[0].ClientEndpoint, []string{"localhost:13560"})
2483 deltrans := xappConn1.SendSubsDelReq(t, nil, e2SubsId)
2484 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
2485 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
2486 xappConn1.RecvSubsDelResp(t, deltrans)
2488 //Wait that subs is cleaned
2489 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
2491 xappConn1.TestMsgChanEmpty(t)
2492 xappConn2.TestMsgChanEmpty(t)
2493 e2termConn1.TestMsgChanEmpty(t)
2494 mainCtrl.wait_registry_empty(t, 10)
2497 //-----------------------------------------------------------------------------
2498 // TestSubReqAndSubDelOkSameActionWithRestartsInMiddle
2501 // +-------+ +-------+ +---------+ +---------+
2502 // | xapp2 | | xapp1 | | submgr | | e2term |
2503 // +-------+ +-------+ +---------+ +---------+
2508 // | |------------->| |
2511 // | | |------------->|
2513 // | | |<-------------|
2515 // | |<-------------| |
2518 // | submgr restart |
2523 // |--------------------------->| |
2526 // |<---------------------------| |
2528 // | | SubDelReq 1 | |
2529 // | |------------->| |
2531 // | | SubDelResp 1 | |
2532 // | |<-------------| |
2536 // | submgr restart |
2539 // | SubDelReq 2 | |
2540 // |--------------------------->| |
2542 // | | | SubDelReq 2 |
2543 // | | |------------->|
2545 // | | | SubDelReq 2 |
2546 // | | |------------->|
2548 // | SubDelResp 2 | |
2549 // |<---------------------------| |
2551 //-----------------------------------------------------------------------------
2553 func TestSubReqAndSubDelOkSameActionWithRestartsInMiddle(t *testing.T) {
2554 CaseBegin("TestSubReqAndSubDelOkSameActionWithRestartsInMiddle")
2557 rparams1 := &teststube2ap.E2StubSubsReqParams{}
2559 cretrans1 := xappConn1.SendSubsReq(t, rparams1, nil)
2560 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
2561 e2termConn1.SendSubsResp(t, crereq1, cremsg1)
2562 e2SubsId1 := xappConn1.RecvSubsResp(t, cretrans1)
2565 rparams2 := &teststube2ap.E2StubSubsReqParams{}
2567 cretrans2 := xappConn2.SendSubsReq(t, rparams2, nil)
2568 e2SubsId2 := xappConn2.RecvSubsResp(t, cretrans2)
2570 // Check subscription
2571 resp, _ := xapp.Subscription.QuerySubscriptions()
2572 assert.Equal(t, resp[0].SubscriptionID, int64(e2SubsId1))
2573 assert.Equal(t, resp[0].Meid, "RAN_NAME_1")
2574 assert.Equal(t, resp[0].ClientEndpoint, []string{"localhost:13560", "localhost:13660"})
2576 mainCtrl.SimulateRestart(t)
2577 xapp.Logger.Debug("mainCtrl.SimulateRestart done")
2579 // ReadE2Subscriptions() for testing is running in own go routine (go mainCtrl.c.ReadE2Subscriptions())
2580 // That needs to be completed before successful subscription query is possible
2581 <-time.After(time.Second * 1)
2583 // Check that subscription is restored correctly after restart
2584 resp, _ = xapp.Subscription.QuerySubscriptions()
2585 assert.Equal(t, resp[0].SubscriptionID, int64(e2SubsId1))
2586 assert.Equal(t, resp[0].Meid, "RAN_NAME_1")
2587 assert.Equal(t, resp[0].ClientEndpoint, []string{"localhost:13560", "localhost:13660"})
2590 deltrans1 := xappConn1.SendSubsDelReq(t, nil, e2SubsId1)
2591 xapp.Logger.Debug("xappConn1.RecvSubsDelResp")
2592 xappConn1.RecvSubsDelResp(t, deltrans1)
2593 xapp.Logger.Debug("xappConn1.RecvSubsDelResp received")
2595 mainCtrl.SimulateRestart(t)
2596 xapp.Logger.Debug("mainCtrl.SimulateRestart done")
2598 // ReadE2Subscriptions() for testing is running in own go routine (go mainCtrl.c.ReadE2Subscriptions())
2599 // Submgr need be ready before successful subscription deletion is possible
2600 <-time.After(time.Second * 1)
2603 deltrans2 := xappConn2.SendSubsDelReq(t, nil, e2SubsId2)
2604 delreq2, delmsg2 := e2termConn1.RecvSubsDelReq(t)
2606 e2termConn1.SendSubsDelResp(t, delreq2, delmsg2)
2607 xappConn2.RecvSubsDelResp(t, deltrans2)
2609 //Wait that subs is cleaned
2610 mainCtrl.wait_subs_clean(t, e2SubsId2, 10)
2612 xappConn1.TestMsgChanEmpty(t)
2613 xappConn2.TestMsgChanEmpty(t)
2614 e2termConn1.TestMsgChanEmpty(t)
2615 mainCtrl.wait_registry_empty(t, 10)
2618 //*****************************************************************************
2619 // REST interface test cases
2620 //*****************************************************************************
2622 //-----------------------------------------------------------------------------
2623 // Test debug GET and POST requests
2626 // +-------+ +---------+
2627 // | user | | submgr |
2628 // +-------+ +---------+
2635 func TestGetSubscriptions(t *testing.T) {
2637 mainCtrl.SendGetRequest(t, "localhost:8088", "/ric/v1/subscriptions")
2640 func TestGetSymptomData(t *testing.T) {
2642 mainCtrl.SendGetRequest(t, "localhost:8080", "/ric/v1/symptomdata")
2645 func TestPostdeleteSubId(t *testing.T) {
2647 mainCtrl.SendPostRequest(t, "localhost:8080", "/ric/v1/test/deletesubid=1")
2650 func TestPostEmptyDb(t *testing.T) {
2652 mainCtrl.SendPostRequest(t, "localhost:8080", "/ric/v1/test/emptydb")
2655 func TestGetRestSubscriptions(t *testing.T) {
2657 mainCtrl.SendGetRequest(t, "localhost:8080", "/ric/v1/restsubscriptions")
2660 //-----------------------------------------------------------------------------
2661 // TestDelAllE2nodeSubsViaDebugIf
2664 // +-------+ +---------+ +---------+ +---------+
2665 // | xapp | | submgr | | e2term | | rtmgr |
2666 // +-------+ +---------+ +---------+ +---------+
2668 // | RESTSubReq | | |
2669 // |---------------->| | |
2670 // | RESTSubResp | | |
2671 // |<----------------| | |
2672 // | | RouteCreate | |
2673 // | |--------------------------->|
2674 // | | RouteResponse| |
2675 // | |<---------------------------|
2677 // | |------------->| |
2679 // | |<-------------| |
2680 // | RESTNotif1 | | |
2681 // |<----------------| | |
2683 // | REST get_all_e2nodes | |
2684 // |---------------->| | |
2686 // |<----------------| | |
2687 // | REST delete_all_e2node_subscriptions | ranName = RAN_NAME_1
2688 // |---------------->| | |
2690 // |<----------------| | |
2691 // | | SubDelReq | |
2692 // | |------------->| |
2693 // | | SubDelResp | |
2694 // | |<-------------| |
2696 // | | RouteDelete | |
2697 // | |--------------------------->|
2698 // | | RouteResponse| |
2699 // | |<---------------------------|
2701 //-----------------------------------------------------------------------------
2703 func TestDelAllE2nodeSubsViaDebugIf(t *testing.T) {
2705 // Init counter check
2706 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
2707 Counter{cRestSubReqFromXapp, 1},
2708 Counter{cRestSubRespToXapp, 1},
2709 Counter{cSubReqToE2, 1},
2710 Counter{cSubRespFromE2, 1},
2711 Counter{cRestSubNotifToXapp, 1},
2712 Counter{cRestSubDelReqFromXapp, 1},
2713 Counter{cSubDelReqToE2, 1},
2714 Counter{cSubDelRespFromE2, 1},
2715 Counter{cRestSubDelRespToXapp, 1},
2718 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
2719 restSubId := xappConn1.SendRESTSubsReq(t, params)
2720 xapp.Logger.Debug("Send REST Policy subscriber request for subscriberId : %v", restSubId)
2722 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
2723 xappConn1.ExpectRESTNotification(t, restSubId)
2724 e2termConn1.SendSubsResp(t, crereq1, cremsg1)
2725 e2SubsId := xappConn1.WaitRESTNotification(t, restSubId)
2726 xapp.Logger.Debug("REST notification received e2SubsId=%v", e2SubsId)
2728 e2nodesJson := mainCtrl.SendGetRequest(t, "localhost:8080", "/ric/v1/get_all_e2nodes")
2730 var e2nodesList []string
2731 err := json.Unmarshal(e2nodesJson, &e2nodesList)
2733 t.Errorf("Unmarshal error: %s", err)
2735 assert.Equal(t, true, mainCtrl.VerifyStringExistInSlice("RAN_NAME_1", e2nodesList))
2737 e2RestSubsJson := mainCtrl.SendGetRequest(t, "localhost:8080", "/ric/v1/get_e2node_rest_subscriptions/RAN_NAME_1") // RAN_NAME_1 = ranName
2738 var e2RestSubsMap map[string]RESTSubscription
2739 err = json.Unmarshal(e2RestSubsJson, &e2RestSubsMap)
2741 t.Errorf("Unmarshal error: %s", err)
2744 if len(e2RestSubsMap) != 1 {
2745 t.Errorf("Incorrect e2RestSubsMap length %v", len(e2RestSubsMap))
2748 // Simulate deletion through REST test and debug interface
2749 mainCtrl.SendDeleteRequest(t, "localhost:8080", "/ric/v1/delete_all_e2node_subscriptions/RAN_NAME_1") // RAN_NAME_1 = ranName
2750 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
2751 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
2753 // Wait that subs is cleaned
2754 waitSubsCleanup(t, e2SubsId, 10)
2755 mainCtrl.VerifyCounterValues(t)
2756 mainCtrl.VerifyAllClean(t)
2759 //-----------------------------------------------------------------------------
2760 // TestDelAllxAppSubsViaDebugIf
2763 // +-------+ +---------+ +---------+ +---------+
2764 // | xapp | | submgr | | e2term | | rtmgr |
2765 // +-------+ +---------+ +---------+ +---------+
2767 // | RESTSubReq | | |
2768 // |---------------->| | |
2769 // | RESTSubResp | | |
2770 // |<----------------| | |
2771 // | | RouteCreate | |
2772 // | |--------------------------->|
2773 // | | RouteResponse| |
2774 // | |<---------------------------|
2776 // | |------------->| |
2778 // | |<-------------| |
2779 // | RESTNotif1 | | |
2780 // |<----------------| | |
2782 // | REST get_all_xapps | |
2783 // |---------------->| | |
2785 // |<----------------| | |
2786 // | REST delete_all_xapp_subscriptions | xappServiceName = localhost
2787 // |---------------->| | |
2789 // |<----------------| | |
2790 // | | SubDelReq | |
2791 // | |------------->| |
2792 // | | SubDelResp | |
2793 // | |<-------------| |
2795 // | | RouteDelete | |
2796 // | |--------------------------->|
2797 // | | RouteResponse| |
2798 // | |<---------------------------|
2800 //-----------------------------------------------------------------------------
2802 func TestDelAllxAppSubsViaDebugIf(t *testing.T) {
2804 // Init counter check
2805 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
2806 Counter{cRestSubReqFromXapp, 1},
2807 Counter{cRestSubRespToXapp, 1},
2808 Counter{cSubReqToE2, 1},
2809 Counter{cSubRespFromE2, 1},
2810 Counter{cRestSubNotifToXapp, 1},
2811 Counter{cRestSubDelReqFromXapp, 1},
2812 Counter{cSubDelReqToE2, 1},
2813 Counter{cSubDelRespFromE2, 1},
2814 Counter{cRestSubDelRespToXapp, 1},
2817 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
2818 restSubId := xappConn1.SendRESTSubsReq(t, params)
2819 xapp.Logger.Debug("Send REST Policy subscriber request for subscriberId : %v", restSubId)
2821 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
2822 xappConn1.ExpectRESTNotification(t, restSubId)
2823 e2termConn1.SendSubsResp(t, crereq1, cremsg1)
2824 e2SubsId := xappConn1.WaitRESTNotification(t, restSubId)
2825 xapp.Logger.Debug("REST notification received e2SubsId=%v", e2SubsId)
2827 xappsJson := mainCtrl.SendGetRequest(t, "localhost:8080", "/ric/v1/get_all_xapps")
2829 var xappList []string
2830 err := json.Unmarshal(xappsJson, &xappList)
2832 t.Errorf("Unmarshal error: %s", err)
2834 assert.Equal(t, true, mainCtrl.VerifyStringExistInSlice("localhost", xappList))
2836 // Simulate deletion through REST test and debug interface
2837 mainCtrl.SendDeleteRequest(t, "localhost:8080", "/ric/v1/delete_all_xapp_subscriptions/localhost") // localhost = xappServiceName
2838 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
2839 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
2841 // Wait that subs is cleaned
2842 waitSubsCleanup(t, e2SubsId, 10)
2843 mainCtrl.VerifyCounterValues(t)
2844 mainCtrl.VerifyAllClean(t)
2847 //-----------------------------------------------------------------------------
2848 // TestDelViaxAppSubsIf
2851 // +-------+ +---------+ +---------+ +---------+
2852 // | xapp | | submgr | | e2term | | rtmgr |
2853 // +-------+ +---------+ +---------+ +---------+
2855 // | RESTSubReq | | |
2856 // |---------------->| | |
2857 // | RESTSubResp | | |
2858 // |<----------------| | |
2859 // | | RouteCreate | |
2860 // | |--------------------------->|
2861 // | | RouteResponse| |
2862 // | |<---------------------------|
2864 // | |------------->| |
2866 // | |<-------------| |
2867 // | RESTNotif1 | | |
2868 // |<----------------| | |
2870 // | REST get_xapp_rest_restsubscriptions |
2871 // |---------------->| | |
2873 // |<----------------| | |
2874 // | RESTSudDel | | |
2875 // |---------------->| | | Via user curl command (port 8088)
2876 // | RESTSudDel | | |
2877 // |<----------------| | |
2878 // | | SubDelReq | |
2879 // | |------------->| |
2880 // | | SubDelResp | |
2881 // | |<-------------| |
2883 // | | RouteDelete | |
2884 // | |--------------------------->|
2885 // | | RouteResponse| |
2886 // | |<---------------------------|
2888 //-----------------------------------------------------------------------------
2890 func TestDelViaxAppSubsIf(t *testing.T) {
2892 // Init counter check
2893 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
2894 Counter{cRestSubReqFromXapp, 1},
2895 Counter{cRestSubRespToXapp, 1},
2896 Counter{cSubReqToE2, 1},
2897 Counter{cSubRespFromE2, 1},
2898 Counter{cRestSubNotifToXapp, 1},
2899 Counter{cRestSubDelReqFromXapp, 1},
2900 Counter{cSubDelReqToE2, 1},
2901 Counter{cSubDelRespFromE2, 1},
2902 Counter{cRestSubDelRespToXapp, 1},
2905 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
2906 restSubId := xappConn1.SendRESTSubsReq(t, params)
2907 xapp.Logger.Debug("Send REST Policy subscriber request for subscriberId : %v", restSubId)
2909 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
2910 xappConn1.ExpectRESTNotification(t, restSubId)
2911 e2termConn1.SendSubsResp(t, crereq1, cremsg1)
2912 e2SubsId := xappConn1.WaitRESTNotification(t, restSubId)
2913 xapp.Logger.Debug("REST notification received e2SubsId=%v", e2SubsId)
2915 restSubsListJson := mainCtrl.SendGetRequest(t, "localhost:8080", "/ric/v1/get_xapp_rest_restsubscriptions/localhost") // localhost = xappServiceName
2917 var restSubsMap map[string]RESTSubscription
2918 err := json.Unmarshal(restSubsListJson, &restSubsMap)
2920 t.Errorf("Unmarshal error: %s", err)
2922 _, ok := restSubsMap[restSubId]
2924 t.Errorf("REST subscription not found. restSubId=%s", restSubId)
2927 var e2Subscriptions []Subscription
2928 e2SubscriptionsJson := mainCtrl.SendGetRequest(t, "localhost:8080", "/ric/v1/get_e2subscriptions/"+restSubId)
2929 err = json.Unmarshal(e2SubscriptionsJson, &e2Subscriptions)
2931 t.Errorf("Unmarshal error: %s", err)
2933 if len(e2Subscriptions) != 1 {
2934 t.Errorf("Incorrect e2Subscriptions length %v", len(e2Subscriptions))
2937 // Simulate deletion through xapp REST test interface
2938 mainCtrl.SendDeleteRequest(t, "localhost:8088", "/ric/v1/subscriptions/"+restSubId)
2939 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
2940 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
2942 // Wait that subs is cleaned
2943 waitSubsCleanup(t, e2SubsId, 10)
2944 mainCtrl.VerifyCounterValues(t)
2945 mainCtrl.VerifyAllClean(t)
2948 //-----------------------------------------------------------------------------
2949 // TestRESTSubReqAndRouteNok
2952 // +-------+ +---------+ +---------+
2953 // | xapp | | submgr | | rtmgr |
2954 // +-------+ +---------+ +---------+
2957 // |---------------->| |
2959 // | RESTSubResp | |
2960 // |<----------------| |
2961 // | | RouteCreate |
2962 // | |------------->|
2963 // | | RouteCreate |
2965 // | |(Bad request) |
2966 // | |<-------------|
2968 // |<----------------| |
2970 // | [SUBS INT DELETE] |
2972 // | RESTSubDelReq | |
2973 // |---------------->| |
2974 // | RESTSubDelResp | |
2975 // |<----------------| |
2977 //-----------------------------------------------------------------------------
2978 func TestRESTSubReqAndRouteNok(t *testing.T) {
2980 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
2981 Counter{cRestSubReqFromXapp, 1},
2982 Counter{cRestSubRespToXapp, 1},
2983 Counter{cRouteCreateFail, 1},
2984 Counter{cRestSubFailNotifToXapp, 1},
2985 Counter{cRestSubDelReqFromXapp, 1},
2986 Counter{cRestSubDelRespToXapp, 1},
2989 const subReqCount int = 1
2991 // Add delay for rtmgt HTTP handling so that HTTP response is received before notify on XAPP side
2992 waiter := rtmgrHttp.AllocNextSleep(50, false)
2993 newSubsId := mainCtrl.get_registry_next_subid(t)
2996 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
2997 restSubId := xappConn1.SendRESTSubsReq(t, params)
2998 xappConn1.ExpectRESTNotificationNok(t, restSubId, "failAll")
2999 waiter.WaitResult(t)
3001 e2SubsId := xappConn1.WaitRESTNotification(t, restSubId)
3002 xapp.Logger.Debug("TEST: REST notification received e2SubsId=%v", e2SubsId)
3005 xappConn1.SendRESTSubsDelReq(t, &restSubId)
3007 // Wait that subs is cleaned
3008 mainCtrl.wait_subs_clean(t, newSubsId, 10)
3009 waitSubsCleanup(t, e2SubsId, 10)
3010 mainCtrl.VerifyCounterValues(t)
3011 mainCtrl.VerifyAllClean(t)
3014 //-----------------------------------------------------------------------------
3015 // TestRESTSubReqAndRouteUpdateNok
3017 // stub stub stub stub
3018 // +-------+ +-------+ +---------+ +---------+ +---------+
3019 // | xapp1 | | xapp2 | | submgr | | rtmgr | | e2term |
3020 // +-------+ +-------+ +---------+ +---------+ +---------+
3022 // | RESTSubReq1 | | |
3023 // |------------------------>| | |
3024 // | RESTSubResp2 | | |
3025 // |<------------------------| | |
3027 // | | | RouteCreate | |
3028 // | | |------------->| |
3029 // | | | CreateResp | |
3030 // | | |<-------------| |
3032 // | | |---------------------------->|
3033 // | | | SubResp | |
3034 // | | |<----------------------------|
3035 // | RESTNotif1 | | |
3036 // |<------------------------| | |
3038 // | | RESTSubReq2 | | |
3039 // | |------------>| | |
3040 // | | RESTSubResp2| | |
3041 // | |<------------| | |
3042 // | | | RouteUpdate | |
3043 // | | |------------->| |
3044 // | | | RouteUpdate | |
3045 // | | | status:400 | |
3046 // | | |(Bad request) | |
3047 // | | |<-------------| |
3048 // | | RESTNotif2(unsuccessful) | |
3049 // | |<------------| | |
3051 // | [SUBS INT DELETE] | |
3053 // | RESTSubDelReq1 | | |
3054 // |------------------------>| | |
3055 // | RESTSubDelResp1 | | |
3056 // |<------------------------| | |
3058 // | | | [SUBS DELETE] |
3060 //-----------------------------------------------------------------------------
3061 func TestRESTSubReqAndRouteUpdateNok(t *testing.T) {
3063 //Init counter check
3064 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
3065 Counter{cRestSubReqFromXapp, 2},
3066 Counter{cRestSubRespToXapp, 2},
3067 Counter{cSubReqToE2, 1},
3068 Counter{cSubRespFromE2, 1},
3069 Counter{cRestSubNotifToXapp, 1},
3070 Counter{cRestSubFailNotifToXapp, 1},
3071 Counter{cRouteCreateUpdateFail, 1},
3072 Counter{cRestSubDelReqFromXapp, 2},
3073 Counter{cSubDelReqToE2, 1},
3074 Counter{cSubDelRespFromE2, 1},
3075 Counter{cRestSubDelRespToXapp, 2},
3078 var params *teststube2ap.RESTSubsReqParams = nil
3080 // Subs create for xapp1
3081 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
3083 queryXappSubscription(t, int64(e2SubsId), "RAN_NAME_1", []string{"localhost:13560"})
3085 // xapp2 ROUTE creation shall fail with 400 from rtmgr -> submgr
3086 waiter := rtmgrHttp.AllocNextEvent(false)
3087 newSubsId := mainCtrl.get_registry_next_subid(t)
3088 params = xappConn2.GetRESTSubsReqReportParams(subReqCount)
3089 params.SetMeid("RAN_NAME_1")
3090 restSubId2 := xappConn2.SendRESTSubsReq(t, params)
3091 xapp.Logger.Debug("Send REST subscriber request for second subscriber : %v", restSubId2)
3092 xappConn2.ExpectRESTNotificationNok(t, restSubId2, "allFail")
3093 waiter.WaitResult(t)
3094 xappConn2.WaitRESTNotification(t, restSubId2)
3096 queryXappSubscription(t, int64(e2SubsId), "RAN_NAME_1", []string{"localhost:13560"})
3098 deleteSubscription(t, xappConn1, e2termConn1, &restSubId)
3099 xappConn2.SendRESTSubsDelReq(t, &restSubId2)
3101 mainCtrl.wait_subs_clean(t, newSubsId, 10)
3102 //Wait that subs is cleaned
3103 waitSubsCleanup(t, e2SubsId, 10)
3105 mainCtrl.VerifyCounterValues(t)
3106 mainCtrl.VerifyAllClean(t)
3109 //-----------------------------------------------------------------------------
3110 // TestRESTSubDelReqAndRouteDeleteNok
3113 // +-------+ +---------+ +---------+ +---------+
3114 // | xapp | | submgr | | rtmgr | | e2term |
3115 // +-------+ +---------+ +---------+ +---------+
3117 // | RESTSubReq | | |
3118 // |---------------->| | |
3120 // | RESTSubResp | | |
3121 // |<----------------| | |
3123 // | |---------------------------->|
3125 // | |<----------------------------|
3126 // | RESTNotif | | |
3127 // |<----------------| | |
3130 // | RESTSubDelReq | | |
3131 // |---------------->| | |
3132 // | RESTSubDelResp | | |
3133 // |<----------------| | |
3134 // | | SubSelReq | |
3135 // | |---------------------------->|
3136 // | | SubSelResp | |
3137 // | |<----------------------------|
3138 // | | RouteDelete | |
3139 // | |------------->| |
3140 // | | Routedelete | |
3141 // | | status:400 | |
3142 // | |(Bad request) | |
3143 // | |<-------------| |
3145 //-----------------------------------------------------------------------------
3147 func TestRESTSubDelReqAndRouteDeleteNok(t *testing.T) {
3149 // Init counter check
3150 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
3151 Counter{cRestSubReqFromXapp, 1},
3152 Counter{cRestSubRespToXapp, 1},
3153 Counter{cSubReqToE2, 1},
3154 Counter{cSubRespFromE2, 1},
3155 Counter{cRestSubNotifToXapp, 1},
3156 Counter{cRestSubDelReqFromXapp, 1},
3157 Counter{cRouteDeleteFail, 1},
3158 Counter{cSubDelReqToE2, 1},
3159 Counter{cSubDelRespFromE2, 1},
3160 Counter{cRestSubDelRespToXapp, 1},
3163 var params *teststube2ap.RESTSubsReqParams = nil
3166 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
3168 queryXappSubscription(t, int64(e2SubsId), "RAN_NAME_1", []string{"localhost:13560"})
3170 waiter := rtmgrHttp.AllocNextEvent(false)
3171 xappConn1.SendRESTSubsDelReq(t, &restSubId)
3172 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
3173 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
3174 waiter.WaitResult(t)
3176 waitSubsCleanup(t, e2SubsId, 10)
3177 mainCtrl.VerifyCounterValues(t)
3178 mainCtrl.VerifyAllClean(t)
3181 //-----------------------------------------------------------------------------
3182 // TestRESTSubMergeDelAndRouteUpdateNok
3184 // stub stub stub stub
3185 // +-------+ +-------+ +---------+ +---------+ +---------+
3186 // | xapp1 | | xapp2 | | submgr | | rtmgr | | e2term |
3187 // +-------+ +-------+ +---------+ +---------+ +---------+
3189 // | RESTSubReq1 | | |
3190 // |------------------------>| | |
3191 // | RESTSubResp2 | | |
3192 // |<------------------------| | |
3194 // | | | RouteCreate | |
3195 // | | |------------->| |
3196 // | | | CreateResp | |
3197 // | | |<-------------| |
3199 // | | |---------------------------->|
3200 // | | | SubResp | |
3201 // | | |<----------------------------|
3202 // | RESTNotif1 | | |
3203 // |<------------------------| | |
3205 // | | RESTSubReq2 | | |
3206 // | |------------>| | |
3207 // | | RESTSubResp2| | |
3208 // | |<------------| | |
3209 // | | | RouteCreate | |
3210 // | | |------------->| |
3211 // | | | CreateResp | |
3212 // | | |<-------------| |
3214 // | | |---------------------------->|
3215 // | | | SubResp | |
3216 // | | |<----------------------------|
3217 // | | RESTNotif2 | | |
3218 // | |<------------| | |
3220 // | [SUBS INT DELETE] | |
3222 // | RESTSubDelReq1 | | |
3223 // |------------------------>| | |
3224 // | RESTSubDelResp1 | | |
3225 // |<------------------------| | |
3226 // | | | SubDelReq | |
3227 // | | |---------------------------->|
3228 // | | | SubDelResp | |
3229 // | | |<----------------------------|
3230 // | | | RouteUpdate | |
3231 // | | |------------->| |
3232 // | | | RouteUpdate | |
3233 // | | | status:400 | |
3234 // | | |(Bad request) | |
3235 // | | |<-------------| |
3237 // | | RESTSubDelReq2 | |
3238 // | |------------>| | |
3239 // | | RESTSubDelResp2 | |
3240 // | |<------------| | |
3241 // | | | SubDelReq | |
3242 // | | |---------------------------->|
3243 // | | | SubdelResp | |
3244 // | | |<----------------------------|
3245 // | | | RouteDelete | |
3246 // | | |------------->| |
3247 // | | | Deleteresp | |
3248 // | | |<-------------| |
3250 //-----------------------------------------------------------------------------
3252 func TestRESTSubMergeDelAndRouteUpdateNok(t *testing.T) {
3254 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
3255 Counter{cRestSubReqFromXapp, 2},
3256 Counter{cMergedSubscriptions, 1},
3257 Counter{cRestSubRespToXapp, 2},
3258 Counter{cSubReqToE2, 1},
3259 Counter{cSubRespFromE2, 1},
3260 Counter{cRestSubNotifToXapp, 2},
3261 Counter{cRestSubDelReqFromXapp, 2},
3262 Counter{cRouteDeleteUpdateFail, 1},
3263 Counter{cSubDelReqToE2, 1},
3264 Counter{cSubDelRespFromE2, 1},
3265 Counter{cRestSubDelRespToXapp, 2},
3266 Counter{cUnmergedSubscriptions, 1},
3269 var params *teststube2ap.RESTSubsReqParams = nil
3272 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
3274 queryXappSubscription(t, int64(e2SubsId), "RAN_NAME_1", []string{"localhost:13560"})
3275 restSubId2, e2SubsId2 := createXapp2MergedSubscription(t, "RAN_NAME_1")
3277 queryXappSubscription(t, int64(e2SubsId), "RAN_NAME_1", []string{"localhost:13560", "localhost:13660"})
3279 //Del1, this shall fail on rtmgr side
3280 waiter := rtmgrHttp.AllocNextEvent(false)
3281 xappConn1.SendRESTSubsDelReq(t, &restSubId)
3282 waiter.WaitResult(t)
3284 queryXappSubscription(t, int64(e2SubsId), "RAN_NAME_1", []string{"localhost:13660"})
3287 deleteXapp2Subscription(t, &restSubId2)
3289 waitSubsCleanup(t, e2SubsId2, 10)
3290 mainCtrl.VerifyCounterValues(t)
3291 mainCtrl.VerifyAllClean(t)
3294 //-----------------------------------------------------------------------------
3295 // TestRESTSubReqRetransmission
3298 // +-------+ +---------+ +---------+
3299 // | xapp | | submgr | | e2term |
3300 // +-------+ +---------+ +---------+
3302 // | RESTSubReq1 | |
3303 // |---------------->| |
3305 // | RESTSubResp | |
3306 // |<----------------| |
3308 // | |------------->|
3310 // | RESTSubReq2 | |
3312 // |---------------->| |
3313 // | RESTSubResp(201)| |
3314 // |<----------------| |
3317 // | |<-------------|
3319 // |<----------------| |
3321 // | [SUBS DELETE] |
3324 //-----------------------------------------------------------------------------
3326 func TestRESTSubReqRetransmission(t *testing.T) {
3328 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
3329 Counter{cRestSubReqFromXapp, 2},
3330 Counter{cRestSubRespToXapp, 2},
3331 Counter{cSubReqToE2, 1},
3332 Counter{cSubRespFromE2, 1},
3333 Counter{cRestSubNotifToXapp, 1},
3334 Counter{cRestSubDelReqFromXapp, 1},
3335 Counter{cSubDelReqToE2, 1},
3336 Counter{cSubDelRespFromE2, 1},
3337 Counter{cRestSubDelRespToXapp, 1},
3339 // Retry/duplicate will get the same way as the first request.
3340 // Contianed duplicate messages from same xapp will not be merged. Here we use xappConn2 to simulate sending
3341 // second request from same xapp as doing it from xappConn1 would not work as notification would not be received
3344 const subReqCount int = 1
3346 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
3347 restSubId := xappConn1.SendRESTSubsReq(t, params)
3349 xappConn1.SendRESTSubsReq(t, params)
3350 <-time.After(time.Second * 1)
3352 xappConn1.WaitListedRestNotifications(t, []string{restSubId})
3354 // Depending one goroutine scheduling order, we cannot say for sure which xapp reaches e2term first. Thus
3355 // the order is not significant here.
3356 crereq, cremsg := e2termConn1.RecvSubsReq(t)
3357 e2termConn1.SendSubsResp(t, crereq, cremsg)
3359 e2SubsId := <-xappConn1.ListedRESTNotifications
3361 xapp.Logger.Debug("TEST: XAPP notification received e2SubsId=%v", e2SubsId)
3364 xappConn1.SendRESTSubsDelReq(t, &restSubId)
3365 delreq1, delmsg1 := e2termConn1.RecvSubsDelReq(t)
3366 e2termConn1.SendSubsDelResp(t, delreq1, delmsg1)
3368 mainCtrl.wait_multi_subs_clean(t, []uint32{e2SubsId.E2SubsId}, 10)
3370 mainCtrl.VerifyCounterValues(t)
3371 mainCtrl.VerifyAllClean(t)
3374 //-----------------------------------------------------------------------------
3376 // +-------+ +---------+ +---------+ +---------+
3377 // | xapp | | submgr | | e2term | | rtmgr |
3378 // +-------+ +---------+ +---------+ +---------+
3380 // | RESTSubReq | | |
3381 // |---------------->| | |
3382 // | RESTSubResp | | |
3383 // |<----------------| | |
3384 // | | RouteCreate | |
3385 // | |--------------------------->|
3386 // | | RouteResponse| |
3387 // | |<---------------------------| // The order of these events may vary
3389 // | |------------->| | // The order of these events may vary
3391 // | |<-------------| |
3392 // | RESTNotif1 | | |
3393 // |<----------------| | |
3394 // | RESTSubReq | | |
3395 // | [RETRANS1] | | |
3396 // |---------------->| | |
3397 // | RESTNotif1 | | |
3398 // |<----------------| | |
3399 // | RESTSubReq | | |
3400 // | [RETRANS2] | | |
3401 // |---------------->| | |
3402 // | RESTNotif1 | | |
3403 // |<----------------| | |
3404 // | RESTSubDelReq | | |
3405 // |---------------->| | |
3406 // | | SubDelReq | |
3407 // | |------------->| |
3408 // | RESTSubDelResp| | |
3409 // |<----------------| | |
3410 // | | SubDelResp | |
3411 // | |<-------------| |
3414 //-----------------------------------------------------------------------------
3416 func TestRESTSubReqRetransmissionV2(t *testing.T) {
3418 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
3419 Counter{cRestSubReqFromXapp, 3},
3420 Counter{cDuplicateE2SubReq, 2},
3421 Counter{cRestSubRespToXapp, 3},
3422 Counter{cSubReqToE2, 1},
3423 Counter{cSubRespFromE2, 1},
3424 Counter{cRestSubNotifToXapp, 3},
3425 Counter{cRestSubDelReqFromXapp, 1},
3426 Counter{cSubDelReqToE2, 1},
3427 Counter{cSubDelRespFromE2, 1},
3428 Counter{cRestSubDelRespToXapp, 1},
3431 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
3433 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
3435 queryXappSubscription(t, int64(e2SubsId), "RAN_NAME_1", []string{"localhost:13560"})
3437 mainCtrl.WaitOngoingRequestMapEmpty()
3440 restSubId_resend := xappConn1.SendRESTSubsReq(t, params)
3442 assert.Equal(t, restSubId_resend, restSubId)
3444 mainCtrl.WaitOngoingRequestMapEmpty()
3447 restSubId_resend2 := xappConn1.SendRESTSubsReq(t, params)
3449 assert.Equal(t, restSubId_resend2, restSubId)
3451 mainCtrl.WaitOngoingRequestMapEmpty()
3453 deleteSubscription(t, xappConn1, e2termConn1, &restSubId)
3455 waitSubsCleanup(t, e2SubsId, 10)
3456 mainCtrl.VerifyCounterValues(t)
3457 mainCtrl.VerifyAllClean(t)
3460 //-----------------------------------------------------------------------------
3462 // +-------+ +---------+ +---------+ +---------+
3463 // | xapp | | submgr | | e2term | | rtmgr |
3464 // +-------+ +---------+ +---------+ +---------+
3466 // | RESTSubReq | | |
3467 // |---------------->| | |
3468 // | RESTSubResp | | |
3469 // |<----------------| | |
3470 // | | RouteCreate | |
3471 // | |--------------------------->|
3472 // | | RouteResponse| |
3473 // | |<---------------------------| // The order of these events may vary
3475 // | |------------->| | // The order of these events may vary
3477 // | |<-------------| |
3478 // | RESTNotif1 | | |
3479 // |<----------------| | |
3480 // | RESTSubReq | | |
3481 // | [RETRANS, with RESTsubsId] | |
3482 // |---------------->| | |
3483 // | RESTNotif1 | | |
3484 // |<----------------| | |
3485 // | RESTSubReq | | |
3486 // | [RETRANS, without RESTsubsId] | |
3487 // |---------------->| | |
3488 // | RESTNotif1 | | |
3489 // |<----------------| | |
3490 // | RESTSubDelReq | | |
3491 // |---------------->| | |
3492 // | | SubDelReq | |
3493 // | |------------->| |
3494 // | RESTSubDelResp| | |
3495 // |<----------------| | |
3496 // | | SubDelResp | |
3497 // | |<-------------| |
3500 //-----------------------------------------------------------------------------
3501 func TestRESTSubReqRetransmissionV3(t *testing.T) {
3503 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
3504 Counter{cRestSubReqFromXapp, 3},
3505 Counter{cDuplicateE2SubReq, 2},
3506 Counter{cRestSubRespToXapp, 3},
3507 Counter{cSubReqToE2, 1},
3508 Counter{cSubRespFromE2, 1},
3509 Counter{cRestSubNotifToXapp, 3},
3510 Counter{cRestSubDelReqFromXapp, 1},
3511 Counter{cSubDelReqToE2, 1},
3512 Counter{cSubDelRespFromE2, 1},
3513 Counter{cRestSubDelRespToXapp, 1},
3516 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
3518 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
3520 queryXappSubscription(t, int64(e2SubsId), "RAN_NAME_1", []string{"localhost:13560"})
3522 mainCtrl.WaitOngoingRequestMapEmpty()
3524 //1.st resend with subscription ID
3525 params.SetSubscriptionID(&restSubId)
3526 restSubId_resend := xappConn1.SendRESTSubsReq(t, params)
3528 assert.Equal(t, restSubId_resend, restSubId)
3530 mainCtrl.WaitOngoingRequestMapEmpty()
3532 //2.nd resend without subscription ID (faking app restart)
3533 params = xappConn1.GetRESTSubsReqReportParams(subReqCount)
3534 restSubId_resend2 := xappConn1.SendRESTSubsReq(t, params)
3536 assert.Equal(t, restSubId_resend2, restSubId)
3538 mainCtrl.WaitOngoingRequestMapEmpty()
3540 deleteSubscription(t, xappConn1, e2termConn1, &restSubId)
3542 waitSubsCleanup(t, e2SubsId, 10)
3543 mainCtrl.VerifyCounterValues(t)
3544 mainCtrl.VerifyAllClean(t)
3547 //-----------------------------------------------------------------------------
3549 // +-------+ +---------+ +---------+ +---------+
3550 // | xapp | | submgr | | e2term | | rtmgr |
3551 // +-------+ +---------+ +---------+ +---------+
3553 // | RESTSubReq | | |
3554 // |---------------->| | |
3555 // | RESTSubResp | | |
3556 // |<----------------| | |
3557 // | | RouteCreate | |
3558 // | |--------------------------->|
3559 // | | RouteResponse| |
3560 // | |<---------------------------|
3562 // | |------------->| |
3564 // | |<-------------| |
3565 // | RESTNotif1 | | |
3566 // |<----------------| | |
3567 // | RESTSubReq | | |
3568 // | [with RestSUbsId + one additional e2 subDetail]
3569 // |---------------->| | |
3570 // | RESTNotif1 | | |
3571 // | [for initial e2 subDetail] | |
3572 // |<----------------| | |
3573 // | | RouteCreate | |
3574 // | |--------------------------->|
3575 // | | RouteResponse| |
3576 // | |<---------------------------|
3578 // | |------------->| |
3580 // | |<-------------| |
3581 // | RESTNotif1 | | |
3582 // |<----------------| | |
3583 // | RESTSubReq | | |
3584 // | [with RESTsubsId initial request] |
3585 // |---------------->| | |
3586 // | RESTNotif1 | | |
3587 // |<----------------| | |
3588 // | RESTSubDelReq | | |
3589 // |---------------->| | |
3590 // | RESTSubDelResp| | |
3591 // |<----------------| | |
3592 // | | SubDelReq | |
3593 // | |------------->| |
3594 // | | SubDelResp | |
3595 // | |<-------------| |
3596 // | | SubDelReq | |
3597 // | |------------->| |
3598 // | | SubDelResp | |
3599 // | |<-------------| |
3602 //-----------------------------------------------------------------------------
3604 func TestRESTSubReqRetransmissionV4(t *testing.T) {
3606 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
3607 Counter{cRestSubReqFromXapp, 3},
3608 Counter{cDuplicateE2SubReq, 2},
3609 Counter{cRestSubRespToXapp, 3},
3610 Counter{cSubReqToE2, 2},
3611 Counter{cSubRespFromE2, 2},
3612 Counter{cRestSubNotifToXapp, 4},
3613 Counter{cRestSubDelReqFromXapp, 1},
3614 Counter{cSubDelReqToE2, 2},
3615 Counter{cSubDelRespFromE2, 2},
3616 Counter{cRestSubDelRespToXapp, 1},
3619 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
3621 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
3623 mainCtrl.WaitOngoingRequestMapEmpty()
3625 // Send modified requst, this time with e2 subscriptions.
3626 params2 := xappConn1.GetRESTSubsReqReportParams(subReqCount + 1)
3627 params2.SetSubscriptionID(&restSubId)
3629 xapp.Subscription.SetResponseCB(xappConn1.SubscriptionRespHandler)
3630 xappConn1.ExpectAnyNotification(t)
3631 // Resend the original request with an additional e2 subscription (detail), this time with restsubsid
3632 restSubId_resend := xappConn1.SendRESTSubsReq(t, params2)
3633 e2SubsId1 := xappConn1.WaitAnyRESTNotification(t)
3634 assert.Equal(t, e2SubsId, e2SubsId1)
3636 crereq2, cremsg2 := e2termConn1.RecvSubsReq(t)
3638 xappConn1.DecrementRequestCount()
3639 xappConn1.ExpectRESTNotification(t, restSubId_resend)
3640 e2termConn1.SendSubsResp(t, crereq2, cremsg2)
3641 e2SubsId2 := xappConn1.WaitRESTNotification(t, restSubId_resend)
3642 assert.NotEqual(t, e2SubsId2, 0)
3644 mainCtrl.WaitOngoingRequestMapEmpty()
3646 xapp.Subscription.SetResponseCB(xappConn1.SubscriptionRespHandler)
3647 params = xappConn1.GetRESTSubsReqReportParams(subReqCount)
3648 params.SetSubscriptionID(&restSubId)
3649 xappConn1.ExpectAnyNotification(t)
3650 // Resend the original request again with only one e2 subscription (detail), this time with restsubsid
3651 restSubId_resend2 := xappConn1.SendRESTSubsReq(t, params)
3652 assert.Equal(t, restSubId_resend, restSubId_resend2)
3654 e2SubsId1 = xappConn1.WaitAnyRESTNotification(t)
3655 assert.Equal(t, e2SubsId, e2SubsId1)
3657 mainCtrl.WaitOngoingRequestMapEmpty()
3659 // Delete both e2 subscriptions
3660 xappConn1.SendRESTSubsDelReq(t, &restSubId)
3661 e2SubsIds := []uint32{e2SubsId, e2SubsId2}
3662 sendAndReceiveMultipleE2DelReqs(t, e2SubsIds, e2termConn1)
3664 waitSubsCleanup(t, e2SubsId, 10)
3665 mainCtrl.VerifyCounterValues(t)
3666 mainCtrl.VerifyAllClean(t)
3669 //-----------------------------------------------------------------------------
3671 // +-------+ +---------+ +---------+ +---------+
3672 // | xapp | | submgr | | e2term | | rtmgr |
3673 // +-------+ +---------+ +---------+ +---------+
3675 // | RESTSubReq | | |
3676 // |---------------->| | |
3677 // | RESTSubResp | | |
3678 // |<----------------| | |
3679 // | | RouteCreate | |
3680 // | |--------------------------->|
3681 // | | RouteResponse| |
3682 // | |<---------------------------|
3684 // | |------------->| |
3686 // | |<-------------| |
3687 // | RESTNotif1 | | |
3688 // |<----------------| | |
3689 // | RESTSubReq | | |
3690 // | [with RestSUbsId + one additional e2 subDetail]
3691 // |---------------->| | |
3692 // | RESTNotif1 | | |
3693 // | [for initial e2 subDetail] | |
3694 // |<----------------| | |
3695 // | | RouteCreate | |
3696 // | |--------------------------->|
3697 // | | RouteResponse| |
3698 // | |<---------------------------|
3700 // | |------------->| |
3702 // | |<-------------| |
3703 // | RESTNotif1 | | |
3704 // |<----------------| | |
3705 // | RESTSubReq | | |
3706 // | [without RESTsubsId initial request] |
3707 // |---------------->| | |
3708 // | RESTNotif1 | | |
3709 // |<----------------| | |
3710 // | RESTSubDelReq | | |
3711 // |---------------->| | |
3712 // | RESTSubDelResp| | |
3713 // |<----------------| | |
3714 // | | SubDelReq | |
3715 // | |------------->| |
3716 // | | SubDelResp | |
3717 // | |<-------------| |
3718 // | | SubDelReq | |
3719 // | |------------->| |
3720 // | | SubDelResp | |
3721 // | |<-------------| |
3724 //-----------------------------------------------------------------------------
3726 func TestRESTSubReqRetransmissionV5(t *testing.T) {
3728 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
3729 Counter{cRestSubReqFromXapp, 3},
3730 Counter{cDuplicateE2SubReq, 2},
3731 Counter{cRestSubRespToXapp, 3},
3732 Counter{cSubReqToE2, 2},
3733 Counter{cSubRespFromE2, 2},
3734 Counter{cRestSubNotifToXapp, 4},
3735 Counter{cRestSubDelReqFromXapp, 1},
3736 Counter{cSubDelReqToE2, 2},
3737 Counter{cSubDelRespFromE2, 2},
3738 Counter{cRestSubDelRespToXapp, 1},
3741 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
3743 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
3745 mainCtrl.WaitOngoingRequestMapEmpty()
3747 // Send modified request, this time with e2 subscriptions.
3748 params2 := xappConn1.GetRESTSubsReqReportParams(subReqCount + 1)
3749 params2.SetSubscriptionID(&restSubId)
3751 xapp.Subscription.SetResponseCB(xappConn1.SubscriptionRespHandler)
3752 xappConn1.ExpectAnyNotification(t)
3753 // Resend the original request with an additional e2 subscription (detail), this time with restsubsid
3754 restSubId_resend := xappConn1.SendRESTSubsReq(t, params2)
3756 e2SubsId1 := xappConn1.WaitAnyRESTNotification(t)
3757 assert.Equal(t, e2SubsId, e2SubsId1)
3758 // The first E2 subscription returns immediately, manually decrement expected request count for the remaining request handling
3759 xappConn1.DecrementRequestCount()
3761 crereq2, cremsg2 := e2termConn1.RecvSubsReq(t)
3763 xappConn1.ExpectRESTNotification(t, restSubId_resend)
3764 e2termConn1.SendSubsResp(t, crereq2, cremsg2)
3765 e2SubsId2 := xappConn1.WaitRESTNotification(t, restSubId_resend)
3766 assert.NotEqual(t, e2SubsId2, 0)
3768 mainCtrl.WaitOngoingRequestMapEmpty()
3770 xapp.Subscription.SetResponseCB(xappConn1.SubscriptionRespHandler)
3771 params = xappConn1.GetRESTSubsReqReportParams(subReqCount)
3772 xappConn1.ExpectAnyNotification(t)
3773 // Resend the original request again with only one e2 subscription (detail), WITHOUT restsubsid
3774 // md5sum shall find the original request
3775 restSubId_resend2 := xappConn1.SendRESTSubsReq(t, params)
3776 assert.Equal(t, restSubId_resend, restSubId_resend2)
3778 e2SubsId1 = xappConn1.WaitAnyRESTNotification(t)
3779 assert.Equal(t, e2SubsId, e2SubsId1)
3781 mainCtrl.WaitOngoingRequestMapEmpty()
3783 // Delete both e2 subscriptions
3784 xappConn1.SendRESTSubsDelReq(t, &restSubId)
3785 e2SubsIds := []uint32{e2SubsId, e2SubsId2}
3786 sendAndReceiveMultipleE2DelReqs(t, e2SubsIds, e2termConn1)
3788 waitSubsCleanup(t, e2SubsId, 10)
3789 mainCtrl.VerifyCounterValues(t)
3790 mainCtrl.VerifyAllClean(t)
3793 //-----------------------------------------------------------------------------
3795 // +-------+ +---------+ +---------+ +---------+
3796 // | xapp | | submgr | | e2term | | rtmgr |
3797 // +-------+ +---------+ +---------+ +---------+
3799 // | RESTSubReq | | |
3800 // |---------------->| | |
3801 // | RESTSubResp | | |
3802 // |<----------------| | |
3803 // | | RouteCreate | |
3804 // | |--------------------------->|
3805 // | | RouteResponse| |
3806 // | |<---------------------------|
3808 // | |------------->| |
3810 // | |<-------------| |
3811 // | RESTNotif1 | | |
3812 // |<----------------| | |
3813 // | RESTSubReq | | |
3814 // | [with RestSUbsId + one additional e2 subDetail]
3815 // |---------------->| | |
3816 // | RESTNotif1 | | |
3817 // | [for initial e2 subDetail] | |
3818 // |<----------------| | |
3819 // | | RouteCreate | |
3820 // | |--------------------------->|
3821 // | | RouteResponse| |
3822 // | |<---------------------------|
3824 // | |------------->| |
3826 // | |<-------------| |
3827 // | RESTNotif1 | | |
3828 // |<----------------| | |
3829 // | RESTSubDelReq | | |
3830 // |---------------->| | |
3831 // | RESTSubDelResp| | |
3832 // |<----------------| | |
3833 // | | SubDelReq | |
3834 // | |------------->| |
3835 // | | SubDelResp | |
3836 // | |<-------------| |
3837 // | | SubDelReq | |
3838 // | |------------->| |
3839 // | | SubDelResp | |
3840 // | |<-------------| |
3841 // | RESTSubReq | | |
3842 // | [with RESTsubsId initial request] |
3843 // |---------------->| | |
3844 // | RESTSubResp | | |
3845 // |<----------------| | |
3846 // | | RouteCreate | |
3847 // | |--------------------------->|
3848 // | | RouteResponse| |
3849 // | |<---------------------------|
3851 // | |------------->| |
3853 // | |<-------------| |
3854 // | RESTNotif1 | | |
3855 // |<----------------| | |
3858 //-----------------------------------------------------------------------------
3859 func TestRESTSubReqRetransmissionV6(t *testing.T) {
3861 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
3862 Counter{cRestSubReqFromXapp, 3},
3863 Counter{cDuplicateE2SubReq, 1},
3864 Counter{cRestSubRespToXapp, 3},
3865 Counter{cSubReqToE2, 3},
3866 Counter{cSubRespFromE2, 3},
3867 Counter{cRestSubNotifToXapp, 4},
3868 Counter{cRestSubDelReqFromXapp, 2},
3869 Counter{cSubDelReqToE2, 3},
3870 Counter{cSubDelRespFromE2, 3},
3871 Counter{cRestSubDelRespToXapp, 2},
3874 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
3876 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
3878 mainCtrl.WaitOngoingRequestMapEmpty()
3880 // Send modified requst, this time with e2 subscriptions.
3881 params2 := xappConn1.GetRESTSubsReqReportParams(subReqCount + 1)
3882 params2.SetSubscriptionID(&restSubId)
3884 xapp.Subscription.SetResponseCB(xappConn1.SubscriptionRespHandler)
3885 xappConn1.ExpectAnyNotification(t)
3886 // Resend the original request with an additional e2 subscription (detail), this time with restsubsid
3887 restSubId_resend := xappConn1.SendRESTSubsReq(t, params2)
3889 e2SubsId1 := xappConn1.WaitAnyRESTNotification(t)
3890 assert.Equal(t, e2SubsId, e2SubsId1)
3892 crereq2, cremsg2 := e2termConn1.RecvSubsReq(t)
3894 xappConn1.ExpectRESTNotification(t, restSubId_resend)
3895 e2termConn1.SendSubsResp(t, crereq2, cremsg2)
3896 e2SubsId2 := xappConn1.WaitRESTNotification(t, restSubId_resend)
3897 assert.NotEqual(t, e2SubsId2, 0)
3899 mainCtrl.WaitOngoingRequestMapEmpty()
3901 // Delete both e2 subscriptions
3902 xappConn1.SendRESTSubsDelReq(t, &restSubId)
3903 e2SubsIds := []uint32{e2SubsId, e2SubsId2}
3904 sendAndReceiveMultipleE2DelReqs(t, e2SubsIds, e2termConn1)
3906 waitSubsCleanup(t, e2SubsId, 10)
3908 // Resend the original request, we shall find it's previous md5sum/restsubs
3909 // but the restsubscription has been already removed. This shall trigger a
3911 restSubId, e2SubsId = createSubscription(t, xappConn1, e2termConn1, params)
3913 mainCtrl.WaitOngoingRequestMapEmpty()
3915 deleteSubscription(t, xappConn1, e2termConn1, &restSubId)
3917 waitSubsCleanup(t, e2SubsId, 10)
3918 mainCtrl.VerifyCounterValues(t)
3919 mainCtrl.VerifyAllClean(t)
3922 //-----------------------------------------------------------------------------
3923 // TestRESTSubDelReqRetransmission
3926 // +-------+ +---------+ +---------+
3927 // | xapp | | submgr | | e2term |
3928 // +-------+ +---------+ +---------+
3931 // |---------------->| |
3933 // | RESTSubResp | |
3934 // |<----------------| |
3936 // | |------------->|
3938 // | |<-------------|
3940 // |<----------------| |
3942 // | RESTSubDelReq | |
3943 // |---------------->| |
3944 // | RESTSubDelResp | |
3945 // |<----------------| |
3947 // | |------------->|
3948 // | RESTSubDelReq | |
3949 // |---------------->| |
3950 // | RESTSubDelResp | |
3951 // |<----------------| |
3953 // | |<-------------|
3956 //-----------------------------------------------------------------------------
3958 func TestRESTSubDelReqRetransmission(t *testing.T) {
3960 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
3961 Counter{cRestSubReqFromXapp, 1},
3962 Counter{cRestSubRespToXapp, 1},
3963 Counter{cSubReqToE2, 1},
3964 Counter{cSubRespFromE2, 1},
3965 Counter{cRestSubNotifToXapp, 1},
3966 Counter{cRestSubDelReqFromXapp, 2},
3967 Counter{cSubDelReqToE2, 1},
3968 Counter{cSubDelRespFromE2, 1},
3969 Counter{cRestSubDelRespToXapp, 2},
3972 var params *teststube2ap.RESTSubsReqParams = nil
3975 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
3977 queryXappSubscription(t, int64(e2SubsId), "RAN_NAME_1", []string{"localhost:13560"})
3980 xappConn1.SendRESTSubsDelReq(t, &restSubId)
3981 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
3984 seqBef := mainCtrl.get_msgcounter(t)
3985 xappConn1.SendRESTSubsDelReq(t, &restSubId)
3986 mainCtrl.wait_msgcounter_change(t, seqBef, 10)
3989 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
3991 waitSubsCleanup(t, e2SubsId, 10)
3992 mainCtrl.VerifyCounterValues(t)
3993 mainCtrl.VerifyAllClean(t)
3996 //-----------------------------------------------------------------------------
3997 // TestRESTSubReqDelReq
4000 // +-------+ +---------+ +---------+
4001 // | xapp | | submgr | | e2term |
4002 // +-------+ +---------+ +---------+
4005 // |---------------->| |
4007 // | RESTSubResp | |
4008 // |<----------------| |
4010 // | |------------->|
4011 // | RESTSubDelReq | |
4012 // |---------------->| |
4013 // | RESTSubDelResp | |
4015 // |<----------------| |
4017 // | |<-------------|
4019 // |<----------------| |
4021 // | [SUBS DELETE] |
4024 //-----------------------------------------------------------------------------
4025 func TestRESTSubReqDelReq(t *testing.T) {
4027 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
4028 Counter{cRestSubReqFromXapp, 1},
4029 Counter{cRestSubRespToXapp, 1},
4030 Counter{cSubReqToE2, 1},
4031 Counter{cSubRespFromE2, 1},
4032 Counter{cRestSubNotifToXapp, 1},
4033 Counter{cRestSubDelReqFromXapp, 2},
4034 Counter{cRestSubDelFailToXapp, 1},
4035 Counter{cSubDelReqToE2, 1},
4036 Counter{cSubDelRespFromE2, 1},
4037 Counter{cRestSubDelRespToXapp, 1},
4040 const subReqCount int = 1
4043 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
4044 restSubId := xappConn1.SendRESTSubsReq(t, params)
4046 // Del. This will fail as processing of the subscription
4047 // is still ongoing in submgr. Deletion is not allowed before
4048 // subscription creation has been completed.
4049 xappConn1.SendRESTSubsDelReq(t, &restSubId)
4050 crereq, cremsg := e2termConn1.RecvSubsReq(t)
4051 xappConn1.ExpectRESTNotification(t, restSubId)
4052 e2termConn1.SendSubsResp(t, crereq, cremsg)
4053 e2SubsId := xappConn1.WaitRESTNotification(t, restSubId)
4056 xappConn1.SendRESTSubsDelReq(t, &restSubId)
4058 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
4059 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
4061 // Wait that subs is cleaned
4062 waitSubsCleanup(t, e2SubsId, 10)
4063 mainCtrl.VerifyCounterValues(t)
4064 mainCtrl.VerifyAllClean(t)
4067 //-----------------------------------------------------------------------------
4068 // TestRESTSubReqAndSubDelOkTwoParallel
4071 // +-------+ +-------+ +---------+ +---------+
4072 // | xapp2 | | xapp1 | | submgr | | e2term |
4073 // +-------+ +-------+ +---------+ +---------+
4075 // | | RESTSubReq1 | |
4076 // | |------------->| |
4077 // | | RESTSubResp1 | |
4078 // | |<-------------| |
4081 // | | |------------->|
4083 // | RESTSubReq2 | |
4084 // |------------------------>| |
4085 // | RESTSubResp2 | |
4086 // |<------------------------| |
4089 // | | |------------->|
4092 // | | |<-------------|
4093 // | | RESTNotif1 | |
4094 // | |<-------------| |
4097 // | | |<-------------|
4099 // |<------------------------| |
4101 // | | [SUBS 1 DELETE] |
4103 // | | [SUBS 2 DELETE] |
4106 //-----------------------------------------------------------------------------
4108 func TestRESTSubReqAndSubDelOkTwoParallel(t *testing.T) {
4110 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
4111 Counter{cRestSubReqFromXapp, 2},
4112 Counter{cRestSubRespToXapp, 2},
4113 Counter{cSubReqToE2, 2},
4114 Counter{cSubRespFromE2, 2},
4115 Counter{cRestSubNotifToXapp, 2},
4116 Counter{cRestSubDelReqFromXapp, 2},
4117 Counter{cSubDelReqToE2, 2},
4118 Counter{cSubDelRespFromE2, 2},
4119 Counter{cRestSubDelRespToXapp, 2},
4123 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
4124 restSubId1 := xappConn1.SendRESTSubsReq(t, params)
4125 xapp.Logger.Debug("Send 1st REST subscriber request for subscriberId : %v", restSubId1)
4128 params = xappConn2.GetRESTSubsReqReportParams(subReqCount)
4129 restSubId2 := xappConn2.SendRESTSubsReq(t, params)
4130 xapp.Logger.Debug("Send 2nd REST subscriber request for subscriberId : %v", restSubId2)
4132 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
4133 crereq2, cremsg2 := e2termConn1.RecvSubsReq(t)
4135 //XappConn1 receives both of the responses
4136 xappConn1.WaitListedRestNotifications(t, []string{restSubId1, restSubId2})
4139 e2termConn1.SendSubsResp(t, crereq1, cremsg1)
4141 e2termConn1.SendSubsResp(t, crereq2, cremsg2)
4143 e2SubsIdA := <-xappConn1.ListedRESTNotifications
4144 xapp.Logger.Debug("TEST: 1.st XAPP notification received e2SubsId=%v", e2SubsIdA)
4145 e2SubsIdB := <-xappConn1.ListedRESTNotifications
4146 xapp.Logger.Debug("TEST: 2.nd XAPP notification received e2SubsId=%v", e2SubsIdB)
4149 deleteSubscription(t, xappConn1, e2termConn1, &restSubId1)
4151 deleteSubscription(t, xappConn2, e2termConn1, &restSubId2)
4153 //Wait that subs is cleaned
4154 mainCtrl.wait_subs_clean(t, e2SubsIdA.E2SubsId, 10)
4155 waitSubsCleanup(t, e2SubsIdB.E2SubsId, 10)
4157 mainCtrl.VerifyCounterValues(t)
4158 mainCtrl.VerifyAllClean(t)
4161 //-----------------------------------------------------------------------------
4162 // TestRESTSameSubsDiffRan
4163 // Same subscription to different RANs
4166 // +-------+ +---------+ +---------+
4167 // | xapp | | submgr | | e2term |
4168 // +-------+ +---------+ +---------+
4170 // | RESTSubReq(r1) | |
4171 // |---------------->| |
4172 // | RESTSubResp(r1) | |
4173 // |<----------------| |
4176 // | |------------->|
4178 // | | SubResp(r1) |
4179 // | |<-------------|
4181 // | RESTNotif(r1) | |
4182 // |<----------------| |
4184 // | RESTSubReq(r2) | |
4185 // |---------------->| |
4187 // | RESTSubResp(r2) | |
4188 // |<----------------| |
4190 // | |------------->|
4192 // | | SubResp(r2) |
4193 // | |<-------------|
4195 // | RESTNotif(r2) | |
4196 // |<----------------| |
4198 // | [SUBS r1 DELETE] |
4200 // | [SUBS r2 DELETE] |
4203 //-----------------------------------------------------------------------------
4205 func TestRESTSameSubsDiffRan(t *testing.T) {
4207 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
4208 Counter{cRestSubReqFromXapp, 2},
4209 Counter{cRestSubRespToXapp, 2},
4210 Counter{cSubReqToE2, 2},
4211 Counter{cSubRespFromE2, 2},
4212 Counter{cRestSubNotifToXapp, 2},
4213 Counter{cRestSubDelReqFromXapp, 2},
4214 Counter{cSubDelReqToE2, 2},
4215 Counter{cSubDelRespFromE2, 2},
4216 Counter{cRestSubDelRespToXapp, 2},
4219 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
4220 restSubId1, e2SubsId1 := createSubscription(t, xappConn1, e2termConn1, params)
4221 xapp.Logger.Debug("Send 1st REST subscriber request for subscriberId : %v", restSubId1)
4223 params = xappConn1.GetRESTSubsReqReportParams(subReqCount)
4224 params.SetMeid("RAN_NAME_2")
4225 restSubId2, e2SubsId2 := createSubscription(t, xappConn1, e2termConn1, params)
4226 xapp.Logger.Debug("Send 2nd REST subscriber request for subscriberId : %v", restSubId2)
4229 deleteSubscription(t, xappConn1, e2termConn1, &restSubId1)
4231 deleteSubscription(t, xappConn1, e2termConn1, &restSubId2)
4233 //Wait that subs is cleaned
4234 mainCtrl.wait_subs_clean(t, e2SubsId1, 10)
4235 waitSubsCleanup(t, e2SubsId2, 10)
4237 mainCtrl.VerifyCounterValues(t)
4238 mainCtrl.VerifyAllClean(t)
4241 //-----------------------------------------------------------------------------
4242 // TestRESTSubReqRetryInSubmgr
4245 // +-------+ +---------+ +---------+
4246 // | xapp | | submgr | | e2term |
4247 // +-------+ +---------+ +---------+
4250 // |---------------->| |
4251 // | RESTSubResp | |
4252 // |<----------------| |
4254 // | |------------->|
4258 // | |------------->|
4260 // | |<-------------|
4263 // |<----------------| |
4265 // | [SUBS DELETE] |
4268 //-----------------------------------------------------------------------------
4270 func TestRESTSubReqRetryInSubmgr(t *testing.T) {
4272 // Init counter check
4273 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
4274 Counter{cRestSubReqFromXapp, 1},
4275 Counter{cRestSubRespToXapp, 1},
4276 Counter{cSubReqToE2, 1},
4277 Counter{cSubReqTimerExpiry, 1},
4278 Counter{cSubReReqToE2, 1},
4279 Counter{cSubRespFromE2, 1},
4280 Counter{cRestSubNotifToXapp, 1},
4281 Counter{cRestSubDelReqFromXapp, 1},
4282 Counter{cSubDelReqToE2, 1},
4283 Counter{cSubDelRespFromE2, 1},
4284 Counter{cRestSubDelRespToXapp, 1},
4287 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
4288 restSubId := xappConn1.SendRESTSubsReq(t, params)
4290 xapp.Logger.Debug("Send REST subscriber request for subscriber : %v", restSubId)
4292 // Catch the first message and ignore it
4293 crereq, cremsg := e2termConn1.RecvSubsReq(t)
4294 xapp.Logger.Debug("Ignore REST subscriber request for subscriber : %v", restSubId)
4296 // The second request is being handled normally
4297 crereq, cremsg = e2termConn1.RecvSubsReq(t)
4298 xappConn1.ExpectRESTNotification(t, restSubId)
4299 e2termConn1.SendSubsResp(t, crereq, cremsg)
4300 e2SubsId := xappConn1.WaitRESTNotification(t, restSubId)
4302 queryXappSubscription(t, int64(e2SubsId), "RAN_NAME_1", []string{"localhost:13560"})
4305 deleteSubscription(t, xappConn1, e2termConn1, &restSubId)
4307 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
4308 //Wait that subs is cleaned
4309 waitSubsCleanup(t, e2SubsId, 10)
4311 mainCtrl.VerifyCounterValues(t)
4312 mainCtrl.VerifyAllClean(t)
4315 //-----------------------------------------------------------------------------
4316 // TestRESTSubReqTwoRetriesNoRespSubDelRespInSubmgr
4319 // +-------+ +---------+ +---------+
4320 // | xapp | | submgr | | e2term |
4321 // +-------+ +---------+ +---------+
4324 // |---------------->| |
4326 // | RESTSubResp | |
4327 // |<----------------| |
4329 // | |------------->|
4333 // | |------------->|
4336 // | |------------->|
4340 // | |------------->|
4344 // | |<-------------|
4347 // |<----------------| |
4349 // | [SUBS DELETE] |
4352 //-----------------------------------------------------------------------------
4354 func TestRESTSubReqRetryNoRespSubDelRespInSubmgr(t *testing.T) {
4356 // Init counter check
4357 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
4358 Counter{cRestSubReqFromXapp, 1},
4359 Counter{cRestSubRespToXapp, 1},
4360 Counter{cSubReqToE2, 1},
4361 Counter{cSubReReqToE2, 1},
4362 Counter{cSubReqTimerExpiry, 2},
4363 Counter{cRestSubFailNotifToXapp, 1},
4364 Counter{cSubDelReqToE2, 1},
4365 Counter{cSubDelRespFromE2, 1},
4366 Counter{cRestSubDelReqFromXapp, 1},
4367 Counter{cRestSubDelRespToXapp, 1},
4370 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
4371 restSubId := xappConn1.SendRESTSubsReq(t, params)
4372 xapp.Logger.Debug("Send REST subscriber request for subscriber : %v", restSubId)
4374 e2termConn1.RecvSubsReq(t)
4375 xapp.Logger.Debug("Ignore 1st REST subscriber request for subscriber : %v", restSubId)
4377 e2termConn1.RecvSubsReq(t)
4378 xapp.Logger.Debug("Ignore 2nd REST subscriber request for subscriber : %v", restSubId)
4380 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
4381 xappConn1.ExpectRESTNotificationNok(t, restSubId, "allFail")
4382 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
4383 xappConn1.WaitRESTNotification(t, restSubId)
4385 xappConn1.SendRESTSubsDelReq(t, &restSubId)
4387 // Wait that subs is cleaned
4388 waitSubsCleanup(t, delreq.RequestId.InstanceId, 10)
4389 mainCtrl.VerifyCounterValues(t)
4390 mainCtrl.VerifyAllClean(t)
4393 //-----------------------------------------------------------------------------
4394 // TestREST2eTermNotRespondingToSubReq
4397 // +-------+ +---------+ +---------+
4398 // | xapp | | submgr | | e2term |
4399 // +-------+ +---------+ +---------+
4402 // |---------------->| |
4403 // | RESTSubResp | |
4404 // |<----------------| |
4406 // | |------------->|
4409 // | |------------->|
4412 // | |------------->|
4415 // | |------------->|
4416 // | RESTNotif(Unsuccessful) |
4417 // |<----------------| |
4419 // | RESTSubDelReq | |
4420 // |---------------->| |
4421 // | RESTSubDelResp | |
4422 // |<----------------| |
4425 //-----------------------------------------------------------------------------
4427 func TestREST2eTermNotRespondingToSubReq(t *testing.T) {
4429 // Init counter check
4430 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
4431 Counter{cRestSubReqFromXapp, 1},
4432 Counter{cRestSubRespToXapp, 1},
4433 Counter{cSubReqToE2, 1},
4434 Counter{cSubReReqToE2, 1},
4435 Counter{cSubReqTimerExpiry, 2},
4436 Counter{cSubDelReReqToE2, 1},
4437 Counter{cRestSubFailNotifToXapp, 1},
4438 Counter{cSubDelReqToE2, 1},
4439 Counter{cSubDelReqTimerExpiry, 2},
4440 Counter{cRestSubDelReqFromXapp, 1},
4441 Counter{cRestSubDelRespToXapp, 1},
4444 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
4445 restSubId := xappConn1.SendRESTSubsReq(t, params)
4446 xapp.Logger.Debug("Send REST subscriber request for subscriber : %v", restSubId)
4448 e2termConn1.RecvSubsReq(t)
4449 xapp.Logger.Debug("Ignore 1st REST subscriber request for subscriber : %v", restSubId)
4451 e2termConn1.RecvSubsReq(t)
4452 xapp.Logger.Debug("Ignore 2nd REST subscriber request for subscriber : %v", restSubId)
4454 e2termConn1.RecvSubsDelReq(t)
4455 xapp.Logger.Debug("Ignore 1st INTERNAL delete request for subscriber : %v", restSubId)
4457 xappConn1.ExpectRESTNotificationNok(t, restSubId, "allFail")
4458 e2termConn1.RecvSubsDelReq(t)
4459 xapp.Logger.Debug("Ignore 2nd INTERNAL delete request for subscriber : %v", restSubId)
4461 e2SubsId := xappConn1.WaitRESTNotification(t, restSubId)
4463 xappConn1.SendRESTSubsDelReq(t, &restSubId)
4465 waitSubsCleanup(t, e2SubsId, 10)
4466 mainCtrl.VerifyCounterValues(t)
4467 mainCtrl.VerifyAllClean(t)
4470 //-----------------------------------------------------------------------------
4471 // TestRESTSubReqTwoRetriesNoRespSubDelRespInSubmgr
4474 // +-------+ +---------+ +---------+
4475 // | xapp | | submgr | | e2term |
4476 // +-------+ +---------+ +---------+
4479 // |---------------->| |
4481 // | RESTSubResp | |
4482 // |<----------------| |
4484 // | |------------->|
4488 // | |------------->|
4491 // | |------------->|
4495 // | |------------->|
4499 // | |<-------------|
4502 // |<----------------| |
4504 // | [SUBS DELETE] |
4507 //-----------------------------------------------------------------------------
4508 func TestRESTSubReqTwoRetriesNoRespAtAllInSubmgr(t *testing.T) {
4510 // Init counter check
4511 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
4512 Counter{cRestSubReqFromXapp, 1},
4513 Counter{cRestSubRespToXapp, 1},
4514 Counter{cSubReqToE2, 1},
4515 Counter{cSubReReqToE2, 1},
4516 Counter{cSubReqTimerExpiry, 2},
4517 Counter{cRestSubFailNotifToXapp, 1},
4518 Counter{cSubDelReqToE2, 1},
4519 Counter{cSubDelReReqToE2, 1},
4520 Counter{cSubDelReqTimerExpiry, 2},
4521 Counter{cRestSubDelReqFromXapp, 1},
4522 Counter{cRestSubDelRespToXapp, 1},
4525 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
4526 restSubId := xappConn1.SendRESTSubsReq(t, params)
4527 xapp.Logger.Debug("Send REST subscriber request for subscriber : %v", restSubId)
4529 e2termConn1.RecvSubsReq(t)
4530 xapp.Logger.Debug("Ignore 1st REST subscriber request for subscriber : %v", restSubId)
4532 e2termConn1.RecvSubsReq(t)
4533 xapp.Logger.Debug("Ignore 2nd REST subscriber request for subscriber : %v", restSubId)
4535 e2termConn1.RecvSubsDelReq(t)
4536 xapp.Logger.Debug("Ignore 1st INTERNAL delete request for subscriber : %v", restSubId)
4538 xappConn1.ExpectRESTNotificationNok(t, restSubId, "allFail")
4539 e2termConn1.RecvSubsDelReq(t)
4540 xapp.Logger.Debug("Ignore 2nd INTERNAL delete request for subscriber : %v", restSubId)
4542 e2SubsId := xappConn1.WaitRESTNotification(t, restSubId)
4544 xappConn1.SendRESTSubsDelReq(t, &restSubId)
4546 waitSubsCleanup(t, e2SubsId, 10)
4547 mainCtrl.VerifyCounterValues(t)
4548 mainCtrl.VerifyAllClean(t)
4551 //-----------------------------------------------------------------------------
4552 // TestRESTSubReqSubFailRespInSubmgr
4555 // +-------+ +---------+ +---------+
4556 // | xapp | | submgr | | e2term |
4557 // +-------+ +---------+ +---------+
4560 // |---------------->| |
4562 // | RESTSubResp | |
4563 // |<----------------| |
4565 // | |------------->|
4568 // | |<-------------|
4572 // |<----------------| |
4574 // | [SUBS DELETE] |
4577 //-----------------------------------------------------------------------------
4579 func TestRESTSubReqSubFailRespInSubmgr(t *testing.T) {
4581 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
4582 Counter{cRestSubReqFromXapp, 1},
4583 Counter{cRestSubRespToXapp, 1},
4584 Counter{cSubReqToE2, 1},
4585 Counter{cSubFailFromE2, 1},
4586 Counter{cRestSubFailNotifToXapp, 1},
4587 Counter{cRestSubDelReqFromXapp, 1},
4588 Counter{cRestSubDelRespToXapp, 1},
4591 const subReqCount int = 1
4592 const e2Timeout int64 = 2
4593 const e2RetryCount int64 = 1
4594 const routingNeeded bool = true
4596 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
4597 params.SetSubscriptionDirectives(e2Timeout, e2RetryCount, routingNeeded)
4598 restSubId := xappConn1.SendRESTSubsReq(t, params)
4600 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
4601 fparams1 := &teststube2ap.E2StubSubsFailParams{}
4602 fparams1.Set(crereq1)
4603 xappConn1.ExpectRESTNotificationNok(t, restSubId, "allFail")
4604 e2termConn1.SendSubsFail(t, fparams1, cremsg1)
4606 e2SubsId := xappConn1.WaitRESTNotification(t, restSubId)
4607 xapp.Logger.Debug("TEST: REST notification received e2SubsId=%v", e2SubsId)
4609 // REST subscription sill there to be deleted
4610 xappConn1.SendRESTSubsDelReq(t, &restSubId)
4612 // Wait that subs is cleaned
4613 waitSubsCleanup(t, e2SubsId, 10)
4615 mainCtrl.VerifyCounterValues(t)
4616 mainCtrl.VerifyAllClean(t)
4619 //-----------------------------------------------------------------------------
4620 // TestRESTSubReqPartialResp
4623 // +-------+ +---------+ +---------+
4624 // | xapp | | submgr | | e2term |
4625 // +-------+ +---------+ +---------+
4628 // |---------------->| |
4629 // | RESTSubResp | |
4630 // |<----------------| |
4632 // | |------------->|
4633 // | | SubResp | Partially accepted
4634 // | |<-------------|
4637 // |<----------------| |
4639 // | [SUBS DELETE] |
4642 //-----------------------------------------------------------------------------
4644 func TestRESTSubReqPartialResp(t *testing.T) {
4646 // Init counter check
4647 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
4648 Counter{cRestSubReqFromXapp, 1},
4649 Counter{cRestSubRespToXapp, 1},
4650 Counter{cSubReqToE2, 1},
4651 Counter{cSubRespFromE2, 1},
4652 Counter{cPartialSubRespFromE2, 1},
4653 Counter{cRestSubNotifToXapp, 1},
4654 Counter{cRestSubDelReqFromXapp, 1},
4655 Counter{cSubDelReqToE2, 1},
4656 Counter{cSubDelRespFromE2, 1},
4657 Counter{cRestSubDelRespToXapp, 1},
4661 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
4663 actionId := int64(2)
4664 actionType := "report"
4665 actionDefinition := []int64{5678, 1}
4666 subsequestActionType := "continue"
4667 timeToWait := "w10ms"
4668 params.AppendActionToActionToBeSetupList(actionId, actionType, actionDefinition, subsequestActionType, timeToWait)
4670 restSubId := xappConn1.SendRESTSubsReq(t, params)
4671 crereq, cremsg := e2termConn1.RecvSubsReq(t)
4672 xappConn1.ExpectRESTNotification(t, restSubId)
4674 actionNotAdmittedItem := e2ap.ActionNotAdmittedItem{}
4675 actionNotAdmittedItem.ActionId = 1
4676 actionNotAdmittedItem.Cause.Content = 1
4677 actionNotAdmittedItem.Cause.Value = 8
4678 actionNotAdmittedList := e2ap.ActionNotAdmittedList{}
4679 actionNotAdmittedList.Items = append(actionNotAdmittedList.Items, actionNotAdmittedItem)
4680 e2termConn1.SendPartialSubsResp(t, crereq, cremsg, actionNotAdmittedList)
4681 e2SubsId := xappConn1.WaitRESTNotification(t, restSubId)
4683 queryXappSubscription(t, int64(e2SubsId), "RAN_NAME_1", []string{"localhost:13560"})
4686 deleteSubscription(t, xappConn1, e2termConn1, &restSubId)
4688 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
4689 //Wait that subs is cleaned
4690 waitSubsCleanup(t, e2SubsId, 10)
4692 mainCtrl.VerifyCounterValues(t)
4693 mainCtrl.VerifyAllClean(t)
4696 //-----------------------------------------------------------------------------
4697 // TestRESTSubDelReqRetryInSubmgr
4700 // +-------+ +---------+ +---------+
4701 // | xapp | | submgr | | e2term |
4702 // +-------+ +---------+ +---------+
4704 // | [SUBS CREATE] |
4707 // | RESTSubDelReq | |
4708 // |---------------->| |
4710 // | RESTSubDelResp | |
4711 // |<----------------| |
4713 // | |------------->|
4716 // | |------------->|
4719 // | |<-------------|
4722 //-----------------------------------------------------------------------------
4723 func TestRESTSubDelReqRetryInSubmgr(t *testing.T) {
4725 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
4726 Counter{cRestSubReqFromXapp, 1},
4727 Counter{cRestSubRespToXapp, 1},
4728 Counter{cSubReqToE2, 1},
4729 Counter{cSubRespFromE2, 1},
4730 Counter{cRestSubNotifToXapp, 1},
4731 Counter{cRestSubDelReqFromXapp, 1},
4732 Counter{cSubDelReqToE2, 1},
4733 Counter{cSubDelReqTimerExpiry, 1},
4734 Counter{cSubDelReReqToE2, 1},
4735 Counter{cSubDelRespFromE2, 1},
4736 Counter{cRestSubDelRespToXapp, 1},
4739 var params *teststube2ap.RESTSubsReqParams = nil
4740 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
4743 xappConn1.SendRESTSubsDelReq(t, &restSubId)
4745 // E2t: Receive 1st SubsDelReq
4746 e2termConn1.RecvSubsDelReq(t)
4748 // E2t: Receive 2nd SubsDelReq and send SubsDelResp
4749 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
4750 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
4752 //Wait that subs is cleaned
4753 waitSubsCleanup(t, e2SubsId, 10)
4755 mainCtrl.VerifyCounterValues(t)
4756 mainCtrl.VerifyAllClean(t)
4759 //-----------------------------------------------------------------------------
4760 // TestRESTSubDelReqTwoRetriesNoRespInSubmgr
4763 // +-------+ +---------+ +---------+
4764 // | xapp | | submgr | | e2term |
4765 // +-------+ +---------+ +---------+
4767 // | [SUBS CREATE] |
4770 // | RESTSubDelReq | |
4771 // |---------------->| |
4773 // | RESTSubDelResp | |
4774 // |<----------------| |
4776 // | |------------->|
4779 // | |------------->|
4783 //-----------------------------------------------------------------------------
4785 func TestRESTSubDelReqTwoRetriesNoRespInSubmgr(t *testing.T) {
4787 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
4788 Counter{cRestSubReqFromXapp, 1},
4789 Counter{cRestSubRespToXapp, 1},
4790 Counter{cSubReqToE2, 1},
4791 Counter{cSubRespFromE2, 1},
4792 Counter{cRestSubNotifToXapp, 1},
4793 Counter{cRestSubDelReqFromXapp, 1},
4794 Counter{cSubDelReqToE2, 1},
4795 Counter{cSubDelReqTimerExpiry, 1},
4796 Counter{cSubDelReReqToE2, 1},
4797 Counter{cSubDelRespFromE2, 1},
4798 Counter{cRestSubDelRespToXapp, 1},
4802 var params *teststube2ap.RESTSubsReqParams = nil
4803 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
4806 xappConn1.SendRESTSubsDelReq(t, &restSubId)
4808 // E2t: Receive 1st SubsDelReq
4809 e2termConn1.RecvSubsDelReq(t)
4811 // E2t: Receive 2nd SubsDelReq and send SubsDelResp
4812 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
4813 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
4815 //Wait that subs is cleaned
4816 waitSubsCleanup(t, e2SubsId, 10)
4818 mainCtrl.VerifyCounterValues(t)
4819 mainCtrl.VerifyAllClean(t)
4822 //-----------------------------------------------------------------------------
4823 // TestRESTSubDelReqSubDelFailRespInSubmgr
4826 // +-------+ +---------+ +---------+
4827 // | xapp | | submgr | | e2term |
4828 // +-------+ +---------+ +---------+
4830 // | [SUBS CREATE] |
4833 // | RESTSubDelReq | |
4834 // |---------------->| |
4836 // | RESTSubDelResp | |
4837 // |<----------------| |
4839 // | |------------->|
4842 // | |<-------------|
4845 //-----------------------------------------------------------------------------
4847 func TestRESTSubDelReqSubDelFailRespInSubmgr(t *testing.T) {
4849 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
4850 Counter{cRestSubReqFromXapp, 1},
4851 Counter{cRestSubRespToXapp, 1},
4852 Counter{cSubReqToE2, 1},
4853 Counter{cSubRespFromE2, 1},
4854 Counter{cRestSubNotifToXapp, 1},
4855 Counter{cRestSubDelReqFromXapp, 1},
4856 Counter{cSubDelReqToE2, 1},
4857 Counter{cSubDelFailFromE2, 1},
4858 Counter{cRestSubDelRespToXapp, 1},
4862 var params *teststube2ap.RESTSubsReqParams = nil
4863 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
4866 xappConn1.SendRESTSubsDelReq(t, &restSubId)
4868 // E2t: Send receive SubsDelReq and send SubsDelFail
4869 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
4870 e2termConn1.SendSubsDelFail(t, delreq, delmsg)
4872 //Wait that subs is cleaned
4873 waitSubsCleanup(t, e2SubsId, 10)
4875 mainCtrl.VerifyCounterValues(t)
4876 mainCtrl.VerifyAllClean(t)
4879 //-----------------------------------------------------------------------------
4880 // TestRESTSubReqAndSubDelOkSameAction
4883 // +-------+ +-------+ +---------+ +---------+
4884 // | xapp2 | | xapp1 | | submgr | | e2term |
4885 // +-------+ +-------+ +---------+ +---------+
4887 // | | RESTSubReq1 | |
4888 // | |---------------->| |
4890 // | | RESTSubResp1 | |
4891 // | |<----------------| |
4894 // | | |------------->|
4896 // | | |<-------------|
4897 // | | RESTNotif1 | |
4898 // | |<----------------| |
4900 // | RESTSubReq2 | |
4901 // |------------------------------>| |
4903 // | RESTSubResp2 | |
4904 // |<------------------------------| |
4906 // | | RESTNotif2 | |
4907 // |<------------------------------| |
4909 // | | RESTSubDelReq1 | |
4910 // | |---------------->| |
4912 // | | RESTSubDelResp1 | |
4913 // | |<----------------| |
4915 // | RESTSubDelReq2 | |
4916 // |------------------------------>| |
4918 // | RESTSubDelResp2 | |
4919 // |<------------------------------| |
4921 // | | | SubDelReq2 |
4922 // | | |------------->|
4924 // | | | SubDelResp2 |
4925 // | | |<-------------|
4928 //-----------------------------------------------------------------------------
4930 func TestRESTSubReqAndSubDelOkSameAction(t *testing.T) {
4932 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
4933 Counter{cRestSubReqFromXapp, 2},
4934 Counter{cRestSubRespToXapp, 2},
4935 Counter{cSubReqToE2, 1},
4936 Counter{cSubRespFromE2, 1},
4937 Counter{cRestSubNotifToXapp, 2},
4938 Counter{cMergedSubscriptions, 1},
4939 Counter{cUnmergedSubscriptions, 1},
4940 Counter{cRestSubDelReqFromXapp, 2},
4941 Counter{cSubDelReqToE2, 1},
4942 Counter{cSubDelRespFromE2, 1},
4943 Counter{cRestSubDelRespToXapp, 2},
4947 var params *teststube2ap.RESTSubsReqParams = nil
4950 restSubId1, e2SubsId1 := createSubscription(t, xappConn1, e2termConn1, params)
4951 queryXappSubscription(t, int64(e2SubsId1), "RAN_NAME_1", []string{"localhost:13560"})
4954 params = xappConn2.GetRESTSubsReqReportParams(subReqCount)
4955 params.SetMeid("RAN_NAME_1")
4957 xapp.Subscription.SetResponseCB(xappConn2.SubscriptionRespHandler)
4958 xappConn2.ExpectAnyNotification(t)
4959 waiter := rtmgrHttp.AllocNextSleep(10, true)
4960 restSubId2 := xappConn2.SendRESTSubsReq(t, params)
4961 waiter.WaitResult(t)
4962 xapp.Logger.Debug("Send REST subscriber request for subscriberId : %v", restSubId2)
4963 e2SubsId2 := xappConn2.WaitAnyRESTNotification(t)
4964 xapp.Logger.Debug("REST notification received e2SubsId=%v", e2SubsId2)
4966 queryXappSubscription(t, int64(e2SubsId1), "RAN_NAME_1", []string{"localhost:13560", "localhost:13660"})
4969 xappConn1.SendRESTSubsDelReq(t, &restSubId1)
4972 deleteXapp2Subscription(t, &restSubId2)
4974 //Wait that subs is cleaned
4975 waitSubsCleanup(t, e2SubsId2, 10)
4976 mainCtrl.VerifyCounterValues(t)
4977 mainCtrl.VerifyAllClean(t)
4980 //-----------------------------------------------------------------------------
4981 // TestSubReqAndSubDelOkSameActionParallel
4984 // +-------+ +-------+ +---------+ +---------+
4985 // | xapp2 | | xapp1 | | submgr | | e2term |
4986 // +-------+ +-------+ +---------+ +---------+
4991 // | |------------->| |
4994 // | | |------------->|
4996 // |--------------------------->| |
4998 // | | |<-------------|
5000 // | |<-------------| |
5002 // | | |------------->|
5005 // | | |<-------------|
5007 // |<---------------------------| |
5009 // | | SubDelReq 1 | |
5010 // | |------------->| |
5012 // | | SubDelResp 1 | |
5013 // | |<-------------| |
5015 // | SubDelReq 2 | |
5016 // |--------------------------->| |
5018 // | | | SubDelReq 2 |
5019 // | | |------------->|
5021 // | | | SubDelReq 2 |
5022 // | | |------------->|
5024 // | SubDelResp 2 | |
5025 // |<---------------------------| |
5027 func TestRESTSubReqAndSubDelOkSameActionParallel(t *testing.T) {
5029 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
5030 Counter{cRestSubReqFromXapp, 2},
5031 Counter{cRestSubRespToXapp, 2},
5032 Counter{cSubReqToE2, 2},
5033 Counter{cSubRespFromE2, 2},
5034 Counter{cRestSubNotifToXapp, 2},
5035 Counter{cRestSubDelReqFromXapp, 2},
5036 Counter{cSubDelReqToE2, 2},
5037 Counter{cSubDelRespFromE2, 2},
5038 Counter{cRestSubDelRespToXapp, 2},
5041 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
5042 restSubId1 := xappConn1.SendRESTSubsReq(t, params)
5043 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
5045 params2 := xappConn2.GetRESTSubsReqReportParams(subReqCount)
5046 restSubId2 := xappConn2.SendRESTSubsReq(t, params2)
5048 xappConn1.ExpectRESTNotification(t, restSubId1)
5049 e2termConn1.SendSubsResp(t, crereq1, cremsg1)
5050 e2SubsId1 := xappConn1.WaitRESTNotification(t, restSubId1)
5052 xappConn2.ExpectRESTNotification(t, restSubId2)
5053 crereq2, cremsg2 := e2termConn1.RecvSubsReq(t)
5054 e2termConn1.SendSubsResp(t, crereq2, cremsg2)
5055 e2SubsId2 := xappConn2.WaitRESTNotification(t, restSubId2)
5058 xappConn1.SendRESTSubsDelReq(t, &restSubId1)
5059 delreq1, delmsg1 := e2termConn1.RecvSubsDelReq(t)
5060 e2termConn1.SendSubsDelResp(t, delreq1, delmsg1)
5061 mainCtrl.wait_subs_clean(t, e2SubsId1, 10)
5064 xappConn2.SendRESTSubsDelReq(t, &restSubId2)
5065 delreq2, delmsg2 := e2termConn1.RecvSubsDelReq(t)
5066 e2termConn1.SendSubsDelResp(t, delreq2, delmsg2)
5068 waitSubsCleanup(t, e2SubsId2, 10)
5069 mainCtrl.VerifyCounterValues(t)
5070 mainCtrl.VerifyAllClean(t)
5073 //-----------------------------------------------------------------------------
5074 // TestRESTSubReqAndSubDelNoAnswerSameActionParallel
5077 // +-------+ +-------+ +---------+ +---------+
5078 // | xapp2 | | xapp1 | | submgr | | e2term |
5079 // +-------+ +-------+ +---------+ +---------+
5083 // | | RESTSubReq1 | |
5084 // | |---------------->| |
5086 // | | RESTSubResp1 | |
5087 // | |<----------------| |
5089 // | | |------------->|
5090 // | RESTSubReq2 | |
5091 // |------------------------------>| |
5093 // | RESTSubResp2 | |
5094 // |<------------------------------| |
5096 // | | |------------->|
5099 // | | | SubDelReq |
5100 // | | |------------->|
5102 // | | | SubDelResp |
5103 // | | |<-------------|
5104 // | | RESTNotif1 | |
5105 // | | unsuccess | |
5106 // | |<----------------| |
5108 // | | unsuccess | |
5109 // |<------------------------------| |
5111 // | | RESTSubDelReq1 | |
5112 // | |---------------->| |
5114 // | | RESTSubDelResp1 | |
5115 // | |<----------------| |
5117 // | RESTSubDelReq2 | |
5118 // |------------------------------>| |
5120 // | RESTSubDelResp2 | |
5121 // |<------------------------------| |
5123 //-----------------------------------------------------------------------------
5125 func TestRESTSubReqAndSubDelNoAnswerSameActionParallel(t *testing.T) {
5127 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
5128 Counter{cRestSubReqFromXapp, 2},
5129 Counter{cMergedSubscriptions, 1},
5130 Counter{cRestSubRespToXapp, 2},
5131 Counter{cSubReqToE2, 1},
5132 Counter{cSubReqTimerExpiry, 2},
5133 Counter{cSubReReqToE2, 1},
5134 Counter{cRestSubFailNotifToXapp, 2},
5135 Counter{cUnmergedSubscriptions, 1},
5136 Counter{cRestSubDelReqFromXapp, 2},
5137 Counter{cSubDelReqToE2, 1},
5138 Counter{cSubDelRespFromE2, 1},
5139 Counter{cRestSubDelRespToXapp, 2},
5141 const subReqCount int = 1
5144 params1 := xappConn1.GetRESTSubsReqReportParams(subReqCount)
5145 restSubId1 := xappConn1.SendRESTSubsReq(t, params1)
5146 crereq1, _ := e2termConn1.RecvSubsReq(t)
5149 subepcnt2 := mainCtrl.get_subs_entrypoint_cnt(t, crereq1.RequestId.InstanceId)
5150 params2 := xappConn2.GetRESTSubsReqReportParams(subReqCount)
5151 params2.SetMeid("RAN_NAME_1")
5152 restSubId2 := xappConn2.SendRESTSubsReq(t, params2)
5153 mainCtrl.wait_subs_entrypoint_cnt_change(t, crereq1.RequestId.InstanceId, subepcnt2, 10)
5155 //Req1 (retransmitted)
5156 e2termConn1.RecvSubsReq(t)
5158 delreq1, delmsg1 := e2termConn1.RecvSubsDelReq(t)
5160 xappConn1.WaitListedRestNotifications(t, []string{restSubId1, restSubId2})
5161 e2termConn1.SendSubsDelResp(t, delreq1, delmsg1)
5163 e2SubsIdA := <-xappConn1.ListedRESTNotifications
5164 xapp.Logger.Debug("TEST: 1.st XAPP notification received e2SubsId=%v", e2SubsIdA)
5165 e2SubsIdB := <-xappConn1.ListedRESTNotifications
5166 xapp.Logger.Debug("TEST: 2.nd XAPP notification received e2SubsId=%v", e2SubsIdB)
5169 xappConn1.SendRESTSubsDelReq(t, &restSubId1)
5172 xappConn2.SendRESTSubsDelReq(t, &restSubId2)
5174 mainCtrl.wait_multi_subs_clean(t, []uint32{e2SubsIdA.E2SubsId, e2SubsIdB.E2SubsId}, 10)
5176 //Wait that subs is cleaned
5177 waitSubsCleanup(t, e2SubsIdA.E2SubsId, 10)
5178 mainCtrl.VerifyCounterValues(t)
5179 mainCtrl.VerifyAllClean(t)
5182 //-----------------------------------------------------------------------------
5183 // TestRESTSubReqAndSubDelNokSameActionParallel
5186 // +-------+ +-------+ +---------+ +---------+
5187 // | xapp2 | | xapp1 | | submgr | | e2term |
5188 // +-------+ +-------+ +---------+ +---------+
5192 // | | RESTSubReq1 | |
5193 // | |---------------->| |
5195 // | | RESTSubResp1 | |
5196 // | |<----------------| |
5198 // | | |------------->|
5199 // | RESTSubReq2 | |
5200 // |------------------------------>| |
5202 // | RESTSubDelResp2 | |
5203 // |<------------------------------| |
5205 // | | |<-------------|
5207 // | | RESTNotif1 | |
5208 // | | unsuccess | |
5209 // | |<----------------| |
5211 // | | unsuccess | |
5212 // |<------------------------------| |
5214 // | | RESTSubDelReq1 | | There is no need for xApp to send delete for failed subscriptions but some xApp might do so.
5215 // | |---------------->| |
5217 // | | RESTSubDelResp1 | |
5218 // | |<----------------| |
5220 // | RESTSubDelReq2 | |
5221 // |------------------------------>| |
5223 // | RESTSubDelResp2 | |
5224 // |<------------------------------| |
5226 //-----------------------------------------------------------------------------
5228 func TestRESTSubReqAndSubDelNokSameActionParallel(t *testing.T) {
5230 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
5231 Counter{cRestSubReqFromXapp, 2},
5232 Counter{cMergedSubscriptions, 1},
5233 Counter{cRestSubRespToXapp, 2},
5234 Counter{cSubReqToE2, 1},
5235 Counter{cSubFailFromE2, 1},
5236 Counter{cRestSubFailNotifToXapp, 2},
5237 Counter{cUnmergedSubscriptions, 1},
5238 Counter{cRestSubDelReqFromXapp, 2},
5239 Counter{cRestSubDelRespToXapp, 2},
5242 const subReqCount int = 1
5245 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
5246 restSubId1 := xappConn1.SendRESTSubsReq(t, params)
5247 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
5250 subepcnt2 := mainCtrl.get_subs_entrypoint_cnt(t, crereq1.RequestId.InstanceId)
5251 params2 := xappConn2.GetRESTSubsReqReportParams(subReqCount)
5252 params2.SetMeid("RAN_NAME_1")
5253 restSubId2 := xappConn2.SendRESTSubsReq(t, params2)
5254 mainCtrl.wait_subs_entrypoint_cnt_change(t, crereq1.RequestId.InstanceId, subepcnt2, 10)
5256 // E2t: send SubsFail (first)
5257 fparams1 := &teststube2ap.E2StubSubsFailParams{}
5258 fparams1.Set(crereq1)
5259 e2termConn1.SendSubsFail(t, fparams1, cremsg1)
5261 xappConn1.WaitListedRestNotifications(t, []string{restSubId1, restSubId2})
5262 e2SubsIdA := <-xappConn1.ListedRESTNotifications
5263 xapp.Logger.Debug("TEST: 1.st XAPP notification received e2SubsId=%v", e2SubsIdA)
5264 e2SubsIdB := <-xappConn1.ListedRESTNotifications
5265 xapp.Logger.Debug("TEST: 2.nd XAPP notification received e2SubsId=%v", e2SubsIdB)
5268 xappConn1.SendRESTSubsDelReq(t, &restSubId1)
5271 xappConn2.SendRESTSubsDelReq(t, &restSubId2)
5273 //Wait that subs is cleaned
5274 waitSubsCleanup(t, e2SubsIdA.E2SubsId, 10)
5275 waitSubsCleanup(t, e2SubsIdB.E2SubsId, 10)
5276 mainCtrl.VerifyCounterValues(t)
5277 mainCtrl.VerifyAllClean(t)
5280 //-----------------------------------------------------------------------------
5281 // TestRESTSubReqPolicyAndSubDelOk
5284 // +-------+ +---------+ +---------+
5285 // | xapp | | submgr | | e2term |
5286 // +-------+ +---------+ +---------+
5289 // |--------------->| |
5290 // | RESTSubResp | |
5291 // |<---------------| |
5294 // | |------------->|
5297 // | |<-------------|
5300 // |<---------------| |
5303 // | RESTSubDelReq | |
5304 // |--------------->| |
5305 // | RESTSubDelResp | |
5306 // |<---------------| |
5309 // | |------------->|
5312 // | |<-------------|
5315 //-----------------------------------------------------------------------------
5317 func TestRESTSubReqPolicyAndSubDelOk(t *testing.T) {
5319 // Init counter check
5320 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
5321 Counter{cRestSubReqFromXapp, 1},
5322 Counter{cRestSubRespToXapp, 1},
5323 Counter{cSubReqToE2, 1},
5324 Counter{cSubRespFromE2, 1},
5325 Counter{cRestSubNotifToXapp, 1},
5326 Counter{cRestSubDelReqFromXapp, 1},
5327 Counter{cSubDelReqToE2, 1},
5328 Counter{cSubDelRespFromE2, 1},
5329 Counter{cRestSubDelRespToXapp, 1},
5332 params := xappConn1.GetRESTSubsReqPolicyParams(subReqCount)
5333 restSubId := xappConn1.SendRESTSubsReq(t, params)
5334 xapp.Logger.Debug("Send REST Policy subscriber request for subscriberId : %v", restSubId)
5336 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
5337 xappConn1.ExpectRESTNotification(t, restSubId)
5338 e2termConn1.SendSubsResp(t, crereq1, cremsg1)
5339 e2SubsId := xappConn1.WaitRESTNotification(t, restSubId)
5340 xapp.Logger.Debug("REST notification received e2SubsId=%v", e2SubsId)
5342 xappConn1.SendRESTSubsDelReq(t, &restSubId)
5343 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
5344 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
5346 // Wait that subs is cleaned
5347 waitSubsCleanup(t, e2SubsId, 10)
5348 mainCtrl.VerifyCounterValues(t)
5349 mainCtrl.VerifyAllClean(t)
5352 //-----------------------------------------------------------------------------
5353 // TestRESTSubReqPolicyChangeAndSubDelOk
5356 // +-------+ +---------+ +---------+
5357 // | xapp | | submgr | | e2term |
5358 // +-------+ +---------+ +---------+
5361 // |---------------->| |
5363 // | RESTSubResp | |
5364 // |<----------------| |
5366 // | |------------->|
5369 // | |<-------------|
5372 // |<----------------| |
5375 // |---------------->| |
5377 // | RESTSubResp | |
5378 // |<----------------| |
5380 // | |------------->|
5383 // | |<-------------|
5386 // |<----------------| |
5388 // | RESTSubDelReq | |
5389 // |---------------->| |
5392 // | |------------->|
5395 // | |<-------------|
5397 // | RESTSubDelResp | |
5398 // |<----------------| |
5400 //-----------------------------------------------------------------------------
5402 func TestRESTSubReqPolicyChangeAndSubDelOk(t *testing.T) {
5404 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
5405 Counter{cRestSubReqFromXapp, 2},
5406 Counter{cRestSubRespToXapp, 2},
5407 Counter{cSubReqToE2, 2},
5408 Counter{cSubRespFromE2, 2},
5409 Counter{cRestSubNotifToXapp, 2},
5410 Counter{cRestSubDelReqFromXapp, 1},
5411 Counter{cSubDelReqToE2, 1},
5412 Counter{cSubDelRespFromE2, 1},
5413 Counter{cRestSubDelRespToXapp, 1},
5416 const subReqCount int = 1
5417 const e2Timeout int64 = 1
5418 const e2RetryCount int64 = 0
5419 const routingNeeded bool = true
5422 params := xappConn1.GetRESTSubsReqPolicyParams(subReqCount)
5423 params.SetSubscriptionDirectives(e2Timeout, e2RetryCount, routingNeeded)
5424 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
5427 // GetRESTSubsReqPolicyParams sets some counters on tc side.
5429 params = xappConn1.GetRESTSubsReqPolicyParams(subReqCount)
5430 params.SetSubscriptionDirectives(e2Timeout, e2RetryCount, routingNeeded)
5431 params.SetSubscriptionID(&restSubId)
5432 params.SetTimeToWait("w200ms")
5433 restSubId, e2SubsId = createSubscription(t, xappConn1, e2termConn1, params)
5436 xappConn1.SendRESTSubsDelReq(t, &restSubId)
5438 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
5439 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
5441 // Wait that subs is cleaned
5442 waitSubsCleanup(t, e2SubsId, 10)
5443 mainCtrl.VerifyCounterValues(t)
5444 mainCtrl.VerifyAllClean(t)
5447 //-----------------------------------------------------------------------------
5448 // TestRESTSubReqPolicyChangeNokAndSubDelOk
5451 // +-------+ +---------+ +---------+
5452 // | xapp | | submgr | | e2term |
5453 // +-------+ +---------+ +---------+
5456 // |---------------->| |
5458 // | RESTSubResp | |
5459 // |<----------------| |
5461 // | |------------->|
5464 // | |<-------------|
5467 // |<----------------| |
5470 // |---------------->| |
5472 // | RESTSubResp | |
5473 // |<----------------| |
5475 // | |------------->|
5478 // | |<-------------|
5481 // |<----------------| |
5483 // | RESTSubDelReq | |
5484 // |---------------->| |
5487 // | |------------->|
5490 // | |<-------------|
5492 // | RESTSubDelResp | |
5493 // |<----------------| |
5495 //-----------------------------------------------------------------------------
5497 func TestRESTSubReqPolicyChangeNokAndSubDelOk(t *testing.T) {
5499 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
5500 Counter{cRestSubReqFromXapp, 2},
5501 Counter{cRestSubRespToXapp, 2},
5502 Counter{cSubReqToE2, 2},
5503 Counter{cSubRespFromE2, 1},
5504 Counter{cSubFailFromE2, 1},
5505 Counter{cRestSubNotifToXapp, 1},
5506 Counter{cRestSubFailNotifToXapp, 1},
5507 Counter{cRestSubDelReqFromXapp, 1},
5508 Counter{cSubDelReqToE2, 1},
5509 Counter{cSubDelRespFromE2, 1},
5510 Counter{cRestSubDelRespToXapp, 1},
5513 const subReqCount int = 1
5514 const e2Timeout int64 = 1
5515 const e2RetryCount int64 = 0
5516 const routingNeeded bool = false
5519 params := xappConn1.GetRESTSubsReqPolicyParams(subReqCount)
5520 params.SetSubscriptionDirectives(e2Timeout, e2RetryCount, routingNeeded)
5521 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
5522 fmt.Printf("restSubId: %v", restSubId)
5525 // GetRESTSubsReqPolicyParams sets some counters on tc side.
5526 params = xappConn1.GetRESTSubsReqPolicyParams(subReqCount)
5527 params.SetSubscriptionDirectives(e2Timeout, e2RetryCount, routingNeeded)
5528 params.SetSubscriptionID(&restSubId)
5529 params.SetTimeToWait("w200ms")
5531 restSubId = xappConn1.SendRESTSubsReq(t, params)
5532 fmt.Printf("restSubId: %v", restSubId)
5534 crereq, cremsg := e2termConn1.RecvSubsReq(t)
5535 xappConn1.ExpectRESTNotificationNok(t, restSubId, "allFail")
5537 // Gnb sends RICSubscriptionFailure
5538 fparams := &teststube2ap.E2StubSubsFailParams{}
5540 fparams.SetCauseVal(0, 1, 5) // CauseRIC / function-resource-limit
5541 e2termConn1.SendSubsFail(t, fparams, cremsg)
5543 instanceId := xappConn1.WaitRESTNotification(t, restSubId)
5544 xapp.Logger.Debug("TEST: REST notification received e2SubsId=%v", instanceId)
5547 xappConn1.SendRESTSubsDelReq(t, &restSubId)
5549 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
5550 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
5552 // Wait that subs is cleaned
5553 waitSubsCleanup(t, e2SubsId, 10)
5554 mainCtrl.VerifyCounterValues(t)
5555 mainCtrl.VerifyAllClean(t)
5558 //-----------------------------------------------------------------------------
5559 // TestRESTSubReqPolicyChangeNOk
5562 // +-------+ +---------+ +---------+
5563 // | xapp | | submgr | | e2term |
5564 // +-------+ +---------+ +---------+
5567 // |---------------->| |
5569 // | RESTSubResp | |
5570 // |<----------------| |
5572 // | |------------->|
5575 // | |<-------------|
5578 // |<----------------| |
5581 // |---------------->| |
5583 // | RESTSubUpdateFail(400 Bad request)
5585 // | RESTSubDelReq | |
5586 // |---------------->| |
5589 // | |------------->|
5592 // | |<-------------|
5594 // | RESTSubDelResp | |
5595 // |<----------------| |
5597 //-----------------------------------------------------------------------------
5599 func TestRESTSubReqPolicyChangeNOk(t *testing.T) {
5601 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
5602 Counter{cRestSubReqFromXapp, 2},
5603 Counter{cRestSubRespToXapp, 1},
5604 Counter{cSubReqToE2, 1},
5605 Counter{cSubRespFromE2, 1},
5606 Counter{cRestSubNotifToXapp, 1},
5607 Counter{cRestSubFailToXapp, 1},
5608 Counter{cRestSubDelReqFromXapp, 1},
5609 Counter{cSubDelReqToE2, 1},
5610 Counter{cSubDelRespFromE2, 1},
5611 Counter{cRestSubDelRespToXapp, 1},
5615 params := xappConn1.GetRESTSubsReqPolicyParams(subReqCount)
5616 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
5619 params = xappConn1.GetRESTSubsReqPolicyParams(subReqCount)
5621 restSubIdUpd := strings.ToUpper(restSubId) // This makes RESTSubReq to fail
5622 params.SetSubscriptionID(&restSubIdUpd)
5623 params.SetTimeToWait("w200ms")
5625 restSubId2 := xappConn1.SendRESTSubsReq(t, params)
5626 assert.Equal(t, restSubId2, "")
5629 xappConn1.SendRESTSubsDelReq(t, &restSubId)
5631 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
5632 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
5634 // Wait that subs is cleaned
5635 waitSubsCleanup(t, e2SubsId, 10)
5636 mainCtrl.VerifyCounterValues(t)
5637 mainCtrl.VerifyAllClean(t)
5640 //-----------------------------------------------------------------------------
5641 // TestRESTSubReqAndSubDelOkTwoE2termParallel
5644 // +-------+ +---------+ +---------+ +---------+
5645 // | xapp | | submgr | | e2term1 | | e2term2 |
5646 // +-------+ +---------+ +---------+ +---------+
5650 // | RESTSubReq1 | | |
5651 // |---------------->| | |
5653 // | RESTSubResp1 | | |
5654 // |<----------------| | |
5656 // | |------------->| |
5658 // | RESTSubReq2 | | |
5659 // |---------------->| | |
5661 // | RESTSubResp2 | | |
5662 // |<----------------| | |
5664 // | |---------------------------->|
5667 // | |<-------------| |
5668 // | RESTNotif1 | | |
5669 // |<----------------| | |
5671 // | |<----------------------------|
5672 // | RESTNotif2 | | |
5673 // |<----------------| | |
5675 // | [SUBS 1 DELETE] | |
5677 // | [SUBS 2 DELETE] | |
5680 //-----------------------------------------------------------------------------
5682 func TestRESTSubReqAndSubDelOkTwoE2termParallel(t *testing.T) {
5684 // Init counter check
5685 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
5686 Counter{cRestSubReqFromXapp, 2},
5687 Counter{cRestSubRespToXapp, 2},
5688 Counter{cSubReqToE2, 2},
5689 Counter{cSubRespFromE2, 2},
5690 Counter{cRestSubNotifToXapp, 2},
5691 Counter{cRestSubDelReqFromXapp, 2},
5692 Counter{cSubDelReqToE2, 2},
5693 Counter{cSubDelRespFromE2, 2},
5694 Counter{cRestSubDelRespToXapp, 2},
5697 const subReqCount int = 1
5700 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
5701 restSubId1 := xappConn1.SendRESTSubsReq(t, params)
5702 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
5705 params = xappConn2.GetRESTSubsReqReportParams(subReqCount)
5706 params.SetMeid("RAN_NAME_11")
5707 // Here we use xappConn2 to simulate sending second request from same xapp as doing it from xappConn1
5708 // would not work as notification would not be received
5709 restSubId2 := xappConn2.SendRESTSubsReq(t, params)
5710 crereq2, cremsg2 := e2termConn2.RecvSubsReq(t)
5713 xappConn1.ExpectRESTNotification(t, restSubId1)
5714 e2termConn1.SendSubsResp(t, crereq1, cremsg1)
5715 e2SubsId1 := xappConn1.WaitRESTNotification(t, restSubId1)
5716 xapp.Logger.Debug("TEST: REST notification received e2SubsId1=%v", e2SubsId1)
5719 xappConn2.ExpectRESTNotification(t, restSubId2)
5720 e2termConn2.SendSubsResp(t, crereq2, cremsg2)
5721 e2SubsId2 := xappConn2.WaitRESTNotification(t, restSubId2)
5722 xapp.Logger.Debug("TEST: REST notification received e2SubsId2=%v", e2SubsId2)
5725 xappConn1.SendRESTSubsDelReq(t, &restSubId1)
5726 delreq1, delmsg1 := e2termConn1.RecvSubsDelReq(t)
5727 e2termConn1.SendSubsDelResp(t, delreq1, delmsg1)
5729 // Wait that subs is cleaned
5730 mainCtrl.wait_subs_clean(t, e2SubsId1, 10)
5733 xappConn1.SendRESTSubsDelReq(t, &restSubId2)
5734 delreq2, delmsg2 := e2termConn2.RecvSubsDelReq(t)
5735 e2termConn2.SendSubsDelResp(t, delreq2, delmsg2)
5737 // Wait that subs is cleaned
5738 waitSubsCleanup(t, e2SubsId2, 10)
5740 mainCtrl.VerifyCounterValues(t)
5741 mainCtrl.VerifyAllClean(t)
5744 //-----------------------------------------------------------------------------
5745 // TestRESTSubReqInsertAndSubDelOk
5748 // +-------+ +---------+ +---------+
5749 // | xapp | | submgr | | e2term |
5750 // +-------+ +---------+ +---------+
5753 // |---------------->| |
5755 // | RESTSubResp | |
5756 // |<----------------| |
5759 // | |------------->|
5762 // | |<-------------|
5764 // |<----------------| |
5767 // | RESTSubDelReq | |
5768 // |---------------->| |
5771 // | |------------->|
5774 // | |<-------------|
5776 // | RESTSubDelResp| |
5777 // |<----------------| |
5779 //-----------------------------------------------------------------------------
5781 func TestRESTSubReqInsertAndSubDelOk(t *testing.T) {
5783 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
5784 Counter{cRestSubReqFromXapp, 1},
5785 Counter{cRestSubRespToXapp, 1},
5786 Counter{cSubReqToE2, 1},
5787 Counter{cSubRespFromE2, 1},
5788 Counter{cRestSubNotifToXapp, 1},
5789 Counter{cRestSubDelReqFromXapp, 1},
5790 Counter{cSubDelReqToE2, 1},
5791 Counter{cSubDelRespFromE2, 1},
5792 Counter{cRestSubDelRespToXapp, 1},
5795 const subReqCount int = 1
5797 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
5798 params.SetSubActionTypes("insert")
5801 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
5804 xappConn1.SendRESTSubsDelReq(t, &restSubId)
5806 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
5807 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
5809 // Wait that subs is cleaned
5810 waitSubsCleanup(t, e2SubsId, 10)
5811 mainCtrl.VerifyCounterValues(t)
5812 mainCtrl.VerifyAllClean(t)
5815 //-----------------------------------------------------------------------------
5816 // TestRESTSubReqNokAndSubDelOkWithRestartInMiddle
5819 // +-------+ +---------+ +---------+
5820 // | xapp | | submgr | | e2term |
5821 // +-------+ +---------+ +---------+
5824 // |------------->| |
5826 // | RESTSubResp | |
5827 // |<-------------| |
5829 // | |------------->|
5834 // | Submgr restart |
5838 // | |------------->|
5841 // | |<-------------|
5845 // |<-------------| |
5847 // | RESTSubDelReq| |
5848 // |------------->| |
5850 // |RESTSubDelResp| |
5851 // |<-------------| |
5853 //-----------------------------------------------------------------------------
5855 func TestRESTSubReqNokAndSubDelOkWithRestartInMiddle(t *testing.T) {
5857 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
5858 Counter{cRestSubReqFromXapp, 1},
5859 Counter{cRestSubRespToXapp, 1},
5860 Counter{cSubReqToE2, 1},
5861 Counter{cSubDelReqFromXapp, 1},
5862 Counter{cSubDelReqToE2, 1},
5863 Counter{cSubDelRespFromE2, 1},
5864 Counter{cRestSubDelReqFromXapp, 1},
5865 Counter{cRestSubDelRespToXapp, 1},
5868 const subReqCount int = 1
5870 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
5873 mainCtrl.SetResetTestFlag(t, true) // subs.DoNotWaitSubResp will be set TRUE for the subscription
5874 restSubId := xappConn1.SendRESTSubsReq(t, params)
5875 xapp.Logger.Debug("Send REST subscriber request for subscriber : %v", restSubId)
5877 e2termConn1.RecvSubsReq(t)
5879 mainCtrl.SetResetTestFlag(t, false)
5881 mainCtrl.SimulateRestart(t)
5882 xapp.Logger.Debug("mainCtrl.SimulateRestart done")
5884 // Deleletion of uncompleted subscription
5885 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
5886 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
5889 xappConn1.SendRESTSubsDelReq(t, &restSubId)
5891 xappConn1.TestMsgChanEmpty(t)
5892 e2termConn1.TestMsgChanEmpty(t)
5893 mainCtrl.wait_registry_empty(t, 10)
5895 mainCtrl.VerifyCounterValues(t)
5896 mainCtrl.VerifyAllClean(t)
5899 //-----------------------------------------------------------------------------
5900 // TestRESTSubReqAndSubDelOkWithRestartInMiddle
5903 // +-------+ +---------+ +---------+
5904 // | xapp | | submgr | | e2term |
5905 // +-------+ +---------+ +---------+
5908 // |---------------->| |
5910 // | RESTSubResp | |
5911 // |<----------------| |
5913 // | |------------->|
5916 // | |<-------------|
5919 // |<----------------| |
5922 // | Submgr restart |
5924 // | RESTSubDelReq | |
5925 // |---------------->| |
5928 // | |------------->|
5931 // | |<-------------|
5933 // | RESTSubDelResp | |
5934 // |<----------------| |
5936 //-----------------------------------------------------------------------------
5938 func TestRESTSubReqAndSubDelOkWithRestartInMiddle(t *testing.T) {
5940 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
5941 Counter{cRestSubReqFromXapp, 1},
5942 Counter{cRestSubRespToXapp, 1},
5943 Counter{cSubReqToE2, 1},
5944 Counter{cSubRespFromE2, 1},
5945 Counter{cRestSubNotifToXapp, 1},
5946 Counter{cRestSubDelReqFromXapp, 1},
5947 Counter{cSubDelReqToE2, 1},
5948 Counter{cSubDelRespFromE2, 1},
5949 Counter{cRestSubDelRespToXapp, 1},
5952 // Create subscription
5953 var params *teststube2ap.RESTSubsReqParams = nil
5954 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
5955 xapp.Logger.Debug("Send REST subscriber request for subscriber : %v", restSubId)
5957 // Check subscription
5958 queryXappSubscription(t, int64(e2SubsId), "RAN_NAME_1", []string{"localhost:13560"})
5960 mainCtrl.SimulateRestart(t)
5961 xapp.Logger.Debug("mainCtrl.SimulateRestart done")
5963 // ReadE2Subscriptions() for testing is running in own go routine (go mainCtrl.c.ReadE2Subscriptions())
5964 // That needs to be completed before successful subscription query is possible
5965 <-time.After(time.Second * 1)
5967 // Check subscription
5968 queryXappSubscription(t, int64(e2SubsId), "RAN_NAME_1", []string{"localhost:13560"})
5970 // Delete subscription
5971 deleteSubscription(t, xappConn1, e2termConn1, &restSubId)
5973 //Wait that subs is cleaned
5974 waitSubsCleanup(t, e2SubsId, 10)
5976 mainCtrl.VerifyCounterValues(t)
5977 mainCtrl.VerifyAllClean(t)
5980 //-----------------------------------------------------------------------------
5981 // TestRESTSubReqAndSubDelOkSameActionWithRestartsInMiddle
5984 // +-------+ +-------+ +---------+ +---------+
5985 // | xapp2 | | xapp1 | | submgr | | e2term |
5986 // +-------+ +-------+ +---------+ +---------+
5988 // | | RESTSubReq1 | |
5989 // | |---------------->| |
5991 // | | RESTSubResp1 | |
5992 // | |<----------------| |
5995 // | | |------------->|
5997 // | | |<-------------|
5998 // | | RESTNotif1 | |
5999 // | |<----------------| |
6001 // | RESTSubReq2 | |
6002 // |------------------------------>| |
6004 // | RESTSubResp2 | |
6005 // |<------------------------------| |
6007 // | | RESTNotif2 | |
6008 // |<------------------------------| |
6010 // | | Submgr restart |
6012 // | | RESTSubDelReq1 | |
6013 // | |---------------->| |
6015 // | | RESTSubDelResp1 | |
6016 // | |<----------------| |
6018 // | | Submgr restart |
6020 // | RESTSubDelReq2 | |
6021 // |------------------------------>| |
6023 // | RESTSubDelResp2 | |
6024 // |<------------------------------| |
6026 // | | | SubDelReq2 |
6027 // | | |------------->|
6029 // | | | SubDelResp2 |
6030 // | | |<-------------|
6033 //-----------------------------------------------------------------------------
6034 func TestRESTSubReqAndSubDelOkSameActionWithRestartsInMiddle(t *testing.T) {
6036 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
6037 Counter{cRestSubReqFromXapp, 2},
6038 Counter{cRestSubRespToXapp, 2},
6039 Counter{cSubReqToE2, 1},
6040 Counter{cSubRespFromE2, 1},
6041 Counter{cRestSubNotifToXapp, 2},
6042 Counter{cMergedSubscriptions, 1},
6043 Counter{cUnmergedSubscriptions, 1},
6044 Counter{cRestSubDelReqFromXapp, 2},
6045 Counter{cSubDelReqToE2, 1},
6046 Counter{cSubDelRespFromE2, 1},
6047 Counter{cRestSubDelRespToXapp, 2},
6050 // Create subscription 1
6051 var params *teststube2ap.RESTSubsReqParams = nil
6052 restSubId1, e2SubsId1 := createSubscription(t, xappConn1, e2termConn1, params)
6053 xapp.Logger.Debug("Send REST subscriber request for subscriber 1 : %v", restSubId1)
6055 // Create subscription 2 with same action
6056 params = xappConn2.GetRESTSubsReqReportParams(subReqCount)
6057 params.SetMeid("RAN_NAME_1")
6058 xapp.Subscription.SetResponseCB(xappConn2.SubscriptionRespHandler)
6059 xappConn2.ExpectAnyNotification(t)
6060 restSubId2 := xappConn2.SendRESTSubsReq(t, params)
6061 xapp.Logger.Debug("Send REST subscriber request for subscriberId : %v", restSubId2)
6062 e2SubsId2 := xappConn2.WaitAnyRESTNotification(t)
6063 xapp.Logger.Debug("REST notification received e2SubsId=%v", e2SubsId2)
6065 queryXappSubscription(t, int64(e2SubsId1), "RAN_NAME_1", []string{"localhost:13560", "localhost:13660"})
6067 mainCtrl.SimulateRestart(t)
6068 xapp.Logger.Debug("mainCtrl.SimulateRestart done 1")
6070 // ReadE2Subscriptions() for testing is running in own go routine (go mainCtrl.c.ReadE2Subscriptions())
6071 // That needs to be completed before successful subscription delete is possible
6072 <-time.After(time.Second * 1)
6074 // Delete subscription 1, and wait until it has removed the first endpoint
6075 xappConn1.SendRESTSubsDelReq(t, &restSubId1)
6076 mainCtrl.WaitRESTSubscriptionDelete(restSubId1)
6077 // Above wait does not work correctly anymore as this delay makes this test case work
6079 mainCtrl.SimulateRestart(t)
6080 xapp.Logger.Debug("mainCtrl.SimulateRestart done 2")
6082 // ReadE2Subscriptions() for testing is running in own go routine (go mainCtrl.c.ReadE2Subscriptions())
6083 // That needs to be completed before successful subscription query is possible
6084 <-time.After(time.Second * 1)
6086 queryXappSubscription(t, int64(e2SubsId1), "RAN_NAME_1", []string{"localhost:13660"})
6088 // Delete subscription 2
6089 deleteXapp2Subscription(t, &restSubId2)
6091 //Wait that subs is cleaned
6092 waitSubsCleanup(t, e2SubsId2, 10)
6094 mainCtrl.VerifyCounterValues(t)
6095 mainCtrl.VerifyAllClean(t)
6098 //-----------------------------------------------------------------------------
6099 // TestRESTReportSubReqAndSubDelOk
6102 // +-------+ +---------+ +---------+
6103 // | xapp | | submgr | | e2term |
6104 // +-------+ +---------+ +---------+
6107 // |---------------->| |
6109 // | RESTSubResp | |
6110 // |<----------------| |
6113 // | |------------->|
6116 // | |<-------------|
6118 // |<----------------| |
6119 // | | SubReq | // Only one request sent in the teat case
6120 // | |------------->|
6123 // | |<-------------|
6125 // |<----------------| |
6129 // | RESTSubDelReq | |
6130 // |---------------->| |
6132 // | RESTSubDelResp| |
6133 // |<----------------| |
6135 // | |------------->|
6138 // | |<-------------|
6141 //-----------------------------------------------------------------------------
6143 func TestRESTReportSubReqAndSubDelOk(t *testing.T) {
6144 const subReqCount int = 1
6146 RESTReportSubReqAndSubDelOk(t, subReqCount, testIndex)
6149 func RESTReportSubReqAndSubDelOk(t *testing.T, subReqCount int, testIndex int) {
6150 xapp.Logger.Debug("TEST: TestRESTReportSubReqAndSubDelOk with testIndex %v", testIndex)
6152 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
6153 Counter{cRestSubReqFromXapp, 1},
6154 Counter{cRestSubRespToXapp, 1},
6155 Counter{cSubReqToE2, uint64(subReqCount)},
6156 Counter{cSubRespFromE2, uint64(subReqCount)},
6157 Counter{cRestSubNotifToXapp, 1},
6158 Counter{cRestSubDelReqFromXapp, 1},
6159 Counter{cRestSubDelRespToXapp, 1},
6160 Counter{cSubDelReqToE2, uint64(subReqCount)},
6161 Counter{cSubDelRespFromE2, uint64(subReqCount)},
6165 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
6166 restSubId := xappConn1.SendRESTSubsReq(t, params)
6168 var e2SubsId []uint32
6169 for i := 0; i < subReqCount; i++ {
6170 crereq, cremsg := e2termConn1.RecvSubsReq(t)
6171 xappConn1.ExpectRESTNotification(t, restSubId)
6173 e2termConn1.SendSubsResp(t, crereq, cremsg)
6174 instanceId := xappConn1.WaitRESTNotification(t, restSubId)
6175 xapp.Logger.Debug("TEST: REST notification received e2SubsId=%v", instanceId)
6176 e2SubsId = append(e2SubsId, instanceId)
6177 resp, _ := xapp.Subscription.QuerySubscriptions()
6178 assert.Equal(t, resp[i].SubscriptionID, (int64)(instanceId))
6179 assert.Equal(t, resp[i].Meid, "RAN_NAME_1")
6180 assert.Equal(t, resp[i].ClientEndpoint, []string{"localhost:13560"})
6185 xappConn1.SendRESTSubsDelReq(t, &restSubId)
6187 for i := 0; i < subReqCount; i++ {
6188 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
6189 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
6192 // Wait that subs is cleaned
6193 for i := 0; i < subReqCount; i++ {
6194 mainCtrl.wait_subs_clean(t, e2SubsId[i], 10)
6197 xappConn1.TestMsgChanEmpty(t)
6198 e2termConn1.TestMsgChanEmpty(t)
6199 mainCtrl.wait_registry_empty(t, 10)
6200 mainCtrl.VerifyAllClean(t)
6201 mainCtrl.VerifyCounterValues(t)
6204 //-----------------------------------------------------------------------------
6205 // TestRESTTwoPolicySubReqAndSubDelOk
6208 // +-------+ +---------+ +---------+
6209 // | xapp | | submgr | | e2term |
6210 // +-------+ +---------+ +---------+
6213 // |---------------->| |
6215 // | RESTSubResp | |
6216 // |<----------------| |
6219 // | |------------->|
6222 // | |<-------------|
6224 // |<----------------| |
6226 // | |------------->|
6229 // | |<-------------|
6231 // |<----------------| |
6233 // | RESTSubDelReq | |
6234 // |---------------->| |
6236 // | RESTSubDelResp| |
6237 // |<----------------| |
6239 // | |------------->|
6242 // | |<-------------|
6245 // | |------------->|
6248 // | |<-------------|
6251 //-----------------------------------------------------------------------------
6253 func TestRESTTwoPolicySubReqAndSubDelOk(t *testing.T) {
6255 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
6256 Counter{cRestSubReqFromXapp, 1},
6257 Counter{cRestSubRespToXapp, 1},
6258 Counter{cSubReqToE2, 2},
6259 Counter{cSubRespFromE2, 2},
6260 Counter{cRestSubNotifToXapp, 2},
6261 Counter{cRestSubDelReqFromXapp, 1},
6262 Counter{cSubDelReqToE2, 2},
6263 Counter{cSubDelRespFromE2, 2},
6264 Counter{cRestSubDelRespToXapp, 1},
6267 const subReqCount int = 2
6270 params := xappConn1.GetRESTSubsReqPolicyParams(subReqCount)
6271 restSubId := xappConn1.SendRESTSubsReq(t, params)
6272 e2SubsIds := sendAndReceiveMultipleE2SubReqs(t, subReqCount, xappConn1, e2termConn1, restSubId)
6274 assert.Equal(t, len(e2SubsIds), 2)
6277 xappConn1.SendRESTSubsDelReq(t, &restSubId)
6278 sendAndReceiveMultipleE2DelReqs(t, e2SubsIds, e2termConn1)
6280 xappConn1.TestMsgChanEmpty(t)
6281 e2termConn1.TestMsgChanEmpty(t)
6282 mainCtrl.wait_registry_empty(t, 10)
6284 mainCtrl.VerifyCounterValues(t)
6285 mainCtrl.VerifyAllClean(t)
6288 //-----------------------------------------------------------------------------
6289 // TestRESTPolicySubReqAndSubDelOk19E2Subs
6292 // +-------+ +---------+ +---------+
6293 // | xapp | | submgr | | e2term |
6294 // +-------+ +---------+ +---------+
6297 // |---------------->| |
6299 // | RESTSubResp | |
6300 // |<----------------| |
6303 // | |------------->|
6304 // | | | E2 subscription x 19
6306 // | |<-------------|
6308 // |<----------------| |
6310 // | RESTSubDelReq | |
6311 // |---------------->| |
6313 // | RESTSubDelResp| |
6314 // |<----------------| |
6315 // | | SubDelReq | ------
6316 // | |------------->|
6317 // | | | E2 subscription delete x 19
6319 // | |<-------------|
6323 //-----------------------------------------------------------------------------
6325 func TestRESTPolicySubReqAndSubDelOk19E2Subs(t *testing.T) {
6327 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
6328 Counter{cRestSubReqFromXapp, 1},
6329 Counter{cRestSubRespToXapp, 1},
6330 Counter{cSubReqToE2, 19},
6331 Counter{cSubRespFromE2, 19},
6332 Counter{cRestSubNotifToXapp, 19},
6333 Counter{cRestSubDelReqFromXapp, 1},
6334 Counter{cSubDelReqToE2, 19},
6335 Counter{cSubDelRespFromE2, 19},
6336 Counter{cRestSubDelRespToXapp, 1},
6339 const subReqCount int = 19
6341 params := xappConn1.GetRESTSubsReqPolicyParams(subReqCount)
6342 restSubId := xappConn1.SendRESTSubsReq(t, params)
6343 e2SubsIds := sendAndReceiveMultipleE2SubReqs(t, subReqCount, xappConn1, e2termConn1, restSubId)
6345 assert.Equal(t, len(e2SubsIds), 19)
6347 xappConn1.SendRESTSubsDelReq(t, &restSubId)
6348 sendAndReceiveMultipleE2DelReqs(t, e2SubsIds, e2termConn1)
6350 xappConn1.TestMsgChanEmpty(t)
6351 e2termConn1.TestMsgChanEmpty(t)
6352 mainCtrl.wait_registry_empty(t, 10)
6354 mainCtrl.VerifyCounterValues(t)
6355 mainCtrl.VerifyAllClean(t)
6358 //-----------------------------------------------------------------------------
6359 // TestRESTTwoPolicySubReqAndSubDelOk
6362 // +-------+ +---------+ +---------+
6363 // | xapp | | submgr | | e2term |
6364 // +-------+ +---------+ +---------+
6367 // |---------------->| |
6369 // | RESTSubResp | |
6370 // |<----------------| |
6373 // | |------------->|
6376 // | |<-------------|
6378 // |<----------------| |
6380 // | |------------->|
6383 // | |<-------------|
6385 // |<----------------| |
6387 // | RESTSubDelReq | |
6388 // |---------------->| |
6390 // | RESTSubDelResp| |
6391 // |<----------------| |
6393 // | |------------->|
6396 // | |<-------------|
6399 // | |------------->|
6402 // | |<-------------|
6405 //-----------------------------------------------------------------------------
6407 func TestRESTTwoReportSubReqAndSubDelOk(t *testing.T) {
6411 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
6412 Counter{cRestSubReqFromXapp, 1},
6413 Counter{cRestSubRespToXapp, 1},
6414 Counter{cSubReqToE2, uint64(subReqCount)},
6415 Counter{cSubRespFromE2, uint64(subReqCount)},
6416 Counter{cRestSubNotifToXapp, uint64(subReqCount)},
6417 Counter{cRestSubDelReqFromXapp, 1},
6418 Counter{cSubDelReqToE2, uint64(subReqCount)},
6419 Counter{cSubDelRespFromE2, uint64(subReqCount)},
6420 Counter{cRestSubDelRespToXapp, 1},
6424 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
6425 restSubId := xappConn1.SendRESTSubsReq(t, params)
6426 e2SubsIds := sendAndReceiveMultipleE2SubReqs(t, subReqCount, xappConn1, e2termConn1, restSubId)
6428 assert.Equal(t, len(e2SubsIds), subReqCount)
6431 xappConn1.SendRESTSubsDelReq(t, &restSubId)
6432 sendAndReceiveMultipleE2DelReqs(t, e2SubsIds, e2termConn1)
6434 xappConn1.TestMsgChanEmpty(t)
6435 e2termConn1.TestMsgChanEmpty(t)
6436 mainCtrl.wait_registry_empty(t, 10)
6438 mainCtrl.VerifyCounterValues(t)
6439 mainCtrl.VerifyAllClean(t)
6442 //-----------------------------------------------------------------------------
6443 // TestRESTTwoReportSubReqAndSubDelOkNoActParams
6446 // +-------+ +---------+ +---------+
6447 // | xapp | | submgr | | e2term |
6448 // +-------+ +---------+ +---------+
6451 // |---------------->| |
6453 // | RESTSubResp | |
6454 // |<----------------| |
6457 // | |------------->|
6460 // | |<-------------|
6462 // |<----------------| |
6464 // | |------------->|
6467 // | |<-------------|
6469 // |<----------------| |
6471 // | RESTSubDelReq | |
6472 // |---------------->| |
6474 // | RESTSubDelResp| |
6475 // |<----------------| |
6477 // | |------------->|
6480 // | |<-------------|
6483 // | |------------->|
6486 // | |<-------------|
6489 //-----------------------------------------------------------------------------
6491 func TestRESTTwoReportSubReqAndSubDelOkNoActParams(t *testing.T) {
6495 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
6496 Counter{cRestSubReqFromXapp, 1},
6497 Counter{cRestSubRespToXapp, 1},
6498 Counter{cSubReqToE2, uint64(subReqCount)},
6499 Counter{cSubRespFromE2, uint64(subReqCount)},
6500 Counter{cRestSubNotifToXapp, uint64(subReqCount)},
6501 Counter{cRestSubDelReqFromXapp, 1},
6502 Counter{cSubDelReqToE2, uint64(subReqCount)},
6503 Counter{cSubDelRespFromE2, uint64(subReqCount)},
6504 Counter{cRestSubDelRespToXapp, 1},
6508 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
6509 restSubId := xappConn1.SendRESTSubsReq(t, params)
6510 e2SubsIds := sendAndReceiveMultipleE2SubReqs(t, subReqCount, xappConn1, e2termConn1, restSubId)
6512 assert.Equal(t, len(e2SubsIds), subReqCount)
6515 xappConn1.SendRESTSubsDelReq(t, &restSubId)
6516 sendAndReceiveMultipleE2DelReqs(t, e2SubsIds, e2termConn1)
6518 xappConn1.TestMsgChanEmpty(t)
6519 e2termConn1.TestMsgChanEmpty(t)
6520 mainCtrl.wait_registry_empty(t, 10)
6522 mainCtrl.VerifyCounterValues(t)
6523 mainCtrl.VerifyAllClean(t)
6526 //-----------------------------------------------------------------------------
6527 // TestRESTReportSubReqAndSubDelOk19E2Subs
6530 // +-------+ +---------+ +---------+
6531 // | xapp | | submgr | | e2term |
6532 // +-------+ +---------+ +---------+
6535 // |---------------->| |
6537 // | RESTSubResp | |
6538 // |<----------------| |
6541 // | |------------->|
6542 // | | | E2 subscription x 19
6544 // | |<-------------|
6546 // |<----------------| |
6548 // | RESTSubDelReq | |
6549 // |---------------->| |
6551 // | RESTSubDelResp| |
6552 // |<----------------| |
6553 // | | SubDelReq | ------
6554 // | |------------->|
6555 // | | | E2 subscription delete x 19
6557 // | |<-------------|
6561 //-----------------------------------------------------------------------------
6563 func TestRESTReportSubReqAndSubDelOk19E2Subs(t *testing.T) {
6567 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
6568 Counter{cRestSubReqFromXapp, 1},
6569 Counter{cRestSubRespToXapp, 1},
6570 Counter{cSubReqToE2, uint64(subReqCount)},
6571 Counter{cSubRespFromE2, uint64(subReqCount)},
6572 Counter{cRestSubNotifToXapp, uint64(subReqCount)},
6573 Counter{cRestSubDelReqFromXapp, 1},
6574 Counter{cSubDelReqToE2, uint64(subReqCount)},
6575 Counter{cSubDelRespFromE2, uint64(subReqCount)},
6576 Counter{cRestSubDelRespToXapp, 1},
6580 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
6581 restSubId := xappConn1.SendRESTSubsReq(t, params)
6582 e2SubsIds := sendAndReceiveMultipleE2SubReqs(t, subReqCount, xappConn1, e2termConn1, restSubId)
6584 assert.Equal(t, len(e2SubsIds), subReqCount)
6587 xappConn1.SendRESTSubsDelReq(t, &restSubId)
6588 sendAndReceiveMultipleE2DelReqs(t, e2SubsIds, e2termConn1)
6590 xappConn1.TestMsgChanEmpty(t)
6591 e2termConn1.TestMsgChanEmpty(t)
6592 mainCtrl.wait_registry_empty(t, 10)
6594 mainCtrl.VerifyCounterValues(t)
6595 mainCtrl.VerifyAllClean(t)
6598 //-----------------------------------------------------------------------------
6599 // TestRESTSubReqReportSameActionDiffEventTriggerDefinitionLen
6602 // +-------+ +-------+ +---------+ +---------+
6603 // | xapp2 | | xapp1 | | submgr | | e2term |
6604 // +-------+ +-------+ +---------+ +---------+
6606 // | | RESTSubReq1 | |
6607 // | |------------->| |
6608 // | | RESTSubResp1 | |
6609 // | |<-------------| |
6612 // | | |------------->|
6614 // | RESTSubReq2 | |
6615 // |------------------------>| |
6616 // | RESTSubResp2 | |
6617 // |<------------------------| |
6620 // | | |------------->|
6623 // | | |<-------------|
6624 // | | RESTNotif1 | |
6625 // | |<-------------| |
6628 // | | |<-------------|
6630 // |<------------------------| |
6632 // | | [SUBS 1 DELETE] |
6634 // | | [SUBS 2 DELETE] |
6637 //-----------------------------------------------------------------------------
6639 func TestRESTSubReqReportSameActionDiffEventTriggerDefinitionLen(t *testing.T) {
6641 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
6642 Counter{cRestSubReqFromXapp, 2},
6643 Counter{cRestSubRespToXapp, 2},
6644 Counter{cSubReqToE2, 2},
6645 Counter{cSubRespFromE2, 2},
6646 Counter{cRestSubNotifToXapp, 2},
6647 Counter{cRestSubDelReqFromXapp, 2},
6648 Counter{cSubDelReqToE2, 2},
6649 Counter{cSubDelRespFromE2, 2},
6650 Counter{cRestSubDelRespToXapp, 2},
6654 var params *teststube2ap.RESTSubsReqParams = nil
6657 restSubId1, e2SubsId1 := createSubscription(t, xappConn1, e2termConn1, params)
6658 xapp.Logger.Debug("Send REST subscriber request for subscriberId : %v", restSubId1)
6660 queryXappSubscription(t, int64(e2SubsId1), "RAN_NAME_1", []string{"localhost:13560"})
6663 params = xappConn2.GetRESTSubsReqReportParams(subReqCount)
6664 params.SetMeid("RAN_NAME_1")
6665 eventTriggerDefinition := []int64{1234, 1}
6666 params.SetSubEventTriggerDefinition(eventTriggerDefinition)
6668 restSubId2 := xappConn2.SendRESTSubsReq(t, params)
6669 xapp.Logger.Debug("Send REST subscriber request for subscriberId : %v", restSubId2)
6670 crereq, cremsg := e2termConn1.RecvSubsReq(t)
6671 xappConn2.ExpectRESTNotification(t, restSubId2)
6672 e2termConn1.SendSubsResp(t, crereq, cremsg)
6673 e2SubsId2 := xappConn2.WaitRESTNotification(t, restSubId2)
6675 deleteXapp1Subscription(t, &restSubId1)
6676 deleteXapp2Subscription(t, &restSubId2)
6678 waitSubsCleanup(t, e2SubsId1, 10)
6679 waitSubsCleanup(t, e2SubsId2, 10)
6681 mainCtrl.VerifyCounterValues(t)
6682 mainCtrl.VerifyAllClean(t)
6685 //-----------------------------------------------------------------------------
6686 // TestRESTSubReqReportSameActionDiffActionListLen
6689 // +-------+ +-------+ +---------+ +---------+
6690 // | xapp2 | | xapp1 | | submgr | | e2term |
6691 // +-------+ +-------+ +---------+ +---------+
6693 // | | RESTSubReq1 | |
6694 // | |------------->| |
6695 // | | RESTSubResp1 | |
6696 // | |<-------------| |
6699 // | | |------------->|
6701 // | RESTSubReq2 | |
6702 // |------------------------>| |
6703 // | RESTSubResp2 | |
6704 // |<------------------------| |
6707 // | | |------------->|
6710 // | | |<-------------|
6711 // | | RESTNotif1 | |
6712 // | |<-------------| |
6715 // | | |<-------------|
6717 // |<------------------------| |
6719 // | | [SUBS 1 DELETE] |
6721 // | | [SUBS 2 DELETE] |
6724 //-----------------------------------------------------------------------------
6726 func TestRESTSubReqReportSameActionDiffActionListLen(t *testing.T) {
6728 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
6729 Counter{cRestSubReqFromXapp, 2},
6730 Counter{cRestSubRespToXapp, 2},
6731 Counter{cSubReqToE2, 2},
6732 Counter{cSubRespFromE2, 2},
6733 Counter{cRestSubNotifToXapp, 2},
6734 Counter{cRestSubDelReqFromXapp, 2},
6735 Counter{cSubDelReqToE2, 2},
6736 Counter{cSubDelRespFromE2, 2},
6737 Counter{cRestSubDelRespToXapp, 2},
6741 var params *teststube2ap.RESTSubsReqParams = nil
6744 restSubId1, e2SubsId1 := createSubscription(t, xappConn1, e2termConn1, params)
6745 xapp.Logger.Debug("Send REST subscriber request for subscriberId : %v", restSubId1)
6747 queryXappSubscription(t, int64(e2SubsId1), "RAN_NAME_1", []string{"localhost:13560"})
6750 params = xappConn2.GetRESTSubsReqReportParams(subReqCount)
6751 params.SetMeid("RAN_NAME_1")
6753 actionId := int64(1)
6754 actionType := "report"
6755 actionDefinition := []int64{5678, 1}
6756 subsequestActionType := "continue"
6757 timeToWait := "w10ms"
6758 params.AppendActionToActionToBeSetupList(actionId, actionType, actionDefinition, subsequestActionType, timeToWait)
6760 restSubId2 := xappConn2.SendRESTSubsReq(t, params)
6761 xapp.Logger.Debug("Send REST subscriber request for subscriberId : %v", restSubId2)
6762 crereq, cremsg := e2termConn1.RecvSubsReq(t)
6763 xappConn2.ExpectRESTNotification(t, restSubId2)
6764 e2termConn1.SendSubsResp(t, crereq, cremsg)
6765 e2SubsId2 := xappConn2.WaitRESTNotification(t, restSubId2)
6767 deleteXapp1Subscription(t, &restSubId1)
6768 deleteXapp2Subscription(t, &restSubId2)
6770 waitSubsCleanup(t, e2SubsId1, 10)
6771 waitSubsCleanup(t, e2SubsId2, 10)
6773 mainCtrl.VerifyCounterValues(t)
6774 mainCtrl.VerifyAllClean(t)
6777 //-----------------------------------------------------------------------------
6778 // TestRESTSubReqReportSameActionDiffActionID
6781 // +-------+ +-------+ +---------+ +---------+
6782 // | xapp2 | | xapp1 | | submgr | | e2term |
6783 // +-------+ +-------+ +---------+ +---------+
6785 // | | RESTSubReq1 | |
6786 // | |------------->| |
6787 // | | RESTSubResp1 | |
6788 // | |<-------------| |
6791 // | | |------------->|
6793 // | RESTSubReq2 | |
6794 // |------------------------>| |
6795 // | RESTSubResp2 | |
6796 // |<------------------------| |
6799 // | | |------------->|
6802 // | | |<-------------|
6803 // | | RESTNotif1 | |
6804 // | |<-------------| |
6807 // | | |<-------------|
6809 // |<------------------------| |
6811 // | | [SUBS 1 DELETE] |
6813 // | | [SUBS 2 DELETE] |
6816 //-----------------------------------------------------------------------------
6818 func TestRESTSubReqReportSameActionDiffActionID(t *testing.T) {
6820 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
6821 Counter{cRestSubReqFromXapp, 2},
6822 Counter{cRestSubRespToXapp, 2},
6823 Counter{cSubReqToE2, 2},
6824 Counter{cSubRespFromE2, 2},
6825 Counter{cRestSubNotifToXapp, 2},
6826 Counter{cRestSubDelReqFromXapp, 2},
6827 Counter{cSubDelReqToE2, 2},
6828 Counter{cSubDelRespFromE2, 2},
6829 Counter{cRestSubDelRespToXapp, 2},
6833 var params *teststube2ap.RESTSubsReqParams = nil
6836 restSubId1, e2SubsId1 := createSubscription(t, xappConn1, e2termConn1, params)
6837 xapp.Logger.Debug("Send REST subscriber request for subscriberId : %v", restSubId1)
6839 queryXappSubscription(t, int64(e2SubsId1), "RAN_NAME_1", []string{"localhost:13560"})
6842 params = xappConn2.GetRESTSubsReqReportParams(subReqCount)
6843 params.SetMeid("RAN_NAME_1")
6844 params.SetSubActionIDs(int64(2))
6846 restSubId2 := xappConn2.SendRESTSubsReq(t, params)
6847 xapp.Logger.Debug("Send REST subscriber request for subscriberId : %v", restSubId2)
6848 crereq, cremsg := e2termConn1.RecvSubsReq(t)
6849 xappConn2.ExpectRESTNotification(t, restSubId2)
6850 e2termConn1.SendSubsResp(t, crereq, cremsg)
6851 e2SubsId2 := xappConn2.WaitRESTNotification(t, restSubId2)
6853 deleteXapp1Subscription(t, &restSubId1)
6854 deleteXapp2Subscription(t, &restSubId2)
6856 waitSubsCleanup(t, e2SubsId1, 10)
6857 waitSubsCleanup(t, e2SubsId2, 10)
6859 mainCtrl.VerifyCounterValues(t)
6860 mainCtrl.VerifyAllClean(t)
6863 //-----------------------------------------------------------------------------
6864 // TestRESTSubReqDiffActionType
6867 // +-------+ +-------+ +---------+ +---------+
6868 // | xapp2 | | xapp1 | | submgr | | e2term |
6869 // +-------+ +-------+ +---------+ +---------+
6871 // | | RESTSubReq1 | |
6872 // | |------------->| |
6873 // | | RESTSubResp1 | |
6874 // | |<-------------| |
6877 // | | |------------->|
6879 // | RESTSubReq2 | |
6880 // |------------------------>| |
6881 // | RESTSubResp2 | |
6882 // |<------------------------| |
6885 // | | |------------->|
6888 // | | |<-------------|
6889 // | | RESTNotif1 | |
6890 // | |<-------------| |
6893 // | | |<-------------|
6895 // |<------------------------| |
6897 // | | [SUBS 1 DELETE] |
6899 // | | [SUBS 2 DELETE] |
6902 //-----------------------------------------------------------------------------
6904 func TestRESTSubReqDiffActionType(t *testing.T) {
6906 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
6907 Counter{cRestSubReqFromXapp, 2},
6908 Counter{cRestSubRespToXapp, 2},
6909 Counter{cSubReqToE2, 2},
6910 Counter{cSubRespFromE2, 2},
6911 Counter{cRestSubNotifToXapp, 2},
6912 Counter{cRestSubDelReqFromXapp, 2},
6913 Counter{cSubDelReqToE2, 2},
6914 Counter{cSubDelRespFromE2, 2},
6915 Counter{cRestSubDelRespToXapp, 2},
6918 const e2Timeout int64 = 2
6919 const e2RetryCount int64 = 2
6920 const routingNeeded bool = true
6923 params := xappConn1.GetRESTSubsReqPolicyParams(subReqCount)
6924 params.SetSubscriptionDirectives(e2Timeout, e2RetryCount, routingNeeded)
6927 restSubId1, e2SubsId1 := createSubscription(t, xappConn1, e2termConn1, params)
6928 xapp.Logger.Debug("Send REST subscriber request for subscriberId : %v", restSubId1)
6930 queryXappSubscription(t, int64(e2SubsId1), "RAN_NAME_1", []string{"localhost:13560"})
6933 params = xappConn2.GetRESTSubsReqReportParams(subReqCount)
6934 params.SetSubscriptionDirectives(e2Timeout, e2RetryCount, routingNeeded)
6935 params.SetMeid("RAN_NAME_1")
6937 restSubId2 := xappConn2.SendRESTSubsReq(t, params)
6938 xapp.Logger.Debug("Send REST subscriber request for subscriberId : %v", restSubId2)
6939 crereq, cremsg := e2termConn1.RecvSubsReq(t)
6940 xappConn2.ExpectRESTNotification(t, restSubId2)
6941 e2termConn1.SendSubsResp(t, crereq, cremsg)
6942 e2SubsId2 := xappConn2.WaitRESTNotification(t, restSubId2)
6944 deleteXapp1Subscription(t, &restSubId1)
6945 deleteXapp2Subscription(t, &restSubId2)
6947 waitSubsCleanup(t, e2SubsId1, 10)
6948 waitSubsCleanup(t, e2SubsId2, 10)
6950 mainCtrl.VerifyCounterValues(t)
6951 mainCtrl.VerifyAllClean(t)
6954 //-----------------------------------------------------------------------------
6955 // TestRESTSubReqPolicyAndSubDelOkSameAction
6958 // +-------+ +-------+ +---------+ +---------+
6959 // | xapp2 | | xapp1 | | submgr | | e2term |
6960 // +-------+ +-------+ +---------+ +---------+
6962 // | | RESTSubReq1 | |
6963 // | |------------->| |
6964 // | | RESTSubResp1 | |
6965 // | |<-------------| |
6968 // | | |------------->|
6970 // | RESTSubReq2 | |
6971 // |------------------------>| |
6972 // | RESTSubResp2 | |
6973 // |<------------------------| |
6976 // | | |------------->|
6979 // | | |<-------------|
6980 // | | RESTNotif1 | |
6981 // | |<-------------| |
6984 // | | |<-------------|
6986 // |<------------------------| |
6988 // | | [SUBS 1 DELETE] |
6990 // | | [SUBS 2 DELETE] |
6993 //-----------------------------------------------------------------------------
6995 func TestRESTSubReqPolicyAndSubDelOkSameAction(t *testing.T) {
6997 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
6998 Counter{cRestSubReqFromXapp, 2},
6999 Counter{cRestSubRespToXapp, 2},
7000 Counter{cSubReqToE2, 2},
7001 Counter{cSubRespFromE2, 2},
7002 Counter{cRestSubNotifToXapp, 2},
7003 Counter{cRestSubDelReqFromXapp, 2},
7004 Counter{cSubDelReqToE2, 2},
7005 Counter{cSubDelRespFromE2, 2},
7006 Counter{cRestSubDelRespToXapp, 2},
7009 const e2Timeout int64 = 2
7010 const e2RetryCount int64 = 2
7011 const routingNeeded bool = true
7014 params := xappConn1.GetRESTSubsReqPolicyParams(subReqCount)
7015 params.SetSubscriptionDirectives(e2Timeout, e2RetryCount, routingNeeded)
7018 restSubId1, e2SubsId1 := createSubscription(t, xappConn1, e2termConn1, params)
7019 xapp.Logger.Debug("Send REST subscriber request for subscriberId : %v", restSubId1)
7021 queryXappSubscription(t, int64(e2SubsId1), "RAN_NAME_1", []string{"localhost:13560"})
7024 params = xappConn2.GetRESTSubsReqPolicyParams(subReqCount)
7025 params.SetSubscriptionDirectives(e2Timeout, e2RetryCount, routingNeeded)
7026 params.SetMeid("RAN_NAME_1")
7028 restSubId2 := xappConn2.SendRESTSubsReq(t, params)
7029 xapp.Logger.Debug("Send REST subscriber request for subscriberId : %v", restSubId2)
7030 crereq, cremsg := e2termConn1.RecvSubsReq(t)
7031 xappConn2.ExpectRESTNotification(t, restSubId2)
7032 e2termConn1.SendSubsResp(t, crereq, cremsg)
7033 e2SubsId2 := xappConn2.WaitRESTNotification(t, restSubId2)
7035 deleteXapp1Subscription(t, &restSubId1)
7036 deleteXapp2Subscription(t, &restSubId2)
7038 waitSubsCleanup(t, e2SubsId1, 10)
7039 waitSubsCleanup(t, e2SubsId2, 10)
7041 mainCtrl.VerifyCounterValues(t)
7042 mainCtrl.VerifyAllClean(t)
7045 //-----------------------------------------------------------------------------
7046 // TestRESTSubReqReportSameActionDiffActionDefinitionLen
7049 // +-------+ +-------+ +---------+ +---------+
7050 // | xapp2 | | xapp1 | | submgr | | e2term |
7051 // +-------+ +-------+ +---------+ +---------+
7053 // | | RESTSubReq1 | |
7054 // | |------------->| |
7055 // | | RESTSubResp1 | |
7056 // | |<-------------| |
7059 // | | |------------->|
7061 // | RESTSubReq2 | |
7062 // |------------------------>| |
7063 // | RESTSubResp2 | |
7064 // |<------------------------| |
7067 // | | |------------->|
7070 // | | |<-------------|
7071 // | | RESTNotif1 | |
7072 // | |<-------------| |
7075 // | | |<-------------|
7077 // |<------------------------| |
7079 // | | [SUBS 1 DELETE] |
7081 // | | [SUBS 2 DELETE] |
7084 //-----------------------------------------------------------------------------
7086 func TestRESTSubReqReportSameActionDiffActionDefinitionLen(t *testing.T) {
7088 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
7089 Counter{cRestSubReqFromXapp, 2},
7090 Counter{cRestSubRespToXapp, 2},
7091 Counter{cSubReqToE2, 2},
7092 Counter{cSubRespFromE2, 2},
7093 Counter{cRestSubNotifToXapp, 2},
7094 Counter{cRestSubDelReqFromXapp, 2},
7095 Counter{cSubDelReqToE2, 2},
7096 Counter{cSubDelRespFromE2, 2},
7097 Counter{cRestSubDelRespToXapp, 2},
7101 var params *teststube2ap.RESTSubsReqParams = nil
7104 restSubId1, e2SubsId1 := createSubscription(t, xappConn1, e2termConn1, params)
7105 xapp.Logger.Debug("Send REST subscriber request for subscriberId : %v", restSubId1)
7107 queryXappSubscription(t, int64(e2SubsId1), "RAN_NAME_1", []string{"localhost:13560"})
7110 params = xappConn2.GetRESTSubsReqReportParams(subReqCount)
7111 params.SetMeid("RAN_NAME_1")
7112 actionDefinition := []int64{5678, 1}
7113 params.SetSubActionDefinition(actionDefinition)
7115 restSubId2 := xappConn2.SendRESTSubsReq(t, params)
7116 xapp.Logger.Debug("Send REST subscriber request for subscriberId : %v", restSubId2)
7117 crereq, cremsg := e2termConn1.RecvSubsReq(t)
7118 xappConn2.ExpectRESTNotification(t, restSubId2)
7119 e2termConn1.SendSubsResp(t, crereq, cremsg)
7120 e2SubsId2 := xappConn2.WaitRESTNotification(t, restSubId2)
7122 deleteXapp1Subscription(t, &restSubId1)
7123 deleteXapp2Subscription(t, &restSubId2)
7125 waitSubsCleanup(t, e2SubsId1, 10)
7126 waitSubsCleanup(t, e2SubsId2, 10)
7128 mainCtrl.VerifyCounterValues(t)
7129 mainCtrl.VerifyAllClean(t)
7132 //-----------------------------------------------------------------------------
7133 // TestRESTSubReqReportSameActionDiffActionDefinitionContents
7136 // +-------+ +-------+ +---------+ +---------+
7137 // | xapp2 | | xapp1 | | submgr | | e2term |
7138 // +-------+ +-------+ +---------+ +---------+
7140 // | | RESTSubReq1 | |
7141 // | |------------->| |
7142 // | | RESTSubResp1 | |
7143 // | |<-------------| |
7146 // | | |------------->|
7148 // | RESTSubReq2 | |
7149 // |------------------------>| |
7150 // | RESTSubResp2 | |
7151 // |<------------------------| |
7154 // | | |------------->|
7157 // | | |<-------------|
7158 // | | RESTNotif1 | |
7159 // | |<-------------| |
7162 // | | |<-------------|
7164 // |<------------------------| |
7166 // | | [SUBS 1 DELETE] |
7168 // | | [SUBS 2 DELETE] |
7171 //-----------------------------------------------------------------------------
7173 func TestRESTSubReqReportSameActionDiffActionDefinitionContents(t *testing.T) {
7175 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
7176 Counter{cRestSubReqFromXapp, 2},
7177 Counter{cRestSubRespToXapp, 2},
7178 Counter{cSubReqToE2, 2},
7179 Counter{cSubRespFromE2, 2},
7180 Counter{cRestSubNotifToXapp, 2},
7181 Counter{cRestSubDelReqFromXapp, 2},
7182 Counter{cSubDelReqToE2, 2},
7183 Counter{cSubDelRespFromE2, 2},
7184 Counter{cRestSubDelRespToXapp, 2},
7188 var params *teststube2ap.RESTSubsReqParams = nil
7191 restSubId1, e2SubsId1 := createSubscription(t, xappConn1, e2termConn1, params)
7192 xapp.Logger.Debug("Send REST subscriber request for subscriberId : %v", restSubId1)
7194 queryXappSubscription(t, int64(e2SubsId1), "RAN_NAME_1", []string{"localhost:13560"})
7197 params = xappConn2.GetRESTSubsReqReportParams(subReqCount)
7198 params.SetMeid("RAN_NAME_1")
7199 actionDefinition := []int64{56782}
7200 params.SetSubActionDefinition(actionDefinition)
7202 restSubId2 := xappConn2.SendRESTSubsReq(t, params)
7203 xapp.Logger.Debug("Send REST subscriber request for subscriberId : %v", restSubId2)
7204 crereq, cremsg := e2termConn1.RecvSubsReq(t)
7205 xappConn2.ExpectRESTNotification(t, restSubId2)
7206 e2termConn1.SendSubsResp(t, crereq, cremsg)
7207 e2SubsId2 := xappConn2.WaitRESTNotification(t, restSubId2)
7209 deleteXapp1Subscription(t, &restSubId1)
7210 deleteXapp2Subscription(t, &restSubId2)
7212 waitSubsCleanup(t, e2SubsId1, 10)
7213 waitSubsCleanup(t, e2SubsId2, 10)
7215 mainCtrl.VerifyCounterValues(t)
7216 mainCtrl.VerifyAllClean(t)
7219 //-----------------------------------------------------------------------------
7220 // TestRESTSubReqReportSameActionDiffSubsAction
7223 // +-------+ +-------+ +---------+ +---------+
7224 // | xapp2 | | xapp1 | | submgr | | e2term |
7225 // +-------+ +-------+ +---------+ +---------+
7227 // | | RESTSubReq1 | |
7228 // | |------------->| |
7229 // | | RESTSubResp1 | |
7230 // | |<-------------| |
7233 // | | |------------->|
7235 // | RESTSubReq2 | |
7236 // |------------------------>| |
7237 // | RESTSubResp2 | |
7238 // |<------------------------| |
7241 // | | |------------->|
7244 // | | |<-------------|
7245 // | | RESTNotif1 | |
7246 // | |<-------------| |
7249 // | | |<-------------|
7251 // |<------------------------| |
7253 // | | [SUBS 1 DELETE] |
7255 // | | [SUBS 2 DELETE] |
7258 //-----------------------------------------------------------------------------
7260 func TestRESTSubReqReportSameActionDiffSubsAction(t *testing.T) {
7262 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
7263 Counter{cRestSubReqFromXapp, 2},
7264 Counter{cRestSubRespToXapp, 2},
7265 Counter{cSubReqToE2, 2},
7266 Counter{cSubRespFromE2, 2},
7267 Counter{cRestSubNotifToXapp, 2},
7268 Counter{cRestSubDelReqFromXapp, 2},
7269 Counter{cSubDelReqToE2, 2},
7270 Counter{cSubDelRespFromE2, 2},
7271 Counter{cRestSubDelRespToXapp, 2},
7275 var params *teststube2ap.RESTSubsReqParams = nil
7278 restSubId1, e2SubsId1 := createSubscription(t, xappConn1, e2termConn1, params)
7279 xapp.Logger.Debug("Send REST subscriber request for subscriberId : %v", restSubId1)
7281 queryXappSubscription(t, int64(e2SubsId1), "RAN_NAME_1", []string{"localhost:13560"})
7284 params = xappConn2.GetRESTSubsReqReportParams(subReqCount)
7285 params.SetMeid("RAN_NAME_1")
7286 params.SetTimeToWait("w200ms")
7287 restSubId2 := xappConn2.SendRESTSubsReq(t, params)
7288 xapp.Logger.Debug("Send REST subscriber request for subscriberId : %v", restSubId2)
7289 crereq, cremsg := e2termConn1.RecvSubsReq(t)
7290 xappConn2.ExpectRESTNotification(t, restSubId2)
7291 e2termConn1.SendSubsResp(t, crereq, cremsg)
7292 e2SubsId2 := xappConn2.WaitRESTNotification(t, restSubId2)
7294 deleteXapp1Subscription(t, &restSubId1)
7295 deleteXapp2Subscription(t, &restSubId2)
7297 waitSubsCleanup(t, e2SubsId1, 10)
7298 waitSubsCleanup(t, e2SubsId2, 10)
7300 mainCtrl.VerifyCounterValues(t)
7301 mainCtrl.VerifyAllClean(t)
7304 //-----------------------------------------------------------------------------
7305 // TestRESTUnpackSubscriptionResponseDecodeFail
7308 // +-------+ +---------+ +---------+
7309 // | xapp | | submgr | | e2term |
7310 // +-------+ +---------+ +---------+
7313 // |---------------->| |
7315 // | RESTSubResp | |
7316 // |<----------------| |
7319 // | |------------->|
7321 // | | SubResp | ASN.1 decode fails
7322 // | |<-------------| Decode failed. More data needed. This will result timer expiry and resending
7325 // | |------------->|
7327 // | | SubFail | Duplicated action
7328 // | |<-------------|
7329 // | RESTNotif (fail)| |
7330 // |<----------------| |
7332 // | [SUBS DELETE] |
7335 //-----------------------------------------------------------------------------
7337 func TestRESTUnpackSubscriptionResponseDecodeFail(t *testing.T) {
7339 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
7340 Counter{cRestSubReqFromXapp, 1},
7341 Counter{cRestSubRespToXapp, 1},
7342 Counter{cSubReqToE2, 1},
7343 Counter{cSubReqTimerExpiry, 1},
7344 Counter{cSubReReqToE2, 1},
7345 Counter{cSubRespFromE2, 1},
7346 Counter{cSubFailFromE2, 1},
7347 Counter{cRestSubFailNotifToXapp, 1},
7348 Counter{cRestSubDelReqFromXapp, 1},
7349 Counter{cRestSubDelRespToXapp, 1},
7352 const subReqCount int = 1
7355 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
7356 restSubId := xappConn1.SendRESTSubsReq(t, params)
7358 crereq, cremsg := e2termConn1.RecvSubsReq(t)
7359 // Decode of this response fails which will result resending original request
7360 e2termConn1.SendInvalidE2Asn1Resp(t, cremsg, xapp.RIC_SUB_RESP)
7362 _, cremsg = e2termConn1.RecvSubsReq(t)
7364 xappConn1.ExpectRESTNotificationNok(t, restSubId, "allFail")
7366 // Subscription already created in E2 Node.
7367 fparams := &teststube2ap.E2StubSubsFailParams{}
7369 fparams.SetCauseVal(0, 1, 3) // CauseRIC / duplicate-action
7370 e2termConn1.SendSubsFail(t, fparams, cremsg)
7372 instanceId := xappConn1.WaitRESTNotification(t, restSubId)
7373 xapp.Logger.Debug("TEST: REST notification received e2SubsId=%v", instanceId)
7375 xappConn1.SendRESTSubsDelReq(t, &restSubId)
7377 // Wait that subs is cleaned
7378 mainCtrl.wait_subs_clean(t, crereq.RequestId.InstanceId, 10)
7380 xappConn1.TestMsgChanEmpty(t)
7381 e2termConn1.TestMsgChanEmpty(t)
7382 mainCtrl.wait_registry_empty(t, 10)
7383 mainCtrl.VerifyAllClean(t)
7384 mainCtrl.VerifyCounterValues(t)
7387 //-----------------------------------------------------------------------------
7388 // TestRESTUnpackSubscriptionResponseUnknownInstanceId
7391 // +-------+ +---------+ +---------+
7392 // | xapp | | submgr | | e2term |
7393 // +-------+ +---------+ +---------+
7396 // |---------------->| |
7398 // | RESTSubResp | |
7399 // |<----------------| |
7402 // | |------------->|
7404 // | | SubResp | Unknown instanceId
7405 // | |<-------------| No valid subscription found with subIds [0]
7408 // | |------------->|
7410 // | | SubFail | Duplicated action
7411 // | |<-------------| No valid subscription found with subIds [0]
7412 // | RESTNotif (fail)| |
7413 // |<----------------| |
7415 // | |------------->|
7418 // | |<-------------|
7420 // | [SUBS DELETE] |
7423 //-----------------------------------------------------------------------------
7425 func TestRESTUnpackSubscriptionResponseUnknownInstanceId(t *testing.T) {
7427 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
7428 Counter{cRestSubReqFromXapp, 1},
7429 Counter{cRestSubRespToXapp, 1},
7430 Counter{cSubReqToE2, 1},
7431 Counter{cSubReqTimerExpiry, 2},
7432 Counter{cSubReReqToE2, 1},
7433 Counter{cSubRespFromE2, 1},
7434 Counter{cSubFailFromE2, 1},
7435 Counter{cRestSubFailNotifToXapp, 1},
7436 Counter{cRestSubDelReqFromXapp, 1},
7437 Counter{cRestSubDelRespToXapp, 1},
7438 Counter{cSubDelReqToE2, 1},
7439 Counter{cSubDelRespFromE2, 1},
7442 const subReqCount int = 1
7445 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
7446 restSubId := xappConn1.SendRESTSubsReq(t, params)
7448 crereq, cremsg := e2termConn1.RecvSubsReq(t)
7450 // Unknown instanceId 0 in this response which will result resending original request
7451 orgInstanceId := crereq.RequestId.InstanceId
7452 crereq.RequestId.InstanceId = 0
7453 e2termConn1.SendSubsResp(t, crereq, cremsg)
7455 _, cremsg = e2termConn1.RecvSubsReq(t)
7457 xappConn1.ExpectRESTNotificationNok(t, restSubId, "allFail")
7459 // Subscription already created in E2 Node. E2 Node responds with failure but there is also same unknown instanceId 0
7460 fparams := &teststube2ap.E2StubSubsFailParams{}
7462 fparams.SetCauseVal(0, 1, 3) // CauseRIC / duplicate-action
7463 e2termConn1.SendSubsFail(t, fparams, cremsg)
7465 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
7466 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
7468 instanceId := xappConn1.WaitRESTNotification(t, restSubId)
7469 xapp.Logger.Debug("TEST: REST notification received e2SubsId=%v", instanceId)
7471 xappConn1.SendRESTSubsDelReq(t, &restSubId)
7473 // Wait that subs is cleaned
7474 mainCtrl.wait_subs_clean(t, orgInstanceId, 10)
7476 xappConn1.TestMsgChanEmpty(t)
7477 e2termConn1.TestMsgChanEmpty(t)
7478 mainCtrl.wait_registry_empty(t, 10)
7479 mainCtrl.VerifyAllClean(t)
7480 mainCtrl.VerifyCounterValues(t)
7483 //-----------------------------------------------------------------------------
7484 // TestRESTUnpackSubscriptionResponseNoTransaction
7487 // +-------+ +---------+ +---------+
7488 // | xapp | | submgr | | e2term |
7489 // +-------+ +---------+ +---------+
7492 // |---------------->| |
7494 // | RESTSubResp | |
7495 // |<----------------| |
7498 // | |------------->|
7500 // | | SubResp | No transaction for the response
7501 // | |<-------------| Ongoing transaction not found. This will result timer expiry and resending
7504 // | |------------->|
7506 // | | SubFail | Duplicated action
7507 // | |<-------------|Ongoing transaction not found. This will result timer expiry and sending delete
7508 // | RESTNotif (fail)| |
7509 // |<----------------| |
7511 // | |------------->|
7514 // | |<-------------| Ongoing transaction not found. This will result timer expiry and resending
7517 // | |------------->|
7520 // | |<-------------| Ongoing transaction not found.
7522 // | [SUBS DELETE] |
7525 //-----------------------------------------------------------------------------
7527 func TestRESTUnpackSubscriptionResponseNoTransaction(t *testing.T) {
7529 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
7530 Counter{cRestSubReqFromXapp, 1},
7531 Counter{cRestSubRespToXapp, 1},
7532 Counter{cSubReqToE2, 1},
7533 Counter{cSubReqTimerExpiry, 2},
7534 Counter{cSubReReqToE2, 1},
7535 Counter{cSubRespFromE2, 1},
7536 Counter{cSubFailFromE2, 1},
7537 Counter{cRestSubFailNotifToXapp, 1},
7538 Counter{cRestSubDelReqFromXapp, 1},
7539 Counter{cRestSubDelRespToXapp, 1},
7540 Counter{cSubDelReqToE2, 1},
7541 Counter{cSubDelReqTimerExpiry, 2},
7542 Counter{cSubDelReReqToE2, 1},
7543 Counter{cSubDelRespFromE2, 2},
7546 const subReqCount int = 1
7549 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
7550 restSubId := xappConn1.SendRESTSubsReq(t, params)
7552 crereq, cremsg := e2termConn1.RecvSubsReq(t)
7554 mainCtrl.MakeTransactionNil(t, crereq.RequestId.InstanceId)
7555 // No transaction exist for this response which will result resending original request
7556 e2termConn1.SendSubsResp(t, crereq, cremsg)
7558 _, cremsg = e2termConn1.RecvSubsReq(t)
7560 xappConn1.ExpectRESTNotificationNok(t, restSubId, "allFail")
7562 // Subscription already created in E2 Node.
7563 fparams := &teststube2ap.E2StubSubsFailParams{}
7565 fparams.SetCauseVal(0, 1, 3) // CauseRIC / duplicate-action
7566 e2termConn1.SendSubsFail(t, fparams, cremsg)
7568 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
7569 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
7571 // Resending happens because there no transaction
7572 delreq, delmsg = e2termConn1.RecvSubsDelReq(t)
7573 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
7575 instanceId := xappConn1.WaitRESTNotification(t, restSubId)
7576 xapp.Logger.Debug("TEST: REST notification received e2SubsId=%v", instanceId)
7578 xappConn1.SendRESTSubsDelReq(t, &restSubId)
7580 // Wait that subs is cleaned
7581 mainCtrl.wait_subs_clean(t, crereq.RequestId.InstanceId, 10)
7583 xappConn1.TestMsgChanEmpty(t)
7584 e2termConn1.TestMsgChanEmpty(t)
7585 mainCtrl.wait_registry_empty(t, 10)
7586 mainCtrl.VerifyAllClean(t)
7587 mainCtrl.VerifyCounterValues(t)
7590 //-----------------------------------------------------------------------------
7591 // TestRESTUnpackSubscriptionFailureDecodeFail
7594 // +-------+ +---------+ +---------+
7595 // | xapp | | submgr | | e2term |
7596 // +-------+ +---------+ +---------+
7599 // |---------------->| |
7601 // | RESTSubResp | |
7602 // |<----------------| |
7605 // | |------------->|
7607 // | | SubFail | ASN.1 decode fails
7608 // | |<-------------| Decode failed. More data needed. This will result timer expiry and resending
7611 // | |------------->|
7613 // | | SubFail | Duplicated action
7614 // | |<-------------|
7615 // | RESTNotif (fail)| |
7616 // |<----------------| |
7618 // | [SUBS DELETE] |
7621 //-----------------------------------------------------------------------------
7623 func TestRESTUnpackSubscriptionFailureDecodeFail(t *testing.T) {
7625 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
7626 Counter{cRestSubReqFromXapp, 1},
7627 Counter{cRestSubRespToXapp, 1},
7628 Counter{cSubReqToE2, 1},
7629 Counter{cSubReqTimerExpiry, 1},
7630 Counter{cSubReReqToE2, 1},
7631 Counter{cSubFailFromE2, 2},
7632 Counter{cRestSubFailNotifToXapp, 1},
7633 Counter{cRestSubDelReqFromXapp, 1},
7634 Counter{cRestSubDelRespToXapp, 1},
7637 const subReqCount int = 1
7640 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
7641 restSubId := xappConn1.SendRESTSubsReq(t, params)
7643 crereq, cremsg := e2termConn1.RecvSubsReq(t)
7645 // Decode of this response fails which will result resending original request
7646 e2termConn1.SendInvalidE2Asn1Resp(t, cremsg, xapp.RIC_SUB_FAILURE)
7648 _, cremsg = e2termConn1.RecvSubsReq(t)
7650 xappConn1.ExpectRESTNotificationNok(t, restSubId, "allFail")
7652 // Subscription already created in E2 Node.
7653 fparams := &teststube2ap.E2StubSubsFailParams{}
7655 fparams.SetCauseVal(0, 1, 3) // CauseRIC / duplicate-action
7656 e2termConn1.SendSubsFail(t, fparams, cremsg)
7658 instanceId := xappConn1.WaitRESTNotification(t, restSubId)
7659 xapp.Logger.Debug("TEST: REST notification received e2SubsId=%v", instanceId)
7661 xappConn1.SendRESTSubsDelReq(t, &restSubId)
7663 // Wait that subs is cleaned
7664 mainCtrl.wait_subs_clean(t, crereq.RequestId.InstanceId, 10)
7666 xappConn1.TestMsgChanEmpty(t)
7667 e2termConn1.TestMsgChanEmpty(t)
7668 mainCtrl.wait_registry_empty(t, 10)
7669 mainCtrl.VerifyAllClean(t)
7670 mainCtrl.VerifyCounterValues(t)
7673 //-----------------------------------------------------------------------------
7674 // TestRESTUnpackSubscriptionResponseUnknownInstanceId
7677 // +-------+ +---------+ +---------+
7678 // | xapp | | submgr | | e2term |
7679 // +-------+ +---------+ +---------+
7682 // |---------------->| |
7684 // | RESTSubResp | |
7685 // |<----------------| |
7688 // | |------------->|
7690 // | | SubFail | Unknown instanceId
7691 // | |<-------------| No valid subscription found with subIds [0]. This will result timer expiry and resending
7694 // | |------------->|
7696 // | | SubFail | Duplicated action
7697 // | |<-------------|No valid subscription found with subIds [0]. This will result timer expiry and sending delete
7698 // | RESTNotif (fail)| |
7699 // |<----------------| |
7701 // | |------------->|
7704 // | |<-------------|
7706 // | [SUBS DELETE] |
7709 //-----------------------------------------------------------------------------
7710 func TestRESTUnpackSubscriptionFailureUnknownInstanceId(t *testing.T) {
7712 const subReqCount int = 1
7714 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
7715 Counter{cRestSubReqFromXapp, 1},
7716 Counter{cRestSubRespToXapp, 1},
7717 Counter{cSubReqToE2, 1},
7718 Counter{cSubReqTimerExpiry, 2},
7719 Counter{cSubReReqToE2, 1},
7720 Counter{cSubFailFromE2, 2},
7721 Counter{cRestSubFailNotifToXapp, 1},
7722 Counter{cRestSubDelReqFromXapp, 1},
7723 Counter{cRestSubDelRespToXapp, 1},
7724 Counter{cSubDelReqToE2, 1},
7725 Counter{cSubDelRespFromE2, 1},
7729 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
7730 restSubId := xappConn1.SendRESTSubsReq(t, params)
7732 crereq, cremsg := e2termConn1.RecvSubsReq(t)
7734 // Unknown instanceId 0 in this response which will result resending original request
7735 fparams := &teststube2ap.E2StubSubsFailParams{}
7737 fparams.Fail.RequestId.InstanceId = 0
7738 e2termConn1.SendSubsFail(t, fparams, cremsg)
7740 _, cremsg = e2termConn1.RecvSubsReq(t)
7742 xappConn1.ExpectRESTNotificationNok(t, restSubId, "allFail")
7744 // Subscription already created in E2 Node. E2 Node responds with failure but there is also same unknown instanceId 0
7745 fparams.SetCauseVal(0, 1, 3) // CauseRIC / duplicate-action
7746 e2termConn1.SendSubsFail(t, fparams, cremsg)
7748 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
7749 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
7751 instanceId := xappConn1.WaitRESTNotification(t, restSubId)
7752 xapp.Logger.Debug("TEST: REST notification received e2SubsId=%v", instanceId)
7754 xappConn1.SendRESTSubsDelReq(t, &restSubId)
7756 // Wait that subs is cleaned
7757 mainCtrl.wait_subs_clean(t, crereq.RequestId.InstanceId, 10)
7759 xappConn1.TestMsgChanEmpty(t)
7760 e2termConn1.TestMsgChanEmpty(t)
7761 mainCtrl.wait_registry_empty(t, 10)
7762 mainCtrl.VerifyAllClean(t)
7763 mainCtrl.VerifyCounterValues(t)
7766 //-----------------------------------------------------------------------------
7767 // TestRESTUnpackSubscriptionFailureNoTransaction
7770 // +-------+ +---------+ +---------+
7771 // | xapp | | submgr | | e2term |
7772 // +-------+ +---------+ +---------+
7775 // |---------------->| |
7777 // | RESTSubResp | |
7778 // |<----------------| |
7781 // | |------------->|
7783 // | | SubFail | No transaction for the response
7784 // | |<-------------| Ongoing transaction not found. This will result timer expiry and resending
7787 // | |------------->|
7789 // | | SubFail | Duplicated action
7790 // | |<-------------| Ongoing transaction not found. This will result timer expiry and sending delete
7791 // | RESTNotif (fail)| |
7792 // |<----------------| |
7794 // | |------------->|
7797 // | |<-------------| Ongoing transaction not found. This will result timer expiry and resending
7800 // | |------------->|
7803 // | |<-------------| Ongoing transaction not found.
7805 // | [SUBS DELETE] |
7808 //-----------------------------------------------------------------------------
7810 func TestRESTUnpackSubscriptionFailureNoTransaction(t *testing.T) {
7812 const subReqCount int = 1
7814 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
7815 Counter{cRestSubReqFromXapp, 1},
7816 Counter{cRestSubRespToXapp, 1},
7817 Counter{cSubReqToE2, 1},
7818 Counter{cSubReqTimerExpiry, 2},
7819 Counter{cSubReReqToE2, 1},
7820 Counter{cSubFailFromE2, 2},
7821 Counter{cRestSubFailNotifToXapp, 1},
7822 Counter{cRestSubDelReqFromXapp, 1},
7823 Counter{cRestSubDelRespToXapp, 1},
7824 Counter{cSubDelReqToE2, 1},
7825 Counter{cSubDelReqTimerExpiry, 2},
7826 Counter{cSubDelReReqToE2, 1},
7827 Counter{cSubDelRespFromE2, 2},
7831 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
7832 restSubId := xappConn1.SendRESTSubsReq(t, params)
7834 crereq, cremsg := e2termConn1.RecvSubsReq(t)
7836 mainCtrl.MakeTransactionNil(t, crereq.RequestId.InstanceId)
7838 // No transaction exist for this response which will result resending original request
7839 fparams := &teststube2ap.E2StubSubsFailParams{}
7841 e2termConn1.SendSubsFail(t, fparams, cremsg)
7843 _, cremsg = e2termConn1.RecvSubsReq(t)
7845 xappConn1.ExpectRESTNotificationNok(t, restSubId, "allFail")
7847 // Subscription already created in E2 Node.
7848 fparams.SetCauseVal(0, 1, 3) // CauseRIC / duplicate-action
7849 e2termConn1.SendSubsFail(t, fparams, cremsg)
7851 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
7852 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
7854 // Resending happens because there no transaction
7855 delreq, delmsg = e2termConn1.RecvSubsDelReq(t)
7856 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
7858 instanceId := xappConn1.WaitRESTNotification(t, restSubId)
7859 xapp.Logger.Debug("TEST: REST notification received e2SubsId=%v", instanceId)
7861 xappConn1.SendRESTSubsDelReq(t, &restSubId)
7863 // Wait that subs is cleaned
7864 mainCtrl.wait_subs_clean(t, crereq.RequestId.InstanceId, 10)
7866 xappConn1.TestMsgChanEmpty(t)
7867 e2termConn1.TestMsgChanEmpty(t)
7868 mainCtrl.wait_registry_empty(t, 10)
7869 mainCtrl.VerifyAllClean(t)
7870 mainCtrl.VerifyCounterValues(t)
7873 //-----------------------------------------------------------------------------
7874 // TestRESTUnpackSubscriptionDeleteResponseDecodeFail
7877 // +-------+ +---------+ +---------+
7878 // | xapp | | submgr | | e2term |
7879 // +-------+ +---------+ +---------+
7881 // | [SUBS CREATE] |
7884 // | RESTSubDelReq | |
7885 // |---------------->| |
7887 // | RESTSubDelResp | |
7888 // |<----------------| |
7891 // | |------------->|
7893 // | | SubDelResp | ASN.1 decode fails.
7894 // | |<-------------| Decode failed. More data needed. This will result timer expiry and resending
7897 // | |------------->|
7899 // | | SubDelFail | Subscription does exist any more in E2 node
7900 // | |<-------------|
7902 // | [SUBS DELETE] |
7905 //-----------------------------------------------------------------------------
7907 func TestRESTUnpackSubscriptionDeleteResponseDecodeFail(t *testing.T) {
7909 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
7910 Counter{cRestSubReqFromXapp, 1},
7911 Counter{cRestSubRespToXapp, 1},
7912 Counter{cSubReqToE2, 1},
7913 Counter{cSubRespFromE2, 1},
7914 Counter{cRestSubNotifToXapp, 1},
7915 Counter{cRestSubDelReqFromXapp, 1},
7916 Counter{cRestSubDelRespToXapp, 1},
7917 Counter{cSubDelReqToE2, 1},
7918 Counter{cSubDelReqTimerExpiry, 1},
7919 Counter{cSubDelReReqToE2, 1},
7920 Counter{cSubDelFailFromE2, 1},
7921 Counter{cSubDelRespFromE2, 1},
7925 var params *teststube2ap.RESTSubsReqParams = nil
7926 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
7929 xappConn1.SendRESTSubsDelReq(t, &restSubId)
7931 // E2t: Receive 1st SubsDelReq
7932 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
7934 // Decode of this response fails which will result resending original request
7935 e2termConn1.SendInvalidE2Asn1Resp(t, delmsg, xapp.RIC_SUB_DEL_RESP)
7937 // E2t: Receive 2nd SubsDelReq and send SubsDelResp
7938 delreq, delmsg = e2termConn1.RecvSubsDelReq(t)
7940 // Subscription does not exist in in E2 Node.
7941 e2termConn1.SendSubsDelFail(t, delreq, delmsg)
7943 // Wait that subs is cleaned
7944 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
7946 xappConn1.TestMsgChanEmpty(t)
7947 e2termConn1.TestMsgChanEmpty(t)
7948 mainCtrl.wait_registry_empty(t, 10)
7949 mainCtrl.VerifyAllClean(t)
7950 mainCtrl.VerifyCounterValues(t)
7953 //-----------------------------------------------------------------------------
7954 // TestRESTUnpackSubscriptionDeleteResponseUnknownInstanceId
7957 // +-------+ +---------+ +---------+
7958 // | xapp | | submgr | | e2term |
7959 // +-------+ +---------+ +---------+
7961 // | [SUBS CREATE] |
7964 // | RESTSubDelReq | |
7965 // |---------------->| |
7967 // | RESTSubDelResp | |
7968 // |<----------------| |
7971 // | |------------->|
7973 // | | SubDelResp | Unknown instanceId
7974 // | |<-------------| No valid subscription found with subIds [0]. This will result timer expiry and resending
7977 // | |------------->|
7979 // | | SubDelFail | Subscription does exist any more in E2 node
7980 // | |<-------------|
7982 // | [SUBS DELETE] |
7984 //-----------------------------------------------------------------------------
7986 func TestRESTUnpackSubscriptionDeleteResponseUnknownInstanceId(t *testing.T) {
7988 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
7989 Counter{cRestSubReqFromXapp, 1},
7990 Counter{cRestSubRespToXapp, 1},
7991 Counter{cSubReqToE2, 1},
7992 Counter{cSubRespFromE2, 1},
7993 Counter{cRestSubNotifToXapp, 1},
7994 Counter{cRestSubDelReqFromXapp, 1},
7995 Counter{cRestSubDelRespToXapp, 1},
7996 Counter{cSubDelReqToE2, 1},
7997 Counter{cSubDelReqTimerExpiry, 1},
7998 Counter{cSubDelReReqToE2, 1},
7999 Counter{cSubDelRespFromE2, 1},
8000 Counter{cSubDelFailFromE2, 1},
8004 var params *teststube2ap.RESTSubsReqParams = nil
8005 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
8008 xappConn1.SendRESTSubsDelReq(t, &restSubId)
8010 // E2t: Receive 1st SubsDelReq
8011 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
8013 // Unknown instanceId in this response which will result resending original request
8014 delreq.RequestId.InstanceId = 0
8015 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
8017 // E2t: Receive 2nd SubsDelReq
8018 delreq, delmsg = e2termConn1.RecvSubsDelReq(t)
8020 // Subscription does not exist in in E2 Node.
8021 e2termConn1.SendSubsDelFail(t, delreq, delmsg)
8023 // Wait that subs is cleaned
8024 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
8026 xappConn1.TestMsgChanEmpty(t)
8027 e2termConn1.TestMsgChanEmpty(t)
8028 mainCtrl.wait_registry_empty(t, 10)
8029 mainCtrl.VerifyAllClean(t)
8030 mainCtrl.VerifyCounterValues(t)
8033 //-----------------------------------------------------------------------------
8034 // TestRESTUnpackSubscriptionDeleteResponseNoTransaction
8037 // +-------+ +---------+ +---------+
8038 // | xapp | | submgr | | e2term |
8039 // +-------+ +---------+ +---------+
8041 // | [SUBS CREATE] |
8044 // | RESTSubDelReq | |
8045 // |---------------->| |
8047 // | RESTSubDelResp | |
8048 // |<----------------| |
8051 // | |------------->|
8053 // | | SubDelResp | No transaction for the response
8054 // | |<-------------| Ongoing transaction not found. This will result timer expiry and resending
8057 // | |------------->|
8059 // | | SubDelFail | Subscription does exist any more in E2 node
8060 // | |<-------------| Ongoing transaction not found. This will result timer expiry
8062 // | [SUBS DELETE] |
8064 //-----------------------------------------------------------------------------
8066 func TestRESTUnpackSubscriptionDeleteResponseNoTransaction(t *testing.T) {
8068 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
8069 Counter{cRestSubReqFromXapp, 1},
8070 Counter{cRestSubRespToXapp, 1},
8071 Counter{cSubReqToE2, 1},
8072 Counter{cSubRespFromE2, 1},
8073 Counter{cRestSubNotifToXapp, 1},
8074 Counter{cRestSubDelReqFromXapp, 1},
8075 Counter{cRestSubDelRespToXapp, 1},
8076 Counter{cSubDelReqToE2, 1},
8077 Counter{cSubDelReqTimerExpiry, 2},
8078 Counter{cSubDelReReqToE2, 1},
8079 Counter{cSubDelRespFromE2, 1},
8080 Counter{cSubDelFailFromE2, 1},
8084 var params *teststube2ap.RESTSubsReqParams = nil
8085 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
8088 xappConn1.SendRESTSubsDelReq(t, &restSubId)
8090 // E2t: Receive 1st SubsDelReq
8091 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
8093 mainCtrl.MakeTransactionNil(t, e2SubsId)
8095 // No transaction exist for this response which will result resending original request
8096 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
8098 // E2t: Receive 2nd SubsDelReq
8099 delreq, delmsg = e2termConn1.RecvSubsDelReq(t)
8101 // Subscription does not exist in in E2 Node.
8102 e2termConn1.SendSubsDelFail(t, delreq, delmsg)
8104 // Wait that subs is cleaned
8105 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
8107 xappConn1.TestMsgChanEmpty(t)
8108 e2termConn1.TestMsgChanEmpty(t)
8109 mainCtrl.wait_registry_empty(t, 10)
8110 mainCtrl.VerifyAllClean(t)
8111 mainCtrl.VerifyCounterValues(t)
8114 //-----------------------------------------------------------------------------
8115 // TestRESTUnpackSubscriptionDeleteFailureDecodeFail
8118 // +-------+ +---------+ +---------+
8119 // | xapp | | submgr | | e2term |
8120 // +-------+ +---------+ +---------+
8122 // | [SUBS CREATE] |
8125 // | RESTSubDelReq | |
8126 // |---------------->| |
8128 // | RESTSubDelResp | |
8129 // |<----------------| |
8132 // | |------------->|
8134 // | | SubDelFail | ASN.1 decode fails
8135 // | |<-------------| Decode failed. More data needed. This will result timer expiry and resending
8138 // | |------------->|
8140 // | | SubDelFail | Subscription does exist any more in E2 node
8141 // | |<-------------|
8143 // | [SUBS DELETE] |
8145 //-----------------------------------------------------------------------------
8147 func TestRESTUnpackSubscriptionDeleteFailureDecodeFail(t *testing.T) {
8149 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
8150 Counter{cRestSubReqFromXapp, 1},
8151 Counter{cRestSubRespToXapp, 1},
8152 Counter{cSubReqToE2, 1},
8153 Counter{cSubRespFromE2, 1},
8154 Counter{cRestSubNotifToXapp, 1},
8155 Counter{cRestSubDelReqFromXapp, 1},
8156 Counter{cRestSubDelRespToXapp, 1},
8157 Counter{cSubDelReqToE2, 1},
8158 Counter{cSubDelReqTimerExpiry, 1},
8159 Counter{cSubDelReReqToE2, 1},
8160 Counter{cSubDelFailFromE2, 2},
8164 var params *teststube2ap.RESTSubsReqParams = nil
8165 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
8168 xappConn1.SendRESTSubsDelReq(t, &restSubId)
8170 // E2t: Receive 1st SubsDelReq
8171 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
8173 // Decode of this response fails which will result resending original request
8174 e2termConn1.SendInvalidE2Asn1Resp(t, delmsg, xapp.RIC_SUB_DEL_FAILURE)
8176 // E2t: Receive 2nd SubsDelReq and send SubsDelResp
8177 delreq, delmsg = e2termConn1.RecvSubsDelReq(t)
8179 // Subscription does not exist in in E2 Node.
8180 e2termConn1.SendSubsDelFail(t, delreq, delmsg)
8182 // Wait that subs is cleaned
8183 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
8185 xappConn1.TestMsgChanEmpty(t)
8186 e2termConn1.TestMsgChanEmpty(t)
8187 mainCtrl.wait_registry_empty(t, 10)
8188 mainCtrl.VerifyAllClean(t)
8189 mainCtrl.VerifyCounterValues(t)
8192 //-----------------------------------------------------------------------------
8193 // TestRESTUnpackSubscriptionDeleteailureUnknownInstanceId
8196 // +-------+ +---------+ +---------+
8197 // | xapp | | submgr | | e2term |
8198 // +-------+ +---------+ +---------+
8200 // | [SUBS CREATE] |
8203 // | RESTSubDelReq | |
8204 // |---------------->| |
8206 // | RESTSubDelResp | |
8207 // |<----------------| |
8210 // | |------------->|
8212 // | | SubDelFail | Unknown instanceId
8213 // | |<-------------| No valid subscription found with subIds [0]. This will result timer expiry and resending
8216 // | |------------->|
8218 // | | SubDelFail | Subscription does exist any more in E2 node
8219 // | |<-------------| No valid subscription found with subIds [0].
8221 // | [SUBS DELETE] |
8223 //-----------------------------------------------------------------------------
8225 func TestRESTUnpackSubscriptionDeleteailureUnknownInstanceId(t *testing.T) {
8227 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
8228 Counter{cRestSubReqFromXapp, 1},
8229 Counter{cRestSubRespToXapp, 1},
8230 Counter{cSubReqToE2, 1},
8231 Counter{cSubRespFromE2, 1},
8232 Counter{cRestSubNotifToXapp, 1},
8233 Counter{cRestSubDelReqFromXapp, 1},
8234 Counter{cRestSubDelRespToXapp, 1},
8235 Counter{cSubDelReqToE2, 1},
8236 Counter{cSubDelReqTimerExpiry, 1},
8237 Counter{cSubDelReReqToE2, 1},
8238 Counter{cSubDelFailFromE2, 2},
8242 var params *teststube2ap.RESTSubsReqParams = nil
8243 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
8246 xappConn1.SendRESTSubsDelReq(t, &restSubId)
8248 // E2t: Receive 1st SubsDelReq
8249 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
8251 // Unknown instanceId 0 in this response which will result resending original request
8252 delreq.RequestId.InstanceId = 0
8253 e2termConn1.SendSubsDelFail(t, delreq, delmsg)
8255 // E2t: Receive 2nd SubsDelReq
8256 delreq, delmsg = e2termConn1.RecvSubsDelReq(t)
8258 // Subscription does not exist in in E2 Node. E2 Node responds with failure but there is also same unknown instanceId 0
8259 e2termConn1.SendSubsDelFail(t, delreq, delmsg)
8261 // Wait that subs is cleaned
8262 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
8264 xappConn1.TestMsgChanEmpty(t)
8265 e2termConn1.TestMsgChanEmpty(t)
8266 mainCtrl.wait_registry_empty(t, 10)
8267 mainCtrl.VerifyAllClean(t)
8268 mainCtrl.VerifyCounterValues(t)
8271 //-----------------------------------------------------------------------------
8272 // TestRESTUnpackSubscriptionDeleteFailureNoTransaction
8275 // +-------+ +---------+ +---------+
8276 // | xapp | | submgr | | e2term |
8277 // +-------+ +---------+ +---------+
8279 // | [SUBS CREATE] |
8282 // | RESTSubDelReq | |
8283 // |---------------->| |
8285 // | RESTSubDelResp | |
8286 // |<----------------| |
8289 // | |------------->|
8291 // | | SubDelFail | No transaction for the response
8292 // | |<-------------| Ongoing transaction not found. This will result timer expiry and resending
8295 // | |------------->|
8297 // | | SubDelFail | Subscription does exist any more in E2 node
8298 // | |<-------------| Ongoing transaction not found. This will result timer expiry
8300 // | [SUBS DELETE] |
8302 //-----------------------------------------------------------------------------
8304 func TestRESTUnpackSubscriptionDeleteFailureNoTransaction(t *testing.T) {
8306 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
8307 Counter{cRestSubReqFromXapp, 1},
8308 Counter{cRestSubRespToXapp, 1},
8309 Counter{cSubReqToE2, 1},
8310 Counter{cSubRespFromE2, 1},
8311 Counter{cRestSubNotifToXapp, 1},
8312 Counter{cRestSubDelReqFromXapp, 1},
8313 Counter{cRestSubDelRespToXapp, 1},
8314 Counter{cSubDelReqToE2, 1},
8315 Counter{cSubDelReqTimerExpiry, 2},
8316 Counter{cSubDelReReqToE2, 1},
8317 Counter{cSubDelFailFromE2, 2},
8321 var params *teststube2ap.RESTSubsReqParams = nil
8322 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
8325 xappConn1.SendRESTSubsDelReq(t, &restSubId)
8327 // E2t: Receive 1st SubsDelReq
8328 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
8330 mainCtrl.MakeTransactionNil(t, e2SubsId)
8332 // No transaction exist for this response which will result resending original request
8333 e2termConn1.SendSubsDelFail(t, delreq, delmsg)
8335 // E2t: Receive 2nd SubsDelReq
8336 delreq, delmsg = e2termConn1.RecvSubsDelReq(t)
8338 // Subscription does not exist in in E2 Node.
8339 e2termConn1.SendSubsDelFail(t, delreq, delmsg)
8341 // Wait that subs is cleaned
8342 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
8344 xappConn1.TestMsgChanEmpty(t)
8345 e2termConn1.TestMsgChanEmpty(t)
8346 mainCtrl.wait_registry_empty(t, 10)
8347 mainCtrl.VerifyAllClean(t)
8348 mainCtrl.VerifyCounterValues(t)
8351 //-----------------------------------------------------------------------------
8352 // TestRESTSubReqFailAsn1PackSubReqError
8355 // +-------+ +---------+ +---------+
8356 // | xapp | | submgr | | e2term |
8357 // +-------+ +---------+ +---------+
8360 // |---------------->| |
8362 // | RESTSubResp | |
8363 // |<----------------| |
8365 // | ASN.1 encode fails |
8368 // | |------------->|
8371 // | |<-------------|
8375 // |<----------------| |
8377 // | [SUBS DELETE] |
8380 //-----------------------------------------------------------------------------
8382 func TestRESTSubReqFailAsn1PackSubReqError(t *testing.T) {
8384 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
8385 Counter{cRestSubReqFromXapp, 1},
8386 Counter{cRestSubRespToXapp, 1},
8387 Counter{cRestSubFailNotifToXapp, 1},
8388 Counter{cRestSubDelReqFromXapp, 1},
8389 Counter{cRestSubDelRespToXapp, 1},
8392 const subReqCount int = 1
8394 var params *teststube2ap.RESTSubsReqParams = nil
8395 params = xappConn1.GetRESTSubsReqReportParams(subReqCount)
8396 e2ap_wrapper.AllowE2apToProcess(e2ap_wrapper.SUB_REQ, false)
8399 restSubId := xappConn1.SendRESTSubsReq(t, params)
8400 xapp.Logger.Debug("Send REST subscriber request for subscriberId : %v", restSubId)
8402 // E2t: Receive SubsDelReq
8403 xappConn1.ExpectRESTNotificationNok(t, restSubId, "allFail")
8405 e2SubsId := xappConn1.WaitRESTNotification(t, restSubId)
8406 xapp.Logger.Debug("TEST: REST notification received e2SubsId=%v", e2SubsId)
8408 e2ap_wrapper.AllowE2apToProcess(e2ap_wrapper.SUB_REQ, true)
8410 xappConn1.SendRESTSubsDelReq(t, &restSubId)
8412 // Wait that subs is cleaned
8413 waitSubsCleanup(t, e2SubsId, 10)
8414 mainCtrl.VerifyAllClean(t)
8415 mainCtrl.VerifyCounterValues(t)
8418 //-----------------------------------------------------------------------------
8419 // TestRESTSubReqPolicyUpdateTimeoutAndSubDelOkSameAction
8422 // +-------+ +---------+ +---------+
8423 // | xapp | | submgr | | e2term |
8424 // +-------+ +---------+ +---------+
8427 // |---------------->| |
8429 // | RESTSubResp | |
8430 // |<----------------| |
8432 // | |------------->|
8435 // | |<-------------|
8438 // |<----------------| |
8440 // | RESTSubReq | | Policy modification
8441 // |---------------->| |
8443 // | RESTSubResp | |
8444 // |<----------------| |
8446 // | |------------->|
8449 // | RESTNotif(Unsuccessful) | E2 timeout
8450 // |<----------------| |
8452 // | RESTSubDelReq | |
8453 // |---------------->| |
8456 // | |------------->|
8459 // | |<-------------|
8461 // | RESTSubDelResp | |
8462 // |<----------------| |
8464 //-----------------------------------------------------------------------------
8466 func TestRESTSubReqPolicyUpdateTimeoutAndSubDelOkSameAction(t *testing.T) {
8468 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
8469 Counter{cRestSubReqFromXapp, 2},
8470 Counter{cRestSubRespToXapp, 2},
8471 Counter{cSubReqToE2, 2},
8472 Counter{cSubReqTimerExpiry, 1},
8473 Counter{cSubRespFromE2, 1},
8474 Counter{cRestSubNotifToXapp, 1},
8475 Counter{cRestSubFailNotifToXapp, 1},
8476 Counter{cRestSubDelReqFromXapp, 1},
8477 Counter{cSubDelReqToE2, 1},
8478 Counter{cSubDelRespFromE2, 1},
8479 Counter{cRestSubDelRespToXapp, 1},
8482 const e2Timeout int64 = 1
8483 const e2RetryCount int64 = 0
8484 const routingNeeded bool = false
8487 params := xappConn1.GetRESTSubsReqPolicyParams(subReqCount)
8488 params.SetSubscriptionDirectives(e2Timeout, e2RetryCount, routingNeeded)
8491 restSubId := xappConn1.SendRESTSubsReq(t, params)
8492 xapp.Logger.Debug("Send REST subscribe request for subscriberId : %v", restSubId)
8494 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
8495 xappConn1.ExpectRESTNotification(t, restSubId)
8496 e2termConn1.SendSubsResp(t, crereq1, cremsg1)
8497 e2SubsId := xappConn1.WaitRESTNotification(t, restSubId)
8498 xapp.Logger.Debug("REST notification received e2SubsId=%v", e2SubsId)
8501 params = xappConn1.GetRESTSubsReqPolicyParams(subReqCount)
8502 params.SetSubscriptionDirectives(e2Timeout, e2RetryCount, routingNeeded)
8503 params.SetSubscriptionID(&restSubId)
8504 params.SetTimeToWait("w200ms")
8505 restSubId = xappConn1.SendRESTSubsReq(t, params)
8506 xapp.Logger.Debug("Send REST subscribe request for subscriberId : %v", restSubId)
8508 crereq1, cremsg1 = e2termConn1.RecvSubsReq(t)
8509 xappConn1.ExpectRESTNotification(t, restSubId)
8510 // SubsResp is missing, e2SubsId will be 0
8511 zeroE2SubsId := xappConn1.WaitRESTNotification(t, restSubId)
8512 xapp.Logger.Debug("TEST: REST notification received e2SubsId=%v", zeroE2SubsId)
8515 xappConn1.SendRESTSubsDelReq(t, &restSubId)
8516 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
8517 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
8519 waitSubsCleanup(t, e2SubsId, 10)
8520 mainCtrl.VerifyAllClean(t)
8521 mainCtrl.VerifyCounterValues(t)
8524 //-----------------------------------------------------------------------------
8525 // TestPolicyUpdateRESTSubReqAndSubDelOkWithRestartInMiddle
8528 // +-------+ +---------+ +---------+
8529 // | xapp | | submgr | | e2term |
8530 // +-------+ +---------+ +---------+
8533 // |---------------->| |
8535 // | RESTSubResp | |
8536 // |<----------------| |
8538 // | |------------->|
8541 // | |<-------------|
8544 // |<----------------| |
8547 // |---------------->| |
8549 // | RESTSubResp | |
8550 // |<----------------| |
8552 // | |------------->|
8554 // | Submgr restart |
8556 // | RESTSubDelReq | |
8557 // |---------------->| |
8560 // | |------------->|
8563 // | |<-------------|
8565 // | RESTSubDelResp | |
8566 // |<----------------| |
8568 //-----------------------------------------------------------------------------
8570 func TestPolicyUpdateRESTSubReqAndSubDelOkWithRestartInMiddle(t *testing.T) {
8572 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
8573 Counter{cRestSubReqFromXapp, 2},
8574 Counter{cRestSubRespToXapp, 2},
8575 Counter{cSubReqToE2, 2},
8576 Counter{cSubRespFromE2, 1},
8577 Counter{cRestSubNotifToXapp, 1},
8578 Counter{cRestSubDelReqFromXapp, 1},
8579 Counter{cSubDelReqToE2, 1},
8580 Counter{cSubDelRespFromE2, 1},
8581 Counter{cRestSubDelRespToXapp, 1},
8584 const e2Timeout int64 = 1
8585 const e2RetryCount int64 = 0
8586 const routingNeeded bool = false
8589 params := xappConn1.GetRESTSubsReqPolicyParams(subReqCount)
8590 params.SetSubscriptionDirectives(e2Timeout, e2RetryCount, routingNeeded)
8591 // Create subscription
8592 restSubId := xappConn1.SendRESTSubsReq(t, params)
8593 xapp.Logger.Debug("Send REST subscribe request for subscriberId : %v", restSubId)
8595 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
8596 xappConn1.ExpectRESTNotification(t, restSubId)
8597 e2termConn1.SendSubsResp(t, crereq1, cremsg1)
8598 e2SubsId := xappConn1.WaitRESTNotification(t, restSubId)
8599 xapp.Logger.Debug("REST notification received e2SubsId=%v", e2SubsId)
8601 // Check subscription
8602 queryXappSubscription(t, int64(e2SubsId), "RAN_NAME_1", []string{"localhost:13560"})
8605 params = xappConn1.GetRESTSubsReqPolicyParams(subReqCount)
8606 params.SetSubscriptionDirectives(e2Timeout, e2RetryCount, routingNeeded)
8607 params.SetSubscriptionID(&restSubId)
8608 params.SetTimeToWait("w200ms")
8609 mainCtrl.SetResetTestFlag(t, true) // subs.DoNotWaitSubResp will be set TRUE for the subscription
8610 restSubId = xappConn1.SendRESTSubsReq(t, params)
8611 xapp.Logger.Debug("Send REST subscribe request for subscriberId : %v", restSubId)
8613 crereq1, cremsg1 = e2termConn1.RecvSubsReq(t)
8614 mainCtrl.SetResetTestFlag(t, false)
8616 // SubsResp is missing due to submgr restart
8618 mainCtrl.SimulateRestart(t)
8619 xapp.Logger.Debug("mainCtrl.SimulateRestart done")
8621 // ReadE2Subscriptions() for testing is running in own go routine (go mainCtrl.c.ReadE2Subscriptions())
8622 // That needs to be completed before successful subscription query is possible
8623 <-time.After(time.Second * 1)
8625 // Check subscription
8626 queryXappSubscription(t, int64(e2SubsId), "RAN_NAME_1", []string{"localhost:13560"})
8628 // Delete subscription
8629 xappConn1.SendRESTSubsDelReq(t, &restSubId)
8630 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
8631 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
8633 //Wait that subs is cleaned
8634 waitSubsCleanup(t, e2SubsId, 10)
8636 mainCtrl.VerifyCounterValues(t)
8637 mainCtrl.VerifyAllClean(t)
8640 ////////////////////////////////////////////////////////////////////////////////////
8641 // Services for UT cases
8642 ////////////////////////////////////////////////////////////////////////////////////
8643 const subReqCount int = 1
8644 const host string = "localhost"
8646 func createSubscription(t *testing.T, fromXappConn *teststube2ap.E2Stub, toE2termConn *teststube2ap.E2Stub, params *teststube2ap.RESTSubsReqParams) (string, uint32) {
8648 params = fromXappConn.GetRESTSubsReqReportParams(subReqCount)
8650 restSubId := fromXappConn.SendRESTSubsReq(t, params)
8651 xapp.Logger.Debug("Send REST subscriber request for subscriberId : %v", restSubId)
8653 crereq1, cremsg1 := toE2termConn.RecvSubsReq(t)
8654 fromXappConn.ExpectRESTNotification(t, restSubId)
8655 toE2termConn.SendSubsResp(t, crereq1, cremsg1)
8656 e2SubsId := fromXappConn.WaitRESTNotification(t, restSubId)
8657 xapp.Logger.Debug("REST notification received e2SubsId=%v", e2SubsId)
8659 return restSubId, e2SubsId
8662 func createXapp2MergedSubscription(t *testing.T, meid string) (string, uint32) {
8664 params := xappConn2.GetRESTSubsReqReportParams(subReqCount)
8666 params.SetMeid(meid)
8668 xapp.Subscription.SetResponseCB(xappConn2.SubscriptionRespHandler)
8669 restSubId := xappConn2.SendRESTSubsReq(t, params)
8670 xappConn2.ExpectRESTNotification(t, restSubId)
8671 xapp.Logger.Debug("Send REST subscriber request for subscriberId : %v", restSubId)
8672 e2SubsId := xappConn2.WaitRESTNotification(t, restSubId)
8673 xapp.Logger.Debug("REST notification received e2SubsId=%v", e2SubsId)
8675 return restSubId, e2SubsId
8678 func createXapp1PolicySubscription(t *testing.T) (string, uint32) {
8680 params := xappConn1.GetRESTSubsReqPolicyParams(subReqCount)
8681 restSubId := xappConn1.SendRESTSubsReq(t, params)
8682 xapp.Logger.Debug("Send REST Policy subscriber request for subscriberId : %v", restSubId)
8684 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
8685 xappConn1.ExpectRESTNotification(t, restSubId)
8686 e2termConn1.SendSubsResp(t, crereq1, cremsg1)
8687 e2SubsId := xappConn1.WaitRESTNotification(t, restSubId)
8688 xapp.Logger.Debug("REST notification received e2SubsId=%v", e2SubsId)
8690 return restSubId, e2SubsId
8693 func createXapp1ReportSubscriptionE2Fail(t *testing.T) (string, uint32) {
8694 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
8695 restSubId := xappConn1.SendRESTSubsReq(t, params)
8697 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
8698 fparams1 := &teststube2ap.E2StubSubsFailParams{}
8699 fparams1.Set(crereq1)
8700 e2termConn1.SendSubsFail(t, fparams1, cremsg1)
8702 delreq1, delmsg1 := e2termConn1.RecvSubsDelReq(t)
8703 xappConn1.ExpectRESTNotification(t, restSubId)
8704 e2termConn1.SendSubsDelResp(t, delreq1, delmsg1)
8705 e2SubsId := xappConn1.WaitRESTNotification(t, restSubId)
8706 xapp.Logger.Debug("TEST: REST notification received e2SubsId=%v", e2SubsId)
8708 return restSubId, e2SubsId
8711 func deleteSubscription(t *testing.T, fromXappConn *teststube2ap.E2Stub, toE2termConn *teststube2ap.E2Stub, restSubId *string) {
8712 fromXappConn.SendRESTSubsDelReq(t, restSubId)
8713 delreq, delmsg := toE2termConn.RecvSubsDelReq(t)
8714 toE2termConn.SendSubsDelResp(t, delreq, delmsg)
8717 func deleteXapp1Subscription(t *testing.T, restSubId *string) {
8718 xappConn1.SendRESTSubsDelReq(t, restSubId)
8719 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
8720 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
8723 func deleteXapp2Subscription(t *testing.T, restSubId *string) {
8724 xappConn2.SendRESTSubsDelReq(t, restSubId)
8725 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
8726 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
8729 func queryXappSubscription(t *testing.T, e2SubsId int64, meid string, endpoint []string) {
8730 resp, _ := xapp.Subscription.QuerySubscriptions()
8731 assert.Equal(t, e2SubsId, resp[0].SubscriptionID)
8732 assert.Equal(t, meid, resp[0].Meid)
8733 assert.Equal(t, endpoint, resp[0].ClientEndpoint)
8736 func waitSubsCleanup(t *testing.T, e2SubsId uint32, timeout int) {
8737 //Wait that subs is cleaned
8738 mainCtrl.wait_subs_clean(t, e2SubsId, timeout)
8740 xappConn1.TestMsgChanEmpty(t)
8741 xappConn2.TestMsgChanEmpty(t)
8742 e2termConn1.TestMsgChanEmpty(t)
8743 mainCtrl.wait_registry_empty(t, timeout)
8746 func sendAndReceiveMultipleE2SubReqs(t *testing.T, count int, fromXappConn *teststube2ap.E2Stub, toE2termConn *teststube2ap.E2Stub, restSubId string) []uint32 {
8748 var e2SubsId []uint32
8750 for i := 0; i < count; i++ {
8751 xapp.Logger.Debug("TEST: %d ===================================== BEGIN CRE ============================================", i+1)
8752 crereq, cremsg := toE2termConn.RecvSubsReq(t)
8753 fromXappConn.ExpectRESTNotification(t, restSubId)
8754 toE2termConn.SendSubsResp(t, crereq, cremsg)
8755 instanceId := fromXappConn.WaitRESTNotification(t, restSubId)
8756 e2SubsId = append(e2SubsId, instanceId)
8757 xapp.Logger.Debug("TEST: %v", e2SubsId)
8758 xapp.Logger.Debug("TEST: %d ===================================== END CRE ============================================", i+1)
8759 <-time.After(100 * time.Millisecond)
8764 func sendAndReceiveMultipleE2DelReqs(t *testing.T, e2SubsIds []uint32, toE2termConn *teststube2ap.E2Stub) {
8766 for i := 0; i < len(e2SubsIds); i++ {
8767 xapp.Logger.Debug("TEST: %d ===================================== BEGIN DEL ============================================", i+1)
8768 delreq, delmsg := toE2termConn.RecvSubsDelReq(t)
8769 toE2termConn.SendSubsDelResp(t, delreq, delmsg)
8770 <-time.After(1 * time.Second)
8771 xapp.Logger.Debug("TEST: %d ===================================== END DEL ============================================", i+1)
8772 <-time.After(100 * time.Millisecond)
8775 // Wait that subs is cleaned
8776 for i := 0; i < len(e2SubsIds); i++ {
8777 mainCtrl.wait_subs_clean(t, e2SubsIds[i], 10)