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 // TestRESTSubReqAndE2APDeleteRespUnpackingError
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 TestRESTSubReqAndE2APDeleteRespUnpackingError(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 //-----------------------------------------------------------------------------
885 //-----------------------------------------------------------------------------
886 // TestSubReqAndSubDelOkOutofOrderIEs
889 // +-------+ +---------+ +---------+
890 // | xapp | | submgr | | e2term |
891 // +-------+ +---------+ +---------+
894 // |------------->| |
897 // | |------------->|
899 // | | SubResp | (Out of Order IEs)
900 // | |<-------------|
903 // |<-------------| |
907 // |------------->| |
910 // | |------------->|
913 // | |<-------------|
916 // |<-------------| |
918 //-----------------------------------------------------------------------------
920 func TestSubReqAndSubDelOkOutofOrderIEs(t *testing.T) {
921 CaseBegin("TestSubReqAndSubDelOkOutofOrderIEs")
923 mainCtrl.c.e2ap.SetE2IEOrderCheck(0)
924 // Init counter check
925 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
926 Counter{cSubReqFromXapp, 1},
927 Counter{cSubReqToE2, 1},
928 Counter{cSubRespFromE2, 1},
929 Counter{cSubRespToXapp, 1},
930 Counter{cSubDelReqFromXapp, 1},
931 Counter{cSubDelReqToE2, 1},
932 Counter{cSubDelRespFromE2, 1},
933 Counter{cSubDelRespToXapp, 1},
936 cretrans := xappConn1.SendSubsReq(t, nil, nil)
938 t.Logf("Could not send SubsReq")
941 crereq, cremsg := e2termConn1.RecvSubsReq(t)
942 if crereq == nil || cremsg == nil {
943 t.Logf("Could not recieve SubsReq")
947 e2termConn1.SendSubsResp(t, crereq, cremsg)
949 mainCtrl.c.e2ap.SetE2IEOrderCheck(0)
951 e2SubsId := xappConn1.RecvSubsResp(t, cretrans)
952 resp, _ := xapp.Subscription.QuerySubscriptions()
953 assert.Equal(t, resp[0].SubscriptionID, int64(e2SubsId))
954 assert.Equal(t, resp[0].Meid, "RAN_NAME_1")
955 assert.Equal(t, resp[0].ClientEndpoint, []string{"localhost:13560"})
957 deltrans := xappConn1.SendSubsDelReq(t, nil, e2SubsId)
958 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
960 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
961 xappConn1.RecvSubsDelResp(t, deltrans)
963 //Wait that subs is cleaned
964 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
966 xappConn1.TestMsgChanEmpty(t)
967 xappConn2.TestMsgChanEmpty(t)
968 e2termConn1.TestMsgChanEmpty(t)
969 mainCtrl.wait_registry_empty(t, 10)
971 mainCtrl.VerifyCounterValues(t)
972 mainCtrl.c.e2ap.SetE2IEOrderCheck(1)
975 //-----------------------------------------------------------------------------
977 //-----------------------------------------------------------------------------
978 // TestSubReqRetransmission
981 // +-------+ +---------+ +---------+
982 // | xapp | | submgr | | e2term |
983 // +-------+ +---------+ +---------+
986 // |------------->| |
989 // | |------------->|
993 // |------------->| |
996 // | |<-------------|
999 // |<-------------| |
1001 // | [SUBS DELETE] |
1004 //-----------------------------------------------------------------------------
1005 func TestSubReqRetransmission(t *testing.T) {
1006 CaseBegin("TestSubReqRetransmission")
1009 cretrans := xappConn1.SendSubsReq(t, nil, nil)
1010 crereq, cremsg := e2termConn1.RecvSubsReq(t)
1012 seqBef := mainCtrl.get_msgcounter(t)
1013 xappConn1.SendSubsReq(t, nil, cretrans) //Retransmitted SubReq
1014 mainCtrl.wait_msgcounter_change(t, seqBef, 10)
1016 // hack as there is no real way to see has message be handled.
1017 // Previuos counter check just tells that is has been received by submgr
1018 // --> artificial delay
1019 <-time.After(1 * time.Second)
1020 e2termConn1.SendSubsResp(t, crereq, cremsg)
1021 e2SubsId := xappConn1.RecvSubsResp(t, cretrans)
1024 deltrans := xappConn1.SendSubsDelReq(t, nil, e2SubsId)
1025 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
1026 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
1027 xappConn1.RecvSubsDelResp(t, deltrans)
1029 //Wait that subs is cleaned
1030 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
1032 xappConn1.TestMsgChanEmpty(t)
1033 xappConn2.TestMsgChanEmpty(t)
1034 e2termConn1.TestMsgChanEmpty(t)
1035 mainCtrl.wait_registry_empty(t, 10)
1038 //-----------------------------------------------------------------------------
1039 // TestSubDelReqRetransmission
1042 // +-------+ +---------+ +---------+
1043 // | xapp | | submgr | | e2term |
1044 // +-------+ +---------+ +---------+
1046 // | [SUBS CREATE] |
1050 // |------------->| |
1053 // | |------------->|
1058 // |------------->| |
1061 // | |<-------------|
1064 // |<-------------| |
1066 //-----------------------------------------------------------------------------
1067 func TestSubDelReqRetransmission(t *testing.T) {
1068 CaseBegin("TestSubDelReqRetransmission")
1071 cretrans := xappConn1.SendSubsReq(t, nil, nil)
1072 crereq, cremsg := e2termConn1.RecvSubsReq(t)
1073 e2termConn1.SendSubsResp(t, crereq, cremsg)
1074 e2SubsId := xappConn1.RecvSubsResp(t, cretrans)
1077 deltrans := xappConn1.SendSubsDelReq(t, nil, e2SubsId)
1078 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
1080 seqBef := mainCtrl.get_msgcounter(t)
1081 xappConn1.SendSubsDelReq(t, deltrans, e2SubsId) //Retransmitted SubDelReq
1082 mainCtrl.wait_msgcounter_change(t, seqBef, 10)
1084 // hack as there is no real way to see has message be handled.
1085 // Previuos counter check just tells that is has been received by submgr
1086 // --> artificial delay
1087 <-time.After(1 * time.Second)
1089 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
1090 xappConn1.RecvSubsDelResp(t, deltrans)
1092 //Wait that subs is cleaned
1093 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
1095 xappConn1.TestMsgChanEmpty(t)
1096 xappConn2.TestMsgChanEmpty(t)
1097 e2termConn1.TestMsgChanEmpty(t)
1098 mainCtrl.wait_registry_empty(t, 10)
1101 //-----------------------------------------------------------------------------
1102 // TestSubDelReqCollision
1105 // +-------+ +---------+ +---------+
1106 // | xapp | | submgr | | e2term |
1107 // +-------+ +---------+ +---------+
1109 // | [SUBS CREATE] |
1112 // | SubDelReq 1 | |
1113 // |------------->| |
1115 // | | SubDelReq 1 |
1116 // | |------------->|
1118 // | SubDelReq 2 | |
1121 // |------------->| |
1123 // | | SubDelResp 1 |
1124 // | |<-------------|
1126 // | SubDelResp 1 | |
1127 // |<-------------| |
1129 // | SubDelResp 2 | |
1130 // |<-------------| |
1132 //-----------------------------------------------------------------------------
1134 func TestSubDelReqCollision(t *testing.T) {
1135 CaseBegin("TestSubDelReqCollision")
1138 cretrans := xappConn1.SendSubsReq(t, nil, nil)
1139 crereq, cremsg := e2termConn1.RecvSubsReq(t)
1140 e2termConn1.SendSubsResp(t, crereq, cremsg)
1141 e2SubsId := xappConn1.RecvSubsResp(t, cretrans)
1144 xappConn1.SendSubsDelReq(t, nil, e2SubsId)
1145 delreq1, delmsg1 := e2termConn1.RecvSubsDelReq(t)
1147 // Subs Delete colliding
1148 seqBef := mainCtrl.get_msgcounter(t)
1149 deltranscol2 := xappConn1.NewRmrTransactionId("", "RAN_NAME_1")
1150 xappConn1.SendSubsDelReq(t, deltranscol2, e2SubsId) //Colliding SubDelReq
1151 mainCtrl.wait_msgcounter_change(t, seqBef, 10)
1153 // hack as there is no real way to see has message be handled.
1154 // Previuos counter check just tells that is has been received by submgr
1155 // --> artificial delay
1156 <-time.After(1 * time.Second)
1158 // Del resp for first and second
1159 e2termConn1.SendSubsDelResp(t, delreq1, delmsg1)
1161 // don't care in which order responses are received
1162 xappConn1.RecvSubsDelResp(t, nil)
1163 xappConn1.RecvSubsDelResp(t, nil)
1165 //Wait that subs is cleaned
1166 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
1168 xappConn1.TestMsgChanEmpty(t)
1169 xappConn2.TestMsgChanEmpty(t)
1170 e2termConn1.TestMsgChanEmpty(t)
1171 mainCtrl.wait_registry_empty(t, 10)
1174 //-----------------------------------------------------------------------------
1175 // TestSubReqAndSubDelOkTwoParallel
1178 // +-------+ +-------+ +---------+ +---------+
1179 // | xapp | | xapp | | submgr | | e2term |
1180 // +-------+ +-------+ +---------+ +---------+
1185 // | |------------->| |
1188 // | | |------------->|
1191 // |------------------------>| |
1194 // | | |------------->|
1197 // | | |<-------------|
1199 // | |<-------------| |
1202 // | | |<-------------|
1204 // |<------------------------| |
1206 // | | [SUBS 1 DELETE] |
1208 // | | [SUBS 2 DELETE] |
1211 //-----------------------------------------------------------------------------
1213 func TestSubReqAndSubDelOkTwoParallel(t *testing.T) {
1214 CaseBegin("TestSubReqAndSubDelOkTwoParallel")
1217 rparams1 := &teststube2ap.E2StubSubsReqParams{}
1219 cretrans1 := xappConn1.SendSubsReq(t, rparams1, nil)
1220 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
1223 rparams2 := &teststube2ap.E2StubSubsReqParams{}
1226 rparams2.Req.EventTriggerDefinition.Data.Length = 1
1227 rparams2.Req.EventTriggerDefinition.Data.Data = make([]uint8, rparams2.Req.EventTriggerDefinition.Data.Length)
1228 rparams2.Req.EventTriggerDefinition.Data.Data[0] = 2
1230 cretrans2 := xappConn2.SendSubsReq(t, rparams2, nil)
1231 crereq2, cremsg2 := e2termConn1.RecvSubsReq(t)
1234 e2termConn1.SendSubsResp(t, crereq1, cremsg1)
1235 e2SubsId1 := xappConn1.RecvSubsResp(t, cretrans1)
1238 e2termConn1.SendSubsResp(t, crereq2, cremsg2)
1239 e2SubsId2 := xappConn2.RecvSubsResp(t, cretrans2)
1242 deltrans1 := xappConn1.SendSubsDelReq(t, nil, e2SubsId1)
1243 delreq1, delmsg1 := e2termConn1.RecvSubsDelReq(t)
1244 e2termConn1.SendSubsDelResp(t, delreq1, delmsg1)
1245 xappConn1.RecvSubsDelResp(t, deltrans1)
1246 //Wait that subs is cleaned
1247 mainCtrl.wait_subs_clean(t, e2SubsId1, 10)
1250 deltrans2 := xappConn2.SendSubsDelReq(t, nil, e2SubsId2)
1251 delreq2, delmsg2 := e2termConn1.RecvSubsDelReq(t)
1252 e2termConn1.SendSubsDelResp(t, delreq2, delmsg2)
1253 xappConn2.RecvSubsDelResp(t, deltrans2)
1254 //Wait that subs is cleaned
1255 mainCtrl.wait_subs_clean(t, e2SubsId2, 10)
1257 xappConn1.TestMsgChanEmpty(t)
1258 xappConn2.TestMsgChanEmpty(t)
1259 e2termConn1.TestMsgChanEmpty(t)
1260 mainCtrl.wait_registry_empty(t, 10)
1263 //-----------------------------------------------------------------------------
1264 // TestSameSubsDiffRan
1265 // Same subscription to different RANs
1268 // +-------+ +---------+ +---------+
1269 // | xapp | | submgr | | e2term |
1270 // +-------+ +---------+ +---------+
1275 // |------------->| |
1278 // | |------------->|
1280 // | | SubResp(r1) |
1281 // | |<-------------|
1283 // | SubResp(r1) | |
1284 // |<-------------| |
1287 // |------------->| |
1290 // | |------------->|
1292 // | | SubResp(r2) |
1293 // | |<-------------|
1295 // | SubResp(r2) | |
1296 // |<-------------| |
1298 // | [SUBS r1 DELETE] |
1300 // | [SUBS r2 DELETE] |
1303 //-----------------------------------------------------------------------------
1304 func TestSameSubsDiffRan(t *testing.T) {
1305 CaseBegin("TestSameSubsDiffRan")
1308 cretrans1 := xappConn1.NewRmrTransactionId("", "RAN_NAME_1")
1309 xappConn1.SendSubsReq(t, nil, cretrans1)
1310 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
1311 e2termConn1.SendSubsResp(t, crereq1, cremsg1)
1312 e2SubsId1 := xappConn1.RecvSubsResp(t, cretrans1)
1315 cretrans2 := xappConn1.NewRmrTransactionId("", "RAN_NAME_2")
1316 xappConn1.SendSubsReq(t, nil, cretrans2)
1317 crereq2, cremsg2 := e2termConn1.RecvSubsReq(t)
1318 e2termConn1.SendSubsResp(t, crereq2, cremsg2)
1319 e2SubsId2 := xappConn1.RecvSubsResp(t, cretrans2)
1322 deltrans1 := xappConn1.NewRmrTransactionId("", "RAN_NAME_1")
1323 xappConn1.SendSubsDelReq(t, deltrans1, e2SubsId1)
1324 delreq1, delmsg1 := e2termConn1.RecvSubsDelReq(t)
1325 e2termConn1.SendSubsDelResp(t, delreq1, delmsg1)
1326 xappConn1.RecvSubsDelResp(t, deltrans1)
1327 //Wait that subs is cleaned
1328 mainCtrl.wait_subs_clean(t, e2SubsId1, 10)
1331 deltrans2 := xappConn1.NewRmrTransactionId("", "RAN_NAME_2")
1332 xappConn1.SendSubsDelReq(t, deltrans2, e2SubsId2)
1333 delreq2, delmsg2 := e2termConn1.RecvSubsDelReq(t)
1334 e2termConn1.SendSubsDelResp(t, delreq2, delmsg2)
1335 xappConn1.RecvSubsDelResp(t, deltrans2)
1336 //Wait that subs is cleaned
1337 mainCtrl.wait_subs_clean(t, e2SubsId2, 10)
1339 xappConn1.TestMsgChanEmpty(t)
1340 xappConn2.TestMsgChanEmpty(t)
1341 e2termConn1.TestMsgChanEmpty(t)
1342 mainCtrl.wait_registry_empty(t, 10)
1345 //-----------------------------------------------------------------------------
1346 // TestSubReqRetryInSubmgr
1349 // +-------+ +---------+ +---------+
1350 // | xapp | | submgr | | e2term |
1351 // +-------+ +---------+ +---------+
1354 // |------------->| |
1357 // | |------------->|
1361 // | |------------->|
1364 // | |<-------------|
1367 // |<-------------| |
1369 // | [SUBS DELETE] |
1372 //-----------------------------------------------------------------------------
1374 func TestSubReqRetryInSubmgr(t *testing.T) {
1375 CaseBegin("TestSubReqRetryInSubmgr start")
1377 // Init counter check
1378 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
1379 Counter{cSubReqFromXapp, 1},
1380 Counter{cSubReqToE2, 1},
1381 Counter{cSubReqTimerExpiry, 1},
1382 Counter{cSubReReqToE2, 1},
1383 Counter{cSubRespFromE2, 1},
1384 Counter{cSubRespToXapp, 1},
1385 Counter{cSubDelReqFromXapp, 1},
1386 Counter{cSubDelReqToE2, 1},
1387 Counter{cSubDelRespFromE2, 1},
1388 Counter{cSubDelRespToXapp, 1},
1391 // Xapp: Send SubsReq
1392 cretrans := xappConn1.SendSubsReq(t, nil, nil)
1394 // E2t: Receive 1st SubsReq
1395 e2termConn1.RecvSubsReq(t)
1397 // E2t: Receive 2nd SubsReq and send SubsResp
1398 crereq, cremsg := e2termConn1.RecvSubsReq(t)
1399 e2termConn1.SendSubsResp(t, crereq, cremsg)
1401 // Xapp: Receive SubsResp
1402 e2SubsId := xappConn1.RecvSubsResp(t, cretrans)
1404 deltrans := xappConn1.SendSubsDelReq(t, nil, e2SubsId)
1405 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
1406 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
1407 xappConn1.RecvSubsDelResp(t, deltrans)
1409 // Wait that subs is cleaned
1410 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
1412 xappConn1.TestMsgChanEmpty(t)
1413 xappConn2.TestMsgChanEmpty(t)
1414 e2termConn1.TestMsgChanEmpty(t)
1415 mainCtrl.wait_registry_empty(t, 10)
1417 mainCtrl.VerifyCounterValues(t)
1420 //-----------------------------------------------------------------------------
1421 // TestSubReqTwoRetriesNoRespSubDelRespInSubmgr
1424 // +-------+ +---------+ +---------+
1425 // | xapp | | submgr | | e2term |
1426 // +-------+ +---------+ +---------+
1429 // |------------->| |
1432 // | |------------->|
1436 // | |------------->|
1439 // | |------------->|
1442 // | |<-------------|
1445 //-----------------------------------------------------------------------------
1446 func TestSubReqRetryNoRespSubDelRespInSubmgr(t *testing.T) {
1447 CaseBegin("TestSubReqTwoRetriesNoRespSubDelRespInSubmgr start")
1449 // Init counter check
1450 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
1451 Counter{cSubReqFromXapp, 1},
1452 Counter{cSubReqToE2, 1},
1453 Counter{cSubReReqToE2, 1},
1454 Counter{cSubReqTimerExpiry, 2},
1455 Counter{cSubDelReqToE2, 1},
1456 Counter{cSubDelRespFromE2, 1},
1459 // Xapp: Send SubsReq
1460 xappConn1.SendSubsReq(t, nil, nil)
1462 // E2t: Receive 1st SubsReq
1463 e2termConn1.RecvSubsReq(t)
1465 // E2t: Receive 2nd SubsReq
1466 e2termConn1.RecvSubsReq(t)
1468 // E2t: Send receive SubsDelReq and send SubsResp
1469 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
1470 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
1472 // Wait that subs is cleaned
1473 mainCtrl.wait_subs_clean(t, delreq.RequestId.InstanceId, 10)
1475 xappConn1.TestMsgChanEmpty(t)
1476 xappConn2.TestMsgChanEmpty(t)
1477 e2termConn1.TestMsgChanEmpty(t)
1478 mainCtrl.wait_registry_empty(t, 10)
1480 mainCtrl.VerifyCounterValues(t)
1483 //-----------------------------------------------------------------------------
1484 // TestSubReqTwoRetriesNoRespAtAllInSubmgr
1487 // +-------+ +---------+ +---------+
1488 // | xapp | | submgr | | e2term |
1489 // +-------+ +---------+ +---------+
1492 // |------------->| |
1495 // | |------------->|
1499 // | |------------->|
1502 // | |------------->|
1506 // | |------------->|
1510 //-----------------------------------------------------------------------------
1512 func TestSubReqTwoRetriesNoRespAtAllInSubmgr(t *testing.T) {
1513 CaseBegin("TestSubReqTwoRetriesNoRespAtAllInSubmgr start")
1515 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
1516 Counter{cSubReqFromXapp, 1},
1517 Counter{cSubReqToE2, 1},
1518 Counter{cSubReReqToE2, 1},
1519 Counter{cSubReqTimerExpiry, 2},
1520 Counter{cSubDelReqToE2, 1},
1521 Counter{cSubDelReReqToE2, 1},
1522 Counter{cSubDelReqTimerExpiry, 2},
1525 // Xapp: Send SubsReq
1526 xappConn1.SendSubsReq(t, nil, nil)
1528 // E2t: Receive 1st SubsReq
1529 e2termConn1.RecvSubsReq(t)
1531 // E2t: Receive 2nd SubsReq
1532 e2termConn1.RecvSubsReq(t)
1534 // E2t: Receive 1st SubsDelReq
1535 e2termConn1.RecvSubsDelReq(t)
1537 // E2t: Receive 2nd SubsDelReq
1538 delreq, _ := e2termConn1.RecvSubsDelReq(t)
1540 // Wait that subs is cleaned
1541 mainCtrl.wait_subs_clean(t, delreq.RequestId.InstanceId, 15)
1543 xappConn1.TestMsgChanEmpty(t)
1544 xappConn2.TestMsgChanEmpty(t)
1545 e2termConn1.TestMsgChanEmpty(t)
1546 mainCtrl.wait_registry_empty(t, 10)
1548 mainCtrl.VerifyCounterValues(t)
1551 //-----------------------------------------------------------------------------
1552 // TestSubReqSubFailRespInSubmgr
1555 // +-------+ +---------+ +---------+
1556 // | xapp | | submgr | | e2term |
1557 // +-------+ +---------+ +---------+
1560 // |------------->| |
1563 // | |------------->|
1566 // | |<-------------|
1569 // |<-------------| |
1572 //-----------------------------------------------------------------------------
1574 func TestSubReqSubFailRespInSubmgr(t *testing.T) {
1575 CaseBegin("TestSubReqSubFailRespInSubmgr start")
1577 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
1578 Counter{cSubReqFromXapp, 1},
1579 Counter{cSubReqToE2, 1},
1580 Counter{cSubFailFromE2, 1},
1581 Counter{cSubFailToXapp, 1},
1584 // Xapp: Send SubsReq
1585 cretrans := xappConn1.SendSubsReq(t, nil, nil)
1587 // E2t: Receive SubsReq and send SubsFail (first)
1588 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
1589 fparams1 := &teststube2ap.E2StubSubsFailParams{}
1590 fparams1.Set(crereq1)
1591 e2termConn1.SendSubsFail(t, fparams1, cremsg1)
1593 // Xapp: Receive SubsFail
1594 e2SubsId := xappConn1.RecvSubsFail(t, cretrans)
1596 // Wait that subs is cleaned
1597 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
1599 xappConn1.TestMsgChanEmpty(t)
1600 xappConn2.TestMsgChanEmpty(t)
1601 e2termConn1.TestMsgChanEmpty(t)
1602 mainCtrl.wait_registry_empty(t, 10)
1604 mainCtrl.VerifyCounterValues(t)
1607 //-----------------------------------------------------------------------------
1608 // TestSubDelReqRetryInSubmgr
1611 // +-------+ +---------+ +---------+
1612 // | xapp | | submgr | | e2term |
1613 // +-------+ +---------+ +---------+
1615 // | [SUBS CREATE] |
1619 // |------------->| |
1622 // | |------------->|
1625 // | |------------->|
1628 // | |<-------------|
1631 // |<-------------| |
1633 //-----------------------------------------------------------------------------
1635 func TestSubDelReqRetryInSubmgr(t *testing.T) {
1637 CaseBegin("TestSubDelReqRetryInSubmgr start")
1640 cretrans := xappConn1.SendSubsReq(t, nil, nil)
1641 crereq, cremsg := e2termConn1.RecvSubsReq(t)
1642 e2termConn1.SendSubsResp(t, crereq, cremsg)
1643 e2SubsId := xappConn1.RecvSubsResp(t, cretrans)
1646 // Xapp: Send SubsDelReq
1647 deltrans := xappConn1.SendSubsDelReq(t, nil, e2SubsId)
1649 // E2t: Receive 1st SubsDelReq
1650 e2termConn1.RecvSubsDelReq(t)
1652 // E2t: Receive 2nd SubsDelReq and send SubsDelResp
1653 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
1654 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
1656 // Xapp: Receive SubsDelResp
1657 xappConn1.RecvSubsDelResp(t, deltrans)
1659 // Wait that subs is cleaned
1660 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
1662 xappConn1.TestMsgChanEmpty(t)
1663 xappConn2.TestMsgChanEmpty(t)
1664 e2termConn1.TestMsgChanEmpty(t)
1665 mainCtrl.wait_registry_empty(t, 10)
1668 //-----------------------------------------------------------------------------
1669 // TestSubDelReqTwoRetriesNoRespInSubmgr
1672 // +-------+ +---------+ +---------+
1673 // | xapp | | submgr | | e2term |
1674 // +-------+ +---------+ +---------+
1676 // | [SUBS CREATE] |
1680 // |------------->| |
1683 // | |------------->|
1686 // | |------------->|
1690 // |<-------------| |
1692 //-----------------------------------------------------------------------------
1694 func TestSubDelReqTwoRetriesNoRespInSubmgr(t *testing.T) {
1696 CaseBegin("TestSubDelReTwoRetriesNoRespInSubmgr start")
1699 cretrans := xappConn1.SendSubsReq(t, nil, nil)
1700 crereq, cremsg := e2termConn1.RecvSubsReq(t)
1701 e2termConn1.SendSubsResp(t, crereq, cremsg)
1702 e2SubsId := xappConn1.RecvSubsResp(t, cretrans)
1705 // Xapp: Send SubsDelReq
1706 deltrans := xappConn1.SendSubsDelReq(t, nil, e2SubsId)
1708 // E2t: Receive 1st SubsDelReq
1709 e2termConn1.RecvSubsDelReq(t)
1711 // E2t: Receive 2nd SubsDelReq
1712 e2termConn1.RecvSubsDelReq(t)
1714 // Xapp: Receive SubsDelResp
1715 xappConn1.RecvSubsDelResp(t, deltrans)
1717 // Wait that subs is cleaned
1718 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
1720 xappConn1.TestMsgChanEmpty(t)
1721 xappConn2.TestMsgChanEmpty(t)
1722 e2termConn1.TestMsgChanEmpty(t)
1723 mainCtrl.wait_registry_empty(t, 10)
1726 //-----------------------------------------------------------------------------
1727 // TestSubDelReqSubDelFailRespInSubmgr
1730 // +-------+ +---------+ +---------+
1731 // | xapp | | submgr | | e2term |
1732 // +-------+ +---------+ +---------+
1734 // | [SUBS CREATE] |
1738 // |------------->| |
1741 // | |------------->|
1744 // | |<-------------|
1747 // |<-------------| |
1750 //-----------------------------------------------------------------------------
1752 func TestSubDelReqSubDelFailRespInSubmgr(t *testing.T) {
1753 CaseBegin("TestSubReqSubDelFailRespInSubmgr start")
1755 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
1756 Counter{cSubReqFromXapp, 1},
1757 Counter{cSubReqToE2, 1},
1758 Counter{cSubRespFromE2, 1},
1759 Counter{cSubRespToXapp, 1},
1760 Counter{cSubDelReqFromXapp, 1},
1761 Counter{cSubDelReqToE2, 1},
1762 Counter{cSubDelFailFromE2, 1},
1763 Counter{cSubDelRespToXapp, 1},
1767 cretrans := xappConn1.SendSubsReq(t, nil, nil)
1768 crereq, cremsg := e2termConn1.RecvSubsReq(t)
1769 e2termConn1.SendSubsResp(t, crereq, cremsg)
1770 e2SubsId := xappConn1.RecvSubsResp(t, cretrans)
1772 // Xapp: Send SubsDelReq
1773 deltrans := xappConn1.SendSubsDelReq(t, nil, e2SubsId)
1775 // E2t: Send receive SubsDelReq and send SubsDelFail
1776 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
1777 e2termConn1.SendSubsDelFail(t, delreq, delmsg)
1779 // Xapp: Receive SubsDelResp
1780 xappConn1.RecvSubsDelResp(t, deltrans)
1782 // Wait that subs is cleaned
1783 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
1785 xappConn1.TestMsgChanEmpty(t)
1786 xappConn2.TestMsgChanEmpty(t)
1787 e2termConn1.TestMsgChanEmpty(t)
1788 mainCtrl.wait_registry_empty(t, 10)
1790 mainCtrl.VerifyCounterValues(t)
1793 //-----------------------------------------------------------------------------
1794 // TestSubReqAndSubDelOkSameAction
1797 // +-------+ +-------+ +---------+ +---------+
1798 // | xapp2 | | xapp1 | | submgr | | e2term |
1799 // +-------+ +-------+ +---------+ +---------+
1804 // | |------------->| |
1807 // | | |------------->|
1809 // | | |<-------------|
1811 // | |<-------------| |
1814 // |--------------------------->| |
1817 // |<---------------------------| |
1819 // | | SubDelReq 1 | |
1820 // | |------------->| |
1822 // | | SubDelResp 1 | |
1823 // | |<-------------| |
1825 // | SubDelReq 2 | |
1826 // |--------------------------->| |
1828 // | | | SubDelReq 2 |
1829 // | | |------------->|
1831 // | | | SubDelReq 2 |
1832 // | | |------------->|
1834 // | SubDelResp 2 | |
1835 // |<---------------------------| |
1837 //-----------------------------------------------------------------------------
1838 func TestSubReqAndSubDelOkSameAction(t *testing.T) {
1839 CaseBegin("TestSubReqAndSubDelOkSameAction")
1841 // Init counter check
1842 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
1843 Counter{cSubReqFromXapp, 2},
1844 Counter{cSubReqToE2, 1},
1845 Counter{cSubRespFromE2, 1},
1846 Counter{cSubRespToXapp, 2},
1847 Counter{cMergedSubscriptions, 1},
1848 Counter{cUnmergedSubscriptions, 1},
1849 Counter{cSubDelReqFromXapp, 2},
1850 Counter{cSubDelReqToE2, 1},
1851 Counter{cSubDelRespFromE2, 1},
1852 Counter{cSubDelRespToXapp, 2},
1856 rparams1 := &teststube2ap.E2StubSubsReqParams{}
1858 cretrans1 := xappConn1.SendSubsReq(t, rparams1, nil)
1859 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
1860 e2termConn1.SendSubsResp(t, crereq1, cremsg1)
1861 e2SubsId1 := xappConn1.RecvSubsResp(t, cretrans1)
1864 rparams2 := &teststube2ap.E2StubSubsReqParams{}
1866 cretrans2 := xappConn2.SendSubsReq(t, rparams2, nil)
1867 e2SubsId2 := xappConn2.RecvSubsResp(t, cretrans2)
1869 resp, _ := xapp.Subscription.QuerySubscriptions()
1870 assert.Equal(t, resp[0].SubscriptionID, int64(e2SubsId1))
1871 assert.Equal(t, resp[0].Meid, "RAN_NAME_1")
1872 assert.Equal(t, resp[0].ClientEndpoint, []string{"localhost:13560", "localhost:13660"})
1875 deltrans1 := xappConn1.SendSubsDelReq(t, nil, e2SubsId1)
1876 xappConn1.RecvSubsDelResp(t, deltrans1)
1879 deltrans2 := xappConn2.SendSubsDelReq(t, nil, e2SubsId2)
1880 delreq2, delmsg2 := e2termConn1.RecvSubsDelReq(t)
1881 e2termConn1.SendSubsDelResp(t, delreq2, delmsg2)
1882 xappConn2.RecvSubsDelResp(t, deltrans2)
1883 //Wait that subs is cleaned
1884 mainCtrl.wait_subs_clean(t, e2SubsId2, 10)
1886 xappConn1.TestMsgChanEmpty(t)
1887 xappConn2.TestMsgChanEmpty(t)
1888 e2termConn1.TestMsgChanEmpty(t)
1889 mainCtrl.wait_registry_empty(t, 10)
1891 mainCtrl.VerifyCounterValues(t)
1894 //-----------------------------------------------------------------------------
1895 // TestSubReqAndSubDelOkSameActionParallel
1898 // +-------+ +-------+ +---------+ +---------+
1899 // | xapp2 | | xapp1 | | submgr | | e2term |
1900 // +-------+ +-------+ +---------+ +---------+
1905 // | |------------->| |
1908 // | | |------------->|
1910 // |--------------------------->| |
1912 // | | |<-------------|
1914 // | |<-------------| |
1917 // |<---------------------------| |
1919 // | | SubDelReq 1 | |
1920 // | |------------->| |
1922 // | | SubDelResp 1 | |
1923 // | |<-------------| |
1925 // | SubDelReq 2 | |
1926 // |--------------------------->| |
1928 // | | | SubDelReq 2 |
1929 // | | |------------->|
1931 // | | | SubDelReq 2 |
1932 // | | |------------->|
1934 // | SubDelResp 2 | |
1935 // |<---------------------------| |
1937 //-----------------------------------------------------------------------------
1938 func TestSubReqAndSubDelOkSameActionParallel(t *testing.T) {
1939 CaseBegin("TestSubReqAndSubDelOkSameActionParallel")
1942 rparams1 := &teststube2ap.E2StubSubsReqParams{}
1944 cretrans1 := xappConn1.SendSubsReq(t, rparams1, nil)
1945 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
1948 rparams2 := &teststube2ap.E2StubSubsReqParams{}
1950 cretrans2 := xappConn2.SendSubsReq(t, rparams2, nil)
1953 e2termConn1.SendSubsResp(t, crereq1, cremsg1)
1954 e2SubsId1 := xappConn1.RecvSubsResp(t, cretrans1)
1957 e2SubsId2 := xappConn2.RecvSubsResp(t, cretrans2)
1960 deltrans1 := xappConn1.SendSubsDelReq(t, nil, e2SubsId1)
1961 xappConn1.RecvSubsDelResp(t, deltrans1)
1964 deltrans2 := xappConn2.SendSubsDelReq(t, nil, e2SubsId2)
1965 delreq2, delmsg2 := e2termConn1.RecvSubsDelReq(t)
1966 e2termConn1.SendSubsDelResp(t, delreq2, delmsg2)
1967 xappConn2.RecvSubsDelResp(t, deltrans2)
1969 //Wait that subs is cleaned
1970 mainCtrl.wait_subs_clean(t, e2SubsId2, 10)
1972 xappConn1.TestMsgChanEmpty(t)
1973 xappConn2.TestMsgChanEmpty(t)
1974 e2termConn1.TestMsgChanEmpty(t)
1975 mainCtrl.wait_registry_empty(t, 10)
1978 //-----------------------------------------------------------------------------
1979 // TestSubReqAndSubDelNokSameActionParallel
1982 // +-------+ +-------+ +---------+ +---------+
1983 // | xapp2 | | xapp1 | | submgr | | e2term |
1984 // +-------+ +-------+ +---------+ +---------+
1989 // | |------------->| |
1992 // | | |------------->|
1994 // |--------------------------->| |
1996 // | | |<-------------|
1999 // | |<-------------| |
2002 // |<---------------------------| |
2004 //-----------------------------------------------------------------------------
2005 func TestSubReqAndSubDelNokSameActionParallel(t *testing.T) {
2006 CaseBegin("TestSubReqAndSubDelNokSameActionParallel")
2009 rparams1 := &teststube2ap.E2StubSubsReqParams{}
2011 cretrans1 := xappConn1.SendSubsReq(t, rparams1, nil)
2013 // E2t: Receive SubsReq (first)
2014 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
2017 rparams2 := &teststube2ap.E2StubSubsReqParams{}
2019 subepcnt2 := mainCtrl.get_subs_entrypoint_cnt(t, crereq1.RequestId.InstanceId)
2020 cretrans2 := xappConn2.SendSubsReq(t, rparams2, nil)
2021 mainCtrl.wait_subs_entrypoint_cnt_change(t, crereq1.RequestId.InstanceId, subepcnt2, 10)
2023 // E2t: send SubsFail (first)
2024 fparams1 := &teststube2ap.E2StubSubsFailParams{}
2025 fparams1.Set(crereq1)
2026 e2termConn1.SendSubsFail(t, fparams1, cremsg1)
2029 e2SubsId1 := xappConn1.RecvSubsFail(t, cretrans1)
2031 xappConn2.RecvSubsFail(t, cretrans2)
2033 //Wait that subs is cleaned
2034 mainCtrl.wait_subs_clean(t, e2SubsId1, 15)
2036 xappConn1.TestMsgChanEmpty(t)
2037 xappConn2.TestMsgChanEmpty(t)
2038 e2termConn1.TestMsgChanEmpty(t)
2039 mainCtrl.wait_registry_empty(t, 10)
2042 //-----------------------------------------------------------------------------
2043 // TestSubReqAndSubDelNoAnswerSameActionParallel
2046 // +-------+ +-------+ +---------+ +---------+
2047 // | xapp2 | | xapp1 | | submgr | | e2term |
2048 // +-------+ +-------+ +---------+ +---------+
2053 // | |------------->| |
2056 // | | |------------->|
2058 // |--------------------------->| |
2061 // | | |------------->|
2064 // | | | SubDelReq |
2065 // | | |------------->|
2067 // | | | SubDelResp |
2068 // | | |<-------------|
2070 //-----------------------------------------------------------------------------
2071 func TestSubReqAndSubDelNoAnswerSameActionParallel(t *testing.T) {
2072 CaseBegin("TestSubReqAndSubDelNoAnswerSameActionParallel")
2075 rparams1 := &teststube2ap.E2StubSubsReqParams{}
2077 xappConn1.SendSubsReq(t, rparams1, nil)
2079 crereq1, _ := e2termConn1.RecvSubsReq(t)
2082 rparams2 := &teststube2ap.E2StubSubsReqParams{}
2084 subepcnt2 := mainCtrl.get_subs_entrypoint_cnt(t, crereq1.RequestId.InstanceId)
2085 xappConn2.SendSubsReq(t, rparams2, nil)
2086 mainCtrl.wait_subs_entrypoint_cnt_change(t, crereq1.RequestId.InstanceId, subepcnt2, 10)
2088 //Req1 (retransmitted)
2089 e2termConn1.RecvSubsReq(t)
2091 delreq1, delmsg1 := e2termConn1.RecvSubsDelReq(t)
2092 e2termConn1.SendSubsDelResp(t, delreq1, delmsg1)
2094 //Wait that subs is cleaned
2095 mainCtrl.wait_subs_clean(t, delreq1.RequestId.InstanceId, 10)
2097 xappConn1.TestMsgChanEmpty(t)
2098 xappConn2.TestMsgChanEmpty(t)
2099 e2termConn1.TestMsgChanEmpty(t)
2100 mainCtrl.wait_registry_empty(t, 15)
2103 //----------------------------- Policy cases ---------------------------------
2104 //-----------------------------------------------------------------------------
2105 // TestSubReqPolicyAndSubDelOk
2108 // +-------+ +---------+ +---------+
2109 // | xapp | | submgr | | e2term |
2110 // +-------+ +---------+ +---------+
2113 // |------------->| |
2116 // | |------------->|
2119 // | |<-------------|
2122 // |<-------------| |
2126 // |------------->| |
2129 // | |------------->|
2132 // | |<-------------|
2135 // |<-------------| |
2137 //-----------------------------------------------------------------------------
2138 func TestSubReqPolicyAndSubDelOk(t *testing.T) {
2139 CaseBegin("TestSubReqAndSubDelOk")
2141 rparams1 := &teststube2ap.E2StubSubsReqParams{}
2143 rparams1.Req.ActionSetups[0].ActionType = e2ap.E2AP_ActionTypePolicy
2144 cretrans := xappConn1.SendSubsReq(t, rparams1, nil)
2146 crereq, cremsg := e2termConn1.RecvSubsReq(t)
2147 e2termConn1.SendSubsResp(t, crereq, cremsg)
2148 e2SubsId := xappConn1.RecvSubsResp(t, cretrans)
2149 deltrans := xappConn1.SendSubsDelReq(t, nil, e2SubsId)
2150 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
2152 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
2153 xappConn1.RecvSubsDelResp(t, deltrans)
2155 //Wait that subs is cleaned
2156 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
2158 xappConn1.TestMsgChanEmpty(t)
2159 xappConn2.TestMsgChanEmpty(t)
2160 e2termConn1.TestMsgChanEmpty(t)
2161 mainCtrl.wait_registry_empty(t, 10)
2164 //-----------------------------------------------------------------------------
2165 // TestSubReqPolicyChangeAndSubDelOk
2168 // +-------+ +---------+ +---------+
2169 // | xapp | | submgr | | e2term |
2170 // +-------+ +---------+ +---------+
2173 // |------------->| |
2176 // | |------------->|
2179 // | |<-------------|
2182 // |<-------------| |
2185 // |------------->| |
2188 // | |------------->|
2191 // | |<-------------|
2194 // |<-------------| |
2197 // |------------->| |
2200 // | |------------->|
2203 // | |<-------------|
2206 // |<-------------| |
2208 //-----------------------------------------------------------------------------
2210 func TestSubReqPolicyChangeAndSubDelOk(t *testing.T) {
2211 CaseBegin("TestSubReqAndSubDelOk")
2213 rparams1 := &teststube2ap.E2StubSubsReqParams{}
2215 rparams1.Req.ActionSetups[0].ActionType = e2ap.E2AP_ActionTypePolicy
2216 cretrans := xappConn1.SendSubsReq(t, rparams1, nil)
2218 crereq, cremsg := e2termConn1.RecvSubsReq(t)
2219 e2termConn1.SendSubsResp(t, crereq, cremsg)
2220 e2SubsId := xappConn1.RecvSubsResp(t, cretrans)
2223 rparams1.Req.RequestId.InstanceId = e2SubsId
2224 rparams1.Req.ActionSetups[0].SubsequentAction.TimetoWait = e2ap.E2AP_TimeToWaitW200ms
2225 xappConn1.SendSubsReq(t, rparams1, cretrans)
2227 crereq, cremsg = e2termConn1.RecvSubsReq(t)
2228 e2termConn1.SendSubsResp(t, crereq, cremsg)
2229 e2SubsId = xappConn1.RecvSubsResp(t, cretrans)
2230 deltrans := xappConn1.SendSubsDelReq(t, nil, e2SubsId)
2231 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
2233 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
2234 xappConn1.RecvSubsDelResp(t, deltrans)
2236 //Wait that subs is cleaned
2237 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
2239 xappConn1.TestMsgChanEmpty(t)
2240 xappConn2.TestMsgChanEmpty(t)
2241 e2termConn1.TestMsgChanEmpty(t)
2242 mainCtrl.wait_registry_empty(t, 10)
2245 //-----------------------------------------------------------------------------
2246 // TestSubReqAndSubDelOkTwoE2termParallel
2249 // +-------+ +---------+ +---------+ +---------+
2250 // | xapp | | submgr | | e2term1 | | e2term2 |
2251 // +-------+ +---------+ +---------+ +---------+
2256 // |------------->| | |
2259 // | |------------->| |
2262 // |------------->| | |
2265 // | |---------------------------->|
2268 // | |<-------------| |
2270 // |<-------------| | |
2272 // | |<----------------------------|
2274 // |<-------------| | |
2276 // | [SUBS 1 DELETE] | |
2278 // | [SUBS 2 DELETE] | |
2281 //-----------------------------------------------------------------------------
2282 func TestSubReqAndSubDelOkTwoE2termParallel(t *testing.T) {
2283 CaseBegin("TestSubReqAndSubDelOkTwoE2termParallel")
2286 cretrans1 := xappConn1.NewRmrTransactionId("", "RAN_NAME_1")
2287 xappConn1.SendSubsReq(t, nil, cretrans1)
2288 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
2290 cretrans2 := xappConn1.NewRmrTransactionId("", "RAN_NAME_11")
2291 xappConn1.SendSubsReq(t, nil, cretrans2)
2292 crereq2, cremsg2 := e2termConn2.RecvSubsReq(t)
2295 e2termConn1.SendSubsResp(t, crereq1, cremsg1)
2296 e2SubsId1 := xappConn1.RecvSubsResp(t, cretrans1)
2299 e2termConn2.SendSubsResp(t, crereq2, cremsg2)
2300 e2SubsId2 := xappConn1.RecvSubsResp(t, cretrans2)
2303 deltrans1 := xappConn1.SendSubsDelReq(t, nil, e2SubsId1)
2304 delreq1, delmsg1 := e2termConn1.RecvSubsDelReq(t)
2305 e2termConn1.SendSubsDelResp(t, delreq1, delmsg1)
2306 xappConn1.RecvSubsDelResp(t, deltrans1)
2307 //Wait that subs is cleaned
2308 mainCtrl.wait_subs_clean(t, e2SubsId1, 10)
2311 deltrans2 := xappConn1.SendSubsDelReq(t, nil, e2SubsId2)
2312 delreq2, delmsg2 := e2termConn2.RecvSubsDelReq(t)
2313 e2termConn2.SendSubsDelResp(t, delreq2, delmsg2)
2314 xappConn1.RecvSubsDelResp(t, deltrans2)
2315 //Wait that subs is cleaned
2316 mainCtrl.wait_subs_clean(t, e2SubsId2, 10)
2318 xappConn1.TestMsgChanEmpty(t)
2319 xappConn2.TestMsgChanEmpty(t)
2320 e2termConn1.TestMsgChanEmpty(t)
2321 e2termConn2.TestMsgChanEmpty(t)
2322 mainCtrl.wait_registry_empty(t, 10)
2325 //-----------------------------------------------------------------------------
2326 // TestSubReqInsertAndSubDelOk
2329 // +-------+ +---------+ +---------+
2330 // | xapp | | submgr | | e2term |
2331 // +-------+ +---------+ +---------+
2334 // |------------->| |
2337 // | |------------->|
2340 // | |<-------------|
2343 // |<-------------| |
2347 // |------------->| |
2350 // | |------------->|
2353 // | |<-------------|
2356 // |<-------------| |
2358 //-----------------------------------------------------------------------------
2359 func TestSubReqInsertAndSubDelOk(t *testing.T) {
2360 CaseBegin("TestInsertSubReqAndSubDelOk")
2362 rparams1 := &teststube2ap.E2StubSubsReqParams{}
2364 rparams1.Req.ActionSetups[0].ActionType = e2ap.E2AP_ActionTypeInsert
2365 cretrans := xappConn1.SendSubsReq(t, rparams1, nil)
2367 crereq, cremsg := e2termConn1.RecvSubsReq(t)
2368 e2termConn1.SendSubsResp(t, crereq, cremsg)
2369 e2SubsId := xappConn1.RecvSubsResp(t, cretrans)
2370 deltrans := xappConn1.SendSubsDelReq(t, nil, e2SubsId)
2371 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
2373 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
2374 xappConn1.RecvSubsDelResp(t, deltrans)
2376 //Wait that subs is cleaned
2377 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
2379 xappConn1.TestMsgChanEmpty(t)
2380 xappConn2.TestMsgChanEmpty(t)
2381 e2termConn1.TestMsgChanEmpty(t)
2382 mainCtrl.wait_registry_empty(t, 10)
2385 //-----------------------------------------------------------------------------
2386 // TestSubReqRetransmissionWithSameSubIdDiffXid
2388 // This case simulates case where xApp restarts and starts sending same
2389 // subscription requests which have already subscribed successfully
2392 // +-------+ +---------+ +---------+
2393 // | xapp | | submgr | | e2term |
2394 // +-------+ +---------+ +---------+
2397 // |------------->| |
2400 // | |------------->|
2403 // | |<-------------|
2406 // |<-------------| |
2408 // | xApp restart | |
2411 // | (retrans with same xApp generated subid but diff xid)
2412 // |------------->| |
2415 // |<-------------| |
2417 // | [SUBS DELETE] |
2420 //-----------------------------------------------------------------------------
2421 func TestSubReqRetransmissionWithSameSubIdDiffXid(t *testing.T) {
2422 CaseBegin("TestSubReqRetransmissionWithSameSubIdDiffXid")
2425 cretrans := xappConn1.SendSubsReq(t, nil, nil)
2426 crereq, cremsg := e2termConn1.RecvSubsReq(t)
2427 e2termConn1.SendSubsResp(t, crereq, cremsg)
2428 e2SubsId := xappConn1.RecvSubsResp(t, cretrans)
2430 // xApp restart here
2431 // --> artificial delay
2432 <-time.After(1 * time.Second)
2435 cretrans = xappConn1.SendSubsReq(t, nil, nil) //Retransmitted SubReq
2436 e2SubsId = xappConn1.RecvSubsResp(t, cretrans)
2439 deltrans := xappConn1.SendSubsDelReq(t, nil, e2SubsId)
2440 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
2441 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
2442 xappConn1.RecvSubsDelResp(t, deltrans)
2444 //Wait that subs is cleaned
2445 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
2447 xappConn1.TestMsgChanEmpty(t)
2448 xappConn2.TestMsgChanEmpty(t)
2449 e2termConn1.TestMsgChanEmpty(t)
2450 mainCtrl.wait_registry_empty(t, 10)
2453 //-----------------------------------------------------------------------------
2454 // TestSubReqNokAndSubDelOkWithRestartInMiddle
2457 // +-------+ +---------+ +---------+
2458 // | xapp | | submgr | | e2term |
2459 // +-------+ +---------+ +---------+
2462 // |------------->| |
2465 // | |------------->|
2470 // | Submgr restart |
2474 // | |------------->|
2477 // | |<-------------|
2480 //-----------------------------------------------------------------------------
2482 func TestSubReqNokAndSubDelOkWithRestartInMiddle(t *testing.T) {
2483 CaseBegin("TestSubReqNokAndSubDelOkWithRestartInMiddle")
2485 mainCtrl.SetResetTestFlag(t, true) // subs.DoNotWaitSubResp will be set TRUE for the subscription
2486 xappConn1.SendSubsReq(t, nil, nil)
2487 e2termConn1.RecvSubsReq(t)
2488 mainCtrl.SetResetTestFlag(t, false)
2490 resp, _ := xapp.Subscription.QuerySubscriptions()
2491 assert.Equal(t, resp[0].Meid, "RAN_NAME_1")
2492 assert.Equal(t, resp[0].ClientEndpoint, []string{"localhost:13560"})
2493 e2SubsId := uint32(resp[0].SubscriptionID)
2494 t.Logf("e2SubsId = %v", e2SubsId)
2496 mainCtrl.SimulateRestart(t)
2497 xapp.Logger.Debug("mainCtrl.SimulateRestart done")
2499 // Submgr send delete for uncompleted subscription
2500 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
2501 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
2503 // Wait that subs is cleaned
2504 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
2506 xappConn1.TestMsgChanEmpty(t)
2507 xappConn2.TestMsgChanEmpty(t)
2508 e2termConn1.TestMsgChanEmpty(t)
2509 mainCtrl.wait_registry_empty(t, 10)
2512 //-----------------------------------------------------------------------------
2513 // TestSubReqAndSubDelOkWithRestartInMiddle
2516 // +-------+ +---------+ +---------+
2517 // | xapp | | submgr | | e2term |
2518 // +-------+ +---------+ +---------+
2521 // |------------->| |
2524 // | |------------->|
2527 // | |<-------------|
2530 // |<-------------| |
2533 // | Submgr restart |
2536 // |------------->| |
2539 // | |------------->|
2542 // | |<-------------|
2545 // |<-------------| |
2547 //-----------------------------------------------------------------------------
2549 func TestSubReqAndSubDelOkWithRestartInMiddle(t *testing.T) {
2550 CaseBegin("TestSubReqAndSubDelOkWithRestartInMiddle")
2552 cretrans := xappConn1.SendSubsReq(t, nil, nil)
2553 crereq, cremsg := e2termConn1.RecvSubsReq(t)
2554 e2termConn1.SendSubsResp(t, crereq, cremsg)
2555 e2SubsId := xappConn1.RecvSubsResp(t, cretrans)
2557 // Check subscription
2558 resp, _ := xapp.Subscription.QuerySubscriptions()
2559 assert.Equal(t, resp[0].SubscriptionID, int64(e2SubsId))
2560 assert.Equal(t, resp[0].Meid, "RAN_NAME_1")
2561 assert.Equal(t, resp[0].ClientEndpoint, []string{"localhost:13560"})
2563 mainCtrl.SimulateRestart(t)
2564 xapp.Logger.Debug("mainCtrl.SimulateRestart done")
2566 // ReadE2Subscriptions() for testing is running in own go routine (go mainCtrl.c.ReadE2Subscriptions())
2567 // That needs to be completed before successful subscription query is possible
2568 <-time.After(time.Second * 1)
2570 // Check that subscription is restored correctly after restart
2571 resp, _ = xapp.Subscription.QuerySubscriptions()
2572 assert.Equal(t, resp[0].SubscriptionID, int64(e2SubsId))
2573 assert.Equal(t, resp[0].Meid, "RAN_NAME_1")
2574 assert.Equal(t, resp[0].ClientEndpoint, []string{"localhost:13560"})
2576 deltrans := xappConn1.SendSubsDelReq(t, nil, e2SubsId)
2577 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
2578 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
2579 xappConn1.RecvSubsDelResp(t, deltrans)
2581 //Wait that subs is cleaned
2582 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
2584 xappConn1.TestMsgChanEmpty(t)
2585 xappConn2.TestMsgChanEmpty(t)
2586 e2termConn1.TestMsgChanEmpty(t)
2587 mainCtrl.wait_registry_empty(t, 10)
2590 //-----------------------------------------------------------------------------
2591 // TestSubReqAndSubDelOkSameActionWithRestartsInMiddle
2594 // +-------+ +-------+ +---------+ +---------+
2595 // | xapp2 | | xapp1 | | submgr | | e2term |
2596 // +-------+ +-------+ +---------+ +---------+
2601 // | |------------->| |
2604 // | | |------------->|
2606 // | | |<-------------|
2608 // | |<-------------| |
2611 // | submgr restart |
2616 // |--------------------------->| |
2619 // |<---------------------------| |
2621 // | | SubDelReq 1 | |
2622 // | |------------->| |
2624 // | | SubDelResp 1 | |
2625 // | |<-------------| |
2629 // | submgr restart |
2632 // | SubDelReq 2 | |
2633 // |--------------------------->| |
2635 // | | | SubDelReq 2 |
2636 // | | |------------->|
2638 // | | | SubDelReq 2 |
2639 // | | |------------->|
2641 // | SubDelResp 2 | |
2642 // |<---------------------------| |
2644 //-----------------------------------------------------------------------------
2646 func TestSubReqAndSubDelOkSameActionWithRestartsInMiddle(t *testing.T) {
2647 CaseBegin("TestSubReqAndSubDelOkSameActionWithRestartsInMiddle")
2650 rparams1 := &teststube2ap.E2StubSubsReqParams{}
2652 cretrans1 := xappConn1.SendSubsReq(t, rparams1, nil)
2653 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
2654 e2termConn1.SendSubsResp(t, crereq1, cremsg1)
2655 e2SubsId1 := xappConn1.RecvSubsResp(t, cretrans1)
2658 rparams2 := &teststube2ap.E2StubSubsReqParams{}
2660 cretrans2 := xappConn2.SendSubsReq(t, rparams2, nil)
2661 e2SubsId2 := xappConn2.RecvSubsResp(t, cretrans2)
2663 // Check subscription
2664 resp, _ := xapp.Subscription.QuerySubscriptions()
2665 assert.Equal(t, resp[0].SubscriptionID, int64(e2SubsId1))
2666 assert.Equal(t, resp[0].Meid, "RAN_NAME_1")
2667 assert.Equal(t, resp[0].ClientEndpoint, []string{"localhost:13560", "localhost:13660"})
2669 mainCtrl.SimulateRestart(t)
2670 xapp.Logger.Debug("mainCtrl.SimulateRestart done")
2672 // ReadE2Subscriptions() for testing is running in own go routine (go mainCtrl.c.ReadE2Subscriptions())
2673 // That needs to be completed before successful subscription query is possible
2674 <-time.After(time.Second * 1)
2676 // Check that subscription is restored correctly after restart
2677 resp, _ = xapp.Subscription.QuerySubscriptions()
2678 assert.Equal(t, resp[0].SubscriptionID, int64(e2SubsId1))
2679 assert.Equal(t, resp[0].Meid, "RAN_NAME_1")
2680 assert.Equal(t, resp[0].ClientEndpoint, []string{"localhost:13560", "localhost:13660"})
2683 deltrans1 := xappConn1.SendSubsDelReq(t, nil, e2SubsId1)
2684 xapp.Logger.Debug("xappConn1.RecvSubsDelResp")
2685 xappConn1.RecvSubsDelResp(t, deltrans1)
2686 xapp.Logger.Debug("xappConn1.RecvSubsDelResp received")
2688 mainCtrl.SimulateRestart(t)
2689 xapp.Logger.Debug("mainCtrl.SimulateRestart done")
2691 // ReadE2Subscriptions() for testing is running in own go routine (go mainCtrl.c.ReadE2Subscriptions())
2692 // Submgr need be ready before successful subscription deletion is possible
2693 <-time.After(time.Second * 1)
2696 deltrans2 := xappConn2.SendSubsDelReq(t, nil, e2SubsId2)
2697 delreq2, delmsg2 := e2termConn1.RecvSubsDelReq(t)
2699 e2termConn1.SendSubsDelResp(t, delreq2, delmsg2)
2700 xappConn2.RecvSubsDelResp(t, deltrans2)
2702 //Wait that subs is cleaned
2703 mainCtrl.wait_subs_clean(t, e2SubsId2, 10)
2705 xappConn1.TestMsgChanEmpty(t)
2706 xappConn2.TestMsgChanEmpty(t)
2707 e2termConn1.TestMsgChanEmpty(t)
2708 mainCtrl.wait_registry_empty(t, 10)
2711 //*****************************************************************************
2712 // REST interface test cases
2713 //*****************************************************************************
2715 //-----------------------------------------------------------------------------
2716 // Test debug GET and POST requests
2719 // +-------+ +---------+
2720 // | user | | submgr |
2721 // +-------+ +---------+
2728 func TestGetSubscriptions(t *testing.T) {
2730 mainCtrl.SendGetRequest(t, "localhost:8088", "/ric/v1/subscriptions")
2733 func TestGetSymptomData(t *testing.T) {
2735 mainCtrl.SendGetRequest(t, "localhost:8080", "/ric/v1/symptomdata")
2738 func TestPostdeleteSubId(t *testing.T) {
2740 mainCtrl.SendPostRequest(t, "localhost:8080", "/ric/v1/test/deletesubid=1")
2743 func TestPostEmptyDb(t *testing.T) {
2745 mainCtrl.SendPostRequest(t, "localhost:8080", "/ric/v1/test/emptydb")
2748 func TestGetRestSubscriptions(t *testing.T) {
2750 mainCtrl.SendGetRequest(t, "localhost:8080", "/ric/v1/restsubscriptions")
2753 //-----------------------------------------------------------------------------
2754 // TestDelAllE2nodeSubsViaDebugIf
2757 // +-------+ +---------+ +---------+ +---------+
2758 // | xapp | | submgr | | e2term | | rtmgr |
2759 // +-------+ +---------+ +---------+ +---------+
2761 // | RESTSubReq | | |
2762 // |---------------->| | |
2763 // | RESTSubResp | | |
2764 // |<----------------| | |
2765 // | | RouteCreate | |
2766 // | |--------------------------->|
2767 // | | RouteResponse| |
2768 // | |<---------------------------|
2770 // | |------------->| |
2772 // | |<-------------| |
2773 // | RESTNotif1 | | |
2774 // |<----------------| | |
2776 // | REST get_all_e2nodes | |
2777 // |---------------->| | |
2779 // |<----------------| | |
2780 // | REST delete_all_e2node_subscriptions | ranName = RAN_NAME_1
2781 // |---------------->| | |
2783 // |<----------------| | |
2784 // | | SubDelReq | |
2785 // | |------------->| |
2786 // | | SubDelResp | |
2787 // | |<-------------| |
2789 // | | RouteDelete | |
2790 // | |--------------------------->|
2791 // | | RouteResponse| |
2792 // | |<---------------------------|
2794 //-----------------------------------------------------------------------------
2796 func TestDelAllE2nodeSubsViaDebugIf(t *testing.T) {
2798 // Init counter check
2799 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
2800 Counter{cRestSubReqFromXapp, 1},
2801 Counter{cRestSubRespToXapp, 1},
2802 Counter{cSubReqToE2, 1},
2803 Counter{cSubRespFromE2, 1},
2804 Counter{cRestSubNotifToXapp, 1},
2805 Counter{cRestSubDelReqFromXapp, 1},
2806 Counter{cSubDelReqToE2, 1},
2807 Counter{cSubDelRespFromE2, 1},
2808 Counter{cRestSubDelRespToXapp, 1},
2811 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
2812 restSubId := xappConn1.SendRESTSubsReq(t, params)
2813 xapp.Logger.Debug("Send REST Policy subscriber request for subscriberId : %v", restSubId)
2815 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
2816 xappConn1.ExpectRESTNotification(t, restSubId)
2817 e2termConn1.SendSubsResp(t, crereq1, cremsg1)
2818 e2SubsId := xappConn1.WaitRESTNotification(t, restSubId)
2819 xapp.Logger.Debug("REST notification received e2SubsId=%v", e2SubsId)
2821 e2nodesJson := mainCtrl.SendGetRequest(t, "localhost:8080", "/ric/v1/get_all_e2nodes")
2823 var e2nodesList []string
2824 err := json.Unmarshal(e2nodesJson, &e2nodesList)
2826 t.Errorf("Unmarshal error: %s", err)
2828 assert.Equal(t, true, mainCtrl.VerifyStringExistInSlice("RAN_NAME_1", e2nodesList))
2830 e2RestSubsJson := mainCtrl.SendGetRequest(t, "localhost:8080", "/ric/v1/get_e2node_rest_subscriptions/RAN_NAME_1") // RAN_NAME_1 = ranName
2831 var e2RestSubsMap map[string]RESTSubscription
2832 err = json.Unmarshal(e2RestSubsJson, &e2RestSubsMap)
2834 t.Errorf("Unmarshal error: %s", err)
2837 if len(e2RestSubsMap) != 1 {
2838 t.Errorf("Incorrect e2RestSubsMap length %v", len(e2RestSubsMap))
2841 // Simulate deletion through REST test and debug interface
2842 mainCtrl.SendDeleteRequest(t, "localhost:8080", "/ric/v1/delete_all_e2node_subscriptions/RAN_NAME_1") // RAN_NAME_1 = ranName
2843 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
2844 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
2846 // Wait that subs is cleaned
2847 waitSubsCleanup(t, e2SubsId, 10)
2848 mainCtrl.VerifyCounterValues(t)
2849 mainCtrl.VerifyAllClean(t)
2852 //-----------------------------------------------------------------------------
2853 // TestDelAllxAppSubsViaDebugIf
2856 // +-------+ +---------+ +---------+ +---------+
2857 // | xapp | | submgr | | e2term | | rtmgr |
2858 // +-------+ +---------+ +---------+ +---------+
2860 // | RESTSubReq | | |
2861 // |---------------->| | |
2862 // | RESTSubResp | | |
2863 // |<----------------| | |
2864 // | | RouteCreate | |
2865 // | |--------------------------->|
2866 // | | RouteResponse| |
2867 // | |<---------------------------|
2869 // | |------------->| |
2871 // | |<-------------| |
2872 // | RESTNotif1 | | |
2873 // |<----------------| | |
2875 // | REST get_all_xapps | |
2876 // |---------------->| | |
2878 // |<----------------| | |
2879 // | REST delete_all_xapp_subscriptions | xappServiceName = localhost
2880 // |---------------->| | |
2882 // |<----------------| | |
2883 // | | SubDelReq | |
2884 // | |------------->| |
2885 // | | SubDelResp | |
2886 // | |<-------------| |
2888 // | | RouteDelete | |
2889 // | |--------------------------->|
2890 // | | RouteResponse| |
2891 // | |<---------------------------|
2893 //-----------------------------------------------------------------------------
2895 func TestDelAllxAppSubsViaDebugIf(t *testing.T) {
2897 // Init counter check
2898 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
2899 Counter{cRestSubReqFromXapp, 1},
2900 Counter{cRestSubRespToXapp, 1},
2901 Counter{cSubReqToE2, 1},
2902 Counter{cSubRespFromE2, 1},
2903 Counter{cRestSubNotifToXapp, 1},
2904 Counter{cRestSubDelReqFromXapp, 1},
2905 Counter{cSubDelReqToE2, 1},
2906 Counter{cSubDelRespFromE2, 1},
2907 Counter{cRestSubDelRespToXapp, 1},
2910 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
2911 restSubId := xappConn1.SendRESTSubsReq(t, params)
2912 xapp.Logger.Debug("Send REST Policy subscriber request for subscriberId : %v", restSubId)
2914 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
2915 xappConn1.ExpectRESTNotification(t, restSubId)
2916 e2termConn1.SendSubsResp(t, crereq1, cremsg1)
2917 e2SubsId := xappConn1.WaitRESTNotification(t, restSubId)
2918 xapp.Logger.Debug("REST notification received e2SubsId=%v", e2SubsId)
2920 xappsJson := mainCtrl.SendGetRequest(t, "localhost:8080", "/ric/v1/get_all_xapps")
2922 var xappList []string
2923 err := json.Unmarshal(xappsJson, &xappList)
2925 t.Errorf("Unmarshal error: %s", err)
2927 assert.Equal(t, true, mainCtrl.VerifyStringExistInSlice("localhost", xappList))
2929 // Simulate deletion through REST test and debug interface
2930 mainCtrl.SendDeleteRequest(t, "localhost:8080", "/ric/v1/delete_all_xapp_subscriptions/localhost") // localhost = xappServiceName
2931 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
2932 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
2934 // Wait that subs is cleaned
2935 waitSubsCleanup(t, e2SubsId, 10)
2936 mainCtrl.VerifyCounterValues(t)
2937 mainCtrl.VerifyAllClean(t)
2940 //-----------------------------------------------------------------------------
2941 // TestDelViaxAppSubsIf
2944 // +-------+ +---------+ +---------+ +---------+
2945 // | xapp | | submgr | | e2term | | rtmgr |
2946 // +-------+ +---------+ +---------+ +---------+
2948 // | RESTSubReq | | |
2949 // |---------------->| | |
2950 // | RESTSubResp | | |
2951 // |<----------------| | |
2952 // | | RouteCreate | |
2953 // | |--------------------------->|
2954 // | | RouteResponse| |
2955 // | |<---------------------------|
2957 // | |------------->| |
2959 // | |<-------------| |
2960 // | RESTNotif1 | | |
2961 // |<----------------| | |
2963 // | REST get_xapp_rest_restsubscriptions |
2964 // |---------------->| | |
2966 // |<----------------| | |
2967 // | RESTSudDel | | |
2968 // |---------------->| | | Via user curl command (port 8088)
2969 // | RESTSudDel | | |
2970 // |<----------------| | |
2971 // | | SubDelReq | |
2972 // | |------------->| |
2973 // | | SubDelResp | |
2974 // | |<-------------| |
2976 // | | RouteDelete | |
2977 // | |--------------------------->|
2978 // | | RouteResponse| |
2979 // | |<---------------------------|
2981 //-----------------------------------------------------------------------------
2983 func TestDelViaxAppSubsIf(t *testing.T) {
2985 // Init counter check
2986 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
2987 Counter{cRestSubReqFromXapp, 1},
2988 Counter{cRestSubRespToXapp, 1},
2989 Counter{cSubReqToE2, 1},
2990 Counter{cSubRespFromE2, 1},
2991 Counter{cRestSubNotifToXapp, 1},
2992 Counter{cRestSubDelReqFromXapp, 1},
2993 Counter{cSubDelReqToE2, 1},
2994 Counter{cSubDelRespFromE2, 1},
2995 Counter{cRestSubDelRespToXapp, 1},
2998 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
2999 restSubId := xappConn1.SendRESTSubsReq(t, params)
3000 xapp.Logger.Debug("Send REST Policy subscriber request for subscriberId : %v", restSubId)
3002 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
3003 xappConn1.ExpectRESTNotification(t, restSubId)
3004 e2termConn1.SendSubsResp(t, crereq1, cremsg1)
3005 e2SubsId := xappConn1.WaitRESTNotification(t, restSubId)
3006 xapp.Logger.Debug("REST notification received e2SubsId=%v", e2SubsId)
3008 restSubsListJson := mainCtrl.SendGetRequest(t, "localhost:8080", "/ric/v1/get_xapp_rest_restsubscriptions/localhost") // localhost = xappServiceName
3010 var restSubsMap map[string]RESTSubscription
3011 err := json.Unmarshal(restSubsListJson, &restSubsMap)
3013 t.Errorf("Unmarshal error: %s", err)
3015 _, ok := restSubsMap[restSubId]
3017 t.Errorf("REST subscription not found. restSubId=%s", restSubId)
3020 var e2Subscriptions []Subscription
3021 e2SubscriptionsJson := mainCtrl.SendGetRequest(t, "localhost:8080", "/ric/v1/get_e2subscriptions/"+restSubId)
3022 err = json.Unmarshal(e2SubscriptionsJson, &e2Subscriptions)
3024 t.Errorf("Unmarshal error: %s", err)
3026 if len(e2Subscriptions) != 1 {
3027 t.Errorf("Incorrect e2Subscriptions length %v", len(e2Subscriptions))
3030 // Simulate deletion through xapp REST test interface
3031 mainCtrl.SendDeleteRequest(t, "localhost:8088", "/ric/v1/subscriptions/"+restSubId)
3032 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
3033 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
3035 // Wait that subs is cleaned
3036 waitSubsCleanup(t, e2SubsId, 10)
3037 mainCtrl.VerifyCounterValues(t)
3038 mainCtrl.VerifyAllClean(t)
3041 //-----------------------------------------------------------------------------
3042 // TestRESTSubReqAndRouteNok
3045 // +-------+ +---------+ +---------+
3046 // | xapp | | submgr | | rtmgr |
3047 // +-------+ +---------+ +---------+
3050 // |---------------->| |
3052 // | RESTSubResp | |
3053 // |<----------------| |
3054 // | | RouteCreate |
3055 // | |------------->|
3056 // | | RouteCreate |
3058 // | |(Bad request) |
3059 // | |<-------------|
3061 // |<----------------| |
3063 // | [SUBS INT DELETE] |
3065 // | RESTSubDelReq | |
3066 // |---------------->| |
3067 // | RESTSubDelResp | |
3068 // |<----------------| |
3070 //-----------------------------------------------------------------------------
3071 func TestRESTSubReqAndRouteNok(t *testing.T) {
3073 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
3074 Counter{cRestSubReqFromXapp, 1},
3075 Counter{cRestSubRespToXapp, 1},
3076 Counter{cRouteCreateFail, 1},
3077 Counter{cRestSubFailNotifToXapp, 1},
3078 Counter{cRestSubDelReqFromXapp, 1},
3079 Counter{cRestSubDelRespToXapp, 1},
3082 const subReqCount int = 1
3084 // Add delay for rtmgt HTTP handling so that HTTP response is received before notify on XAPP side
3085 waiter := rtmgrHttp.AllocNextSleep(50, false)
3086 newSubsId := mainCtrl.get_registry_next_subid(t)
3089 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
3090 restSubId := xappConn1.SendRESTSubsReq(t, params)
3091 xappConn1.ExpectRESTNotificationNok(t, restSubId, "failAll")
3092 waiter.WaitResult(t)
3094 e2SubsId := xappConn1.WaitRESTNotification(t, restSubId)
3095 xapp.Logger.Debug("TEST: REST notification received e2SubsId=%v", e2SubsId)
3098 xappConn1.SendRESTSubsDelReq(t, &restSubId)
3100 // Wait that subs is cleaned
3101 mainCtrl.wait_subs_clean(t, newSubsId, 10)
3102 waitSubsCleanup(t, e2SubsId, 10)
3103 mainCtrl.VerifyCounterValues(t)
3104 mainCtrl.VerifyAllClean(t)
3107 //-----------------------------------------------------------------------------
3108 // TestRESTSubReqAndRouteUpdateNok
3110 // stub stub stub stub
3111 // +-------+ +-------+ +---------+ +---------+ +---------+
3112 // | xapp1 | | xapp2 | | submgr | | rtmgr | | e2term |
3113 // +-------+ +-------+ +---------+ +---------+ +---------+
3115 // | RESTSubReq1 | | |
3116 // |------------------------>| | |
3117 // | RESTSubResp2 | | |
3118 // |<------------------------| | |
3120 // | | | RouteCreate | |
3121 // | | |------------->| |
3122 // | | | CreateResp | |
3123 // | | |<-------------| |
3125 // | | |---------------------------->|
3126 // | | | SubResp | |
3127 // | | |<----------------------------|
3128 // | RESTNotif1 | | |
3129 // |<------------------------| | |
3131 // | | RESTSubReq2 | | |
3132 // | |------------>| | |
3133 // | | RESTSubResp2| | |
3134 // | |<------------| | |
3135 // | | | RouteUpdate | |
3136 // | | |------------->| |
3137 // | | | RouteUpdate | |
3138 // | | | status:400 | |
3139 // | | |(Bad request) | |
3140 // | | |<-------------| |
3141 // | | RESTNotif2(unsuccessful) | |
3142 // | |<------------| | |
3144 // | [SUBS INT DELETE] | |
3146 // | RESTSubDelReq1 | | |
3147 // |------------------------>| | |
3148 // | RESTSubDelResp1 | | |
3149 // |<------------------------| | |
3151 // | | | [SUBS DELETE] |
3153 //-----------------------------------------------------------------------------
3154 func TestRESTSubReqAndRouteUpdateNok(t *testing.T) {
3156 //Init counter check
3157 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
3158 Counter{cRestSubReqFromXapp, 2},
3159 Counter{cRestSubRespToXapp, 2},
3160 Counter{cSubReqToE2, 1},
3161 Counter{cSubRespFromE2, 1},
3162 Counter{cRestSubNotifToXapp, 1},
3163 Counter{cRestSubFailNotifToXapp, 1},
3164 Counter{cRouteCreateUpdateFail, 1},
3165 Counter{cRestSubDelReqFromXapp, 2},
3166 Counter{cSubDelReqToE2, 1},
3167 Counter{cSubDelRespFromE2, 1},
3168 Counter{cRestSubDelRespToXapp, 2},
3171 var params *teststube2ap.RESTSubsReqParams = nil
3173 // Subs create for xapp1
3174 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
3176 queryXappSubscription(t, int64(e2SubsId), "RAN_NAME_1", []string{"localhost:13560"})
3178 // xapp2 ROUTE creation shall fail with 400 from rtmgr -> submgr
3179 waiter := rtmgrHttp.AllocNextEvent(false)
3180 newSubsId := mainCtrl.get_registry_next_subid(t)
3181 params = xappConn2.GetRESTSubsReqReportParams(subReqCount)
3182 params.SetMeid("RAN_NAME_1")
3183 restSubId2 := xappConn2.SendRESTSubsReq(t, params)
3184 xapp.Logger.Debug("Send REST subscriber request for second subscriber : %v", restSubId2)
3185 xappConn2.ExpectRESTNotificationNok(t, restSubId2, "allFail")
3186 waiter.WaitResult(t)
3187 xappConn2.WaitRESTNotification(t, restSubId2)
3189 queryXappSubscription(t, int64(e2SubsId), "RAN_NAME_1", []string{"localhost:13560"})
3191 deleteSubscription(t, xappConn1, e2termConn1, &restSubId)
3192 xappConn2.SendRESTSubsDelReq(t, &restSubId2)
3194 mainCtrl.wait_subs_clean(t, newSubsId, 10)
3195 //Wait that subs is cleaned
3196 waitSubsCleanup(t, e2SubsId, 10)
3198 mainCtrl.VerifyCounterValues(t)
3199 mainCtrl.VerifyAllClean(t)
3202 //-----------------------------------------------------------------------------
3203 // TestRESTSubDelReqAndRouteDeleteNok
3206 // +-------+ +---------+ +---------+ +---------+
3207 // | xapp | | submgr | | rtmgr | | e2term |
3208 // +-------+ +---------+ +---------+ +---------+
3210 // | RESTSubReq | | |
3211 // |---------------->| | |
3213 // | RESTSubResp | | |
3214 // |<----------------| | |
3216 // | |---------------------------->|
3218 // | |<----------------------------|
3219 // | RESTNotif | | |
3220 // |<----------------| | |
3223 // | RESTSubDelReq | | |
3224 // |---------------->| | |
3225 // | RESTSubDelResp | | |
3226 // |<----------------| | |
3227 // | | SubSelReq | |
3228 // | |---------------------------->|
3229 // | | SubSelResp | |
3230 // | |<----------------------------|
3231 // | | RouteDelete | |
3232 // | |------------->| |
3233 // | | Routedelete | |
3234 // | | status:400 | |
3235 // | |(Bad request) | |
3236 // | |<-------------| |
3238 //-----------------------------------------------------------------------------
3240 func TestRESTSubDelReqAndRouteDeleteNok(t *testing.T) {
3242 // Init counter check
3243 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
3244 Counter{cRestSubReqFromXapp, 1},
3245 Counter{cRestSubRespToXapp, 1},
3246 Counter{cSubReqToE2, 1},
3247 Counter{cSubRespFromE2, 1},
3248 Counter{cRestSubNotifToXapp, 1},
3249 Counter{cRestSubDelReqFromXapp, 1},
3250 Counter{cRouteDeleteFail, 1},
3251 Counter{cSubDelReqToE2, 1},
3252 Counter{cSubDelRespFromE2, 1},
3253 Counter{cRestSubDelRespToXapp, 1},
3256 var params *teststube2ap.RESTSubsReqParams = nil
3259 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
3261 queryXappSubscription(t, int64(e2SubsId), "RAN_NAME_1", []string{"localhost:13560"})
3263 waiter := rtmgrHttp.AllocNextEvent(false)
3264 xappConn1.SendRESTSubsDelReq(t, &restSubId)
3265 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
3266 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
3267 waiter.WaitResult(t)
3269 waitSubsCleanup(t, e2SubsId, 10)
3270 mainCtrl.VerifyCounterValues(t)
3271 mainCtrl.VerifyAllClean(t)
3274 //-----------------------------------------------------------------------------
3275 // TestRESTSubMergeDelAndRouteUpdateNok
3277 // stub stub stub stub
3278 // +-------+ +-------+ +---------+ +---------+ +---------+
3279 // | xapp1 | | xapp2 | | submgr | | rtmgr | | e2term |
3280 // +-------+ +-------+ +---------+ +---------+ +---------+
3282 // | RESTSubReq1 | | |
3283 // |------------------------>| | |
3284 // | RESTSubResp2 | | |
3285 // |<------------------------| | |
3287 // | | | RouteCreate | |
3288 // | | |------------->| |
3289 // | | | CreateResp | |
3290 // | | |<-------------| |
3292 // | | |---------------------------->|
3293 // | | | SubResp | |
3294 // | | |<----------------------------|
3295 // | RESTNotif1 | | |
3296 // |<------------------------| | |
3298 // | | RESTSubReq2 | | |
3299 // | |------------>| | |
3300 // | | RESTSubResp2| | |
3301 // | |<------------| | |
3302 // | | | RouteCreate | |
3303 // | | |------------->| |
3304 // | | | CreateResp | |
3305 // | | |<-------------| |
3307 // | | |---------------------------->|
3308 // | | | SubResp | |
3309 // | | |<----------------------------|
3310 // | | RESTNotif2 | | |
3311 // | |<------------| | |
3313 // | [SUBS INT DELETE] | |
3315 // | RESTSubDelReq1 | | |
3316 // |------------------------>| | |
3317 // | RESTSubDelResp1 | | |
3318 // |<------------------------| | |
3319 // | | | SubDelReq | |
3320 // | | |---------------------------->|
3321 // | | | SubDelResp | |
3322 // | | |<----------------------------|
3323 // | | | RouteUpdate | |
3324 // | | |------------->| |
3325 // | | | RouteUpdate | |
3326 // | | | status:400 | |
3327 // | | |(Bad request) | |
3328 // | | |<-------------| |
3330 // | | RESTSubDelReq2 | |
3331 // | |------------>| | |
3332 // | | RESTSubDelResp2 | |
3333 // | |<------------| | |
3334 // | | | SubDelReq | |
3335 // | | |---------------------------->|
3336 // | | | SubdelResp | |
3337 // | | |<----------------------------|
3338 // | | | RouteDelete | |
3339 // | | |------------->| |
3340 // | | | Deleteresp | |
3341 // | | |<-------------| |
3343 //-----------------------------------------------------------------------------
3345 func TestRESTSubMergeDelAndRouteUpdateNok(t *testing.T) {
3347 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
3348 Counter{cRestSubReqFromXapp, 2},
3349 Counter{cMergedSubscriptions, 1},
3350 Counter{cRestSubRespToXapp, 2},
3351 Counter{cSubReqToE2, 1},
3352 Counter{cSubRespFromE2, 1},
3353 Counter{cRestSubNotifToXapp, 2},
3354 Counter{cRestSubDelReqFromXapp, 2},
3355 Counter{cRouteDeleteUpdateFail, 1},
3356 Counter{cSubDelReqToE2, 1},
3357 Counter{cSubDelRespFromE2, 1},
3358 Counter{cRestSubDelRespToXapp, 2},
3359 Counter{cUnmergedSubscriptions, 1},
3362 var params *teststube2ap.RESTSubsReqParams = nil
3365 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
3367 queryXappSubscription(t, int64(e2SubsId), "RAN_NAME_1", []string{"localhost:13560"})
3368 restSubId2, e2SubsId2 := createXapp2MergedSubscription(t, "RAN_NAME_1")
3370 queryXappSubscription(t, int64(e2SubsId), "RAN_NAME_1", []string{"localhost:13560", "localhost:13660"})
3372 //Del1, this shall fail on rtmgr side
3373 waiter := rtmgrHttp.AllocNextEvent(false)
3374 xappConn1.SendRESTSubsDelReq(t, &restSubId)
3375 waiter.WaitResult(t)
3377 queryXappSubscription(t, int64(e2SubsId), "RAN_NAME_1", []string{"localhost:13660"})
3380 deleteXapp2Subscription(t, &restSubId2)
3382 waitSubsCleanup(t, e2SubsId2, 10)
3383 mainCtrl.VerifyCounterValues(t)
3384 mainCtrl.VerifyAllClean(t)
3387 //-----------------------------------------------------------------------------
3388 // TestRESTSubReqRetransmission
3391 // +-------+ +---------+ +---------+
3392 // | xapp | | submgr | | e2term |
3393 // +-------+ +---------+ +---------+
3395 // | RESTSubReq1 | |
3396 // |---------------->| |
3398 // | RESTSubResp | |
3399 // |<----------------| |
3401 // | |------------->|
3403 // | RESTSubReq2 | |
3405 // |---------------->| |
3406 // | RESTSubResp(201)| |
3407 // |<----------------| |
3410 // | |<-------------|
3412 // |<----------------| |
3414 // | [SUBS DELETE] |
3417 //-----------------------------------------------------------------------------
3419 func TestRESTSubReqRetransmission(t *testing.T) {
3421 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
3422 Counter{cRestSubReqFromXapp, 2},
3423 Counter{cRestSubRespToXapp, 2},
3424 Counter{cSubReqToE2, 1},
3425 Counter{cSubRespFromE2, 1},
3426 Counter{cRestSubNotifToXapp, 1},
3427 Counter{cRestSubDelReqFromXapp, 1},
3428 Counter{cSubDelReqToE2, 1},
3429 Counter{cSubDelRespFromE2, 1},
3430 Counter{cRestSubDelRespToXapp, 1},
3432 // Retry/duplicate will get the same way as the first request.
3433 // Contianed duplicate messages from same xapp will not be merged. Here we use xappConn2 to simulate sending
3434 // second request from same xapp as doing it from xappConn1 would not work as notification would not be received
3437 const subReqCount int = 1
3439 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
3440 restSubId := xappConn1.SendRESTSubsReq(t, params)
3442 xappConn1.SendRESTSubsReq(t, params)
3443 <-time.After(time.Second * 1)
3445 xappConn1.WaitListedRestNotifications(t, []string{restSubId})
3447 // Depending one goroutine scheduling order, we cannot say for sure which xapp reaches e2term first. Thus
3448 // the order is not significant here.
3449 crereq, cremsg := e2termConn1.RecvSubsReq(t)
3450 e2termConn1.SendSubsResp(t, crereq, cremsg)
3452 e2SubsId := <-xappConn1.ListedRESTNotifications
3454 xapp.Logger.Debug("TEST: XAPP notification received e2SubsId=%v", e2SubsId)
3457 xappConn1.SendRESTSubsDelReq(t, &restSubId)
3458 delreq1, delmsg1 := e2termConn1.RecvSubsDelReq(t)
3459 e2termConn1.SendSubsDelResp(t, delreq1, delmsg1)
3461 mainCtrl.wait_multi_subs_clean(t, []uint32{e2SubsId.E2SubsId}, 10)
3463 mainCtrl.VerifyCounterValues(t)
3464 mainCtrl.VerifyAllClean(t)
3467 //-----------------------------------------------------------------------------
3469 // +-------+ +---------+ +---------+ +---------+
3470 // | xapp | | submgr | | e2term | | rtmgr |
3471 // +-------+ +---------+ +---------+ +---------+
3473 // | RESTSubReq | | |
3474 // |---------------->| | |
3475 // | RESTSubResp | | |
3476 // |<----------------| | |
3477 // | | RouteCreate | |
3478 // | |--------------------------->|
3479 // | | RouteResponse| |
3480 // | |<---------------------------| // The order of these events may vary
3482 // | |------------->| | // The order of these events may vary
3484 // | |<-------------| |
3485 // | RESTNotif1 | | |
3486 // |<----------------| | |
3487 // | RESTSubReq | | |
3488 // | [RETRANS1] | | |
3489 // |---------------->| | |
3490 // | RESTNotif1 | | |
3491 // |<----------------| | |
3492 // | RESTSubReq | | |
3493 // | [RETRANS2] | | |
3494 // |---------------->| | |
3495 // | RESTNotif1 | | |
3496 // |<----------------| | |
3497 // | RESTSubDelReq | | |
3498 // |---------------->| | |
3499 // | | SubDelReq | |
3500 // | |------------->| |
3501 // | RESTSubDelResp| | |
3502 // |<----------------| | |
3503 // | | SubDelResp | |
3504 // | |<-------------| |
3507 //-----------------------------------------------------------------------------
3509 func TestRESTSubReqRetransmissionV2(t *testing.T) {
3511 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
3512 Counter{cRestSubReqFromXapp, 3},
3513 Counter{cDuplicateE2SubReq, 2},
3514 Counter{cRestSubRespToXapp, 3},
3515 Counter{cSubReqToE2, 1},
3516 Counter{cSubRespFromE2, 1},
3517 Counter{cRestSubNotifToXapp, 3},
3518 Counter{cRestSubDelReqFromXapp, 1},
3519 Counter{cSubDelReqToE2, 1},
3520 Counter{cSubDelRespFromE2, 1},
3521 Counter{cRestSubDelRespToXapp, 1},
3524 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
3526 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
3528 queryXappSubscription(t, int64(e2SubsId), "RAN_NAME_1", []string{"localhost:13560"})
3530 mainCtrl.WaitOngoingRequestMapEmpty()
3533 restSubId_resend := xappConn1.SendRESTSubsReq(t, params)
3535 assert.Equal(t, restSubId_resend, restSubId)
3537 mainCtrl.WaitOngoingRequestMapEmpty()
3540 restSubId_resend2 := xappConn1.SendRESTSubsReq(t, params)
3542 assert.Equal(t, restSubId_resend2, restSubId)
3544 mainCtrl.WaitOngoingRequestMapEmpty()
3546 deleteSubscription(t, xappConn1, e2termConn1, &restSubId)
3548 waitSubsCleanup(t, e2SubsId, 10)
3549 mainCtrl.VerifyCounterValues(t)
3550 mainCtrl.VerifyAllClean(t)
3553 //-----------------------------------------------------------------------------
3555 // +-------+ +---------+ +---------+ +---------+
3556 // | xapp | | submgr | | e2term | | rtmgr |
3557 // +-------+ +---------+ +---------+ +---------+
3559 // | RESTSubReq | | |
3560 // |---------------->| | |
3561 // | RESTSubResp | | |
3562 // |<----------------| | |
3563 // | | RouteCreate | |
3564 // | |--------------------------->|
3565 // | | RouteResponse| |
3566 // | |<---------------------------| // The order of these events may vary
3568 // | |------------->| | // The order of these events may vary
3570 // | |<-------------| |
3571 // | RESTNotif1 | | |
3572 // |<----------------| | |
3573 // | RESTSubReq | | |
3574 // | [RETRANS, with RESTsubsId] | |
3575 // |---------------->| | |
3576 // | RESTNotif1 | | |
3577 // |<----------------| | |
3578 // | RESTSubReq | | |
3579 // | [RETRANS, without RESTsubsId] | |
3580 // |---------------->| | |
3581 // | RESTNotif1 | | |
3582 // |<----------------| | |
3583 // | RESTSubDelReq | | |
3584 // |---------------->| | |
3585 // | | SubDelReq | |
3586 // | |------------->| |
3587 // | RESTSubDelResp| | |
3588 // |<----------------| | |
3589 // | | SubDelResp | |
3590 // | |<-------------| |
3593 //-----------------------------------------------------------------------------
3594 func TestRESTSubReqRetransmissionV3(t *testing.T) {
3596 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
3597 Counter{cRestSubReqFromXapp, 3},
3598 Counter{cDuplicateE2SubReq, 2},
3599 Counter{cRestSubRespToXapp, 3},
3600 Counter{cSubReqToE2, 1},
3601 Counter{cSubRespFromE2, 1},
3602 Counter{cRestSubNotifToXapp, 3},
3603 Counter{cRestSubDelReqFromXapp, 1},
3604 Counter{cSubDelReqToE2, 1},
3605 Counter{cSubDelRespFromE2, 1},
3606 Counter{cRestSubDelRespToXapp, 1},
3609 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
3611 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
3613 queryXappSubscription(t, int64(e2SubsId), "RAN_NAME_1", []string{"localhost:13560"})
3615 mainCtrl.WaitOngoingRequestMapEmpty()
3617 //1.st resend with subscription ID
3618 params.SetSubscriptionID(&restSubId)
3619 restSubId_resend := xappConn1.SendRESTSubsReq(t, params)
3621 assert.Equal(t, restSubId_resend, restSubId)
3623 mainCtrl.WaitOngoingRequestMapEmpty()
3625 //2.nd resend without subscription ID (faking app restart)
3626 params = xappConn1.GetRESTSubsReqReportParams(subReqCount)
3627 restSubId_resend2 := xappConn1.SendRESTSubsReq(t, params)
3629 assert.Equal(t, restSubId_resend2, restSubId)
3631 mainCtrl.WaitOngoingRequestMapEmpty()
3633 deleteSubscription(t, xappConn1, e2termConn1, &restSubId)
3635 waitSubsCleanup(t, e2SubsId, 10)
3636 mainCtrl.VerifyCounterValues(t)
3637 mainCtrl.VerifyAllClean(t)
3640 //-----------------------------------------------------------------------------
3642 // +-------+ +---------+ +---------+ +---------+
3643 // | xapp | | submgr | | e2term | | rtmgr |
3644 // +-------+ +---------+ +---------+ +---------+
3646 // | RESTSubReq | | |
3647 // |---------------->| | |
3648 // | RESTSubResp | | |
3649 // |<----------------| | |
3650 // | | RouteCreate | |
3651 // | |--------------------------->|
3652 // | | RouteResponse| |
3653 // | |<---------------------------|
3655 // | |------------->| |
3657 // | |<-------------| |
3658 // | RESTNotif1 | | |
3659 // |<----------------| | |
3660 // | RESTSubReq | | |
3661 // | [with RestSUbsId + one additional e2 subDetail]
3662 // |---------------->| | |
3663 // | RESTNotif1 | | |
3664 // | [for initial e2 subDetail] | |
3665 // |<----------------| | |
3666 // | | RouteCreate | |
3667 // | |--------------------------->|
3668 // | | RouteResponse| |
3669 // | |<---------------------------|
3671 // | |------------->| |
3673 // | |<-------------| |
3674 // | RESTNotif1 | | |
3675 // |<----------------| | |
3676 // | RESTSubReq | | |
3677 // | [with RESTsubsId initial request] |
3678 // |---------------->| | |
3679 // | RESTNotif1 | | |
3680 // |<----------------| | |
3681 // | RESTSubDelReq | | |
3682 // |---------------->| | |
3683 // | RESTSubDelResp| | |
3684 // |<----------------| | |
3685 // | | SubDelReq | |
3686 // | |------------->| |
3687 // | | SubDelResp | |
3688 // | |<-------------| |
3689 // | | SubDelReq | |
3690 // | |------------->| |
3691 // | | SubDelResp | |
3692 // | |<-------------| |
3695 //-----------------------------------------------------------------------------
3697 func TestRESTSubReqRetransmissionV4(t *testing.T) {
3699 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
3700 Counter{cRestSubReqFromXapp, 3},
3701 Counter{cDuplicateE2SubReq, 2},
3702 Counter{cRestSubRespToXapp, 3},
3703 Counter{cSubReqToE2, 2},
3704 Counter{cSubRespFromE2, 2},
3705 Counter{cRestSubNotifToXapp, 4},
3706 Counter{cRestSubDelReqFromXapp, 1},
3707 Counter{cSubDelReqToE2, 2},
3708 Counter{cSubDelRespFromE2, 2},
3709 Counter{cRestSubDelRespToXapp, 1},
3712 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
3714 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
3716 mainCtrl.WaitOngoingRequestMapEmpty()
3718 // Send modified requst, this time with e2 subscriptions.
3719 params2 := xappConn1.GetRESTSubsReqReportParams(subReqCount + 1)
3720 params2.SetSubscriptionID(&restSubId)
3722 xapp.Subscription.SetResponseCB(xappConn1.SubscriptionRespHandler)
3723 xappConn1.ExpectAnyNotification(t)
3724 // Resend the original request with an additional e2 subscription (detail), this time with restsubsid
3725 restSubId_resend := xappConn1.SendRESTSubsReq(t, params2)
3726 e2SubsId1 := xappConn1.WaitAnyRESTNotification(t)
3727 assert.Equal(t, e2SubsId, e2SubsId1)
3729 crereq2, cremsg2 := e2termConn1.RecvSubsReq(t)
3731 xappConn1.DecrementRequestCount()
3732 xappConn1.ExpectRESTNotification(t, restSubId_resend)
3733 e2termConn1.SendSubsResp(t, crereq2, cremsg2)
3734 e2SubsId2 := xappConn1.WaitRESTNotification(t, restSubId_resend)
3735 assert.NotEqual(t, e2SubsId2, 0)
3737 mainCtrl.WaitOngoingRequestMapEmpty()
3739 xapp.Subscription.SetResponseCB(xappConn1.SubscriptionRespHandler)
3740 params = xappConn1.GetRESTSubsReqReportParams(subReqCount)
3741 params.SetSubscriptionID(&restSubId)
3742 xappConn1.ExpectAnyNotification(t)
3743 // Resend the original request again with only one e2 subscription (detail), this time with restsubsid
3744 restSubId_resend2 := xappConn1.SendRESTSubsReq(t, params)
3745 assert.Equal(t, restSubId_resend, restSubId_resend2)
3747 e2SubsId1 = xappConn1.WaitAnyRESTNotification(t)
3748 assert.Equal(t, e2SubsId, e2SubsId1)
3750 mainCtrl.WaitOngoingRequestMapEmpty()
3752 // Delete both e2 subscriptions
3753 xappConn1.SendRESTSubsDelReq(t, &restSubId)
3754 e2SubsIds := []uint32{e2SubsId, e2SubsId2}
3755 sendAndReceiveMultipleE2DelReqs(t, e2SubsIds, e2termConn1)
3757 waitSubsCleanup(t, e2SubsId, 10)
3758 mainCtrl.VerifyCounterValues(t)
3759 mainCtrl.VerifyAllClean(t)
3762 //-----------------------------------------------------------------------------
3764 // +-------+ +---------+ +---------+ +---------+
3765 // | xapp | | submgr | | e2term | | rtmgr |
3766 // +-------+ +---------+ +---------+ +---------+
3768 // | RESTSubReq | | |
3769 // |---------------->| | |
3770 // | RESTSubResp | | |
3771 // |<----------------| | |
3772 // | | RouteCreate | |
3773 // | |--------------------------->|
3774 // | | RouteResponse| |
3775 // | |<---------------------------|
3777 // | |------------->| |
3779 // | |<-------------| |
3780 // | RESTNotif1 | | |
3781 // |<----------------| | |
3782 // | RESTSubReq | | |
3783 // | [with RestSUbsId + one additional e2 subDetail]
3784 // |---------------->| | |
3785 // | RESTNotif1 | | |
3786 // | [for initial e2 subDetail] | |
3787 // |<----------------| | |
3788 // | | RouteCreate | |
3789 // | |--------------------------->|
3790 // | | RouteResponse| |
3791 // | |<---------------------------|
3793 // | |------------->| |
3795 // | |<-------------| |
3796 // | RESTNotif1 | | |
3797 // |<----------------| | |
3798 // | RESTSubReq | | |
3799 // | [without RESTsubsId initial request] |
3800 // |---------------->| | |
3801 // | RESTNotif1 | | |
3802 // |<----------------| | |
3803 // | RESTSubDelReq | | |
3804 // |---------------->| | |
3805 // | RESTSubDelResp| | |
3806 // |<----------------| | |
3807 // | | SubDelReq | |
3808 // | |------------->| |
3809 // | | SubDelResp | |
3810 // | |<-------------| |
3811 // | | SubDelReq | |
3812 // | |------------->| |
3813 // | | SubDelResp | |
3814 // | |<-------------| |
3817 //-----------------------------------------------------------------------------
3819 func TestRESTSubReqRetransmissionV5(t *testing.T) {
3821 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
3822 Counter{cRestSubReqFromXapp, 3},
3823 Counter{cDuplicateE2SubReq, 2},
3824 Counter{cRestSubRespToXapp, 3},
3825 Counter{cSubReqToE2, 2},
3826 Counter{cSubRespFromE2, 2},
3827 Counter{cRestSubNotifToXapp, 4},
3828 Counter{cRestSubDelReqFromXapp, 1},
3829 Counter{cSubDelReqToE2, 2},
3830 Counter{cSubDelRespFromE2, 2},
3831 Counter{cRestSubDelRespToXapp, 1},
3834 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
3836 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
3838 mainCtrl.WaitOngoingRequestMapEmpty()
3840 // Send modified request, this time with e2 subscriptions.
3841 params2 := xappConn1.GetRESTSubsReqReportParams(subReqCount + 1)
3842 params2.SetSubscriptionID(&restSubId)
3844 xapp.Subscription.SetResponseCB(xappConn1.SubscriptionRespHandler)
3845 xappConn1.ExpectAnyNotification(t)
3846 // Resend the original request with an additional e2 subscription (detail), this time with restsubsid
3847 restSubId_resend := xappConn1.SendRESTSubsReq(t, params2)
3849 e2SubsId1 := xappConn1.WaitAnyRESTNotification(t)
3850 assert.Equal(t, e2SubsId, e2SubsId1)
3851 // The first E2 subscription returns immediately, manually decrement expected request count for the remaining request handling
3852 xappConn1.DecrementRequestCount()
3854 crereq2, cremsg2 := e2termConn1.RecvSubsReq(t)
3856 xappConn1.ExpectRESTNotification(t, restSubId_resend)
3857 e2termConn1.SendSubsResp(t, crereq2, cremsg2)
3858 e2SubsId2 := xappConn1.WaitRESTNotification(t, restSubId_resend)
3859 assert.NotEqual(t, e2SubsId2, 0)
3861 mainCtrl.WaitOngoingRequestMapEmpty()
3863 xapp.Subscription.SetResponseCB(xappConn1.SubscriptionRespHandler)
3864 params = xappConn1.GetRESTSubsReqReportParams(subReqCount)
3865 xappConn1.ExpectAnyNotification(t)
3866 // Resend the original request again with only one e2 subscription (detail), WITHOUT restsubsid
3867 // md5sum shall find the original request
3868 restSubId_resend2 := xappConn1.SendRESTSubsReq(t, params)
3869 assert.Equal(t, restSubId_resend, restSubId_resend2)
3871 e2SubsId1 = xappConn1.WaitAnyRESTNotification(t)
3872 assert.Equal(t, e2SubsId, e2SubsId1)
3874 mainCtrl.WaitOngoingRequestMapEmpty()
3876 // Delete both e2 subscriptions
3877 xappConn1.SendRESTSubsDelReq(t, &restSubId)
3878 e2SubsIds := []uint32{e2SubsId, e2SubsId2}
3879 sendAndReceiveMultipleE2DelReqs(t, e2SubsIds, e2termConn1)
3881 waitSubsCleanup(t, e2SubsId, 10)
3882 mainCtrl.VerifyCounterValues(t)
3883 mainCtrl.VerifyAllClean(t)
3886 //-----------------------------------------------------------------------------
3888 // +-------+ +---------+ +---------+ +---------+
3889 // | xapp | | submgr | | e2term | | rtmgr |
3890 // +-------+ +---------+ +---------+ +---------+
3892 // | RESTSubReq | | |
3893 // |---------------->| | |
3894 // | RESTSubResp | | |
3895 // |<----------------| | |
3896 // | | RouteCreate | |
3897 // | |--------------------------->|
3898 // | | RouteResponse| |
3899 // | |<---------------------------|
3901 // | |------------->| |
3903 // | |<-------------| |
3904 // | RESTNotif1 | | |
3905 // |<----------------| | |
3906 // | RESTSubReq | | |
3907 // | [with RestSUbsId + one additional e2 subDetail]
3908 // |---------------->| | |
3909 // | RESTNotif1 | | |
3910 // | [for initial e2 subDetail] | |
3911 // |<----------------| | |
3912 // | | RouteCreate | |
3913 // | |--------------------------->|
3914 // | | RouteResponse| |
3915 // | |<---------------------------|
3917 // | |------------->| |
3919 // | |<-------------| |
3920 // | RESTNotif1 | | |
3921 // |<----------------| | |
3922 // | RESTSubDelReq | | |
3923 // |---------------->| | |
3924 // | RESTSubDelResp| | |
3925 // |<----------------| | |
3926 // | | SubDelReq | |
3927 // | |------------->| |
3928 // | | SubDelResp | |
3929 // | |<-------------| |
3930 // | | SubDelReq | |
3931 // | |------------->| |
3932 // | | SubDelResp | |
3933 // | |<-------------| |
3934 // | RESTSubReq | | |
3935 // | [with RESTsubsId initial request] |
3936 // |---------------->| | |
3937 // | RESTSubResp | | |
3938 // |<----------------| | |
3939 // | | RouteCreate | |
3940 // | |--------------------------->|
3941 // | | RouteResponse| |
3942 // | |<---------------------------|
3944 // | |------------->| |
3946 // | |<-------------| |
3947 // | RESTNotif1 | | |
3948 // |<----------------| | |
3951 //-----------------------------------------------------------------------------
3952 func TestRESTSubReqRetransmissionV6(t *testing.T) {
3954 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
3955 Counter{cRestSubReqFromXapp, 3},
3956 Counter{cDuplicateE2SubReq, 1},
3957 Counter{cRestSubRespToXapp, 3},
3958 Counter{cSubReqToE2, 3},
3959 Counter{cSubRespFromE2, 3},
3960 Counter{cRestSubNotifToXapp, 4},
3961 Counter{cRestSubDelReqFromXapp, 2},
3962 Counter{cSubDelReqToE2, 3},
3963 Counter{cSubDelRespFromE2, 3},
3964 Counter{cRestSubDelRespToXapp, 2},
3967 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
3969 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
3971 mainCtrl.WaitOngoingRequestMapEmpty()
3973 // Send modified requst, this time with e2 subscriptions.
3974 params2 := xappConn1.GetRESTSubsReqReportParams(subReqCount + 1)
3975 params2.SetSubscriptionID(&restSubId)
3977 xapp.Subscription.SetResponseCB(xappConn1.SubscriptionRespHandler)
3978 xappConn1.ExpectAnyNotification(t)
3979 // Resend the original request with an additional e2 subscription (detail), this time with restsubsid
3980 restSubId_resend := xappConn1.SendRESTSubsReq(t, params2)
3982 e2SubsId1 := xappConn1.WaitAnyRESTNotification(t)
3983 assert.Equal(t, e2SubsId, e2SubsId1)
3985 crereq2, cremsg2 := e2termConn1.RecvSubsReq(t)
3987 xappConn1.ExpectRESTNotification(t, restSubId_resend)
3988 e2termConn1.SendSubsResp(t, crereq2, cremsg2)
3989 e2SubsId2 := xappConn1.WaitRESTNotification(t, restSubId_resend)
3990 assert.NotEqual(t, e2SubsId2, 0)
3992 mainCtrl.WaitOngoingRequestMapEmpty()
3994 // Delete both e2 subscriptions
3995 xappConn1.SendRESTSubsDelReq(t, &restSubId)
3996 e2SubsIds := []uint32{e2SubsId, e2SubsId2}
3997 sendAndReceiveMultipleE2DelReqs(t, e2SubsIds, e2termConn1)
3999 waitSubsCleanup(t, e2SubsId, 10)
4001 // Resend the original request, we shall find it's previous md5sum/restsubs
4002 // but the restsubscription has been already removed. This shall trigger a
4004 restSubId, e2SubsId = createSubscription(t, xappConn1, e2termConn1, params)
4006 mainCtrl.WaitOngoingRequestMapEmpty()
4008 deleteSubscription(t, xappConn1, e2termConn1, &restSubId)
4010 waitSubsCleanup(t, e2SubsId, 10)
4011 mainCtrl.VerifyCounterValues(t)
4012 mainCtrl.VerifyAllClean(t)
4015 //-----------------------------------------------------------------------------
4016 // TestRESTSubDelReqRetransmission
4019 // +-------+ +---------+ +---------+
4020 // | xapp | | submgr | | e2term |
4021 // +-------+ +---------+ +---------+
4024 // |---------------->| |
4026 // | RESTSubResp | |
4027 // |<----------------| |
4029 // | |------------->|
4031 // | |<-------------|
4033 // |<----------------| |
4035 // | RESTSubDelReq | |
4036 // |---------------->| |
4037 // | RESTSubDelResp | |
4038 // |<----------------| |
4040 // | |------------->|
4041 // | RESTSubDelReq | |
4042 // |---------------->| |
4043 // | RESTSubDelResp | |
4044 // |<----------------| |
4046 // | |<-------------|
4049 //-----------------------------------------------------------------------------
4051 func TestRESTSubDelReqRetransmission(t *testing.T) {
4053 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
4054 Counter{cRestSubReqFromXapp, 1},
4055 Counter{cRestSubRespToXapp, 1},
4056 Counter{cSubReqToE2, 1},
4057 Counter{cSubRespFromE2, 1},
4058 Counter{cRestSubNotifToXapp, 1},
4059 Counter{cRestSubDelReqFromXapp, 2},
4060 Counter{cSubDelReqToE2, 1},
4061 Counter{cSubDelRespFromE2, 1},
4062 Counter{cRestSubDelRespToXapp, 2},
4065 var params *teststube2ap.RESTSubsReqParams = nil
4068 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
4070 queryXappSubscription(t, int64(e2SubsId), "RAN_NAME_1", []string{"localhost:13560"})
4073 xappConn1.SendRESTSubsDelReq(t, &restSubId)
4074 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
4077 seqBef := mainCtrl.get_msgcounter(t)
4078 xappConn1.SendRESTSubsDelReq(t, &restSubId)
4079 mainCtrl.wait_msgcounter_change(t, seqBef, 10)
4082 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
4084 waitSubsCleanup(t, e2SubsId, 10)
4085 mainCtrl.VerifyCounterValues(t)
4086 mainCtrl.VerifyAllClean(t)
4089 //-----------------------------------------------------------------------------
4090 // TestRESTSubReqDelReq
4093 // +-------+ +---------+ +---------+
4094 // | xapp | | submgr | | e2term |
4095 // +-------+ +---------+ +---------+
4098 // |---------------->| |
4100 // | RESTSubResp | |
4101 // |<----------------| |
4103 // | |------------->|
4104 // | RESTSubDelReq | |
4105 // |---------------->| |
4106 // | RESTSubDelResp | |
4108 // |<----------------| |
4110 // | |<-------------|
4112 // |<----------------| |
4114 // | [SUBS DELETE] |
4117 //-----------------------------------------------------------------------------
4118 func TestRESTSubReqDelReq(t *testing.T) {
4120 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
4121 Counter{cRestSubReqFromXapp, 1},
4122 Counter{cRestSubRespToXapp, 1},
4123 Counter{cSubReqToE2, 1},
4124 Counter{cSubRespFromE2, 1},
4125 Counter{cRestSubNotifToXapp, 1},
4126 Counter{cRestSubDelReqFromXapp, 2},
4127 Counter{cRestSubDelFailToXapp, 1},
4128 Counter{cSubDelReqToE2, 1},
4129 Counter{cSubDelRespFromE2, 1},
4130 Counter{cRestSubDelRespToXapp, 1},
4133 const subReqCount int = 1
4136 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
4137 restSubId := xappConn1.SendRESTSubsReq(t, params)
4139 // Del. This will fail as processing of the subscription
4140 // is still ongoing in submgr. Deletion is not allowed before
4141 // subscription creation has been completed.
4142 xappConn1.SendRESTSubsDelReq(t, &restSubId)
4143 crereq, cremsg := e2termConn1.RecvSubsReq(t)
4144 xappConn1.ExpectRESTNotification(t, restSubId)
4145 e2termConn1.SendSubsResp(t, crereq, cremsg)
4146 e2SubsId := xappConn1.WaitRESTNotification(t, restSubId)
4149 xappConn1.SendRESTSubsDelReq(t, &restSubId)
4151 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
4152 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
4154 // Wait that subs is cleaned
4155 waitSubsCleanup(t, e2SubsId, 10)
4156 mainCtrl.VerifyCounterValues(t)
4157 mainCtrl.VerifyAllClean(t)
4160 //-----------------------------------------------------------------------------
4161 // TestRESTSubReqAndSubDelOkTwoParallel
4164 // +-------+ +-------+ +---------+ +---------+
4165 // | xapp2 | | xapp1 | | submgr | | e2term |
4166 // +-------+ +-------+ +---------+ +---------+
4168 // | | RESTSubReq1 | |
4169 // | |------------->| |
4170 // | | RESTSubResp1 | |
4171 // | |<-------------| |
4174 // | | |------------->|
4176 // | RESTSubReq2 | |
4177 // |------------------------>| |
4178 // | RESTSubResp2 | |
4179 // |<------------------------| |
4182 // | | |------------->|
4185 // | | |<-------------|
4186 // | | RESTNotif1 | |
4187 // | |<-------------| |
4190 // | | |<-------------|
4192 // |<------------------------| |
4194 // | | [SUBS 1 DELETE] |
4196 // | | [SUBS 2 DELETE] |
4199 //-----------------------------------------------------------------------------
4201 func TestRESTSubReqAndSubDelOkTwoParallel(t *testing.T) {
4203 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
4204 Counter{cRestSubReqFromXapp, 2},
4205 Counter{cRestSubRespToXapp, 2},
4206 Counter{cSubReqToE2, 2},
4207 Counter{cSubRespFromE2, 2},
4208 Counter{cRestSubNotifToXapp, 2},
4209 Counter{cRestSubDelReqFromXapp, 2},
4210 Counter{cSubDelReqToE2, 2},
4211 Counter{cSubDelRespFromE2, 2},
4212 Counter{cRestSubDelRespToXapp, 2},
4216 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
4217 restSubId1 := xappConn1.SendRESTSubsReq(t, params)
4218 xapp.Logger.Debug("Send 1st REST subscriber request for subscriberId : %v", restSubId1)
4221 params = xappConn2.GetRESTSubsReqReportParams(subReqCount)
4222 restSubId2 := xappConn2.SendRESTSubsReq(t, params)
4223 xapp.Logger.Debug("Send 2nd REST subscriber request for subscriberId : %v", restSubId2)
4225 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
4226 crereq2, cremsg2 := e2termConn1.RecvSubsReq(t)
4228 //XappConn1 receives both of the responses
4229 xappConn1.WaitListedRestNotifications(t, []string{restSubId1, restSubId2})
4232 e2termConn1.SendSubsResp(t, crereq1, cremsg1)
4234 e2termConn1.SendSubsResp(t, crereq2, cremsg2)
4236 e2SubsIdA := <-xappConn1.ListedRESTNotifications
4237 xapp.Logger.Debug("TEST: 1.st XAPP notification received e2SubsId=%v", e2SubsIdA)
4238 e2SubsIdB := <-xappConn1.ListedRESTNotifications
4239 xapp.Logger.Debug("TEST: 2.nd XAPP notification received e2SubsId=%v", e2SubsIdB)
4242 deleteSubscription(t, xappConn1, e2termConn1, &restSubId1)
4244 deleteSubscription(t, xappConn2, e2termConn1, &restSubId2)
4246 //Wait that subs is cleaned
4247 mainCtrl.wait_subs_clean(t, e2SubsIdA.E2SubsId, 10)
4248 waitSubsCleanup(t, e2SubsIdB.E2SubsId, 10)
4250 mainCtrl.VerifyCounterValues(t)
4251 mainCtrl.VerifyAllClean(t)
4254 //-----------------------------------------------------------------------------
4255 // TestRESTSameSubsDiffRan
4256 // Same subscription to different RANs
4259 // +-------+ +---------+ +---------+
4260 // | xapp | | submgr | | e2term |
4261 // +-------+ +---------+ +---------+
4263 // | RESTSubReq(r1) | |
4264 // |---------------->| |
4265 // | RESTSubResp(r1) | |
4266 // |<----------------| |
4269 // | |------------->|
4271 // | | SubResp(r1) |
4272 // | |<-------------|
4274 // | RESTNotif(r1) | |
4275 // |<----------------| |
4277 // | RESTSubReq(r2) | |
4278 // |---------------->| |
4280 // | RESTSubResp(r2) | |
4281 // |<----------------| |
4283 // | |------------->|
4285 // | | SubResp(r2) |
4286 // | |<-------------|
4288 // | RESTNotif(r2) | |
4289 // |<----------------| |
4291 // | [SUBS r1 DELETE] |
4293 // | [SUBS r2 DELETE] |
4296 //-----------------------------------------------------------------------------
4298 func TestRESTSameSubsDiffRan(t *testing.T) {
4300 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
4301 Counter{cRestSubReqFromXapp, 2},
4302 Counter{cRestSubRespToXapp, 2},
4303 Counter{cSubReqToE2, 2},
4304 Counter{cSubRespFromE2, 2},
4305 Counter{cRestSubNotifToXapp, 2},
4306 Counter{cRestSubDelReqFromXapp, 2},
4307 Counter{cSubDelReqToE2, 2},
4308 Counter{cSubDelRespFromE2, 2},
4309 Counter{cRestSubDelRespToXapp, 2},
4312 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
4313 restSubId1, e2SubsId1 := createSubscription(t, xappConn1, e2termConn1, params)
4314 xapp.Logger.Debug("Send 1st REST subscriber request for subscriberId : %v", restSubId1)
4316 params = xappConn1.GetRESTSubsReqReportParams(subReqCount)
4317 params.SetMeid("RAN_NAME_2")
4318 restSubId2, e2SubsId2 := createSubscription(t, xappConn1, e2termConn1, params)
4319 xapp.Logger.Debug("Send 2nd REST subscriber request for subscriberId : %v", restSubId2)
4322 deleteSubscription(t, xappConn1, e2termConn1, &restSubId1)
4324 deleteSubscription(t, xappConn1, e2termConn1, &restSubId2)
4326 //Wait that subs is cleaned
4327 mainCtrl.wait_subs_clean(t, e2SubsId1, 10)
4328 waitSubsCleanup(t, e2SubsId2, 10)
4330 mainCtrl.VerifyCounterValues(t)
4331 mainCtrl.VerifyAllClean(t)
4334 //-----------------------------------------------------------------------------
4335 // TestRESTSubReqRetryInSubmgr
4338 // +-------+ +---------+ +---------+
4339 // | xapp | | submgr | | e2term |
4340 // +-------+ +---------+ +---------+
4343 // |---------------->| |
4344 // | RESTSubResp | |
4345 // |<----------------| |
4347 // | |------------->|
4351 // | |------------->|
4353 // | |<-------------|
4356 // |<----------------| |
4358 // | [SUBS DELETE] |
4361 //-----------------------------------------------------------------------------
4363 func TestRESTSubReqRetryInSubmgr(t *testing.T) {
4365 // Init counter check
4366 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
4367 Counter{cRestSubReqFromXapp, 1},
4368 Counter{cRestSubRespToXapp, 1},
4369 Counter{cSubReqToE2, 1},
4370 Counter{cSubReqTimerExpiry, 1},
4371 Counter{cSubReReqToE2, 1},
4372 Counter{cSubRespFromE2, 1},
4373 Counter{cRestSubNotifToXapp, 1},
4374 Counter{cRestSubDelReqFromXapp, 1},
4375 Counter{cSubDelReqToE2, 1},
4376 Counter{cSubDelRespFromE2, 1},
4377 Counter{cRestSubDelRespToXapp, 1},
4380 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
4381 restSubId := xappConn1.SendRESTSubsReq(t, params)
4383 xapp.Logger.Debug("Send REST subscriber request for subscriber : %v", restSubId)
4385 // Catch the first message and ignore it
4386 crereq, cremsg := e2termConn1.RecvSubsReq(t)
4387 xapp.Logger.Debug("Ignore REST subscriber request for subscriber : %v", restSubId)
4389 // The second request is being handled normally
4390 crereq, cremsg = e2termConn1.RecvSubsReq(t)
4391 xappConn1.ExpectRESTNotification(t, restSubId)
4392 e2termConn1.SendSubsResp(t, crereq, cremsg)
4393 e2SubsId := xappConn1.WaitRESTNotification(t, restSubId)
4395 queryXappSubscription(t, int64(e2SubsId), "RAN_NAME_1", []string{"localhost:13560"})
4398 deleteSubscription(t, xappConn1, e2termConn1, &restSubId)
4400 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
4401 //Wait that subs is cleaned
4402 waitSubsCleanup(t, e2SubsId, 10)
4404 mainCtrl.VerifyCounterValues(t)
4405 mainCtrl.VerifyAllClean(t)
4408 //-----------------------------------------------------------------------------
4409 // TestRESTSubReqTwoRetriesNoRespSubDelRespInSubmgr
4412 // +-------+ +---------+ +---------+
4413 // | xapp | | submgr | | e2term |
4414 // +-------+ +---------+ +---------+
4417 // |---------------->| |
4419 // | RESTSubResp | |
4420 // |<----------------| |
4422 // | |------------->|
4426 // | |------------->|
4429 // | |------------->|
4433 // | |------------->|
4437 // | |<-------------|
4440 // |<----------------| |
4442 // | [SUBS DELETE] |
4445 //-----------------------------------------------------------------------------
4447 func TestRESTSubReqRetryNoRespSubDelRespInSubmgr(t *testing.T) {
4449 // Init counter check
4450 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
4451 Counter{cRestSubReqFromXapp, 1},
4452 Counter{cRestSubRespToXapp, 1},
4453 Counter{cSubReqToE2, 1},
4454 Counter{cSubReReqToE2, 1},
4455 Counter{cSubReqTimerExpiry, 2},
4456 Counter{cRestSubFailNotifToXapp, 1},
4457 Counter{cSubDelReqToE2, 1},
4458 Counter{cSubDelRespFromE2, 1},
4459 Counter{cRestSubDelReqFromXapp, 1},
4460 Counter{cRestSubDelRespToXapp, 1},
4463 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
4464 restSubId := xappConn1.SendRESTSubsReq(t, params)
4465 xapp.Logger.Debug("Send REST subscriber request for subscriber : %v", restSubId)
4467 e2termConn1.RecvSubsReq(t)
4468 xapp.Logger.Debug("Ignore 1st REST subscriber request for subscriber : %v", restSubId)
4470 e2termConn1.RecvSubsReq(t)
4471 xapp.Logger.Debug("Ignore 2nd REST subscriber request for subscriber : %v", restSubId)
4473 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
4474 xappConn1.ExpectRESTNotificationNok(t, restSubId, "allFail")
4475 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
4476 xappConn1.WaitRESTNotification(t, restSubId)
4478 xappConn1.SendRESTSubsDelReq(t, &restSubId)
4480 // Wait that subs is cleaned
4481 waitSubsCleanup(t, delreq.RequestId.InstanceId, 10)
4482 mainCtrl.VerifyCounterValues(t)
4483 mainCtrl.VerifyAllClean(t)
4486 //-----------------------------------------------------------------------------
4487 // TestREST2eTermNotRespondingToSubReq
4490 // +-------+ +---------+ +---------+
4491 // | xapp | | submgr | | e2term |
4492 // +-------+ +---------+ +---------+
4495 // |---------------->| |
4496 // | RESTSubResp | |
4497 // |<----------------| |
4499 // | |------------->|
4502 // | |------------->|
4505 // | |------------->|
4508 // | |------------->|
4509 // | RESTNotif(Unsuccessful) |
4510 // |<----------------| |
4512 // | RESTSubDelReq | |
4513 // |---------------->| |
4514 // | RESTSubDelResp | |
4515 // |<----------------| |
4518 //-----------------------------------------------------------------------------
4520 func TestREST2eTermNotRespondingToSubReq(t *testing.T) {
4522 // Init counter check
4523 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
4524 Counter{cRestSubReqFromXapp, 1},
4525 Counter{cRestSubRespToXapp, 1},
4526 Counter{cSubReqToE2, 1},
4527 Counter{cSubReReqToE2, 1},
4528 Counter{cSubReqTimerExpiry, 2},
4529 Counter{cSubDelReReqToE2, 1},
4530 Counter{cRestSubFailNotifToXapp, 1},
4531 Counter{cSubDelReqToE2, 1},
4532 Counter{cSubDelReqTimerExpiry, 2},
4533 Counter{cRestSubDelReqFromXapp, 1},
4534 Counter{cRestSubDelRespToXapp, 1},
4537 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
4538 restSubId := xappConn1.SendRESTSubsReq(t, params)
4539 xapp.Logger.Debug("Send REST subscriber request for subscriber : %v", restSubId)
4541 e2termConn1.RecvSubsReq(t)
4542 xapp.Logger.Debug("Ignore 1st REST subscriber request for subscriber : %v", restSubId)
4544 e2termConn1.RecvSubsReq(t)
4545 xapp.Logger.Debug("Ignore 2nd REST subscriber request for subscriber : %v", restSubId)
4547 e2termConn1.RecvSubsDelReq(t)
4548 xapp.Logger.Debug("Ignore 1st INTERNAL delete request for subscriber : %v", restSubId)
4550 xappConn1.ExpectRESTNotificationNok(t, restSubId, "allFail")
4551 e2termConn1.RecvSubsDelReq(t)
4552 xapp.Logger.Debug("Ignore 2nd INTERNAL delete request for subscriber : %v", restSubId)
4554 e2SubsId := xappConn1.WaitRESTNotification(t, restSubId)
4556 xappConn1.SendRESTSubsDelReq(t, &restSubId)
4558 waitSubsCleanup(t, e2SubsId, 10)
4559 mainCtrl.VerifyCounterValues(t)
4560 mainCtrl.VerifyAllClean(t)
4563 //-----------------------------------------------------------------------------
4564 // TestRESTSubReqTwoRetriesNoRespSubDelRespInSubmgr
4567 // +-------+ +---------+ +---------+
4568 // | xapp | | submgr | | e2term |
4569 // +-------+ +---------+ +---------+
4572 // |---------------->| |
4574 // | RESTSubResp | |
4575 // |<----------------| |
4577 // | |------------->|
4581 // | |------------->|
4584 // | |------------->|
4588 // | |------------->|
4592 // | |<-------------|
4595 // |<----------------| |
4597 // | [SUBS DELETE] |
4600 //-----------------------------------------------------------------------------
4601 func TestRESTSubReqTwoRetriesNoRespAtAllInSubmgr(t *testing.T) {
4603 // Init counter check
4604 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
4605 Counter{cRestSubReqFromXapp, 1},
4606 Counter{cRestSubRespToXapp, 1},
4607 Counter{cSubReqToE2, 1},
4608 Counter{cSubReReqToE2, 1},
4609 Counter{cSubReqTimerExpiry, 2},
4610 Counter{cRestSubFailNotifToXapp, 1},
4611 Counter{cSubDelReqToE2, 1},
4612 Counter{cSubDelReReqToE2, 1},
4613 Counter{cSubDelReqTimerExpiry, 2},
4614 Counter{cRestSubDelReqFromXapp, 1},
4615 Counter{cRestSubDelRespToXapp, 1},
4618 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
4619 restSubId := xappConn1.SendRESTSubsReq(t, params)
4620 xapp.Logger.Debug("Send REST subscriber request for subscriber : %v", restSubId)
4622 e2termConn1.RecvSubsReq(t)
4623 xapp.Logger.Debug("Ignore 1st REST subscriber request for subscriber : %v", restSubId)
4625 e2termConn1.RecvSubsReq(t)
4626 xapp.Logger.Debug("Ignore 2nd REST subscriber request for subscriber : %v", restSubId)
4628 e2termConn1.RecvSubsDelReq(t)
4629 xapp.Logger.Debug("Ignore 1st INTERNAL delete request for subscriber : %v", restSubId)
4631 xappConn1.ExpectRESTNotificationNok(t, restSubId, "allFail")
4632 e2termConn1.RecvSubsDelReq(t)
4633 xapp.Logger.Debug("Ignore 2nd INTERNAL delete request for subscriber : %v", restSubId)
4635 e2SubsId := xappConn1.WaitRESTNotification(t, restSubId)
4637 xappConn1.SendRESTSubsDelReq(t, &restSubId)
4639 waitSubsCleanup(t, e2SubsId, 10)
4640 mainCtrl.VerifyCounterValues(t)
4641 mainCtrl.VerifyAllClean(t)
4644 //-----------------------------------------------------------------------------
4645 // TestRESTSubReqSubFailRespInSubmgr
4648 // +-------+ +---------+ +---------+
4649 // | xapp | | submgr | | e2term |
4650 // +-------+ +---------+ +---------+
4653 // |---------------->| |
4655 // | RESTSubResp | |
4656 // |<----------------| |
4658 // | |------------->|
4661 // | |<-------------|
4665 // |<----------------| |
4667 // | [SUBS DELETE] |
4670 //-----------------------------------------------------------------------------
4672 func TestRESTSubReqSubFailRespInSubmgr(t *testing.T) {
4674 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
4675 Counter{cRestSubReqFromXapp, 1},
4676 Counter{cRestSubRespToXapp, 1},
4677 Counter{cSubReqToE2, 1},
4678 Counter{cSubFailFromE2, 1},
4679 Counter{cRestSubFailNotifToXapp, 1},
4680 Counter{cRestSubDelReqFromXapp, 1},
4681 Counter{cRestSubDelRespToXapp, 1},
4684 const subReqCount int = 1
4685 const e2Timeout int64 = 2
4686 const e2RetryCount int64 = 1
4687 const routingNeeded bool = true
4689 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
4690 params.SetSubscriptionDirectives(e2Timeout, e2RetryCount, routingNeeded)
4691 restSubId := xappConn1.SendRESTSubsReq(t, params)
4693 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
4694 fparams1 := &teststube2ap.E2StubSubsFailParams{}
4695 fparams1.Set(crereq1)
4696 xappConn1.ExpectRESTNotificationNok(t, restSubId, "allFail")
4697 e2termConn1.SendSubsFail(t, fparams1, cremsg1)
4699 e2SubsId := xappConn1.WaitRESTNotification(t, restSubId)
4700 xapp.Logger.Debug("TEST: REST notification received e2SubsId=%v", e2SubsId)
4702 // REST subscription sill there to be deleted
4703 xappConn1.SendRESTSubsDelReq(t, &restSubId)
4705 // Wait that subs is cleaned
4706 waitSubsCleanup(t, e2SubsId, 10)
4708 mainCtrl.VerifyCounterValues(t)
4709 mainCtrl.VerifyAllClean(t)
4712 //-----------------------------------------------------------------------------
4713 // TestRESTSubReqPartialResp
4716 // +-------+ +---------+ +---------+
4717 // | xapp | | submgr | | e2term |
4718 // +-------+ +---------+ +---------+
4721 // |---------------->| |
4722 // | RESTSubResp | |
4723 // |<----------------| |
4725 // | |------------->|
4726 // | | SubResp | Partially accepted
4727 // | |<-------------|
4730 // |<----------------| |
4732 // | [SUBS DELETE] |
4735 //-----------------------------------------------------------------------------
4737 func TestRESTSubReqPartialResp(t *testing.T) {
4739 // Init counter check
4740 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
4741 Counter{cRestSubReqFromXapp, 1},
4742 Counter{cRestSubRespToXapp, 1},
4743 Counter{cSubReqToE2, 1},
4744 Counter{cSubRespFromE2, 1},
4745 Counter{cPartialSubRespFromE2, 1},
4746 Counter{cRestSubNotifToXapp, 1},
4747 Counter{cRestSubDelReqFromXapp, 1},
4748 Counter{cSubDelReqToE2, 1},
4749 Counter{cSubDelRespFromE2, 1},
4750 Counter{cRestSubDelRespToXapp, 1},
4754 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
4756 actionId := int64(2)
4757 actionType := "report"
4758 actionDefinition := []int64{5678, 1}
4759 subsequestActionType := "continue"
4760 timeToWait := "w10ms"
4761 params.AppendActionToActionToBeSetupList(actionId, actionType, actionDefinition, subsequestActionType, timeToWait)
4763 restSubId := xappConn1.SendRESTSubsReq(t, params)
4764 crereq, cremsg := e2termConn1.RecvSubsReq(t)
4765 xappConn1.ExpectRESTNotification(t, restSubId)
4767 actionNotAdmittedItem := e2ap.ActionNotAdmittedItem{}
4768 actionNotAdmittedItem.ActionId = 1
4769 actionNotAdmittedItem.Cause.Content = 1
4770 actionNotAdmittedItem.Cause.Value = 8
4771 actionNotAdmittedList := e2ap.ActionNotAdmittedList{}
4772 actionNotAdmittedList.Items = append(actionNotAdmittedList.Items, actionNotAdmittedItem)
4773 e2termConn1.SendPartialSubsResp(t, crereq, cremsg, actionNotAdmittedList)
4774 e2SubsId := xappConn1.WaitRESTNotification(t, restSubId)
4776 queryXappSubscription(t, int64(e2SubsId), "RAN_NAME_1", []string{"localhost:13560"})
4779 deleteSubscription(t, xappConn1, e2termConn1, &restSubId)
4781 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
4782 //Wait that subs is cleaned
4783 waitSubsCleanup(t, e2SubsId, 10)
4785 mainCtrl.VerifyCounterValues(t)
4786 mainCtrl.VerifyAllClean(t)
4789 //-----------------------------------------------------------------------------
4790 // TestRESTSubDelReqRetryInSubmgr
4793 // +-------+ +---------+ +---------+
4794 // | xapp | | submgr | | e2term |
4795 // +-------+ +---------+ +---------+
4797 // | [SUBS CREATE] |
4800 // | RESTSubDelReq | |
4801 // |---------------->| |
4803 // | RESTSubDelResp | |
4804 // |<----------------| |
4806 // | |------------->|
4809 // | |------------->|
4812 // | |<-------------|
4815 //-----------------------------------------------------------------------------
4816 func TestRESTSubDelReqRetryInSubmgr(t *testing.T) {
4818 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
4819 Counter{cRestSubReqFromXapp, 1},
4820 Counter{cRestSubRespToXapp, 1},
4821 Counter{cSubReqToE2, 1},
4822 Counter{cSubRespFromE2, 1},
4823 Counter{cRestSubNotifToXapp, 1},
4824 Counter{cRestSubDelReqFromXapp, 1},
4825 Counter{cSubDelReqToE2, 1},
4826 Counter{cSubDelReqTimerExpiry, 1},
4827 Counter{cSubDelReReqToE2, 1},
4828 Counter{cSubDelRespFromE2, 1},
4829 Counter{cRestSubDelRespToXapp, 1},
4832 var params *teststube2ap.RESTSubsReqParams = nil
4833 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
4836 xappConn1.SendRESTSubsDelReq(t, &restSubId)
4838 // E2t: Receive 1st SubsDelReq
4839 e2termConn1.RecvSubsDelReq(t)
4841 // E2t: Receive 2nd SubsDelReq and send SubsDelResp
4842 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
4843 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
4845 //Wait that subs is cleaned
4846 waitSubsCleanup(t, e2SubsId, 10)
4848 mainCtrl.VerifyCounterValues(t)
4849 mainCtrl.VerifyAllClean(t)
4852 //-----------------------------------------------------------------------------
4853 // TestRESTSubDelReqTwoRetriesNoRespInSubmgr
4856 // +-------+ +---------+ +---------+
4857 // | xapp | | submgr | | e2term |
4858 // +-------+ +---------+ +---------+
4860 // | [SUBS CREATE] |
4863 // | RESTSubDelReq | |
4864 // |---------------->| |
4866 // | RESTSubDelResp | |
4867 // |<----------------| |
4869 // | |------------->|
4872 // | |------------->|
4876 //-----------------------------------------------------------------------------
4878 func TestRESTSubDelReqTwoRetriesNoRespInSubmgr(t *testing.T) {
4880 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
4881 Counter{cRestSubReqFromXapp, 1},
4882 Counter{cRestSubRespToXapp, 1},
4883 Counter{cSubReqToE2, 1},
4884 Counter{cSubRespFromE2, 1},
4885 Counter{cRestSubNotifToXapp, 1},
4886 Counter{cRestSubDelReqFromXapp, 1},
4887 Counter{cSubDelReqToE2, 1},
4888 Counter{cSubDelReqTimerExpiry, 1},
4889 Counter{cSubDelReReqToE2, 1},
4890 Counter{cSubDelRespFromE2, 1},
4891 Counter{cRestSubDelRespToXapp, 1},
4895 var params *teststube2ap.RESTSubsReqParams = nil
4896 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
4899 xappConn1.SendRESTSubsDelReq(t, &restSubId)
4901 // E2t: Receive 1st SubsDelReq
4902 e2termConn1.RecvSubsDelReq(t)
4904 // E2t: Receive 2nd SubsDelReq and send SubsDelResp
4905 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
4906 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
4908 //Wait that subs is cleaned
4909 waitSubsCleanup(t, e2SubsId, 10)
4911 mainCtrl.VerifyCounterValues(t)
4912 mainCtrl.VerifyAllClean(t)
4915 //-----------------------------------------------------------------------------
4916 // TestRESTSubDelReqSubDelFailRespInSubmgr
4919 // +-------+ +---------+ +---------+
4920 // | xapp | | submgr | | e2term |
4921 // +-------+ +---------+ +---------+
4923 // | [SUBS CREATE] |
4926 // | RESTSubDelReq | |
4927 // |---------------->| |
4929 // | RESTSubDelResp | |
4930 // |<----------------| |
4932 // | |------------->|
4935 // | |<-------------|
4938 //-----------------------------------------------------------------------------
4940 func TestRESTSubDelReqSubDelFailRespInSubmgr(t *testing.T) {
4942 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
4943 Counter{cRestSubReqFromXapp, 1},
4944 Counter{cRestSubRespToXapp, 1},
4945 Counter{cSubReqToE2, 1},
4946 Counter{cSubRespFromE2, 1},
4947 Counter{cRestSubNotifToXapp, 1},
4948 Counter{cRestSubDelReqFromXapp, 1},
4949 Counter{cSubDelReqToE2, 1},
4950 Counter{cSubDelFailFromE2, 1},
4951 Counter{cRestSubDelRespToXapp, 1},
4955 var params *teststube2ap.RESTSubsReqParams = nil
4956 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
4959 xappConn1.SendRESTSubsDelReq(t, &restSubId)
4961 // E2t: Send receive SubsDelReq and send SubsDelFail
4962 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
4963 e2termConn1.SendSubsDelFail(t, delreq, delmsg)
4965 //Wait that subs is cleaned
4966 waitSubsCleanup(t, e2SubsId, 10)
4968 mainCtrl.VerifyCounterValues(t)
4969 mainCtrl.VerifyAllClean(t)
4972 //-----------------------------------------------------------------------------
4973 // TestRESTSubReqAndSubDelOkSameAction
4976 // +-------+ +-------+ +---------+ +---------+
4977 // | xapp2 | | xapp1 | | submgr | | e2term |
4978 // +-------+ +-------+ +---------+ +---------+
4980 // | | RESTSubReq1 | |
4981 // | |---------------->| |
4983 // | | RESTSubResp1 | |
4984 // | |<----------------| |
4987 // | | |------------->|
4989 // | | |<-------------|
4990 // | | RESTNotif1 | |
4991 // | |<----------------| |
4993 // | RESTSubReq2 | |
4994 // |------------------------------>| |
4996 // | RESTSubResp2 | |
4997 // |<------------------------------| |
4999 // | | RESTNotif2 | |
5000 // |<------------------------------| |
5002 // | | RESTSubDelReq1 | |
5003 // | |---------------->| |
5005 // | | RESTSubDelResp1 | |
5006 // | |<----------------| |
5008 // | RESTSubDelReq2 | |
5009 // |------------------------------>| |
5011 // | RESTSubDelResp2 | |
5012 // |<------------------------------| |
5014 // | | | SubDelReq2 |
5015 // | | |------------->|
5017 // | | | SubDelResp2 |
5018 // | | |<-------------|
5021 //-----------------------------------------------------------------------------
5023 func TestRESTSubReqAndSubDelOkSameAction(t *testing.T) {
5025 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
5026 Counter{cRestSubReqFromXapp, 2},
5027 Counter{cRestSubRespToXapp, 2},
5028 Counter{cSubReqToE2, 1},
5029 Counter{cSubRespFromE2, 1},
5030 Counter{cRestSubNotifToXapp, 2},
5031 Counter{cMergedSubscriptions, 1},
5032 Counter{cUnmergedSubscriptions, 1},
5033 Counter{cRestSubDelReqFromXapp, 2},
5034 Counter{cSubDelReqToE2, 1},
5035 Counter{cSubDelRespFromE2, 1},
5036 Counter{cRestSubDelRespToXapp, 2},
5040 var params *teststube2ap.RESTSubsReqParams = nil
5043 restSubId1, e2SubsId1 := createSubscription(t, xappConn1, e2termConn1, params)
5044 queryXappSubscription(t, int64(e2SubsId1), "RAN_NAME_1", []string{"localhost:13560"})
5047 params = xappConn2.GetRESTSubsReqReportParams(subReqCount)
5048 params.SetMeid("RAN_NAME_1")
5050 xapp.Subscription.SetResponseCB(xappConn2.SubscriptionRespHandler)
5051 xappConn2.ExpectAnyNotification(t)
5052 waiter := rtmgrHttp.AllocNextSleep(10, true)
5053 restSubId2 := xappConn2.SendRESTSubsReq(t, params)
5054 waiter.WaitResult(t)
5055 xapp.Logger.Debug("Send REST subscriber request for subscriberId : %v", restSubId2)
5056 e2SubsId2 := xappConn2.WaitAnyRESTNotification(t)
5057 xapp.Logger.Debug("REST notification received e2SubsId=%v", e2SubsId2)
5059 queryXappSubscription(t, int64(e2SubsId1), "RAN_NAME_1", []string{"localhost:13560", "localhost:13660"})
5062 xappConn1.SendRESTSubsDelReq(t, &restSubId1)
5065 deleteXapp2Subscription(t, &restSubId2)
5067 //Wait that subs is cleaned
5068 waitSubsCleanup(t, e2SubsId2, 10)
5069 mainCtrl.VerifyCounterValues(t)
5070 mainCtrl.VerifyAllClean(t)
5073 //-----------------------------------------------------------------------------
5074 // TestSubReqAndSubDelOkSameActionParallel
5077 // +-------+ +-------+ +---------+ +---------+
5078 // | xapp2 | | xapp1 | | submgr | | e2term |
5079 // +-------+ +-------+ +---------+ +---------+
5084 // | |------------->| |
5087 // | | |------------->|
5089 // |--------------------------->| |
5091 // | | |<-------------|
5093 // | |<-------------| |
5095 // | | |------------->|
5098 // | | |<-------------|
5100 // |<---------------------------| |
5102 // | | SubDelReq 1 | |
5103 // | |------------->| |
5105 // | | SubDelResp 1 | |
5106 // | |<-------------| |
5108 // | SubDelReq 2 | |
5109 // |--------------------------->| |
5111 // | | | SubDelReq 2 |
5112 // | | |------------->|
5114 // | | | SubDelReq 2 |
5115 // | | |------------->|
5117 // | SubDelResp 2 | |
5118 // |<---------------------------| |
5120 func TestRESTSubReqAndSubDelOkSameActionParallel(t *testing.T) {
5122 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
5123 Counter{cRestSubReqFromXapp, 2},
5124 Counter{cRestSubRespToXapp, 2},
5125 Counter{cSubReqToE2, 2},
5126 Counter{cSubRespFromE2, 2},
5127 Counter{cRestSubNotifToXapp, 2},
5128 Counter{cRestSubDelReqFromXapp, 2},
5129 Counter{cSubDelReqToE2, 2},
5130 Counter{cSubDelRespFromE2, 2},
5131 Counter{cRestSubDelRespToXapp, 2},
5134 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
5135 restSubId1 := xappConn1.SendRESTSubsReq(t, params)
5136 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
5138 params2 := xappConn2.GetRESTSubsReqReportParams(subReqCount)
5139 restSubId2 := xappConn2.SendRESTSubsReq(t, params2)
5141 xappConn1.ExpectRESTNotification(t, restSubId1)
5142 e2termConn1.SendSubsResp(t, crereq1, cremsg1)
5143 e2SubsId1 := xappConn1.WaitRESTNotification(t, restSubId1)
5145 xappConn2.ExpectRESTNotification(t, restSubId2)
5146 crereq2, cremsg2 := e2termConn1.RecvSubsReq(t)
5147 e2termConn1.SendSubsResp(t, crereq2, cremsg2)
5148 e2SubsId2 := xappConn2.WaitRESTNotification(t, restSubId2)
5151 xappConn1.SendRESTSubsDelReq(t, &restSubId1)
5152 delreq1, delmsg1 := e2termConn1.RecvSubsDelReq(t)
5153 e2termConn1.SendSubsDelResp(t, delreq1, delmsg1)
5154 mainCtrl.wait_subs_clean(t, e2SubsId1, 10)
5157 xappConn2.SendRESTSubsDelReq(t, &restSubId2)
5158 delreq2, delmsg2 := e2termConn1.RecvSubsDelReq(t)
5159 e2termConn1.SendSubsDelResp(t, delreq2, delmsg2)
5161 waitSubsCleanup(t, e2SubsId2, 10)
5162 mainCtrl.VerifyCounterValues(t)
5163 mainCtrl.VerifyAllClean(t)
5166 //-----------------------------------------------------------------------------
5167 // TestRESTSubReqAndSubDelNoAnswerSameActionParallel
5170 // +-------+ +-------+ +---------+ +---------+
5171 // | xapp2 | | xapp1 | | submgr | | e2term |
5172 // +-------+ +-------+ +---------+ +---------+
5176 // | | RESTSubReq1 | |
5177 // | |---------------->| |
5179 // | | RESTSubResp1 | |
5180 // | |<----------------| |
5182 // | | |------------->|
5183 // | RESTSubReq2 | |
5184 // |------------------------------>| |
5186 // | RESTSubResp2 | |
5187 // |<------------------------------| |
5189 // | | |------------->|
5192 // | | | SubDelReq |
5193 // | | |------------->|
5195 // | | | SubDelResp |
5196 // | | |<-------------|
5197 // | | RESTNotif1 | |
5198 // | | unsuccess | |
5199 // | |<----------------| |
5201 // | | unsuccess | |
5202 // |<------------------------------| |
5204 // | | RESTSubDelReq1 | |
5205 // | |---------------->| |
5207 // | | RESTSubDelResp1 | |
5208 // | |<----------------| |
5210 // | RESTSubDelReq2 | |
5211 // |------------------------------>| |
5213 // | RESTSubDelResp2 | |
5214 // |<------------------------------| |
5216 //-----------------------------------------------------------------------------
5218 func TestRESTSubReqAndSubDelNoAnswerSameActionParallel(t *testing.T) {
5220 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
5221 Counter{cRestSubReqFromXapp, 2},
5222 Counter{cMergedSubscriptions, 1},
5223 Counter{cRestSubRespToXapp, 2},
5224 Counter{cSubReqToE2, 1},
5225 Counter{cSubReqTimerExpiry, 2},
5226 Counter{cSubReReqToE2, 1},
5227 Counter{cRestSubFailNotifToXapp, 2},
5228 Counter{cUnmergedSubscriptions, 1},
5229 Counter{cRestSubDelReqFromXapp, 2},
5230 Counter{cSubDelReqToE2, 1},
5231 Counter{cSubDelRespFromE2, 1},
5232 Counter{cRestSubDelRespToXapp, 2},
5234 const subReqCount int = 1
5237 params1 := xappConn1.GetRESTSubsReqReportParams(subReqCount)
5238 restSubId1 := xappConn1.SendRESTSubsReq(t, params1)
5239 crereq1, _ := e2termConn1.RecvSubsReq(t)
5242 subepcnt2 := mainCtrl.get_subs_entrypoint_cnt(t, crereq1.RequestId.InstanceId)
5243 params2 := xappConn2.GetRESTSubsReqReportParams(subReqCount)
5244 params2.SetMeid("RAN_NAME_1")
5245 restSubId2 := xappConn2.SendRESTSubsReq(t, params2)
5246 mainCtrl.wait_subs_entrypoint_cnt_change(t, crereq1.RequestId.InstanceId, subepcnt2, 10)
5248 //Req1 (retransmitted)
5249 e2termConn1.RecvSubsReq(t)
5251 delreq1, delmsg1 := e2termConn1.RecvSubsDelReq(t)
5253 xappConn1.WaitListedRestNotifications(t, []string{restSubId1, restSubId2})
5254 e2termConn1.SendSubsDelResp(t, delreq1, delmsg1)
5256 e2SubsIdA := <-xappConn1.ListedRESTNotifications
5257 xapp.Logger.Debug("TEST: 1.st XAPP notification received e2SubsId=%v", e2SubsIdA)
5258 e2SubsIdB := <-xappConn1.ListedRESTNotifications
5259 xapp.Logger.Debug("TEST: 2.nd XAPP notification received e2SubsId=%v", e2SubsIdB)
5262 xappConn1.SendRESTSubsDelReq(t, &restSubId1)
5265 xappConn2.SendRESTSubsDelReq(t, &restSubId2)
5267 mainCtrl.wait_multi_subs_clean(t, []uint32{e2SubsIdA.E2SubsId, e2SubsIdB.E2SubsId}, 10)
5269 //Wait that subs is cleaned
5270 waitSubsCleanup(t, e2SubsIdA.E2SubsId, 10)
5271 mainCtrl.VerifyCounterValues(t)
5272 mainCtrl.VerifyAllClean(t)
5275 //-----------------------------------------------------------------------------
5276 // TestRESTSubReqAndSubDelNokSameActionParallel
5279 // +-------+ +-------+ +---------+ +---------+
5280 // | xapp2 | | xapp1 | | submgr | | e2term |
5281 // +-------+ +-------+ +---------+ +---------+
5285 // | | RESTSubReq1 | |
5286 // | |---------------->| |
5288 // | | RESTSubResp1 | |
5289 // | |<----------------| |
5291 // | | |------------->|
5292 // | RESTSubReq2 | |
5293 // |------------------------------>| |
5295 // | RESTSubDelResp2 | |
5296 // |<------------------------------| |
5298 // | | |<-------------|
5300 // | | RESTNotif1 | |
5301 // | | unsuccess | |
5302 // | |<----------------| |
5304 // | | unsuccess | |
5305 // |<------------------------------| |
5307 // | | RESTSubDelReq1 | | There is no need for xApp to send delete for failed subscriptions but some xApp might do so.
5308 // | |---------------->| |
5310 // | | RESTSubDelResp1 | |
5311 // | |<----------------| |
5313 // | RESTSubDelReq2 | |
5314 // |------------------------------>| |
5316 // | RESTSubDelResp2 | |
5317 // |<------------------------------| |
5319 //-----------------------------------------------------------------------------
5321 func TestRESTSubReqAndSubDelNokSameActionParallel(t *testing.T) {
5323 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
5324 Counter{cRestSubReqFromXapp, 2},
5325 Counter{cMergedSubscriptions, 1},
5326 Counter{cRestSubRespToXapp, 2},
5327 Counter{cSubReqToE2, 1},
5328 Counter{cSubFailFromE2, 1},
5329 Counter{cRestSubFailNotifToXapp, 2},
5330 Counter{cUnmergedSubscriptions, 1},
5331 Counter{cRestSubDelReqFromXapp, 2},
5332 Counter{cRestSubDelRespToXapp, 2},
5335 const subReqCount int = 1
5338 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
5339 restSubId1 := xappConn1.SendRESTSubsReq(t, params)
5340 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
5343 subepcnt2 := mainCtrl.get_subs_entrypoint_cnt(t, crereq1.RequestId.InstanceId)
5344 params2 := xappConn2.GetRESTSubsReqReportParams(subReqCount)
5345 params2.SetMeid("RAN_NAME_1")
5346 restSubId2 := xappConn2.SendRESTSubsReq(t, params2)
5347 mainCtrl.wait_subs_entrypoint_cnt_change(t, crereq1.RequestId.InstanceId, subepcnt2, 10)
5349 // E2t: send SubsFail (first)
5350 fparams1 := &teststube2ap.E2StubSubsFailParams{}
5351 fparams1.Set(crereq1)
5352 e2termConn1.SendSubsFail(t, fparams1, cremsg1)
5354 xappConn1.WaitListedRestNotifications(t, []string{restSubId1, restSubId2})
5355 e2SubsIdA := <-xappConn1.ListedRESTNotifications
5356 xapp.Logger.Debug("TEST: 1.st XAPP notification received e2SubsId=%v", e2SubsIdA)
5357 e2SubsIdB := <-xappConn1.ListedRESTNotifications
5358 xapp.Logger.Debug("TEST: 2.nd XAPP notification received e2SubsId=%v", e2SubsIdB)
5361 xappConn1.SendRESTSubsDelReq(t, &restSubId1)
5364 xappConn2.SendRESTSubsDelReq(t, &restSubId2)
5366 //Wait that subs is cleaned
5367 waitSubsCleanup(t, e2SubsIdA.E2SubsId, 10)
5368 waitSubsCleanup(t, e2SubsIdB.E2SubsId, 10)
5369 mainCtrl.VerifyCounterValues(t)
5370 mainCtrl.VerifyAllClean(t)
5373 //-----------------------------------------------------------------------------
5374 // TestRESTSubReqPolicyAndSubDelOk
5377 // +-------+ +---------+ +---------+
5378 // | xapp | | submgr | | e2term |
5379 // +-------+ +---------+ +---------+
5382 // |--------------->| |
5383 // | RESTSubResp | |
5384 // |<---------------| |
5387 // | |------------->|
5390 // | |<-------------|
5393 // |<---------------| |
5396 // | RESTSubDelReq | |
5397 // |--------------->| |
5398 // | RESTSubDelResp | |
5399 // |<---------------| |
5402 // | |------------->|
5405 // | |<-------------|
5408 //-----------------------------------------------------------------------------
5410 func TestRESTSubReqPolicyAndSubDelOk(t *testing.T) {
5412 // Init counter check
5413 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
5414 Counter{cRestSubReqFromXapp, 1},
5415 Counter{cRestSubRespToXapp, 1},
5416 Counter{cSubReqToE2, 1},
5417 Counter{cSubRespFromE2, 1},
5418 Counter{cRestSubNotifToXapp, 1},
5419 Counter{cRestSubDelReqFromXapp, 1},
5420 Counter{cSubDelReqToE2, 1},
5421 Counter{cSubDelRespFromE2, 1},
5422 Counter{cRestSubDelRespToXapp, 1},
5425 params := xappConn1.GetRESTSubsReqPolicyParams(subReqCount)
5426 restSubId := xappConn1.SendRESTSubsReq(t, params)
5427 xapp.Logger.Debug("Send REST Policy subscriber request for subscriberId : %v", restSubId)
5429 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
5430 xappConn1.ExpectRESTNotification(t, restSubId)
5431 e2termConn1.SendSubsResp(t, crereq1, cremsg1)
5432 e2SubsId := xappConn1.WaitRESTNotification(t, restSubId)
5433 xapp.Logger.Debug("REST notification received e2SubsId=%v", e2SubsId)
5435 xappConn1.SendRESTSubsDelReq(t, &restSubId)
5436 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
5437 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
5439 // Wait that subs is cleaned
5440 waitSubsCleanup(t, e2SubsId, 10)
5441 mainCtrl.VerifyCounterValues(t)
5442 mainCtrl.VerifyAllClean(t)
5445 //-----------------------------------------------------------------------------
5446 // TestRESTSubReqPolicyChangeAndSubDelOk
5449 // +-------+ +---------+ +---------+
5450 // | xapp | | submgr | | e2term |
5451 // +-------+ +---------+ +---------+
5454 // |---------------->| |
5456 // | RESTSubResp | |
5457 // |<----------------| |
5459 // | |------------->|
5462 // | |<-------------|
5465 // |<----------------| |
5468 // |---------------->| |
5470 // | RESTSubResp | |
5471 // |<----------------| |
5473 // | |------------->|
5476 // | |<-------------|
5479 // |<----------------| |
5481 // | RESTSubDelReq | |
5482 // |---------------->| |
5485 // | |------------->|
5488 // | |<-------------|
5490 // | RESTSubDelResp | |
5491 // |<----------------| |
5493 //-----------------------------------------------------------------------------
5495 func TestRESTSubReqPolicyChangeAndSubDelOk(t *testing.T) {
5497 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
5498 Counter{cRestSubReqFromXapp, 2},
5499 Counter{cRestSubRespToXapp, 2},
5500 Counter{cSubReqToE2, 2},
5501 Counter{cSubRespFromE2, 2},
5502 Counter{cRestSubNotifToXapp, 2},
5503 Counter{cRestSubDelReqFromXapp, 1},
5504 Counter{cSubDelReqToE2, 1},
5505 Counter{cSubDelRespFromE2, 1},
5506 Counter{cRestSubDelRespToXapp, 1},
5509 const subReqCount int = 1
5510 const e2Timeout int64 = 1
5511 const e2RetryCount int64 = 0
5512 const routingNeeded bool = true
5515 params := xappConn1.GetRESTSubsReqPolicyParams(subReqCount)
5516 params.SetSubscriptionDirectives(e2Timeout, e2RetryCount, routingNeeded)
5517 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
5520 // GetRESTSubsReqPolicyParams sets some counters on tc side.
5522 params = xappConn1.GetRESTSubsReqPolicyParams(subReqCount)
5523 params.SetSubscriptionDirectives(e2Timeout, e2RetryCount, routingNeeded)
5524 params.SetSubscriptionID(&restSubId)
5525 params.SetTimeToWait("w200ms")
5526 restSubId, e2SubsId = createSubscription(t, xappConn1, e2termConn1, params)
5529 xappConn1.SendRESTSubsDelReq(t, &restSubId)
5531 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
5532 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
5534 // Wait that subs is cleaned
5535 waitSubsCleanup(t, e2SubsId, 10)
5536 mainCtrl.VerifyCounterValues(t)
5537 mainCtrl.VerifyAllClean(t)
5540 //-----------------------------------------------------------------------------
5541 // TestRESTSubReqPolicyChangeNOk
5544 // +-------+ +---------+ +---------+
5545 // | xapp | | submgr | | e2term |
5546 // +-------+ +---------+ +---------+
5549 // |---------------->| |
5551 // | RESTSubResp | |
5552 // |<----------------| |
5554 // | |------------->|
5557 // | |<-------------|
5560 // |<----------------| |
5563 // |---------------->| |
5565 // | RESTSubUpdateFail(400 Bad request)
5567 // | RESTSubDelReq | |
5568 // |---------------->| |
5571 // | |------------->|
5574 // | |<-------------|
5576 // | RESTSubDelResp | |
5577 // |<----------------| |
5579 //-----------------------------------------------------------------------------
5581 func TestRESTSubReqPolicyChangeNOk(t *testing.T) {
5583 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
5584 Counter{cRestSubReqFromXapp, 2},
5585 Counter{cRestSubRespToXapp, 1},
5586 Counter{cSubReqToE2, 1},
5587 Counter{cSubRespFromE2, 1},
5588 Counter{cRestSubNotifToXapp, 1},
5589 Counter{cRestSubFailToXapp, 1},
5590 Counter{cRestSubDelReqFromXapp, 1},
5591 Counter{cSubDelReqToE2, 1},
5592 Counter{cSubDelRespFromE2, 1},
5593 Counter{cRestSubDelRespToXapp, 1},
5597 params := xappConn1.GetRESTSubsReqPolicyParams(subReqCount)
5598 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
5601 params = xappConn1.GetRESTSubsReqPolicyParams(subReqCount)
5603 restSubIdUpd := strings.ToUpper(restSubId) // This makes RESTSubReq to fail
5604 params.SetSubscriptionID(&restSubIdUpd)
5605 params.SetTimeToWait("w200ms")
5607 restSubId2 := xappConn1.SendRESTSubsReq(t, params)
5608 assert.Equal(t, restSubId2, "")
5611 xappConn1.SendRESTSubsDelReq(t, &restSubId)
5613 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
5614 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
5616 // Wait that subs is cleaned
5617 waitSubsCleanup(t, e2SubsId, 10)
5618 mainCtrl.VerifyCounterValues(t)
5619 mainCtrl.VerifyAllClean(t)
5622 //-----------------------------------------------------------------------------
5623 // TestRESTSubReqAndSubDelOkTwoE2termParallel
5626 // +-------+ +---------+ +---------+ +---------+
5627 // | xapp | | submgr | | e2term1 | | e2term2 |
5628 // +-------+ +---------+ +---------+ +---------+
5632 // | RESTSubReq1 | | |
5633 // |---------------->| | |
5635 // | RESTSubResp1 | | |
5636 // |<----------------| | |
5638 // | |------------->| |
5640 // | RESTSubReq2 | | |
5641 // |---------------->| | |
5643 // | RESTSubResp2 | | |
5644 // |<----------------| | |
5646 // | |---------------------------->|
5649 // | |<-------------| |
5650 // | RESTNotif1 | | |
5651 // |<----------------| | |
5653 // | |<----------------------------|
5654 // | RESTNotif2 | | |
5655 // |<----------------| | |
5657 // | [SUBS 1 DELETE] | |
5659 // | [SUBS 2 DELETE] | |
5662 //-----------------------------------------------------------------------------
5664 func TestRESTSubReqAndSubDelOkTwoE2termParallel(t *testing.T) {
5666 // Init counter check
5667 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
5668 Counter{cRestSubReqFromXapp, 2},
5669 Counter{cRestSubRespToXapp, 2},
5670 Counter{cSubReqToE2, 2},
5671 Counter{cSubRespFromE2, 2},
5672 Counter{cRestSubNotifToXapp, 2},
5673 Counter{cRestSubDelReqFromXapp, 2},
5674 Counter{cSubDelReqToE2, 2},
5675 Counter{cSubDelRespFromE2, 2},
5676 Counter{cRestSubDelRespToXapp, 2},
5679 const subReqCount int = 1
5682 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
5683 restSubId1 := xappConn1.SendRESTSubsReq(t, params)
5684 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
5687 params = xappConn2.GetRESTSubsReqReportParams(subReqCount)
5688 params.SetMeid("RAN_NAME_11")
5689 // Here we use xappConn2 to simulate sending second request from same xapp as doing it from xappConn1
5690 // would not work as notification would not be received
5691 restSubId2 := xappConn2.SendRESTSubsReq(t, params)
5692 crereq2, cremsg2 := e2termConn2.RecvSubsReq(t)
5695 xappConn1.ExpectRESTNotification(t, restSubId1)
5696 e2termConn1.SendSubsResp(t, crereq1, cremsg1)
5697 e2SubsId1 := xappConn1.WaitRESTNotification(t, restSubId1)
5698 xapp.Logger.Debug("TEST: REST notification received e2SubsId1=%v", e2SubsId1)
5701 xappConn2.ExpectRESTNotification(t, restSubId2)
5702 e2termConn2.SendSubsResp(t, crereq2, cremsg2)
5703 e2SubsId2 := xappConn2.WaitRESTNotification(t, restSubId2)
5704 xapp.Logger.Debug("TEST: REST notification received e2SubsId2=%v", e2SubsId2)
5707 xappConn1.SendRESTSubsDelReq(t, &restSubId1)
5708 delreq1, delmsg1 := e2termConn1.RecvSubsDelReq(t)
5709 e2termConn1.SendSubsDelResp(t, delreq1, delmsg1)
5711 // Wait that subs is cleaned
5712 mainCtrl.wait_subs_clean(t, e2SubsId1, 10)
5715 xappConn1.SendRESTSubsDelReq(t, &restSubId2)
5716 delreq2, delmsg2 := e2termConn2.RecvSubsDelReq(t)
5717 e2termConn2.SendSubsDelResp(t, delreq2, delmsg2)
5719 // Wait that subs is cleaned
5720 waitSubsCleanup(t, e2SubsId2, 10)
5722 mainCtrl.VerifyCounterValues(t)
5723 mainCtrl.VerifyAllClean(t)
5726 //-----------------------------------------------------------------------------
5727 // TestRESTSubReqInsertAndSubDelOk
5730 // +-------+ +---------+ +---------+
5731 // | xapp | | submgr | | e2term |
5732 // +-------+ +---------+ +---------+
5735 // |---------------->| |
5737 // | RESTSubResp | |
5738 // |<----------------| |
5741 // | |------------->|
5744 // | |<-------------|
5746 // |<----------------| |
5749 // | RESTSubDelReq | |
5750 // |---------------->| |
5753 // | |------------->|
5756 // | |<-------------|
5758 // | RESTSubDelResp| |
5759 // |<----------------| |
5761 //-----------------------------------------------------------------------------
5763 func TestRESTSubReqInsertAndSubDelOk(t *testing.T) {
5765 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
5766 Counter{cRestSubReqFromXapp, 1},
5767 Counter{cRestSubRespToXapp, 1},
5768 Counter{cSubReqToE2, 1},
5769 Counter{cSubRespFromE2, 1},
5770 Counter{cRestSubNotifToXapp, 1},
5771 Counter{cRestSubDelReqFromXapp, 1},
5772 Counter{cSubDelReqToE2, 1},
5773 Counter{cSubDelRespFromE2, 1},
5774 Counter{cRestSubDelRespToXapp, 1},
5777 const subReqCount int = 1
5779 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
5780 params.SetSubActionTypes("insert")
5783 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
5786 xappConn1.SendRESTSubsDelReq(t, &restSubId)
5788 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
5789 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
5791 // Wait that subs is cleaned
5792 waitSubsCleanup(t, e2SubsId, 10)
5793 mainCtrl.VerifyCounterValues(t)
5794 mainCtrl.VerifyAllClean(t)
5797 //-----------------------------------------------------------------------------
5798 // TestRESTSubReqNokAndSubDelOkWithRestartInMiddle
5801 // +-------+ +---------+ +---------+
5802 // | xapp | | submgr | | e2term |
5803 // +-------+ +---------+ +---------+
5806 // |------------->| |
5808 // | RESTSubResp | |
5809 // |<-------------| |
5811 // | |------------->|
5816 // | Submgr restart |
5820 // | |------------->|
5823 // | |<-------------|
5827 // |<-------------| |
5829 // | RESTSubDelReq| |
5830 // |------------->| |
5832 // |RESTSubDelResp| |
5833 // |<-------------| |
5835 //-----------------------------------------------------------------------------
5837 func TestRESTSubReqNokAndSubDelOkWithRestartInMiddle(t *testing.T) {
5839 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
5840 Counter{cRestSubReqFromXapp, 1},
5841 Counter{cRestSubRespToXapp, 1},
5842 Counter{cSubReqToE2, 1},
5843 Counter{cSubDelReqFromXapp, 1},
5844 Counter{cSubDelReqToE2, 1},
5845 Counter{cSubDelRespFromE2, 1},
5846 Counter{cRestSubDelReqFromXapp, 1},
5847 Counter{cRestSubDelRespToXapp, 1},
5850 const subReqCount int = 1
5852 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
5855 mainCtrl.SetResetTestFlag(t, true) // subs.DoNotWaitSubResp will be set TRUE for the subscription
5856 restSubId := xappConn1.SendRESTSubsReq(t, params)
5857 xapp.Logger.Debug("Send REST subscriber request for subscriber : %v", restSubId)
5859 e2termConn1.RecvSubsReq(t)
5861 mainCtrl.SetResetTestFlag(t, false)
5863 mainCtrl.SimulateRestart(t)
5864 xapp.Logger.Debug("mainCtrl.SimulateRestart done")
5866 // Deleletion of uncompleted subscription
5867 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
5868 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
5871 xappConn1.SendRESTSubsDelReq(t, &restSubId)
5873 xappConn1.TestMsgChanEmpty(t)
5874 e2termConn1.TestMsgChanEmpty(t)
5875 mainCtrl.wait_registry_empty(t, 10)
5877 mainCtrl.VerifyCounterValues(t)
5878 mainCtrl.VerifyAllClean(t)
5881 //-----------------------------------------------------------------------------
5882 // TestRESTSubReqAndSubDelOkWithRestartInMiddle
5885 // +-------+ +---------+ +---------+
5886 // | xapp | | submgr | | e2term |
5887 // +-------+ +---------+ +---------+
5890 // |---------------->| |
5892 // | RESTSubResp | |
5893 // |<----------------| |
5895 // | |------------->|
5898 // | |<-------------|
5901 // |<----------------| |
5904 // | Submgr restart |
5906 // | RESTSubDelReq | |
5907 // |---------------->| |
5910 // | |------------->|
5913 // | |<-------------|
5915 // | RESTSubDelResp | |
5916 // |<----------------| |
5918 //-----------------------------------------------------------------------------
5920 func TestRESTSubReqAndSubDelOkWithRestartInMiddle(t *testing.T) {
5922 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
5923 Counter{cRestSubReqFromXapp, 1},
5924 Counter{cRestSubRespToXapp, 1},
5925 Counter{cSubReqToE2, 1},
5926 Counter{cSubRespFromE2, 1},
5927 Counter{cRestSubNotifToXapp, 1},
5928 Counter{cRestSubDelReqFromXapp, 1},
5929 Counter{cSubDelReqToE2, 1},
5930 Counter{cSubDelRespFromE2, 1},
5931 Counter{cRestSubDelRespToXapp, 1},
5934 // Create subscription
5935 var params *teststube2ap.RESTSubsReqParams = nil
5936 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
5937 xapp.Logger.Debug("Send REST subscriber request for subscriber : %v", restSubId)
5939 // Check subscription
5940 queryXappSubscription(t, int64(e2SubsId), "RAN_NAME_1", []string{"localhost:13560"})
5942 mainCtrl.SimulateRestart(t)
5943 xapp.Logger.Debug("mainCtrl.SimulateRestart done")
5945 // ReadE2Subscriptions() for testing is running in own go routine (go mainCtrl.c.ReadE2Subscriptions())
5946 // That needs to be completed before successful subscription query is possible
5947 <-time.After(time.Second * 1)
5949 // Check subscription
5950 queryXappSubscription(t, int64(e2SubsId), "RAN_NAME_1", []string{"localhost:13560"})
5952 // Delete subscription
5953 deleteSubscription(t, xappConn1, e2termConn1, &restSubId)
5955 //Wait that subs is cleaned
5956 waitSubsCleanup(t, e2SubsId, 10)
5958 mainCtrl.VerifyCounterValues(t)
5959 mainCtrl.VerifyAllClean(t)
5962 //-----------------------------------------------------------------------------
5963 // TestRESTSubReqAndSubDelOkSameActionWithRestartsInMiddle
5966 // +-------+ +-------+ +---------+ +---------+
5967 // | xapp2 | | xapp1 | | submgr | | e2term |
5968 // +-------+ +-------+ +---------+ +---------+
5970 // | | RESTSubReq1 | |
5971 // | |---------------->| |
5973 // | | RESTSubResp1 | |
5974 // | |<----------------| |
5977 // | | |------------->|
5979 // | | |<-------------|
5980 // | | RESTNotif1 | |
5981 // | |<----------------| |
5983 // | RESTSubReq2 | |
5984 // |------------------------------>| |
5986 // | RESTSubResp2 | |
5987 // |<------------------------------| |
5989 // | | RESTNotif2 | |
5990 // |<------------------------------| |
5992 // | | Submgr restart |
5994 // | | RESTSubDelReq1 | |
5995 // | |---------------->| |
5997 // | | RESTSubDelResp1 | |
5998 // | |<----------------| |
6000 // | | Submgr restart |
6002 // | RESTSubDelReq2 | |
6003 // |------------------------------>| |
6005 // | RESTSubDelResp2 | |
6006 // |<------------------------------| |
6008 // | | | SubDelReq2 |
6009 // | | |------------->|
6011 // | | | SubDelResp2 |
6012 // | | |<-------------|
6015 //-----------------------------------------------------------------------------
6016 func TestRESTSubReqAndSubDelOkSameActionWithRestartsInMiddle(t *testing.T) {
6018 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
6019 Counter{cRestSubReqFromXapp, 2},
6020 Counter{cRestSubRespToXapp, 2},
6021 Counter{cSubReqToE2, 1},
6022 Counter{cSubRespFromE2, 1},
6023 Counter{cRestSubNotifToXapp, 2},
6024 Counter{cMergedSubscriptions, 1},
6025 Counter{cUnmergedSubscriptions, 1},
6026 Counter{cRestSubDelReqFromXapp, 2},
6027 Counter{cSubDelReqToE2, 1},
6028 Counter{cSubDelRespFromE2, 1},
6029 Counter{cRestSubDelRespToXapp, 2},
6032 // Create subscription 1
6033 var params *teststube2ap.RESTSubsReqParams = nil
6034 restSubId1, e2SubsId1 := createSubscription(t, xappConn1, e2termConn1, params)
6035 xapp.Logger.Debug("Send REST subscriber request for subscriber 1 : %v", restSubId1)
6037 // Create subscription 2 with same action
6038 params = xappConn2.GetRESTSubsReqReportParams(subReqCount)
6039 params.SetMeid("RAN_NAME_1")
6040 xapp.Subscription.SetResponseCB(xappConn2.SubscriptionRespHandler)
6041 xappConn2.ExpectAnyNotification(t)
6042 restSubId2 := xappConn2.SendRESTSubsReq(t, params)
6043 xapp.Logger.Debug("Send REST subscriber request for subscriberId : %v", restSubId2)
6044 e2SubsId2 := xappConn2.WaitAnyRESTNotification(t)
6045 xapp.Logger.Debug("REST notification received e2SubsId=%v", e2SubsId2)
6047 queryXappSubscription(t, int64(e2SubsId1), "RAN_NAME_1", []string{"localhost:13560", "localhost:13660"})
6049 mainCtrl.SimulateRestart(t)
6050 xapp.Logger.Debug("mainCtrl.SimulateRestart done 1")
6052 // ReadE2Subscriptions() for testing is running in own go routine (go mainCtrl.c.ReadE2Subscriptions())
6053 // That needs to be completed before successful subscription delete is possible
6054 <-time.After(time.Second * 1)
6056 // Delete subscription 1, and wait until it has removed the first endpoint
6057 xappConn1.SendRESTSubsDelReq(t, &restSubId1)
6058 mainCtrl.WaitRESTSubscriptionDelete(restSubId1)
6059 // Above wait does not work correctly anymore as this delay makes this test case work
6061 mainCtrl.SimulateRestart(t)
6062 xapp.Logger.Debug("mainCtrl.SimulateRestart done 2")
6064 // ReadE2Subscriptions() for testing is running in own go routine (go mainCtrl.c.ReadE2Subscriptions())
6065 // That needs to be completed before successful subscription query is possible
6066 <-time.After(time.Second * 1)
6068 queryXappSubscription(t, int64(e2SubsId1), "RAN_NAME_1", []string{"localhost:13660"})
6070 // Delete subscription 2
6071 deleteXapp2Subscription(t, &restSubId2)
6073 //Wait that subs is cleaned
6074 waitSubsCleanup(t, e2SubsId2, 10)
6076 mainCtrl.VerifyCounterValues(t)
6077 mainCtrl.VerifyAllClean(t)
6080 //-----------------------------------------------------------------------------
6081 // TestRESTReportSubReqAndSubDelOk
6084 // +-------+ +---------+ +---------+
6085 // | xapp | | submgr | | e2term |
6086 // +-------+ +---------+ +---------+
6089 // |---------------->| |
6091 // | RESTSubResp | |
6092 // |<----------------| |
6095 // | |------------->|
6098 // | |<-------------|
6100 // |<----------------| |
6101 // | | SubReq | // Only one request sent in the teat case
6102 // | |------------->|
6105 // | |<-------------|
6107 // |<----------------| |
6111 // | RESTSubDelReq | |
6112 // |---------------->| |
6114 // | RESTSubDelResp| |
6115 // |<----------------| |
6117 // | |------------->|
6120 // | |<-------------|
6123 //-----------------------------------------------------------------------------
6125 func TestRESTReportSubReqAndSubDelOk(t *testing.T) {
6126 const subReqCount int = 1
6128 RESTReportSubReqAndSubDelOk(t, subReqCount, testIndex)
6131 func RESTReportSubReqAndSubDelOk(t *testing.T, subReqCount int, testIndex int) {
6132 xapp.Logger.Debug("TEST: TestRESTReportSubReqAndSubDelOk with testIndex %v", testIndex)
6134 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
6135 Counter{cRestSubReqFromXapp, 1},
6136 Counter{cRestSubRespToXapp, 1},
6137 Counter{cSubReqToE2, uint64(subReqCount)},
6138 Counter{cSubRespFromE2, uint64(subReqCount)},
6139 Counter{cRestSubNotifToXapp, 1},
6140 Counter{cRestSubDelReqFromXapp, 1},
6141 Counter{cRestSubDelRespToXapp, 1},
6142 Counter{cSubDelReqToE2, uint64(subReqCount)},
6143 Counter{cSubDelRespFromE2, uint64(subReqCount)},
6147 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
6148 restSubId := xappConn1.SendRESTSubsReq(t, params)
6150 var e2SubsId []uint32
6151 for i := 0; i < subReqCount; i++ {
6152 crereq, cremsg := e2termConn1.RecvSubsReq(t)
6153 xappConn1.ExpectRESTNotification(t, restSubId)
6155 e2termConn1.SendSubsResp(t, crereq, cremsg)
6156 instanceId := xappConn1.WaitRESTNotification(t, restSubId)
6157 xapp.Logger.Debug("TEST: REST notification received e2SubsId=%v", instanceId)
6158 e2SubsId = append(e2SubsId, instanceId)
6159 resp, _ := xapp.Subscription.QuerySubscriptions()
6160 assert.Equal(t, resp[i].SubscriptionID, (int64)(instanceId))
6161 assert.Equal(t, resp[i].Meid, "RAN_NAME_1")
6162 assert.Equal(t, resp[i].ClientEndpoint, []string{"localhost:13560"})
6167 xappConn1.SendRESTSubsDelReq(t, &restSubId)
6169 for i := 0; i < subReqCount; i++ {
6170 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
6171 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
6174 // Wait that subs is cleaned
6175 for i := 0; i < subReqCount; i++ {
6176 mainCtrl.wait_subs_clean(t, e2SubsId[i], 10)
6179 xappConn1.TestMsgChanEmpty(t)
6180 e2termConn1.TestMsgChanEmpty(t)
6181 mainCtrl.wait_registry_empty(t, 10)
6182 mainCtrl.VerifyAllClean(t)
6183 mainCtrl.VerifyCounterValues(t)
6186 //-----------------------------------------------------------------------------
6187 // TestRESTTwoPolicySubReqAndSubDelOk
6190 // +-------+ +---------+ +---------+
6191 // | xapp | | submgr | | e2term |
6192 // +-------+ +---------+ +---------+
6195 // |---------------->| |
6197 // | RESTSubResp | |
6198 // |<----------------| |
6201 // | |------------->|
6204 // | |<-------------|
6206 // |<----------------| |
6208 // | |------------->|
6211 // | |<-------------|
6213 // |<----------------| |
6215 // | RESTSubDelReq | |
6216 // |---------------->| |
6218 // | RESTSubDelResp| |
6219 // |<----------------| |
6221 // | |------------->|
6224 // | |<-------------|
6227 // | |------------->|
6230 // | |<-------------|
6233 //-----------------------------------------------------------------------------
6235 func TestRESTTwoPolicySubReqAndSubDelOk(t *testing.T) {
6237 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
6238 Counter{cRestSubReqFromXapp, 1},
6239 Counter{cRestSubRespToXapp, 1},
6240 Counter{cSubReqToE2, 2},
6241 Counter{cSubRespFromE2, 2},
6242 Counter{cRestSubNotifToXapp, 2},
6243 Counter{cRestSubDelReqFromXapp, 1},
6244 Counter{cSubDelReqToE2, 2},
6245 Counter{cSubDelRespFromE2, 2},
6246 Counter{cRestSubDelRespToXapp, 1},
6249 const subReqCount int = 2
6252 params := xappConn1.GetRESTSubsReqPolicyParams(subReqCount)
6253 restSubId := xappConn1.SendRESTSubsReq(t, params)
6254 e2SubsIds := sendAndReceiveMultipleE2SubReqs(t, subReqCount, xappConn1, e2termConn1, restSubId)
6256 assert.Equal(t, len(e2SubsIds), 2)
6259 xappConn1.SendRESTSubsDelReq(t, &restSubId)
6260 sendAndReceiveMultipleE2DelReqs(t, e2SubsIds, e2termConn1)
6262 xappConn1.TestMsgChanEmpty(t)
6263 e2termConn1.TestMsgChanEmpty(t)
6264 mainCtrl.wait_registry_empty(t, 10)
6266 mainCtrl.VerifyCounterValues(t)
6267 mainCtrl.VerifyAllClean(t)
6270 //-----------------------------------------------------------------------------
6271 // TestRESTPolicySubReqAndSubDelOk19E2Subs
6274 // +-------+ +---------+ +---------+
6275 // | xapp | | submgr | | e2term |
6276 // +-------+ +---------+ +---------+
6279 // |---------------->| |
6281 // | RESTSubResp | |
6282 // |<----------------| |
6285 // | |------------->|
6286 // | | | E2 subscription x 19
6288 // | |<-------------|
6290 // |<----------------| |
6292 // | RESTSubDelReq | |
6293 // |---------------->| |
6295 // | RESTSubDelResp| |
6296 // |<----------------| |
6297 // | | SubDelReq | ------
6298 // | |------------->|
6299 // | | | E2 subscription delete x 19
6301 // | |<-------------|
6305 //-----------------------------------------------------------------------------
6307 func TestRESTPolicySubReqAndSubDelOk19E2Subs(t *testing.T) {
6309 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
6310 Counter{cRestSubReqFromXapp, 1},
6311 Counter{cRestSubRespToXapp, 1},
6312 Counter{cSubReqToE2, 19},
6313 Counter{cSubRespFromE2, 19},
6314 Counter{cRestSubNotifToXapp, 19},
6315 Counter{cRestSubDelReqFromXapp, 1},
6316 Counter{cSubDelReqToE2, 19},
6317 Counter{cSubDelRespFromE2, 19},
6318 Counter{cRestSubDelRespToXapp, 1},
6321 const subReqCount int = 19
6323 params := xappConn1.GetRESTSubsReqPolicyParams(subReqCount)
6324 restSubId := xappConn1.SendRESTSubsReq(t, params)
6325 e2SubsIds := sendAndReceiveMultipleE2SubReqs(t, subReqCount, xappConn1, e2termConn1, restSubId)
6327 assert.Equal(t, len(e2SubsIds), 19)
6329 xappConn1.SendRESTSubsDelReq(t, &restSubId)
6330 sendAndReceiveMultipleE2DelReqs(t, e2SubsIds, e2termConn1)
6332 xappConn1.TestMsgChanEmpty(t)
6333 e2termConn1.TestMsgChanEmpty(t)
6334 mainCtrl.wait_registry_empty(t, 10)
6336 mainCtrl.VerifyCounterValues(t)
6337 mainCtrl.VerifyAllClean(t)
6340 //-----------------------------------------------------------------------------
6341 // TestRESTTwoPolicySubReqAndSubDelOk
6344 // +-------+ +---------+ +---------+
6345 // | xapp | | submgr | | e2term |
6346 // +-------+ +---------+ +---------+
6349 // |---------------->| |
6351 // | RESTSubResp | |
6352 // |<----------------| |
6355 // | |------------->|
6358 // | |<-------------|
6360 // |<----------------| |
6362 // | |------------->|
6365 // | |<-------------|
6367 // |<----------------| |
6369 // | RESTSubDelReq | |
6370 // |---------------->| |
6372 // | RESTSubDelResp| |
6373 // |<----------------| |
6375 // | |------------->|
6378 // | |<-------------|
6381 // | |------------->|
6384 // | |<-------------|
6387 //-----------------------------------------------------------------------------
6389 func TestRESTTwoReportSubReqAndSubDelOk(t *testing.T) {
6393 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
6394 Counter{cRestSubReqFromXapp, 1},
6395 Counter{cRestSubRespToXapp, 1},
6396 Counter{cSubReqToE2, uint64(subReqCount)},
6397 Counter{cSubRespFromE2, uint64(subReqCount)},
6398 Counter{cRestSubNotifToXapp, uint64(subReqCount)},
6399 Counter{cRestSubDelReqFromXapp, 1},
6400 Counter{cSubDelReqToE2, uint64(subReqCount)},
6401 Counter{cSubDelRespFromE2, uint64(subReqCount)},
6402 Counter{cRestSubDelRespToXapp, 1},
6406 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
6407 restSubId := xappConn1.SendRESTSubsReq(t, params)
6408 e2SubsIds := sendAndReceiveMultipleE2SubReqs(t, subReqCount, xappConn1, e2termConn1, restSubId)
6410 assert.Equal(t, len(e2SubsIds), subReqCount)
6413 xappConn1.SendRESTSubsDelReq(t, &restSubId)
6414 sendAndReceiveMultipleE2DelReqs(t, e2SubsIds, e2termConn1)
6416 xappConn1.TestMsgChanEmpty(t)
6417 e2termConn1.TestMsgChanEmpty(t)
6418 mainCtrl.wait_registry_empty(t, 10)
6420 mainCtrl.VerifyCounterValues(t)
6421 mainCtrl.VerifyAllClean(t)
6424 //-----------------------------------------------------------------------------
6425 // TestRESTTwoReportSubReqAndSubDelOkNoActParams
6428 // +-------+ +---------+ +---------+
6429 // | xapp | | submgr | | e2term |
6430 // +-------+ +---------+ +---------+
6433 // |---------------->| |
6435 // | RESTSubResp | |
6436 // |<----------------| |
6439 // | |------------->|
6442 // | |<-------------|
6444 // |<----------------| |
6446 // | |------------->|
6449 // | |<-------------|
6451 // |<----------------| |
6453 // | RESTSubDelReq | |
6454 // |---------------->| |
6456 // | RESTSubDelResp| |
6457 // |<----------------| |
6459 // | |------------->|
6462 // | |<-------------|
6465 // | |------------->|
6468 // | |<-------------|
6471 //-----------------------------------------------------------------------------
6473 func TestRESTTwoReportSubReqAndSubDelOkNoActParams(t *testing.T) {
6477 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
6478 Counter{cRestSubReqFromXapp, 1},
6479 Counter{cRestSubRespToXapp, 1},
6480 Counter{cSubReqToE2, uint64(subReqCount)},
6481 Counter{cSubRespFromE2, uint64(subReqCount)},
6482 Counter{cRestSubNotifToXapp, uint64(subReqCount)},
6483 Counter{cRestSubDelReqFromXapp, 1},
6484 Counter{cSubDelReqToE2, uint64(subReqCount)},
6485 Counter{cSubDelRespFromE2, uint64(subReqCount)},
6486 Counter{cRestSubDelRespToXapp, 1},
6490 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
6491 restSubId := xappConn1.SendRESTSubsReq(t, params)
6492 e2SubsIds := sendAndReceiveMultipleE2SubReqs(t, subReqCount, xappConn1, e2termConn1, restSubId)
6494 assert.Equal(t, len(e2SubsIds), subReqCount)
6497 xappConn1.SendRESTSubsDelReq(t, &restSubId)
6498 sendAndReceiveMultipleE2DelReqs(t, e2SubsIds, e2termConn1)
6500 xappConn1.TestMsgChanEmpty(t)
6501 e2termConn1.TestMsgChanEmpty(t)
6502 mainCtrl.wait_registry_empty(t, 10)
6504 mainCtrl.VerifyCounterValues(t)
6505 mainCtrl.VerifyAllClean(t)
6508 //-----------------------------------------------------------------------------
6509 // TestRESTReportSubReqAndSubDelOk19E2Subs
6512 // +-------+ +---------+ +---------+
6513 // | xapp | | submgr | | e2term |
6514 // +-------+ +---------+ +---------+
6517 // |---------------->| |
6519 // | RESTSubResp | |
6520 // |<----------------| |
6523 // | |------------->|
6524 // | | | E2 subscription x 19
6526 // | |<-------------|
6528 // |<----------------| |
6530 // | RESTSubDelReq | |
6531 // |---------------->| |
6533 // | RESTSubDelResp| |
6534 // |<----------------| |
6535 // | | SubDelReq | ------
6536 // | |------------->|
6537 // | | | E2 subscription delete x 19
6539 // | |<-------------|
6543 //-----------------------------------------------------------------------------
6545 func TestRESTReportSubReqAndSubDelOk19E2Subs(t *testing.T) {
6549 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
6550 Counter{cRestSubReqFromXapp, 1},
6551 Counter{cRestSubRespToXapp, 1},
6552 Counter{cSubReqToE2, uint64(subReqCount)},
6553 Counter{cSubRespFromE2, uint64(subReqCount)},
6554 Counter{cRestSubNotifToXapp, uint64(subReqCount)},
6555 Counter{cRestSubDelReqFromXapp, 1},
6556 Counter{cSubDelReqToE2, uint64(subReqCount)},
6557 Counter{cSubDelRespFromE2, uint64(subReqCount)},
6558 Counter{cRestSubDelRespToXapp, 1},
6562 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
6563 restSubId := xappConn1.SendRESTSubsReq(t, params)
6564 e2SubsIds := sendAndReceiveMultipleE2SubReqs(t, subReqCount, xappConn1, e2termConn1, restSubId)
6566 assert.Equal(t, len(e2SubsIds), subReqCount)
6569 xappConn1.SendRESTSubsDelReq(t, &restSubId)
6570 sendAndReceiveMultipleE2DelReqs(t, e2SubsIds, e2termConn1)
6572 xappConn1.TestMsgChanEmpty(t)
6573 e2termConn1.TestMsgChanEmpty(t)
6574 mainCtrl.wait_registry_empty(t, 10)
6576 mainCtrl.VerifyCounterValues(t)
6577 mainCtrl.VerifyAllClean(t)
6580 //-----------------------------------------------------------------------------
6581 // TestRESTSubReqReportSameActionDiffEventTriggerDefinitionLen
6584 // +-------+ +-------+ +---------+ +---------+
6585 // | xapp2 | | xapp1 | | submgr | | e2term |
6586 // +-------+ +-------+ +---------+ +---------+
6588 // | | RESTSubReq1 | |
6589 // | |------------->| |
6590 // | | RESTSubResp1 | |
6591 // | |<-------------| |
6594 // | | |------------->|
6596 // | RESTSubReq2 | |
6597 // |------------------------>| |
6598 // | RESTSubResp2 | |
6599 // |<------------------------| |
6602 // | | |------------->|
6605 // | | |<-------------|
6606 // | | RESTNotif1 | |
6607 // | |<-------------| |
6610 // | | |<-------------|
6612 // |<------------------------| |
6614 // | | [SUBS 1 DELETE] |
6616 // | | [SUBS 2 DELETE] |
6619 //-----------------------------------------------------------------------------
6621 func TestRESTSubReqReportSameActionDiffEventTriggerDefinitionLen(t *testing.T) {
6623 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
6624 Counter{cRestSubReqFromXapp, 2},
6625 Counter{cRestSubRespToXapp, 2},
6626 Counter{cSubReqToE2, 2},
6627 Counter{cSubRespFromE2, 2},
6628 Counter{cRestSubNotifToXapp, 2},
6629 Counter{cRestSubDelReqFromXapp, 2},
6630 Counter{cSubDelReqToE2, 2},
6631 Counter{cSubDelRespFromE2, 2},
6632 Counter{cRestSubDelRespToXapp, 2},
6636 var params *teststube2ap.RESTSubsReqParams = nil
6639 restSubId1, e2SubsId1 := createSubscription(t, xappConn1, e2termConn1, params)
6640 xapp.Logger.Debug("Send REST subscriber request for subscriberId : %v", restSubId1)
6642 queryXappSubscription(t, int64(e2SubsId1), "RAN_NAME_1", []string{"localhost:13560"})
6645 params = xappConn2.GetRESTSubsReqReportParams(subReqCount)
6646 params.SetMeid("RAN_NAME_1")
6647 eventTriggerDefinition := []int64{1234, 1}
6648 params.SetSubEventTriggerDefinition(eventTriggerDefinition)
6650 restSubId2 := xappConn2.SendRESTSubsReq(t, params)
6651 xapp.Logger.Debug("Send REST subscriber request for subscriberId : %v", restSubId2)
6652 crereq, cremsg := e2termConn1.RecvSubsReq(t)
6653 xappConn2.ExpectRESTNotification(t, restSubId2)
6654 e2termConn1.SendSubsResp(t, crereq, cremsg)
6655 e2SubsId2 := xappConn2.WaitRESTNotification(t, restSubId2)
6657 deleteXapp1Subscription(t, &restSubId1)
6658 deleteXapp2Subscription(t, &restSubId2)
6660 waitSubsCleanup(t, e2SubsId1, 10)
6661 waitSubsCleanup(t, e2SubsId2, 10)
6663 mainCtrl.VerifyCounterValues(t)
6664 mainCtrl.VerifyAllClean(t)
6667 //-----------------------------------------------------------------------------
6668 // TestRESTSubReqReportSameActionDiffActionListLen
6671 // +-------+ +-------+ +---------+ +---------+
6672 // | xapp2 | | xapp1 | | submgr | | e2term |
6673 // +-------+ +-------+ +---------+ +---------+
6675 // | | RESTSubReq1 | |
6676 // | |------------->| |
6677 // | | RESTSubResp1 | |
6678 // | |<-------------| |
6681 // | | |------------->|
6683 // | RESTSubReq2 | |
6684 // |------------------------>| |
6685 // | RESTSubResp2 | |
6686 // |<------------------------| |
6689 // | | |------------->|
6692 // | | |<-------------|
6693 // | | RESTNotif1 | |
6694 // | |<-------------| |
6697 // | | |<-------------|
6699 // |<------------------------| |
6701 // | | [SUBS 1 DELETE] |
6703 // | | [SUBS 2 DELETE] |
6706 //-----------------------------------------------------------------------------
6708 func TestRESTSubReqReportSameActionDiffActionListLen(t *testing.T) {
6710 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
6711 Counter{cRestSubReqFromXapp, 2},
6712 Counter{cRestSubRespToXapp, 2},
6713 Counter{cSubReqToE2, 2},
6714 Counter{cSubRespFromE2, 2},
6715 Counter{cRestSubNotifToXapp, 2},
6716 Counter{cRestSubDelReqFromXapp, 2},
6717 Counter{cSubDelReqToE2, 2},
6718 Counter{cSubDelRespFromE2, 2},
6719 Counter{cRestSubDelRespToXapp, 2},
6723 var params *teststube2ap.RESTSubsReqParams = nil
6726 restSubId1, e2SubsId1 := createSubscription(t, xappConn1, e2termConn1, params)
6727 xapp.Logger.Debug("Send REST subscriber request for subscriberId : %v", restSubId1)
6729 queryXappSubscription(t, int64(e2SubsId1), "RAN_NAME_1", []string{"localhost:13560"})
6732 params = xappConn2.GetRESTSubsReqReportParams(subReqCount)
6733 params.SetMeid("RAN_NAME_1")
6735 actionId := int64(1)
6736 actionType := "report"
6737 actionDefinition := []int64{5678, 1}
6738 subsequestActionType := "continue"
6739 timeToWait := "w10ms"
6740 params.AppendActionToActionToBeSetupList(actionId, actionType, actionDefinition, subsequestActionType, timeToWait)
6742 restSubId2 := xappConn2.SendRESTSubsReq(t, params)
6743 xapp.Logger.Debug("Send REST subscriber request for subscriberId : %v", restSubId2)
6744 crereq, cremsg := e2termConn1.RecvSubsReq(t)
6745 xappConn2.ExpectRESTNotification(t, restSubId2)
6746 e2termConn1.SendSubsResp(t, crereq, cremsg)
6747 e2SubsId2 := xappConn2.WaitRESTNotification(t, restSubId2)
6749 deleteXapp1Subscription(t, &restSubId1)
6750 deleteXapp2Subscription(t, &restSubId2)
6752 waitSubsCleanup(t, e2SubsId1, 10)
6753 waitSubsCleanup(t, e2SubsId2, 10)
6755 mainCtrl.VerifyCounterValues(t)
6756 mainCtrl.VerifyAllClean(t)
6759 //-----------------------------------------------------------------------------
6760 // TestRESTSubReqReportSameActionDiffActionID
6763 // +-------+ +-------+ +---------+ +---------+
6764 // | xapp2 | | xapp1 | | submgr | | e2term |
6765 // +-------+ +-------+ +---------+ +---------+
6767 // | | RESTSubReq1 | |
6768 // | |------------->| |
6769 // | | RESTSubResp1 | |
6770 // | |<-------------| |
6773 // | | |------------->|
6775 // | RESTSubReq2 | |
6776 // |------------------------>| |
6777 // | RESTSubResp2 | |
6778 // |<------------------------| |
6781 // | | |------------->|
6784 // | | |<-------------|
6785 // | | RESTNotif1 | |
6786 // | |<-------------| |
6789 // | | |<-------------|
6791 // |<------------------------| |
6793 // | | [SUBS 1 DELETE] |
6795 // | | [SUBS 2 DELETE] |
6798 //-----------------------------------------------------------------------------
6800 func TestRESTSubReqReportSameActionDiffActionID(t *testing.T) {
6802 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
6803 Counter{cRestSubReqFromXapp, 2},
6804 Counter{cRestSubRespToXapp, 2},
6805 Counter{cSubReqToE2, 2},
6806 Counter{cSubRespFromE2, 2},
6807 Counter{cRestSubNotifToXapp, 2},
6808 Counter{cRestSubDelReqFromXapp, 2},
6809 Counter{cSubDelReqToE2, 2},
6810 Counter{cSubDelRespFromE2, 2},
6811 Counter{cRestSubDelRespToXapp, 2},
6815 var params *teststube2ap.RESTSubsReqParams = nil
6818 restSubId1, e2SubsId1 := createSubscription(t, xappConn1, e2termConn1, params)
6819 xapp.Logger.Debug("Send REST subscriber request for subscriberId : %v", restSubId1)
6821 queryXappSubscription(t, int64(e2SubsId1), "RAN_NAME_1", []string{"localhost:13560"})
6824 params = xappConn2.GetRESTSubsReqReportParams(subReqCount)
6825 params.SetMeid("RAN_NAME_1")
6826 params.SetSubActionIDs(int64(2))
6828 restSubId2 := xappConn2.SendRESTSubsReq(t, params)
6829 xapp.Logger.Debug("Send REST subscriber request for subscriberId : %v", restSubId2)
6830 crereq, cremsg := e2termConn1.RecvSubsReq(t)
6831 xappConn2.ExpectRESTNotification(t, restSubId2)
6832 e2termConn1.SendSubsResp(t, crereq, cremsg)
6833 e2SubsId2 := xappConn2.WaitRESTNotification(t, restSubId2)
6835 deleteXapp1Subscription(t, &restSubId1)
6836 deleteXapp2Subscription(t, &restSubId2)
6838 waitSubsCleanup(t, e2SubsId1, 10)
6839 waitSubsCleanup(t, e2SubsId2, 10)
6841 mainCtrl.VerifyCounterValues(t)
6842 mainCtrl.VerifyAllClean(t)
6845 //-----------------------------------------------------------------------------
6846 // TestRESTSubReqDiffActionType
6849 // +-------+ +-------+ +---------+ +---------+
6850 // | xapp2 | | xapp1 | | submgr | | e2term |
6851 // +-------+ +-------+ +---------+ +---------+
6853 // | | RESTSubReq1 | |
6854 // | |------------->| |
6855 // | | RESTSubResp1 | |
6856 // | |<-------------| |
6859 // | | |------------->|
6861 // | RESTSubReq2 | |
6862 // |------------------------>| |
6863 // | RESTSubResp2 | |
6864 // |<------------------------| |
6867 // | | |------------->|
6870 // | | |<-------------|
6871 // | | RESTNotif1 | |
6872 // | |<-------------| |
6875 // | | |<-------------|
6877 // |<------------------------| |
6879 // | | [SUBS 1 DELETE] |
6881 // | | [SUBS 2 DELETE] |
6884 //-----------------------------------------------------------------------------
6886 func TestRESTSubReqDiffActionType(t *testing.T) {
6888 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
6889 Counter{cRestSubReqFromXapp, 2},
6890 Counter{cRestSubRespToXapp, 2},
6891 Counter{cSubReqToE2, 2},
6892 Counter{cSubRespFromE2, 2},
6893 Counter{cRestSubNotifToXapp, 2},
6894 Counter{cRestSubDelReqFromXapp, 2},
6895 Counter{cSubDelReqToE2, 2},
6896 Counter{cSubDelRespFromE2, 2},
6897 Counter{cRestSubDelRespToXapp, 2},
6900 const e2Timeout int64 = 2
6901 const e2RetryCount int64 = 2
6902 const routingNeeded bool = true
6905 params := xappConn1.GetRESTSubsReqPolicyParams(subReqCount)
6906 params.SetSubscriptionDirectives(e2Timeout, e2RetryCount, routingNeeded)
6909 restSubId1, e2SubsId1 := createSubscription(t, xappConn1, e2termConn1, params)
6910 xapp.Logger.Debug("Send REST subscriber request for subscriberId : %v", restSubId1)
6912 queryXappSubscription(t, int64(e2SubsId1), "RAN_NAME_1", []string{"localhost:13560"})
6915 params = xappConn2.GetRESTSubsReqReportParams(subReqCount)
6916 params.SetSubscriptionDirectives(e2Timeout, e2RetryCount, routingNeeded)
6917 params.SetMeid("RAN_NAME_1")
6919 restSubId2 := xappConn2.SendRESTSubsReq(t, params)
6920 xapp.Logger.Debug("Send REST subscriber request for subscriberId : %v", restSubId2)
6921 crereq, cremsg := e2termConn1.RecvSubsReq(t)
6922 xappConn2.ExpectRESTNotification(t, restSubId2)
6923 e2termConn1.SendSubsResp(t, crereq, cremsg)
6924 e2SubsId2 := xappConn2.WaitRESTNotification(t, restSubId2)
6926 deleteXapp1Subscription(t, &restSubId1)
6927 deleteXapp2Subscription(t, &restSubId2)
6929 waitSubsCleanup(t, e2SubsId1, 10)
6930 waitSubsCleanup(t, e2SubsId2, 10)
6932 mainCtrl.VerifyCounterValues(t)
6933 mainCtrl.VerifyAllClean(t)
6936 //-----------------------------------------------------------------------------
6937 // TestRESTSubReqPolicyAndSubDelOkSameAction
6940 // +-------+ +-------+ +---------+ +---------+
6941 // | xapp2 | | xapp1 | | submgr | | e2term |
6942 // +-------+ +-------+ +---------+ +---------+
6944 // | | RESTSubReq1 | |
6945 // | |------------->| |
6946 // | | RESTSubResp1 | |
6947 // | |<-------------| |
6950 // | | |------------->|
6952 // | RESTSubReq2 | |
6953 // |------------------------>| |
6954 // | RESTSubResp2 | |
6955 // |<------------------------| |
6958 // | | |------------->|
6961 // | | |<-------------|
6962 // | | RESTNotif1 | |
6963 // | |<-------------| |
6966 // | | |<-------------|
6968 // |<------------------------| |
6970 // | | [SUBS 1 DELETE] |
6972 // | | [SUBS 2 DELETE] |
6975 //-----------------------------------------------------------------------------
6977 func TestRESTSubReqPolicyAndSubDelOkSameAction(t *testing.T) {
6979 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
6980 Counter{cRestSubReqFromXapp, 2},
6981 Counter{cRestSubRespToXapp, 2},
6982 Counter{cSubReqToE2, 2},
6983 Counter{cSubRespFromE2, 2},
6984 Counter{cRestSubNotifToXapp, 2},
6985 Counter{cRestSubDelReqFromXapp, 2},
6986 Counter{cSubDelReqToE2, 2},
6987 Counter{cSubDelRespFromE2, 2},
6988 Counter{cRestSubDelRespToXapp, 2},
6991 const e2Timeout int64 = 2
6992 const e2RetryCount int64 = 2
6993 const routingNeeded bool = true
6996 params := xappConn1.GetRESTSubsReqPolicyParams(subReqCount)
6997 params.SetSubscriptionDirectives(e2Timeout, e2RetryCount, routingNeeded)
7000 restSubId1, e2SubsId1 := createSubscription(t, xappConn1, e2termConn1, params)
7001 xapp.Logger.Debug("Send REST subscriber request for subscriberId : %v", restSubId1)
7003 queryXappSubscription(t, int64(e2SubsId1), "RAN_NAME_1", []string{"localhost:13560"})
7006 params = xappConn2.GetRESTSubsReqPolicyParams(subReqCount)
7007 params.SetSubscriptionDirectives(e2Timeout, e2RetryCount, routingNeeded)
7008 params.SetMeid("RAN_NAME_1")
7010 restSubId2 := xappConn2.SendRESTSubsReq(t, params)
7011 xapp.Logger.Debug("Send REST subscriber request for subscriberId : %v", restSubId2)
7012 crereq, cremsg := e2termConn1.RecvSubsReq(t)
7013 xappConn2.ExpectRESTNotification(t, restSubId2)
7014 e2termConn1.SendSubsResp(t, crereq, cremsg)
7015 e2SubsId2 := xappConn2.WaitRESTNotification(t, restSubId2)
7017 deleteXapp1Subscription(t, &restSubId1)
7018 deleteXapp2Subscription(t, &restSubId2)
7020 waitSubsCleanup(t, e2SubsId1, 10)
7021 waitSubsCleanup(t, e2SubsId2, 10)
7023 mainCtrl.VerifyCounterValues(t)
7024 mainCtrl.VerifyAllClean(t)
7027 //-----------------------------------------------------------------------------
7028 // TestRESTSubReqReportSameActionDiffActionDefinitionLen
7031 // +-------+ +-------+ +---------+ +---------+
7032 // | xapp2 | | xapp1 | | submgr | | e2term |
7033 // +-------+ +-------+ +---------+ +---------+
7035 // | | RESTSubReq1 | |
7036 // | |------------->| |
7037 // | | RESTSubResp1 | |
7038 // | |<-------------| |
7041 // | | |------------->|
7043 // | RESTSubReq2 | |
7044 // |------------------------>| |
7045 // | RESTSubResp2 | |
7046 // |<------------------------| |
7049 // | | |------------->|
7052 // | | |<-------------|
7053 // | | RESTNotif1 | |
7054 // | |<-------------| |
7057 // | | |<-------------|
7059 // |<------------------------| |
7061 // | | [SUBS 1 DELETE] |
7063 // | | [SUBS 2 DELETE] |
7066 //-----------------------------------------------------------------------------
7068 func TestRESTSubReqReportSameActionDiffActionDefinitionLen(t *testing.T) {
7070 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
7071 Counter{cRestSubReqFromXapp, 2},
7072 Counter{cRestSubRespToXapp, 2},
7073 Counter{cSubReqToE2, 2},
7074 Counter{cSubRespFromE2, 2},
7075 Counter{cRestSubNotifToXapp, 2},
7076 Counter{cRestSubDelReqFromXapp, 2},
7077 Counter{cSubDelReqToE2, 2},
7078 Counter{cSubDelRespFromE2, 2},
7079 Counter{cRestSubDelRespToXapp, 2},
7083 var params *teststube2ap.RESTSubsReqParams = nil
7086 restSubId1, e2SubsId1 := createSubscription(t, xappConn1, e2termConn1, params)
7087 xapp.Logger.Debug("Send REST subscriber request for subscriberId : %v", restSubId1)
7089 queryXappSubscription(t, int64(e2SubsId1), "RAN_NAME_1", []string{"localhost:13560"})
7092 params = xappConn2.GetRESTSubsReqReportParams(subReqCount)
7093 params.SetMeid("RAN_NAME_1")
7094 actionDefinition := []int64{5678, 1}
7095 params.SetSubActionDefinition(actionDefinition)
7097 restSubId2 := xappConn2.SendRESTSubsReq(t, params)
7098 xapp.Logger.Debug("Send REST subscriber request for subscriberId : %v", restSubId2)
7099 crereq, cremsg := e2termConn1.RecvSubsReq(t)
7100 xappConn2.ExpectRESTNotification(t, restSubId2)
7101 e2termConn1.SendSubsResp(t, crereq, cremsg)
7102 e2SubsId2 := xappConn2.WaitRESTNotification(t, restSubId2)
7104 deleteXapp1Subscription(t, &restSubId1)
7105 deleteXapp2Subscription(t, &restSubId2)
7107 waitSubsCleanup(t, e2SubsId1, 10)
7108 waitSubsCleanup(t, e2SubsId2, 10)
7110 mainCtrl.VerifyCounterValues(t)
7111 mainCtrl.VerifyAllClean(t)
7114 //-----------------------------------------------------------------------------
7115 // TestRESTSubReqReportSameActionDiffActionDefinitionContents
7118 // +-------+ +-------+ +---------+ +---------+
7119 // | xapp2 | | xapp1 | | submgr | | e2term |
7120 // +-------+ +-------+ +---------+ +---------+
7122 // | | RESTSubReq1 | |
7123 // | |------------->| |
7124 // | | RESTSubResp1 | |
7125 // | |<-------------| |
7128 // | | |------------->|
7130 // | RESTSubReq2 | |
7131 // |------------------------>| |
7132 // | RESTSubResp2 | |
7133 // |<------------------------| |
7136 // | | |------------->|
7139 // | | |<-------------|
7140 // | | RESTNotif1 | |
7141 // | |<-------------| |
7144 // | | |<-------------|
7146 // |<------------------------| |
7148 // | | [SUBS 1 DELETE] |
7150 // | | [SUBS 2 DELETE] |
7153 //-----------------------------------------------------------------------------
7155 func TestRESTSubReqReportSameActionDiffActionDefinitionContents(t *testing.T) {
7157 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
7158 Counter{cRestSubReqFromXapp, 2},
7159 Counter{cRestSubRespToXapp, 2},
7160 Counter{cSubReqToE2, 2},
7161 Counter{cSubRespFromE2, 2},
7162 Counter{cRestSubNotifToXapp, 2},
7163 Counter{cRestSubDelReqFromXapp, 2},
7164 Counter{cSubDelReqToE2, 2},
7165 Counter{cSubDelRespFromE2, 2},
7166 Counter{cRestSubDelRespToXapp, 2},
7170 var params *teststube2ap.RESTSubsReqParams = nil
7173 restSubId1, e2SubsId1 := createSubscription(t, xappConn1, e2termConn1, params)
7174 xapp.Logger.Debug("Send REST subscriber request for subscriberId : %v", restSubId1)
7176 queryXappSubscription(t, int64(e2SubsId1), "RAN_NAME_1", []string{"localhost:13560"})
7179 params = xappConn2.GetRESTSubsReqReportParams(subReqCount)
7180 params.SetMeid("RAN_NAME_1")
7181 actionDefinition := []int64{56782}
7182 params.SetSubActionDefinition(actionDefinition)
7184 restSubId2 := xappConn2.SendRESTSubsReq(t, params)
7185 xapp.Logger.Debug("Send REST subscriber request for subscriberId : %v", restSubId2)
7186 crereq, cremsg := e2termConn1.RecvSubsReq(t)
7187 xappConn2.ExpectRESTNotification(t, restSubId2)
7188 e2termConn1.SendSubsResp(t, crereq, cremsg)
7189 e2SubsId2 := xappConn2.WaitRESTNotification(t, restSubId2)
7191 deleteXapp1Subscription(t, &restSubId1)
7192 deleteXapp2Subscription(t, &restSubId2)
7194 waitSubsCleanup(t, e2SubsId1, 10)
7195 waitSubsCleanup(t, e2SubsId2, 10)
7197 mainCtrl.VerifyCounterValues(t)
7198 mainCtrl.VerifyAllClean(t)
7201 //-----------------------------------------------------------------------------
7202 // TestRESTSubReqReportSameActionDiffSubsAction
7205 // +-------+ +-------+ +---------+ +---------+
7206 // | xapp2 | | xapp1 | | submgr | | e2term |
7207 // +-------+ +-------+ +---------+ +---------+
7209 // | | RESTSubReq1 | |
7210 // | |------------->| |
7211 // | | RESTSubResp1 | |
7212 // | |<-------------| |
7215 // | | |------------->|
7217 // | RESTSubReq2 | |
7218 // |------------------------>| |
7219 // | RESTSubResp2 | |
7220 // |<------------------------| |
7223 // | | |------------->|
7226 // | | |<-------------|
7227 // | | RESTNotif1 | |
7228 // | |<-------------| |
7231 // | | |<-------------|
7233 // |<------------------------| |
7235 // | | [SUBS 1 DELETE] |
7237 // | | [SUBS 2 DELETE] |
7240 //-----------------------------------------------------------------------------
7242 func TestRESTSubReqReportSameActionDiffSubsAction(t *testing.T) {
7244 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
7245 Counter{cRestSubReqFromXapp, 2},
7246 Counter{cRestSubRespToXapp, 2},
7247 Counter{cSubReqToE2, 2},
7248 Counter{cSubRespFromE2, 2},
7249 Counter{cRestSubNotifToXapp, 2},
7250 Counter{cRestSubDelReqFromXapp, 2},
7251 Counter{cSubDelReqToE2, 2},
7252 Counter{cSubDelRespFromE2, 2},
7253 Counter{cRestSubDelRespToXapp, 2},
7257 var params *teststube2ap.RESTSubsReqParams = nil
7260 restSubId1, e2SubsId1 := createSubscription(t, xappConn1, e2termConn1, params)
7261 xapp.Logger.Debug("Send REST subscriber request for subscriberId : %v", restSubId1)
7263 queryXappSubscription(t, int64(e2SubsId1), "RAN_NAME_1", []string{"localhost:13560"})
7266 params = xappConn2.GetRESTSubsReqReportParams(subReqCount)
7267 params.SetMeid("RAN_NAME_1")
7268 params.SetTimeToWait("w200ms")
7269 restSubId2 := xappConn2.SendRESTSubsReq(t, params)
7270 xapp.Logger.Debug("Send REST subscriber request for subscriberId : %v", restSubId2)
7271 crereq, cremsg := e2termConn1.RecvSubsReq(t)
7272 xappConn2.ExpectRESTNotification(t, restSubId2)
7273 e2termConn1.SendSubsResp(t, crereq, cremsg)
7274 e2SubsId2 := xappConn2.WaitRESTNotification(t, restSubId2)
7276 deleteXapp1Subscription(t, &restSubId1)
7277 deleteXapp2Subscription(t, &restSubId2)
7279 waitSubsCleanup(t, e2SubsId1, 10)
7280 waitSubsCleanup(t, e2SubsId2, 10)
7282 mainCtrl.VerifyCounterValues(t)
7283 mainCtrl.VerifyAllClean(t)
7286 //-----------------------------------------------------------------------------
7287 // TestRESTUnpackSubscriptionResponseDecodeFail
7290 // +-------+ +---------+ +---------+
7291 // | xapp | | submgr | | e2term |
7292 // +-------+ +---------+ +---------+
7295 // |---------------->| |
7297 // | RESTSubResp | |
7298 // |<----------------| |
7301 // | |------------->|
7303 // | | SubResp | ASN.1 decode fails
7304 // | |<-------------| Decode failed. More data needed. This will result timer expiry and resending
7307 // | |------------->|
7309 // | | SubFail | Duplicated action
7310 // | |<-------------|
7311 // | RESTNotif (fail)| |
7312 // |<----------------| |
7314 // | [SUBS DELETE] |
7317 //-----------------------------------------------------------------------------
7319 func TestRESTUnpackSubscriptionResponseDecodeFail(t *testing.T) {
7321 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
7322 Counter{cRestSubReqFromXapp, 1},
7323 Counter{cRestSubRespToXapp, 1},
7324 Counter{cSubReqToE2, 1},
7325 Counter{cSubReqTimerExpiry, 1},
7326 Counter{cSubReReqToE2, 1},
7327 Counter{cSubRespFromE2, 1},
7328 Counter{cSubFailFromE2, 1},
7329 Counter{cRestSubFailNotifToXapp, 1},
7330 Counter{cRestSubDelReqFromXapp, 1},
7331 Counter{cRestSubDelRespToXapp, 1},
7334 const subReqCount int = 1
7337 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
7338 restSubId := xappConn1.SendRESTSubsReq(t, params)
7340 crereq, cremsg := e2termConn1.RecvSubsReq(t)
7341 // Decode of this response fails which will result resending original request
7342 e2termConn1.SendInvalidE2Asn1Resp(t, cremsg, xapp.RIC_SUB_RESP)
7344 _, cremsg = e2termConn1.RecvSubsReq(t)
7346 xappConn1.ExpectRESTNotificationNok(t, restSubId, "allFail")
7348 // Subscription already created in E2 Node.
7349 fparams := &teststube2ap.E2StubSubsFailParams{}
7351 fparams.SetCauseVal(0, 1, 3) // CauseRIC / duplicate-action
7352 e2termConn1.SendSubsFail(t, fparams, cremsg)
7354 instanceId := xappConn1.WaitRESTNotification(t, restSubId)
7355 xapp.Logger.Debug("TEST: REST notification received e2SubsId=%v", instanceId)
7357 xappConn1.SendRESTSubsDelReq(t, &restSubId)
7359 // Wait that subs is cleaned
7360 mainCtrl.wait_subs_clean(t, crereq.RequestId.InstanceId, 10)
7362 xappConn1.TestMsgChanEmpty(t)
7363 e2termConn1.TestMsgChanEmpty(t)
7364 mainCtrl.wait_registry_empty(t, 10)
7365 mainCtrl.VerifyAllClean(t)
7366 mainCtrl.VerifyCounterValues(t)
7369 //-----------------------------------------------------------------------------
7370 // TestRESTUnpackSubscriptionResponseUnknownInstanceId
7373 // +-------+ +---------+ +---------+
7374 // | xapp | | submgr | | e2term |
7375 // +-------+ +---------+ +---------+
7378 // |---------------->| |
7380 // | RESTSubResp | |
7381 // |<----------------| |
7384 // | |------------->|
7386 // | | SubResp | Unknown instanceId
7387 // | |<-------------| No valid subscription found with subIds [0]
7390 // | |------------->|
7392 // | | SubFail | Duplicated action
7393 // | |<-------------| No valid subscription found with subIds [0]
7394 // | RESTNotif (fail)| |
7395 // |<----------------| |
7397 // | |------------->|
7400 // | |<-------------|
7402 // | [SUBS DELETE] |
7405 //-----------------------------------------------------------------------------
7407 func TestRESTUnpackSubscriptionResponseUnknownInstanceId(t *testing.T) {
7409 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
7410 Counter{cRestSubReqFromXapp, 1},
7411 Counter{cRestSubRespToXapp, 1},
7412 Counter{cSubReqToE2, 1},
7413 Counter{cSubReqTimerExpiry, 2},
7414 Counter{cSubReReqToE2, 1},
7415 Counter{cSubRespFromE2, 1},
7416 Counter{cSubFailFromE2, 1},
7417 Counter{cRestSubFailNotifToXapp, 1},
7418 Counter{cRestSubDelReqFromXapp, 1},
7419 Counter{cRestSubDelRespToXapp, 1},
7420 Counter{cSubDelReqToE2, 1},
7421 Counter{cSubDelRespFromE2, 1},
7424 const subReqCount int = 1
7427 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
7428 restSubId := xappConn1.SendRESTSubsReq(t, params)
7430 crereq, cremsg := e2termConn1.RecvSubsReq(t)
7432 // Unknown instanceId 0 in this response which will result resending original request
7433 orgInstanceId := crereq.RequestId.InstanceId
7434 crereq.RequestId.InstanceId = 0
7435 e2termConn1.SendSubsResp(t, crereq, cremsg)
7437 _, cremsg = e2termConn1.RecvSubsReq(t)
7439 xappConn1.ExpectRESTNotificationNok(t, restSubId, "allFail")
7441 // Subscription already created in E2 Node. E2 Node responds with failure but there is also same unknown instanceId 0
7442 fparams := &teststube2ap.E2StubSubsFailParams{}
7444 fparams.SetCauseVal(0, 1, 3) // CauseRIC / duplicate-action
7445 e2termConn1.SendSubsFail(t, fparams, cremsg)
7447 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
7448 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
7450 instanceId := xappConn1.WaitRESTNotification(t, restSubId)
7451 xapp.Logger.Debug("TEST: REST notification received e2SubsId=%v", instanceId)
7453 xappConn1.SendRESTSubsDelReq(t, &restSubId)
7455 // Wait that subs is cleaned
7456 mainCtrl.wait_subs_clean(t, orgInstanceId, 10)
7458 xappConn1.TestMsgChanEmpty(t)
7459 e2termConn1.TestMsgChanEmpty(t)
7460 mainCtrl.wait_registry_empty(t, 10)
7461 mainCtrl.VerifyAllClean(t)
7462 mainCtrl.VerifyCounterValues(t)
7465 //-----------------------------------------------------------------------------
7466 // TestRESTUnpackSubscriptionResponseNoTransaction
7469 // +-------+ +---------+ +---------+
7470 // | xapp | | submgr | | e2term |
7471 // +-------+ +---------+ +---------+
7474 // |---------------->| |
7476 // | RESTSubResp | |
7477 // |<----------------| |
7480 // | |------------->|
7482 // | | SubResp | No transaction for the response
7483 // | |<-------------| Ongoing transaction not found. This will result timer expiry and resending
7486 // | |------------->|
7488 // | | SubFail | Duplicated action
7489 // | |<-------------|Ongoing transaction not found. This will result timer expiry and sending delete
7490 // | RESTNotif (fail)| |
7491 // |<----------------| |
7493 // | |------------->|
7496 // | |<-------------| Ongoing transaction not found. This will result timer expiry and resending
7499 // | |------------->|
7502 // | |<-------------| Ongoing transaction not found.
7504 // | [SUBS DELETE] |
7507 //-----------------------------------------------------------------------------
7509 func TestRESTUnpackSubscriptionResponseNoTransaction(t *testing.T) {
7511 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
7512 Counter{cRestSubReqFromXapp, 1},
7513 Counter{cRestSubRespToXapp, 1},
7514 Counter{cSubReqToE2, 1},
7515 Counter{cSubReqTimerExpiry, 2},
7516 Counter{cSubReReqToE2, 1},
7517 Counter{cSubRespFromE2, 1},
7518 Counter{cSubFailFromE2, 1},
7519 Counter{cRestSubFailNotifToXapp, 1},
7520 Counter{cRestSubDelReqFromXapp, 1},
7521 Counter{cRestSubDelRespToXapp, 1},
7522 Counter{cSubDelReqToE2, 1},
7523 Counter{cSubDelReqTimerExpiry, 2},
7524 Counter{cSubDelReReqToE2, 1},
7525 Counter{cSubDelRespFromE2, 2},
7528 const subReqCount int = 1
7531 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
7532 restSubId := xappConn1.SendRESTSubsReq(t, params)
7534 crereq, cremsg := e2termConn1.RecvSubsReq(t)
7536 mainCtrl.MakeTransactionNil(t, crereq.RequestId.InstanceId)
7537 // No transaction exist for this response which will result resending original request
7538 e2termConn1.SendSubsResp(t, crereq, cremsg)
7540 _, cremsg = e2termConn1.RecvSubsReq(t)
7542 xappConn1.ExpectRESTNotificationNok(t, restSubId, "allFail")
7544 // Subscription already created in E2 Node.
7545 fparams := &teststube2ap.E2StubSubsFailParams{}
7547 fparams.SetCauseVal(0, 1, 3) // CauseRIC / duplicate-action
7548 e2termConn1.SendSubsFail(t, fparams, cremsg)
7550 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
7551 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
7553 // Resending happens because there no transaction
7554 delreq, delmsg = e2termConn1.RecvSubsDelReq(t)
7555 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
7557 instanceId := xappConn1.WaitRESTNotification(t, restSubId)
7558 xapp.Logger.Debug("TEST: REST notification received e2SubsId=%v", instanceId)
7560 xappConn1.SendRESTSubsDelReq(t, &restSubId)
7562 // Wait that subs is cleaned
7563 mainCtrl.wait_subs_clean(t, crereq.RequestId.InstanceId, 10)
7565 xappConn1.TestMsgChanEmpty(t)
7566 e2termConn1.TestMsgChanEmpty(t)
7567 mainCtrl.wait_registry_empty(t, 10)
7568 mainCtrl.VerifyAllClean(t)
7569 mainCtrl.VerifyCounterValues(t)
7572 //-----------------------------------------------------------------------------
7573 // TestRESTUnpackSubscriptionFailureDecodeFail
7576 // +-------+ +---------+ +---------+
7577 // | xapp | | submgr | | e2term |
7578 // +-------+ +---------+ +---------+
7581 // |---------------->| |
7583 // | RESTSubResp | |
7584 // |<----------------| |
7587 // | |------------->|
7589 // | | SubFail | ASN.1 decode fails
7590 // | |<-------------| Decode failed. More data needed. This will result timer expiry and resending
7593 // | |------------->|
7595 // | | SubFail | Duplicated action
7596 // | |<-------------|
7597 // | RESTNotif (fail)| |
7598 // |<----------------| |
7600 // | [SUBS DELETE] |
7603 //-----------------------------------------------------------------------------
7605 func TestRESTUnpackSubscriptionFailureDecodeFail(t *testing.T) {
7607 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
7608 Counter{cRestSubReqFromXapp, 1},
7609 Counter{cRestSubRespToXapp, 1},
7610 Counter{cSubReqToE2, 1},
7611 Counter{cSubReqTimerExpiry, 1},
7612 Counter{cSubReReqToE2, 1},
7613 Counter{cSubFailFromE2, 2},
7614 Counter{cRestSubFailNotifToXapp, 1},
7615 Counter{cRestSubDelReqFromXapp, 1},
7616 Counter{cRestSubDelRespToXapp, 1},
7619 const subReqCount int = 1
7622 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
7623 restSubId := xappConn1.SendRESTSubsReq(t, params)
7625 crereq, cremsg := e2termConn1.RecvSubsReq(t)
7627 // Decode of this response fails which will result resending original request
7628 e2termConn1.SendInvalidE2Asn1Resp(t, cremsg, xapp.RIC_SUB_FAILURE)
7630 _, cremsg = e2termConn1.RecvSubsReq(t)
7632 xappConn1.ExpectRESTNotificationNok(t, restSubId, "allFail")
7634 // Subscription already created in E2 Node.
7635 fparams := &teststube2ap.E2StubSubsFailParams{}
7637 fparams.SetCauseVal(0, 1, 3) // CauseRIC / duplicate-action
7638 e2termConn1.SendSubsFail(t, fparams, cremsg)
7640 instanceId := xappConn1.WaitRESTNotification(t, restSubId)
7641 xapp.Logger.Debug("TEST: REST notification received e2SubsId=%v", instanceId)
7643 xappConn1.SendRESTSubsDelReq(t, &restSubId)
7645 // Wait that subs is cleaned
7646 mainCtrl.wait_subs_clean(t, crereq.RequestId.InstanceId, 10)
7648 xappConn1.TestMsgChanEmpty(t)
7649 e2termConn1.TestMsgChanEmpty(t)
7650 mainCtrl.wait_registry_empty(t, 10)
7651 mainCtrl.VerifyAllClean(t)
7652 mainCtrl.VerifyCounterValues(t)
7655 //-----------------------------------------------------------------------------
7656 // TestRESTUnpackSubscriptionResponseUnknownInstanceId
7659 // +-------+ +---------+ +---------+
7660 // | xapp | | submgr | | e2term |
7661 // +-------+ +---------+ +---------+
7664 // |---------------->| |
7666 // | RESTSubResp | |
7667 // |<----------------| |
7670 // | |------------->|
7672 // | | SubFail | Unknown instanceId
7673 // | |<-------------| No valid subscription found with subIds [0]. This will result timer expiry and resending
7676 // | |------------->|
7678 // | | SubFail | Duplicated action
7679 // | |<-------------|No valid subscription found with subIds [0]. This will result timer expiry and sending delete
7680 // | RESTNotif (fail)| |
7681 // |<----------------| |
7683 // | |------------->|
7686 // | |<-------------|
7688 // | [SUBS DELETE] |
7691 //-----------------------------------------------------------------------------
7692 func TestRESTUnpackSubscriptionFailureUnknownInstanceId(t *testing.T) {
7694 const subReqCount int = 1
7696 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
7697 Counter{cRestSubReqFromXapp, 1},
7698 Counter{cRestSubRespToXapp, 1},
7699 Counter{cSubReqToE2, 1},
7700 Counter{cSubReqTimerExpiry, 2},
7701 Counter{cSubReReqToE2, 1},
7702 Counter{cSubFailFromE2, 2},
7703 Counter{cRestSubFailNotifToXapp, 1},
7704 Counter{cRestSubDelReqFromXapp, 1},
7705 Counter{cRestSubDelRespToXapp, 1},
7706 Counter{cSubDelReqToE2, 1},
7707 Counter{cSubDelRespFromE2, 1},
7711 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
7712 restSubId := xappConn1.SendRESTSubsReq(t, params)
7714 crereq, cremsg := e2termConn1.RecvSubsReq(t)
7716 // Unknown instanceId 0 in this response which will result resending original request
7717 fparams := &teststube2ap.E2StubSubsFailParams{}
7719 fparams.Fail.RequestId.InstanceId = 0
7720 e2termConn1.SendSubsFail(t, fparams, cremsg)
7722 _, cremsg = e2termConn1.RecvSubsReq(t)
7724 xappConn1.ExpectRESTNotificationNok(t, restSubId, "allFail")
7726 // Subscription already created in E2 Node. E2 Node responds with failure but there is also same unknown instanceId 0
7727 fparams.SetCauseVal(0, 1, 3) // CauseRIC / duplicate-action
7728 e2termConn1.SendSubsFail(t, fparams, cremsg)
7730 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
7731 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
7733 instanceId := xappConn1.WaitRESTNotification(t, restSubId)
7734 xapp.Logger.Debug("TEST: REST notification received e2SubsId=%v", instanceId)
7736 xappConn1.SendRESTSubsDelReq(t, &restSubId)
7738 // Wait that subs is cleaned
7739 mainCtrl.wait_subs_clean(t, crereq.RequestId.InstanceId, 10)
7741 xappConn1.TestMsgChanEmpty(t)
7742 e2termConn1.TestMsgChanEmpty(t)
7743 mainCtrl.wait_registry_empty(t, 10)
7744 mainCtrl.VerifyAllClean(t)
7745 mainCtrl.VerifyCounterValues(t)
7748 //-----------------------------------------------------------------------------
7749 // TestRESTUnpackSubscriptionFailureNoTransaction
7752 // +-------+ +---------+ +---------+
7753 // | xapp | | submgr | | e2term |
7754 // +-------+ +---------+ +---------+
7757 // |---------------->| |
7759 // | RESTSubResp | |
7760 // |<----------------| |
7763 // | |------------->|
7765 // | | SubFail | No transaction for the response
7766 // | |<-------------| Ongoing transaction not found. This will result timer expiry and resending
7769 // | |------------->|
7771 // | | SubFail | Duplicated action
7772 // | |<-------------| Ongoing transaction not found. This will result timer expiry and sending delete
7773 // | RESTNotif (fail)| |
7774 // |<----------------| |
7776 // | |------------->|
7779 // | |<-------------| Ongoing transaction not found. This will result timer expiry and resending
7782 // | |------------->|
7785 // | |<-------------| Ongoing transaction not found.
7787 // | [SUBS DELETE] |
7790 //-----------------------------------------------------------------------------
7792 func TestRESTUnpackSubscriptionFailureNoTransaction(t *testing.T) {
7794 const subReqCount int = 1
7796 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
7797 Counter{cRestSubReqFromXapp, 1},
7798 Counter{cRestSubRespToXapp, 1},
7799 Counter{cSubReqToE2, 1},
7800 Counter{cSubReqTimerExpiry, 2},
7801 Counter{cSubReReqToE2, 1},
7802 Counter{cSubFailFromE2, 2},
7803 Counter{cRestSubFailNotifToXapp, 1},
7804 Counter{cRestSubDelReqFromXapp, 1},
7805 Counter{cRestSubDelRespToXapp, 1},
7806 Counter{cSubDelReqToE2, 1},
7807 Counter{cSubDelReqTimerExpiry, 2},
7808 Counter{cSubDelReReqToE2, 1},
7809 Counter{cSubDelRespFromE2, 2},
7813 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
7814 restSubId := xappConn1.SendRESTSubsReq(t, params)
7816 crereq, cremsg := e2termConn1.RecvSubsReq(t)
7818 mainCtrl.MakeTransactionNil(t, crereq.RequestId.InstanceId)
7820 // No transaction exist for this response which will result resending original request
7821 fparams := &teststube2ap.E2StubSubsFailParams{}
7823 e2termConn1.SendSubsFail(t, fparams, cremsg)
7825 _, cremsg = e2termConn1.RecvSubsReq(t)
7827 xappConn1.ExpectRESTNotificationNok(t, restSubId, "allFail")
7829 // Subscription already created in E2 Node.
7830 fparams.SetCauseVal(0, 1, 3) // CauseRIC / duplicate-action
7831 e2termConn1.SendSubsFail(t, fparams, cremsg)
7833 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
7834 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
7836 // Resending happens because there no transaction
7837 delreq, delmsg = e2termConn1.RecvSubsDelReq(t)
7838 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
7840 instanceId := xappConn1.WaitRESTNotification(t, restSubId)
7841 xapp.Logger.Debug("TEST: REST notification received e2SubsId=%v", instanceId)
7843 xappConn1.SendRESTSubsDelReq(t, &restSubId)
7845 // Wait that subs is cleaned
7846 mainCtrl.wait_subs_clean(t, crereq.RequestId.InstanceId, 10)
7848 xappConn1.TestMsgChanEmpty(t)
7849 e2termConn1.TestMsgChanEmpty(t)
7850 mainCtrl.wait_registry_empty(t, 10)
7851 mainCtrl.VerifyAllClean(t)
7852 mainCtrl.VerifyCounterValues(t)
7855 //-----------------------------------------------------------------------------
7856 // TestRESTUnpackSubscriptionDeleteResponseDecodeFail
7859 // +-------+ +---------+ +---------+
7860 // | xapp | | submgr | | e2term |
7861 // +-------+ +---------+ +---------+
7863 // | [SUBS CREATE] |
7866 // | RESTSubDelReq | |
7867 // |---------------->| |
7869 // | RESTSubDelResp | |
7870 // |<----------------| |
7873 // | |------------->|
7875 // | | SubDelResp | ASN.1 decode fails.
7876 // | |<-------------| Decode failed. More data needed. This will result timer expiry and resending
7879 // | |------------->|
7881 // | | SubDelFail | Subscription does exist any more in E2 node
7882 // | |<-------------|
7884 // | [SUBS DELETE] |
7887 //-----------------------------------------------------------------------------
7889 func TestRESTUnpackSubscriptionDeleteResponseDecodeFail(t *testing.T) {
7891 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
7892 Counter{cRestSubReqFromXapp, 1},
7893 Counter{cRestSubRespToXapp, 1},
7894 Counter{cSubReqToE2, 1},
7895 Counter{cSubRespFromE2, 1},
7896 Counter{cRestSubNotifToXapp, 1},
7897 Counter{cRestSubDelReqFromXapp, 1},
7898 Counter{cRestSubDelRespToXapp, 1},
7899 Counter{cSubDelReqToE2, 1},
7900 Counter{cSubDelReqTimerExpiry, 1},
7901 Counter{cSubDelReReqToE2, 1},
7902 Counter{cSubDelFailFromE2, 1},
7903 Counter{cSubDelRespFromE2, 1},
7907 var params *teststube2ap.RESTSubsReqParams = nil
7908 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
7911 xappConn1.SendRESTSubsDelReq(t, &restSubId)
7913 // E2t: Receive 1st SubsDelReq
7914 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
7916 // Decode of this response fails which will result resending original request
7917 e2termConn1.SendInvalidE2Asn1Resp(t, delmsg, xapp.RIC_SUB_DEL_RESP)
7919 // E2t: Receive 2nd SubsDelReq and send SubsDelResp
7920 delreq, delmsg = e2termConn1.RecvSubsDelReq(t)
7922 // Subscription does not exist in in E2 Node.
7923 e2termConn1.SendSubsDelFail(t, delreq, delmsg)
7925 // Wait that subs is cleaned
7926 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
7928 xappConn1.TestMsgChanEmpty(t)
7929 e2termConn1.TestMsgChanEmpty(t)
7930 mainCtrl.wait_registry_empty(t, 10)
7931 mainCtrl.VerifyAllClean(t)
7932 mainCtrl.VerifyCounterValues(t)
7935 //-----------------------------------------------------------------------------
7936 // TestRESTUnpackSubscriptionDeleteResponseUnknownInstanceId
7939 // +-------+ +---------+ +---------+
7940 // | xapp | | submgr | | e2term |
7941 // +-------+ +---------+ +---------+
7943 // | [SUBS CREATE] |
7946 // | RESTSubDelReq | |
7947 // |---------------->| |
7949 // | RESTSubDelResp | |
7950 // |<----------------| |
7953 // | |------------->|
7955 // | | SubDelResp | Unknown instanceId
7956 // | |<-------------| No valid subscription found with subIds [0]. This will result timer expiry and resending
7959 // | |------------->|
7961 // | | SubDelFail | Subscription does exist any more in E2 node
7962 // | |<-------------|
7964 // | [SUBS DELETE] |
7966 //-----------------------------------------------------------------------------
7968 func TestRESTUnpackSubscriptionDeleteResponseUnknownInstanceId(t *testing.T) {
7970 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
7971 Counter{cRestSubReqFromXapp, 1},
7972 Counter{cRestSubRespToXapp, 1},
7973 Counter{cSubReqToE2, 1},
7974 Counter{cSubRespFromE2, 1},
7975 Counter{cRestSubNotifToXapp, 1},
7976 Counter{cRestSubDelReqFromXapp, 1},
7977 Counter{cRestSubDelRespToXapp, 1},
7978 Counter{cSubDelReqToE2, 1},
7979 Counter{cSubDelReqTimerExpiry, 1},
7980 Counter{cSubDelReReqToE2, 1},
7981 Counter{cSubDelRespFromE2, 1},
7982 Counter{cSubDelFailFromE2, 1},
7986 var params *teststube2ap.RESTSubsReqParams = nil
7987 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
7990 xappConn1.SendRESTSubsDelReq(t, &restSubId)
7992 // E2t: Receive 1st SubsDelReq
7993 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
7995 // Unknown instanceId in this response which will result resending original request
7996 delreq.RequestId.InstanceId = 0
7997 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
7999 // E2t: Receive 2nd SubsDelReq
8000 delreq, delmsg = e2termConn1.RecvSubsDelReq(t)
8002 // Subscription does not exist in in E2 Node.
8003 e2termConn1.SendSubsDelFail(t, delreq, delmsg)
8005 // Wait that subs is cleaned
8006 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
8008 xappConn1.TestMsgChanEmpty(t)
8009 e2termConn1.TestMsgChanEmpty(t)
8010 mainCtrl.wait_registry_empty(t, 10)
8011 mainCtrl.VerifyAllClean(t)
8012 mainCtrl.VerifyCounterValues(t)
8015 //-----------------------------------------------------------------------------
8016 // TestRESTUnpackSubscriptionDeleteResponseNoTransaction
8019 // +-------+ +---------+ +---------+
8020 // | xapp | | submgr | | e2term |
8021 // +-------+ +---------+ +---------+
8023 // | [SUBS CREATE] |
8026 // | RESTSubDelReq | |
8027 // |---------------->| |
8029 // | RESTSubDelResp | |
8030 // |<----------------| |
8033 // | |------------->|
8035 // | | SubDelResp | No transaction for the response
8036 // | |<-------------| Ongoing transaction not found. This will result timer expiry and resending
8039 // | |------------->|
8041 // | | SubDelFail | Subscription does exist any more in E2 node
8042 // | |<-------------| Ongoing transaction not found. This will result timer expiry
8044 // | [SUBS DELETE] |
8046 //-----------------------------------------------------------------------------
8048 func TestRESTUnpackSubscriptionDeleteResponseNoTransaction(t *testing.T) {
8050 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
8051 Counter{cRestSubReqFromXapp, 1},
8052 Counter{cRestSubRespToXapp, 1},
8053 Counter{cSubReqToE2, 1},
8054 Counter{cSubRespFromE2, 1},
8055 Counter{cRestSubNotifToXapp, 1},
8056 Counter{cRestSubDelReqFromXapp, 1},
8057 Counter{cRestSubDelRespToXapp, 1},
8058 Counter{cSubDelReqToE2, 1},
8059 Counter{cSubDelReqTimerExpiry, 2},
8060 Counter{cSubDelReReqToE2, 1},
8061 Counter{cSubDelRespFromE2, 1},
8062 Counter{cSubDelFailFromE2, 1},
8066 var params *teststube2ap.RESTSubsReqParams = nil
8067 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
8070 xappConn1.SendRESTSubsDelReq(t, &restSubId)
8072 // E2t: Receive 1st SubsDelReq
8073 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
8075 mainCtrl.MakeTransactionNil(t, e2SubsId)
8077 // No transaction exist for this response which will result resending original request
8078 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
8080 // E2t: Receive 2nd SubsDelReq
8081 delreq, delmsg = e2termConn1.RecvSubsDelReq(t)
8083 // Subscription does not exist in in E2 Node.
8084 e2termConn1.SendSubsDelFail(t, delreq, delmsg)
8086 // Wait that subs is cleaned
8087 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
8089 xappConn1.TestMsgChanEmpty(t)
8090 e2termConn1.TestMsgChanEmpty(t)
8091 mainCtrl.wait_registry_empty(t, 10)
8092 mainCtrl.VerifyAllClean(t)
8093 mainCtrl.VerifyCounterValues(t)
8096 //-----------------------------------------------------------------------------
8097 // TestRESTUnpackSubscriptionDeleteFailureDecodeFail
8100 // +-------+ +---------+ +---------+
8101 // | xapp | | submgr | | e2term |
8102 // +-------+ +---------+ +---------+
8104 // | [SUBS CREATE] |
8107 // | RESTSubDelReq | |
8108 // |---------------->| |
8110 // | RESTSubDelResp | |
8111 // |<----------------| |
8114 // | |------------->|
8116 // | | SubDelFail | ASN.1 decode fails
8117 // | |<-------------| Decode failed. More data needed. This will result timer expiry and resending
8120 // | |------------->|
8122 // | | SubDelFail | Subscription does exist any more in E2 node
8123 // | |<-------------|
8125 // | [SUBS DELETE] |
8127 //-----------------------------------------------------------------------------
8129 func TestRESTUnpackSubscriptionDeleteFailureDecodeFail(t *testing.T) {
8131 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
8132 Counter{cRestSubReqFromXapp, 1},
8133 Counter{cRestSubRespToXapp, 1},
8134 Counter{cSubReqToE2, 1},
8135 Counter{cSubRespFromE2, 1},
8136 Counter{cRestSubNotifToXapp, 1},
8137 Counter{cRestSubDelReqFromXapp, 1},
8138 Counter{cRestSubDelRespToXapp, 1},
8139 Counter{cSubDelReqToE2, 1},
8140 Counter{cSubDelReqTimerExpiry, 1},
8141 Counter{cSubDelReReqToE2, 1},
8142 Counter{cSubDelFailFromE2, 2},
8146 var params *teststube2ap.RESTSubsReqParams = nil
8147 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
8150 xappConn1.SendRESTSubsDelReq(t, &restSubId)
8152 // E2t: Receive 1st SubsDelReq
8153 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
8155 // Decode of this response fails which will result resending original request
8156 e2termConn1.SendInvalidE2Asn1Resp(t, delmsg, xapp.RIC_SUB_DEL_FAILURE)
8158 // E2t: Receive 2nd SubsDelReq and send SubsDelResp
8159 delreq, delmsg = e2termConn1.RecvSubsDelReq(t)
8161 // Subscription does not exist in in E2 Node.
8162 e2termConn1.SendSubsDelFail(t, delreq, delmsg)
8164 // Wait that subs is cleaned
8165 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
8167 xappConn1.TestMsgChanEmpty(t)
8168 e2termConn1.TestMsgChanEmpty(t)
8169 mainCtrl.wait_registry_empty(t, 10)
8170 mainCtrl.VerifyAllClean(t)
8171 mainCtrl.VerifyCounterValues(t)
8174 //-----------------------------------------------------------------------------
8175 // TestRESTUnpackSubscriptionDeleteailureUnknownInstanceId
8178 // +-------+ +---------+ +---------+
8179 // | xapp | | submgr | | e2term |
8180 // +-------+ +---------+ +---------+
8182 // | [SUBS CREATE] |
8185 // | RESTSubDelReq | |
8186 // |---------------->| |
8188 // | RESTSubDelResp | |
8189 // |<----------------| |
8192 // | |------------->|
8194 // | | SubDelFail | Unknown instanceId
8195 // | |<-------------| No valid subscription found with subIds [0]. This will result timer expiry and resending
8198 // | |------------->|
8200 // | | SubDelFail | Subscription does exist any more in E2 node
8201 // | |<-------------| No valid subscription found with subIds [0].
8203 // | [SUBS DELETE] |
8205 //-----------------------------------------------------------------------------
8207 func TestRESTUnpackSubscriptionDeleteailureUnknownInstanceId(t *testing.T) {
8209 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
8210 Counter{cRestSubReqFromXapp, 1},
8211 Counter{cRestSubRespToXapp, 1},
8212 Counter{cSubReqToE2, 1},
8213 Counter{cSubRespFromE2, 1},
8214 Counter{cRestSubNotifToXapp, 1},
8215 Counter{cRestSubDelReqFromXapp, 1},
8216 Counter{cRestSubDelRespToXapp, 1},
8217 Counter{cSubDelReqToE2, 1},
8218 Counter{cSubDelReqTimerExpiry, 1},
8219 Counter{cSubDelReReqToE2, 1},
8220 Counter{cSubDelFailFromE2, 2},
8224 var params *teststube2ap.RESTSubsReqParams = nil
8225 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
8228 xappConn1.SendRESTSubsDelReq(t, &restSubId)
8230 // E2t: Receive 1st SubsDelReq
8231 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
8233 // Unknown instanceId 0 in this response which will result resending original request
8234 delreq.RequestId.InstanceId = 0
8235 e2termConn1.SendSubsDelFail(t, delreq, delmsg)
8237 // E2t: Receive 2nd SubsDelReq
8238 delreq, delmsg = e2termConn1.RecvSubsDelReq(t)
8240 // Subscription does not exist in in E2 Node. E2 Node responds with failure but there is also same unknown instanceId 0
8241 e2termConn1.SendSubsDelFail(t, delreq, delmsg)
8243 // Wait that subs is cleaned
8244 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
8246 xappConn1.TestMsgChanEmpty(t)
8247 e2termConn1.TestMsgChanEmpty(t)
8248 mainCtrl.wait_registry_empty(t, 10)
8249 mainCtrl.VerifyAllClean(t)
8250 mainCtrl.VerifyCounterValues(t)
8253 //-----------------------------------------------------------------------------
8254 // TestRESTUnpackSubscriptionDeleteFailureNoTransaction
8257 // +-------+ +---------+ +---------+
8258 // | xapp | | submgr | | e2term |
8259 // +-------+ +---------+ +---------+
8261 // | [SUBS CREATE] |
8264 // | RESTSubDelReq | |
8265 // |---------------->| |
8267 // | RESTSubDelResp | |
8268 // |<----------------| |
8271 // | |------------->|
8273 // | | SubDelFail | No transaction for the response
8274 // | |<-------------| Ongoing transaction not found. This will result timer expiry and resending
8277 // | |------------->|
8279 // | | SubDelFail | Subscription does exist any more in E2 node
8280 // | |<-------------| Ongoing transaction not found. This will result timer expiry
8282 // | [SUBS DELETE] |
8284 //-----------------------------------------------------------------------------
8286 func TestRESTUnpackSubscriptionDeleteFailureNoTransaction(t *testing.T) {
8288 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
8289 Counter{cRestSubReqFromXapp, 1},
8290 Counter{cRestSubRespToXapp, 1},
8291 Counter{cSubReqToE2, 1},
8292 Counter{cSubRespFromE2, 1},
8293 Counter{cRestSubNotifToXapp, 1},
8294 Counter{cRestSubDelReqFromXapp, 1},
8295 Counter{cRestSubDelRespToXapp, 1},
8296 Counter{cSubDelReqToE2, 1},
8297 Counter{cSubDelReqTimerExpiry, 2},
8298 Counter{cSubDelReReqToE2, 1},
8299 Counter{cSubDelFailFromE2, 2},
8303 var params *teststube2ap.RESTSubsReqParams = nil
8304 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
8307 xappConn1.SendRESTSubsDelReq(t, &restSubId)
8309 // E2t: Receive 1st SubsDelReq
8310 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
8312 mainCtrl.MakeTransactionNil(t, e2SubsId)
8314 // No transaction exist for this response which will result resending original request
8315 e2termConn1.SendSubsDelFail(t, delreq, delmsg)
8317 // E2t: Receive 2nd SubsDelReq
8318 delreq, delmsg = e2termConn1.RecvSubsDelReq(t)
8320 // Subscription does not exist in in E2 Node.
8321 e2termConn1.SendSubsDelFail(t, delreq, delmsg)
8323 // Wait that subs is cleaned
8324 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
8326 xappConn1.TestMsgChanEmpty(t)
8327 e2termConn1.TestMsgChanEmpty(t)
8328 mainCtrl.wait_registry_empty(t, 10)
8329 mainCtrl.VerifyAllClean(t)
8330 mainCtrl.VerifyCounterValues(t)
8333 //-----------------------------------------------------------------------------
8334 // TestRESTSubReqFailAsn1PackSubReqError
8337 // +-------+ +---------+ +---------+
8338 // | xapp | | submgr | | e2term |
8339 // +-------+ +---------+ +---------+
8342 // |---------------->| |
8344 // | RESTSubResp | |
8345 // |<----------------| |
8347 // | ASN.1 encode fails |
8350 // | |------------->|
8353 // | |<-------------|
8357 // |<----------------| |
8359 // | [SUBS DELETE] |
8362 //-----------------------------------------------------------------------------
8364 func TestRESTSubReqFailAsn1PackSubReqError(t *testing.T) {
8366 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
8367 Counter{cRestSubReqFromXapp, 1},
8368 Counter{cRestSubRespToXapp, 1},
8369 Counter{cRestSubFailNotifToXapp, 1},
8370 Counter{cRestSubDelReqFromXapp, 1},
8371 Counter{cRestSubDelRespToXapp, 1},
8374 const subReqCount int = 1
8376 var params *teststube2ap.RESTSubsReqParams = nil
8377 params = xappConn1.GetRESTSubsReqReportParams(subReqCount)
8378 e2ap_wrapper.AllowE2apToProcess(e2ap_wrapper.SUB_REQ, false)
8381 restSubId := xappConn1.SendRESTSubsReq(t, params)
8382 xapp.Logger.Debug("Send REST subscriber request for subscriberId : %v", restSubId)
8384 // E2t: Receive SubsDelReq
8385 xappConn1.ExpectRESTNotificationNok(t, restSubId, "allFail")
8387 e2SubsId := xappConn1.WaitRESTNotification(t, restSubId)
8388 xapp.Logger.Debug("TEST: REST notification received e2SubsId=%v", e2SubsId)
8390 e2ap_wrapper.AllowE2apToProcess(e2ap_wrapper.SUB_REQ, true)
8392 xappConn1.SendRESTSubsDelReq(t, &restSubId)
8394 // Wait that subs is cleaned
8395 waitSubsCleanup(t, e2SubsId, 10)
8396 mainCtrl.VerifyAllClean(t)
8397 mainCtrl.VerifyCounterValues(t)
8400 //-----------------------------------------------------------------------------
8401 // TestRESTSubReqPolicyUpdateTimeoutAndSubDelOkSameAction
8404 // +-------+ +---------+ +---------+
8405 // | xapp | | submgr | | e2term |
8406 // +-------+ +---------+ +---------+
8409 // |---------------->| |
8411 // | RESTSubResp | |
8412 // |<----------------| |
8414 // | |------------->|
8417 // | |<-------------|
8420 // |<----------------| |
8422 // | RESTSubReq | | Policy modification
8423 // |---------------->| |
8425 // | RESTSubResp | |
8426 // |<----------------| |
8428 // | |------------->|
8431 // | RESTNotif(Unsuccessful) | E2 timeout
8432 // |<----------------| |
8434 // | RESTSubDelReq | |
8435 // |---------------->| |
8438 // | |------------->|
8441 // | |<-------------|
8443 // | RESTSubDelResp | |
8444 // |<----------------| |
8446 //-----------------------------------------------------------------------------
8448 func TestRESTSubReqPolicyUpdateTimeoutAndSubDelOkSameAction(t *testing.T) {
8450 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
8451 Counter{cRestSubReqFromXapp, 2},
8452 Counter{cRestSubRespToXapp, 2},
8453 Counter{cSubReqToE2, 2},
8454 Counter{cSubReqTimerExpiry, 1},
8455 Counter{cSubRespFromE2, 1},
8456 Counter{cRestSubNotifToXapp, 1},
8457 Counter{cRestSubFailNotifToXapp, 1},
8458 Counter{cRestSubDelReqFromXapp, 1},
8459 Counter{cSubDelReqToE2, 1},
8460 Counter{cSubDelRespFromE2, 1},
8461 Counter{cRestSubDelRespToXapp, 1},
8464 const e2Timeout int64 = 1
8465 const e2RetryCount int64 = 0
8466 const routingNeeded bool = false
8469 params := xappConn1.GetRESTSubsReqPolicyParams(subReqCount)
8470 params.SetSubscriptionDirectives(e2Timeout, e2RetryCount, routingNeeded)
8473 restSubId := xappConn1.SendRESTSubsReq(t, params)
8474 xapp.Logger.Debug("Send REST subscribe request for subscriberId : %v", restSubId)
8476 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
8477 xappConn1.ExpectRESTNotification(t, restSubId)
8478 e2termConn1.SendSubsResp(t, crereq1, cremsg1)
8479 e2SubsId := xappConn1.WaitRESTNotification(t, restSubId)
8480 xapp.Logger.Debug("REST notification received e2SubsId=%v", e2SubsId)
8483 params = xappConn1.GetRESTSubsReqPolicyParams(subReqCount)
8484 params.SetSubscriptionDirectives(e2Timeout, e2RetryCount, routingNeeded)
8485 params.SetSubscriptionID(&restSubId)
8486 params.SetTimeToWait("w200ms")
8487 restSubId = xappConn1.SendRESTSubsReq(t, params)
8488 xapp.Logger.Debug("Send REST subscribe request for subscriberId : %v", restSubId)
8490 crereq1, cremsg1 = e2termConn1.RecvSubsReq(t)
8491 xappConn1.ExpectRESTNotification(t, restSubId)
8492 // SubsResp is missing, e2SubsId will be 0
8493 zeroE2SubsId := xappConn1.WaitRESTNotification(t, restSubId)
8494 xapp.Logger.Debug("TEST: REST notification received e2SubsId=%v", zeroE2SubsId)
8497 xappConn1.SendRESTSubsDelReq(t, &restSubId)
8498 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
8499 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
8501 waitSubsCleanup(t, e2SubsId, 10)
8502 mainCtrl.VerifyAllClean(t)
8503 mainCtrl.VerifyCounterValues(t)
8506 //-----------------------------------------------------------------------------
8507 // TestPolicyUpdateRESTSubReqAndSubDelOkWithRestartInMiddle
8510 // +-------+ +---------+ +---------+
8511 // | xapp | | submgr | | e2term |
8512 // +-------+ +---------+ +---------+
8515 // |---------------->| |
8517 // | RESTSubResp | |
8518 // |<----------------| |
8520 // | |------------->|
8523 // | |<-------------|
8526 // |<----------------| |
8529 // |---------------->| |
8531 // | RESTSubResp | |
8532 // |<----------------| |
8534 // | |------------->|
8536 // | Submgr restart |
8538 // | RESTSubDelReq | |
8539 // |---------------->| |
8542 // | |------------->|
8545 // | |<-------------|
8547 // | RESTSubDelResp | |
8548 // |<----------------| |
8550 //-----------------------------------------------------------------------------
8552 func TestPolicyUpdateRESTSubReqAndSubDelOkWithRestartInMiddle(t *testing.T) {
8554 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
8555 Counter{cRestSubReqFromXapp, 2},
8556 Counter{cRestSubRespToXapp, 2},
8557 Counter{cSubReqToE2, 2},
8558 Counter{cSubRespFromE2, 1},
8559 Counter{cRestSubNotifToXapp, 1},
8560 Counter{cRestSubDelReqFromXapp, 1},
8561 Counter{cSubDelReqToE2, 1},
8562 Counter{cSubDelRespFromE2, 1},
8563 Counter{cRestSubDelRespToXapp, 1},
8566 const e2Timeout int64 = 1
8567 const e2RetryCount int64 = 0
8568 const routingNeeded bool = false
8571 params := xappConn1.GetRESTSubsReqPolicyParams(subReqCount)
8572 params.SetSubscriptionDirectives(e2Timeout, e2RetryCount, routingNeeded)
8573 // Create subscription
8574 restSubId := xappConn1.SendRESTSubsReq(t, params)
8575 xapp.Logger.Debug("Send REST subscribe request for subscriberId : %v", restSubId)
8577 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
8578 xappConn1.ExpectRESTNotification(t, restSubId)
8579 e2termConn1.SendSubsResp(t, crereq1, cremsg1)
8580 e2SubsId := xappConn1.WaitRESTNotification(t, restSubId)
8581 xapp.Logger.Debug("REST notification received e2SubsId=%v", e2SubsId)
8583 // Check subscription
8584 queryXappSubscription(t, int64(e2SubsId), "RAN_NAME_1", []string{"localhost:13560"})
8587 params = xappConn1.GetRESTSubsReqPolicyParams(subReqCount)
8588 params.SetSubscriptionDirectives(e2Timeout, e2RetryCount, routingNeeded)
8589 params.SetSubscriptionID(&restSubId)
8590 params.SetTimeToWait("w200ms")
8591 mainCtrl.SetResetTestFlag(t, true) // subs.DoNotWaitSubResp will be set TRUE for the subscription
8592 restSubId = xappConn1.SendRESTSubsReq(t, params)
8593 xapp.Logger.Debug("Send REST subscribe request for subscriberId : %v", restSubId)
8595 crereq1, cremsg1 = e2termConn1.RecvSubsReq(t)
8596 mainCtrl.SetResetTestFlag(t, false)
8598 // SubsResp is missing due to submgr restart
8600 mainCtrl.SimulateRestart(t)
8601 xapp.Logger.Debug("mainCtrl.SimulateRestart done")
8603 // ReadE2Subscriptions() for testing is running in own go routine (go mainCtrl.c.ReadE2Subscriptions())
8604 // That needs to be completed before successful subscription query is possible
8605 <-time.After(time.Second * 1)
8607 // Check subscription
8608 queryXappSubscription(t, int64(e2SubsId), "RAN_NAME_1", []string{"localhost:13560"})
8610 // Delete subscription
8611 xappConn1.SendRESTSubsDelReq(t, &restSubId)
8612 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
8613 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
8615 //Wait that subs is cleaned
8616 waitSubsCleanup(t, e2SubsId, 10)
8618 mainCtrl.VerifyCounterValues(t)
8619 mainCtrl.VerifyAllClean(t)
8622 ////////////////////////////////////////////////////////////////////////////////////
8623 // Services for UT cases
8624 ////////////////////////////////////////////////////////////////////////////////////
8625 const subReqCount int = 1
8626 const host string = "localhost"
8628 func createSubscription(t *testing.T, fromXappConn *teststube2ap.E2Stub, toE2termConn *teststube2ap.E2Stub, params *teststube2ap.RESTSubsReqParams) (string, uint32) {
8630 params = fromXappConn.GetRESTSubsReqReportParams(subReqCount)
8632 restSubId := fromXappConn.SendRESTSubsReq(t, params)
8633 xapp.Logger.Debug("Send REST subscriber request for subscriberId : %v", restSubId)
8635 crereq1, cremsg1 := toE2termConn.RecvSubsReq(t)
8636 fromXappConn.ExpectRESTNotification(t, restSubId)
8637 toE2termConn.SendSubsResp(t, crereq1, cremsg1)
8638 e2SubsId := fromXappConn.WaitRESTNotification(t, restSubId)
8639 xapp.Logger.Debug("REST notification received e2SubsId=%v", e2SubsId)
8641 return restSubId, e2SubsId
8644 func createXapp2MergedSubscription(t *testing.T, meid string) (string, uint32) {
8646 params := xappConn2.GetRESTSubsReqReportParams(subReqCount)
8648 params.SetMeid(meid)
8650 xapp.Subscription.SetResponseCB(xappConn2.SubscriptionRespHandler)
8651 restSubId := xappConn2.SendRESTSubsReq(t, params)
8652 xappConn2.ExpectRESTNotification(t, restSubId)
8653 xapp.Logger.Debug("Send REST subscriber request for subscriberId : %v", restSubId)
8654 e2SubsId := xappConn2.WaitRESTNotification(t, restSubId)
8655 xapp.Logger.Debug("REST notification received e2SubsId=%v", e2SubsId)
8657 return restSubId, e2SubsId
8660 func createXapp1PolicySubscription(t *testing.T) (string, uint32) {
8662 params := xappConn1.GetRESTSubsReqPolicyParams(subReqCount)
8663 restSubId := xappConn1.SendRESTSubsReq(t, params)
8664 xapp.Logger.Debug("Send REST Policy subscriber request for subscriberId : %v", restSubId)
8666 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
8667 xappConn1.ExpectRESTNotification(t, restSubId)
8668 e2termConn1.SendSubsResp(t, crereq1, cremsg1)
8669 e2SubsId := xappConn1.WaitRESTNotification(t, restSubId)
8670 xapp.Logger.Debug("REST notification received e2SubsId=%v", e2SubsId)
8672 return restSubId, e2SubsId
8675 func createXapp1ReportSubscriptionE2Fail(t *testing.T) (string, uint32) {
8676 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
8677 restSubId := xappConn1.SendRESTSubsReq(t, params)
8679 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
8680 fparams1 := &teststube2ap.E2StubSubsFailParams{}
8681 fparams1.Set(crereq1)
8682 e2termConn1.SendSubsFail(t, fparams1, cremsg1)
8684 delreq1, delmsg1 := e2termConn1.RecvSubsDelReq(t)
8685 xappConn1.ExpectRESTNotification(t, restSubId)
8686 e2termConn1.SendSubsDelResp(t, delreq1, delmsg1)
8687 e2SubsId := xappConn1.WaitRESTNotification(t, restSubId)
8688 xapp.Logger.Debug("TEST: REST notification received e2SubsId=%v", e2SubsId)
8690 return restSubId, e2SubsId
8693 func deleteSubscription(t *testing.T, fromXappConn *teststube2ap.E2Stub, toE2termConn *teststube2ap.E2Stub, restSubId *string) {
8694 fromXappConn.SendRESTSubsDelReq(t, restSubId)
8695 delreq, delmsg := toE2termConn.RecvSubsDelReq(t)
8696 toE2termConn.SendSubsDelResp(t, delreq, delmsg)
8699 func deleteXapp1Subscription(t *testing.T, restSubId *string) {
8700 xappConn1.SendRESTSubsDelReq(t, restSubId)
8701 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
8702 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
8705 func deleteXapp2Subscription(t *testing.T, restSubId *string) {
8706 xappConn2.SendRESTSubsDelReq(t, restSubId)
8707 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
8708 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
8711 func queryXappSubscription(t *testing.T, e2SubsId int64, meid string, endpoint []string) {
8712 resp, _ := xapp.Subscription.QuerySubscriptions()
8713 assert.Equal(t, e2SubsId, resp[0].SubscriptionID)
8714 assert.Equal(t, meid, resp[0].Meid)
8715 assert.Equal(t, endpoint, resp[0].ClientEndpoint)
8718 func waitSubsCleanup(t *testing.T, e2SubsId uint32, timeout int) {
8719 //Wait that subs is cleaned
8720 mainCtrl.wait_subs_clean(t, e2SubsId, timeout)
8722 xappConn1.TestMsgChanEmpty(t)
8723 xappConn2.TestMsgChanEmpty(t)
8724 e2termConn1.TestMsgChanEmpty(t)
8725 mainCtrl.wait_registry_empty(t, timeout)
8728 func sendAndReceiveMultipleE2SubReqs(t *testing.T, count int, fromXappConn *teststube2ap.E2Stub, toE2termConn *teststube2ap.E2Stub, restSubId string) []uint32 {
8730 var e2SubsId []uint32
8732 for i := 0; i < count; i++ {
8733 xapp.Logger.Debug("TEST: %d ===================================== BEGIN CRE ============================================", i+1)
8734 crereq, cremsg := toE2termConn.RecvSubsReq(t)
8735 fromXappConn.ExpectRESTNotification(t, restSubId)
8736 toE2termConn.SendSubsResp(t, crereq, cremsg)
8737 instanceId := fromXappConn.WaitRESTNotification(t, restSubId)
8738 e2SubsId = append(e2SubsId, instanceId)
8739 xapp.Logger.Debug("TEST: %v", e2SubsId)
8740 xapp.Logger.Debug("TEST: %d ===================================== END CRE ============================================", i+1)
8741 <-time.After(100 * time.Millisecond)
8746 func sendAndReceiveMultipleE2DelReqs(t *testing.T, e2SubsIds []uint32, toE2termConn *teststube2ap.E2Stub) {
8748 for i := 0; i < len(e2SubsIds); i++ {
8749 xapp.Logger.Debug("TEST: %d ===================================== BEGIN DEL ============================================", i+1)
8750 delreq, delmsg := toE2termConn.RecvSubsDelReq(t)
8751 toE2termConn.SendSubsDelResp(t, delreq, delmsg)
8752 <-time.After(1 * time.Second)
8753 xapp.Logger.Debug("TEST: %d ===================================== END DEL ============================================", i+1)
8754 <-time.After(100 * time.Millisecond)
8757 // Wait that subs is cleaned
8758 for i := 0; i < len(e2SubsIds); i++ {
8759 mainCtrl.wait_subs_clean(t, e2SubsIds[i], 10)