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 ==================================================================================
28 "gerrit.o-ran-sc.org/r/ric-plt/e2ap/pkg/e2ap"
29 "gerrit.o-ran-sc.org/r/ric-plt/e2ap/pkg/e2ap_wrapper"
30 "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities"
31 "gerrit.o-ran-sc.org/r/ric-plt/submgr/pkg/teststube2ap"
32 "gerrit.o-ran-sc.org/r/ric-plt/xapp-frame/pkg/xapp"
33 "github.com/stretchr/testify/assert"
36 // In below test cases there is done only one retry for E2 messages
37 // In Helm chart retry count is currently 2 By default. Retry count
38 // used in test cases is defined in submgr-config.yaml file.
40 func TestSuiteSetup(t *testing.T) {
41 // The effect of this call shall endure though the UT suite!
42 // If this causes any issues, the previous interface can be restored
44 // SetPackerIf(e2ap_wrapper.NewAsn1E2APPacker())
46 mainCtrl.InitAllCounterMap()
47 SetPackerIf(e2ap_wrapper.NewUtAsn1E2APPacker())
48 mainCtrl.c.restDuplicateCtrl.Init()
51 func TestRanStatusChangeViaSDLNotification(t *testing.T) {
53 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
54 Counter{cE2StateChangedToUp, 3},
57 // Current UT test cases use these ran names
58 xappRnibMock.CreateGnb("RAN_NAME_1", entities.ConnectionStatus_DISCONNECTED)
59 xappRnibMock.CreateGnb("RAN_NAME_11", entities.ConnectionStatus_DISCONNECTED)
60 xappRnibMock.CreateGnb("RAN_NAME_2", entities.ConnectionStatus_DISCONNECTED)
62 mainCtrl.c.e2IfState.ReadE2ConfigurationFromRnib()
63 mainCtrl.c.e2IfState.SubscribeChannels()
65 mainCtrl.SetE2State(t, "RAN_NAME_1_CONNECTED")
66 mainCtrl.SetE2State(t, "RAN_NAME_2_CONNECTED")
67 mainCtrl.SetE2State(t, "RAN_NAME_11_CONNECTED")
69 mainCtrl.VerifyCounterValues(t)
72 //-----------------------------------------------------------------------------
73 // TestRESTSubReqAfterE2ConnBreak
76 // +-------+ +---------+ +---------+
77 // | xapp | | submgr | | e2term |
78 // +-------+ +---------+ +---------+
80 // | [E2 Conn. DOWN] |
83 // |---------------->| |
85 // |<----------------| |
88 //-----------------------------------------------------------------------------
90 func TestRESTSubReqAfterE2ConnBreak(t *testing.T) {
92 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
93 Counter{cRestSubReqFromXapp, 1},
94 Counter{cRestReqRejDueE2Down, 1},
95 Counter{cE2StateChangedToDown, 1},
96 Counter{cE2StateChangedToUp, 1},
99 // E2 disconnect after E2term has received response
100 mainCtrl.SetE2State(t, "RAN_NAME_1_DISCONNECTED")
102 const subReqCount int = 1
103 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
104 xappConn1.SendRESTSubsReq(t, params)
106 // Restore E2 connection for following test cases
107 mainCtrl.SetE2State(t, "RAN_NAME_1_CONNECTED")
109 mainCtrl.VerifyAllClean(t)
110 mainCtrl.VerifyCounterValues(t)
113 //-----------------------------------------------------------------------------
114 // TestRESTSubReqE2ConnBreak
117 // +-------+ +---------+ +---------+
118 // | xapp | | submgr | | e2term |
119 // +-------+ +---------+ +---------+
122 // |---------------->| |
124 // |<----------------| |
126 // | |------------->|
128 // | |<-------------|
130 // | [E2 Conn. DOWN] |
131 // | [Int. SUBS DELETE] |
133 // | RESTNotif(unsuccessful) |
134 // |<----------------| |
138 //-----------------------------------------------------------------------------
139 func TestRESTSubReqE2ConnBreak(t *testing.T) {
141 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
142 Counter{cRestSubReqFromXapp, 1},
143 Counter{cRestSubRespToXapp, 1},
144 Counter{cSubReqToE2, 1},
145 Counter{cSubRespFromE2, 1},
146 Counter{cRestSubFailNotifToXapp, 1},
147 Counter{cE2StateChangedToDown, 1},
148 Counter{cE2StateChangedToUp, 1},
152 const subReqCount int = 1
153 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
154 restSubId := xappConn1.SendRESTSubsReq(t, params)
156 crereq, cremsg := e2termConn1.RecvSubsReq(t)
157 xappConn1.ExpectRESTNotification(t, restSubId)
159 // E2 disconnect after E2term has received response
160 mainCtrl.SetE2State(t, "RAN_NAME_1_DISCONNECTED")
162 e2termConn1.SendSubsResp(t, crereq, cremsg)
163 e2SubsId := xappConn1.WaitRESTNotification(t, restSubId)
165 <-time.After(time.Second * 1)
166 assert.Equal(t, 0, len(mainCtrl.c.registry.register))
167 assert.Equal(t, 0, len(mainCtrl.c.registry.restSubscriptions))
169 subIds, register, err := mainCtrl.c.ReadAllSubscriptionsFromSdl()
171 xapp.Logger.Error("%v", err)
173 assert.Equal(t, 65534, len(subIds)) // range 1-65535 , FFFF = 65535
174 assert.Equal(t, 0, len(register))
177 restSubscriptions, err := mainCtrl.c.ReadAllRESTSubscriptionsFromSdl()
179 xapp.Logger.Error("%v", err)
181 assert.Equal(t, 0, len(restSubscriptions))
184 // Restore E2 connection for following test cases
185 mainCtrl.SetE2State(t, "RAN_NAME_1_CONNECTED")
187 // Wait that subs is cleaned
188 waitSubsCleanup(t, e2SubsId, 10)
189 mainCtrl.VerifyCounterValues(t)
190 mainCtrl.VerifyAllClean(t)
193 //-----------------------------------------------------------------------------
194 // TestRESTSubscriptionDeleteAfterE2ConnectionBreak
197 // +-------+ +---------+ +---------+
198 // | xapp | | submgr | | e2term |
199 // +-------+ +---------+ +---------+
203 // | [E2 Conn. DOWN] |
205 // | RESTSubDelReq | |
206 // |---------------->| |
208 // | RESTSubDelResp | |
209 // |<----------------| |
211 // | [No valid subscription found] |
214 //-----------------------------------------------------------------------------
215 func TestRESTSubscriptionDeleteAfterE2ConnectionBreak(t *testing.T) {
216 xapp.Logger.Debug("TEST: TestRESTSubscriptionDeleteAfterE2ConnectionBreak")
218 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
219 Counter{cRestSubReqFromXapp, 1},
220 Counter{cRestSubRespToXapp, 1},
221 Counter{cSubReqToE2, 1},
222 Counter{cSubRespFromE2, 1},
223 Counter{cRestSubNotifToXapp, 1},
224 Counter{cRestSubDelReqFromXapp, 1},
225 Counter{cRestSubDelRespToXapp, 1},
226 Counter{cE2StateChangedToDown, 1},
227 Counter{cE2StateChangedToUp, 1},
231 var params *teststube2ap.RESTSubsReqParams = nil
232 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
234 // E2 disconnect after E2term has received response
235 mainCtrl.SetE2State(t, "RAN_NAME_1_DISCONNECTED")
238 xappConn1.SendRESTSubsDelReq(t, &restSubId)
240 <-time.After(time.Second * 1)
241 assert.Equal(t, 0, len(mainCtrl.c.registry.register))
242 assert.Equal(t, 0, len(mainCtrl.c.registry.restSubscriptions))
244 subIds, register, err := mainCtrl.c.ReadAllSubscriptionsFromSdl()
246 xapp.Logger.Error("%v", err)
248 assert.Equal(t, 65534, len(subIds)) // range 1-65535 , FFFF = 65535
249 assert.Equal(t, 0, len(register))
252 restSubscriptions, err := mainCtrl.c.ReadAllRESTSubscriptionsFromSdl()
254 xapp.Logger.Error("%v", err)
256 assert.Equal(t, 0, len(restSubscriptions))
259 // Restore E2 connection for following test cases
260 mainCtrl.SetE2State(t, "RAN_NAME_1_CONNECTED")
262 // Wait that subs is cleaned
263 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
265 xappConn1.TestMsgChanEmpty(t)
266 e2termConn1.TestMsgChanEmpty(t)
267 mainCtrl.wait_registry_empty(t, 10)
268 mainCtrl.VerifyCounterValues(t)
269 mainCtrl.VerifyAllClean(t)
272 //-----------------------------------------------------------------------------
273 // TestRESTOtherE2ConnectionChanges
277 // +-------+ +---------+ +---------+
278 // | xapp | | submgr | | e2term |
279 // +-------+ +---------+ +---------+
283 // | [E2 CONNECTED_SETUP_FAILED] |
284 // | [E2 CONNECTING] |
285 // | [E2 SHUTTING_DOWN] |
286 // | [E2 SHUT_DOWN] |
291 //-----------------------------------------------------------------------------
292 func TestRESTOtherE2ConnectionChanges(t *testing.T) {
293 xapp.Logger.Debug("TEST: TestRESTOtherE2ConnectionChanges")
295 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
296 Counter{cRestSubReqFromXapp, 1},
297 Counter{cRestSubRespToXapp, 1},
298 Counter{cSubReqToE2, 1},
299 Counter{cSubRespFromE2, 1},
300 Counter{cRestSubNotifToXapp, 1},
301 Counter{cRestSubDelReqFromXapp, 1},
302 Counter{cSubDelReqToE2, 1},
303 Counter{cSubDelRespFromE2, 1},
304 Counter{cRestSubDelRespToXapp, 1},
305 Counter{cE2StateChangedToUp, 1},
309 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
310 restSubId := xappConn1.SendRESTSubsReq(t, params)
312 crereq, cremsg := e2termConn1.RecvSubsReq(t)
313 xappConn1.ExpectRESTNotification(t, restSubId)
314 e2termConn1.SendSubsResp(t, crereq, cremsg)
315 e2SubsId := xappConn1.WaitRESTNotification(t, restSubId)
317 // Submgr should not react to any other connection state changes than CONNECTED and DISCONNECTED
318 mainCtrl.SetE2State(t, "RAN_NAME_1_CONNECTED_SETUP_FAILED")
319 mainCtrl.SetE2State(t, "RAN_NAME_1_CONNECTING")
320 mainCtrl.SetE2State(t, "RAN_NAME_1_SHUTTING_DOWN")
321 mainCtrl.SetE2State(t, "RAN_NAME_1_SHUT_DOWN")
324 xappConn1.SendRESTSubsDelReq(t, &restSubId)
325 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
326 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
328 // Restore E2 connection for following test cases
329 mainCtrl.SetE2State(t, "RAN_NAME_1_CONNECTED")
331 // Wait that subs is cleaned
332 waitSubsCleanup(t, e2SubsId, 10)
333 mainCtrl.VerifyCounterValues(t)
334 mainCtrl.VerifyAllClean(t)
337 //-----------------------------------------------------------------------------
338 // TestRESTSubReqAndDeleteOkWithE2apUtWrapper
341 // +-------+ +---------+ +---------+ +---------+
342 // | xapp | | submgr | | e2term | | rtmgr |
343 // +-------+ +---------+ +---------+ +---------+
345 // | RESTSubReq | | |
346 // |---------------->| | |
347 // | | RouteCreate | |
348 // | |--------------------------->| // The order of these events may vary
350 // | RESTSubResp | | | // The order of these events may vary
351 // |<----------------| | |
352 // | | RouteResponse| |
353 // | |<---------------------------| // The order of these events may vary
356 // | |------------->| | // The order of these events may vary
359 // | |<-------------| |
360 // | RESTNotif1 | | |
361 // |<----------------| | |
363 // | RESTSubDelReq | | |
364 // |---------------->| | |
366 // | |------------->| |
368 // | RESTSubDelResp| | |
369 // |<----------------| | |
371 // | | SubDelResp | |
372 // | |<-------------| |
376 //-----------------------------------------------------------------------------
377 func TestRESTSubReqAndDeleteOkWithE2apUtWrapper(t *testing.T) {
379 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, nil)
381 deleteSubscription(t, xappConn1, e2termConn1, &restSubId)
383 waitSubsCleanup(t, e2SubsId, 10)
384 mainCtrl.VerifyAllClean(t)
387 //-----------------------------------------------------------------------------
388 // TestRESTSubReqAndE1apDeleteReqPackingError
391 // +-------+ +---------+ +---------+ +---------+
392 // | xapp | | submgr | | e2term | | rtmgr |
393 // +-------+ +---------+ +---------+ +---------+
395 // | RESTSubReq | | |
396 // |---------------->| | |
397 // | | RouteCreate | |
398 // | |--------------------------->| // The order of these events may vary
400 // | RESTSubResp | | | // The order of these events may vary
401 // |<----------------| | |
402 // | | RouteResponse| |
403 // | |<---------------------------| // The order of these events may vary
406 // | |------------->| | // The order of these events may vary
409 // | |<-------------| |
410 // | RESTNotif1 | | |
411 // |<----------------| | |
413 // | RESTSubDelReq | | |
414 // |---------------->| | |
416 // | RESTSubDelResp| | |
417 // |<----------------| | |
421 //-----------------------------------------------------------------------------
422 func TestRESTSubReqAndE1apDeleteReqPackingError(t *testing.T) {
424 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, nil)
426 e2ap_wrapper.AllowE2apToProcess(e2ap_wrapper.SUB_DEL_REQ, false)
427 xappConn1.SendRESTSubsDelReq(t, &restSubId)
428 defer e2ap_wrapper.AllowE2apToProcess(e2ap_wrapper.SUB_DEL_REQ, true)
430 waitSubsCleanup(t, e2SubsId, 10)
431 mainCtrl.VerifyAllClean(t)
434 //-----------------------------------------------------------------------------
435 // TestRESTSubReqAndE1apDeleteRespUnpackingError
438 // +-------+ +---------+ +---------+ +---------+
439 // | xapp | | submgr | | e2term | | rtmgr |
440 // +-------+ +---------+ +---------+ +---------+
442 // | RESTSubReq | | |
443 // |---------------->| | |
444 // | | RouteCreate | |
445 // | |--------------------------->| // The order of these events may vary
447 // | RESTSubResp | | | // The order of these events may vary
448 // |<----------------| | |
449 // | | RouteResponse| |
450 // | |<---------------------------| // The order of these events may vary
453 // | |------------->| | // The order of these events may vary
456 // | |<-------------| |
457 // | RESTNotif1 | | |
458 // |<----------------| | |
460 // | RESTSubDelReq | | |
461 // |---------------->| | |
463 // | |------------->| |
465 // | RESTSubDelResp| | |
466 // |<----------------| | | // The order of these events may vary
468 // | | SubDelResp | |
469 // | |<-------------| | // 1.st NOK
472 // | |------------->| |
474 // | | SubDelResp | |
475 // | |<-------------| | // 2.nd NOK
477 //-----------------------------------------------------------------------------
479 func TestRESTSubReqAndE1apDeleteRespUnpackingError(t *testing.T) {
481 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, nil)
483 xappConn1.SendRESTSubsDelReq(t, &restSubId)
484 e2ap_wrapper.AllowE2apToProcess(e2ap_wrapper.SUB_DEL_RESP, false)
485 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
486 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
488 delreq, delmsg = e2termConn1.RecvSubsDelReq(t)
489 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
491 defer e2ap_wrapper.AllowE2apToProcess(e2ap_wrapper.SUB_DEL_RESP, true)
493 waitSubsCleanup(t, e2SubsId, 10)
494 mainCtrl.VerifyAllClean(t)
497 //-----------------------------------------------------------------------------
498 // TestSubReqAndRouteNok
501 // +-------+ +---------+ +---------+
502 // | xapp | | submgr | | rtmgr |
503 // +-------+ +---------+ +---------+
506 // |------------->| |
509 // | |------------->|
513 // | |<-------------|
515 // | [SUBS INT DELETE] |
518 //-----------------------------------------------------------------------------
520 func TestSubReqAndRouteNok(t *testing.T) {
521 CaseBegin("TestSubReqAndRouteNok")
523 // Init counter check
524 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
525 Counter{cSubReqFromXapp, 1},
526 Counter{cRouteCreateFail, 1},
529 waiter := rtmgrHttp.AllocNextEvent(false)
530 newSubsId := mainCtrl.get_registry_next_subid(t)
531 xappConn1.SendSubsReq(t, nil, nil)
534 //Wait that subs is cleaned
535 mainCtrl.wait_subs_clean(t, newSubsId, 10)
537 xappConn1.TestMsgChanEmpty(t)
538 xappConn2.TestMsgChanEmpty(t)
539 e2termConn1.TestMsgChanEmpty(t)
540 mainCtrl.wait_registry_empty(t, 10)
542 <-time.After(1 * time.Second)
543 mainCtrl.VerifyCounterValues(t)
546 //-----------------------------------------------------------------------------
547 // TestSubReqAndRouteUpdateNok
550 // +-------+ +-------+ +---------+ +---------+
551 // | xapp2 | | xapp1 | | submgr | | rtmgr |
552 // +-------+ +-------+ +---------+ +---------+
554 // | [SUBS CREATE] | |
558 // | SubReq (mergeable) | |
559 // |--------------------------->| | |
561 // | | | RouteUpdate |
562 // | | |------------->|
564 // | | | RouteUpdate |
565 // | | | status:400 |
566 // | | |<-------------|
568 // | [SUBS INT DELETE] | |
571 // | [SUBS DELETE] | |
574 func TestSubReqAndRouteUpdateNok(t *testing.T) {
575 CaseBegin("TestSubReqAndRouteUpdateNok")
577 // Init counter check
578 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
579 Counter{cSubReqFromXapp, 2},
580 Counter{cSubReqToE2, 1},
581 Counter{cSubRespFromE2, 1},
582 Counter{cSubRespToXapp, 1},
583 Counter{cRouteCreateUpdateFail, 1},
584 Counter{cSubDelReqFromXapp, 1},
585 Counter{cSubDelReqToE2, 1},
586 Counter{cSubDelRespFromE2, 1},
587 Counter{cSubDelRespToXapp, 1},
590 cretrans := xappConn1.SendSubsReq(t, nil, nil)
591 crereq, cremsg := e2termConn1.RecvSubsReq(t)
592 e2termConn1.SendSubsResp(t, crereq, cremsg)
593 e2SubsId := xappConn1.RecvSubsResp(t, cretrans)
595 resp, _ := xapp.Subscription.QuerySubscriptions()
596 assert.Equal(t, resp[0].SubscriptionID, int64(e2SubsId))
597 assert.Equal(t, resp[0].Meid, "RAN_NAME_1")
598 assert.Equal(t, resp[0].ClientEndpoint, []string{"localhost:13560"})
600 waiter := rtmgrHttp.AllocNextEvent(false)
601 newSubsId := mainCtrl.get_registry_next_subid(t)
602 xappConn2.SendSubsReq(t, nil, nil)
605 deltrans := xappConn1.SendSubsDelReq(t, nil, e2SubsId)
606 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
608 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
609 xappConn1.RecvSubsDelResp(t, deltrans)
611 //Wait that subs is cleaned
612 mainCtrl.wait_subs_clean(t, newSubsId, 10)
613 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
615 xappConn1.TestMsgChanEmpty(t)
616 xappConn2.TestMsgChanEmpty(t)
617 e2termConn1.TestMsgChanEmpty(t)
618 mainCtrl.wait_registry_empty(t, 10)
620 mainCtrl.VerifyCounterValues(t)
623 //-----------------------------------------------------------------------------
624 // TestSubDelReqAndRouteDeleteNok
627 // +-------+ +---------+ +---------+ +---------+
628 // | xapp | | submgr | | e2term | | rtmgr |
629 // +-------+ +---------+ +---------+ +---------+
631 // | [SUBS CREATE] | |
636 // |------------->| | |
638 // | |------------->| |
640 // | |<-------------| |
642 // |<-------------| | |
643 // | | RouteDelete | |
644 // | |---------------------------->|
646 // | | RouteDelete | |
647 // | | status:400 | |
648 // | |<----------------------------|
650 func TestSubDelReqAndRouteDeleteNok(t *testing.T) {
651 CaseBegin("TestSubDelReqAndRouteDeleteNok")
653 // Init counter check
654 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
655 Counter{cSubReqFromXapp, 1},
656 Counter{cSubReqToE2, 1},
657 Counter{cSubRespFromE2, 1},
658 Counter{cSubRespToXapp, 1},
659 Counter{cSubDelReqFromXapp, 1},
660 Counter{cRouteDeleteFail, 1},
661 Counter{cSubDelReqToE2, 1},
662 Counter{cSubDelRespFromE2, 1},
663 Counter{cSubDelRespToXapp, 1},
666 cretrans := xappConn1.SendSubsReq(t, nil, nil)
667 crereq, cremsg := e2termConn1.RecvSubsReq(t)
668 e2termConn1.SendSubsResp(t, crereq, cremsg)
669 e2SubsId := xappConn1.RecvSubsResp(t, cretrans)
671 resp, _ := xapp.Subscription.QuerySubscriptions()
672 assert.Equal(t, resp[0].SubscriptionID, int64(e2SubsId))
673 assert.Equal(t, resp[0].Meid, "RAN_NAME_1")
674 assert.Equal(t, resp[0].ClientEndpoint, []string{"localhost:13560"})
676 deltrans := xappConn1.SendSubsDelReq(t, nil, e2SubsId)
677 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
679 waiter := rtmgrHttp.AllocNextEvent(false)
680 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
683 xappConn1.RecvSubsDelResp(t, deltrans)
685 //Wait that subs is cleaned
686 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
688 xappConn1.TestMsgChanEmpty(t)
689 xappConn2.TestMsgChanEmpty(t)
690 e2termConn1.TestMsgChanEmpty(t)
691 mainCtrl.wait_registry_empty(t, 10)
692 mainCtrl.VerifyCounterValues(t)
695 //-----------------------------------------------------------------------------
696 // TestSubMergeDelAndRouteUpdateNok
698 // +-------+ +-------+ +---------+ +---------+
699 // | xapp2 | | xapp1 | | submgr | | e2term |
700 // +-------+ +-------+ +---------+ +---------+
705 // | |------------->| |
708 // | | |------------->|
710 // | | |<-------------|
712 // | |<-------------| |
715 // |--------------------------->| |
718 // |<---------------------------| |
720 // | | SubDelReq 1 | |
721 // | |------------->| |
722 // | | | RouteUpdate |
723 // | | |-----> rtmgr |
725 // | | | RouteUpdate |
726 // | | | status:400 |
727 // | | |<----- rtmgr |
729 // | | SubDelResp 1 | |
730 // | |<-------------| |
733 // |--------------------------->| |
735 // | | | SubDelReq 2 |
736 // | | |------------->|
738 // | | | SubDelReq 2 |
739 // | | |------------->|
741 // | SubDelResp 2 | |
742 // |<---------------------------| |
744 //-----------------------------------------------------------------------------
745 func TestSubMergeDelAndRouteUpdateNok(t *testing.T) {
746 CaseBegin("TestSubMergeDelAndRouteUpdateNok")
748 // Init counter check
749 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
750 Counter{cSubReqFromXapp, 2},
751 Counter{cMergedSubscriptions, 1},
752 Counter{cSubReqToE2, 1},
753 Counter{cSubRespFromE2, 1},
754 Counter{cSubRespToXapp, 2},
755 Counter{cSubDelReqFromXapp, 2},
756 Counter{cRouteDeleteUpdateFail, 1},
757 Counter{cSubDelReqToE2, 1},
758 Counter{cSubDelRespFromE2, 1},
759 Counter{cSubDelRespToXapp, 2},
760 Counter{cUnmergedSubscriptions, 1},
764 rparams1 := &teststube2ap.E2StubSubsReqParams{}
766 cretrans1 := xappConn1.SendSubsReq(t, rparams1, nil)
767 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
768 e2termConn1.SendSubsResp(t, crereq1, cremsg1)
769 e2SubsId1 := xappConn1.RecvSubsResp(t, cretrans1)
772 rparams2 := &teststube2ap.E2StubSubsReqParams{}
774 cretrans2 := xappConn2.SendSubsReq(t, rparams2, nil)
775 e2SubsId2 := xappConn2.RecvSubsResp(t, cretrans2)
777 resp, _ := xapp.Subscription.QuerySubscriptions()
778 assert.Equal(t, resp[0].SubscriptionID, int64(e2SubsId1))
779 assert.Equal(t, resp[0].Meid, "RAN_NAME_1")
780 assert.Equal(t, resp[0].ClientEndpoint, []string{"localhost:13560", "localhost:13660"})
783 waiter := rtmgrHttp.AllocNextEvent(false)
784 deltrans1 := xappConn1.SendSubsDelReq(t, nil, e2SubsId1)
787 xappConn1.RecvSubsDelResp(t, deltrans1)
790 deltrans2 := xappConn2.SendSubsDelReq(t, nil, e2SubsId2)
791 delreq2, delmsg2 := e2termConn1.RecvSubsDelReq(t)
792 e2termConn1.SendSubsDelResp(t, delreq2, delmsg2)
793 xappConn2.RecvSubsDelResp(t, deltrans2)
794 //Wait that subs is cleaned
795 mainCtrl.wait_subs_clean(t, e2SubsId2, 10)
797 xappConn1.TestMsgChanEmpty(t)
798 xappConn2.TestMsgChanEmpty(t)
799 e2termConn1.TestMsgChanEmpty(t)
800 mainCtrl.wait_registry_empty(t, 10)
802 mainCtrl.VerifyCounterValues(t)
805 //-----------------------------------------------------------------------------
807 //-----------------------------------------------------------------------------
808 // TestSubReqAndSubDelOk
811 // +-------+ +---------+ +---------+
812 // | xapp | | submgr | | e2term |
813 // +-------+ +---------+ +---------+
816 // |------------->| |
819 // | |------------->|
822 // | |<-------------|
825 // |<-------------| |
829 // |------------->| |
832 // | |------------->|
835 // | |<-------------|
838 // |<-------------| |
840 //-----------------------------------------------------------------------------
841 func TestSubReqAndSubDelOk(t *testing.T) {
842 CaseBegin("TestSubReqAndSubDelOk")
844 // Init counter check
845 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
846 Counter{cSubReqFromXapp, 1},
847 Counter{cSubReqToE2, 1},
848 Counter{cSubRespFromE2, 1},
849 Counter{cSubRespToXapp, 1},
850 Counter{cSubDelReqFromXapp, 1},
851 Counter{cSubDelReqToE2, 1},
852 Counter{cSubDelRespFromE2, 1},
853 Counter{cSubDelRespToXapp, 1},
856 cretrans := xappConn1.SendSubsReq(t, nil, nil)
857 crereq, cremsg := e2termConn1.RecvSubsReq(t)
858 e2termConn1.SendSubsResp(t, crereq, cremsg)
859 e2SubsId := xappConn1.RecvSubsResp(t, cretrans)
861 resp, _ := xapp.Subscription.QuerySubscriptions()
862 assert.Equal(t, resp[0].SubscriptionID, int64(e2SubsId))
863 assert.Equal(t, resp[0].Meid, "RAN_NAME_1")
864 assert.Equal(t, resp[0].ClientEndpoint, []string{"localhost:13560"})
866 deltrans := xappConn1.SendSubsDelReq(t, nil, e2SubsId)
867 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
869 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
870 xappConn1.RecvSubsDelResp(t, deltrans)
872 //Wait that subs is cleaned
873 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
875 xappConn1.TestMsgChanEmpty(t)
876 xappConn2.TestMsgChanEmpty(t)
877 e2termConn1.TestMsgChanEmpty(t)
878 mainCtrl.wait_registry_empty(t, 10)
880 mainCtrl.VerifyCounterValues(t)
883 //-----------------------------------------------------------------------------
884 // TestSubReqRetransmission
887 // +-------+ +---------+ +---------+
888 // | xapp | | submgr | | e2term |
889 // +-------+ +---------+ +---------+
892 // |------------->| |
895 // | |------------->|
899 // |------------->| |
902 // | |<-------------|
905 // |<-------------| |
910 //-----------------------------------------------------------------------------
911 func TestSubReqRetransmission(t *testing.T) {
912 CaseBegin("TestSubReqRetransmission")
915 cretrans := xappConn1.SendSubsReq(t, nil, nil)
916 crereq, cremsg := e2termConn1.RecvSubsReq(t)
918 seqBef := mainCtrl.get_msgcounter(t)
919 xappConn1.SendSubsReq(t, nil, cretrans) //Retransmitted SubReq
920 mainCtrl.wait_msgcounter_change(t, seqBef, 10)
922 // hack as there is no real way to see has message be handled.
923 // Previuos counter check just tells that is has been received by submgr
924 // --> artificial delay
925 <-time.After(1 * time.Second)
926 e2termConn1.SendSubsResp(t, crereq, cremsg)
927 e2SubsId := xappConn1.RecvSubsResp(t, cretrans)
930 deltrans := xappConn1.SendSubsDelReq(t, nil, e2SubsId)
931 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
932 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
933 xappConn1.RecvSubsDelResp(t, deltrans)
935 //Wait that subs is cleaned
936 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
938 xappConn1.TestMsgChanEmpty(t)
939 xappConn2.TestMsgChanEmpty(t)
940 e2termConn1.TestMsgChanEmpty(t)
941 mainCtrl.wait_registry_empty(t, 10)
944 //-----------------------------------------------------------------------------
945 // TestSubDelReqRetransmission
948 // +-------+ +---------+ +---------+
949 // | xapp | | submgr | | e2term |
950 // +-------+ +---------+ +---------+
956 // |------------->| |
959 // | |------------->|
964 // |------------->| |
967 // | |<-------------|
970 // |<-------------| |
972 //-----------------------------------------------------------------------------
973 func TestSubDelReqRetransmission(t *testing.T) {
974 CaseBegin("TestSubDelReqRetransmission")
977 cretrans := xappConn1.SendSubsReq(t, nil, nil)
978 crereq, cremsg := e2termConn1.RecvSubsReq(t)
979 e2termConn1.SendSubsResp(t, crereq, cremsg)
980 e2SubsId := xappConn1.RecvSubsResp(t, cretrans)
983 deltrans := xappConn1.SendSubsDelReq(t, nil, e2SubsId)
984 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
986 seqBef := mainCtrl.get_msgcounter(t)
987 xappConn1.SendSubsDelReq(t, deltrans, e2SubsId) //Retransmitted SubDelReq
988 mainCtrl.wait_msgcounter_change(t, seqBef, 10)
990 // hack as there is no real way to see has message be handled.
991 // Previuos counter check just tells that is has been received by submgr
992 // --> artificial delay
993 <-time.After(1 * time.Second)
995 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
996 xappConn1.RecvSubsDelResp(t, deltrans)
998 //Wait that subs is cleaned
999 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
1001 xappConn1.TestMsgChanEmpty(t)
1002 xappConn2.TestMsgChanEmpty(t)
1003 e2termConn1.TestMsgChanEmpty(t)
1004 mainCtrl.wait_registry_empty(t, 10)
1007 //-----------------------------------------------------------------------------
1008 // TestSubDelReqCollision
1011 // +-------+ +---------+ +---------+
1012 // | xapp | | submgr | | e2term |
1013 // +-------+ +---------+ +---------+
1015 // | [SUBS CREATE] |
1018 // | SubDelReq 1 | |
1019 // |------------->| |
1021 // | | SubDelReq 1 |
1022 // | |------------->|
1024 // | SubDelReq 2 | |
1027 // |------------->| |
1029 // | | SubDelResp 1 |
1030 // | |<-------------|
1032 // | SubDelResp 1 | |
1033 // |<-------------| |
1035 // | SubDelResp 2 | |
1036 // |<-------------| |
1038 //-----------------------------------------------------------------------------
1040 func TestSubDelReqCollision(t *testing.T) {
1041 CaseBegin("TestSubDelReqCollision")
1044 cretrans := xappConn1.SendSubsReq(t, nil, nil)
1045 crereq, cremsg := e2termConn1.RecvSubsReq(t)
1046 e2termConn1.SendSubsResp(t, crereq, cremsg)
1047 e2SubsId := xappConn1.RecvSubsResp(t, cretrans)
1050 xappConn1.SendSubsDelReq(t, nil, e2SubsId)
1051 delreq1, delmsg1 := e2termConn1.RecvSubsDelReq(t)
1053 // Subs Delete colliding
1054 seqBef := mainCtrl.get_msgcounter(t)
1055 deltranscol2 := xappConn1.NewRmrTransactionId("", "RAN_NAME_1")
1056 xappConn1.SendSubsDelReq(t, deltranscol2, e2SubsId) //Colliding SubDelReq
1057 mainCtrl.wait_msgcounter_change(t, seqBef, 10)
1059 // hack as there is no real way to see has message be handled.
1060 // Previuos counter check just tells that is has been received by submgr
1061 // --> artificial delay
1062 <-time.After(1 * time.Second)
1064 // Del resp for first and second
1065 e2termConn1.SendSubsDelResp(t, delreq1, delmsg1)
1067 // don't care in which order responses are received
1068 xappConn1.RecvSubsDelResp(t, nil)
1069 xappConn1.RecvSubsDelResp(t, nil)
1071 //Wait that subs is cleaned
1072 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
1074 xappConn1.TestMsgChanEmpty(t)
1075 xappConn2.TestMsgChanEmpty(t)
1076 e2termConn1.TestMsgChanEmpty(t)
1077 mainCtrl.wait_registry_empty(t, 10)
1080 //-----------------------------------------------------------------------------
1081 // TestSubReqAndSubDelOkTwoParallel
1084 // +-------+ +-------+ +---------+ +---------+
1085 // | xapp | | xapp | | submgr | | e2term |
1086 // +-------+ +-------+ +---------+ +---------+
1091 // | |------------->| |
1094 // | | |------------->|
1097 // |------------------------>| |
1100 // | | |------------->|
1103 // | | |<-------------|
1105 // | |<-------------| |
1108 // | | |<-------------|
1110 // |<------------------------| |
1112 // | | [SUBS 1 DELETE] |
1114 // | | [SUBS 2 DELETE] |
1117 //-----------------------------------------------------------------------------
1119 func TestSubReqAndSubDelOkTwoParallel(t *testing.T) {
1120 CaseBegin("TestSubReqAndSubDelOkTwoParallel")
1123 rparams1 := &teststube2ap.E2StubSubsReqParams{}
1125 cretrans1 := xappConn1.SendSubsReq(t, rparams1, nil)
1126 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
1129 rparams2 := &teststube2ap.E2StubSubsReqParams{}
1132 rparams2.Req.EventTriggerDefinition.Data.Length = 1
1133 rparams2.Req.EventTriggerDefinition.Data.Data = make([]uint8, rparams2.Req.EventTriggerDefinition.Data.Length)
1134 rparams2.Req.EventTriggerDefinition.Data.Data[0] = 2
1136 cretrans2 := xappConn2.SendSubsReq(t, rparams2, nil)
1137 crereq2, cremsg2 := e2termConn1.RecvSubsReq(t)
1140 e2termConn1.SendSubsResp(t, crereq1, cremsg1)
1141 e2SubsId1 := xappConn1.RecvSubsResp(t, cretrans1)
1144 e2termConn1.SendSubsResp(t, crereq2, cremsg2)
1145 e2SubsId2 := xappConn2.RecvSubsResp(t, cretrans2)
1148 deltrans1 := xappConn1.SendSubsDelReq(t, nil, e2SubsId1)
1149 delreq1, delmsg1 := e2termConn1.RecvSubsDelReq(t)
1150 e2termConn1.SendSubsDelResp(t, delreq1, delmsg1)
1151 xappConn1.RecvSubsDelResp(t, deltrans1)
1152 //Wait that subs is cleaned
1153 mainCtrl.wait_subs_clean(t, e2SubsId1, 10)
1156 deltrans2 := xappConn2.SendSubsDelReq(t, nil, e2SubsId2)
1157 delreq2, delmsg2 := e2termConn1.RecvSubsDelReq(t)
1158 e2termConn1.SendSubsDelResp(t, delreq2, delmsg2)
1159 xappConn2.RecvSubsDelResp(t, deltrans2)
1160 //Wait that subs is cleaned
1161 mainCtrl.wait_subs_clean(t, e2SubsId2, 10)
1163 xappConn1.TestMsgChanEmpty(t)
1164 xappConn2.TestMsgChanEmpty(t)
1165 e2termConn1.TestMsgChanEmpty(t)
1166 mainCtrl.wait_registry_empty(t, 10)
1169 //-----------------------------------------------------------------------------
1170 // TestSameSubsDiffRan
1171 // Same subscription to different RANs
1174 // +-------+ +---------+ +---------+
1175 // | xapp | | submgr | | e2term |
1176 // +-------+ +---------+ +---------+
1181 // |------------->| |
1184 // | |------------->|
1186 // | | SubResp(r1) |
1187 // | |<-------------|
1189 // | SubResp(r1) | |
1190 // |<-------------| |
1193 // |------------->| |
1196 // | |------------->|
1198 // | | SubResp(r2) |
1199 // | |<-------------|
1201 // | SubResp(r2) | |
1202 // |<-------------| |
1204 // | [SUBS r1 DELETE] |
1206 // | [SUBS r2 DELETE] |
1209 //-----------------------------------------------------------------------------
1210 func TestSameSubsDiffRan(t *testing.T) {
1211 CaseBegin("TestSameSubsDiffRan")
1214 cretrans1 := xappConn1.NewRmrTransactionId("", "RAN_NAME_1")
1215 xappConn1.SendSubsReq(t, nil, cretrans1)
1216 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
1217 e2termConn1.SendSubsResp(t, crereq1, cremsg1)
1218 e2SubsId1 := xappConn1.RecvSubsResp(t, cretrans1)
1221 cretrans2 := xappConn1.NewRmrTransactionId("", "RAN_NAME_2")
1222 xappConn1.SendSubsReq(t, nil, cretrans2)
1223 crereq2, cremsg2 := e2termConn1.RecvSubsReq(t)
1224 e2termConn1.SendSubsResp(t, crereq2, cremsg2)
1225 e2SubsId2 := xappConn1.RecvSubsResp(t, cretrans2)
1228 deltrans1 := xappConn1.NewRmrTransactionId("", "RAN_NAME_1")
1229 xappConn1.SendSubsDelReq(t, deltrans1, e2SubsId1)
1230 delreq1, delmsg1 := e2termConn1.RecvSubsDelReq(t)
1231 e2termConn1.SendSubsDelResp(t, delreq1, delmsg1)
1232 xappConn1.RecvSubsDelResp(t, deltrans1)
1233 //Wait that subs is cleaned
1234 mainCtrl.wait_subs_clean(t, e2SubsId1, 10)
1237 deltrans2 := xappConn1.NewRmrTransactionId("", "RAN_NAME_2")
1238 xappConn1.SendSubsDelReq(t, deltrans2, e2SubsId2)
1239 delreq2, delmsg2 := e2termConn1.RecvSubsDelReq(t)
1240 e2termConn1.SendSubsDelResp(t, delreq2, delmsg2)
1241 xappConn1.RecvSubsDelResp(t, deltrans2)
1242 //Wait that subs is cleaned
1243 mainCtrl.wait_subs_clean(t, e2SubsId2, 10)
1245 xappConn1.TestMsgChanEmpty(t)
1246 xappConn2.TestMsgChanEmpty(t)
1247 e2termConn1.TestMsgChanEmpty(t)
1248 mainCtrl.wait_registry_empty(t, 10)
1251 //-----------------------------------------------------------------------------
1252 // TestSubReqRetryInSubmgr
1255 // +-------+ +---------+ +---------+
1256 // | xapp | | submgr | | e2term |
1257 // +-------+ +---------+ +---------+
1260 // |------------->| |
1263 // | |------------->|
1267 // | |------------->|
1270 // | |<-------------|
1273 // |<-------------| |
1275 // | [SUBS DELETE] |
1278 //-----------------------------------------------------------------------------
1280 func TestSubReqRetryInSubmgr(t *testing.T) {
1281 CaseBegin("TestSubReqRetryInSubmgr start")
1283 // Init counter check
1284 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
1285 Counter{cSubReqFromXapp, 1},
1286 Counter{cSubReqToE2, 1},
1287 Counter{cSubReqTimerExpiry, 1},
1288 Counter{cSubReReqToE2, 1},
1289 Counter{cSubRespFromE2, 1},
1290 Counter{cSubRespToXapp, 1},
1291 Counter{cSubDelReqFromXapp, 1},
1292 Counter{cSubDelReqToE2, 1},
1293 Counter{cSubDelRespFromE2, 1},
1294 Counter{cSubDelRespToXapp, 1},
1297 // Xapp: Send SubsReq
1298 cretrans := xappConn1.SendSubsReq(t, nil, nil)
1300 // E2t: Receive 1st SubsReq
1301 e2termConn1.RecvSubsReq(t)
1303 // E2t: Receive 2nd SubsReq and send SubsResp
1304 crereq, cremsg := e2termConn1.RecvSubsReq(t)
1305 e2termConn1.SendSubsResp(t, crereq, cremsg)
1307 // Xapp: Receive SubsResp
1308 e2SubsId := xappConn1.RecvSubsResp(t, cretrans)
1310 deltrans := xappConn1.SendSubsDelReq(t, nil, e2SubsId)
1311 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
1312 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
1313 xappConn1.RecvSubsDelResp(t, deltrans)
1315 // Wait that subs is cleaned
1316 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
1318 xappConn1.TestMsgChanEmpty(t)
1319 xappConn2.TestMsgChanEmpty(t)
1320 e2termConn1.TestMsgChanEmpty(t)
1321 mainCtrl.wait_registry_empty(t, 10)
1323 mainCtrl.VerifyCounterValues(t)
1326 //-----------------------------------------------------------------------------
1327 // TestSubReqTwoRetriesNoRespSubDelRespInSubmgr
1330 // +-------+ +---------+ +---------+
1331 // | xapp | | submgr | | e2term |
1332 // +-------+ +---------+ +---------+
1335 // |------------->| |
1338 // | |------------->|
1342 // | |------------->|
1345 // | |------------->|
1348 // | |<-------------|
1351 //-----------------------------------------------------------------------------
1352 func TestSubReqRetryNoRespSubDelRespInSubmgr(t *testing.T) {
1353 CaseBegin("TestSubReqTwoRetriesNoRespSubDelRespInSubmgr start")
1355 // Init counter check
1356 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
1357 Counter{cSubReqFromXapp, 1},
1358 Counter{cSubReqToE2, 1},
1359 Counter{cSubReReqToE2, 1},
1360 Counter{cSubReqTimerExpiry, 2},
1361 Counter{cSubDelReqToE2, 1},
1362 Counter{cSubDelRespFromE2, 1},
1365 // Xapp: Send SubsReq
1366 xappConn1.SendSubsReq(t, nil, nil)
1368 // E2t: Receive 1st SubsReq
1369 e2termConn1.RecvSubsReq(t)
1371 // E2t: Receive 2nd SubsReq
1372 e2termConn1.RecvSubsReq(t)
1374 // E2t: Send receive SubsDelReq and send SubsResp
1375 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
1376 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
1378 // Wait that subs is cleaned
1379 mainCtrl.wait_subs_clean(t, delreq.RequestId.InstanceId, 10)
1381 xappConn1.TestMsgChanEmpty(t)
1382 xappConn2.TestMsgChanEmpty(t)
1383 e2termConn1.TestMsgChanEmpty(t)
1384 mainCtrl.wait_registry_empty(t, 10)
1386 mainCtrl.VerifyCounterValues(t)
1389 //-----------------------------------------------------------------------------
1390 // TestSubReqTwoRetriesNoRespAtAllInSubmgr
1393 // +-------+ +---------+ +---------+
1394 // | xapp | | submgr | | e2term |
1395 // +-------+ +---------+ +---------+
1398 // |------------->| |
1401 // | |------------->|
1405 // | |------------->|
1408 // | |------------->|
1412 // | |------------->|
1416 //-----------------------------------------------------------------------------
1418 func TestSubReqTwoRetriesNoRespAtAllInSubmgr(t *testing.T) {
1419 CaseBegin("TestSubReqTwoRetriesNoRespAtAllInSubmgr start")
1421 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
1422 Counter{cSubReqFromXapp, 1},
1423 Counter{cSubReqToE2, 1},
1424 Counter{cSubReReqToE2, 1},
1425 Counter{cSubReqTimerExpiry, 2},
1426 Counter{cSubDelReqToE2, 1},
1427 Counter{cSubDelReReqToE2, 1},
1428 Counter{cSubDelReqTimerExpiry, 2},
1431 // Xapp: Send SubsReq
1432 xappConn1.SendSubsReq(t, nil, nil)
1434 // E2t: Receive 1st SubsReq
1435 e2termConn1.RecvSubsReq(t)
1437 // E2t: Receive 2nd SubsReq
1438 e2termConn1.RecvSubsReq(t)
1440 // E2t: Receive 1st SubsDelReq
1441 e2termConn1.RecvSubsDelReq(t)
1443 // E2t: Receive 2nd SubsDelReq
1444 delreq, _ := e2termConn1.RecvSubsDelReq(t)
1446 // Wait that subs is cleaned
1447 mainCtrl.wait_subs_clean(t, delreq.RequestId.InstanceId, 15)
1449 xappConn1.TestMsgChanEmpty(t)
1450 xappConn2.TestMsgChanEmpty(t)
1451 e2termConn1.TestMsgChanEmpty(t)
1452 mainCtrl.wait_registry_empty(t, 10)
1454 mainCtrl.VerifyCounterValues(t)
1457 //-----------------------------------------------------------------------------
1458 // TestSubReqSubFailRespInSubmgr
1461 // +-------+ +---------+ +---------+
1462 // | xapp | | submgr | | e2term |
1463 // +-------+ +---------+ +---------+
1466 // |------------->| |
1469 // | |------------->|
1472 // | |<-------------|
1475 // |<-------------| |
1478 //-----------------------------------------------------------------------------
1480 func TestSubReqSubFailRespInSubmgr(t *testing.T) {
1481 CaseBegin("TestSubReqSubFailRespInSubmgr start")
1483 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
1484 Counter{cSubReqFromXapp, 1},
1485 Counter{cSubReqToE2, 1},
1486 Counter{cSubFailFromE2, 1},
1487 Counter{cSubFailToXapp, 1},
1490 // Xapp: Send SubsReq
1491 cretrans := xappConn1.SendSubsReq(t, nil, nil)
1493 // E2t: Receive SubsReq and send SubsFail (first)
1494 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
1495 fparams1 := &teststube2ap.E2StubSubsFailParams{}
1496 fparams1.Set(crereq1)
1497 e2termConn1.SendSubsFail(t, fparams1, cremsg1)
1499 // Xapp: Receive SubsFail
1500 e2SubsId := xappConn1.RecvSubsFail(t, cretrans)
1502 // Wait that subs is cleaned
1503 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
1505 xappConn1.TestMsgChanEmpty(t)
1506 xappConn2.TestMsgChanEmpty(t)
1507 e2termConn1.TestMsgChanEmpty(t)
1508 mainCtrl.wait_registry_empty(t, 10)
1510 mainCtrl.VerifyCounterValues(t)
1513 //-----------------------------------------------------------------------------
1514 // TestSubDelReqRetryInSubmgr
1517 // +-------+ +---------+ +---------+
1518 // | xapp | | submgr | | e2term |
1519 // +-------+ +---------+ +---------+
1521 // | [SUBS CREATE] |
1525 // |------------->| |
1528 // | |------------->|
1531 // | |------------->|
1534 // | |<-------------|
1537 // |<-------------| |
1539 //-----------------------------------------------------------------------------
1541 func TestSubDelReqRetryInSubmgr(t *testing.T) {
1543 CaseBegin("TestSubDelReqRetryInSubmgr start")
1546 cretrans := xappConn1.SendSubsReq(t, nil, nil)
1547 crereq, cremsg := e2termConn1.RecvSubsReq(t)
1548 e2termConn1.SendSubsResp(t, crereq, cremsg)
1549 e2SubsId := xappConn1.RecvSubsResp(t, cretrans)
1552 // Xapp: Send SubsDelReq
1553 deltrans := xappConn1.SendSubsDelReq(t, nil, e2SubsId)
1555 // E2t: Receive 1st SubsDelReq
1556 e2termConn1.RecvSubsDelReq(t)
1558 // E2t: Receive 2nd SubsDelReq and send SubsDelResp
1559 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
1560 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
1562 // Xapp: Receive SubsDelResp
1563 xappConn1.RecvSubsDelResp(t, deltrans)
1565 // Wait that subs is cleaned
1566 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
1568 xappConn1.TestMsgChanEmpty(t)
1569 xappConn2.TestMsgChanEmpty(t)
1570 e2termConn1.TestMsgChanEmpty(t)
1571 mainCtrl.wait_registry_empty(t, 10)
1574 //-----------------------------------------------------------------------------
1575 // TestSubDelReqTwoRetriesNoRespInSubmgr
1578 // +-------+ +---------+ +---------+
1579 // | xapp | | submgr | | e2term |
1580 // +-------+ +---------+ +---------+
1582 // | [SUBS CREATE] |
1586 // |------------->| |
1589 // | |------------->|
1592 // | |------------->|
1596 // |<-------------| |
1598 //-----------------------------------------------------------------------------
1600 func TestSubDelReqTwoRetriesNoRespInSubmgr(t *testing.T) {
1602 CaseBegin("TestSubDelReTwoRetriesNoRespInSubmgr start")
1605 cretrans := xappConn1.SendSubsReq(t, nil, nil)
1606 crereq, cremsg := e2termConn1.RecvSubsReq(t)
1607 e2termConn1.SendSubsResp(t, crereq, cremsg)
1608 e2SubsId := xappConn1.RecvSubsResp(t, cretrans)
1611 // Xapp: Send SubsDelReq
1612 deltrans := xappConn1.SendSubsDelReq(t, nil, e2SubsId)
1614 // E2t: Receive 1st SubsDelReq
1615 e2termConn1.RecvSubsDelReq(t)
1617 // E2t: Receive 2nd SubsDelReq
1618 e2termConn1.RecvSubsDelReq(t)
1620 // Xapp: Receive SubsDelResp
1621 xappConn1.RecvSubsDelResp(t, deltrans)
1623 // Wait that subs is cleaned
1624 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
1626 xappConn1.TestMsgChanEmpty(t)
1627 xappConn2.TestMsgChanEmpty(t)
1628 e2termConn1.TestMsgChanEmpty(t)
1629 mainCtrl.wait_registry_empty(t, 10)
1632 //-----------------------------------------------------------------------------
1633 // TestSubDelReqSubDelFailRespInSubmgr
1636 // +-------+ +---------+ +---------+
1637 // | xapp | | submgr | | e2term |
1638 // +-------+ +---------+ +---------+
1640 // | [SUBS CREATE] |
1644 // |------------->| |
1647 // | |------------->|
1650 // | |<-------------|
1653 // |<-------------| |
1656 //-----------------------------------------------------------------------------
1658 func TestSubDelReqSubDelFailRespInSubmgr(t *testing.T) {
1659 CaseBegin("TestSubReqSubDelFailRespInSubmgr start")
1661 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
1662 Counter{cSubReqFromXapp, 1},
1663 Counter{cSubReqToE2, 1},
1664 Counter{cSubRespFromE2, 1},
1665 Counter{cSubRespToXapp, 1},
1666 Counter{cSubDelReqFromXapp, 1},
1667 Counter{cSubDelReqToE2, 1},
1668 Counter{cSubDelFailFromE2, 1},
1669 Counter{cSubDelRespToXapp, 1},
1673 cretrans := xappConn1.SendSubsReq(t, nil, nil)
1674 crereq, cremsg := e2termConn1.RecvSubsReq(t)
1675 e2termConn1.SendSubsResp(t, crereq, cremsg)
1676 e2SubsId := xappConn1.RecvSubsResp(t, cretrans)
1678 // Xapp: Send SubsDelReq
1679 deltrans := xappConn1.SendSubsDelReq(t, nil, e2SubsId)
1681 // E2t: Send receive SubsDelReq and send SubsDelFail
1682 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
1683 e2termConn1.SendSubsDelFail(t, delreq, delmsg)
1685 // Xapp: Receive SubsDelResp
1686 xappConn1.RecvSubsDelResp(t, deltrans)
1688 // Wait that subs is cleaned
1689 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
1691 xappConn1.TestMsgChanEmpty(t)
1692 xappConn2.TestMsgChanEmpty(t)
1693 e2termConn1.TestMsgChanEmpty(t)
1694 mainCtrl.wait_registry_empty(t, 10)
1696 mainCtrl.VerifyCounterValues(t)
1699 //-----------------------------------------------------------------------------
1700 // TestSubReqAndSubDelOkSameAction
1703 // +-------+ +-------+ +---------+ +---------+
1704 // | xapp2 | | xapp1 | | submgr | | e2term |
1705 // +-------+ +-------+ +---------+ +---------+
1710 // | |------------->| |
1713 // | | |------------->|
1715 // | | |<-------------|
1717 // | |<-------------| |
1720 // |--------------------------->| |
1723 // |<---------------------------| |
1725 // | | SubDelReq 1 | |
1726 // | |------------->| |
1728 // | | SubDelResp 1 | |
1729 // | |<-------------| |
1731 // | SubDelReq 2 | |
1732 // |--------------------------->| |
1734 // | | | SubDelReq 2 |
1735 // | | |------------->|
1737 // | | | SubDelReq 2 |
1738 // | | |------------->|
1740 // | SubDelResp 2 | |
1741 // |<---------------------------| |
1743 //-----------------------------------------------------------------------------
1744 func TestSubReqAndSubDelOkSameAction(t *testing.T) {
1745 CaseBegin("TestSubReqAndSubDelOkSameAction")
1747 // Init counter check
1748 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
1749 Counter{cSubReqFromXapp, 2},
1750 Counter{cSubReqToE2, 1},
1751 Counter{cSubRespFromE2, 1},
1752 Counter{cSubRespToXapp, 2},
1753 Counter{cMergedSubscriptions, 1},
1754 Counter{cUnmergedSubscriptions, 1},
1755 Counter{cSubDelReqFromXapp, 2},
1756 Counter{cSubDelReqToE2, 1},
1757 Counter{cSubDelRespFromE2, 1},
1758 Counter{cSubDelRespToXapp, 2},
1762 rparams1 := &teststube2ap.E2StubSubsReqParams{}
1764 cretrans1 := xappConn1.SendSubsReq(t, rparams1, nil)
1765 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
1766 e2termConn1.SendSubsResp(t, crereq1, cremsg1)
1767 e2SubsId1 := xappConn1.RecvSubsResp(t, cretrans1)
1770 rparams2 := &teststube2ap.E2StubSubsReqParams{}
1772 cretrans2 := xappConn2.SendSubsReq(t, rparams2, nil)
1773 e2SubsId2 := xappConn2.RecvSubsResp(t, cretrans2)
1775 resp, _ := xapp.Subscription.QuerySubscriptions()
1776 assert.Equal(t, resp[0].SubscriptionID, int64(e2SubsId1))
1777 assert.Equal(t, resp[0].Meid, "RAN_NAME_1")
1778 assert.Equal(t, resp[0].ClientEndpoint, []string{"localhost:13560", "localhost:13660"})
1781 deltrans1 := xappConn1.SendSubsDelReq(t, nil, e2SubsId1)
1782 xappConn1.RecvSubsDelResp(t, deltrans1)
1785 deltrans2 := xappConn2.SendSubsDelReq(t, nil, e2SubsId2)
1786 delreq2, delmsg2 := e2termConn1.RecvSubsDelReq(t)
1787 e2termConn1.SendSubsDelResp(t, delreq2, delmsg2)
1788 xappConn2.RecvSubsDelResp(t, deltrans2)
1789 //Wait that subs is cleaned
1790 mainCtrl.wait_subs_clean(t, e2SubsId2, 10)
1792 xappConn1.TestMsgChanEmpty(t)
1793 xappConn2.TestMsgChanEmpty(t)
1794 e2termConn1.TestMsgChanEmpty(t)
1795 mainCtrl.wait_registry_empty(t, 10)
1797 mainCtrl.VerifyCounterValues(t)
1800 //-----------------------------------------------------------------------------
1801 // TestSubReqAndSubDelOkSameActionParallel
1804 // +-------+ +-------+ +---------+ +---------+
1805 // | xapp2 | | xapp1 | | submgr | | e2term |
1806 // +-------+ +-------+ +---------+ +---------+
1811 // | |------------->| |
1814 // | | |------------->|
1816 // |--------------------------->| |
1818 // | | |<-------------|
1820 // | |<-------------| |
1823 // |<---------------------------| |
1825 // | | SubDelReq 1 | |
1826 // | |------------->| |
1828 // | | SubDelResp 1 | |
1829 // | |<-------------| |
1831 // | SubDelReq 2 | |
1832 // |--------------------------->| |
1834 // | | | SubDelReq 2 |
1835 // | | |------------->|
1837 // | | | SubDelReq 2 |
1838 // | | |------------->|
1840 // | SubDelResp 2 | |
1841 // |<---------------------------| |
1843 //-----------------------------------------------------------------------------
1844 func TestSubReqAndSubDelOkSameActionParallel(t *testing.T) {
1845 CaseBegin("TestSubReqAndSubDelOkSameActionParallel")
1848 rparams1 := &teststube2ap.E2StubSubsReqParams{}
1850 cretrans1 := xappConn1.SendSubsReq(t, rparams1, nil)
1851 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
1854 rparams2 := &teststube2ap.E2StubSubsReqParams{}
1856 cretrans2 := xappConn2.SendSubsReq(t, rparams2, nil)
1859 e2termConn1.SendSubsResp(t, crereq1, cremsg1)
1860 e2SubsId1 := xappConn1.RecvSubsResp(t, cretrans1)
1863 e2SubsId2 := xappConn2.RecvSubsResp(t, cretrans2)
1866 deltrans1 := xappConn1.SendSubsDelReq(t, nil, e2SubsId1)
1867 xappConn1.RecvSubsDelResp(t, deltrans1)
1870 deltrans2 := xappConn2.SendSubsDelReq(t, nil, e2SubsId2)
1871 delreq2, delmsg2 := e2termConn1.RecvSubsDelReq(t)
1872 e2termConn1.SendSubsDelResp(t, delreq2, delmsg2)
1873 xappConn2.RecvSubsDelResp(t, deltrans2)
1875 //Wait that subs is cleaned
1876 mainCtrl.wait_subs_clean(t, e2SubsId2, 10)
1878 xappConn1.TestMsgChanEmpty(t)
1879 xappConn2.TestMsgChanEmpty(t)
1880 e2termConn1.TestMsgChanEmpty(t)
1881 mainCtrl.wait_registry_empty(t, 10)
1884 //-----------------------------------------------------------------------------
1885 // TestSubReqAndSubDelNokSameActionParallel
1888 // +-------+ +-------+ +---------+ +---------+
1889 // | xapp2 | | xapp1 | | submgr | | e2term |
1890 // +-------+ +-------+ +---------+ +---------+
1895 // | |------------->| |
1898 // | | |------------->|
1900 // |--------------------------->| |
1902 // | | |<-------------|
1905 // | |<-------------| |
1908 // |<---------------------------| |
1910 //-----------------------------------------------------------------------------
1911 func TestSubReqAndSubDelNokSameActionParallel(t *testing.T) {
1912 CaseBegin("TestSubReqAndSubDelNokSameActionParallel")
1915 rparams1 := &teststube2ap.E2StubSubsReqParams{}
1917 cretrans1 := xappConn1.SendSubsReq(t, rparams1, nil)
1919 // E2t: Receive SubsReq (first)
1920 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
1923 rparams2 := &teststube2ap.E2StubSubsReqParams{}
1925 subepcnt2 := mainCtrl.get_subs_entrypoint_cnt(t, crereq1.RequestId.InstanceId)
1926 cretrans2 := xappConn2.SendSubsReq(t, rparams2, nil)
1927 mainCtrl.wait_subs_entrypoint_cnt_change(t, crereq1.RequestId.InstanceId, subepcnt2, 10)
1929 // E2t: send SubsFail (first)
1930 fparams1 := &teststube2ap.E2StubSubsFailParams{}
1931 fparams1.Set(crereq1)
1932 e2termConn1.SendSubsFail(t, fparams1, cremsg1)
1935 e2SubsId1 := xappConn1.RecvSubsFail(t, cretrans1)
1937 xappConn2.RecvSubsFail(t, cretrans2)
1939 //Wait that subs is cleaned
1940 mainCtrl.wait_subs_clean(t, e2SubsId1, 15)
1942 xappConn1.TestMsgChanEmpty(t)
1943 xappConn2.TestMsgChanEmpty(t)
1944 e2termConn1.TestMsgChanEmpty(t)
1945 mainCtrl.wait_registry_empty(t, 10)
1948 //-----------------------------------------------------------------------------
1949 // TestSubReqAndSubDelNoAnswerSameActionParallel
1952 // +-------+ +-------+ +---------+ +---------+
1953 // | xapp2 | | xapp1 | | submgr | | e2term |
1954 // +-------+ +-------+ +---------+ +---------+
1959 // | |------------->| |
1962 // | | |------------->|
1964 // |--------------------------->| |
1967 // | | |------------->|
1970 // | | | SubDelReq |
1971 // | | |------------->|
1973 // | | | SubDelResp |
1974 // | | |<-------------|
1976 //-----------------------------------------------------------------------------
1977 func TestSubReqAndSubDelNoAnswerSameActionParallel(t *testing.T) {
1978 CaseBegin("TestSubReqAndSubDelNoAnswerSameActionParallel")
1981 rparams1 := &teststube2ap.E2StubSubsReqParams{}
1983 xappConn1.SendSubsReq(t, rparams1, nil)
1985 crereq1, _ := e2termConn1.RecvSubsReq(t)
1988 rparams2 := &teststube2ap.E2StubSubsReqParams{}
1990 subepcnt2 := mainCtrl.get_subs_entrypoint_cnt(t, crereq1.RequestId.InstanceId)
1991 xappConn2.SendSubsReq(t, rparams2, nil)
1992 mainCtrl.wait_subs_entrypoint_cnt_change(t, crereq1.RequestId.InstanceId, subepcnt2, 10)
1994 //Req1 (retransmitted)
1995 e2termConn1.RecvSubsReq(t)
1997 delreq1, delmsg1 := e2termConn1.RecvSubsDelReq(t)
1998 e2termConn1.SendSubsDelResp(t, delreq1, delmsg1)
2000 //Wait that subs is cleaned
2001 mainCtrl.wait_subs_clean(t, delreq1.RequestId.InstanceId, 10)
2003 xappConn1.TestMsgChanEmpty(t)
2004 xappConn2.TestMsgChanEmpty(t)
2005 e2termConn1.TestMsgChanEmpty(t)
2006 mainCtrl.wait_registry_empty(t, 15)
2009 //----------------------------- Policy cases ---------------------------------
2010 //-----------------------------------------------------------------------------
2011 // TestSubReqPolicyAndSubDelOk
2014 // +-------+ +---------+ +---------+
2015 // | xapp | | submgr | | e2term |
2016 // +-------+ +---------+ +---------+
2019 // |------------->| |
2022 // | |------------->|
2025 // | |<-------------|
2028 // |<-------------| |
2032 // |------------->| |
2035 // | |------------->|
2038 // | |<-------------|
2041 // |<-------------| |
2043 //-----------------------------------------------------------------------------
2044 func TestSubReqPolicyAndSubDelOk(t *testing.T) {
2045 CaseBegin("TestSubReqAndSubDelOk")
2047 rparams1 := &teststube2ap.E2StubSubsReqParams{}
2049 rparams1.Req.ActionSetups[0].ActionType = e2ap.E2AP_ActionTypePolicy
2050 cretrans := xappConn1.SendSubsReq(t, rparams1, nil)
2052 crereq, cremsg := e2termConn1.RecvSubsReq(t)
2053 e2termConn1.SendSubsResp(t, crereq, cremsg)
2054 e2SubsId := xappConn1.RecvSubsResp(t, cretrans)
2055 deltrans := xappConn1.SendSubsDelReq(t, nil, e2SubsId)
2056 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
2058 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
2059 xappConn1.RecvSubsDelResp(t, deltrans)
2061 //Wait that subs is cleaned
2062 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
2064 xappConn1.TestMsgChanEmpty(t)
2065 xappConn2.TestMsgChanEmpty(t)
2066 e2termConn1.TestMsgChanEmpty(t)
2067 mainCtrl.wait_registry_empty(t, 10)
2070 //-----------------------------------------------------------------------------
2071 // TestSubReqPolicyChangeAndSubDelOk
2074 // +-------+ +---------+ +---------+
2075 // | xapp | | submgr | | e2term |
2076 // +-------+ +---------+ +---------+
2079 // |------------->| |
2082 // | |------------->|
2085 // | |<-------------|
2088 // |<-------------| |
2091 // |------------->| |
2094 // | |------------->|
2097 // | |<-------------|
2100 // |<-------------| |
2103 // |------------->| |
2106 // | |------------->|
2109 // | |<-------------|
2112 // |<-------------| |
2114 //-----------------------------------------------------------------------------
2116 func TestSubReqPolicyChangeAndSubDelOk(t *testing.T) {
2117 CaseBegin("TestSubReqAndSubDelOk")
2119 rparams1 := &teststube2ap.E2StubSubsReqParams{}
2121 rparams1.Req.ActionSetups[0].ActionType = e2ap.E2AP_ActionTypePolicy
2122 cretrans := xappConn1.SendSubsReq(t, rparams1, nil)
2124 crereq, cremsg := e2termConn1.RecvSubsReq(t)
2125 e2termConn1.SendSubsResp(t, crereq, cremsg)
2126 e2SubsId := xappConn1.RecvSubsResp(t, cretrans)
2129 rparams1.Req.RequestId.InstanceId = e2SubsId
2130 rparams1.Req.ActionSetups[0].SubsequentAction.TimetoWait = e2ap.E2AP_TimeToWaitW200ms
2131 xappConn1.SendSubsReq(t, rparams1, cretrans)
2133 crereq, cremsg = e2termConn1.RecvSubsReq(t)
2134 e2termConn1.SendSubsResp(t, crereq, cremsg)
2135 e2SubsId = xappConn1.RecvSubsResp(t, cretrans)
2136 deltrans := xappConn1.SendSubsDelReq(t, nil, e2SubsId)
2137 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
2139 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
2140 xappConn1.RecvSubsDelResp(t, deltrans)
2142 //Wait that subs is cleaned
2143 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
2145 xappConn1.TestMsgChanEmpty(t)
2146 xappConn2.TestMsgChanEmpty(t)
2147 e2termConn1.TestMsgChanEmpty(t)
2148 mainCtrl.wait_registry_empty(t, 10)
2151 //-----------------------------------------------------------------------------
2152 // TestSubReqAndSubDelOkTwoE2termParallel
2155 // +-------+ +---------+ +---------+ +---------+
2156 // | xapp | | submgr | | e2term1 | | e2term2 |
2157 // +-------+ +---------+ +---------+ +---------+
2162 // |------------->| | |
2165 // | |------------->| |
2168 // |------------->| | |
2171 // | |---------------------------->|
2174 // | |<-------------| |
2176 // |<-------------| | |
2178 // | |<----------------------------|
2180 // |<-------------| | |
2182 // | [SUBS 1 DELETE] | |
2184 // | [SUBS 2 DELETE] | |
2187 //-----------------------------------------------------------------------------
2188 func TestSubReqAndSubDelOkTwoE2termParallel(t *testing.T) {
2189 CaseBegin("TestSubReqAndSubDelOkTwoE2termParallel")
2192 cretrans1 := xappConn1.NewRmrTransactionId("", "RAN_NAME_1")
2193 xappConn1.SendSubsReq(t, nil, cretrans1)
2194 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
2196 cretrans2 := xappConn1.NewRmrTransactionId("", "RAN_NAME_11")
2197 xappConn1.SendSubsReq(t, nil, cretrans2)
2198 crereq2, cremsg2 := e2termConn2.RecvSubsReq(t)
2201 e2termConn1.SendSubsResp(t, crereq1, cremsg1)
2202 e2SubsId1 := xappConn1.RecvSubsResp(t, cretrans1)
2205 e2termConn2.SendSubsResp(t, crereq2, cremsg2)
2206 e2SubsId2 := xappConn1.RecvSubsResp(t, cretrans2)
2209 deltrans1 := xappConn1.SendSubsDelReq(t, nil, e2SubsId1)
2210 delreq1, delmsg1 := e2termConn1.RecvSubsDelReq(t)
2211 e2termConn1.SendSubsDelResp(t, delreq1, delmsg1)
2212 xappConn1.RecvSubsDelResp(t, deltrans1)
2213 //Wait that subs is cleaned
2214 mainCtrl.wait_subs_clean(t, e2SubsId1, 10)
2217 deltrans2 := xappConn1.SendSubsDelReq(t, nil, e2SubsId2)
2218 delreq2, delmsg2 := e2termConn2.RecvSubsDelReq(t)
2219 e2termConn2.SendSubsDelResp(t, delreq2, delmsg2)
2220 xappConn1.RecvSubsDelResp(t, deltrans2)
2221 //Wait that subs is cleaned
2222 mainCtrl.wait_subs_clean(t, e2SubsId2, 10)
2224 xappConn1.TestMsgChanEmpty(t)
2225 xappConn2.TestMsgChanEmpty(t)
2226 e2termConn1.TestMsgChanEmpty(t)
2227 e2termConn2.TestMsgChanEmpty(t)
2228 mainCtrl.wait_registry_empty(t, 10)
2231 //-----------------------------------------------------------------------------
2232 // TestSubReqInsertAndSubDelOk
2235 // +-------+ +---------+ +---------+
2236 // | xapp | | submgr | | e2term |
2237 // +-------+ +---------+ +---------+
2240 // |------------->| |
2243 // | |------------->|
2246 // | |<-------------|
2249 // |<-------------| |
2253 // |------------->| |
2256 // | |------------->|
2259 // | |<-------------|
2262 // |<-------------| |
2264 //-----------------------------------------------------------------------------
2265 func TestSubReqInsertAndSubDelOk(t *testing.T) {
2266 CaseBegin("TestInsertSubReqAndSubDelOk")
2268 rparams1 := &teststube2ap.E2StubSubsReqParams{}
2270 rparams1.Req.ActionSetups[0].ActionType = e2ap.E2AP_ActionTypeInsert
2271 cretrans := xappConn1.SendSubsReq(t, rparams1, nil)
2273 crereq, cremsg := e2termConn1.RecvSubsReq(t)
2274 e2termConn1.SendSubsResp(t, crereq, cremsg)
2275 e2SubsId := xappConn1.RecvSubsResp(t, cretrans)
2276 deltrans := xappConn1.SendSubsDelReq(t, nil, e2SubsId)
2277 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
2279 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
2280 xappConn1.RecvSubsDelResp(t, deltrans)
2282 //Wait that subs is cleaned
2283 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
2285 xappConn1.TestMsgChanEmpty(t)
2286 xappConn2.TestMsgChanEmpty(t)
2287 e2termConn1.TestMsgChanEmpty(t)
2288 mainCtrl.wait_registry_empty(t, 10)
2291 //-----------------------------------------------------------------------------
2292 // TestSubReqRetransmissionWithSameSubIdDiffXid
2294 // This case simulates case where xApp restarts and starts sending same
2295 // subscription requests which have already subscribed successfully
2298 // +-------+ +---------+ +---------+
2299 // | xapp | | submgr | | e2term |
2300 // +-------+ +---------+ +---------+
2303 // |------------->| |
2306 // | |------------->|
2309 // | |<-------------|
2312 // |<-------------| |
2314 // | xApp restart | |
2317 // | (retrans with same xApp generated subid but diff xid)
2318 // |------------->| |
2321 // |<-------------| |
2323 // | [SUBS DELETE] |
2326 //-----------------------------------------------------------------------------
2327 func TestSubReqRetransmissionWithSameSubIdDiffXid(t *testing.T) {
2328 CaseBegin("TestSubReqRetransmissionWithSameSubIdDiffXid")
2331 cretrans := xappConn1.SendSubsReq(t, nil, nil)
2332 crereq, cremsg := e2termConn1.RecvSubsReq(t)
2333 e2termConn1.SendSubsResp(t, crereq, cremsg)
2334 e2SubsId := xappConn1.RecvSubsResp(t, cretrans)
2336 // xApp restart here
2337 // --> artificial delay
2338 <-time.After(1 * time.Second)
2341 cretrans = xappConn1.SendSubsReq(t, nil, nil) //Retransmitted SubReq
2342 e2SubsId = xappConn1.RecvSubsResp(t, cretrans)
2345 deltrans := xappConn1.SendSubsDelReq(t, nil, e2SubsId)
2346 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
2347 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
2348 xappConn1.RecvSubsDelResp(t, deltrans)
2350 //Wait that subs is cleaned
2351 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
2353 xappConn1.TestMsgChanEmpty(t)
2354 xappConn2.TestMsgChanEmpty(t)
2355 e2termConn1.TestMsgChanEmpty(t)
2356 mainCtrl.wait_registry_empty(t, 10)
2359 //-----------------------------------------------------------------------------
2360 // TestSubReqNokAndSubDelOkWithRestartInMiddle
2363 // +-------+ +---------+ +---------+
2364 // | xapp | | submgr | | e2term |
2365 // +-------+ +---------+ +---------+
2368 // |------------->| |
2371 // | |------------->|
2376 // | Submgr restart |
2380 // | |------------->|
2383 // | |<-------------|
2386 //-----------------------------------------------------------------------------
2388 func TestSubReqNokAndSubDelOkWithRestartInMiddle(t *testing.T) {
2389 CaseBegin("TestSubReqNokAndSubDelOkWithRestartInMiddle")
2391 mainCtrl.SetResetTestFlag(t, true) // subs.DoNotWaitSubResp will be set TRUE for the subscription
2392 xappConn1.SendSubsReq(t, nil, nil)
2393 e2termConn1.RecvSubsReq(t)
2394 mainCtrl.SetResetTestFlag(t, false)
2396 resp, _ := xapp.Subscription.QuerySubscriptions()
2397 assert.Equal(t, resp[0].Meid, "RAN_NAME_1")
2398 assert.Equal(t, resp[0].ClientEndpoint, []string{"localhost:13560"})
2399 e2SubsId := uint32(resp[0].SubscriptionID)
2400 t.Logf("e2SubsId = %v", e2SubsId)
2402 mainCtrl.SimulateRestart(t)
2403 xapp.Logger.Debug("mainCtrl.SimulateRestart done")
2405 // Submgr send delete for uncompleted subscription
2406 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
2407 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
2409 // Wait that subs is cleaned
2410 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
2412 xappConn1.TestMsgChanEmpty(t)
2413 xappConn2.TestMsgChanEmpty(t)
2414 e2termConn1.TestMsgChanEmpty(t)
2415 mainCtrl.wait_registry_empty(t, 10)
2418 //-----------------------------------------------------------------------------
2419 // TestSubReqAndSubDelOkWithRestartInMiddle
2422 // +-------+ +---------+ +---------+
2423 // | xapp | | submgr | | e2term |
2424 // +-------+ +---------+ +---------+
2427 // |------------->| |
2430 // | |------------->|
2433 // | |<-------------|
2436 // |<-------------| |
2439 // | Submgr restart |
2442 // |------------->| |
2445 // | |------------->|
2448 // | |<-------------|
2451 // |<-------------| |
2453 //-----------------------------------------------------------------------------
2455 func TestSubReqAndSubDelOkWithRestartInMiddle(t *testing.T) {
2456 CaseBegin("TestSubReqAndSubDelOkWithRestartInMiddle")
2458 cretrans := xappConn1.SendSubsReq(t, nil, nil)
2459 crereq, cremsg := e2termConn1.RecvSubsReq(t)
2460 e2termConn1.SendSubsResp(t, crereq, cremsg)
2461 e2SubsId := xappConn1.RecvSubsResp(t, cretrans)
2463 // Check subscription
2464 resp, _ := xapp.Subscription.QuerySubscriptions()
2465 assert.Equal(t, resp[0].SubscriptionID, int64(e2SubsId))
2466 assert.Equal(t, resp[0].Meid, "RAN_NAME_1")
2467 assert.Equal(t, resp[0].ClientEndpoint, []string{"localhost:13560"})
2469 mainCtrl.SimulateRestart(t)
2470 xapp.Logger.Debug("mainCtrl.SimulateRestart done")
2472 // ReadE2Subscriptions() for testing is running in own go routine (go mainCtrl.c.ReadE2Subscriptions())
2473 // That needs to be completed before successful subscription query is possible
2474 <-time.After(time.Second * 1)
2476 // Check that subscription is restored correctly after restart
2477 resp, _ = xapp.Subscription.QuerySubscriptions()
2478 assert.Equal(t, resp[0].SubscriptionID, int64(e2SubsId))
2479 assert.Equal(t, resp[0].Meid, "RAN_NAME_1")
2480 assert.Equal(t, resp[0].ClientEndpoint, []string{"localhost:13560"})
2482 deltrans := xappConn1.SendSubsDelReq(t, nil, e2SubsId)
2483 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
2484 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
2485 xappConn1.RecvSubsDelResp(t, deltrans)
2487 //Wait that subs is cleaned
2488 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
2490 xappConn1.TestMsgChanEmpty(t)
2491 xappConn2.TestMsgChanEmpty(t)
2492 e2termConn1.TestMsgChanEmpty(t)
2493 mainCtrl.wait_registry_empty(t, 10)
2496 //-----------------------------------------------------------------------------
2497 // TestSubReqAndSubDelOkSameActionWithRestartsInMiddle
2500 // +-------+ +-------+ +---------+ +---------+
2501 // | xapp2 | | xapp1 | | submgr | | e2term |
2502 // +-------+ +-------+ +---------+ +---------+
2507 // | |------------->| |
2510 // | | |------------->|
2512 // | | |<-------------|
2514 // | |<-------------| |
2517 // | submgr restart |
2522 // |--------------------------->| |
2525 // |<---------------------------| |
2527 // | | SubDelReq 1 | |
2528 // | |------------->| |
2530 // | | SubDelResp 1 | |
2531 // | |<-------------| |
2535 // | submgr restart |
2538 // | SubDelReq 2 | |
2539 // |--------------------------->| |
2541 // | | | SubDelReq 2 |
2542 // | | |------------->|
2544 // | | | SubDelReq 2 |
2545 // | | |------------->|
2547 // | SubDelResp 2 | |
2548 // |<---------------------------| |
2550 //-----------------------------------------------------------------------------
2552 func TestSubReqAndSubDelOkSameActionWithRestartsInMiddle(t *testing.T) {
2553 CaseBegin("TestSubReqAndSubDelOkSameActionWithRestartsInMiddle")
2556 rparams1 := &teststube2ap.E2StubSubsReqParams{}
2558 cretrans1 := xappConn1.SendSubsReq(t, rparams1, nil)
2559 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
2560 e2termConn1.SendSubsResp(t, crereq1, cremsg1)
2561 e2SubsId1 := xappConn1.RecvSubsResp(t, cretrans1)
2564 rparams2 := &teststube2ap.E2StubSubsReqParams{}
2566 cretrans2 := xappConn2.SendSubsReq(t, rparams2, nil)
2567 e2SubsId2 := xappConn2.RecvSubsResp(t, cretrans2)
2569 // Check subscription
2570 resp, _ := xapp.Subscription.QuerySubscriptions()
2571 assert.Equal(t, resp[0].SubscriptionID, int64(e2SubsId1))
2572 assert.Equal(t, resp[0].Meid, "RAN_NAME_1")
2573 assert.Equal(t, resp[0].ClientEndpoint, []string{"localhost:13560", "localhost:13660"})
2575 mainCtrl.SimulateRestart(t)
2576 xapp.Logger.Debug("mainCtrl.SimulateRestart done")
2578 // ReadE2Subscriptions() for testing is running in own go routine (go mainCtrl.c.ReadE2Subscriptions())
2579 // That needs to be completed before successful subscription query is possible
2580 <-time.After(time.Second * 1)
2582 // Check that subscription is restored correctly after restart
2583 resp, _ = xapp.Subscription.QuerySubscriptions()
2584 assert.Equal(t, resp[0].SubscriptionID, int64(e2SubsId1))
2585 assert.Equal(t, resp[0].Meid, "RAN_NAME_1")
2586 assert.Equal(t, resp[0].ClientEndpoint, []string{"localhost:13560", "localhost:13660"})
2589 deltrans1 := xappConn1.SendSubsDelReq(t, nil, e2SubsId1)
2590 xapp.Logger.Debug("xappConn1.RecvSubsDelResp")
2591 xappConn1.RecvSubsDelResp(t, deltrans1)
2592 xapp.Logger.Debug("xappConn1.RecvSubsDelResp received")
2594 mainCtrl.SimulateRestart(t)
2595 xapp.Logger.Debug("mainCtrl.SimulateRestart done")
2597 // ReadE2Subscriptions() for testing is running in own go routine (go mainCtrl.c.ReadE2Subscriptions())
2598 // Submgr need be ready before successful subscription deletion is possible
2599 <-time.After(time.Second * 1)
2602 deltrans2 := xappConn2.SendSubsDelReq(t, nil, e2SubsId2)
2603 delreq2, delmsg2 := e2termConn1.RecvSubsDelReq(t)
2605 e2termConn1.SendSubsDelResp(t, delreq2, delmsg2)
2606 xappConn2.RecvSubsDelResp(t, deltrans2)
2608 //Wait that subs is cleaned
2609 mainCtrl.wait_subs_clean(t, e2SubsId2, 10)
2611 xappConn1.TestMsgChanEmpty(t)
2612 xappConn2.TestMsgChanEmpty(t)
2613 e2termConn1.TestMsgChanEmpty(t)
2614 mainCtrl.wait_registry_empty(t, 10)
2617 //*****************************************************************************
2618 // REST interface test cases
2619 //*****************************************************************************
2621 //-----------------------------------------------------------------------------
2622 // Test debug GET and POST requests
2625 // +-------+ +---------+
2626 // | user | | submgr |
2627 // +-------+ +---------+
2634 func TestGetSubscriptions(t *testing.T) {
2636 mainCtrl.SendGetRequest(t, "localhost:8088", "/ric/v1/subscriptions")
2639 func TestGetSymptomData(t *testing.T) {
2641 mainCtrl.SendGetRequest(t, "localhost:8080", "/ric/v1/symptomdata")
2644 func TestPostdeleteSubId(t *testing.T) {
2646 mainCtrl.SendPostRequest(t, "localhost:8080", "/ric/v1/test/deletesubid=1")
2649 func TestPostEmptyDb(t *testing.T) {
2651 mainCtrl.SendPostRequest(t, "localhost:8080", "/ric/v1/test/emptydb")
2654 func TestGetRestSubscriptions(t *testing.T) {
2656 mainCtrl.SendGetRequest(t, "localhost:8080", "/ric/v1/restsubscriptions")
2659 //-----------------------------------------------------------------------------
2660 // TestDelAllE2nodeSubsViaDebugIf
2663 // +-------+ +---------+ +---------+ +---------+
2664 // | xapp | | submgr | | e2term | | rtmgr |
2665 // +-------+ +---------+ +---------+ +---------+
2667 // | RESTSubReq | | |
2668 // |---------------->| | |
2669 // | RESTSubResp | | |
2670 // |<----------------| | |
2671 // | | RouteCreate | |
2672 // | |--------------------------->|
2673 // | | RouteResponse| |
2674 // | |<---------------------------|
2676 // | |------------->| |
2678 // | |<-------------| |
2679 // | RESTNotif1 | | |
2680 // |<----------------| | |
2682 // | REST get_all_e2nodes | |
2683 // |---------------->| | |
2685 // |<----------------| | |
2686 // | REST delete_all_e2node_subscriptions | ranName = RAN_NAME_1
2687 // |---------------->| | |
2689 // |<----------------| | |
2690 // | | SubDelReq | |
2691 // | |------------->| |
2692 // | | SubDelResp | |
2693 // | |<-------------| |
2695 // | | RouteDelete | |
2696 // | |--------------------------->|
2697 // | | RouteResponse| |
2698 // | |<---------------------------|
2700 //-----------------------------------------------------------------------------
2702 func TestDelAllE2nodeSubsViaDebugIf(t *testing.T) {
2704 // Init counter check
2705 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
2706 Counter{cRestSubReqFromXapp, 1},
2707 Counter{cRestSubRespToXapp, 1},
2708 Counter{cSubReqToE2, 1},
2709 Counter{cSubRespFromE2, 1},
2710 Counter{cRestSubNotifToXapp, 1},
2711 Counter{cRestSubDelReqFromXapp, 1},
2712 Counter{cSubDelReqToE2, 1},
2713 Counter{cSubDelRespFromE2, 1},
2714 Counter{cRestSubDelRespToXapp, 1},
2717 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
2718 restSubId := xappConn1.SendRESTSubsReq(t, params)
2719 xapp.Logger.Debug("Send REST Policy subscriber request for subscriberId : %v", restSubId)
2721 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
2722 xappConn1.ExpectRESTNotification(t, restSubId)
2723 e2termConn1.SendSubsResp(t, crereq1, cremsg1)
2724 e2SubsId := xappConn1.WaitRESTNotification(t, restSubId)
2725 xapp.Logger.Debug("REST notification received e2SubsId=%v", e2SubsId)
2727 e2nodesJson := mainCtrl.SendGetRequest(t, "localhost:8080", "/ric/v1/get_all_e2nodes")
2729 var e2nodesList []string
2730 err := json.Unmarshal(e2nodesJson, &e2nodesList)
2732 t.Errorf("Unmarshal error: %s", err)
2734 assert.Equal(t, true, mainCtrl.VerifyStringExistInSlice("RAN_NAME_1", e2nodesList))
2736 e2RestSubsJson := mainCtrl.SendGetRequest(t, "localhost:8080", "/ric/v1/get_e2node_rest_subscriptions/RAN_NAME_1") // RAN_NAME_1 = ranName
2737 var e2RestSubsMap map[string]RESTSubscription
2738 err = json.Unmarshal(e2RestSubsJson, &e2RestSubsMap)
2740 t.Errorf("Unmarshal error: %s", err)
2743 if len(e2RestSubsMap) != 1 {
2744 t.Errorf("Incorrect e2RestSubsMap length %v", len(e2RestSubsMap))
2747 // Simulate deletion through REST test and debug interface
2748 mainCtrl.SendGetRequest(t, "localhost:8080", "/ric/v1/delete_all_e2node_subscriptions/RAN_NAME_1") // RAN_NAME_1 = ranName
2749 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
2750 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
2752 // Wait that subs is cleaned
2753 waitSubsCleanup(t, e2SubsId, 10)
2754 mainCtrl.VerifyCounterValues(t)
2755 mainCtrl.VerifyAllClean(t)
2758 //-----------------------------------------------------------------------------
2759 // TestDelAllxAppSubsViaDebugIf
2762 // +-------+ +---------+ +---------+ +---------+
2763 // | xapp | | submgr | | e2term | | rtmgr |
2764 // +-------+ +---------+ +---------+ +---------+
2766 // | RESTSubReq | | |
2767 // |---------------->| | |
2768 // | RESTSubResp | | |
2769 // |<----------------| | |
2770 // | | RouteCreate | |
2771 // | |--------------------------->|
2772 // | | RouteResponse| |
2773 // | |<---------------------------|
2775 // | |------------->| |
2777 // | |<-------------| |
2778 // | RESTNotif1 | | |
2779 // |<----------------| | |
2781 // | REST get_all_xapps | |
2782 // |---------------->| | |
2784 // |<----------------| | |
2785 // | REST delete_all_xapp_subscriptions | xappServiceName = localhost
2786 // |---------------->| | |
2788 // |<----------------| | |
2789 // | | SubDelReq | |
2790 // | |------------->| |
2791 // | | SubDelResp | |
2792 // | |<-------------| |
2794 // | | RouteDelete | |
2795 // | |--------------------------->|
2796 // | | RouteResponse| |
2797 // | |<---------------------------|
2799 //-----------------------------------------------------------------------------
2801 func TestDelAllxAppSubsViaDebugIf(t *testing.T) {
2803 // Init counter check
2804 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
2805 Counter{cRestSubReqFromXapp, 1},
2806 Counter{cRestSubRespToXapp, 1},
2807 Counter{cSubReqToE2, 1},
2808 Counter{cSubRespFromE2, 1},
2809 Counter{cRestSubNotifToXapp, 1},
2810 Counter{cRestSubDelReqFromXapp, 1},
2811 Counter{cSubDelReqToE2, 1},
2812 Counter{cSubDelRespFromE2, 1},
2813 Counter{cRestSubDelRespToXapp, 1},
2816 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
2817 restSubId := xappConn1.SendRESTSubsReq(t, params)
2818 xapp.Logger.Debug("Send REST Policy subscriber request for subscriberId : %v", restSubId)
2820 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
2821 xappConn1.ExpectRESTNotification(t, restSubId)
2822 e2termConn1.SendSubsResp(t, crereq1, cremsg1)
2823 e2SubsId := xappConn1.WaitRESTNotification(t, restSubId)
2824 xapp.Logger.Debug("REST notification received e2SubsId=%v", e2SubsId)
2826 xappsJson := mainCtrl.SendGetRequest(t, "localhost:8080", "/ric/v1/get_all_xapps")
2828 var xappList []string
2829 err := json.Unmarshal(xappsJson, &xappList)
2831 t.Errorf("Unmarshal error: %s", err)
2833 assert.Equal(t, true, mainCtrl.VerifyStringExistInSlice("localhost", xappList))
2835 // Simulate deletion through REST test and debug interface
2836 mainCtrl.SendGetRequest(t, "localhost:8080", "/ric/v1/delete_all_xapp_subscriptions/localhost") // localhost = xappServiceName
2837 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
2838 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
2840 // Wait that subs is cleaned
2841 waitSubsCleanup(t, e2SubsId, 10)
2842 mainCtrl.VerifyCounterValues(t)
2843 mainCtrl.VerifyAllClean(t)
2846 //-----------------------------------------------------------------------------
2847 // TestDelViaxAppSubsIf
2850 // +-------+ +---------+ +---------+ +---------+
2851 // | xapp | | submgr | | e2term | | rtmgr |
2852 // +-------+ +---------+ +---------+ +---------+
2854 // | RESTSubReq | | |
2855 // |---------------->| | |
2856 // | RESTSubResp | | |
2857 // |<----------------| | |
2858 // | | RouteCreate | |
2859 // | |--------------------------->|
2860 // | | RouteResponse| |
2861 // | |<---------------------------|
2863 // | |------------->| |
2865 // | |<-------------| |
2866 // | RESTNotif1 | | |
2867 // |<----------------| | |
2869 // | REST get_xapp_rest_restsubscriptions |
2870 // |---------------->| | |
2872 // |<----------------| | |
2873 // | RESTSudDel | | |
2874 // |---------------->| | | Via user curl command (port 8088)
2875 // | RESTSudDel | | |
2876 // |<----------------| | |
2877 // | | SubDelReq | |
2878 // | |------------->| |
2879 // | | SubDelResp | |
2880 // | |<-------------| |
2882 // | | RouteDelete | |
2883 // | |--------------------------->|
2884 // | | RouteResponse| |
2885 // | |<---------------------------|
2887 //-----------------------------------------------------------------------------
2889 func TestDelViaxAppSubsIf(t *testing.T) {
2891 // Init counter check
2892 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
2893 Counter{cRestSubReqFromXapp, 1},
2894 Counter{cRestSubRespToXapp, 1},
2895 Counter{cSubReqToE2, 1},
2896 Counter{cSubRespFromE2, 1},
2897 Counter{cRestSubNotifToXapp, 1},
2898 Counter{cRestSubDelReqFromXapp, 1},
2899 Counter{cSubDelReqToE2, 1},
2900 Counter{cSubDelRespFromE2, 1},
2901 Counter{cRestSubDelRespToXapp, 1},
2904 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
2905 restSubId := xappConn1.SendRESTSubsReq(t, params)
2906 xapp.Logger.Debug("Send REST Policy subscriber request for subscriberId : %v", restSubId)
2908 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
2909 xappConn1.ExpectRESTNotification(t, restSubId)
2910 e2termConn1.SendSubsResp(t, crereq1, cremsg1)
2911 e2SubsId := xappConn1.WaitRESTNotification(t, restSubId)
2912 xapp.Logger.Debug("REST notification received e2SubsId=%v", e2SubsId)
2914 restSubsListJson := mainCtrl.SendGetRequest(t, "localhost:8080", "/ric/v1/get_xapp_rest_restsubscriptions/localhost") // localhost = xappServiceName
2916 var restSubsMap map[string]RESTSubscription
2917 err := json.Unmarshal(restSubsListJson, &restSubsMap)
2919 t.Errorf("Unmarshal error: %s", err)
2921 _, ok := restSubsMap[restSubId]
2923 t.Errorf("REST subscription not found. restSubId=%s", restSubId)
2926 var e2Subscriptions []Subscription
2927 e2SubscriptionsJson := mainCtrl.SendGetRequest(t, "localhost:8080", "/ric/v1/get_e2subscriptions/"+restSubId)
2928 err = json.Unmarshal(e2SubscriptionsJson, &e2Subscriptions)
2930 t.Errorf("Unmarshal error: %s", err)
2932 if len(e2Subscriptions) != 1 {
2933 t.Errorf("Incorrect e2Subscriptions length %v", len(e2Subscriptions))
2936 // Simulate deletion through xapp REST test interface
2937 mainCtrl.SendDeleteRequest(t, "localhost:8088", "/ric/v1/subscriptions/"+restSubId)
2938 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
2939 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
2941 // Wait that subs is cleaned
2942 waitSubsCleanup(t, e2SubsId, 10)
2943 mainCtrl.VerifyCounterValues(t)
2944 mainCtrl.VerifyAllClean(t)
2947 //-----------------------------------------------------------------------------
2948 // TestRESTSubReqAndRouteNok
2951 // +-------+ +---------+ +---------+
2952 // | xapp | | submgr | | rtmgr |
2953 // +-------+ +---------+ +---------+
2956 // |---------------->| |
2958 // | RESTSubResp | |
2959 // |<----------------| |
2960 // | | RouteCreate |
2961 // | |------------->|
2962 // | | RouteCreate |
2964 // | |(Bad request) |
2965 // | |<-------------|
2967 // |<----------------| |
2969 // | [SUBS INT DELETE] |
2971 // | RESTSubDelReq | |
2972 // |---------------->| |
2973 // | RESTSubDelResp | |
2974 // |<----------------| |
2976 //-----------------------------------------------------------------------------
2977 func TestRESTSubReqAndRouteNok(t *testing.T) {
2979 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
2980 Counter{cRestSubReqFromXapp, 1},
2981 Counter{cRestSubRespToXapp, 1},
2982 Counter{cRouteCreateFail, 1},
2983 Counter{cRestSubFailNotifToXapp, 1},
2984 Counter{cRestSubDelReqFromXapp, 1},
2985 Counter{cRestSubDelRespToXapp, 1},
2988 const subReqCount int = 1
2990 // Add delay for rtmgt HTTP handling so that HTTP response is received before notify on XAPP side
2991 waiter := rtmgrHttp.AllocNextSleep(50, false)
2992 newSubsId := mainCtrl.get_registry_next_subid(t)
2995 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
2996 restSubId := xappConn1.SendRESTSubsReq(t, params)
2997 xappConn1.ExpectRESTNotificationNok(t, restSubId, "failAll")
2998 waiter.WaitResult(t)
3000 e2SubsId := xappConn1.WaitRESTNotification(t, restSubId)
3001 xapp.Logger.Debug("TEST: REST notification received e2SubsId=%v", e2SubsId)
3004 xappConn1.SendRESTSubsDelReq(t, &restSubId)
3006 // Wait that subs is cleaned
3007 mainCtrl.wait_subs_clean(t, newSubsId, 10)
3008 waitSubsCleanup(t, e2SubsId, 10)
3009 mainCtrl.VerifyCounterValues(t)
3010 mainCtrl.VerifyAllClean(t)
3013 //-----------------------------------------------------------------------------
3014 // TestRESTSubReqAndRouteUpdateNok
3016 // stub stub stub stub
3017 // +-------+ +-------+ +---------+ +---------+ +---------+
3018 // | xapp1 | | xapp2 | | submgr | | rtmgr | | e2term |
3019 // +-------+ +-------+ +---------+ +---------+ +---------+
3021 // | RESTSubReq1 | | |
3022 // |------------------------>| | |
3023 // | RESTSubResp2 | | |
3024 // |<------------------------| | |
3026 // | | | RouteCreate | |
3027 // | | |------------->| |
3028 // | | | CreateResp | |
3029 // | | |<-------------| |
3031 // | | |---------------------------->|
3032 // | | | SubResp | |
3033 // | | |<----------------------------|
3034 // | RESTNotif1 | | |
3035 // |<------------------------| | |
3037 // | | RESTSubReq2 | | |
3038 // | |------------>| | |
3039 // | | RESTSubResp2| | |
3040 // | |<------------| | |
3041 // | | | RouteUpdate | |
3042 // | | |------------->| |
3043 // | | | RouteUpdate | |
3044 // | | | status:400 | |
3045 // | | |(Bad request) | |
3046 // | | |<-------------| |
3047 // | | RESTNotif2(unsuccessful) | |
3048 // | |<------------| | |
3050 // | [SUBS INT DELETE] | |
3052 // | RESTSubDelReq1 | | |
3053 // |------------------------>| | |
3054 // | RESTSubDelResp1 | | |
3055 // |<------------------------| | |
3057 // | | | [SUBS DELETE] |
3059 //-----------------------------------------------------------------------------
3060 func TestRESTSubReqAndRouteUpdateNok(t *testing.T) {
3062 //Init counter check
3063 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
3064 Counter{cRestSubReqFromXapp, 2},
3065 Counter{cRestSubRespToXapp, 2},
3066 Counter{cSubReqToE2, 1},
3067 Counter{cSubRespFromE2, 1},
3068 Counter{cRestSubNotifToXapp, 1},
3069 Counter{cRestSubFailNotifToXapp, 1},
3070 Counter{cRouteCreateUpdateFail, 1},
3071 Counter{cRestSubDelReqFromXapp, 2},
3072 Counter{cSubDelReqToE2, 1},
3073 Counter{cSubDelRespFromE2, 1},
3074 Counter{cRestSubDelRespToXapp, 2},
3077 var params *teststube2ap.RESTSubsReqParams = nil
3079 // Subs create for xapp1
3080 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
3082 queryXappSubscription(t, int64(e2SubsId), "RAN_NAME_1", []string{"localhost:13560"})
3084 // xapp2 ROUTE creation shall fail with 400 from rtmgr -> submgr
3085 waiter := rtmgrHttp.AllocNextEvent(false)
3086 newSubsId := mainCtrl.get_registry_next_subid(t)
3087 params = xappConn2.GetRESTSubsReqReportParams(subReqCount)
3088 params.SetMeid("RAN_NAME_1")
3089 restSubId2 := xappConn2.SendRESTSubsReq(t, params)
3090 xapp.Logger.Debug("Send REST subscriber request for second subscriber : %v", restSubId2)
3091 xappConn2.ExpectRESTNotificationNok(t, restSubId2, "allFail")
3092 waiter.WaitResult(t)
3093 xappConn2.WaitRESTNotification(t, restSubId2)
3095 queryXappSubscription(t, int64(e2SubsId), "RAN_NAME_1", []string{"localhost:13560"})
3097 deleteSubscription(t, xappConn1, e2termConn1, &restSubId)
3098 xappConn2.SendRESTSubsDelReq(t, &restSubId2)
3100 mainCtrl.wait_subs_clean(t, newSubsId, 10)
3101 //Wait that subs is cleaned
3102 waitSubsCleanup(t, e2SubsId, 10)
3104 mainCtrl.VerifyCounterValues(t)
3105 mainCtrl.VerifyAllClean(t)
3108 //-----------------------------------------------------------------------------
3109 // TestRESTSubDelReqAndRouteDeleteNok
3112 // +-------+ +---------+ +---------+ +---------+
3113 // | xapp | | submgr | | rtmgr | | e2term |
3114 // +-------+ +---------+ +---------+ +---------+
3116 // | RESTSubReq | | |
3117 // |---------------->| | |
3119 // | RESTSubResp | | |
3120 // |<----------------| | |
3122 // | |---------------------------->|
3124 // | |<----------------------------|
3125 // | RESTNotif | | |
3126 // |<----------------| | |
3129 // | RESTSubDelReq | | |
3130 // |---------------->| | |
3131 // | RESTSubDelResp | | |
3132 // |<----------------| | |
3133 // | | SubSelReq | |
3134 // | |---------------------------->|
3135 // | | SubSelResp | |
3136 // | |<----------------------------|
3137 // | | RouteDelete | |
3138 // | |------------->| |
3139 // | | Routedelete | |
3140 // | | status:400 | |
3141 // | |(Bad request) | |
3142 // | |<-------------| |
3144 //-----------------------------------------------------------------------------
3146 func TestRESTSubDelReqAndRouteDeleteNok(t *testing.T) {
3148 // Init counter check
3149 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
3150 Counter{cRestSubReqFromXapp, 1},
3151 Counter{cRestSubRespToXapp, 1},
3152 Counter{cSubReqToE2, 1},
3153 Counter{cSubRespFromE2, 1},
3154 Counter{cRestSubNotifToXapp, 1},
3155 Counter{cRestSubDelReqFromXapp, 1},
3156 Counter{cRouteDeleteFail, 1},
3157 Counter{cSubDelReqToE2, 1},
3158 Counter{cSubDelRespFromE2, 1},
3159 Counter{cRestSubDelRespToXapp, 1},
3162 var params *teststube2ap.RESTSubsReqParams = nil
3165 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
3167 queryXappSubscription(t, int64(e2SubsId), "RAN_NAME_1", []string{"localhost:13560"})
3169 waiter := rtmgrHttp.AllocNextEvent(false)
3170 xappConn1.SendRESTSubsDelReq(t, &restSubId)
3171 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
3172 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
3173 waiter.WaitResult(t)
3175 waitSubsCleanup(t, e2SubsId, 10)
3176 mainCtrl.VerifyCounterValues(t)
3177 mainCtrl.VerifyAllClean(t)
3180 //-----------------------------------------------------------------------------
3181 // TestRESTSubMergeDelAndRouteUpdateNok
3183 // stub stub stub stub
3184 // +-------+ +-------+ +---------+ +---------+ +---------+
3185 // | xapp1 | | xapp2 | | submgr | | rtmgr | | e2term |
3186 // +-------+ +-------+ +---------+ +---------+ +---------+
3188 // | RESTSubReq1 | | |
3189 // |------------------------>| | |
3190 // | RESTSubResp2 | | |
3191 // |<------------------------| | |
3193 // | | | RouteCreate | |
3194 // | | |------------->| |
3195 // | | | CreateResp | |
3196 // | | |<-------------| |
3198 // | | |---------------------------->|
3199 // | | | SubResp | |
3200 // | | |<----------------------------|
3201 // | RESTNotif1 | | |
3202 // |<------------------------| | |
3204 // | | RESTSubReq2 | | |
3205 // | |------------>| | |
3206 // | | RESTSubResp2| | |
3207 // | |<------------| | |
3208 // | | | RouteCreate | |
3209 // | | |------------->| |
3210 // | | | CreateResp | |
3211 // | | |<-------------| |
3213 // | | |---------------------------->|
3214 // | | | SubResp | |
3215 // | | |<----------------------------|
3216 // | | RESTNotif2 | | |
3217 // | |<------------| | |
3219 // | [SUBS INT DELETE] | |
3221 // | RESTSubDelReq1 | | |
3222 // |------------------------>| | |
3223 // | RESTSubDelResp1 | | |
3224 // |<------------------------| | |
3225 // | | | SubDelReq | |
3226 // | | |---------------------------->|
3227 // | | | SubDelResp | |
3228 // | | |<----------------------------|
3229 // | | | RouteUpdate | |
3230 // | | |------------->| |
3231 // | | | RouteUpdate | |
3232 // | | | status:400 | |
3233 // | | |(Bad request) | |
3234 // | | |<-------------| |
3236 // | | RESTSubDelReq2 | |
3237 // | |------------>| | |
3238 // | | RESTSubDelResp2 | |
3239 // | |<------------| | |
3240 // | | | SubDelReq | |
3241 // | | |---------------------------->|
3242 // | | | SubdelResp | |
3243 // | | |<----------------------------|
3244 // | | | RouteDelete | |
3245 // | | |------------->| |
3246 // | | | Deleteresp | |
3247 // | | |<-------------| |
3249 //-----------------------------------------------------------------------------
3251 func TestRESTSubMergeDelAndRouteUpdateNok(t *testing.T) {
3253 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
3254 Counter{cRestSubReqFromXapp, 2},
3255 Counter{cMergedSubscriptions, 1},
3256 Counter{cRestSubRespToXapp, 2},
3257 Counter{cSubReqToE2, 1},
3258 Counter{cSubRespFromE2, 1},
3259 Counter{cRestSubNotifToXapp, 2},
3260 Counter{cRestSubDelReqFromXapp, 2},
3261 Counter{cRouteDeleteUpdateFail, 1},
3262 Counter{cSubDelReqToE2, 1},
3263 Counter{cSubDelRespFromE2, 1},
3264 Counter{cRestSubDelRespToXapp, 2},
3265 Counter{cUnmergedSubscriptions, 1},
3268 var params *teststube2ap.RESTSubsReqParams = nil
3271 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
3273 queryXappSubscription(t, int64(e2SubsId), "RAN_NAME_1", []string{"localhost:13560"})
3274 restSubId2, e2SubsId2 := createXapp2MergedSubscription(t, "RAN_NAME_1")
3276 queryXappSubscription(t, int64(e2SubsId), "RAN_NAME_1", []string{"localhost:13560", "localhost:13660"})
3278 //Del1, this shall fail on rtmgr side
3279 waiter := rtmgrHttp.AllocNextEvent(false)
3280 xappConn1.SendRESTSubsDelReq(t, &restSubId)
3281 waiter.WaitResult(t)
3283 queryXappSubscription(t, int64(e2SubsId), "RAN_NAME_1", []string{"localhost:13660"})
3286 deleteXapp2Subscription(t, &restSubId2)
3288 waitSubsCleanup(t, e2SubsId2, 10)
3289 mainCtrl.VerifyCounterValues(t)
3290 mainCtrl.VerifyAllClean(t)
3293 //-----------------------------------------------------------------------------
3294 // TestRESTSubReqRetransmission
3297 // +-------+ +---------+ +---------+
3298 // | xapp | | submgr | | e2term |
3299 // +-------+ +---------+ +---------+
3301 // | RESTSubReq1 | |
3302 // |---------------->| |
3304 // | RESTSubResp | |
3305 // |<----------------| |
3307 // | |------------->|
3309 // | RESTSubReq2 | |
3311 // |---------------->| |
3312 // | RESTSubResp(201)| |
3313 // |<----------------| |
3316 // | |<-------------|
3318 // |<----------------| |
3320 // | [SUBS DELETE] |
3323 //-----------------------------------------------------------------------------
3325 func TestRESTSubReqRetransmission(t *testing.T) {
3327 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
3328 Counter{cRestSubReqFromXapp, 2},
3329 Counter{cRestSubRespToXapp, 2},
3330 Counter{cSubReqToE2, 1},
3331 Counter{cSubRespFromE2, 1},
3332 Counter{cRestSubNotifToXapp, 1},
3333 Counter{cRestSubDelReqFromXapp, 1},
3334 Counter{cSubDelReqToE2, 1},
3335 Counter{cSubDelRespFromE2, 1},
3336 Counter{cRestSubDelRespToXapp, 1},
3338 // Retry/duplicate will get the same way as the first request.
3339 // Contianed duplicate messages from same xapp will not be merged. Here we use xappConn2 to simulate sending
3340 // second request from same xapp as doing it from xappConn1 would not work as notification would not be received
3343 const subReqCount int = 1
3345 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
3346 restSubId := xappConn1.SendRESTSubsReq(t, params)
3348 xappConn1.SendRESTSubsReq(t, params)
3349 <-time.After(time.Second * 1)
3351 xappConn1.WaitListedRestNotifications(t, []string{restSubId})
3353 // Depending one goroutine scheduling order, we cannot say for sure which xapp reaches e2term first. Thus
3354 // the order is not significant here.
3355 crereq, cremsg := e2termConn1.RecvSubsReq(t)
3356 e2termConn1.SendSubsResp(t, crereq, cremsg)
3358 e2SubsId := <-xappConn1.ListedRESTNotifications
3360 xapp.Logger.Debug("TEST: XAPP notification received e2SubsId=%v", e2SubsId)
3363 xappConn1.SendRESTSubsDelReq(t, &restSubId)
3364 delreq1, delmsg1 := e2termConn1.RecvSubsDelReq(t)
3365 e2termConn1.SendSubsDelResp(t, delreq1, delmsg1)
3367 mainCtrl.wait_multi_subs_clean(t, []uint32{e2SubsId.E2SubsId}, 10)
3369 mainCtrl.VerifyCounterValues(t)
3370 mainCtrl.VerifyAllClean(t)
3373 //-----------------------------------------------------------------------------
3375 // +-------+ +---------+ +---------+ +---------+
3376 // | xapp | | submgr | | e2term | | rtmgr |
3377 // +-------+ +---------+ +---------+ +---------+
3379 // | RESTSubReq | | |
3380 // |---------------->| | |
3381 // | RESTSubResp | | |
3382 // |<----------------| | |
3383 // | | RouteCreate | |
3384 // | |--------------------------->|
3385 // | | RouteResponse| |
3386 // | |<---------------------------| // The order of these events may vary
3388 // | |------------->| | // The order of these events may vary
3390 // | |<-------------| |
3391 // | RESTNotif1 | | |
3392 // |<----------------| | |
3393 // | RESTSubReq | | |
3394 // | [RETRANS1] | | |
3395 // |---------------->| | |
3396 // | RESTNotif1 | | |
3397 // |<----------------| | |
3398 // | RESTSubReq | | |
3399 // | [RETRANS2] | | |
3400 // |---------------->| | |
3401 // | RESTNotif1 | | |
3402 // |<----------------| | |
3403 // | RESTSubDelReq | | |
3404 // |---------------->| | |
3405 // | | SubDelReq | |
3406 // | |------------->| |
3407 // | RESTSubDelResp| | |
3408 // |<----------------| | |
3409 // | | SubDelResp | |
3410 // | |<-------------| |
3413 //-----------------------------------------------------------------------------
3415 func TestRESTSubReqRetransmissionV2(t *testing.T) {
3417 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
3418 Counter{cRestSubReqFromXapp, 3},
3419 Counter{cDuplicateE2SubReq, 2},
3420 Counter{cRestSubRespToXapp, 3},
3421 Counter{cSubReqToE2, 1},
3422 Counter{cSubRespFromE2, 1},
3423 Counter{cRestSubNotifToXapp, 3},
3424 Counter{cRestSubDelReqFromXapp, 1},
3425 Counter{cSubDelReqToE2, 1},
3426 Counter{cSubDelRespFromE2, 1},
3427 Counter{cRestSubDelRespToXapp, 1},
3430 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
3432 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
3434 queryXappSubscription(t, int64(e2SubsId), "RAN_NAME_1", []string{"localhost:13560"})
3436 mainCtrl.WaitOngoingRequestMapEmpty()
3439 restSubId_resend := xappConn1.SendRESTSubsReq(t, params)
3441 assert.Equal(t, restSubId_resend, restSubId)
3443 mainCtrl.WaitOngoingRequestMapEmpty()
3446 restSubId_resend2 := xappConn1.SendRESTSubsReq(t, params)
3448 assert.Equal(t, restSubId_resend2, restSubId)
3450 mainCtrl.WaitOngoingRequestMapEmpty()
3452 deleteSubscription(t, xappConn1, e2termConn1, &restSubId)
3454 waitSubsCleanup(t, e2SubsId, 10)
3455 mainCtrl.VerifyCounterValues(t)
3456 mainCtrl.VerifyAllClean(t)
3459 //-----------------------------------------------------------------------------
3461 // +-------+ +---------+ +---------+ +---------+
3462 // | xapp | | submgr | | e2term | | rtmgr |
3463 // +-------+ +---------+ +---------+ +---------+
3465 // | RESTSubReq | | |
3466 // |---------------->| | |
3467 // | RESTSubResp | | |
3468 // |<----------------| | |
3469 // | | RouteCreate | |
3470 // | |--------------------------->|
3471 // | | RouteResponse| |
3472 // | |<---------------------------| // The order of these events may vary
3474 // | |------------->| | // The order of these events may vary
3476 // | |<-------------| |
3477 // | RESTNotif1 | | |
3478 // |<----------------| | |
3479 // | RESTSubReq | | |
3480 // | [RETRANS, with RESTsubsId] | |
3481 // |---------------->| | |
3482 // | RESTNotif1 | | |
3483 // |<----------------| | |
3484 // | RESTSubReq | | |
3485 // | [RETRANS, without RESTsubsId] | |
3486 // |---------------->| | |
3487 // | RESTNotif1 | | |
3488 // |<----------------| | |
3489 // | RESTSubDelReq | | |
3490 // |---------------->| | |
3491 // | | SubDelReq | |
3492 // | |------------->| |
3493 // | RESTSubDelResp| | |
3494 // |<----------------| | |
3495 // | | SubDelResp | |
3496 // | |<-------------| |
3499 //-----------------------------------------------------------------------------
3500 func TestRESTSubReqRetransmissionV3(t *testing.T) {
3502 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
3503 Counter{cRestSubReqFromXapp, 3},
3504 Counter{cDuplicateE2SubReq, 2},
3505 Counter{cRestSubRespToXapp, 3},
3506 Counter{cSubReqToE2, 1},
3507 Counter{cSubRespFromE2, 1},
3508 Counter{cRestSubNotifToXapp, 3},
3509 Counter{cRestSubDelReqFromXapp, 1},
3510 Counter{cSubDelReqToE2, 1},
3511 Counter{cSubDelRespFromE2, 1},
3512 Counter{cRestSubDelRespToXapp, 1},
3515 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
3517 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
3519 queryXappSubscription(t, int64(e2SubsId), "RAN_NAME_1", []string{"localhost:13560"})
3521 mainCtrl.WaitOngoingRequestMapEmpty()
3523 //1.st resend with subscription ID
3524 params.SetSubscriptionID(&restSubId)
3525 restSubId_resend := xappConn1.SendRESTSubsReq(t, params)
3527 assert.Equal(t, restSubId_resend, restSubId)
3529 mainCtrl.WaitOngoingRequestMapEmpty()
3531 //2.nd resend without subscription ID (faking app restart)
3532 params = xappConn1.GetRESTSubsReqReportParams(subReqCount)
3533 restSubId_resend2 := xappConn1.SendRESTSubsReq(t, params)
3535 assert.Equal(t, restSubId_resend2, restSubId)
3537 mainCtrl.WaitOngoingRequestMapEmpty()
3539 deleteSubscription(t, xappConn1, e2termConn1, &restSubId)
3541 waitSubsCleanup(t, e2SubsId, 10)
3542 mainCtrl.VerifyCounterValues(t)
3543 mainCtrl.VerifyAllClean(t)
3546 //-----------------------------------------------------------------------------
3548 // +-------+ +---------+ +---------+ +---------+
3549 // | xapp | | submgr | | e2term | | rtmgr |
3550 // +-------+ +---------+ +---------+ +---------+
3552 // | RESTSubReq | | |
3553 // |---------------->| | |
3554 // | RESTSubResp | | |
3555 // |<----------------| | |
3556 // | | RouteCreate | |
3557 // | |--------------------------->|
3558 // | | RouteResponse| |
3559 // | |<---------------------------|
3561 // | |------------->| |
3563 // | |<-------------| |
3564 // | RESTNotif1 | | |
3565 // |<----------------| | |
3566 // | RESTSubReq | | |
3567 // | [with RestSUbsId + one additional e2 subDetail]
3568 // |---------------->| | |
3569 // | RESTNotif1 | | |
3570 // | [for initial e2 subDetail] | |
3571 // |<----------------| | |
3572 // | | RouteCreate | |
3573 // | |--------------------------->|
3574 // | | RouteResponse| |
3575 // | |<---------------------------|
3577 // | |------------->| |
3579 // | |<-------------| |
3580 // | RESTNotif1 | | |
3581 // |<----------------| | |
3582 // | RESTSubReq | | |
3583 // | [with RESTsubsId initial request] |
3584 // |---------------->| | |
3585 // | RESTNotif1 | | |
3586 // |<----------------| | |
3587 // | RESTSubDelReq | | |
3588 // |---------------->| | |
3589 // | RESTSubDelResp| | |
3590 // |<----------------| | |
3591 // | | SubDelReq | |
3592 // | |------------->| |
3593 // | | SubDelResp | |
3594 // | |<-------------| |
3595 // | | SubDelReq | |
3596 // | |------------->| |
3597 // | | SubDelResp | |
3598 // | |<-------------| |
3601 //-----------------------------------------------------------------------------
3603 func TestRESTSubReqRetransmissionV4(t *testing.T) {
3605 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
3606 Counter{cRestSubReqFromXapp, 3},
3607 Counter{cDuplicateE2SubReq, 2},
3608 Counter{cRestSubRespToXapp, 3},
3609 Counter{cSubReqToE2, 2},
3610 Counter{cSubRespFromE2, 2},
3611 Counter{cRestSubNotifToXapp, 4},
3612 Counter{cRestSubDelReqFromXapp, 1},
3613 Counter{cSubDelReqToE2, 2},
3614 Counter{cSubDelRespFromE2, 2},
3615 Counter{cRestSubDelRespToXapp, 1},
3618 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
3620 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
3622 mainCtrl.WaitOngoingRequestMapEmpty()
3624 // Send modified requst, this time with e2 subscriptions.
3625 params2 := xappConn1.GetRESTSubsReqReportParams(subReqCount + 1)
3626 params2.SetSubscriptionID(&restSubId)
3628 xapp.Subscription.SetResponseCB(xappConn1.SubscriptionRespHandler)
3629 xappConn1.ExpectAnyNotification(t)
3630 // Resend the original request with an additional e2 subscription (detail), this time with restsubsid
3631 restSubId_resend := xappConn1.SendRESTSubsReq(t, params2)
3632 e2SubsId1 := xappConn1.WaitAnyRESTNotification(t)
3633 assert.Equal(t, e2SubsId, e2SubsId1)
3635 crereq2, cremsg2 := e2termConn1.RecvSubsReq(t)
3637 xappConn1.DecrementRequestCount()
3638 xappConn1.ExpectRESTNotification(t, restSubId_resend)
3639 e2termConn1.SendSubsResp(t, crereq2, cremsg2)
3640 e2SubsId2 := xappConn1.WaitRESTNotification(t, restSubId_resend)
3641 assert.NotEqual(t, e2SubsId2, 0)
3643 mainCtrl.WaitOngoingRequestMapEmpty()
3645 xapp.Subscription.SetResponseCB(xappConn1.SubscriptionRespHandler)
3646 params = xappConn1.GetRESTSubsReqReportParams(subReqCount)
3647 params.SetSubscriptionID(&restSubId)
3648 xappConn1.ExpectAnyNotification(t)
3649 // Resend the original request again with only one e2 subscription (detail), this time with restsubsid
3650 restSubId_resend2 := xappConn1.SendRESTSubsReq(t, params)
3651 assert.Equal(t, restSubId_resend, restSubId_resend2)
3653 e2SubsId1 = xappConn1.WaitAnyRESTNotification(t)
3654 assert.Equal(t, e2SubsId, e2SubsId1)
3656 mainCtrl.WaitOngoingRequestMapEmpty()
3658 // Delete both e2 subscriptions
3659 xappConn1.SendRESTSubsDelReq(t, &restSubId)
3660 e2SubsIds := []uint32{e2SubsId, e2SubsId2}
3661 sendAndReceiveMultipleE2DelReqs(t, e2SubsIds, e2termConn1)
3663 waitSubsCleanup(t, e2SubsId, 10)
3664 mainCtrl.VerifyCounterValues(t)
3665 mainCtrl.VerifyAllClean(t)
3668 //-----------------------------------------------------------------------------
3670 // +-------+ +---------+ +---------+ +---------+
3671 // | xapp | | submgr | | e2term | | rtmgr |
3672 // +-------+ +---------+ +---------+ +---------+
3674 // | RESTSubReq | | |
3675 // |---------------->| | |
3676 // | RESTSubResp | | |
3677 // |<----------------| | |
3678 // | | RouteCreate | |
3679 // | |--------------------------->|
3680 // | | RouteResponse| |
3681 // | |<---------------------------|
3683 // | |------------->| |
3685 // | |<-------------| |
3686 // | RESTNotif1 | | |
3687 // |<----------------| | |
3688 // | RESTSubReq | | |
3689 // | [with RestSUbsId + one additional e2 subDetail]
3690 // |---------------->| | |
3691 // | RESTNotif1 | | |
3692 // | [for initial e2 subDetail] | |
3693 // |<----------------| | |
3694 // | | RouteCreate | |
3695 // | |--------------------------->|
3696 // | | RouteResponse| |
3697 // | |<---------------------------|
3699 // | |------------->| |
3701 // | |<-------------| |
3702 // | RESTNotif1 | | |
3703 // |<----------------| | |
3704 // | RESTSubReq | | |
3705 // | [without RESTsubsId initial request] |
3706 // |---------------->| | |
3707 // | RESTNotif1 | | |
3708 // |<----------------| | |
3709 // | RESTSubDelReq | | |
3710 // |---------------->| | |
3711 // | RESTSubDelResp| | |
3712 // |<----------------| | |
3713 // | | SubDelReq | |
3714 // | |------------->| |
3715 // | | SubDelResp | |
3716 // | |<-------------| |
3717 // | | SubDelReq | |
3718 // | |------------->| |
3719 // | | SubDelResp | |
3720 // | |<-------------| |
3723 //-----------------------------------------------------------------------------
3725 func TestRESTSubReqRetransmissionV5(t *testing.T) {
3727 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
3728 Counter{cRestSubReqFromXapp, 3},
3729 Counter{cDuplicateE2SubReq, 2},
3730 Counter{cRestSubRespToXapp, 3},
3731 Counter{cSubReqToE2, 2},
3732 Counter{cSubRespFromE2, 2},
3733 Counter{cRestSubNotifToXapp, 4},
3734 Counter{cRestSubDelReqFromXapp, 1},
3735 Counter{cSubDelReqToE2, 2},
3736 Counter{cSubDelRespFromE2, 2},
3737 Counter{cRestSubDelRespToXapp, 1},
3740 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
3742 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
3744 mainCtrl.WaitOngoingRequestMapEmpty()
3746 // Send modified request, this time with e2 subscriptions.
3747 params2 := xappConn1.GetRESTSubsReqReportParams(subReqCount + 1)
3748 params2.SetSubscriptionID(&restSubId)
3750 xapp.Subscription.SetResponseCB(xappConn1.SubscriptionRespHandler)
3751 xappConn1.ExpectAnyNotification(t)
3752 // Resend the original request with an additional e2 subscription (detail), this time with restsubsid
3753 restSubId_resend := xappConn1.SendRESTSubsReq(t, params2)
3755 e2SubsId1 := xappConn1.WaitAnyRESTNotification(t)
3756 assert.Equal(t, e2SubsId, e2SubsId1)
3757 // The first E2 subscription returns immediately, manually decrement expected request count for the remaining request handling
3758 xappConn1.DecrementRequestCount()
3760 crereq2, cremsg2 := e2termConn1.RecvSubsReq(t)
3762 xappConn1.ExpectRESTNotification(t, restSubId_resend)
3763 e2termConn1.SendSubsResp(t, crereq2, cremsg2)
3764 e2SubsId2 := xappConn1.WaitRESTNotification(t, restSubId_resend)
3765 assert.NotEqual(t, e2SubsId2, 0)
3767 mainCtrl.WaitOngoingRequestMapEmpty()
3769 xapp.Subscription.SetResponseCB(xappConn1.SubscriptionRespHandler)
3770 params = xappConn1.GetRESTSubsReqReportParams(subReqCount)
3771 xappConn1.ExpectAnyNotification(t)
3772 // Resend the original request again with only one e2 subscription (detail), WITHOUT restsubsid
3773 // md5sum shall find the original request
3774 restSubId_resend2 := xappConn1.SendRESTSubsReq(t, params)
3775 assert.Equal(t, restSubId_resend, restSubId_resend2)
3777 e2SubsId1 = xappConn1.WaitAnyRESTNotification(t)
3778 assert.Equal(t, e2SubsId, e2SubsId1)
3780 mainCtrl.WaitOngoingRequestMapEmpty()
3782 // Delete both e2 subscriptions
3783 xappConn1.SendRESTSubsDelReq(t, &restSubId)
3784 e2SubsIds := []uint32{e2SubsId, e2SubsId2}
3785 sendAndReceiveMultipleE2DelReqs(t, e2SubsIds, e2termConn1)
3787 waitSubsCleanup(t, e2SubsId, 10)
3788 mainCtrl.VerifyCounterValues(t)
3789 mainCtrl.VerifyAllClean(t)
3792 //-----------------------------------------------------------------------------
3794 // +-------+ +---------+ +---------+ +---------+
3795 // | xapp | | submgr | | e2term | | rtmgr |
3796 // +-------+ +---------+ +---------+ +---------+
3798 // | RESTSubReq | | |
3799 // |---------------->| | |
3800 // | RESTSubResp | | |
3801 // |<----------------| | |
3802 // | | RouteCreate | |
3803 // | |--------------------------->|
3804 // | | RouteResponse| |
3805 // | |<---------------------------|
3807 // | |------------->| |
3809 // | |<-------------| |
3810 // | RESTNotif1 | | |
3811 // |<----------------| | |
3812 // | RESTSubReq | | |
3813 // | [with RestSUbsId + one additional e2 subDetail]
3814 // |---------------->| | |
3815 // | RESTNotif1 | | |
3816 // | [for initial e2 subDetail] | |
3817 // |<----------------| | |
3818 // | | RouteCreate | |
3819 // | |--------------------------->|
3820 // | | RouteResponse| |
3821 // | |<---------------------------|
3823 // | |------------->| |
3825 // | |<-------------| |
3826 // | RESTNotif1 | | |
3827 // |<----------------| | |
3828 // | RESTSubDelReq | | |
3829 // |---------------->| | |
3830 // | RESTSubDelResp| | |
3831 // |<----------------| | |
3832 // | | SubDelReq | |
3833 // | |------------->| |
3834 // | | SubDelResp | |
3835 // | |<-------------| |
3836 // | | SubDelReq | |
3837 // | |------------->| |
3838 // | | SubDelResp | |
3839 // | |<-------------| |
3840 // | RESTSubReq | | |
3841 // | [with RESTsubsId initial request] |
3842 // |---------------->| | |
3843 // | RESTSubResp | | |
3844 // |<----------------| | |
3845 // | | RouteCreate | |
3846 // | |--------------------------->|
3847 // | | RouteResponse| |
3848 // | |<---------------------------|
3850 // | |------------->| |
3852 // | |<-------------| |
3853 // | RESTNotif1 | | |
3854 // |<----------------| | |
3857 //-----------------------------------------------------------------------------
3858 func TestRESTSubReqRetransmissionV6(t *testing.T) {
3860 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
3861 Counter{cRestSubReqFromXapp, 3},
3862 Counter{cDuplicateE2SubReq, 1},
3863 Counter{cRestSubRespToXapp, 3},
3864 Counter{cSubReqToE2, 3},
3865 Counter{cSubRespFromE2, 3},
3866 Counter{cRestSubNotifToXapp, 4},
3867 Counter{cRestSubDelReqFromXapp, 2},
3868 Counter{cSubDelReqToE2, 3},
3869 Counter{cSubDelRespFromE2, 3},
3870 Counter{cRestSubDelRespToXapp, 2},
3873 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
3875 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
3877 mainCtrl.WaitOngoingRequestMapEmpty()
3879 // Send modified requst, this time with e2 subscriptions.
3880 params2 := xappConn1.GetRESTSubsReqReportParams(subReqCount + 1)
3881 params2.SetSubscriptionID(&restSubId)
3883 xapp.Subscription.SetResponseCB(xappConn1.SubscriptionRespHandler)
3884 xappConn1.ExpectAnyNotification(t)
3885 // Resend the original request with an additional e2 subscription (detail), this time with restsubsid
3886 restSubId_resend := xappConn1.SendRESTSubsReq(t, params2)
3888 e2SubsId1 := xappConn1.WaitAnyRESTNotification(t)
3889 assert.Equal(t, e2SubsId, e2SubsId1)
3891 crereq2, cremsg2 := e2termConn1.RecvSubsReq(t)
3893 xappConn1.ExpectRESTNotification(t, restSubId_resend)
3894 e2termConn1.SendSubsResp(t, crereq2, cremsg2)
3895 e2SubsId2 := xappConn1.WaitRESTNotification(t, restSubId_resend)
3896 assert.NotEqual(t, e2SubsId2, 0)
3898 mainCtrl.WaitOngoingRequestMapEmpty()
3900 // Delete both e2 subscriptions
3901 xappConn1.SendRESTSubsDelReq(t, &restSubId)
3902 e2SubsIds := []uint32{e2SubsId, e2SubsId2}
3903 sendAndReceiveMultipleE2DelReqs(t, e2SubsIds, e2termConn1)
3905 waitSubsCleanup(t, e2SubsId, 10)
3907 // Resend the original request, we shall find it's previous md5sum/restsubs
3908 // but the restsubscription has been already removed. This shall trigger a
3910 restSubId, e2SubsId = createSubscription(t, xappConn1, e2termConn1, params)
3912 mainCtrl.WaitOngoingRequestMapEmpty()
3914 deleteSubscription(t, xappConn1, e2termConn1, &restSubId)
3916 waitSubsCleanup(t, e2SubsId, 10)
3917 mainCtrl.VerifyCounterValues(t)
3918 mainCtrl.VerifyAllClean(t)
3921 //-----------------------------------------------------------------------------
3922 // TestRESTSubDelReqRetransmission
3925 // +-------+ +---------+ +---------+
3926 // | xapp | | submgr | | e2term |
3927 // +-------+ +---------+ +---------+
3930 // |---------------->| |
3932 // | RESTSubResp | |
3933 // |<----------------| |
3935 // | |------------->|
3937 // | |<-------------|
3939 // |<----------------| |
3941 // | RESTSubDelReq | |
3942 // |---------------->| |
3943 // | RESTSubDelResp | |
3944 // |<----------------| |
3946 // | |------------->|
3947 // | RESTSubDelReq | |
3948 // |---------------->| |
3949 // | RESTSubDelResp | |
3950 // |<----------------| |
3952 // | |<-------------|
3955 //-----------------------------------------------------------------------------
3957 func TestRESTSubDelReqRetransmission(t *testing.T) {
3959 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
3960 Counter{cRestSubReqFromXapp, 1},
3961 Counter{cRestSubRespToXapp, 1},
3962 Counter{cSubReqToE2, 1},
3963 Counter{cSubRespFromE2, 1},
3964 Counter{cRestSubNotifToXapp, 1},
3965 Counter{cRestSubDelReqFromXapp, 2},
3966 Counter{cSubDelReqToE2, 1},
3967 Counter{cSubDelRespFromE2, 1},
3968 Counter{cRestSubDelRespToXapp, 2},
3971 var params *teststube2ap.RESTSubsReqParams = nil
3974 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
3976 queryXappSubscription(t, int64(e2SubsId), "RAN_NAME_1", []string{"localhost:13560"})
3979 xappConn1.SendRESTSubsDelReq(t, &restSubId)
3980 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
3983 seqBef := mainCtrl.get_msgcounter(t)
3984 xappConn1.SendRESTSubsDelReq(t, &restSubId)
3985 mainCtrl.wait_msgcounter_change(t, seqBef, 10)
3988 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
3990 waitSubsCleanup(t, e2SubsId, 10)
3991 mainCtrl.VerifyCounterValues(t)
3992 mainCtrl.VerifyAllClean(t)
3995 //-----------------------------------------------------------------------------
3996 // TestRESTSubReqDelReq
3999 // +-------+ +---------+ +---------+
4000 // | xapp | | submgr | | e2term |
4001 // +-------+ +---------+ +---------+
4004 // |---------------->| |
4006 // | RESTSubResp | |
4007 // |<----------------| |
4009 // | |------------->|
4010 // | RESTSubDelReq | |
4011 // |---------------->| |
4012 // | RESTSubDelResp | |
4014 // |<----------------| |
4016 // | |<-------------|
4018 // |<----------------| |
4020 // | [SUBS DELETE] |
4023 //-----------------------------------------------------------------------------
4024 func TestRESTSubReqDelReq(t *testing.T) {
4026 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
4027 Counter{cRestSubReqFromXapp, 1},
4028 Counter{cRestSubRespToXapp, 1},
4029 Counter{cSubReqToE2, 1},
4030 Counter{cSubRespFromE2, 1},
4031 Counter{cRestSubNotifToXapp, 1},
4032 Counter{cRestSubDelReqFromXapp, 2},
4033 Counter{cRestSubDelFailToXapp, 1},
4034 Counter{cSubDelReqToE2, 1},
4035 Counter{cSubDelRespFromE2, 1},
4036 Counter{cRestSubDelRespToXapp, 1},
4039 const subReqCount int = 1
4042 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
4043 restSubId := xappConn1.SendRESTSubsReq(t, params)
4045 // Del. This will fail as processing of the subscription
4046 // is still ongoing in submgr. Deletion is not allowed before
4047 // subscription creation has been completed.
4048 xappConn1.SendRESTSubsDelReq(t, &restSubId)
4049 crereq, cremsg := e2termConn1.RecvSubsReq(t)
4050 xappConn1.ExpectRESTNotification(t, restSubId)
4051 e2termConn1.SendSubsResp(t, crereq, cremsg)
4052 e2SubsId := xappConn1.WaitRESTNotification(t, restSubId)
4055 xappConn1.SendRESTSubsDelReq(t, &restSubId)
4057 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
4058 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
4060 // Wait that subs is cleaned
4061 waitSubsCleanup(t, e2SubsId, 10)
4062 mainCtrl.VerifyCounterValues(t)
4063 mainCtrl.VerifyAllClean(t)
4066 //-----------------------------------------------------------------------------
4067 // TestRESTSubReqAndSubDelOkTwoParallel
4070 // +-------+ +-------+ +---------+ +---------+
4071 // | xapp2 | | xapp1 | | submgr | | e2term |
4072 // +-------+ +-------+ +---------+ +---------+
4074 // | | RESTSubReq1 | |
4075 // | |------------->| |
4076 // | | RESTSubResp1 | |
4077 // | |<-------------| |
4080 // | | |------------->|
4082 // | RESTSubReq2 | |
4083 // |------------------------>| |
4084 // | RESTSubResp2 | |
4085 // |<------------------------| |
4088 // | | |------------->|
4091 // | | |<-------------|
4092 // | | RESTNotif1 | |
4093 // | |<-------------| |
4096 // | | |<-------------|
4098 // |<------------------------| |
4100 // | | [SUBS 1 DELETE] |
4102 // | | [SUBS 2 DELETE] |
4105 //-----------------------------------------------------------------------------
4107 func TestRESTSubReqAndSubDelOkTwoParallel(t *testing.T) {
4109 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
4110 Counter{cRestSubReqFromXapp, 2},
4111 Counter{cRestSubRespToXapp, 2},
4112 Counter{cSubReqToE2, 2},
4113 Counter{cSubRespFromE2, 2},
4114 Counter{cRestSubNotifToXapp, 2},
4115 Counter{cRestSubDelReqFromXapp, 2},
4116 Counter{cSubDelReqToE2, 2},
4117 Counter{cSubDelRespFromE2, 2},
4118 Counter{cRestSubDelRespToXapp, 2},
4122 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
4123 restSubId1 := xappConn1.SendRESTSubsReq(t, params)
4124 xapp.Logger.Debug("Send 1st REST subscriber request for subscriberId : %v", restSubId1)
4127 params = xappConn2.GetRESTSubsReqReportParams(subReqCount)
4128 restSubId2 := xappConn2.SendRESTSubsReq(t, params)
4129 xapp.Logger.Debug("Send 2nd REST subscriber request for subscriberId : %v", restSubId2)
4131 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
4132 crereq2, cremsg2 := e2termConn1.RecvSubsReq(t)
4134 //XappConn1 receives both of the responses
4135 xappConn1.WaitListedRestNotifications(t, []string{restSubId1, restSubId2})
4138 e2termConn1.SendSubsResp(t, crereq1, cremsg1)
4140 e2termConn1.SendSubsResp(t, crereq2, cremsg2)
4142 e2SubsIdA := <-xappConn1.ListedRESTNotifications
4143 xapp.Logger.Debug("TEST: 1.st XAPP notification received e2SubsId=%v", e2SubsIdA)
4144 e2SubsIdB := <-xappConn1.ListedRESTNotifications
4145 xapp.Logger.Debug("TEST: 2.nd XAPP notification received e2SubsId=%v", e2SubsIdB)
4148 deleteSubscription(t, xappConn1, e2termConn1, &restSubId1)
4150 deleteSubscription(t, xappConn2, e2termConn1, &restSubId2)
4152 //Wait that subs is cleaned
4153 mainCtrl.wait_subs_clean(t, e2SubsIdA.E2SubsId, 10)
4154 waitSubsCleanup(t, e2SubsIdB.E2SubsId, 10)
4156 mainCtrl.VerifyCounterValues(t)
4157 mainCtrl.VerifyAllClean(t)
4160 //-----------------------------------------------------------------------------
4161 // TestRESTSameSubsDiffRan
4162 // Same subscription to different RANs
4165 // +-------+ +---------+ +---------+
4166 // | xapp | | submgr | | e2term |
4167 // +-------+ +---------+ +---------+
4169 // | RESTSubReq(r1) | |
4170 // |---------------->| |
4171 // | RESTSubResp(r1) | |
4172 // |<----------------| |
4175 // | |------------->|
4177 // | | SubResp(r1) |
4178 // | |<-------------|
4180 // | RESTNotif(r1) | |
4181 // |<----------------| |
4183 // | RESTSubReq(r2) | |
4184 // |---------------->| |
4186 // | RESTSubResp(r2) | |
4187 // |<----------------| |
4189 // | |------------->|
4191 // | | SubResp(r2) |
4192 // | |<-------------|
4194 // | RESTNotif(r2) | |
4195 // |<----------------| |
4197 // | [SUBS r1 DELETE] |
4199 // | [SUBS r2 DELETE] |
4202 //-----------------------------------------------------------------------------
4204 func TestRESTSameSubsDiffRan(t *testing.T) {
4206 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
4207 Counter{cRestSubReqFromXapp, 2},
4208 Counter{cRestSubRespToXapp, 2},
4209 Counter{cSubReqToE2, 2},
4210 Counter{cSubRespFromE2, 2},
4211 Counter{cRestSubNotifToXapp, 2},
4212 Counter{cRestSubDelReqFromXapp, 2},
4213 Counter{cSubDelReqToE2, 2},
4214 Counter{cSubDelRespFromE2, 2},
4215 Counter{cRestSubDelRespToXapp, 2},
4218 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
4219 restSubId1, e2SubsId1 := createSubscription(t, xappConn1, e2termConn1, params)
4220 xapp.Logger.Debug("Send 1st REST subscriber request for subscriberId : %v", restSubId1)
4222 params = xappConn1.GetRESTSubsReqReportParams(subReqCount)
4223 params.SetMeid("RAN_NAME_2")
4224 restSubId2, e2SubsId2 := createSubscription(t, xappConn1, e2termConn1, params)
4225 xapp.Logger.Debug("Send 2nd REST subscriber request for subscriberId : %v", restSubId2)
4228 deleteSubscription(t, xappConn1, e2termConn1, &restSubId1)
4230 deleteSubscription(t, xappConn1, e2termConn1, &restSubId2)
4232 //Wait that subs is cleaned
4233 mainCtrl.wait_subs_clean(t, e2SubsId1, 10)
4234 waitSubsCleanup(t, e2SubsId2, 10)
4236 mainCtrl.VerifyCounterValues(t)
4237 mainCtrl.VerifyAllClean(t)
4240 //-----------------------------------------------------------------------------
4241 // TestRESTSubReqRetryInSubmgr
4244 // +-------+ +---------+ +---------+
4245 // | xapp | | submgr | | e2term |
4246 // +-------+ +---------+ +---------+
4249 // |---------------->| |
4250 // | RESTSubResp | |
4251 // |<----------------| |
4253 // | |------------->|
4257 // | |------------->|
4259 // | |<-------------|
4262 // |<----------------| |
4264 // | [SUBS DELETE] |
4267 //-----------------------------------------------------------------------------
4269 func TestRESTSubReqRetryInSubmgr(t *testing.T) {
4271 // Init counter check
4272 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
4273 Counter{cRestSubReqFromXapp, 1},
4274 Counter{cRestSubRespToXapp, 1},
4275 Counter{cSubReqToE2, 1},
4276 Counter{cSubReqTimerExpiry, 1},
4277 Counter{cSubReReqToE2, 1},
4278 Counter{cSubRespFromE2, 1},
4279 Counter{cRestSubNotifToXapp, 1},
4280 Counter{cRestSubDelReqFromXapp, 1},
4281 Counter{cSubDelReqToE2, 1},
4282 Counter{cSubDelRespFromE2, 1},
4283 Counter{cRestSubDelRespToXapp, 1},
4286 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
4287 restSubId := xappConn1.SendRESTSubsReq(t, params)
4289 xapp.Logger.Debug("Send REST subscriber request for subscriber : %v", restSubId)
4291 // Catch the first message and ignore it
4292 crereq, cremsg := e2termConn1.RecvSubsReq(t)
4293 xapp.Logger.Debug("Ignore REST subscriber request for subscriber : %v", restSubId)
4295 // The second request is being handled normally
4296 crereq, cremsg = e2termConn1.RecvSubsReq(t)
4297 xappConn1.ExpectRESTNotification(t, restSubId)
4298 e2termConn1.SendSubsResp(t, crereq, cremsg)
4299 e2SubsId := xappConn1.WaitRESTNotification(t, restSubId)
4301 queryXappSubscription(t, int64(e2SubsId), "RAN_NAME_1", []string{"localhost:13560"})
4304 deleteSubscription(t, xappConn1, e2termConn1, &restSubId)
4306 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
4307 //Wait that subs is cleaned
4308 waitSubsCleanup(t, e2SubsId, 10)
4310 mainCtrl.VerifyCounterValues(t)
4311 mainCtrl.VerifyAllClean(t)
4314 //-----------------------------------------------------------------------------
4315 // TestRESTSubReqTwoRetriesNoRespSubDelRespInSubmgr
4318 // +-------+ +---------+ +---------+
4319 // | xapp | | submgr | | e2term |
4320 // +-------+ +---------+ +---------+
4323 // |---------------->| |
4325 // | RESTSubResp | |
4326 // |<----------------| |
4328 // | |------------->|
4332 // | |------------->|
4335 // | |------------->|
4339 // | |------------->|
4343 // | |<-------------|
4346 // |<----------------| |
4348 // | [SUBS DELETE] |
4351 //-----------------------------------------------------------------------------
4353 func TestRESTSubReqRetryNoRespSubDelRespInSubmgr(t *testing.T) {
4355 // Init counter check
4356 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
4357 Counter{cRestSubReqFromXapp, 1},
4358 Counter{cRestSubRespToXapp, 1},
4359 Counter{cSubReqToE2, 1},
4360 Counter{cSubReReqToE2, 1},
4361 Counter{cSubReqTimerExpiry, 2},
4362 Counter{cRestSubFailNotifToXapp, 1},
4363 Counter{cSubDelReqToE2, 1},
4364 Counter{cSubDelRespFromE2, 1},
4365 Counter{cRestSubDelReqFromXapp, 1},
4366 Counter{cRestSubDelRespToXapp, 1},
4369 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
4370 restSubId := xappConn1.SendRESTSubsReq(t, params)
4371 xapp.Logger.Debug("Send REST subscriber request for subscriber : %v", restSubId)
4373 e2termConn1.RecvSubsReq(t)
4374 xapp.Logger.Debug("Ignore 1st REST subscriber request for subscriber : %v", restSubId)
4376 e2termConn1.RecvSubsReq(t)
4377 xapp.Logger.Debug("Ignore 2nd REST subscriber request for subscriber : %v", restSubId)
4379 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
4380 xappConn1.ExpectRESTNotificationNok(t, restSubId, "allFail")
4381 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
4382 xappConn1.WaitRESTNotification(t, restSubId)
4384 xappConn1.SendRESTSubsDelReq(t, &restSubId)
4386 // Wait that subs is cleaned
4387 waitSubsCleanup(t, delreq.RequestId.InstanceId, 10)
4388 mainCtrl.VerifyCounterValues(t)
4389 mainCtrl.VerifyAllClean(t)
4392 //-----------------------------------------------------------------------------
4393 // TestREST2eTermNotRespondingToSubReq
4396 // +-------+ +---------+ +---------+
4397 // | xapp | | submgr | | e2term |
4398 // +-------+ +---------+ +---------+
4401 // |---------------->| |
4402 // | RESTSubResp | |
4403 // |<----------------| |
4405 // | |------------->|
4408 // | |------------->|
4411 // | |------------->|
4414 // | |------------->|
4415 // | RESTNotif(Unsuccessful) |
4416 // |<----------------| |
4418 // | RESTSubDelReq | |
4419 // |---------------->| |
4420 // | RESTSubDelResp | |
4421 // |<----------------| |
4424 //-----------------------------------------------------------------------------
4426 func TestREST2eTermNotRespondingToSubReq(t *testing.T) {
4428 // Init counter check
4429 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
4430 Counter{cRestSubReqFromXapp, 1},
4431 Counter{cRestSubRespToXapp, 1},
4432 Counter{cSubReqToE2, 1},
4433 Counter{cSubReReqToE2, 1},
4434 Counter{cSubReqTimerExpiry, 2},
4435 Counter{cSubDelReReqToE2, 1},
4436 Counter{cRestSubFailNotifToXapp, 1},
4437 Counter{cSubDelReqToE2, 1},
4438 Counter{cSubDelReqTimerExpiry, 2},
4439 Counter{cRestSubDelReqFromXapp, 1},
4440 Counter{cRestSubDelRespToXapp, 1},
4443 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
4444 restSubId := xappConn1.SendRESTSubsReq(t, params)
4445 xapp.Logger.Debug("Send REST subscriber request for subscriber : %v", restSubId)
4447 e2termConn1.RecvSubsReq(t)
4448 xapp.Logger.Debug("Ignore 1st REST subscriber request for subscriber : %v", restSubId)
4450 e2termConn1.RecvSubsReq(t)
4451 xapp.Logger.Debug("Ignore 2nd REST subscriber request for subscriber : %v", restSubId)
4453 e2termConn1.RecvSubsDelReq(t)
4454 xapp.Logger.Debug("Ignore 1st INTERNAL delete request for subscriber : %v", restSubId)
4456 xappConn1.ExpectRESTNotificationNok(t, restSubId, "allFail")
4457 e2termConn1.RecvSubsDelReq(t)
4458 xapp.Logger.Debug("Ignore 2nd INTERNAL delete request for subscriber : %v", restSubId)
4460 e2SubsId := xappConn1.WaitRESTNotification(t, restSubId)
4462 xappConn1.SendRESTSubsDelReq(t, &restSubId)
4464 waitSubsCleanup(t, e2SubsId, 10)
4465 mainCtrl.VerifyCounterValues(t)
4466 mainCtrl.VerifyAllClean(t)
4469 //-----------------------------------------------------------------------------
4470 // TestRESTSubReqTwoRetriesNoRespSubDelRespInSubmgr
4473 // +-------+ +---------+ +---------+
4474 // | xapp | | submgr | | e2term |
4475 // +-------+ +---------+ +---------+
4478 // |---------------->| |
4480 // | RESTSubResp | |
4481 // |<----------------| |
4483 // | |------------->|
4487 // | |------------->|
4490 // | |------------->|
4494 // | |------------->|
4498 // | |<-------------|
4501 // |<----------------| |
4503 // | [SUBS DELETE] |
4506 //-----------------------------------------------------------------------------
4507 func TestRESTSubReqTwoRetriesNoRespAtAllInSubmgr(t *testing.T) {
4509 // Init counter check
4510 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
4511 Counter{cRestSubReqFromXapp, 1},
4512 Counter{cRestSubRespToXapp, 1},
4513 Counter{cSubReqToE2, 1},
4514 Counter{cSubReReqToE2, 1},
4515 Counter{cSubReqTimerExpiry, 2},
4516 Counter{cRestSubFailNotifToXapp, 1},
4517 Counter{cSubDelReqToE2, 1},
4518 Counter{cSubDelReReqToE2, 1},
4519 Counter{cSubDelReqTimerExpiry, 2},
4520 Counter{cRestSubDelReqFromXapp, 1},
4521 Counter{cRestSubDelRespToXapp, 1},
4524 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
4525 restSubId := xappConn1.SendRESTSubsReq(t, params)
4526 xapp.Logger.Debug("Send REST subscriber request for subscriber : %v", restSubId)
4528 e2termConn1.RecvSubsReq(t)
4529 xapp.Logger.Debug("Ignore 1st REST subscriber request for subscriber : %v", restSubId)
4531 e2termConn1.RecvSubsReq(t)
4532 xapp.Logger.Debug("Ignore 2nd REST subscriber request for subscriber : %v", restSubId)
4534 e2termConn1.RecvSubsDelReq(t)
4535 xapp.Logger.Debug("Ignore 1st INTERNAL delete request for subscriber : %v", restSubId)
4537 xappConn1.ExpectRESTNotificationNok(t, restSubId, "allFail")
4538 e2termConn1.RecvSubsDelReq(t)
4539 xapp.Logger.Debug("Ignore 2nd INTERNAL delete request for subscriber : %v", restSubId)
4541 e2SubsId := xappConn1.WaitRESTNotification(t, restSubId)
4543 xappConn1.SendRESTSubsDelReq(t, &restSubId)
4545 waitSubsCleanup(t, e2SubsId, 10)
4546 mainCtrl.VerifyCounterValues(t)
4547 mainCtrl.VerifyAllClean(t)
4550 //-----------------------------------------------------------------------------
4551 // TestRESTSubReqSubFailRespInSubmgr
4554 // +-------+ +---------+ +---------+
4555 // | xapp | | submgr | | e2term |
4556 // +-------+ +---------+ +---------+
4559 // |---------------->| |
4561 // | RESTSubResp | |
4562 // |<----------------| |
4564 // | |------------->|
4567 // | |<-------------|
4571 // |<----------------| |
4573 // | [SUBS DELETE] |
4576 //-----------------------------------------------------------------------------
4578 func TestRESTSubReqSubFailRespInSubmgr(t *testing.T) {
4580 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
4581 Counter{cRestSubReqFromXapp, 1},
4582 Counter{cRestSubRespToXapp, 1},
4583 Counter{cSubReqToE2, 1},
4584 Counter{cSubFailFromE2, 1},
4585 Counter{cRestSubFailNotifToXapp, 1},
4586 Counter{cRestSubDelReqFromXapp, 1},
4587 Counter{cRestSubDelRespToXapp, 1},
4590 const subReqCount int = 1
4591 const e2Timeout int64 = 2
4592 const e2RetryCount int64 = 1
4593 const routingNeeded bool = true
4595 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
4596 params.SetSubscriptionDirectives(e2Timeout, e2RetryCount, routingNeeded)
4597 restSubId := xappConn1.SendRESTSubsReq(t, params)
4599 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
4600 fparams1 := &teststube2ap.E2StubSubsFailParams{}
4601 fparams1.Set(crereq1)
4602 xappConn1.ExpectRESTNotificationNok(t, restSubId, "allFail")
4603 e2termConn1.SendSubsFail(t, fparams1, cremsg1)
4605 e2SubsId := xappConn1.WaitRESTNotification(t, restSubId)
4606 xapp.Logger.Debug("TEST: REST notification received e2SubsId=%v", e2SubsId)
4608 // REST subscription sill there to be deleted
4609 xappConn1.SendRESTSubsDelReq(t, &restSubId)
4611 // Wait that subs is cleaned
4612 waitSubsCleanup(t, e2SubsId, 10)
4614 mainCtrl.VerifyCounterValues(t)
4615 mainCtrl.VerifyAllClean(t)
4618 //-----------------------------------------------------------------------------
4619 // TestRESTSubDelReqRetryInSubmgr
4622 // +-------+ +---------+ +---------+
4623 // | xapp | | submgr | | e2term |
4624 // +-------+ +---------+ +---------+
4626 // | [SUBS CREATE] |
4629 // | RESTSubDelReq | |
4630 // |---------------->| |
4632 // | RESTSubDelResp | |
4633 // |<----------------| |
4635 // | |------------->|
4638 // | |------------->|
4641 // | |<-------------|
4644 //-----------------------------------------------------------------------------
4645 func TestRESTSubDelReqRetryInSubmgr(t *testing.T) {
4647 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
4648 Counter{cRestSubReqFromXapp, 1},
4649 Counter{cRestSubRespToXapp, 1},
4650 Counter{cSubReqToE2, 1},
4651 Counter{cSubRespFromE2, 1},
4652 Counter{cRestSubNotifToXapp, 1},
4653 Counter{cRestSubDelReqFromXapp, 1},
4654 Counter{cSubDelReqToE2, 1},
4655 Counter{cSubDelReqTimerExpiry, 1},
4656 Counter{cSubDelReReqToE2, 1},
4657 Counter{cSubDelRespFromE2, 1},
4658 Counter{cRestSubDelRespToXapp, 1},
4661 var params *teststube2ap.RESTSubsReqParams = nil
4662 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
4665 xappConn1.SendRESTSubsDelReq(t, &restSubId)
4667 // E2t: Receive 1st SubsDelReq
4668 e2termConn1.RecvSubsDelReq(t)
4670 // E2t: Receive 2nd SubsDelReq and send SubsDelResp
4671 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
4672 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
4674 //Wait that subs is cleaned
4675 waitSubsCleanup(t, e2SubsId, 10)
4677 mainCtrl.VerifyCounterValues(t)
4678 mainCtrl.VerifyAllClean(t)
4681 //-----------------------------------------------------------------------------
4682 // TestRESTSubDelReqTwoRetriesNoRespInSubmgr
4685 // +-------+ +---------+ +---------+
4686 // | xapp | | submgr | | e2term |
4687 // +-------+ +---------+ +---------+
4689 // | [SUBS CREATE] |
4692 // | RESTSubDelReq | |
4693 // |---------------->| |
4695 // | RESTSubDelResp | |
4696 // |<----------------| |
4698 // | |------------->|
4701 // | |------------->|
4705 //-----------------------------------------------------------------------------
4707 func TestRESTSubDelReqTwoRetriesNoRespInSubmgr(t *testing.T) {
4709 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
4710 Counter{cRestSubReqFromXapp, 1},
4711 Counter{cRestSubRespToXapp, 1},
4712 Counter{cSubReqToE2, 1},
4713 Counter{cSubRespFromE2, 1},
4714 Counter{cRestSubNotifToXapp, 1},
4715 Counter{cRestSubDelReqFromXapp, 1},
4716 Counter{cSubDelReqToE2, 1},
4717 Counter{cSubDelReqTimerExpiry, 1},
4718 Counter{cSubDelReReqToE2, 1},
4719 Counter{cSubDelRespFromE2, 1},
4720 Counter{cRestSubDelRespToXapp, 1},
4724 var params *teststube2ap.RESTSubsReqParams = nil
4725 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
4728 xappConn1.SendRESTSubsDelReq(t, &restSubId)
4730 // E2t: Receive 1st SubsDelReq
4731 e2termConn1.RecvSubsDelReq(t)
4733 // E2t: Receive 2nd SubsDelReq and send SubsDelResp
4734 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
4735 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
4737 //Wait that subs is cleaned
4738 waitSubsCleanup(t, e2SubsId, 10)
4740 mainCtrl.VerifyCounterValues(t)
4741 mainCtrl.VerifyAllClean(t)
4744 //-----------------------------------------------------------------------------
4745 // TestRESTSubDelReqSubDelFailRespInSubmgr
4748 // +-------+ +---------+ +---------+
4749 // | xapp | | submgr | | e2term |
4750 // +-------+ +---------+ +---------+
4752 // | [SUBS CREATE] |
4755 // | RESTSubDelReq | |
4756 // |---------------->| |
4758 // | RESTSubDelResp | |
4759 // |<----------------| |
4761 // | |------------->|
4764 // | |<-------------|
4767 //-----------------------------------------------------------------------------
4769 func TestRESTSubDelReqSubDelFailRespInSubmgr(t *testing.T) {
4771 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
4772 Counter{cRestSubReqFromXapp, 1},
4773 Counter{cRestSubRespToXapp, 1},
4774 Counter{cSubReqToE2, 1},
4775 Counter{cSubRespFromE2, 1},
4776 Counter{cRestSubNotifToXapp, 1},
4777 Counter{cRestSubDelReqFromXapp, 1},
4778 Counter{cSubDelReqToE2, 1},
4779 Counter{cSubDelFailFromE2, 1},
4780 Counter{cRestSubDelRespToXapp, 1},
4784 var params *teststube2ap.RESTSubsReqParams = nil
4785 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
4788 xappConn1.SendRESTSubsDelReq(t, &restSubId)
4790 // E2t: Send receive SubsDelReq and send SubsDelFail
4791 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
4792 e2termConn1.SendSubsDelFail(t, delreq, delmsg)
4794 //Wait that subs is cleaned
4795 waitSubsCleanup(t, e2SubsId, 10)
4797 mainCtrl.VerifyCounterValues(t)
4798 mainCtrl.VerifyAllClean(t)
4801 //-----------------------------------------------------------------------------
4802 // TestRESTSubReqAndSubDelOkSameAction
4805 // +-------+ +-------+ +---------+ +---------+
4806 // | xapp2 | | xapp1 | | submgr | | e2term |
4807 // +-------+ +-------+ +---------+ +---------+
4809 // | | RESTSubReq1 | |
4810 // | |---------------->| |
4812 // | | RESTSubResp1 | |
4813 // | |<----------------| |
4816 // | | |------------->|
4818 // | | |<-------------|
4819 // | | RESTNotif1 | |
4820 // | |<----------------| |
4822 // | RESTSubReq2 | |
4823 // |------------------------------>| |
4825 // | RESTSubResp2 | |
4826 // |<------------------------------| |
4828 // | | RESTNotif2 | |
4829 // |<------------------------------| |
4831 // | | RESTSubDelReq1 | |
4832 // | |---------------->| |
4834 // | | RESTSubDelResp1 | |
4835 // | |<----------------| |
4837 // | RESTSubDelReq2 | |
4838 // |------------------------------>| |
4840 // | RESTSubDelResp2 | |
4841 // |<------------------------------| |
4843 // | | | SubDelReq2 |
4844 // | | |------------->|
4846 // | | | SubDelResp2 |
4847 // | | |<-------------|
4850 //-----------------------------------------------------------------------------
4852 func TestRESTSubReqAndSubDelOkSameAction(t *testing.T) {
4854 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
4855 Counter{cRestSubReqFromXapp, 2},
4856 Counter{cRestSubRespToXapp, 2},
4857 Counter{cSubReqToE2, 1},
4858 Counter{cSubRespFromE2, 1},
4859 Counter{cRestSubNotifToXapp, 2},
4860 Counter{cMergedSubscriptions, 1},
4861 Counter{cUnmergedSubscriptions, 1},
4862 Counter{cRestSubDelReqFromXapp, 2},
4863 Counter{cSubDelReqToE2, 1},
4864 Counter{cSubDelRespFromE2, 1},
4865 Counter{cRestSubDelRespToXapp, 2},
4869 var params *teststube2ap.RESTSubsReqParams = nil
4872 restSubId1, e2SubsId1 := createSubscription(t, xappConn1, e2termConn1, params)
4873 queryXappSubscription(t, int64(e2SubsId1), "RAN_NAME_1", []string{"localhost:13560"})
4876 params = xappConn2.GetRESTSubsReqReportParams(subReqCount)
4877 params.SetMeid("RAN_NAME_1")
4879 xapp.Subscription.SetResponseCB(xappConn2.SubscriptionRespHandler)
4880 xappConn2.ExpectAnyNotification(t)
4881 waiter := rtmgrHttp.AllocNextSleep(10, true)
4882 restSubId2 := xappConn2.SendRESTSubsReq(t, params)
4883 waiter.WaitResult(t)
4884 xapp.Logger.Debug("Send REST subscriber request for subscriberId : %v", restSubId2)
4885 e2SubsId2 := xappConn2.WaitAnyRESTNotification(t)
4886 xapp.Logger.Debug("REST notification received e2SubsId=%v", e2SubsId2)
4888 queryXappSubscription(t, int64(e2SubsId1), "RAN_NAME_1", []string{"localhost:13560", "localhost:13660"})
4891 xappConn1.SendRESTSubsDelReq(t, &restSubId1)
4894 deleteXapp2Subscription(t, &restSubId2)
4896 //Wait that subs is cleaned
4897 waitSubsCleanup(t, e2SubsId2, 10)
4898 mainCtrl.VerifyCounterValues(t)
4899 mainCtrl.VerifyAllClean(t)
4902 //-----------------------------------------------------------------------------
4903 // TestSubReqAndSubDelOkSameActionParallel
4906 // +-------+ +-------+ +---------+ +---------+
4907 // | xapp2 | | xapp1 | | submgr | | e2term |
4908 // +-------+ +-------+ +---------+ +---------+
4913 // | |------------->| |
4916 // | | |------------->|
4918 // |--------------------------->| |
4920 // | | |<-------------|
4922 // | |<-------------| |
4924 // | | |------------->|
4927 // | | |<-------------|
4929 // |<---------------------------| |
4931 // | | SubDelReq 1 | |
4932 // | |------------->| |
4934 // | | SubDelResp 1 | |
4935 // | |<-------------| |
4937 // | SubDelReq 2 | |
4938 // |--------------------------->| |
4940 // | | | SubDelReq 2 |
4941 // | | |------------->|
4943 // | | | SubDelReq 2 |
4944 // | | |------------->|
4946 // | SubDelResp 2 | |
4947 // |<---------------------------| |
4949 func TestRESTSubReqAndSubDelOkSameActionParallel(t *testing.T) {
4951 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
4952 Counter{cRestSubReqFromXapp, 2},
4953 Counter{cRestSubRespToXapp, 2},
4954 Counter{cSubReqToE2, 2},
4955 Counter{cSubRespFromE2, 2},
4956 Counter{cRestSubNotifToXapp, 2},
4957 Counter{cRestSubDelReqFromXapp, 2},
4958 Counter{cSubDelReqToE2, 2},
4959 Counter{cSubDelRespFromE2, 2},
4960 Counter{cRestSubDelRespToXapp, 2},
4963 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
4964 restSubId1 := xappConn1.SendRESTSubsReq(t, params)
4965 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
4967 params2 := xappConn2.GetRESTSubsReqReportParams(subReqCount)
4968 restSubId2 := xappConn2.SendRESTSubsReq(t, params2)
4970 xappConn1.ExpectRESTNotification(t, restSubId1)
4971 e2termConn1.SendSubsResp(t, crereq1, cremsg1)
4972 e2SubsId1 := xappConn1.WaitRESTNotification(t, restSubId1)
4974 xappConn2.ExpectRESTNotification(t, restSubId2)
4975 crereq2, cremsg2 := e2termConn1.RecvSubsReq(t)
4976 e2termConn1.SendSubsResp(t, crereq2, cremsg2)
4977 e2SubsId2 := xappConn2.WaitRESTNotification(t, restSubId2)
4980 xappConn1.SendRESTSubsDelReq(t, &restSubId1)
4981 delreq1, delmsg1 := e2termConn1.RecvSubsDelReq(t)
4982 e2termConn1.SendSubsDelResp(t, delreq1, delmsg1)
4983 mainCtrl.wait_subs_clean(t, e2SubsId1, 10)
4986 xappConn2.SendRESTSubsDelReq(t, &restSubId2)
4987 delreq2, delmsg2 := e2termConn1.RecvSubsDelReq(t)
4988 e2termConn1.SendSubsDelResp(t, delreq2, delmsg2)
4990 waitSubsCleanup(t, e2SubsId2, 10)
4991 mainCtrl.VerifyCounterValues(t)
4992 mainCtrl.VerifyAllClean(t)
4995 //-----------------------------------------------------------------------------
4996 // TestRESTSubReqAndSubDelNoAnswerSameActionParallel
4999 // +-------+ +-------+ +---------+ +---------+
5000 // | xapp2 | | xapp1 | | submgr | | e2term |
5001 // +-------+ +-------+ +---------+ +---------+
5005 // | | RESTSubReq1 | |
5006 // | |---------------->| |
5008 // | | RESTSubResp1 | |
5009 // | |<----------------| |
5011 // | | |------------->|
5012 // | RESTSubReq2 | |
5013 // |------------------------------>| |
5015 // | RESTSubResp2 | |
5016 // |<------------------------------| |
5018 // | | |------------->|
5021 // | | | SubDelReq |
5022 // | | |------------->|
5024 // | | | SubDelResp |
5025 // | | |<-------------|
5026 // | | RESTNotif1 | |
5027 // | | unsuccess | |
5028 // | |<----------------| |
5030 // | | unsuccess | |
5031 // |<------------------------------| |
5033 // | | RESTSubDelReq1 | |
5034 // | |---------------->| |
5036 // | | RESTSubDelResp1 | |
5037 // | |<----------------| |
5039 // | RESTSubDelReq2 | |
5040 // |------------------------------>| |
5042 // | RESTSubDelResp2 | |
5043 // |<------------------------------| |
5045 //-----------------------------------------------------------------------------
5047 func TestRESTSubReqAndSubDelNoAnswerSameActionParallel(t *testing.T) {
5049 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
5050 Counter{cRestSubReqFromXapp, 2},
5051 Counter{cMergedSubscriptions, 1},
5052 Counter{cRestSubRespToXapp, 2},
5053 Counter{cSubReqToE2, 1},
5054 Counter{cSubReqTimerExpiry, 2},
5055 Counter{cSubReReqToE2, 1},
5056 Counter{cRestSubFailNotifToXapp, 2},
5057 Counter{cUnmergedSubscriptions, 1},
5058 Counter{cRestSubDelReqFromXapp, 2},
5059 Counter{cSubDelReqToE2, 1},
5060 Counter{cSubDelRespFromE2, 1},
5061 Counter{cRestSubDelRespToXapp, 2},
5063 const subReqCount int = 1
5066 params1 := xappConn1.GetRESTSubsReqReportParams(subReqCount)
5067 restSubId1 := xappConn1.SendRESTSubsReq(t, params1)
5068 crereq1, _ := e2termConn1.RecvSubsReq(t)
5071 subepcnt2 := mainCtrl.get_subs_entrypoint_cnt(t, crereq1.RequestId.InstanceId)
5072 params2 := xappConn2.GetRESTSubsReqReportParams(subReqCount)
5073 params2.SetMeid("RAN_NAME_1")
5074 restSubId2 := xappConn2.SendRESTSubsReq(t, params2)
5075 mainCtrl.wait_subs_entrypoint_cnt_change(t, crereq1.RequestId.InstanceId, subepcnt2, 10)
5077 //Req1 (retransmitted)
5078 e2termConn1.RecvSubsReq(t)
5080 delreq1, delmsg1 := e2termConn1.RecvSubsDelReq(t)
5082 xappConn1.WaitListedRestNotifications(t, []string{restSubId1, restSubId2})
5083 e2termConn1.SendSubsDelResp(t, delreq1, delmsg1)
5085 e2SubsIdA := <-xappConn1.ListedRESTNotifications
5086 xapp.Logger.Debug("TEST: 1.st XAPP notification received e2SubsId=%v", e2SubsIdA)
5087 e2SubsIdB := <-xappConn1.ListedRESTNotifications
5088 xapp.Logger.Debug("TEST: 2.nd XAPP notification received e2SubsId=%v", e2SubsIdB)
5091 xappConn1.SendRESTSubsDelReq(t, &restSubId1)
5094 xappConn2.SendRESTSubsDelReq(t, &restSubId2)
5096 mainCtrl.wait_multi_subs_clean(t, []uint32{e2SubsIdA.E2SubsId, e2SubsIdB.E2SubsId}, 10)
5098 //Wait that subs is cleaned
5099 waitSubsCleanup(t, e2SubsIdA.E2SubsId, 10)
5100 mainCtrl.VerifyCounterValues(t)
5101 mainCtrl.VerifyAllClean(t)
5104 //-----------------------------------------------------------------------------
5105 // TestRESTSubReqAndSubDelNokSameActionParallel
5108 // +-------+ +-------+ +---------+ +---------+
5109 // | xapp2 | | xapp1 | | submgr | | e2term |
5110 // +-------+ +-------+ +---------+ +---------+
5114 // | | RESTSubReq1 | |
5115 // | |---------------->| |
5117 // | | RESTSubResp1 | |
5118 // | |<----------------| |
5120 // | | |------------->|
5121 // | RESTSubReq2 | |
5122 // |------------------------------>| |
5124 // | RESTSubDelResp2 | |
5125 // |<------------------------------| |
5127 // | | |<-------------|
5129 // | | RESTNotif1 | |
5130 // | | unsuccess | |
5131 // | |<----------------| |
5133 // | | unsuccess | |
5134 // |<------------------------------| |
5136 // | | RESTSubDelReq1 | | There is no need for xApp to send delete for failed subscriptions but some xApp might do so.
5137 // | |---------------->| |
5139 // | | RESTSubDelResp1 | |
5140 // | |<----------------| |
5142 // | RESTSubDelReq2 | |
5143 // |------------------------------>| |
5145 // | RESTSubDelResp2 | |
5146 // |<------------------------------| |
5148 //-----------------------------------------------------------------------------
5150 func TestRESTSubReqAndSubDelNokSameActionParallel(t *testing.T) {
5152 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
5153 Counter{cRestSubReqFromXapp, 2},
5154 Counter{cMergedSubscriptions, 1},
5155 Counter{cRestSubRespToXapp, 2},
5156 Counter{cSubReqToE2, 1},
5157 Counter{cSubFailFromE2, 1},
5158 Counter{cRestSubFailNotifToXapp, 2},
5159 Counter{cUnmergedSubscriptions, 1},
5160 Counter{cRestSubDelReqFromXapp, 2},
5161 Counter{cRestSubDelRespToXapp, 2},
5164 const subReqCount int = 1
5167 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
5168 restSubId1 := xappConn1.SendRESTSubsReq(t, params)
5169 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
5172 subepcnt2 := mainCtrl.get_subs_entrypoint_cnt(t, crereq1.RequestId.InstanceId)
5173 params2 := xappConn2.GetRESTSubsReqReportParams(subReqCount)
5174 params2.SetMeid("RAN_NAME_1")
5175 restSubId2 := xappConn2.SendRESTSubsReq(t, params2)
5176 mainCtrl.wait_subs_entrypoint_cnt_change(t, crereq1.RequestId.InstanceId, subepcnt2, 10)
5178 // E2t: send SubsFail (first)
5179 fparams1 := &teststube2ap.E2StubSubsFailParams{}
5180 fparams1.Set(crereq1)
5181 e2termConn1.SendSubsFail(t, fparams1, cremsg1)
5183 xappConn1.WaitListedRestNotifications(t, []string{restSubId1, restSubId2})
5184 e2SubsIdA := <-xappConn1.ListedRESTNotifications
5185 xapp.Logger.Debug("TEST: 1.st XAPP notification received e2SubsId=%v", e2SubsIdA)
5186 e2SubsIdB := <-xappConn1.ListedRESTNotifications
5187 xapp.Logger.Debug("TEST: 2.nd XAPP notification received e2SubsId=%v", e2SubsIdB)
5190 xappConn1.SendRESTSubsDelReq(t, &restSubId1)
5193 xappConn2.SendRESTSubsDelReq(t, &restSubId2)
5195 //Wait that subs is cleaned
5196 waitSubsCleanup(t, e2SubsIdA.E2SubsId, 10)
5197 waitSubsCleanup(t, e2SubsIdB.E2SubsId, 10)
5198 mainCtrl.VerifyCounterValues(t)
5199 mainCtrl.VerifyAllClean(t)
5202 //-----------------------------------------------------------------------------
5203 // TestRESTSubReqPolicyAndSubDelOk
5206 // +-------+ +---------+ +---------+
5207 // | xapp | | submgr | | e2term |
5208 // +-------+ +---------+ +---------+
5211 // |--------------->| |
5212 // | RESTSubResp | |
5213 // |<---------------| |
5216 // | |------------->|
5219 // | |<-------------|
5222 // |<---------------| |
5225 // | RESTSubDelReq | |
5226 // |--------------->| |
5227 // | RESTSubDelResp | |
5228 // |<---------------| |
5231 // | |------------->|
5234 // | |<-------------|
5237 //-----------------------------------------------------------------------------
5239 func TestRESTSubReqPolicyAndSubDelOk(t *testing.T) {
5241 // Init counter check
5242 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
5243 Counter{cRestSubReqFromXapp, 1},
5244 Counter{cRestSubRespToXapp, 1},
5245 Counter{cSubReqToE2, 1},
5246 Counter{cSubRespFromE2, 1},
5247 Counter{cRestSubNotifToXapp, 1},
5248 Counter{cRestSubDelReqFromXapp, 1},
5249 Counter{cSubDelReqToE2, 1},
5250 Counter{cSubDelRespFromE2, 1},
5251 Counter{cRestSubDelRespToXapp, 1},
5254 params := xappConn1.GetRESTSubsReqPolicyParams(subReqCount)
5255 restSubId := xappConn1.SendRESTSubsReq(t, params)
5256 xapp.Logger.Debug("Send REST Policy subscriber request for subscriberId : %v", restSubId)
5258 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
5259 xappConn1.ExpectRESTNotification(t, restSubId)
5260 e2termConn1.SendSubsResp(t, crereq1, cremsg1)
5261 e2SubsId := xappConn1.WaitRESTNotification(t, restSubId)
5262 xapp.Logger.Debug("REST notification received e2SubsId=%v", e2SubsId)
5264 xappConn1.SendRESTSubsDelReq(t, &restSubId)
5265 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
5266 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
5268 // Wait that subs is cleaned
5269 waitSubsCleanup(t, e2SubsId, 10)
5270 mainCtrl.VerifyCounterValues(t)
5271 mainCtrl.VerifyAllClean(t)
5274 //-----------------------------------------------------------------------------
5275 // TestRESTSubReqPolicyChangeAndSubDelOk
5278 // +-------+ +---------+ +---------+
5279 // | xapp | | submgr | | e2term |
5280 // +-------+ +---------+ +---------+
5283 // |---------------->| |
5285 // | RESTSubResp | |
5286 // |<----------------| |
5288 // | |------------->|
5291 // | |<-------------|
5294 // |<----------------| |
5297 // |---------------->| |
5299 // | RESTSubResp | |
5300 // |<----------------| |
5302 // | |------------->|
5305 // | |<-------------|
5308 // |<----------------| |
5310 // | RESTSubDelReq | |
5311 // |---------------->| |
5314 // | |------------->|
5317 // | |<-------------|
5319 // | RESTSubDelResp | |
5320 // |<----------------| |
5322 //-----------------------------------------------------------------------------
5324 func TestRESTSubReqPolicyChangeAndSubDelOk(t *testing.T) {
5326 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
5327 Counter{cRestSubReqFromXapp, 2},
5328 Counter{cRestSubRespToXapp, 2},
5329 Counter{cSubReqToE2, 2},
5330 Counter{cSubRespFromE2, 2},
5331 Counter{cRestSubNotifToXapp, 2},
5332 Counter{cRestSubDelReqFromXapp, 1},
5333 Counter{cSubDelReqToE2, 1},
5334 Counter{cSubDelRespFromE2, 1},
5335 Counter{cRestSubDelRespToXapp, 1},
5338 const subReqCount int = 1
5339 const e2Timeout int64 = 1
5340 const e2RetryCount int64 = 0
5341 const routingNeeded bool = true
5344 params := xappConn1.GetRESTSubsReqPolicyParams(subReqCount)
5345 params.SetSubscriptionDirectives(e2Timeout, e2RetryCount, routingNeeded)
5346 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
5349 // GetRESTSubsReqPolicyParams sets some counters on tc side.
5351 params = xappConn1.GetRESTSubsReqPolicyParams(subReqCount)
5352 params.SetSubscriptionDirectives(e2Timeout, e2RetryCount, routingNeeded)
5353 params.SetSubscriptionID(&restSubId)
5354 params.SetTimeToWait("w200ms")
5355 restSubId, e2SubsId = createSubscription(t, xappConn1, e2termConn1, params)
5358 xappConn1.SendRESTSubsDelReq(t, &restSubId)
5360 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
5361 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
5363 // Wait that subs is cleaned
5364 waitSubsCleanup(t, e2SubsId, 10)
5365 mainCtrl.VerifyCounterValues(t)
5366 mainCtrl.VerifyAllClean(t)
5369 //-----------------------------------------------------------------------------
5370 // TestRESTSubReqPolicyChangeNOk
5373 // +-------+ +---------+ +---------+
5374 // | xapp | | submgr | | e2term |
5375 // +-------+ +---------+ +---------+
5378 // |---------------->| |
5380 // | RESTSubResp | |
5381 // |<----------------| |
5383 // | |------------->|
5386 // | |<-------------|
5389 // |<----------------| |
5392 // |---------------->| |
5394 // | RESTSubUpdateFail(400 Bad request)
5396 // | RESTSubDelReq | |
5397 // |---------------->| |
5400 // | |------------->|
5403 // | |<-------------|
5405 // | RESTSubDelResp | |
5406 // |<----------------| |
5408 //-----------------------------------------------------------------------------
5410 func TestRESTSubReqPolicyChangeNOk(t *testing.T) {
5412 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
5413 Counter{cRestSubReqFromXapp, 2},
5414 Counter{cRestSubRespToXapp, 1},
5415 Counter{cSubReqToE2, 1},
5416 Counter{cSubRespFromE2, 1},
5417 Counter{cRestSubNotifToXapp, 1},
5418 Counter{cRestSubFailToXapp, 1},
5419 Counter{cRestSubDelReqFromXapp, 1},
5420 Counter{cSubDelReqToE2, 1},
5421 Counter{cSubDelRespFromE2, 1},
5422 Counter{cRestSubDelRespToXapp, 1},
5426 params := xappConn1.GetRESTSubsReqPolicyParams(subReqCount)
5427 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
5430 params = xappConn1.GetRESTSubsReqPolicyParams(subReqCount)
5432 restSubIdUpd := strings.ToUpper(restSubId) // This makes RESTSubReq to fail
5433 params.SetSubscriptionID(&restSubIdUpd)
5434 params.SetTimeToWait("w200ms")
5436 restSubId2 := xappConn1.SendRESTSubsReq(t, params)
5437 assert.Equal(t, restSubId2, "")
5440 xappConn1.SendRESTSubsDelReq(t, &restSubId)
5442 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
5443 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
5445 // Wait that subs is cleaned
5446 waitSubsCleanup(t, e2SubsId, 10)
5447 mainCtrl.VerifyCounterValues(t)
5448 mainCtrl.VerifyAllClean(t)
5451 //-----------------------------------------------------------------------------
5452 // TestRESTSubReqAndSubDelOkTwoE2termParallel
5455 // +-------+ +---------+ +---------+ +---------+
5456 // | xapp | | submgr | | e2term1 | | e2term2 |
5457 // +-------+ +---------+ +---------+ +---------+
5461 // | RESTSubReq1 | | |
5462 // |---------------->| | |
5464 // | RESTSubResp1 | | |
5465 // |<----------------| | |
5467 // | |------------->| |
5469 // | RESTSubReq2 | | |
5470 // |---------------->| | |
5472 // | RESTSubResp2 | | |
5473 // |<----------------| | |
5475 // | |---------------------------->|
5478 // | |<-------------| |
5479 // | RESTNotif1 | | |
5480 // |<----------------| | |
5482 // | |<----------------------------|
5483 // | RESTNotif2 | | |
5484 // |<----------------| | |
5486 // | [SUBS 1 DELETE] | |
5488 // | [SUBS 2 DELETE] | |
5491 //-----------------------------------------------------------------------------
5493 func TestRESTSubReqAndSubDelOkTwoE2termParallel(t *testing.T) {
5495 // Init counter check
5496 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
5497 Counter{cRestSubReqFromXapp, 2},
5498 Counter{cRestSubRespToXapp, 2},
5499 Counter{cSubReqToE2, 2},
5500 Counter{cSubRespFromE2, 2},
5501 Counter{cRestSubNotifToXapp, 2},
5502 Counter{cRestSubDelReqFromXapp, 2},
5503 Counter{cSubDelReqToE2, 2},
5504 Counter{cSubDelRespFromE2, 2},
5505 Counter{cRestSubDelRespToXapp, 2},
5508 const subReqCount int = 1
5511 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
5512 restSubId1 := xappConn1.SendRESTSubsReq(t, params)
5513 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
5516 params = xappConn2.GetRESTSubsReqReportParams(subReqCount)
5517 params.SetMeid("RAN_NAME_11")
5518 // Here we use xappConn2 to simulate sending second request from same xapp as doing it from xappConn1
5519 // would not work as notification would not be received
5520 restSubId2 := xappConn2.SendRESTSubsReq(t, params)
5521 crereq2, cremsg2 := e2termConn2.RecvSubsReq(t)
5524 xappConn1.ExpectRESTNotification(t, restSubId1)
5525 e2termConn1.SendSubsResp(t, crereq1, cremsg1)
5526 e2SubsId1 := xappConn1.WaitRESTNotification(t, restSubId1)
5527 xapp.Logger.Debug("TEST: REST notification received e2SubsId1=%v", e2SubsId1)
5530 xappConn2.ExpectRESTNotification(t, restSubId2)
5531 e2termConn2.SendSubsResp(t, crereq2, cremsg2)
5532 e2SubsId2 := xappConn2.WaitRESTNotification(t, restSubId2)
5533 xapp.Logger.Debug("TEST: REST notification received e2SubsId2=%v", e2SubsId2)
5536 xappConn1.SendRESTSubsDelReq(t, &restSubId1)
5537 delreq1, delmsg1 := e2termConn1.RecvSubsDelReq(t)
5538 e2termConn1.SendSubsDelResp(t, delreq1, delmsg1)
5540 // Wait that subs is cleaned
5541 mainCtrl.wait_subs_clean(t, e2SubsId1, 10)
5544 xappConn1.SendRESTSubsDelReq(t, &restSubId2)
5545 delreq2, delmsg2 := e2termConn2.RecvSubsDelReq(t)
5546 e2termConn2.SendSubsDelResp(t, delreq2, delmsg2)
5548 // Wait that subs is cleaned
5549 waitSubsCleanup(t, e2SubsId2, 10)
5551 mainCtrl.VerifyCounterValues(t)
5552 mainCtrl.VerifyAllClean(t)
5555 //-----------------------------------------------------------------------------
5556 // TestRESTSubReqInsertAndSubDelOk
5559 // +-------+ +---------+ +---------+
5560 // | xapp | | submgr | | e2term |
5561 // +-------+ +---------+ +---------+
5564 // |---------------->| |
5566 // | RESTSubResp | |
5567 // |<----------------| |
5570 // | |------------->|
5573 // | |<-------------|
5575 // |<----------------| |
5578 // | RESTSubDelReq | |
5579 // |---------------->| |
5582 // | |------------->|
5585 // | |<-------------|
5587 // | RESTSubDelResp| |
5588 // |<----------------| |
5590 //-----------------------------------------------------------------------------
5592 func TestRESTSubReqInsertAndSubDelOk(t *testing.T) {
5594 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
5595 Counter{cRestSubReqFromXapp, 1},
5596 Counter{cRestSubRespToXapp, 1},
5597 Counter{cSubReqToE2, 1},
5598 Counter{cSubRespFromE2, 1},
5599 Counter{cRestSubNotifToXapp, 1},
5600 Counter{cRestSubDelReqFromXapp, 1},
5601 Counter{cSubDelReqToE2, 1},
5602 Counter{cSubDelRespFromE2, 1},
5603 Counter{cRestSubDelRespToXapp, 1},
5606 const subReqCount int = 1
5608 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
5609 params.SetSubActionTypes("insert")
5612 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
5615 xappConn1.SendRESTSubsDelReq(t, &restSubId)
5617 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
5618 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
5620 // Wait that subs is cleaned
5621 waitSubsCleanup(t, e2SubsId, 10)
5622 mainCtrl.VerifyCounterValues(t)
5623 mainCtrl.VerifyAllClean(t)
5626 //-----------------------------------------------------------------------------
5627 // TestRESTSubReqNokAndSubDelOkWithRestartInMiddle
5630 // +-------+ +---------+ +---------+
5631 // | xapp | | submgr | | e2term |
5632 // +-------+ +---------+ +---------+
5635 // |------------->| |
5637 // | RESTSubResp | |
5638 // |<-------------| |
5640 // | |------------->|
5645 // | Submgr restart |
5649 // | |------------->|
5652 // | |<-------------|
5656 // |<-------------| |
5658 // | RESTSubDelReq| |
5659 // |------------->| |
5661 // |RESTSubDelResp| |
5662 // |<-------------| |
5664 //-----------------------------------------------------------------------------
5666 func TestRESTSubReqNokAndSubDelOkWithRestartInMiddle(t *testing.T) {
5668 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
5669 Counter{cRestSubReqFromXapp, 1},
5670 Counter{cRestSubRespToXapp, 1},
5671 Counter{cSubReqToE2, 1},
5672 Counter{cSubDelReqFromXapp, 1},
5673 Counter{cSubDelReqToE2, 1},
5674 Counter{cSubDelRespFromE2, 1},
5675 Counter{cRestSubDelReqFromXapp, 1},
5676 Counter{cRestSubDelRespToXapp, 1},
5679 const subReqCount int = 1
5681 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
5684 mainCtrl.SetResetTestFlag(t, true) // subs.DoNotWaitSubResp will be set TRUE for the subscription
5685 restSubId := xappConn1.SendRESTSubsReq(t, params)
5686 xapp.Logger.Debug("Send REST subscriber request for subscriber : %v", restSubId)
5688 e2termConn1.RecvSubsReq(t)
5690 mainCtrl.SetResetTestFlag(t, false)
5692 mainCtrl.SimulateRestart(t)
5693 xapp.Logger.Debug("mainCtrl.SimulateRestart done")
5695 // Deleletion of uncompleted subscription
5696 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
5697 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
5700 xappConn1.SendRESTSubsDelReq(t, &restSubId)
5702 xappConn1.TestMsgChanEmpty(t)
5703 e2termConn1.TestMsgChanEmpty(t)
5704 mainCtrl.wait_registry_empty(t, 10)
5706 mainCtrl.VerifyCounterValues(t)
5707 mainCtrl.VerifyAllClean(t)
5710 //-----------------------------------------------------------------------------
5711 // TestRESTSubReqAndSubDelOkWithRestartInMiddle
5714 // +-------+ +---------+ +---------+
5715 // | xapp | | submgr | | e2term |
5716 // +-------+ +---------+ +---------+
5719 // |---------------->| |
5721 // | RESTSubResp | |
5722 // |<----------------| |
5724 // | |------------->|
5727 // | |<-------------|
5730 // |<----------------| |
5733 // | Submgr restart |
5735 // | RESTSubDelReq | |
5736 // |---------------->| |
5739 // | |------------->|
5742 // | |<-------------|
5744 // | RESTSubDelResp | |
5745 // |<----------------| |
5747 //-----------------------------------------------------------------------------
5749 func TestRESTSubReqAndSubDelOkWithRestartInMiddle(t *testing.T) {
5751 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
5752 Counter{cRestSubReqFromXapp, 1},
5753 Counter{cRestSubRespToXapp, 1},
5754 Counter{cSubReqToE2, 1},
5755 Counter{cSubRespFromE2, 1},
5756 Counter{cRestSubNotifToXapp, 1},
5757 Counter{cRestSubDelReqFromXapp, 1},
5758 Counter{cSubDelReqToE2, 1},
5759 Counter{cSubDelRespFromE2, 1},
5760 Counter{cRestSubDelRespToXapp, 1},
5763 // Create subscription
5764 var params *teststube2ap.RESTSubsReqParams = nil
5765 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
5766 xapp.Logger.Debug("Send REST subscriber request for subscriber : %v", restSubId)
5768 // Check subscription
5769 queryXappSubscription(t, int64(e2SubsId), "RAN_NAME_1", []string{"localhost:13560"})
5771 mainCtrl.SimulateRestart(t)
5772 xapp.Logger.Debug("mainCtrl.SimulateRestart done")
5774 // ReadE2Subscriptions() for testing is running in own go routine (go mainCtrl.c.ReadE2Subscriptions())
5775 // That needs to be completed before successful subscription query is possible
5776 <-time.After(time.Second * 1)
5778 // Check subscription
5779 queryXappSubscription(t, int64(e2SubsId), "RAN_NAME_1", []string{"localhost:13560"})
5781 // Delete subscription
5782 deleteSubscription(t, xappConn1, e2termConn1, &restSubId)
5784 //Wait that subs is cleaned
5785 waitSubsCleanup(t, e2SubsId, 10)
5787 mainCtrl.VerifyCounterValues(t)
5788 mainCtrl.VerifyAllClean(t)
5791 //-----------------------------------------------------------------------------
5792 // TestRESTSubReqAndSubDelOkSameActionWithRestartsInMiddle
5795 // +-------+ +-------+ +---------+ +---------+
5796 // | xapp2 | | xapp1 | | submgr | | e2term |
5797 // +-------+ +-------+ +---------+ +---------+
5799 // | | RESTSubReq1 | |
5800 // | |---------------->| |
5802 // | | RESTSubResp1 | |
5803 // | |<----------------| |
5806 // | | |------------->|
5808 // | | |<-------------|
5809 // | | RESTNotif1 | |
5810 // | |<----------------| |
5812 // | RESTSubReq2 | |
5813 // |------------------------------>| |
5815 // | RESTSubResp2 | |
5816 // |<------------------------------| |
5818 // | | RESTNotif2 | |
5819 // |<------------------------------| |
5821 // | | Submgr restart |
5823 // | | RESTSubDelReq1 | |
5824 // | |---------------->| |
5826 // | | RESTSubDelResp1 | |
5827 // | |<----------------| |
5829 // | | Submgr restart |
5831 // | RESTSubDelReq2 | |
5832 // |------------------------------>| |
5834 // | RESTSubDelResp2 | |
5835 // |<------------------------------| |
5837 // | | | SubDelReq2 |
5838 // | | |------------->|
5840 // | | | SubDelResp2 |
5841 // | | |<-------------|
5844 //-----------------------------------------------------------------------------
5845 func TestRESTSubReqAndSubDelOkSameActionWithRestartsInMiddle(t *testing.T) {
5847 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
5848 Counter{cRestSubReqFromXapp, 2},
5849 Counter{cRestSubRespToXapp, 2},
5850 Counter{cSubReqToE2, 1},
5851 Counter{cSubRespFromE2, 1},
5852 Counter{cRestSubNotifToXapp, 2},
5853 Counter{cMergedSubscriptions, 1},
5854 Counter{cUnmergedSubscriptions, 1},
5855 Counter{cRestSubDelReqFromXapp, 2},
5856 Counter{cSubDelReqToE2, 1},
5857 Counter{cSubDelRespFromE2, 1},
5858 Counter{cRestSubDelRespToXapp, 2},
5861 // Create subscription 1
5862 var params *teststube2ap.RESTSubsReqParams = nil
5863 restSubId1, e2SubsId1 := createSubscription(t, xappConn1, e2termConn1, params)
5864 xapp.Logger.Debug("Send REST subscriber request for subscriber 1 : %v", restSubId1)
5866 // Create subscription 2 with same action
5867 params = xappConn2.GetRESTSubsReqReportParams(subReqCount)
5868 params.SetMeid("RAN_NAME_1")
5869 xapp.Subscription.SetResponseCB(xappConn2.SubscriptionRespHandler)
5870 xappConn2.ExpectAnyNotification(t)
5871 restSubId2 := xappConn2.SendRESTSubsReq(t, params)
5872 xapp.Logger.Debug("Send REST subscriber request for subscriberId : %v", restSubId2)
5873 e2SubsId2 := xappConn2.WaitAnyRESTNotification(t)
5874 xapp.Logger.Debug("REST notification received e2SubsId=%v", e2SubsId2)
5876 queryXappSubscription(t, int64(e2SubsId1), "RAN_NAME_1", []string{"localhost:13560", "localhost:13660"})
5878 mainCtrl.SimulateRestart(t)
5879 xapp.Logger.Debug("mainCtrl.SimulateRestart done 1")
5881 // ReadE2Subscriptions() for testing is running in own go routine (go mainCtrl.c.ReadE2Subscriptions())
5882 // That needs to be completed before successful subscription delete is possible
5883 <-time.After(time.Second * 1)
5885 // Delete subscription 1, and wait until it has removed the first endpoint
5886 xappConn1.SendRESTSubsDelReq(t, &restSubId1)
5887 mainCtrl.WaitRESTSubscriptionDelete(restSubId1)
5888 // Above wait does not work correctly anymore as this delay makes this test case work
5890 mainCtrl.SimulateRestart(t)
5891 xapp.Logger.Debug("mainCtrl.SimulateRestart done 2")
5893 // ReadE2Subscriptions() for testing is running in own go routine (go mainCtrl.c.ReadE2Subscriptions())
5894 // That needs to be completed before successful subscription query is possible
5895 <-time.After(time.Second * 1)
5897 queryXappSubscription(t, int64(e2SubsId1), "RAN_NAME_1", []string{"localhost:13660"})
5899 // Delete subscription 2
5900 deleteXapp2Subscription(t, &restSubId2)
5902 //Wait that subs is cleaned
5903 waitSubsCleanup(t, e2SubsId2, 10)
5905 mainCtrl.VerifyCounterValues(t)
5906 mainCtrl.VerifyAllClean(t)
5909 //-----------------------------------------------------------------------------
5910 // TestRESTReportSubReqAndSubDelOk
5913 // +-------+ +---------+ +---------+
5914 // | xapp | | submgr | | e2term |
5915 // +-------+ +---------+ +---------+
5918 // |---------------->| |
5920 // | RESTSubResp | |
5921 // |<----------------| |
5924 // | |------------->|
5927 // | |<-------------|
5929 // |<----------------| |
5930 // | | SubReq | // Only one request sent in the teat case
5931 // | |------------->|
5934 // | |<-------------|
5936 // |<----------------| |
5940 // | RESTSubDelReq | |
5941 // |---------------->| |
5943 // | RESTSubDelResp| |
5944 // |<----------------| |
5946 // | |------------->|
5949 // | |<-------------|
5952 //-----------------------------------------------------------------------------
5954 func TestRESTReportSubReqAndSubDelOk(t *testing.T) {
5955 const subReqCount int = 1
5957 RESTReportSubReqAndSubDelOk(t, subReqCount, testIndex)
5960 func RESTReportSubReqAndSubDelOk(t *testing.T, subReqCount int, testIndex int) {
5961 xapp.Logger.Debug("TEST: TestRESTReportSubReqAndSubDelOk with testIndex %v", testIndex)
5963 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
5964 Counter{cRestSubReqFromXapp, 1},
5965 Counter{cRestSubRespToXapp, 1},
5966 Counter{cSubReqToE2, uint64(subReqCount)},
5967 Counter{cSubRespFromE2, uint64(subReqCount)},
5968 Counter{cRestSubNotifToXapp, 1},
5969 Counter{cRestSubDelReqFromXapp, 1},
5970 Counter{cRestSubDelRespToXapp, 1},
5971 Counter{cSubDelReqToE2, uint64(subReqCount)},
5972 Counter{cSubDelRespFromE2, uint64(subReqCount)},
5976 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
5977 restSubId := xappConn1.SendRESTSubsReq(t, params)
5979 var e2SubsId []uint32
5980 for i := 0; i < subReqCount; i++ {
5981 crereq, cremsg := e2termConn1.RecvSubsReq(t)
5982 xappConn1.ExpectRESTNotification(t, restSubId)
5984 e2termConn1.SendSubsResp(t, crereq, cremsg)
5985 instanceId := xappConn1.WaitRESTNotification(t, restSubId)
5986 xapp.Logger.Debug("TEST: REST notification received e2SubsId=%v", instanceId)
5987 e2SubsId = append(e2SubsId, instanceId)
5988 resp, _ := xapp.Subscription.QuerySubscriptions()
5989 assert.Equal(t, resp[i].SubscriptionID, (int64)(instanceId))
5990 assert.Equal(t, resp[i].Meid, "RAN_NAME_1")
5991 assert.Equal(t, resp[i].ClientEndpoint, []string{"localhost:13560"})
5996 xappConn1.SendRESTSubsDelReq(t, &restSubId)
5998 for i := 0; i < subReqCount; i++ {
5999 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
6000 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
6003 // Wait that subs is cleaned
6004 for i := 0; i < subReqCount; i++ {
6005 mainCtrl.wait_subs_clean(t, e2SubsId[i], 10)
6008 xappConn1.TestMsgChanEmpty(t)
6009 e2termConn1.TestMsgChanEmpty(t)
6010 mainCtrl.wait_registry_empty(t, 10)
6011 mainCtrl.VerifyAllClean(t)
6012 mainCtrl.VerifyCounterValues(t)
6015 //-----------------------------------------------------------------------------
6016 // TestRESTTwoPolicySubReqAndSubDelOk
6019 // +-------+ +---------+ +---------+
6020 // | xapp | | submgr | | e2term |
6021 // +-------+ +---------+ +---------+
6024 // |---------------->| |
6026 // | RESTSubResp | |
6027 // |<----------------| |
6030 // | |------------->|
6033 // | |<-------------|
6035 // |<----------------| |
6037 // | |------------->|
6040 // | |<-------------|
6042 // |<----------------| |
6044 // | RESTSubDelReq | |
6045 // |---------------->| |
6047 // | RESTSubDelResp| |
6048 // |<----------------| |
6050 // | |------------->|
6053 // | |<-------------|
6056 // | |------------->|
6059 // | |<-------------|
6062 //-----------------------------------------------------------------------------
6064 func TestRESTTwoPolicySubReqAndSubDelOk(t *testing.T) {
6066 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
6067 Counter{cRestSubReqFromXapp, 1},
6068 Counter{cRestSubRespToXapp, 1},
6069 Counter{cSubReqToE2, 2},
6070 Counter{cSubRespFromE2, 2},
6071 Counter{cRestSubNotifToXapp, 2},
6072 Counter{cRestSubDelReqFromXapp, 1},
6073 Counter{cSubDelReqToE2, 2},
6074 Counter{cSubDelRespFromE2, 2},
6075 Counter{cRestSubDelRespToXapp, 1},
6078 const subReqCount int = 2
6081 params := xappConn1.GetRESTSubsReqPolicyParams(subReqCount)
6082 restSubId := xappConn1.SendRESTSubsReq(t, params)
6083 e2SubsIds := sendAndReceiveMultipleE2SubReqs(t, subReqCount, xappConn1, e2termConn1, restSubId)
6085 assert.Equal(t, len(e2SubsIds), 2)
6088 xappConn1.SendRESTSubsDelReq(t, &restSubId)
6089 sendAndReceiveMultipleE2DelReqs(t, e2SubsIds, e2termConn1)
6091 xappConn1.TestMsgChanEmpty(t)
6092 e2termConn1.TestMsgChanEmpty(t)
6093 mainCtrl.wait_registry_empty(t, 10)
6095 mainCtrl.VerifyCounterValues(t)
6096 mainCtrl.VerifyAllClean(t)
6099 //-----------------------------------------------------------------------------
6100 // TestRESTPolicySubReqAndSubDelOk19E2Subs
6103 // +-------+ +---------+ +---------+
6104 // | xapp | | submgr | | e2term |
6105 // +-------+ +---------+ +---------+
6108 // |---------------->| |
6110 // | RESTSubResp | |
6111 // |<----------------| |
6114 // | |------------->|
6115 // | | | E2 subscription x 19
6117 // | |<-------------|
6119 // |<----------------| |
6121 // | RESTSubDelReq | |
6122 // |---------------->| |
6124 // | RESTSubDelResp| |
6125 // |<----------------| |
6126 // | | SubDelReq | ------
6127 // | |------------->|
6128 // | | | E2 subscription delete x 19
6130 // | |<-------------|
6134 //-----------------------------------------------------------------------------
6136 func TestRESTPolicySubReqAndSubDelOk19E2Subs(t *testing.T) {
6138 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
6139 Counter{cRestSubReqFromXapp, 1},
6140 Counter{cRestSubRespToXapp, 1},
6141 Counter{cSubReqToE2, 19},
6142 Counter{cSubRespFromE2, 19},
6143 Counter{cRestSubNotifToXapp, 19},
6144 Counter{cRestSubDelReqFromXapp, 1},
6145 Counter{cSubDelReqToE2, 19},
6146 Counter{cSubDelRespFromE2, 19},
6147 Counter{cRestSubDelRespToXapp, 1},
6150 const subReqCount int = 19
6152 params := xappConn1.GetRESTSubsReqPolicyParams(subReqCount)
6153 restSubId := xappConn1.SendRESTSubsReq(t, params)
6154 e2SubsIds := sendAndReceiveMultipleE2SubReqs(t, subReqCount, xappConn1, e2termConn1, restSubId)
6156 assert.Equal(t, len(e2SubsIds), 19)
6158 xappConn1.SendRESTSubsDelReq(t, &restSubId)
6159 sendAndReceiveMultipleE2DelReqs(t, e2SubsIds, e2termConn1)
6161 xappConn1.TestMsgChanEmpty(t)
6162 e2termConn1.TestMsgChanEmpty(t)
6163 mainCtrl.wait_registry_empty(t, 10)
6165 mainCtrl.VerifyCounterValues(t)
6166 mainCtrl.VerifyAllClean(t)
6169 //-----------------------------------------------------------------------------
6170 // TestRESTTwoPolicySubReqAndSubDelOk
6173 // +-------+ +---------+ +---------+
6174 // | xapp | | submgr | | e2term |
6175 // +-------+ +---------+ +---------+
6178 // |---------------->| |
6180 // | RESTSubResp | |
6181 // |<----------------| |
6184 // | |------------->|
6187 // | |<-------------|
6189 // |<----------------| |
6191 // | |------------->|
6194 // | |<-------------|
6196 // |<----------------| |
6198 // | RESTSubDelReq | |
6199 // |---------------->| |
6201 // | RESTSubDelResp| |
6202 // |<----------------| |
6204 // | |------------->|
6207 // | |<-------------|
6210 // | |------------->|
6213 // | |<-------------|
6216 //-----------------------------------------------------------------------------
6218 func TestRESTTwoReportSubReqAndSubDelOk(t *testing.T) {
6222 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
6223 Counter{cRestSubReqFromXapp, 1},
6224 Counter{cRestSubRespToXapp, 1},
6225 Counter{cSubReqToE2, uint64(subReqCount)},
6226 Counter{cSubRespFromE2, uint64(subReqCount)},
6227 Counter{cRestSubNotifToXapp, uint64(subReqCount)},
6228 Counter{cRestSubDelReqFromXapp, 1},
6229 Counter{cSubDelReqToE2, uint64(subReqCount)},
6230 Counter{cSubDelRespFromE2, uint64(subReqCount)},
6231 Counter{cRestSubDelRespToXapp, 1},
6235 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
6236 restSubId := xappConn1.SendRESTSubsReq(t, params)
6237 e2SubsIds := sendAndReceiveMultipleE2SubReqs(t, subReqCount, xappConn1, e2termConn1, restSubId)
6239 assert.Equal(t, len(e2SubsIds), subReqCount)
6242 xappConn1.SendRESTSubsDelReq(t, &restSubId)
6243 sendAndReceiveMultipleE2DelReqs(t, e2SubsIds, e2termConn1)
6245 xappConn1.TestMsgChanEmpty(t)
6246 e2termConn1.TestMsgChanEmpty(t)
6247 mainCtrl.wait_registry_empty(t, 10)
6249 mainCtrl.VerifyCounterValues(t)
6250 mainCtrl.VerifyAllClean(t)
6253 //-----------------------------------------------------------------------------
6254 // TestRESTTwoReportSubReqAndSubDelOkNoActParams
6257 // +-------+ +---------+ +---------+
6258 // | xapp | | submgr | | e2term |
6259 // +-------+ +---------+ +---------+
6262 // |---------------->| |
6264 // | RESTSubResp | |
6265 // |<----------------| |
6268 // | |------------->|
6271 // | |<-------------|
6273 // |<----------------| |
6275 // | |------------->|
6278 // | |<-------------|
6280 // |<----------------| |
6282 // | RESTSubDelReq | |
6283 // |---------------->| |
6285 // | RESTSubDelResp| |
6286 // |<----------------| |
6288 // | |------------->|
6291 // | |<-------------|
6294 // | |------------->|
6297 // | |<-------------|
6300 //-----------------------------------------------------------------------------
6302 func TestRESTTwoReportSubReqAndSubDelOkNoActParams(t *testing.T) {
6306 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
6307 Counter{cRestSubReqFromXapp, 1},
6308 Counter{cRestSubRespToXapp, 1},
6309 Counter{cSubReqToE2, uint64(subReqCount)},
6310 Counter{cSubRespFromE2, uint64(subReqCount)},
6311 Counter{cRestSubNotifToXapp, uint64(subReqCount)},
6312 Counter{cRestSubDelReqFromXapp, 1},
6313 Counter{cSubDelReqToE2, uint64(subReqCount)},
6314 Counter{cSubDelRespFromE2, uint64(subReqCount)},
6315 Counter{cRestSubDelRespToXapp, 1},
6319 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
6320 restSubId := xappConn1.SendRESTSubsReq(t, params)
6321 e2SubsIds := sendAndReceiveMultipleE2SubReqs(t, subReqCount, xappConn1, e2termConn1, restSubId)
6323 assert.Equal(t, len(e2SubsIds), subReqCount)
6326 xappConn1.SendRESTSubsDelReq(t, &restSubId)
6327 sendAndReceiveMultipleE2DelReqs(t, e2SubsIds, e2termConn1)
6329 xappConn1.TestMsgChanEmpty(t)
6330 e2termConn1.TestMsgChanEmpty(t)
6331 mainCtrl.wait_registry_empty(t, 10)
6333 mainCtrl.VerifyCounterValues(t)
6334 mainCtrl.VerifyAllClean(t)
6337 //-----------------------------------------------------------------------------
6338 // TestRESTReportSubReqAndSubDelOk19E2Subs
6341 // +-------+ +---------+ +---------+
6342 // | xapp | | submgr | | e2term |
6343 // +-------+ +---------+ +---------+
6346 // |---------------->| |
6348 // | RESTSubResp | |
6349 // |<----------------| |
6352 // | |------------->|
6353 // | | | E2 subscription x 19
6355 // | |<-------------|
6357 // |<----------------| |
6359 // | RESTSubDelReq | |
6360 // |---------------->| |
6362 // | RESTSubDelResp| |
6363 // |<----------------| |
6364 // | | SubDelReq | ------
6365 // | |------------->|
6366 // | | | E2 subscription delete x 19
6368 // | |<-------------|
6372 //-----------------------------------------------------------------------------
6374 func TestRESTReportSubReqAndSubDelOk19E2Subs(t *testing.T) {
6378 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
6379 Counter{cRestSubReqFromXapp, 1},
6380 Counter{cRestSubRespToXapp, 1},
6381 Counter{cSubReqToE2, uint64(subReqCount)},
6382 Counter{cSubRespFromE2, uint64(subReqCount)},
6383 Counter{cRestSubNotifToXapp, uint64(subReqCount)},
6384 Counter{cRestSubDelReqFromXapp, 1},
6385 Counter{cSubDelReqToE2, uint64(subReqCount)},
6386 Counter{cSubDelRespFromE2, uint64(subReqCount)},
6387 Counter{cRestSubDelRespToXapp, 1},
6391 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
6392 restSubId := xappConn1.SendRESTSubsReq(t, params)
6393 e2SubsIds := sendAndReceiveMultipleE2SubReqs(t, subReqCount, xappConn1, e2termConn1, restSubId)
6395 assert.Equal(t, len(e2SubsIds), subReqCount)
6398 xappConn1.SendRESTSubsDelReq(t, &restSubId)
6399 sendAndReceiveMultipleE2DelReqs(t, e2SubsIds, e2termConn1)
6401 xappConn1.TestMsgChanEmpty(t)
6402 e2termConn1.TestMsgChanEmpty(t)
6403 mainCtrl.wait_registry_empty(t, 10)
6405 mainCtrl.VerifyCounterValues(t)
6406 mainCtrl.VerifyAllClean(t)
6409 //-----------------------------------------------------------------------------
6410 // TestRESTSubReqReportSameActionDiffEventTriggerDefinitionLen
6413 // +-------+ +-------+ +---------+ +---------+
6414 // | xapp2 | | xapp1 | | submgr | | e2term |
6415 // +-------+ +-------+ +---------+ +---------+
6417 // | | RESTSubReq1 | |
6418 // | |------------->| |
6419 // | | RESTSubResp1 | |
6420 // | |<-------------| |
6423 // | | |------------->|
6425 // | RESTSubReq2 | |
6426 // |------------------------>| |
6427 // | RESTSubResp2 | |
6428 // |<------------------------| |
6431 // | | |------------->|
6434 // | | |<-------------|
6435 // | | RESTNotif1 | |
6436 // | |<-------------| |
6439 // | | |<-------------|
6441 // |<------------------------| |
6443 // | | [SUBS 1 DELETE] |
6445 // | | [SUBS 2 DELETE] |
6448 //-----------------------------------------------------------------------------
6450 func TestRESTSubReqReportSameActionDiffEventTriggerDefinitionLen(t *testing.T) {
6452 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
6453 Counter{cRestSubReqFromXapp, 2},
6454 Counter{cRestSubRespToXapp, 2},
6455 Counter{cSubReqToE2, 2},
6456 Counter{cSubRespFromE2, 2},
6457 Counter{cRestSubNotifToXapp, 2},
6458 Counter{cRestSubDelReqFromXapp, 2},
6459 Counter{cSubDelReqToE2, 2},
6460 Counter{cSubDelRespFromE2, 2},
6461 Counter{cRestSubDelRespToXapp, 2},
6465 var params *teststube2ap.RESTSubsReqParams = nil
6468 restSubId1, e2SubsId1 := createSubscription(t, xappConn1, e2termConn1, params)
6469 xapp.Logger.Debug("Send REST subscriber request for subscriberId : %v", restSubId1)
6471 queryXappSubscription(t, int64(e2SubsId1), "RAN_NAME_1", []string{"localhost:13560"})
6474 params = xappConn2.GetRESTSubsReqReportParams(subReqCount)
6475 params.SetMeid("RAN_NAME_1")
6476 eventTriggerDefinition := []int64{1234, 1}
6477 params.SetSubEventTriggerDefinition(eventTriggerDefinition)
6479 restSubId2 := xappConn2.SendRESTSubsReq(t, params)
6480 xapp.Logger.Debug("Send REST subscriber request for subscriberId : %v", restSubId2)
6481 crereq, cremsg := e2termConn1.RecvSubsReq(t)
6482 xappConn2.ExpectRESTNotification(t, restSubId2)
6483 e2termConn1.SendSubsResp(t, crereq, cremsg)
6484 e2SubsId2 := xappConn2.WaitRESTNotification(t, restSubId2)
6486 deleteXapp1Subscription(t, &restSubId1)
6487 deleteXapp2Subscription(t, &restSubId2)
6489 waitSubsCleanup(t, e2SubsId1, 10)
6490 waitSubsCleanup(t, e2SubsId2, 10)
6492 mainCtrl.VerifyCounterValues(t)
6493 mainCtrl.VerifyAllClean(t)
6496 //-----------------------------------------------------------------------------
6497 // TestRESTSubReqReportSameActionDiffActionListLen
6500 // +-------+ +-------+ +---------+ +---------+
6501 // | xapp2 | | xapp1 | | submgr | | e2term |
6502 // +-------+ +-------+ +---------+ +---------+
6504 // | | RESTSubReq1 | |
6505 // | |------------->| |
6506 // | | RESTSubResp1 | |
6507 // | |<-------------| |
6510 // | | |------------->|
6512 // | RESTSubReq2 | |
6513 // |------------------------>| |
6514 // | RESTSubResp2 | |
6515 // |<------------------------| |
6518 // | | |------------->|
6521 // | | |<-------------|
6522 // | | RESTNotif1 | |
6523 // | |<-------------| |
6526 // | | |<-------------|
6528 // |<------------------------| |
6530 // | | [SUBS 1 DELETE] |
6532 // | | [SUBS 2 DELETE] |
6535 //-----------------------------------------------------------------------------
6537 func TestRESTSubReqReportSameActionDiffActionListLen(t *testing.T) {
6539 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
6540 Counter{cRestSubReqFromXapp, 2},
6541 Counter{cRestSubRespToXapp, 2},
6542 Counter{cSubReqToE2, 2},
6543 Counter{cSubRespFromE2, 2},
6544 Counter{cRestSubNotifToXapp, 2},
6545 Counter{cRestSubDelReqFromXapp, 2},
6546 Counter{cSubDelReqToE2, 2},
6547 Counter{cSubDelRespFromE2, 2},
6548 Counter{cRestSubDelRespToXapp, 2},
6552 var params *teststube2ap.RESTSubsReqParams = nil
6555 restSubId1, e2SubsId1 := createSubscription(t, xappConn1, e2termConn1, params)
6556 xapp.Logger.Debug("Send REST subscriber request for subscriberId : %v", restSubId1)
6558 queryXappSubscription(t, int64(e2SubsId1), "RAN_NAME_1", []string{"localhost:13560"})
6561 params = xappConn2.GetRESTSubsReqReportParams(subReqCount)
6562 params.SetMeid("RAN_NAME_1")
6564 actionId := int64(1)
6565 actionType := "report"
6566 actionDefinition := []int64{5678, 1}
6567 subsequestActionType := "continue"
6568 timeToWait := "w10ms"
6569 params.AppendActionToActionToBeSetupList(actionId, actionType, actionDefinition, subsequestActionType, timeToWait)
6571 restSubId2 := xappConn2.SendRESTSubsReq(t, params)
6572 xapp.Logger.Debug("Send REST subscriber request for subscriberId : %v", restSubId2)
6573 crereq, cremsg := e2termConn1.RecvSubsReq(t)
6574 xappConn2.ExpectRESTNotification(t, restSubId2)
6575 e2termConn1.SendSubsResp(t, crereq, cremsg)
6576 e2SubsId2 := xappConn2.WaitRESTNotification(t, restSubId2)
6578 deleteXapp1Subscription(t, &restSubId1)
6579 deleteXapp2Subscription(t, &restSubId2)
6581 waitSubsCleanup(t, e2SubsId1, 10)
6582 waitSubsCleanup(t, e2SubsId2, 10)
6584 mainCtrl.VerifyCounterValues(t)
6585 mainCtrl.VerifyAllClean(t)
6588 //-----------------------------------------------------------------------------
6589 // TestRESTSubReqReportSameActionDiffActionID
6592 // +-------+ +-------+ +---------+ +---------+
6593 // | xapp2 | | xapp1 | | submgr | | e2term |
6594 // +-------+ +-------+ +---------+ +---------+
6596 // | | RESTSubReq1 | |
6597 // | |------------->| |
6598 // | | RESTSubResp1 | |
6599 // | |<-------------| |
6602 // | | |------------->|
6604 // | RESTSubReq2 | |
6605 // |------------------------>| |
6606 // | RESTSubResp2 | |
6607 // |<------------------------| |
6610 // | | |------------->|
6613 // | | |<-------------|
6614 // | | RESTNotif1 | |
6615 // | |<-------------| |
6618 // | | |<-------------|
6620 // |<------------------------| |
6622 // | | [SUBS 1 DELETE] |
6624 // | | [SUBS 2 DELETE] |
6627 //-----------------------------------------------------------------------------
6629 func TestRESTSubReqReportSameActionDiffActionID(t *testing.T) {
6631 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
6632 Counter{cRestSubReqFromXapp, 2},
6633 Counter{cRestSubRespToXapp, 2},
6634 Counter{cSubReqToE2, 2},
6635 Counter{cSubRespFromE2, 2},
6636 Counter{cRestSubNotifToXapp, 2},
6637 Counter{cRestSubDelReqFromXapp, 2},
6638 Counter{cSubDelReqToE2, 2},
6639 Counter{cSubDelRespFromE2, 2},
6640 Counter{cRestSubDelRespToXapp, 2},
6644 var params *teststube2ap.RESTSubsReqParams = nil
6647 restSubId1, e2SubsId1 := createSubscription(t, xappConn1, e2termConn1, params)
6648 xapp.Logger.Debug("Send REST subscriber request for subscriberId : %v", restSubId1)
6650 queryXappSubscription(t, int64(e2SubsId1), "RAN_NAME_1", []string{"localhost:13560"})
6653 params = xappConn2.GetRESTSubsReqReportParams(subReqCount)
6654 params.SetMeid("RAN_NAME_1")
6655 params.SetSubActionIDs(int64(2))
6657 restSubId2 := xappConn2.SendRESTSubsReq(t, params)
6658 xapp.Logger.Debug("Send REST subscriber request for subscriberId : %v", restSubId2)
6659 crereq, cremsg := e2termConn1.RecvSubsReq(t)
6660 xappConn2.ExpectRESTNotification(t, restSubId2)
6661 e2termConn1.SendSubsResp(t, crereq, cremsg)
6662 e2SubsId2 := xappConn2.WaitRESTNotification(t, restSubId2)
6664 deleteXapp1Subscription(t, &restSubId1)
6665 deleteXapp2Subscription(t, &restSubId2)
6667 waitSubsCleanup(t, e2SubsId1, 10)
6668 waitSubsCleanup(t, e2SubsId2, 10)
6670 mainCtrl.VerifyCounterValues(t)
6671 mainCtrl.VerifyAllClean(t)
6674 //-----------------------------------------------------------------------------
6675 // TestRESTSubReqDiffActionType
6678 // +-------+ +-------+ +---------+ +---------+
6679 // | xapp2 | | xapp1 | | submgr | | e2term |
6680 // +-------+ +-------+ +---------+ +---------+
6682 // | | RESTSubReq1 | |
6683 // | |------------->| |
6684 // | | RESTSubResp1 | |
6685 // | |<-------------| |
6688 // | | |------------->|
6690 // | RESTSubReq2 | |
6691 // |------------------------>| |
6692 // | RESTSubResp2 | |
6693 // |<------------------------| |
6696 // | | |------------->|
6699 // | | |<-------------|
6700 // | | RESTNotif1 | |
6701 // | |<-------------| |
6704 // | | |<-------------|
6706 // |<------------------------| |
6708 // | | [SUBS 1 DELETE] |
6710 // | | [SUBS 2 DELETE] |
6713 //-----------------------------------------------------------------------------
6715 func TestRESTSubReqDiffActionType(t *testing.T) {
6717 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
6718 Counter{cRestSubReqFromXapp, 2},
6719 Counter{cRestSubRespToXapp, 2},
6720 Counter{cSubReqToE2, 2},
6721 Counter{cSubRespFromE2, 2},
6722 Counter{cRestSubNotifToXapp, 2},
6723 Counter{cRestSubDelReqFromXapp, 2},
6724 Counter{cSubDelReqToE2, 2},
6725 Counter{cSubDelRespFromE2, 2},
6726 Counter{cRestSubDelRespToXapp, 2},
6729 const e2Timeout int64 = 2
6730 const e2RetryCount int64 = 2
6731 const routingNeeded bool = true
6734 params := xappConn1.GetRESTSubsReqPolicyParams(subReqCount)
6735 params.SetSubscriptionDirectives(e2Timeout, e2RetryCount, routingNeeded)
6738 restSubId1, e2SubsId1 := createSubscription(t, xappConn1, e2termConn1, params)
6739 xapp.Logger.Debug("Send REST subscriber request for subscriberId : %v", restSubId1)
6741 queryXappSubscription(t, int64(e2SubsId1), "RAN_NAME_1", []string{"localhost:13560"})
6744 params = xappConn2.GetRESTSubsReqReportParams(subReqCount)
6745 params.SetSubscriptionDirectives(e2Timeout, e2RetryCount, routingNeeded)
6746 params.SetMeid("RAN_NAME_1")
6748 restSubId2 := xappConn2.SendRESTSubsReq(t, params)
6749 xapp.Logger.Debug("Send REST subscriber request for subscriberId : %v", restSubId2)
6750 crereq, cremsg := e2termConn1.RecvSubsReq(t)
6751 xappConn2.ExpectRESTNotification(t, restSubId2)
6752 e2termConn1.SendSubsResp(t, crereq, cremsg)
6753 e2SubsId2 := xappConn2.WaitRESTNotification(t, restSubId2)
6755 deleteXapp1Subscription(t, &restSubId1)
6756 deleteXapp2Subscription(t, &restSubId2)
6758 waitSubsCleanup(t, e2SubsId1, 10)
6759 waitSubsCleanup(t, e2SubsId2, 10)
6761 mainCtrl.VerifyCounterValues(t)
6762 mainCtrl.VerifyAllClean(t)
6765 //-----------------------------------------------------------------------------
6766 // TestRESTSubReqPolicyAndSubDelOkSameAction
6769 // +-------+ +-------+ +---------+ +---------+
6770 // | xapp2 | | xapp1 | | submgr | | e2term |
6771 // +-------+ +-------+ +---------+ +---------+
6773 // | | RESTSubReq1 | |
6774 // | |------------->| |
6775 // | | RESTSubResp1 | |
6776 // | |<-------------| |
6779 // | | |------------->|
6781 // | RESTSubReq2 | |
6782 // |------------------------>| |
6783 // | RESTSubResp2 | |
6784 // |<------------------------| |
6787 // | | |------------->|
6790 // | | |<-------------|
6791 // | | RESTNotif1 | |
6792 // | |<-------------| |
6795 // | | |<-------------|
6797 // |<------------------------| |
6799 // | | [SUBS 1 DELETE] |
6801 // | | [SUBS 2 DELETE] |
6804 //-----------------------------------------------------------------------------
6806 func TestRESTSubReqPolicyAndSubDelOkSameAction(t *testing.T) {
6808 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
6809 Counter{cRestSubReqFromXapp, 2},
6810 Counter{cRestSubRespToXapp, 2},
6811 Counter{cSubReqToE2, 2},
6812 Counter{cSubRespFromE2, 2},
6813 Counter{cRestSubNotifToXapp, 2},
6814 Counter{cRestSubDelReqFromXapp, 2},
6815 Counter{cSubDelReqToE2, 2},
6816 Counter{cSubDelRespFromE2, 2},
6817 Counter{cRestSubDelRespToXapp, 2},
6820 const e2Timeout int64 = 2
6821 const e2RetryCount int64 = 2
6822 const routingNeeded bool = true
6825 params := xappConn1.GetRESTSubsReqPolicyParams(subReqCount)
6826 params.SetSubscriptionDirectives(e2Timeout, e2RetryCount, routingNeeded)
6829 restSubId1, e2SubsId1 := createSubscription(t, xappConn1, e2termConn1, params)
6830 xapp.Logger.Debug("Send REST subscriber request for subscriberId : %v", restSubId1)
6832 queryXappSubscription(t, int64(e2SubsId1), "RAN_NAME_1", []string{"localhost:13560"})
6835 params = xappConn2.GetRESTSubsReqPolicyParams(subReqCount)
6836 params.SetSubscriptionDirectives(e2Timeout, e2RetryCount, routingNeeded)
6837 params.SetMeid("RAN_NAME_1")
6839 restSubId2 := xappConn2.SendRESTSubsReq(t, params)
6840 xapp.Logger.Debug("Send REST subscriber request for subscriberId : %v", restSubId2)
6841 crereq, cremsg := e2termConn1.RecvSubsReq(t)
6842 xappConn2.ExpectRESTNotification(t, restSubId2)
6843 e2termConn1.SendSubsResp(t, crereq, cremsg)
6844 e2SubsId2 := xappConn2.WaitRESTNotification(t, restSubId2)
6846 deleteXapp1Subscription(t, &restSubId1)
6847 deleteXapp2Subscription(t, &restSubId2)
6849 waitSubsCleanup(t, e2SubsId1, 10)
6850 waitSubsCleanup(t, e2SubsId2, 10)
6852 mainCtrl.VerifyCounterValues(t)
6853 mainCtrl.VerifyAllClean(t)
6856 //-----------------------------------------------------------------------------
6857 // TestRESTSubReqReportSameActionDiffActionDefinitionLen
6860 // +-------+ +-------+ +---------+ +---------+
6861 // | xapp2 | | xapp1 | | submgr | | e2term |
6862 // +-------+ +-------+ +---------+ +---------+
6864 // | | RESTSubReq1 | |
6865 // | |------------->| |
6866 // | | RESTSubResp1 | |
6867 // | |<-------------| |
6870 // | | |------------->|
6872 // | RESTSubReq2 | |
6873 // |------------------------>| |
6874 // | RESTSubResp2 | |
6875 // |<------------------------| |
6878 // | | |------------->|
6881 // | | |<-------------|
6882 // | | RESTNotif1 | |
6883 // | |<-------------| |
6886 // | | |<-------------|
6888 // |<------------------------| |
6890 // | | [SUBS 1 DELETE] |
6892 // | | [SUBS 2 DELETE] |
6895 //-----------------------------------------------------------------------------
6897 func TestRESTSubReqReportSameActionDiffActionDefinitionLen(t *testing.T) {
6899 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
6900 Counter{cRestSubReqFromXapp, 2},
6901 Counter{cRestSubRespToXapp, 2},
6902 Counter{cSubReqToE2, 2},
6903 Counter{cSubRespFromE2, 2},
6904 Counter{cRestSubNotifToXapp, 2},
6905 Counter{cRestSubDelReqFromXapp, 2},
6906 Counter{cSubDelReqToE2, 2},
6907 Counter{cSubDelRespFromE2, 2},
6908 Counter{cRestSubDelRespToXapp, 2},
6912 var params *teststube2ap.RESTSubsReqParams = nil
6915 restSubId1, e2SubsId1 := createSubscription(t, xappConn1, e2termConn1, params)
6916 xapp.Logger.Debug("Send REST subscriber request for subscriberId : %v", restSubId1)
6918 queryXappSubscription(t, int64(e2SubsId1), "RAN_NAME_1", []string{"localhost:13560"})
6921 params = xappConn2.GetRESTSubsReqReportParams(subReqCount)
6922 params.SetMeid("RAN_NAME_1")
6923 actionDefinition := []int64{5678, 1}
6924 params.SetSubActionDefinition(actionDefinition)
6926 restSubId2 := xappConn2.SendRESTSubsReq(t, params)
6927 xapp.Logger.Debug("Send REST subscriber request for subscriberId : %v", restSubId2)
6928 crereq, cremsg := e2termConn1.RecvSubsReq(t)
6929 xappConn2.ExpectRESTNotification(t, restSubId2)
6930 e2termConn1.SendSubsResp(t, crereq, cremsg)
6931 e2SubsId2 := xappConn2.WaitRESTNotification(t, restSubId2)
6933 deleteXapp1Subscription(t, &restSubId1)
6934 deleteXapp2Subscription(t, &restSubId2)
6936 waitSubsCleanup(t, e2SubsId1, 10)
6937 waitSubsCleanup(t, e2SubsId2, 10)
6939 mainCtrl.VerifyCounterValues(t)
6940 mainCtrl.VerifyAllClean(t)
6943 //-----------------------------------------------------------------------------
6944 // TestRESTSubReqReportSameActionDiffActionDefinitionContents
6947 // +-------+ +-------+ +---------+ +---------+
6948 // | xapp2 | | xapp1 | | submgr | | e2term |
6949 // +-------+ +-------+ +---------+ +---------+
6951 // | | RESTSubReq1 | |
6952 // | |------------->| |
6953 // | | RESTSubResp1 | |
6954 // | |<-------------| |
6957 // | | |------------->|
6959 // | RESTSubReq2 | |
6960 // |------------------------>| |
6961 // | RESTSubResp2 | |
6962 // |<------------------------| |
6965 // | | |------------->|
6968 // | | |<-------------|
6969 // | | RESTNotif1 | |
6970 // | |<-------------| |
6973 // | | |<-------------|
6975 // |<------------------------| |
6977 // | | [SUBS 1 DELETE] |
6979 // | | [SUBS 2 DELETE] |
6982 //-----------------------------------------------------------------------------
6984 func TestRESTSubReqReportSameActionDiffActionDefinitionContents(t *testing.T) {
6986 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
6987 Counter{cRestSubReqFromXapp, 2},
6988 Counter{cRestSubRespToXapp, 2},
6989 Counter{cSubReqToE2, 2},
6990 Counter{cSubRespFromE2, 2},
6991 Counter{cRestSubNotifToXapp, 2},
6992 Counter{cRestSubDelReqFromXapp, 2},
6993 Counter{cSubDelReqToE2, 2},
6994 Counter{cSubDelRespFromE2, 2},
6995 Counter{cRestSubDelRespToXapp, 2},
6999 var params *teststube2ap.RESTSubsReqParams = nil
7002 restSubId1, e2SubsId1 := createSubscription(t, xappConn1, e2termConn1, params)
7003 xapp.Logger.Debug("Send REST subscriber request for subscriberId : %v", restSubId1)
7005 queryXappSubscription(t, int64(e2SubsId1), "RAN_NAME_1", []string{"localhost:13560"})
7008 params = xappConn2.GetRESTSubsReqReportParams(subReqCount)
7009 params.SetMeid("RAN_NAME_1")
7010 actionDefinition := []int64{56782}
7011 params.SetSubActionDefinition(actionDefinition)
7013 restSubId2 := xappConn2.SendRESTSubsReq(t, params)
7014 xapp.Logger.Debug("Send REST subscriber request for subscriberId : %v", restSubId2)
7015 crereq, cremsg := e2termConn1.RecvSubsReq(t)
7016 xappConn2.ExpectRESTNotification(t, restSubId2)
7017 e2termConn1.SendSubsResp(t, crereq, cremsg)
7018 e2SubsId2 := xappConn2.WaitRESTNotification(t, restSubId2)
7020 deleteXapp1Subscription(t, &restSubId1)
7021 deleteXapp2Subscription(t, &restSubId2)
7023 waitSubsCleanup(t, e2SubsId1, 10)
7024 waitSubsCleanup(t, e2SubsId2, 10)
7026 mainCtrl.VerifyCounterValues(t)
7027 mainCtrl.VerifyAllClean(t)
7030 //-----------------------------------------------------------------------------
7031 // TestRESTSubReqReportSameActionDiffSubsAction
7034 // +-------+ +-------+ +---------+ +---------+
7035 // | xapp2 | | xapp1 | | submgr | | e2term |
7036 // +-------+ +-------+ +---------+ +---------+
7038 // | | RESTSubReq1 | |
7039 // | |------------->| |
7040 // | | RESTSubResp1 | |
7041 // | |<-------------| |
7044 // | | |------------->|
7046 // | RESTSubReq2 | |
7047 // |------------------------>| |
7048 // | RESTSubResp2 | |
7049 // |<------------------------| |
7052 // | | |------------->|
7055 // | | |<-------------|
7056 // | | RESTNotif1 | |
7057 // | |<-------------| |
7060 // | | |<-------------|
7062 // |<------------------------| |
7064 // | | [SUBS 1 DELETE] |
7066 // | | [SUBS 2 DELETE] |
7069 //-----------------------------------------------------------------------------
7071 func TestRESTSubReqReportSameActionDiffSubsAction(t *testing.T) {
7073 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
7074 Counter{cRestSubReqFromXapp, 2},
7075 Counter{cRestSubRespToXapp, 2},
7076 Counter{cSubReqToE2, 2},
7077 Counter{cSubRespFromE2, 2},
7078 Counter{cRestSubNotifToXapp, 2},
7079 Counter{cRestSubDelReqFromXapp, 2},
7080 Counter{cSubDelReqToE2, 2},
7081 Counter{cSubDelRespFromE2, 2},
7082 Counter{cRestSubDelRespToXapp, 2},
7086 var params *teststube2ap.RESTSubsReqParams = nil
7089 restSubId1, e2SubsId1 := createSubscription(t, xappConn1, e2termConn1, params)
7090 xapp.Logger.Debug("Send REST subscriber request for subscriberId : %v", restSubId1)
7092 queryXappSubscription(t, int64(e2SubsId1), "RAN_NAME_1", []string{"localhost:13560"})
7095 params = xappConn2.GetRESTSubsReqReportParams(subReqCount)
7096 params.SetMeid("RAN_NAME_1")
7097 params.SetTimeToWait("w200ms")
7098 restSubId2 := xappConn2.SendRESTSubsReq(t, params)
7099 xapp.Logger.Debug("Send REST subscriber request for subscriberId : %v", restSubId2)
7100 crereq, cremsg := e2termConn1.RecvSubsReq(t)
7101 xappConn2.ExpectRESTNotification(t, restSubId2)
7102 e2termConn1.SendSubsResp(t, crereq, cremsg)
7103 e2SubsId2 := xappConn2.WaitRESTNotification(t, restSubId2)
7105 deleteXapp1Subscription(t, &restSubId1)
7106 deleteXapp2Subscription(t, &restSubId2)
7108 waitSubsCleanup(t, e2SubsId1, 10)
7109 waitSubsCleanup(t, e2SubsId2, 10)
7111 mainCtrl.VerifyCounterValues(t)
7112 mainCtrl.VerifyAllClean(t)
7115 //-----------------------------------------------------------------------------
7116 // TestRESTUnpackSubscriptionResponseDecodeFail
7119 // +-------+ +---------+ +---------+
7120 // | xapp | | submgr | | e2term |
7121 // +-------+ +---------+ +---------+
7124 // |---------------->| |
7126 // | RESTSubResp | |
7127 // |<----------------| |
7130 // | |------------->|
7132 // | | SubResp | ASN.1 decode fails
7133 // | |<-------------| Decode failed. More data needed. This will result timer expiry and resending
7136 // | |------------->|
7138 // | | SubFail | Duplicated action
7139 // | |<-------------|
7140 // | RESTNotif (fail)| |
7141 // |<----------------| |
7143 // | [SUBS DELETE] |
7146 //-----------------------------------------------------------------------------
7148 func TestRESTUnpackSubscriptionResponseDecodeFail(t *testing.T) {
7150 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
7151 Counter{cRestSubReqFromXapp, 1},
7152 Counter{cRestSubRespToXapp, 1},
7153 Counter{cSubReqToE2, 1},
7154 Counter{cSubReqTimerExpiry, 1},
7155 Counter{cSubReReqToE2, 1},
7156 Counter{cSubRespFromE2, 1},
7157 Counter{cSubFailFromE2, 1},
7158 Counter{cRestSubFailNotifToXapp, 1},
7159 Counter{cRestSubDelReqFromXapp, 1},
7160 Counter{cRestSubDelRespToXapp, 1},
7163 const subReqCount int = 1
7166 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
7167 restSubId := xappConn1.SendRESTSubsReq(t, params)
7169 crereq, cremsg := e2termConn1.RecvSubsReq(t)
7170 // Decode of this response fails which will result resending original request
7171 e2termConn1.SendInvalidE2Asn1Resp(t, cremsg, xapp.RIC_SUB_RESP)
7173 _, cremsg = e2termConn1.RecvSubsReq(t)
7175 xappConn1.ExpectRESTNotificationNok(t, restSubId, "allFail")
7177 // Subscription already created in E2 Node.
7178 fparams := &teststube2ap.E2StubSubsFailParams{}
7180 fparams.SetCauseVal(0, 1, 3) // CauseRIC / duplicate-action
7181 e2termConn1.SendSubsFail(t, fparams, cremsg)
7183 instanceId := xappConn1.WaitRESTNotification(t, restSubId)
7184 xapp.Logger.Debug("TEST: REST notification received e2SubsId=%v", instanceId)
7186 xappConn1.SendRESTSubsDelReq(t, &restSubId)
7188 // Wait that subs is cleaned
7189 mainCtrl.wait_subs_clean(t, crereq.RequestId.InstanceId, 10)
7191 xappConn1.TestMsgChanEmpty(t)
7192 e2termConn1.TestMsgChanEmpty(t)
7193 mainCtrl.wait_registry_empty(t, 10)
7194 mainCtrl.VerifyAllClean(t)
7195 mainCtrl.VerifyCounterValues(t)
7198 //-----------------------------------------------------------------------------
7199 // TestRESTUnpackSubscriptionResponseUnknownInstanceId
7202 // +-------+ +---------+ +---------+
7203 // | xapp | | submgr | | e2term |
7204 // +-------+ +---------+ +---------+
7207 // |---------------->| |
7209 // | RESTSubResp | |
7210 // |<----------------| |
7213 // | |------------->|
7215 // | | SubResp | Unknown instanceId
7216 // | |<-------------| No valid subscription found with subIds [0]
7219 // | |------------->|
7221 // | | SubFail | Duplicated action
7222 // | |<-------------| No valid subscription found with subIds [0]
7223 // | RESTNotif (fail)| |
7224 // |<----------------| |
7226 // | |------------->|
7229 // | |<-------------|
7231 // | [SUBS DELETE] |
7234 //-----------------------------------------------------------------------------
7236 func TestRESTUnpackSubscriptionResponseUnknownInstanceId(t *testing.T) {
7238 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
7239 Counter{cRestSubReqFromXapp, 1},
7240 Counter{cRestSubRespToXapp, 1},
7241 Counter{cSubReqToE2, 1},
7242 Counter{cSubReqTimerExpiry, 2},
7243 Counter{cSubReReqToE2, 1},
7244 Counter{cSubRespFromE2, 1},
7245 Counter{cSubFailFromE2, 1},
7246 Counter{cRestSubFailNotifToXapp, 1},
7247 Counter{cRestSubDelReqFromXapp, 1},
7248 Counter{cRestSubDelRespToXapp, 1},
7249 Counter{cSubDelReqToE2, 1},
7250 Counter{cSubDelRespFromE2, 1},
7253 const subReqCount int = 1
7256 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
7257 restSubId := xappConn1.SendRESTSubsReq(t, params)
7259 crereq, cremsg := e2termConn1.RecvSubsReq(t)
7261 // Unknown instanceId 0 in this response which will result resending original request
7262 orgInstanceId := crereq.RequestId.InstanceId
7263 crereq.RequestId.InstanceId = 0
7264 e2termConn1.SendSubsResp(t, crereq, cremsg)
7266 _, cremsg = e2termConn1.RecvSubsReq(t)
7268 xappConn1.ExpectRESTNotificationNok(t, restSubId, "allFail")
7270 // Subscription already created in E2 Node. E2 Node responds with failure but there is also same unknown instanceId 0
7271 fparams := &teststube2ap.E2StubSubsFailParams{}
7273 fparams.SetCauseVal(0, 1, 3) // CauseRIC / duplicate-action
7274 e2termConn1.SendSubsFail(t, fparams, cremsg)
7276 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
7277 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
7279 instanceId := xappConn1.WaitRESTNotification(t, restSubId)
7280 xapp.Logger.Debug("TEST: REST notification received e2SubsId=%v", instanceId)
7282 xappConn1.SendRESTSubsDelReq(t, &restSubId)
7284 // Wait that subs is cleaned
7285 mainCtrl.wait_subs_clean(t, orgInstanceId, 10)
7287 xappConn1.TestMsgChanEmpty(t)
7288 e2termConn1.TestMsgChanEmpty(t)
7289 mainCtrl.wait_registry_empty(t, 10)
7290 mainCtrl.VerifyAllClean(t)
7291 mainCtrl.VerifyCounterValues(t)
7294 //-----------------------------------------------------------------------------
7295 // TestRESTUnpackSubscriptionResponseNoTransaction
7298 // +-------+ +---------+ +---------+
7299 // | xapp | | submgr | | e2term |
7300 // +-------+ +---------+ +---------+
7303 // |---------------->| |
7305 // | RESTSubResp | |
7306 // |<----------------| |
7309 // | |------------->|
7311 // | | SubResp | No transaction for the response
7312 // | |<-------------| Ongoing transaction not found. This will result timer expiry and resending
7315 // | |------------->|
7317 // | | SubFail | Duplicated action
7318 // | |<-------------|Ongoing transaction not found. This will result timer expiry and sending delete
7319 // | RESTNotif (fail)| |
7320 // |<----------------| |
7322 // | |------------->|
7325 // | |<-------------| Ongoing transaction not found. This will result timer expiry and resending
7328 // | |------------->|
7331 // | |<-------------| Ongoing transaction not found.
7333 // | [SUBS DELETE] |
7336 //-----------------------------------------------------------------------------
7338 func TestRESTUnpackSubscriptionResponseNoTransaction(t *testing.T) {
7340 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
7341 Counter{cRestSubReqFromXapp, 1},
7342 Counter{cRestSubRespToXapp, 1},
7343 Counter{cSubReqToE2, 1},
7344 Counter{cSubReqTimerExpiry, 2},
7345 Counter{cSubReReqToE2, 1},
7346 Counter{cSubRespFromE2, 1},
7347 Counter{cSubFailFromE2, 1},
7348 Counter{cRestSubFailNotifToXapp, 1},
7349 Counter{cRestSubDelReqFromXapp, 1},
7350 Counter{cRestSubDelRespToXapp, 1},
7351 Counter{cSubDelReqToE2, 1},
7352 Counter{cSubDelReqTimerExpiry, 2},
7353 Counter{cSubDelReReqToE2, 1},
7354 Counter{cSubDelRespFromE2, 2},
7357 const subReqCount int = 1
7360 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
7361 restSubId := xappConn1.SendRESTSubsReq(t, params)
7363 crereq, cremsg := e2termConn1.RecvSubsReq(t)
7365 mainCtrl.MakeTransactionNil(t, crereq.RequestId.InstanceId)
7366 // No transaction exist for this response which will result resending original request
7367 e2termConn1.SendSubsResp(t, crereq, cremsg)
7369 _, cremsg = e2termConn1.RecvSubsReq(t)
7371 xappConn1.ExpectRESTNotificationNok(t, restSubId, "allFail")
7373 // Subscription already created in E2 Node.
7374 fparams := &teststube2ap.E2StubSubsFailParams{}
7376 fparams.SetCauseVal(0, 1, 3) // CauseRIC / duplicate-action
7377 e2termConn1.SendSubsFail(t, fparams, cremsg)
7379 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
7380 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
7382 // Resending happens because there no transaction
7383 delreq, delmsg = e2termConn1.RecvSubsDelReq(t)
7384 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
7386 instanceId := xappConn1.WaitRESTNotification(t, restSubId)
7387 xapp.Logger.Debug("TEST: REST notification received e2SubsId=%v", instanceId)
7389 xappConn1.SendRESTSubsDelReq(t, &restSubId)
7391 // Wait that subs is cleaned
7392 mainCtrl.wait_subs_clean(t, crereq.RequestId.InstanceId, 10)
7394 xappConn1.TestMsgChanEmpty(t)
7395 e2termConn1.TestMsgChanEmpty(t)
7396 mainCtrl.wait_registry_empty(t, 10)
7397 mainCtrl.VerifyAllClean(t)
7398 mainCtrl.VerifyCounterValues(t)
7401 //-----------------------------------------------------------------------------
7402 // TestRESTUnpackSubscriptionFailureDecodeFail
7405 // +-------+ +---------+ +---------+
7406 // | xapp | | submgr | | e2term |
7407 // +-------+ +---------+ +---------+
7410 // |---------------->| |
7412 // | RESTSubResp | |
7413 // |<----------------| |
7416 // | |------------->|
7418 // | | SubFail | ASN.1 decode fails
7419 // | |<-------------| Decode failed. More data needed. This will result timer expiry and resending
7422 // | |------------->|
7424 // | | SubFail | Duplicated action
7425 // | |<-------------|
7426 // | RESTNotif (fail)| |
7427 // |<----------------| |
7429 // | [SUBS DELETE] |
7432 //-----------------------------------------------------------------------------
7434 func TestRESTUnpackSubscriptionFailureDecodeFail(t *testing.T) {
7436 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
7437 Counter{cRestSubReqFromXapp, 1},
7438 Counter{cRestSubRespToXapp, 1},
7439 Counter{cSubReqToE2, 1},
7440 Counter{cSubReqTimerExpiry, 1},
7441 Counter{cSubReReqToE2, 1},
7442 Counter{cSubFailFromE2, 2},
7443 Counter{cRestSubFailNotifToXapp, 1},
7444 Counter{cRestSubDelReqFromXapp, 1},
7445 Counter{cRestSubDelRespToXapp, 1},
7448 const subReqCount int = 1
7451 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
7452 restSubId := xappConn1.SendRESTSubsReq(t, params)
7454 crereq, cremsg := e2termConn1.RecvSubsReq(t)
7456 // Decode of this response fails which will result resending original request
7457 e2termConn1.SendInvalidE2Asn1Resp(t, cremsg, xapp.RIC_SUB_FAILURE)
7459 _, cremsg = e2termConn1.RecvSubsReq(t)
7461 xappConn1.ExpectRESTNotificationNok(t, restSubId, "allFail")
7463 // Subscription already created in E2 Node.
7464 fparams := &teststube2ap.E2StubSubsFailParams{}
7466 fparams.SetCauseVal(0, 1, 3) // CauseRIC / duplicate-action
7467 e2termConn1.SendSubsFail(t, fparams, cremsg)
7469 instanceId := xappConn1.WaitRESTNotification(t, restSubId)
7470 xapp.Logger.Debug("TEST: REST notification received e2SubsId=%v", instanceId)
7472 xappConn1.SendRESTSubsDelReq(t, &restSubId)
7474 // Wait that subs is cleaned
7475 mainCtrl.wait_subs_clean(t, crereq.RequestId.InstanceId, 10)
7477 xappConn1.TestMsgChanEmpty(t)
7478 e2termConn1.TestMsgChanEmpty(t)
7479 mainCtrl.wait_registry_empty(t, 10)
7480 mainCtrl.VerifyAllClean(t)
7481 mainCtrl.VerifyCounterValues(t)
7484 //-----------------------------------------------------------------------------
7485 // TestRESTUnpackSubscriptionResponseUnknownInstanceId
7488 // +-------+ +---------+ +---------+
7489 // | xapp | | submgr | | e2term |
7490 // +-------+ +---------+ +---------+
7493 // |---------------->| |
7495 // | RESTSubResp | |
7496 // |<----------------| |
7499 // | |------------->|
7501 // | | SubFail | Unknown instanceId
7502 // | |<-------------| No valid subscription found with subIds [0]. This will result timer expiry and resending
7505 // | |------------->|
7507 // | | SubFail | Duplicated action
7508 // | |<-------------|No valid subscription found with subIds [0]. This will result timer expiry and sending delete
7509 // | RESTNotif (fail)| |
7510 // |<----------------| |
7512 // | |------------->|
7515 // | |<-------------|
7517 // | [SUBS DELETE] |
7520 //-----------------------------------------------------------------------------
7521 func TestRESTUnpackSubscriptionFailureUnknownInstanceId(t *testing.T) {
7523 const subReqCount int = 1
7525 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
7526 Counter{cRestSubReqFromXapp, 1},
7527 Counter{cRestSubRespToXapp, 1},
7528 Counter{cSubReqToE2, 1},
7529 Counter{cSubReqTimerExpiry, 2},
7530 Counter{cSubReReqToE2, 1},
7531 Counter{cSubFailFromE2, 2},
7532 Counter{cRestSubFailNotifToXapp, 1},
7533 Counter{cRestSubDelReqFromXapp, 1},
7534 Counter{cRestSubDelRespToXapp, 1},
7535 Counter{cSubDelReqToE2, 1},
7536 Counter{cSubDelRespFromE2, 1},
7540 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
7541 restSubId := xappConn1.SendRESTSubsReq(t, params)
7543 crereq, cremsg := e2termConn1.RecvSubsReq(t)
7545 // Unknown instanceId 0 in this response which will result resending original request
7546 fparams := &teststube2ap.E2StubSubsFailParams{}
7548 fparams.Fail.RequestId.InstanceId = 0
7549 e2termConn1.SendSubsFail(t, fparams, cremsg)
7551 _, cremsg = e2termConn1.RecvSubsReq(t)
7553 xappConn1.ExpectRESTNotificationNok(t, restSubId, "allFail")
7555 // Subscription already created in E2 Node. E2 Node responds with failure but there is also same unknown instanceId 0
7556 fparams.SetCauseVal(0, 1, 3) // CauseRIC / duplicate-action
7557 e2termConn1.SendSubsFail(t, fparams, cremsg)
7559 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
7560 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
7562 instanceId := xappConn1.WaitRESTNotification(t, restSubId)
7563 xapp.Logger.Debug("TEST: REST notification received e2SubsId=%v", instanceId)
7565 xappConn1.SendRESTSubsDelReq(t, &restSubId)
7567 // Wait that subs is cleaned
7568 mainCtrl.wait_subs_clean(t, crereq.RequestId.InstanceId, 10)
7570 xappConn1.TestMsgChanEmpty(t)
7571 e2termConn1.TestMsgChanEmpty(t)
7572 mainCtrl.wait_registry_empty(t, 10)
7573 mainCtrl.VerifyAllClean(t)
7574 mainCtrl.VerifyCounterValues(t)
7577 //-----------------------------------------------------------------------------
7578 // TestRESTUnpackSubscriptionFailureNoTransaction
7581 // +-------+ +---------+ +---------+
7582 // | xapp | | submgr | | e2term |
7583 // +-------+ +---------+ +---------+
7586 // |---------------->| |
7588 // | RESTSubResp | |
7589 // |<----------------| |
7592 // | |------------->|
7594 // | | SubFail | No transaction for the response
7595 // | |<-------------| Ongoing transaction not found. This will result timer expiry and resending
7598 // | |------------->|
7600 // | | SubFail | Duplicated action
7601 // | |<-------------| Ongoing transaction not found. This will result timer expiry and sending delete
7602 // | RESTNotif (fail)| |
7603 // |<----------------| |
7605 // | |------------->|
7608 // | |<-------------| Ongoing transaction not found. This will result timer expiry and resending
7611 // | |------------->|
7614 // | |<-------------| Ongoing transaction not found.
7616 // | [SUBS DELETE] |
7619 //-----------------------------------------------------------------------------
7621 func TestRESTUnpackSubscriptionFailureNoTransaction(t *testing.T) {
7623 const subReqCount int = 1
7625 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
7626 Counter{cRestSubReqFromXapp, 1},
7627 Counter{cRestSubRespToXapp, 1},
7628 Counter{cSubReqToE2, 1},
7629 Counter{cSubReqTimerExpiry, 2},
7630 Counter{cSubReReqToE2, 1},
7631 Counter{cSubFailFromE2, 2},
7632 Counter{cRestSubFailNotifToXapp, 1},
7633 Counter{cRestSubDelReqFromXapp, 1},
7634 Counter{cRestSubDelRespToXapp, 1},
7635 Counter{cSubDelReqToE2, 1},
7636 Counter{cSubDelReqTimerExpiry, 2},
7637 Counter{cSubDelReReqToE2, 1},
7638 Counter{cSubDelRespFromE2, 2},
7642 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
7643 restSubId := xappConn1.SendRESTSubsReq(t, params)
7645 crereq, cremsg := e2termConn1.RecvSubsReq(t)
7647 mainCtrl.MakeTransactionNil(t, crereq.RequestId.InstanceId)
7649 // No transaction exist for this response which will result resending original request
7650 fparams := &teststube2ap.E2StubSubsFailParams{}
7652 e2termConn1.SendSubsFail(t, fparams, cremsg)
7654 _, cremsg = e2termConn1.RecvSubsReq(t)
7656 xappConn1.ExpectRESTNotificationNok(t, restSubId, "allFail")
7658 // Subscription already created in E2 Node.
7659 fparams.SetCauseVal(0, 1, 3) // CauseRIC / duplicate-action
7660 e2termConn1.SendSubsFail(t, fparams, cremsg)
7662 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
7663 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
7665 // Resending happens because there no transaction
7666 delreq, delmsg = e2termConn1.RecvSubsDelReq(t)
7667 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
7669 instanceId := xappConn1.WaitRESTNotification(t, restSubId)
7670 xapp.Logger.Debug("TEST: REST notification received e2SubsId=%v", instanceId)
7672 xappConn1.SendRESTSubsDelReq(t, &restSubId)
7674 // Wait that subs is cleaned
7675 mainCtrl.wait_subs_clean(t, crereq.RequestId.InstanceId, 10)
7677 xappConn1.TestMsgChanEmpty(t)
7678 e2termConn1.TestMsgChanEmpty(t)
7679 mainCtrl.wait_registry_empty(t, 10)
7680 mainCtrl.VerifyAllClean(t)
7681 mainCtrl.VerifyCounterValues(t)
7684 //-----------------------------------------------------------------------------
7685 // TestRESTUnpackSubscriptionDeleteResponseDecodeFail
7688 // +-------+ +---------+ +---------+
7689 // | xapp | | submgr | | e2term |
7690 // +-------+ +---------+ +---------+
7692 // | [SUBS CREATE] |
7695 // | RESTSubDelReq | |
7696 // |---------------->| |
7698 // | RESTSubDelResp | |
7699 // |<----------------| |
7702 // | |------------->|
7704 // | | SubDelResp | ASN.1 decode fails.
7705 // | |<-------------| Decode failed. More data needed. This will result timer expiry and resending
7708 // | |------------->|
7710 // | | SubDelFail | Subscription does exist any more in E2 node
7711 // | |<-------------|
7713 // | [SUBS DELETE] |
7716 //-----------------------------------------------------------------------------
7718 func TestRESTUnpackSubscriptionDeleteResponseDecodeFail(t *testing.T) {
7720 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
7721 Counter{cRestSubReqFromXapp, 1},
7722 Counter{cRestSubRespToXapp, 1},
7723 Counter{cSubReqToE2, 1},
7724 Counter{cSubRespFromE2, 1},
7725 Counter{cRestSubNotifToXapp, 1},
7726 Counter{cRestSubDelReqFromXapp, 1},
7727 Counter{cRestSubDelRespToXapp, 1},
7728 Counter{cSubDelReqToE2, 1},
7729 Counter{cSubDelReqTimerExpiry, 1},
7730 Counter{cSubDelReReqToE2, 1},
7731 Counter{cSubDelFailFromE2, 1},
7732 Counter{cSubDelRespFromE2, 1},
7736 var params *teststube2ap.RESTSubsReqParams = nil
7737 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
7740 xappConn1.SendRESTSubsDelReq(t, &restSubId)
7742 // E2t: Receive 1st SubsDelReq
7743 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
7745 // Decode of this response fails which will result resending original request
7746 e2termConn1.SendInvalidE2Asn1Resp(t, delmsg, xapp.RIC_SUB_DEL_RESP)
7748 // E2t: Receive 2nd SubsDelReq and send SubsDelResp
7749 delreq, delmsg = e2termConn1.RecvSubsDelReq(t)
7751 // Subscription does not exist in in E2 Node.
7752 e2termConn1.SendSubsDelFail(t, delreq, delmsg)
7754 // Wait that subs is cleaned
7755 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
7757 xappConn1.TestMsgChanEmpty(t)
7758 e2termConn1.TestMsgChanEmpty(t)
7759 mainCtrl.wait_registry_empty(t, 10)
7760 mainCtrl.VerifyAllClean(t)
7761 mainCtrl.VerifyCounterValues(t)
7764 //-----------------------------------------------------------------------------
7765 // TestRESTUnpackSubscriptionDeleteResponseUnknownInstanceId
7768 // +-------+ +---------+ +---------+
7769 // | xapp | | submgr | | e2term |
7770 // +-------+ +---------+ +---------+
7772 // | [SUBS CREATE] |
7775 // | RESTSubDelReq | |
7776 // |---------------->| |
7778 // | RESTSubDelResp | |
7779 // |<----------------| |
7782 // | |------------->|
7784 // | | SubDelResp | Unknown instanceId
7785 // | |<-------------| No valid subscription found with subIds [0]. This will result timer expiry and resending
7788 // | |------------->|
7790 // | | SubDelFail | Subscription does exist any more in E2 node
7791 // | |<-------------|
7793 // | [SUBS DELETE] |
7795 //-----------------------------------------------------------------------------
7797 func TestRESTUnpackSubscriptionDeleteResponseUnknownInstanceId(t *testing.T) {
7799 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
7800 Counter{cRestSubReqFromXapp, 1},
7801 Counter{cRestSubRespToXapp, 1},
7802 Counter{cSubReqToE2, 1},
7803 Counter{cSubRespFromE2, 1},
7804 Counter{cRestSubNotifToXapp, 1},
7805 Counter{cRestSubDelReqFromXapp, 1},
7806 Counter{cRestSubDelRespToXapp, 1},
7807 Counter{cSubDelReqToE2, 1},
7808 Counter{cSubDelReqTimerExpiry, 1},
7809 Counter{cSubDelReReqToE2, 1},
7810 Counter{cSubDelRespFromE2, 1},
7811 Counter{cSubDelFailFromE2, 1},
7815 var params *teststube2ap.RESTSubsReqParams = nil
7816 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
7819 xappConn1.SendRESTSubsDelReq(t, &restSubId)
7821 // E2t: Receive 1st SubsDelReq
7822 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
7824 // Unknown instanceId in this response which will result resending original request
7825 delreq.RequestId.InstanceId = 0
7826 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
7828 // E2t: Receive 2nd SubsDelReq
7829 delreq, delmsg = e2termConn1.RecvSubsDelReq(t)
7831 // Subscription does not exist in in E2 Node.
7832 e2termConn1.SendSubsDelFail(t, delreq, delmsg)
7834 // Wait that subs is cleaned
7835 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
7837 xappConn1.TestMsgChanEmpty(t)
7838 e2termConn1.TestMsgChanEmpty(t)
7839 mainCtrl.wait_registry_empty(t, 10)
7840 mainCtrl.VerifyAllClean(t)
7841 mainCtrl.VerifyCounterValues(t)
7844 //-----------------------------------------------------------------------------
7845 // TestRESTUnpackSubscriptionDeleteResponseNoTransaction
7848 // +-------+ +---------+ +---------+
7849 // | xapp | | submgr | | e2term |
7850 // +-------+ +---------+ +---------+
7852 // | [SUBS CREATE] |
7855 // | RESTSubDelReq | |
7856 // |---------------->| |
7858 // | RESTSubDelResp | |
7859 // |<----------------| |
7862 // | |------------->|
7864 // | | SubDelResp | No transaction for the response
7865 // | |<-------------| Ongoing transaction not found. This will result timer expiry and resending
7868 // | |------------->|
7870 // | | SubDelFail | Subscription does exist any more in E2 node
7871 // | |<-------------| Ongoing transaction not found. This will result timer expiry
7873 // | [SUBS DELETE] |
7875 //-----------------------------------------------------------------------------
7877 func TestRESTUnpackSubscriptionDeleteResponseNoTransaction(t *testing.T) {
7879 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
7880 Counter{cRestSubReqFromXapp, 1},
7881 Counter{cRestSubRespToXapp, 1},
7882 Counter{cSubReqToE2, 1},
7883 Counter{cSubRespFromE2, 1},
7884 Counter{cRestSubNotifToXapp, 1},
7885 Counter{cRestSubDelReqFromXapp, 1},
7886 Counter{cRestSubDelRespToXapp, 1},
7887 Counter{cSubDelReqToE2, 1},
7888 Counter{cSubDelReqTimerExpiry, 2},
7889 Counter{cSubDelReReqToE2, 1},
7890 Counter{cSubDelRespFromE2, 1},
7891 Counter{cSubDelFailFromE2, 1},
7895 var params *teststube2ap.RESTSubsReqParams = nil
7896 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
7899 xappConn1.SendRESTSubsDelReq(t, &restSubId)
7901 // E2t: Receive 1st SubsDelReq
7902 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
7904 mainCtrl.MakeTransactionNil(t, e2SubsId)
7906 // No transaction exist for this response which will result resending original request
7907 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
7909 // E2t: Receive 2nd SubsDelReq
7910 delreq, delmsg = e2termConn1.RecvSubsDelReq(t)
7912 // Subscription does not exist in in E2 Node.
7913 e2termConn1.SendSubsDelFail(t, delreq, delmsg)
7915 // Wait that subs is cleaned
7916 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
7918 xappConn1.TestMsgChanEmpty(t)
7919 e2termConn1.TestMsgChanEmpty(t)
7920 mainCtrl.wait_registry_empty(t, 10)
7921 mainCtrl.VerifyAllClean(t)
7922 mainCtrl.VerifyCounterValues(t)
7925 //-----------------------------------------------------------------------------
7926 // TestRESTUnpackSubscriptionDeleteFailureDecodeFail
7929 // +-------+ +---------+ +---------+
7930 // | xapp | | submgr | | e2term |
7931 // +-------+ +---------+ +---------+
7933 // | [SUBS CREATE] |
7936 // | RESTSubDelReq | |
7937 // |---------------->| |
7939 // | RESTSubDelResp | |
7940 // |<----------------| |
7943 // | |------------->|
7945 // | | SubDelFail | ASN.1 decode fails
7946 // | |<-------------| Decode failed. More data needed. This will result timer expiry and resending
7949 // | |------------->|
7951 // | | SubDelFail | Subscription does exist any more in E2 node
7952 // | |<-------------|
7954 // | [SUBS DELETE] |
7956 //-----------------------------------------------------------------------------
7958 func TestRESTUnpackSubscriptionDeleteFailureDecodeFail(t *testing.T) {
7960 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
7961 Counter{cRestSubReqFromXapp, 1},
7962 Counter{cRestSubRespToXapp, 1},
7963 Counter{cSubReqToE2, 1},
7964 Counter{cSubRespFromE2, 1},
7965 Counter{cRestSubNotifToXapp, 1},
7966 Counter{cRestSubDelReqFromXapp, 1},
7967 Counter{cRestSubDelRespToXapp, 1},
7968 Counter{cSubDelReqToE2, 1},
7969 Counter{cSubDelReqTimerExpiry, 1},
7970 Counter{cSubDelReReqToE2, 1},
7971 Counter{cSubDelFailFromE2, 2},
7975 var params *teststube2ap.RESTSubsReqParams = nil
7976 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
7979 xappConn1.SendRESTSubsDelReq(t, &restSubId)
7981 // E2t: Receive 1st SubsDelReq
7982 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
7984 // Decode of this response fails which will result resending original request
7985 e2termConn1.SendInvalidE2Asn1Resp(t, delmsg, xapp.RIC_SUB_DEL_FAILURE)
7987 // E2t: Receive 2nd SubsDelReq and send SubsDelResp
7988 delreq, delmsg = e2termConn1.RecvSubsDelReq(t)
7990 // Subscription does not exist in in E2 Node.
7991 e2termConn1.SendSubsDelFail(t, delreq, delmsg)
7993 // Wait that subs is cleaned
7994 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
7996 xappConn1.TestMsgChanEmpty(t)
7997 e2termConn1.TestMsgChanEmpty(t)
7998 mainCtrl.wait_registry_empty(t, 10)
7999 mainCtrl.VerifyAllClean(t)
8000 mainCtrl.VerifyCounterValues(t)
8003 //-----------------------------------------------------------------------------
8004 // TestRESTUnpackSubscriptionDeleteailureUnknownInstanceId
8007 // +-------+ +---------+ +---------+
8008 // | xapp | | submgr | | e2term |
8009 // +-------+ +---------+ +---------+
8011 // | [SUBS CREATE] |
8014 // | RESTSubDelReq | |
8015 // |---------------->| |
8017 // | RESTSubDelResp | |
8018 // |<----------------| |
8021 // | |------------->|
8023 // | | SubDelFail | Unknown instanceId
8024 // | |<-------------| No valid subscription found with subIds [0]. This will result timer expiry and resending
8027 // | |------------->|
8029 // | | SubDelFail | Subscription does exist any more in E2 node
8030 // | |<-------------| No valid subscription found with subIds [0].
8032 // | [SUBS DELETE] |
8034 //-----------------------------------------------------------------------------
8036 func TestRESTUnpackSubscriptionDeleteailureUnknownInstanceId(t *testing.T) {
8038 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
8039 Counter{cRestSubReqFromXapp, 1},
8040 Counter{cRestSubRespToXapp, 1},
8041 Counter{cSubReqToE2, 1},
8042 Counter{cSubRespFromE2, 1},
8043 Counter{cRestSubNotifToXapp, 1},
8044 Counter{cRestSubDelReqFromXapp, 1},
8045 Counter{cRestSubDelRespToXapp, 1},
8046 Counter{cSubDelReqToE2, 1},
8047 Counter{cSubDelReqTimerExpiry, 1},
8048 Counter{cSubDelReReqToE2, 1},
8049 Counter{cSubDelFailFromE2, 2},
8053 var params *teststube2ap.RESTSubsReqParams = nil
8054 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
8057 xappConn1.SendRESTSubsDelReq(t, &restSubId)
8059 // E2t: Receive 1st SubsDelReq
8060 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
8062 // Unknown instanceId 0 in this response which will result resending original request
8063 delreq.RequestId.InstanceId = 0
8064 e2termConn1.SendSubsDelFail(t, delreq, delmsg)
8066 // E2t: Receive 2nd SubsDelReq
8067 delreq, delmsg = e2termConn1.RecvSubsDelReq(t)
8069 // Subscription does not exist in in E2 Node. E2 Node responds with failure but there is also same unknown instanceId 0
8070 e2termConn1.SendSubsDelFail(t, delreq, delmsg)
8072 // Wait that subs is cleaned
8073 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
8075 xappConn1.TestMsgChanEmpty(t)
8076 e2termConn1.TestMsgChanEmpty(t)
8077 mainCtrl.wait_registry_empty(t, 10)
8078 mainCtrl.VerifyAllClean(t)
8079 mainCtrl.VerifyCounterValues(t)
8082 //-----------------------------------------------------------------------------
8083 // TestRESTUnpackSubscriptionDeleteFailureNoTransaction
8086 // +-------+ +---------+ +---------+
8087 // | xapp | | submgr | | e2term |
8088 // +-------+ +---------+ +---------+
8090 // | [SUBS CREATE] |
8093 // | RESTSubDelReq | |
8094 // |---------------->| |
8096 // | RESTSubDelResp | |
8097 // |<----------------| |
8100 // | |------------->|
8102 // | | SubDelFail | No transaction for the response
8103 // | |<-------------| Ongoing transaction not found. This will result timer expiry and resending
8106 // | |------------->|
8108 // | | SubDelFail | Subscription does exist any more in E2 node
8109 // | |<-------------| Ongoing transaction not found. This will result timer expiry
8111 // | [SUBS DELETE] |
8113 //-----------------------------------------------------------------------------
8115 func TestRESTUnpackSubscriptionDeleteFailureNoTransaction(t *testing.T) {
8117 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
8118 Counter{cRestSubReqFromXapp, 1},
8119 Counter{cRestSubRespToXapp, 1},
8120 Counter{cSubReqToE2, 1},
8121 Counter{cSubRespFromE2, 1},
8122 Counter{cRestSubNotifToXapp, 1},
8123 Counter{cRestSubDelReqFromXapp, 1},
8124 Counter{cRestSubDelRespToXapp, 1},
8125 Counter{cSubDelReqToE2, 1},
8126 Counter{cSubDelReqTimerExpiry, 2},
8127 Counter{cSubDelReReqToE2, 1},
8128 Counter{cSubDelFailFromE2, 2},
8132 var params *teststube2ap.RESTSubsReqParams = nil
8133 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
8136 xappConn1.SendRESTSubsDelReq(t, &restSubId)
8138 // E2t: Receive 1st SubsDelReq
8139 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
8141 mainCtrl.MakeTransactionNil(t, e2SubsId)
8143 // No transaction exist for this response which will result resending original request
8144 e2termConn1.SendSubsDelFail(t, delreq, delmsg)
8146 // E2t: Receive 2nd SubsDelReq
8147 delreq, delmsg = e2termConn1.RecvSubsDelReq(t)
8149 // Subscription does not exist in in E2 Node.
8150 e2termConn1.SendSubsDelFail(t, delreq, delmsg)
8152 // Wait that subs is cleaned
8153 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
8155 xappConn1.TestMsgChanEmpty(t)
8156 e2termConn1.TestMsgChanEmpty(t)
8157 mainCtrl.wait_registry_empty(t, 10)
8158 mainCtrl.VerifyAllClean(t)
8159 mainCtrl.VerifyCounterValues(t)
8162 //-----------------------------------------------------------------------------
8163 // TestRESTSubReqFailAsn1PackSubReqError
8166 // +-------+ +---------+ +---------+
8167 // | xapp | | submgr | | e2term |
8168 // +-------+ +---------+ +---------+
8171 // |---------------->| |
8173 // | RESTSubResp | |
8174 // |<----------------| |
8176 // | ASN.1 encode fails |
8179 // | |------------->|
8182 // | |<-------------|
8186 // |<----------------| |
8188 // | [SUBS DELETE] |
8191 //-----------------------------------------------------------------------------
8193 func TestRESTSubReqFailAsn1PackSubReqError(t *testing.T) {
8195 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
8196 Counter{cRestSubReqFromXapp, 1},
8197 Counter{cRestSubRespToXapp, 1},
8198 Counter{cRestSubFailNotifToXapp, 1},
8199 Counter{cRestSubDelReqFromXapp, 1},
8200 Counter{cRestSubDelRespToXapp, 1},
8203 const subReqCount int = 1
8205 var params *teststube2ap.RESTSubsReqParams = nil
8206 params = xappConn1.GetRESTSubsReqReportParams(subReqCount)
8207 e2ap_wrapper.AllowE2apToProcess(e2ap_wrapper.SUB_REQ, false)
8210 restSubId := xappConn1.SendRESTSubsReq(t, params)
8211 xapp.Logger.Debug("Send REST subscriber request for subscriberId : %v", restSubId)
8213 // E2t: Receive SubsDelReq
8214 xappConn1.ExpectRESTNotificationNok(t, restSubId, "allFail")
8216 e2SubsId := xappConn1.WaitRESTNotification(t, restSubId)
8217 xapp.Logger.Debug("TEST: REST notification received e2SubsId=%v", e2SubsId)
8219 e2ap_wrapper.AllowE2apToProcess(e2ap_wrapper.SUB_REQ, true)
8221 xappConn1.SendRESTSubsDelReq(t, &restSubId)
8223 // Wait that subs is cleaned
8224 waitSubsCleanup(t, e2SubsId, 10)
8225 mainCtrl.VerifyAllClean(t)
8226 mainCtrl.VerifyCounterValues(t)
8229 //-----------------------------------------------------------------------------
8230 // TestRESTSubReqPolicyUpdateTimeoutAndSubDelOkSameAction
8233 // +-------+ +---------+ +---------+
8234 // | xapp | | submgr | | e2term |
8235 // +-------+ +---------+ +---------+
8238 // |---------------->| |
8240 // | RESTSubResp | |
8241 // |<----------------| |
8243 // | |------------->|
8246 // | |<-------------|
8249 // |<----------------| |
8251 // | RESTSubReq | | Policy modification
8252 // |---------------->| |
8254 // | RESTSubResp | |
8255 // |<----------------| |
8257 // | |------------->|
8260 // | RESTNotif(Unsuccessful) | E2 timeout
8261 // |<----------------| |
8263 // | RESTSubDelReq | |
8264 // |---------------->| |
8267 // | |------------->|
8270 // | |<-------------|
8272 // | RESTSubDelResp | |
8273 // |<----------------| |
8275 //-----------------------------------------------------------------------------
8277 func TestRESTSubReqPolicyUpdateTimeoutAndSubDelOkSameAction(t *testing.T) {
8279 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
8280 Counter{cRestSubReqFromXapp, 2},
8281 Counter{cRestSubRespToXapp, 2},
8282 Counter{cSubReqToE2, 2},
8283 Counter{cSubReqTimerExpiry, 1},
8284 Counter{cSubRespFromE2, 1},
8285 Counter{cRestSubNotifToXapp, 1},
8286 Counter{cRestSubFailNotifToXapp, 1},
8287 Counter{cRestSubDelReqFromXapp, 1},
8288 Counter{cSubDelReqToE2, 1},
8289 Counter{cSubDelRespFromE2, 1},
8290 Counter{cRestSubDelRespToXapp, 1},
8293 const e2Timeout int64 = 1
8294 const e2RetryCount int64 = 0
8295 const routingNeeded bool = false
8298 params := xappConn1.GetRESTSubsReqPolicyParams(subReqCount)
8299 params.SetSubscriptionDirectives(e2Timeout, e2RetryCount, routingNeeded)
8302 restSubId := xappConn1.SendRESTSubsReq(t, params)
8303 xapp.Logger.Debug("Send REST subscribe request for subscriberId : %v", restSubId)
8305 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
8306 xappConn1.ExpectRESTNotification(t, restSubId)
8307 e2termConn1.SendSubsResp(t, crereq1, cremsg1)
8308 e2SubsId := xappConn1.WaitRESTNotification(t, restSubId)
8309 xapp.Logger.Debug("REST notification received e2SubsId=%v", e2SubsId)
8312 params = xappConn1.GetRESTSubsReqPolicyParams(subReqCount)
8313 params.SetSubscriptionDirectives(e2Timeout, e2RetryCount, routingNeeded)
8314 params.SetSubscriptionID(&restSubId)
8315 params.SetTimeToWait("w200ms")
8316 restSubId = xappConn1.SendRESTSubsReq(t, params)
8317 xapp.Logger.Debug("Send REST subscribe request for subscriberId : %v", restSubId)
8319 crereq1, cremsg1 = e2termConn1.RecvSubsReq(t)
8320 xappConn1.ExpectRESTNotification(t, restSubId)
8321 // SubsResp is missing, e2SubsId will be 0
8322 zeroE2SubsId := xappConn1.WaitRESTNotification(t, restSubId)
8323 xapp.Logger.Debug("TEST: REST notification received e2SubsId=%v", zeroE2SubsId)
8326 xappConn1.SendRESTSubsDelReq(t, &restSubId)
8327 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
8328 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
8330 waitSubsCleanup(t, e2SubsId, 10)
8331 mainCtrl.VerifyAllClean(t)
8332 mainCtrl.VerifyCounterValues(t)
8335 //-----------------------------------------------------------------------------
8336 // TestPolicyUpdateRESTSubReqAndSubDelOkWithRestartInMiddle
8339 // +-------+ +---------+ +---------+
8340 // | xapp | | submgr | | e2term |
8341 // +-------+ +---------+ +---------+
8344 // |---------------->| |
8346 // | RESTSubResp | |
8347 // |<----------------| |
8349 // | |------------->|
8352 // | |<-------------|
8355 // |<----------------| |
8358 // |---------------->| |
8360 // | RESTSubResp | |
8361 // |<----------------| |
8363 // | |------------->|
8365 // | Submgr restart |
8367 // | RESTSubDelReq | |
8368 // |---------------->| |
8371 // | |------------->|
8374 // | |<-------------|
8376 // | RESTSubDelResp | |
8377 // |<----------------| |
8379 //-----------------------------------------------------------------------------
8381 func TestPolicyUpdateRESTSubReqAndSubDelOkWithRestartInMiddle(t *testing.T) {
8383 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
8384 Counter{cRestSubReqFromXapp, 2},
8385 Counter{cRestSubRespToXapp, 2},
8386 Counter{cSubReqToE2, 2},
8387 Counter{cSubRespFromE2, 1},
8388 Counter{cRestSubNotifToXapp, 1},
8389 Counter{cRestSubDelReqFromXapp, 1},
8390 Counter{cSubDelReqToE2, 1},
8391 Counter{cSubDelRespFromE2, 1},
8392 Counter{cRestSubDelRespToXapp, 1},
8395 const e2Timeout int64 = 1
8396 const e2RetryCount int64 = 0
8397 const routingNeeded bool = false
8400 params := xappConn1.GetRESTSubsReqPolicyParams(subReqCount)
8401 params.SetSubscriptionDirectives(e2Timeout, e2RetryCount, routingNeeded)
8402 // Create subscription
8403 restSubId := xappConn1.SendRESTSubsReq(t, params)
8404 xapp.Logger.Debug("Send REST subscribe request for subscriberId : %v", restSubId)
8406 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
8407 xappConn1.ExpectRESTNotification(t, restSubId)
8408 e2termConn1.SendSubsResp(t, crereq1, cremsg1)
8409 e2SubsId := xappConn1.WaitRESTNotification(t, restSubId)
8410 xapp.Logger.Debug("REST notification received e2SubsId=%v", e2SubsId)
8412 // Check subscription
8413 queryXappSubscription(t, int64(e2SubsId), "RAN_NAME_1", []string{"localhost:13560"})
8416 params = xappConn1.GetRESTSubsReqPolicyParams(subReqCount)
8417 params.SetSubscriptionDirectives(e2Timeout, e2RetryCount, routingNeeded)
8418 params.SetSubscriptionID(&restSubId)
8419 params.SetTimeToWait("w200ms")
8420 mainCtrl.SetResetTestFlag(t, true) // subs.DoNotWaitSubResp will be set TRUE for the subscription
8421 restSubId = xappConn1.SendRESTSubsReq(t, params)
8422 xapp.Logger.Debug("Send REST subscribe request for subscriberId : %v", restSubId)
8424 crereq1, cremsg1 = e2termConn1.RecvSubsReq(t)
8425 mainCtrl.SetResetTestFlag(t, false)
8427 // SubsResp is missing due to submgr restart
8429 mainCtrl.SimulateRestart(t)
8430 xapp.Logger.Debug("mainCtrl.SimulateRestart done")
8432 // ReadE2Subscriptions() for testing is running in own go routine (go mainCtrl.c.ReadE2Subscriptions())
8433 // That needs to be completed before successful subscription query is possible
8434 <-time.After(time.Second * 1)
8436 // Check subscription
8437 queryXappSubscription(t, int64(e2SubsId), "RAN_NAME_1", []string{"localhost:13560"})
8439 // Delete subscription
8440 xappConn1.SendRESTSubsDelReq(t, &restSubId)
8441 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
8442 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
8444 //Wait that subs is cleaned
8445 waitSubsCleanup(t, e2SubsId, 10)
8447 mainCtrl.VerifyCounterValues(t)
8448 mainCtrl.VerifyAllClean(t)
8451 ////////////////////////////////////////////////////////////////////////////////////
8452 // Services for UT cases
8453 ////////////////////////////////////////////////////////////////////////////////////
8454 const subReqCount int = 1
8455 const host string = "localhost"
8457 func createSubscription(t *testing.T, fromXappConn *teststube2ap.E2Stub, toE2termConn *teststube2ap.E2Stub, params *teststube2ap.RESTSubsReqParams) (string, uint32) {
8459 params = fromXappConn.GetRESTSubsReqReportParams(subReqCount)
8461 restSubId := fromXappConn.SendRESTSubsReq(t, params)
8462 xapp.Logger.Debug("Send REST subscriber request for subscriberId : %v", restSubId)
8464 crereq1, cremsg1 := toE2termConn.RecvSubsReq(t)
8465 fromXappConn.ExpectRESTNotification(t, restSubId)
8466 toE2termConn.SendSubsResp(t, crereq1, cremsg1)
8467 e2SubsId := fromXappConn.WaitRESTNotification(t, restSubId)
8468 xapp.Logger.Debug("REST notification received e2SubsId=%v", e2SubsId)
8470 return restSubId, e2SubsId
8473 func createXapp2MergedSubscription(t *testing.T, meid string) (string, uint32) {
8475 params := xappConn2.GetRESTSubsReqReportParams(subReqCount)
8477 params.SetMeid(meid)
8479 xapp.Subscription.SetResponseCB(xappConn2.SubscriptionRespHandler)
8480 restSubId := xappConn2.SendRESTSubsReq(t, params)
8481 xappConn2.ExpectRESTNotification(t, restSubId)
8482 xapp.Logger.Debug("Send REST subscriber request for subscriberId : %v", restSubId)
8483 e2SubsId := xappConn2.WaitRESTNotification(t, restSubId)
8484 xapp.Logger.Debug("REST notification received e2SubsId=%v", e2SubsId)
8486 return restSubId, e2SubsId
8489 func createXapp1PolicySubscription(t *testing.T) (string, uint32) {
8491 params := xappConn1.GetRESTSubsReqPolicyParams(subReqCount)
8492 restSubId := xappConn1.SendRESTSubsReq(t, params)
8493 xapp.Logger.Debug("Send REST Policy subscriber request for subscriberId : %v", restSubId)
8495 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
8496 xappConn1.ExpectRESTNotification(t, restSubId)
8497 e2termConn1.SendSubsResp(t, crereq1, cremsg1)
8498 e2SubsId := xappConn1.WaitRESTNotification(t, restSubId)
8499 xapp.Logger.Debug("REST notification received e2SubsId=%v", e2SubsId)
8501 return restSubId, e2SubsId
8504 func createXapp1ReportSubscriptionE2Fail(t *testing.T) (string, uint32) {
8505 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
8506 restSubId := xappConn1.SendRESTSubsReq(t, params)
8508 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
8509 fparams1 := &teststube2ap.E2StubSubsFailParams{}
8510 fparams1.Set(crereq1)
8511 e2termConn1.SendSubsFail(t, fparams1, cremsg1)
8513 delreq1, delmsg1 := e2termConn1.RecvSubsDelReq(t)
8514 xappConn1.ExpectRESTNotification(t, restSubId)
8515 e2termConn1.SendSubsDelResp(t, delreq1, delmsg1)
8516 e2SubsId := xappConn1.WaitRESTNotification(t, restSubId)
8517 xapp.Logger.Debug("TEST: REST notification received e2SubsId=%v", e2SubsId)
8519 return restSubId, e2SubsId
8522 func deleteSubscription(t *testing.T, fromXappConn *teststube2ap.E2Stub, toE2termConn *teststube2ap.E2Stub, restSubId *string) {
8523 fromXappConn.SendRESTSubsDelReq(t, restSubId)
8524 delreq, delmsg := toE2termConn.RecvSubsDelReq(t)
8525 toE2termConn.SendSubsDelResp(t, delreq, delmsg)
8528 func deleteXapp1Subscription(t *testing.T, restSubId *string) {
8529 xappConn1.SendRESTSubsDelReq(t, restSubId)
8530 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
8531 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
8534 func deleteXapp2Subscription(t *testing.T, restSubId *string) {
8535 xappConn2.SendRESTSubsDelReq(t, restSubId)
8536 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
8537 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
8540 func queryXappSubscription(t *testing.T, e2SubsId int64, meid string, endpoint []string) {
8541 resp, _ := xapp.Subscription.QuerySubscriptions()
8542 assert.Equal(t, e2SubsId, resp[0].SubscriptionID)
8543 assert.Equal(t, meid, resp[0].Meid)
8544 assert.Equal(t, endpoint, resp[0].ClientEndpoint)
8547 func waitSubsCleanup(t *testing.T, e2SubsId uint32, timeout int) {
8548 //Wait that subs is cleaned
8549 mainCtrl.wait_subs_clean(t, e2SubsId, timeout)
8551 xappConn1.TestMsgChanEmpty(t)
8552 xappConn2.TestMsgChanEmpty(t)
8553 e2termConn1.TestMsgChanEmpty(t)
8554 mainCtrl.wait_registry_empty(t, timeout)
8557 func sendAndReceiveMultipleE2SubReqs(t *testing.T, count int, fromXappConn *teststube2ap.E2Stub, toE2termConn *teststube2ap.E2Stub, restSubId string) []uint32 {
8559 var e2SubsId []uint32
8561 for i := 0; i < count; i++ {
8562 xapp.Logger.Debug("TEST: %d ===================================== BEGIN CRE ============================================", i+1)
8563 crereq, cremsg := toE2termConn.RecvSubsReq(t)
8564 fromXappConn.ExpectRESTNotification(t, restSubId)
8565 toE2termConn.SendSubsResp(t, crereq, cremsg)
8566 instanceId := fromXappConn.WaitRESTNotification(t, restSubId)
8567 e2SubsId = append(e2SubsId, instanceId)
8568 xapp.Logger.Debug("TEST: %v", e2SubsId)
8569 xapp.Logger.Debug("TEST: %d ===================================== END CRE ============================================", i+1)
8570 <-time.After(100 * time.Millisecond)
8575 func sendAndReceiveMultipleE2DelReqs(t *testing.T, e2SubsIds []uint32, toE2termConn *teststube2ap.E2Stub) {
8577 for i := 0; i < len(e2SubsIds); i++ {
8578 xapp.Logger.Debug("TEST: %d ===================================== BEGIN DEL ============================================", i+1)
8579 delreq, delmsg := toE2termConn.RecvSubsDelReq(t)
8580 toE2termConn.SendSubsDelResp(t, delreq, delmsg)
8581 <-time.After(1 * time.Second)
8582 xapp.Logger.Debug("TEST: %d ===================================== END DEL ============================================", i+1)
8583 <-time.After(100 * time.Millisecond)
8586 // Wait that subs is cleaned
8587 for i := 0; i < len(e2SubsIds); i++ {
8588 mainCtrl.wait_subs_clean(t, e2SubsIds[i], 10)