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 func TestSuiteSetup(t *testing.T) {
37 // The effect of this call shall endure though the UT suite!
38 // If this causes any issues, the previous interface can be restored
40 // SetPackerIf(e2ap_wrapper.NewAsn1E2APPacker())
42 SetPackerIf(e2ap_wrapper.NewUtAsn1E2APPacker())
43 mainCtrl.c.restDuplicateCtrl.Init()
46 func TestRanStatusChangeViaSDLNotification(t *testing.T) {
48 // Current UT test cases use these ran names
49 xappRnibMock.CreateGnb("RAN_NAME_1", entities.ConnectionStatus_DISCONNECTED)
50 xappRnibMock.CreateGnb("RAN_NAME_11", entities.ConnectionStatus_DISCONNECTED)
51 xappRnibMock.CreateGnb("RAN_NAME_2", entities.ConnectionStatus_DISCONNECTED)
53 mainCtrl.c.e2IfState.ReadE2ConfigurationFromRnib()
54 mainCtrl.c.e2IfState.SubscribeChannels()
56 mainCtrl.SetE2State(t, "RAN_NAME_1_CONNECTED")
57 mainCtrl.SetE2State(t, "RAN_NAME_2_CONNECTED")
58 mainCtrl.SetE2State(t, "RAN_NAME_11_CONNECTED")
61 //-----------------------------------------------------------------------------
62 // TestRESTSubReqAfterE2ConnBreak
65 // +-------+ +---------+ +---------+
66 // | xapp | | submgr | | e2term |
67 // +-------+ +---------+ +---------+
69 // | [E2 Conn. DOWN] |
72 // |---------------->| |
74 // |<----------------| |
77 //-----------------------------------------------------------------------------
79 func TestRESTSubReqAfterE2ConnBreak(t *testing.T) {
80 CaseBegin("TestRESTSubReqAfterE2ConnBreak")
82 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
83 Counter{cRestSubReqFromXapp, 1},
84 Counter{cRestReqRejDueE2Down, 1},
87 // E2 disconnect after E2term has received response
88 mainCtrl.SetE2State(t, "RAN_NAME_1_DISCONNECTED")
90 const subReqCount int = 1
91 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
92 xappConn1.SendRESTSubsReq(t, params)
94 // Restore E2 connection for following test cases
95 mainCtrl.SetE2State(t, "RAN_NAME_1_CONNECTED")
97 mainCtrl.VerifyCounterValues(t)
100 //-----------------------------------------------------------------------------
101 // TestRESTSubReqE2ConnBreak
104 // +-------+ +---------+ +---------+
105 // | xapp | | submgr | | e2term |
106 // +-------+ +---------+ +---------+
109 // |---------------->| |
111 // |<----------------| |
113 // | |------------->|
115 // | |<-------------|
117 // | [E2 Conn. DOWN] |
118 // | [Int. SUBS DELETE] |
120 // | RESTNotif(unsuccessful) |
121 // |<----------------| |
125 //-----------------------------------------------------------------------------
126 func TestRESTSubReqE2ConnBreak(t *testing.T) {
127 CaseBegin("TestRESTSubReqE2ConnBreak")
129 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
130 Counter{cRestSubReqFromXapp, 1},
131 Counter{cRestSubRespToXapp, 1},
132 Counter{cSubReqToE2, 1},
133 Counter{cSubRespFromE2, 1},
134 Counter{cRestSubFailNotifToXapp, 1},
138 const subReqCount int = 1
139 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
140 restSubId := xappConn1.SendRESTSubsReq(t, params)
142 crereq, cremsg := e2termConn1.RecvSubsReq(t)
143 xappConn1.ExpectRESTNotification(t, restSubId)
145 // E2 disconnect after E2term has received response
146 mainCtrl.SetE2State(t, "RAN_NAME_1_DISCONNECTED")
148 e2termConn1.SendSubsResp(t, crereq, cremsg)
149 e2SubsId := xappConn1.WaitRESTNotification(t, restSubId)
151 <-time.After(time.Second * 1)
152 assert.Equal(t, 0, len(mainCtrl.c.registry.register))
153 assert.Equal(t, 0, len(mainCtrl.c.registry.restSubscriptions))
155 subIds, register, err := mainCtrl.c.ReadAllSubscriptionsFromSdl()
157 xapp.Logger.Error("%v", err)
159 assert.Equal(t, 65534, len(subIds)) // range 1-65535 , FFFF = 65535
160 assert.Equal(t, 0, len(register))
163 restSubscriptions, err := mainCtrl.c.ReadAllRESTSubscriptionsFromSdl()
165 xapp.Logger.Error("%v", err)
167 assert.Equal(t, 0, len(restSubscriptions))
170 // Restore E2 connection for following test cases
171 mainCtrl.SetE2State(t, "RAN_NAME_1_CONNECTED")
173 // Wait that subs is cleaned
174 waitSubsCleanup(t, e2SubsId, 10)
175 mainCtrl.VerifyCounterValues(t)
178 //-----------------------------------------------------------------------------
179 // TestRESTSubscriptionDeleteAfterE2ConnectionBreak
182 // +-------+ +---------+ +---------+
183 // | xapp | | submgr | | e2term |
184 // +-------+ +---------+ +---------+
188 // | [E2 Conn. DOWN] |
190 // | RESTSubDelReq | |
191 // |---------------->| |
193 // | RESTSubDelResp | |
194 // |<----------------| |
196 // | [No valid subscription found] |
199 //-----------------------------------------------------------------------------
200 func TestRESTSubscriptionDeleteAfterE2ConnectionBreak(t *testing.T) {
201 xapp.Logger.Debug("TEST: TestRESTSubscriptionDeleteAfterE2ConnectionBreak")
203 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
204 Counter{cRestSubReqFromXapp, 1},
205 Counter{cRestSubRespToXapp, 1},
206 Counter{cSubReqToE2, 1},
207 Counter{cSubRespFromE2, 1},
208 Counter{cRestSubNotifToXapp, 1},
209 Counter{cRestSubDelReqFromXapp, 1},
210 Counter{cRestSubDelRespToXapp, 1},
214 var params *teststube2ap.RESTSubsReqParams = nil
215 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
217 // E2 disconnect after E2term has received response
218 mainCtrl.SetE2State(t, "RAN_NAME_1_DISCONNECTED")
221 xappConn1.SendRESTSubsDelReq(t, &restSubId)
223 <-time.After(time.Second * 1)
224 assert.Equal(t, 0, len(mainCtrl.c.registry.register))
225 assert.Equal(t, 0, len(mainCtrl.c.registry.restSubscriptions))
227 subIds, register, err := mainCtrl.c.ReadAllSubscriptionsFromSdl()
229 xapp.Logger.Error("%v", err)
231 assert.Equal(t, 65534, len(subIds)) // range 1-65535 , FFFF = 65535
232 assert.Equal(t, 0, len(register))
235 restSubscriptions, err := mainCtrl.c.ReadAllRESTSubscriptionsFromSdl()
237 xapp.Logger.Error("%v", err)
239 assert.Equal(t, 0, len(restSubscriptions))
242 // Restore E2 connection for following test cases
243 mainCtrl.SetE2State(t, "RAN_NAME_1_CONNECTED")
245 // Wait that subs is cleaned
246 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
248 xappConn1.TestMsgChanEmpty(t)
249 e2termConn1.TestMsgChanEmpty(t)
250 mainCtrl.wait_registry_empty(t, 10)
251 mainCtrl.VerifyCounterValues(t)
254 //-----------------------------------------------------------------------------
255 // TestRESTOtherE2ConnectionChanges
259 // +-------+ +---------+ +---------+
260 // | xapp | | submgr | | e2term |
261 // +-------+ +---------+ +---------+
265 // | [E2 CONNECTED_SETUP_FAILED] |
266 // | [E2 CONNECTING] |
267 // | [E2 SHUTTING_DOWN] |
268 // | [E2 SHUT_DOWN] |
273 //-----------------------------------------------------------------------------
274 func TestRESTOtherE2ConnectionChanges(t *testing.T) {
275 xapp.Logger.Debug("TEST: TestRESTOtherE2ConnectionChanges")
277 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
278 Counter{cRestSubReqFromXapp, 1},
279 Counter{cRestSubRespToXapp, 1},
280 Counter{cSubReqToE2, 1},
281 Counter{cSubRespFromE2, 1},
282 Counter{cRestSubNotifToXapp, 1},
283 Counter{cRestSubDelReqFromXapp, 1},
284 Counter{cSubDelReqToE2, 1},
285 Counter{cSubDelRespFromE2, 1},
286 Counter{cRestSubDelRespToXapp, 1},
290 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
291 restSubId := xappConn1.SendRESTSubsReq(t, params)
293 crereq, cremsg := e2termConn1.RecvSubsReq(t)
294 xappConn1.ExpectRESTNotification(t, restSubId)
295 e2termConn1.SendSubsResp(t, crereq, cremsg)
296 e2SubsId := xappConn1.WaitRESTNotification(t, restSubId)
298 // Submgr should not react any other connection state changes than CONNECTED and DISCONNECTED
299 mainCtrl.SetE2State(t, "RAN_NAME_1_CONNECTED_SETUP_FAILED")
300 mainCtrl.SetE2State(t, "RAN_NAME_1_CONNECTING")
301 mainCtrl.SetE2State(t, "RAN_NAME_1_SHUTTING_DOWN")
302 mainCtrl.SetE2State(t, "RAN_NAME_1_SHUT_DOWN")
305 xappConn1.SendRESTSubsDelReq(t, &restSubId)
306 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
307 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
309 // Restore E2 connection for following test cases
310 mainCtrl.SetE2State(t, "RAN_NAME_1_CONNECTED")
312 // Wait that subs is cleaned
313 waitSubsCleanup(t, e2SubsId, 10)
314 mainCtrl.VerifyCounterValues(t)
317 //-----------------------------------------------------------------------------
318 // TestRESTSubReqAndDeleteOkWithE2apUtWrapper
321 // +-------+ +---------+ +---------+ +---------+
322 // | xapp | | submgr | | e2term | | rtmgr |
323 // +-------+ +---------+ +---------+ +---------+
325 // | RESTSubReq | | |
326 // |---------------->| | |
327 // | | RouteCreate | |
328 // | |--------------------------->| // The order of these events may vary
330 // | RESTSubResp | | | // The order of these events may vary
331 // |<----------------| | |
332 // | | RouteResponse| |
333 // | |<---------------------------| // The order of these events may vary
336 // | |------------->| | // The order of these events may vary
339 // | |<-------------| |
340 // | RESTNotif1 | | |
341 // |<----------------| | |
343 // | RESTSubDelReq | | |
344 // |---------------->| | |
346 // | |------------->| |
348 // | RESTSubDelResp| | |
349 // |<----------------| | |
351 // | | SubDelResp | |
352 // | |<-------------| |
356 //-----------------------------------------------------------------------------
357 func TestRESTSubReqAndDeleteOkWithE2apUtWrapper(t *testing.T) {
359 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, nil)
361 deleteSubscription(t, xappConn1, e2termConn1, &restSubId)
363 waitSubsCleanup(t, e2SubsId, 10)
366 //-----------------------------------------------------------------------------
367 // TestRESTSubReqAndE1apDeleteReqPackingError
370 // +-------+ +---------+ +---------+ +---------+
371 // | xapp | | submgr | | e2term | | rtmgr |
372 // +-------+ +---------+ +---------+ +---------+
374 // | RESTSubReq | | |
375 // |---------------->| | |
376 // | | RouteCreate | |
377 // | |--------------------------->| // The order of these events may vary
379 // | RESTSubResp | | | // The order of these events may vary
380 // |<----------------| | |
381 // | | RouteResponse| |
382 // | |<---------------------------| // The order of these events may vary
385 // | |------------->| | // The order of these events may vary
388 // | |<-------------| |
389 // | RESTNotif1 | | |
390 // |<----------------| | |
392 // | RESTSubDelReq | | |
393 // |---------------->| | |
395 // | RESTSubDelResp| | |
396 // |<----------------| | |
400 //-----------------------------------------------------------------------------
401 func TestRESTSubReqAndE1apDeleteReqPackingError(t *testing.T) {
403 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, nil)
405 e2ap_wrapper.AllowE2apToProcess(e2ap_wrapper.SUB_DEL_REQ, false)
406 xappConn1.SendRESTSubsDelReq(t, &restSubId)
407 defer e2ap_wrapper.AllowE2apToProcess(e2ap_wrapper.SUB_DEL_REQ, true)
409 waitSubsCleanup(t, e2SubsId, 10)
412 //-----------------------------------------------------------------------------
413 // TestRESTSubReqAndE1apDeleteRespUnpackingError
416 // +-------+ +---------+ +---------+ +---------+
417 // | xapp | | submgr | | e2term | | rtmgr |
418 // +-------+ +---------+ +---------+ +---------+
420 // | RESTSubReq | | |
421 // |---------------->| | |
422 // | | RouteCreate | |
423 // | |--------------------------->| // The order of these events may vary
425 // | RESTSubResp | | | // The order of these events may vary
426 // |<----------------| | |
427 // | | RouteResponse| |
428 // | |<---------------------------| // The order of these events may vary
431 // | |------------->| | // The order of these events may vary
434 // | |<-------------| |
435 // | RESTNotif1 | | |
436 // |<----------------| | |
438 // | RESTSubDelReq | | |
439 // |---------------->| | |
441 // | |------------->| |
443 // | RESTSubDelResp| | |
444 // |<----------------| | | // The order of these events may vary
446 // | | SubDelResp | |
447 // | |<-------------| | // 1.st NOK
450 // | |------------->| |
452 // | | SubDelResp | |
453 // | |<-------------| | // 2.nd NOK
455 //-----------------------------------------------------------------------------
457 func TestRESTSubReqAndE1apDeleteRespUnpackingError(t *testing.T) {
459 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, nil)
461 xappConn1.SendRESTSubsDelReq(t, &restSubId)
462 e2ap_wrapper.AllowE2apToProcess(e2ap_wrapper.SUB_DEL_RESP, false)
463 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
464 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
466 delreq, delmsg = e2termConn1.RecvSubsDelReq(t)
467 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
469 defer e2ap_wrapper.AllowE2apToProcess(e2ap_wrapper.SUB_DEL_RESP, true)
471 waitSubsCleanup(t, e2SubsId, 10)
474 //-----------------------------------------------------------------------------
475 // TestSubReqAndRouteNok
478 // +-------+ +---------+ +---------+
479 // | xapp | | submgr | | rtmgr |
480 // +-------+ +---------+ +---------+
483 // |------------->| |
486 // | |------------->|
490 // | |<-------------|
492 // | [SUBS INT DELETE] |
495 //-----------------------------------------------------------------------------
497 func TestSubReqAndRouteNok(t *testing.T) {
498 CaseBegin("TestSubReqAndRouteNok")
500 // Init counter check
501 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
502 Counter{cSubReqFromXapp, 1},
503 Counter{cRouteCreateFail, 1},
506 waiter := rtmgrHttp.AllocNextEvent(false)
507 newSubsId := mainCtrl.get_registry_next_subid(t)
508 xappConn1.SendSubsReq(t, nil, nil)
511 //Wait that subs is cleaned
512 mainCtrl.wait_subs_clean(t, newSubsId, 10)
514 xappConn1.TestMsgChanEmpty(t)
515 xappConn2.TestMsgChanEmpty(t)
516 e2termConn1.TestMsgChanEmpty(t)
517 mainCtrl.wait_registry_empty(t, 10)
519 <-time.After(1 * time.Second)
520 mainCtrl.VerifyCounterValues(t)
523 //-----------------------------------------------------------------------------
524 // TestSubReqAndRouteUpdateNok
527 // +-------+ +-------+ +---------+ +---------+
528 // | xapp2 | | xapp1 | | submgr | | rtmgr |
529 // +-------+ +-------+ +---------+ +---------+
531 // | [SUBS CREATE] | |
535 // | SubReq (mergeable) | |
536 // |--------------------------->| | |
538 // | | | RouteUpdate |
539 // | | |------------->|
541 // | | | RouteUpdate |
542 // | | | status:400 |
543 // | | |<-------------|
545 // | [SUBS INT DELETE] | |
548 // | [SUBS DELETE] | |
551 func TestSubReqAndRouteUpdateNok(t *testing.T) {
552 CaseBegin("TestSubReqAndRouteUpdateNok")
554 // Init counter check
555 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
556 Counter{cSubReqFromXapp, 2},
557 Counter{cSubReqToE2, 1},
558 Counter{cSubRespFromE2, 1},
559 Counter{cSubRespToXapp, 1},
560 Counter{cRouteCreateUpdateFail, 1},
561 Counter{cSubDelReqFromXapp, 1},
562 Counter{cSubDelReqToE2, 1},
563 Counter{cSubDelRespFromE2, 1},
564 Counter{cSubDelRespToXapp, 1},
567 cretrans := xappConn1.SendSubsReq(t, nil, nil)
568 crereq, cremsg := e2termConn1.RecvSubsReq(t)
569 e2termConn1.SendSubsResp(t, crereq, cremsg)
570 e2SubsId := xappConn1.RecvSubsResp(t, cretrans)
572 resp, _ := xapp.Subscription.QuerySubscriptions()
573 assert.Equal(t, resp[0].SubscriptionID, int64(e2SubsId))
574 assert.Equal(t, resp[0].Meid, "RAN_NAME_1")
575 assert.Equal(t, resp[0].ClientEndpoint, []string{"localhost:13560"})
577 waiter := rtmgrHttp.AllocNextEvent(false)
578 newSubsId := mainCtrl.get_registry_next_subid(t)
579 xappConn2.SendSubsReq(t, nil, nil)
582 deltrans := xappConn1.SendSubsDelReq(t, nil, e2SubsId)
583 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
585 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
586 xappConn1.RecvSubsDelResp(t, deltrans)
588 //Wait that subs is cleaned
589 mainCtrl.wait_subs_clean(t, newSubsId, 10)
590 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
592 xappConn1.TestMsgChanEmpty(t)
593 xappConn2.TestMsgChanEmpty(t)
594 e2termConn1.TestMsgChanEmpty(t)
595 mainCtrl.wait_registry_empty(t, 10)
597 mainCtrl.VerifyCounterValues(t)
600 //-----------------------------------------------------------------------------
601 // TestSubDelReqAndRouteDeleteNok
604 // +-------+ +---------+ +---------+ +---------+
605 // | xapp | | submgr | | e2term | | rtmgr |
606 // +-------+ +---------+ +---------+ +---------+
608 // | [SUBS CREATE] | |
613 // |------------->| | |
615 // | |------------->| |
617 // | |<-------------| |
619 // |<-------------| | |
620 // | | RouteDelete | |
621 // | |---------------------------->|
623 // | | RouteDelete | |
624 // | | status:400 | |
625 // | |<----------------------------|
627 func TestSubDelReqAndRouteDeleteNok(t *testing.T) {
628 CaseBegin("TestSubDelReqAndRouteDeleteNok")
630 // Init counter check
631 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
632 Counter{cSubReqFromXapp, 1},
633 Counter{cSubReqToE2, 1},
634 Counter{cSubRespFromE2, 1},
635 Counter{cSubRespToXapp, 1},
636 Counter{cSubDelReqFromXapp, 1},
637 Counter{cRouteDeleteFail, 1},
638 Counter{cSubDelReqToE2, 1},
639 Counter{cSubDelRespFromE2, 1},
640 Counter{cSubDelRespToXapp, 1},
643 cretrans := xappConn1.SendSubsReq(t, nil, nil)
644 crereq, cremsg := e2termConn1.RecvSubsReq(t)
645 e2termConn1.SendSubsResp(t, crereq, cremsg)
646 e2SubsId := xappConn1.RecvSubsResp(t, cretrans)
648 resp, _ := xapp.Subscription.QuerySubscriptions()
649 assert.Equal(t, resp[0].SubscriptionID, int64(e2SubsId))
650 assert.Equal(t, resp[0].Meid, "RAN_NAME_1")
651 assert.Equal(t, resp[0].ClientEndpoint, []string{"localhost:13560"})
653 deltrans := xappConn1.SendSubsDelReq(t, nil, e2SubsId)
654 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
656 waiter := rtmgrHttp.AllocNextEvent(false)
657 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
660 xappConn1.RecvSubsDelResp(t, deltrans)
662 //Wait that subs is cleaned
663 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
665 xappConn1.TestMsgChanEmpty(t)
666 xappConn2.TestMsgChanEmpty(t)
667 e2termConn1.TestMsgChanEmpty(t)
668 mainCtrl.wait_registry_empty(t, 10)
670 mainCtrl.VerifyCounterValues(t)
673 //-----------------------------------------------------------------------------
674 // TestSubMergeDelAndRouteUpdateNok
676 // +-------+ +-------+ +---------+ +---------+
677 // | xapp2 | | xapp1 | | submgr | | e2term |
678 // +-------+ +-------+ +---------+ +---------+
683 // | |------------->| |
686 // | | |------------->|
688 // | | |<-------------|
690 // | |<-------------| |
693 // |--------------------------->| |
696 // |<---------------------------| |
698 // | | SubDelReq 1 | |
699 // | |------------->| |
700 // | | | RouteUpdate |
701 // | | |-----> rtmgr |
703 // | | | RouteUpdate |
704 // | | | status:400 |
705 // | | |<----- rtmgr |
707 // | | SubDelResp 1 | |
708 // | |<-------------| |
711 // |--------------------------->| |
713 // | | | SubDelReq 2 |
714 // | | |------------->|
716 // | | | SubDelReq 2 |
717 // | | |------------->|
719 // | SubDelResp 2 | |
720 // |<---------------------------| |
722 //-----------------------------------------------------------------------------
723 func TestSubMergeDelAndRouteUpdateNok(t *testing.T) {
724 CaseBegin("TestSubMergeDelAndRouteUpdateNok")
726 // Init counter check
727 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
728 Counter{cSubReqFromXapp, 2},
729 Counter{cSubReqToE2, 1},
730 Counter{cSubRespFromE2, 1},
731 Counter{cSubRespToXapp, 2},
732 Counter{cSubDelReqFromXapp, 2},
733 Counter{cRouteDeleteUpdateFail, 1},
734 Counter{cSubDelReqToE2, 1},
735 Counter{cSubDelRespFromE2, 1},
736 Counter{cSubDelRespToXapp, 2},
740 rparams1 := &teststube2ap.E2StubSubsReqParams{}
742 cretrans1 := xappConn1.SendSubsReq(t, rparams1, nil)
743 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
744 e2termConn1.SendSubsResp(t, crereq1, cremsg1)
745 e2SubsId1 := xappConn1.RecvSubsResp(t, cretrans1)
748 rparams2 := &teststube2ap.E2StubSubsReqParams{}
750 cretrans2 := xappConn2.SendSubsReq(t, rparams2, nil)
751 e2SubsId2 := xappConn2.RecvSubsResp(t, cretrans2)
753 resp, _ := xapp.Subscription.QuerySubscriptions()
754 assert.Equal(t, resp[0].SubscriptionID, int64(e2SubsId1))
755 assert.Equal(t, resp[0].Meid, "RAN_NAME_1")
756 assert.Equal(t, resp[0].ClientEndpoint, []string{"localhost:13560", "localhost:13660"})
759 waiter := rtmgrHttp.AllocNextEvent(false)
760 deltrans1 := xappConn1.SendSubsDelReq(t, nil, e2SubsId1)
763 xappConn1.RecvSubsDelResp(t, deltrans1)
766 deltrans2 := xappConn2.SendSubsDelReq(t, nil, e2SubsId2)
767 delreq2, delmsg2 := e2termConn1.RecvSubsDelReq(t)
768 e2termConn1.SendSubsDelResp(t, delreq2, delmsg2)
769 xappConn2.RecvSubsDelResp(t, deltrans2)
770 //Wait that subs is cleaned
771 mainCtrl.wait_subs_clean(t, e2SubsId2, 10)
773 xappConn1.TestMsgChanEmpty(t)
774 xappConn2.TestMsgChanEmpty(t)
775 e2termConn1.TestMsgChanEmpty(t)
776 mainCtrl.wait_registry_empty(t, 10)
778 mainCtrl.VerifyCounterValues(t)
781 //-----------------------------------------------------------------------------
783 //-----------------------------------------------------------------------------
784 // TestSubReqAndSubDelOk
787 // +-------+ +---------+ +---------+
788 // | xapp | | submgr | | e2term |
789 // +-------+ +---------+ +---------+
792 // |------------->| |
795 // | |------------->|
798 // | |<-------------|
801 // |<-------------| |
805 // |------------->| |
808 // | |------------->|
811 // | |<-------------|
814 // |<-------------| |
816 //-----------------------------------------------------------------------------
817 func TestSubReqAndSubDelOk(t *testing.T) {
818 CaseBegin("TestSubReqAndSubDelOk")
820 // Init counter check
821 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
822 Counter{cSubReqFromXapp, 1},
823 Counter{cSubReqToE2, 1},
824 Counter{cSubRespFromE2, 1},
825 Counter{cSubRespToXapp, 1},
826 Counter{cSubDelReqFromXapp, 1},
827 Counter{cSubDelReqToE2, 1},
828 Counter{cSubDelRespFromE2, 1},
829 Counter{cSubDelRespToXapp, 1},
832 cretrans := xappConn1.SendSubsReq(t, nil, nil)
833 crereq, cremsg := e2termConn1.RecvSubsReq(t)
834 e2termConn1.SendSubsResp(t, crereq, cremsg)
835 e2SubsId := xappConn1.RecvSubsResp(t, cretrans)
837 resp, _ := xapp.Subscription.QuerySubscriptions()
838 assert.Equal(t, resp[0].SubscriptionID, int64(e2SubsId))
839 assert.Equal(t, resp[0].Meid, "RAN_NAME_1")
840 assert.Equal(t, resp[0].ClientEndpoint, []string{"localhost:13560"})
842 deltrans := xappConn1.SendSubsDelReq(t, nil, e2SubsId)
843 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
845 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
846 xappConn1.RecvSubsDelResp(t, deltrans)
848 //Wait that subs is cleaned
849 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
851 xappConn1.TestMsgChanEmpty(t)
852 xappConn2.TestMsgChanEmpty(t)
853 e2termConn1.TestMsgChanEmpty(t)
854 mainCtrl.wait_registry_empty(t, 10)
856 mainCtrl.VerifyCounterValues(t)
859 //-----------------------------------------------------------------------------
860 // TestSubReqRetransmission
863 // +-------+ +---------+ +---------+
864 // | xapp | | submgr | | e2term |
865 // +-------+ +---------+ +---------+
868 // |------------->| |
871 // | |------------->|
875 // |------------->| |
878 // | |<-------------|
881 // |<-------------| |
886 //-----------------------------------------------------------------------------
887 func TestSubReqRetransmission(t *testing.T) {
888 CaseBegin("TestSubReqRetransmission")
891 cretrans := xappConn1.SendSubsReq(t, nil, nil)
892 crereq, cremsg := e2termConn1.RecvSubsReq(t)
894 seqBef := mainCtrl.get_msgcounter(t)
895 xappConn1.SendSubsReq(t, nil, cretrans) //Retransmitted SubReq
896 mainCtrl.wait_msgcounter_change(t, seqBef, 10)
898 // hack as there is no real way to see has message be handled.
899 // Previuos counter check just tells that is has been received by submgr
900 // --> artificial delay
901 <-time.After(1 * time.Second)
902 e2termConn1.SendSubsResp(t, crereq, cremsg)
903 e2SubsId := xappConn1.RecvSubsResp(t, cretrans)
906 deltrans := xappConn1.SendSubsDelReq(t, nil, e2SubsId)
907 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
908 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
909 xappConn1.RecvSubsDelResp(t, deltrans)
911 //Wait that subs is cleaned
912 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
914 xappConn1.TestMsgChanEmpty(t)
915 xappConn2.TestMsgChanEmpty(t)
916 e2termConn1.TestMsgChanEmpty(t)
917 mainCtrl.wait_registry_empty(t, 10)
920 //-----------------------------------------------------------------------------
921 // TestSubDelReqRetransmission
924 // +-------+ +---------+ +---------+
925 // | xapp | | submgr | | e2term |
926 // +-------+ +---------+ +---------+
932 // |------------->| |
935 // | |------------->|
940 // |------------->| |
943 // | |<-------------|
946 // |<-------------| |
948 //-----------------------------------------------------------------------------
949 func TestSubDelReqRetransmission(t *testing.T) {
950 CaseBegin("TestSubDelReqRetransmission")
953 cretrans := xappConn1.SendSubsReq(t, nil, nil)
954 crereq, cremsg := e2termConn1.RecvSubsReq(t)
955 e2termConn1.SendSubsResp(t, crereq, cremsg)
956 e2SubsId := xappConn1.RecvSubsResp(t, cretrans)
959 deltrans := xappConn1.SendSubsDelReq(t, nil, e2SubsId)
960 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
962 seqBef := mainCtrl.get_msgcounter(t)
963 xappConn1.SendSubsDelReq(t, deltrans, e2SubsId) //Retransmitted SubDelReq
964 mainCtrl.wait_msgcounter_change(t, seqBef, 10)
966 // hack as there is no real way to see has message be handled.
967 // Previuos counter check just tells that is has been received by submgr
968 // --> artificial delay
969 <-time.After(1 * time.Second)
971 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
972 xappConn1.RecvSubsDelResp(t, deltrans)
974 //Wait that subs is cleaned
975 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
977 xappConn1.TestMsgChanEmpty(t)
978 xappConn2.TestMsgChanEmpty(t)
979 e2termConn1.TestMsgChanEmpty(t)
980 mainCtrl.wait_registry_empty(t, 10)
983 //-----------------------------------------------------------------------------
984 // TestSubDelReqCollision
987 // +-------+ +---------+ +---------+
988 // | xapp | | submgr | | e2term |
989 // +-------+ +---------+ +---------+
995 // |------------->| |
998 // | |------------->|
1000 // | SubDelReq 2 | |
1003 // |------------->| |
1005 // | | SubDelResp 1 |
1006 // | |<-------------|
1008 // | SubDelResp 1 | |
1009 // |<-------------| |
1011 // | SubDelResp 2 | |
1012 // |<-------------| |
1014 //-----------------------------------------------------------------------------
1016 func TestSubDelReqCollision(t *testing.T) {
1017 CaseBegin("TestSubDelReqCollision")
1020 cretrans := xappConn1.SendSubsReq(t, nil, nil)
1021 crereq, cremsg := e2termConn1.RecvSubsReq(t)
1022 e2termConn1.SendSubsResp(t, crereq, cremsg)
1023 e2SubsId := xappConn1.RecvSubsResp(t, cretrans)
1026 xappConn1.SendSubsDelReq(t, nil, e2SubsId)
1027 delreq1, delmsg1 := e2termConn1.RecvSubsDelReq(t)
1029 // Subs Delete colliding
1030 seqBef := mainCtrl.get_msgcounter(t)
1031 deltranscol2 := xappConn1.NewRmrTransactionId("", "RAN_NAME_1")
1032 xappConn1.SendSubsDelReq(t, deltranscol2, e2SubsId) //Colliding SubDelReq
1033 mainCtrl.wait_msgcounter_change(t, seqBef, 10)
1035 // hack as there is no real way to see has message be handled.
1036 // Previuos counter check just tells that is has been received by submgr
1037 // --> artificial delay
1038 <-time.After(1 * time.Second)
1040 // Del resp for first and second
1041 e2termConn1.SendSubsDelResp(t, delreq1, delmsg1)
1043 // don't care in which order responses are received
1044 xappConn1.RecvSubsDelResp(t, nil)
1045 xappConn1.RecvSubsDelResp(t, nil)
1047 //Wait that subs is cleaned
1048 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
1050 xappConn1.TestMsgChanEmpty(t)
1051 xappConn2.TestMsgChanEmpty(t)
1052 e2termConn1.TestMsgChanEmpty(t)
1053 mainCtrl.wait_registry_empty(t, 10)
1056 //-----------------------------------------------------------------------------
1057 // TestSubReqAndSubDelOkTwoParallel
1060 // +-------+ +-------+ +---------+ +---------+
1061 // | xapp | | xapp | | submgr | | e2term |
1062 // +-------+ +-------+ +---------+ +---------+
1067 // | |------------->| |
1070 // | | |------------->|
1073 // |------------------------>| |
1076 // | | |------------->|
1079 // | | |<-------------|
1081 // | |<-------------| |
1084 // | | |<-------------|
1086 // |<------------------------| |
1088 // | | [SUBS 1 DELETE] |
1090 // | | [SUBS 2 DELETE] |
1093 //-----------------------------------------------------------------------------
1095 func TestSubReqAndSubDelOkTwoParallel(t *testing.T) {
1096 CaseBegin("TestSubReqAndSubDelOkTwoParallel")
1099 rparams1 := &teststube2ap.E2StubSubsReqParams{}
1101 cretrans1 := xappConn1.SendSubsReq(t, rparams1, nil)
1102 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
1105 rparams2 := &teststube2ap.E2StubSubsReqParams{}
1108 rparams2.Req.EventTriggerDefinition.Data.Length = 1
1109 rparams2.Req.EventTriggerDefinition.Data.Data = make([]uint8, rparams2.Req.EventTriggerDefinition.Data.Length)
1110 rparams2.Req.EventTriggerDefinition.Data.Data[0] = 2
1112 cretrans2 := xappConn2.SendSubsReq(t, rparams2, nil)
1113 crereq2, cremsg2 := e2termConn1.RecvSubsReq(t)
1116 e2termConn1.SendSubsResp(t, crereq1, cremsg1)
1117 e2SubsId1 := xappConn1.RecvSubsResp(t, cretrans1)
1120 e2termConn1.SendSubsResp(t, crereq2, cremsg2)
1121 e2SubsId2 := xappConn2.RecvSubsResp(t, cretrans2)
1124 deltrans1 := xappConn1.SendSubsDelReq(t, nil, e2SubsId1)
1125 delreq1, delmsg1 := e2termConn1.RecvSubsDelReq(t)
1126 e2termConn1.SendSubsDelResp(t, delreq1, delmsg1)
1127 xappConn1.RecvSubsDelResp(t, deltrans1)
1128 //Wait that subs is cleaned
1129 mainCtrl.wait_subs_clean(t, e2SubsId1, 10)
1132 deltrans2 := xappConn2.SendSubsDelReq(t, nil, e2SubsId2)
1133 delreq2, delmsg2 := e2termConn1.RecvSubsDelReq(t)
1134 e2termConn1.SendSubsDelResp(t, delreq2, delmsg2)
1135 xappConn2.RecvSubsDelResp(t, deltrans2)
1136 //Wait that subs is cleaned
1137 mainCtrl.wait_subs_clean(t, e2SubsId2, 10)
1139 xappConn1.TestMsgChanEmpty(t)
1140 xappConn2.TestMsgChanEmpty(t)
1141 e2termConn1.TestMsgChanEmpty(t)
1142 mainCtrl.wait_registry_empty(t, 10)
1145 //-----------------------------------------------------------------------------
1146 // TestSameSubsDiffRan
1147 // Same subscription to different RANs
1150 // +-------+ +---------+ +---------+
1151 // | xapp | | submgr | | e2term |
1152 // +-------+ +---------+ +---------+
1157 // |------------->| |
1160 // | |------------->|
1162 // | | SubResp(r1) |
1163 // | |<-------------|
1165 // | SubResp(r1) | |
1166 // |<-------------| |
1169 // |------------->| |
1172 // | |------------->|
1174 // | | SubResp(r2) |
1175 // | |<-------------|
1177 // | SubResp(r2) | |
1178 // |<-------------| |
1180 // | [SUBS r1 DELETE] |
1182 // | [SUBS r2 DELETE] |
1185 //-----------------------------------------------------------------------------
1186 func TestSameSubsDiffRan(t *testing.T) {
1187 CaseBegin("TestSameSubsDiffRan")
1190 cretrans1 := xappConn1.NewRmrTransactionId("", "RAN_NAME_1")
1191 xappConn1.SendSubsReq(t, nil, cretrans1)
1192 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
1193 e2termConn1.SendSubsResp(t, crereq1, cremsg1)
1194 e2SubsId1 := xappConn1.RecvSubsResp(t, cretrans1)
1197 cretrans2 := xappConn1.NewRmrTransactionId("", "RAN_NAME_2")
1198 xappConn1.SendSubsReq(t, nil, cretrans2)
1199 crereq2, cremsg2 := e2termConn1.RecvSubsReq(t)
1200 e2termConn1.SendSubsResp(t, crereq2, cremsg2)
1201 e2SubsId2 := xappConn1.RecvSubsResp(t, cretrans2)
1204 deltrans1 := xappConn1.NewRmrTransactionId("", "RAN_NAME_1")
1205 xappConn1.SendSubsDelReq(t, deltrans1, e2SubsId1)
1206 delreq1, delmsg1 := e2termConn1.RecvSubsDelReq(t)
1207 e2termConn1.SendSubsDelResp(t, delreq1, delmsg1)
1208 xappConn1.RecvSubsDelResp(t, deltrans1)
1209 //Wait that subs is cleaned
1210 mainCtrl.wait_subs_clean(t, e2SubsId1, 10)
1213 deltrans2 := xappConn1.NewRmrTransactionId("", "RAN_NAME_2")
1214 xappConn1.SendSubsDelReq(t, deltrans2, e2SubsId2)
1215 delreq2, delmsg2 := e2termConn1.RecvSubsDelReq(t)
1216 e2termConn1.SendSubsDelResp(t, delreq2, delmsg2)
1217 xappConn1.RecvSubsDelResp(t, deltrans2)
1218 //Wait that subs is cleaned
1219 mainCtrl.wait_subs_clean(t, e2SubsId2, 10)
1221 xappConn1.TestMsgChanEmpty(t)
1222 xappConn2.TestMsgChanEmpty(t)
1223 e2termConn1.TestMsgChanEmpty(t)
1224 mainCtrl.wait_registry_empty(t, 10)
1227 //-----------------------------------------------------------------------------
1228 // TestSubReqRetryInSubmgr
1231 // +-------+ +---------+ +---------+
1232 // | xapp | | submgr | | e2term |
1233 // +-------+ +---------+ +---------+
1236 // |------------->| |
1239 // | |------------->|
1243 // | |------------->|
1246 // | |<-------------|
1249 // |<-------------| |
1251 // | [SUBS DELETE] |
1254 //-----------------------------------------------------------------------------
1256 func TestSubReqRetryInSubmgr(t *testing.T) {
1257 CaseBegin("TestSubReqRetryInSubmgr start")
1259 // Init counter check
1260 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
1261 Counter{cSubReqFromXapp, 1},
1262 Counter{cSubReqToE2, 1},
1263 Counter{cSubReReqToE2, 1},
1264 Counter{cSubRespFromE2, 1},
1265 Counter{cSubRespToXapp, 1},
1266 Counter{cSubDelReqFromXapp, 1},
1267 Counter{cSubDelReqToE2, 1},
1268 Counter{cSubDelRespFromE2, 1},
1269 Counter{cSubDelRespToXapp, 1},
1272 // Xapp: Send SubsReq
1273 cretrans := xappConn1.SendSubsReq(t, nil, nil)
1275 // E2t: Receive 1st SubsReq
1276 e2termConn1.RecvSubsReq(t)
1278 // E2t: Receive 2nd SubsReq and send SubsResp
1279 crereq, cremsg := e2termConn1.RecvSubsReq(t)
1280 e2termConn1.SendSubsResp(t, crereq, cremsg)
1282 // Xapp: Receive SubsResp
1283 e2SubsId := xappConn1.RecvSubsResp(t, cretrans)
1285 deltrans := xappConn1.SendSubsDelReq(t, nil, e2SubsId)
1286 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
1287 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
1288 xappConn1.RecvSubsDelResp(t, deltrans)
1290 // Wait that subs is cleaned
1291 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
1293 xappConn1.TestMsgChanEmpty(t)
1294 xappConn2.TestMsgChanEmpty(t)
1295 e2termConn1.TestMsgChanEmpty(t)
1296 mainCtrl.wait_registry_empty(t, 10)
1298 mainCtrl.VerifyCounterValues(t)
1301 //-----------------------------------------------------------------------------
1302 // TestSubReqTwoRetriesNoRespSubDelRespInSubmgr
1305 // +-------+ +---------+ +---------+
1306 // | xapp | | submgr | | e2term |
1307 // +-------+ +---------+ +---------+
1310 // |------------->| |
1313 // | |------------->|
1317 // | |------------->|
1320 // | |------------->|
1323 // | |<-------------|
1326 //-----------------------------------------------------------------------------
1327 func TestSubReqRetryNoRespSubDelRespInSubmgr(t *testing.T) {
1328 CaseBegin("TestSubReqTwoRetriesNoRespSubDelRespInSubmgr start")
1330 // Init counter check
1331 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
1332 Counter{cSubReqFromXapp, 1},
1333 Counter{cSubReqToE2, 1},
1334 Counter{cSubReReqToE2, 1},
1335 Counter{cSubReqTimerExpiry, 2},
1336 Counter{cSubDelReqToE2, 1},
1337 Counter{cSubDelRespFromE2, 1},
1340 // Xapp: Send SubsReq
1341 xappConn1.SendSubsReq(t, nil, nil)
1343 // E2t: Receive 1st SubsReq
1344 e2termConn1.RecvSubsReq(t)
1346 // E2t: Receive 2nd SubsReq
1347 e2termConn1.RecvSubsReq(t)
1349 // E2t: Send receive SubsDelReq and send SubsResp
1350 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
1351 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
1353 // Wait that subs is cleaned
1354 mainCtrl.wait_subs_clean(t, delreq.RequestId.InstanceId, 10)
1356 xappConn1.TestMsgChanEmpty(t)
1357 xappConn2.TestMsgChanEmpty(t)
1358 e2termConn1.TestMsgChanEmpty(t)
1359 mainCtrl.wait_registry_empty(t, 10)
1361 mainCtrl.VerifyCounterValues(t)
1364 //-----------------------------------------------------------------------------
1365 // TestSubReqTwoRetriesNoRespAtAllInSubmgr
1368 // +-------+ +---------+ +---------+
1369 // | xapp | | submgr | | e2term |
1370 // +-------+ +---------+ +---------+
1373 // |------------->| |
1376 // | |------------->|
1380 // | |------------->|
1383 // | |------------->|
1387 // | |------------->|
1391 //-----------------------------------------------------------------------------
1393 func TestSubReqTwoRetriesNoRespAtAllInSubmgr(t *testing.T) {
1394 CaseBegin("TestSubReqTwoRetriesNoRespAtAllInSubmgr start")
1396 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
1397 Counter{cSubReqFromXapp, 1},
1398 Counter{cSubReqToE2, 1},
1399 Counter{cSubReReqToE2, 1},
1400 Counter{cSubReqTimerExpiry, 2},
1401 Counter{cSubDelReqToE2, 1},
1402 Counter{cSubDelReReqToE2, 1},
1403 Counter{cSubDelReqTimerExpiry, 2},
1406 // Xapp: Send SubsReq
1407 xappConn1.SendSubsReq(t, nil, nil)
1409 // E2t: Receive 1st SubsReq
1410 e2termConn1.RecvSubsReq(t)
1412 // E2t: Receive 2nd SubsReq
1413 e2termConn1.RecvSubsReq(t)
1415 // E2t: Receive 1st SubsDelReq
1416 e2termConn1.RecvSubsDelReq(t)
1418 // E2t: Receive 2nd SubsDelReq
1419 delreq, _ := e2termConn1.RecvSubsDelReq(t)
1421 // Wait that subs is cleaned
1422 mainCtrl.wait_subs_clean(t, delreq.RequestId.InstanceId, 15)
1424 xappConn1.TestMsgChanEmpty(t)
1425 xappConn2.TestMsgChanEmpty(t)
1426 e2termConn1.TestMsgChanEmpty(t)
1427 mainCtrl.wait_registry_empty(t, 10)
1429 mainCtrl.VerifyCounterValues(t)
1432 //-----------------------------------------------------------------------------
1433 // TestSubReqSubFailRespInSubmgr
1436 // +-------+ +---------+ +---------+
1437 // | xapp | | submgr | | e2term |
1438 // +-------+ +---------+ +---------+
1441 // |------------->| |
1444 // | |------------->|
1447 // | |<-------------|
1450 // | |------------->|
1453 // | |<-------------|
1456 // |<-------------| |
1459 //-----------------------------------------------------------------------------
1461 func TestSubReqSubFailRespInSubmgr(t *testing.T) {
1462 CaseBegin("TestSubReqSubFailRespInSubmgr start")
1464 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
1465 Counter{cSubReqFromXapp, 1},
1466 Counter{cSubReqToE2, 1},
1467 Counter{cSubFailFromE2, 1},
1468 Counter{cSubFailToXapp, 1},
1471 // Xapp: Send SubsReq
1472 cretrans := xappConn1.SendSubsReq(t, nil, nil)
1474 // E2t: Receive SubsReq and send SubsFail (first)
1475 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
1476 fparams1 := &teststube2ap.E2StubSubsFailParams{}
1477 fparams1.Set(crereq1)
1478 e2termConn1.SendSubsFail(t, fparams1, cremsg1)
1480 // E2t: Receive SubsDelReq and send SubsDelResp (internal first)
1481 delreq1, delmsg1 := e2termConn1.RecvSubsDelReq(t)
1482 e2termConn1.SendSubsDelResp(t, delreq1, delmsg1)
1484 // Xapp: Receive SubsFail
1485 e2SubsId := xappConn1.RecvSubsFail(t, cretrans)
1487 // Wait that subs is cleaned
1488 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
1490 xappConn1.TestMsgChanEmpty(t)
1491 xappConn2.TestMsgChanEmpty(t)
1492 e2termConn1.TestMsgChanEmpty(t)
1493 mainCtrl.wait_registry_empty(t, 10)
1495 mainCtrl.VerifyCounterValues(t)
1498 //-----------------------------------------------------------------------------
1499 // TestSubDelReqRetryInSubmgr
1502 // +-------+ +---------+ +---------+
1503 // | xapp | | submgr | | e2term |
1504 // +-------+ +---------+ +---------+
1506 // | [SUBS CREATE] |
1510 // |------------->| |
1513 // | |------------->|
1516 // | |------------->|
1519 // | |<-------------|
1522 // |<-------------| |
1524 //-----------------------------------------------------------------------------
1526 func TestSubDelReqRetryInSubmgr(t *testing.T) {
1528 CaseBegin("TestSubDelReqRetryInSubmgr start")
1531 cretrans := xappConn1.SendSubsReq(t, nil, nil)
1532 crereq, cremsg := e2termConn1.RecvSubsReq(t)
1533 e2termConn1.SendSubsResp(t, crereq, cremsg)
1534 e2SubsId := xappConn1.RecvSubsResp(t, cretrans)
1537 // Xapp: Send SubsDelReq
1538 deltrans := xappConn1.SendSubsDelReq(t, nil, e2SubsId)
1540 // E2t: Receive 1st SubsDelReq
1541 e2termConn1.RecvSubsDelReq(t)
1543 // E2t: Receive 2nd SubsDelReq and send SubsDelResp
1544 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
1545 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
1547 // Xapp: Receive SubsDelResp
1548 xappConn1.RecvSubsDelResp(t, deltrans)
1550 // Wait that subs is cleaned
1551 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
1553 xappConn1.TestMsgChanEmpty(t)
1554 xappConn2.TestMsgChanEmpty(t)
1555 e2termConn1.TestMsgChanEmpty(t)
1556 mainCtrl.wait_registry_empty(t, 10)
1559 //-----------------------------------------------------------------------------
1560 // TestSubDelReqTwoRetriesNoRespInSubmgr
1563 // +-------+ +---------+ +---------+
1564 // | xapp | | submgr | | e2term |
1565 // +-------+ +---------+ +---------+
1567 // | [SUBS CREATE] |
1571 // |------------->| |
1574 // | |------------->|
1577 // | |------------->|
1581 // |<-------------| |
1583 //-----------------------------------------------------------------------------
1585 func TestSubDelReqTwoRetriesNoRespInSubmgr(t *testing.T) {
1587 CaseBegin("TestSubDelReTwoRetriesNoRespInSubmgr start")
1590 cretrans := xappConn1.SendSubsReq(t, nil, nil)
1591 crereq, cremsg := e2termConn1.RecvSubsReq(t)
1592 e2termConn1.SendSubsResp(t, crereq, cremsg)
1593 e2SubsId := xappConn1.RecvSubsResp(t, cretrans)
1596 // Xapp: Send SubsDelReq
1597 deltrans := xappConn1.SendSubsDelReq(t, nil, e2SubsId)
1599 // E2t: Receive 1st SubsDelReq
1600 e2termConn1.RecvSubsDelReq(t)
1602 // E2t: Receive 2nd SubsDelReq
1603 e2termConn1.RecvSubsDelReq(t)
1605 // Xapp: Receive SubsDelResp
1606 xappConn1.RecvSubsDelResp(t, deltrans)
1608 // Wait that subs is cleaned
1609 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
1611 xappConn1.TestMsgChanEmpty(t)
1612 xappConn2.TestMsgChanEmpty(t)
1613 e2termConn1.TestMsgChanEmpty(t)
1614 mainCtrl.wait_registry_empty(t, 10)
1617 //-----------------------------------------------------------------------------
1618 // TestSubDelReqSubDelFailRespInSubmgr
1621 // +-------+ +---------+ +---------+
1622 // | xapp | | submgr | | e2term |
1623 // +-------+ +---------+ +---------+
1625 // | [SUBS CREATE] |
1629 // |------------->| |
1632 // | |------------->|
1635 // | |<-------------|
1638 // |<-------------| |
1641 //-----------------------------------------------------------------------------
1643 func TestSubDelReqSubDelFailRespInSubmgr(t *testing.T) {
1644 CaseBegin("TestSubReqSubDelFailRespInSubmgr start")
1646 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
1647 Counter{cSubReqFromXapp, 1},
1648 Counter{cSubReqToE2, 1},
1649 Counter{cSubRespFromE2, 1},
1650 Counter{cSubRespToXapp, 1},
1651 Counter{cSubDelReqFromXapp, 1},
1652 Counter{cSubDelReqToE2, 1},
1653 Counter{cSubDelFailFromE2, 1},
1654 Counter{cSubDelRespToXapp, 1},
1658 cretrans := xappConn1.SendSubsReq(t, nil, nil)
1659 crereq, cremsg := e2termConn1.RecvSubsReq(t)
1660 e2termConn1.SendSubsResp(t, crereq, cremsg)
1661 e2SubsId := xappConn1.RecvSubsResp(t, cretrans)
1663 // Xapp: Send SubsDelReq
1664 deltrans := xappConn1.SendSubsDelReq(t, nil, e2SubsId)
1666 // E2t: Send receive SubsDelReq and send SubsDelFail
1667 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
1668 e2termConn1.SendSubsDelFail(t, delreq, delmsg)
1670 // Xapp: Receive SubsDelResp
1671 xappConn1.RecvSubsDelResp(t, deltrans)
1673 // Wait that subs is cleaned
1674 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
1676 xappConn1.TestMsgChanEmpty(t)
1677 xappConn2.TestMsgChanEmpty(t)
1678 e2termConn1.TestMsgChanEmpty(t)
1679 mainCtrl.wait_registry_empty(t, 10)
1681 mainCtrl.VerifyCounterValues(t)
1684 //-----------------------------------------------------------------------------
1685 // TestSubReqAndSubDelOkSameAction
1688 // +-------+ +-------+ +---------+ +---------+
1689 // | xapp2 | | xapp1 | | submgr | | e2term |
1690 // +-------+ +-------+ +---------+ +---------+
1695 // | |------------->| |
1698 // | | |------------->|
1700 // | | |<-------------|
1702 // | |<-------------| |
1705 // |--------------------------->| |
1708 // |<---------------------------| |
1710 // | | SubDelReq 1 | |
1711 // | |------------->| |
1713 // | | SubDelResp 1 | |
1714 // | |<-------------| |
1716 // | SubDelReq 2 | |
1717 // |--------------------------->| |
1719 // | | | SubDelReq 2 |
1720 // | | |------------->|
1722 // | | | SubDelReq 2 |
1723 // | | |------------->|
1725 // | SubDelResp 2 | |
1726 // |<---------------------------| |
1728 //-----------------------------------------------------------------------------
1729 func TestSubReqAndSubDelOkSameAction(t *testing.T) {
1730 CaseBegin("TestSubReqAndSubDelOkSameAction")
1732 // Init counter check
1733 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
1734 Counter{cSubReqFromXapp, 2},
1735 Counter{cSubReqToE2, 1},
1736 Counter{cSubRespFromE2, 1},
1737 Counter{cSubRespToXapp, 2},
1738 Counter{cMergedSubscriptions, 1},
1739 Counter{cUnmergedSubscriptions, 1},
1740 Counter{cSubDelReqFromXapp, 2},
1741 Counter{cSubDelReqToE2, 1},
1742 Counter{cSubDelRespFromE2, 1},
1743 Counter{cSubDelRespToXapp, 2},
1747 rparams1 := &teststube2ap.E2StubSubsReqParams{}
1749 cretrans1 := xappConn1.SendSubsReq(t, rparams1, nil)
1750 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
1751 e2termConn1.SendSubsResp(t, crereq1, cremsg1)
1752 e2SubsId1 := xappConn1.RecvSubsResp(t, cretrans1)
1755 rparams2 := &teststube2ap.E2StubSubsReqParams{}
1757 cretrans2 := xappConn2.SendSubsReq(t, rparams2, nil)
1758 //crereq2, cremsg2 := e2termConn1.RecvSubsReq(t)
1759 //e2termConn1.SendSubsResp(t, crereq2, cremsg2)
1760 e2SubsId2 := xappConn2.RecvSubsResp(t, cretrans2)
1762 resp, _ := xapp.Subscription.QuerySubscriptions()
1763 assert.Equal(t, resp[0].SubscriptionID, int64(e2SubsId1))
1764 assert.Equal(t, resp[0].Meid, "RAN_NAME_1")
1765 assert.Equal(t, resp[0].ClientEndpoint, []string{"localhost:13560", "localhost:13660"})
1768 deltrans1 := xappConn1.SendSubsDelReq(t, nil, e2SubsId1)
1769 //e2termConn1.RecvSubsDelReq(t)
1770 //e2termConn1.SendSubsDelResp(t, delreq1, delmsg1)
1771 xappConn1.RecvSubsDelResp(t, deltrans1)
1772 //Wait that subs is cleaned
1773 //mainCtrl.wait_subs_clean(t, e2SubsId1, 10)
1776 deltrans2 := xappConn2.SendSubsDelReq(t, nil, e2SubsId2)
1777 delreq2, delmsg2 := e2termConn1.RecvSubsDelReq(t)
1778 e2termConn1.SendSubsDelResp(t, delreq2, delmsg2)
1779 xappConn2.RecvSubsDelResp(t, deltrans2)
1780 //Wait that subs is cleaned
1781 mainCtrl.wait_subs_clean(t, e2SubsId2, 10)
1783 xappConn1.TestMsgChanEmpty(t)
1784 xappConn2.TestMsgChanEmpty(t)
1785 e2termConn1.TestMsgChanEmpty(t)
1786 mainCtrl.wait_registry_empty(t, 10)
1788 mainCtrl.VerifyCounterValues(t)
1791 //-----------------------------------------------------------------------------
1792 // TestSubReqAndSubDelOkSameActionParallel
1795 // +-------+ +-------+ +---------+ +---------+
1796 // | xapp2 | | xapp1 | | submgr | | e2term |
1797 // +-------+ +-------+ +---------+ +---------+
1802 // | |------------->| |
1805 // | | |------------->|
1807 // |--------------------------->| |
1809 // | | |<-------------|
1811 // | |<-------------| |
1814 // |<---------------------------| |
1816 // | | SubDelReq 1 | |
1817 // | |------------->| |
1819 // | | SubDelResp 1 | |
1820 // | |<-------------| |
1822 // | SubDelReq 2 | |
1823 // |--------------------------->| |
1825 // | | | SubDelReq 2 |
1826 // | | |------------->|
1828 // | | | SubDelReq 2 |
1829 // | | |------------->|
1831 // | SubDelResp 2 | |
1832 // |<---------------------------| |
1834 //-----------------------------------------------------------------------------
1835 func TestSubReqAndSubDelOkSameActionParallel(t *testing.T) {
1836 CaseBegin("TestSubReqAndSubDelOkSameActionParallel")
1839 rparams1 := &teststube2ap.E2StubSubsReqParams{}
1841 cretrans1 := xappConn1.SendSubsReq(t, rparams1, nil)
1842 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
1845 rparams2 := &teststube2ap.E2StubSubsReqParams{}
1847 cretrans2 := xappConn2.SendSubsReq(t, rparams2, nil)
1850 e2termConn1.SendSubsResp(t, crereq1, cremsg1)
1851 e2SubsId1 := xappConn1.RecvSubsResp(t, cretrans1)
1854 e2SubsId2 := xappConn2.RecvSubsResp(t, cretrans2)
1857 deltrans1 := xappConn1.SendSubsDelReq(t, nil, e2SubsId1)
1858 xappConn1.RecvSubsDelResp(t, deltrans1)
1861 deltrans2 := xappConn2.SendSubsDelReq(t, nil, e2SubsId2)
1862 delreq2, delmsg2 := e2termConn1.RecvSubsDelReq(t)
1863 e2termConn1.SendSubsDelResp(t, delreq2, delmsg2)
1864 xappConn2.RecvSubsDelResp(t, deltrans2)
1866 //Wait that subs is cleaned
1867 mainCtrl.wait_subs_clean(t, e2SubsId2, 10)
1869 xappConn1.TestMsgChanEmpty(t)
1870 xappConn2.TestMsgChanEmpty(t)
1871 e2termConn1.TestMsgChanEmpty(t)
1872 mainCtrl.wait_registry_empty(t, 10)
1875 //-----------------------------------------------------------------------------
1876 // TestSubReqAndSubDelNokSameActionParallel
1879 // +-------+ +-------+ +---------+ +---------+
1880 // | xapp2 | | xapp1 | | submgr | | e2term |
1881 // +-------+ +-------+ +---------+ +---------+
1886 // | |------------->| |
1889 // | | |------------->|
1891 // |--------------------------->| |
1893 // | | |<-------------|
1895 // | | | SubDelReq |
1896 // | | |------------->|
1897 // | | | SubDelResp |
1898 // | | |<-------------|
1901 // | |<-------------| |
1904 // |<---------------------------| |
1906 //-----------------------------------------------------------------------------
1907 func TestSubReqAndSubDelNokSameActionParallel(t *testing.T) {
1908 CaseBegin("TestSubReqAndSubDelNokSameActionParallel")
1911 rparams1 := &teststube2ap.E2StubSubsReqParams{}
1913 cretrans1 := xappConn1.SendSubsReq(t, rparams1, nil)
1915 // E2t: Receive SubsReq (first)
1916 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
1919 rparams2 := &teststube2ap.E2StubSubsReqParams{}
1921 subepcnt2 := mainCtrl.get_subs_entrypoint_cnt(t, crereq1.RequestId.InstanceId)
1922 cretrans2 := xappConn2.SendSubsReq(t, rparams2, nil)
1923 mainCtrl.wait_subs_entrypoint_cnt_change(t, crereq1.RequestId.InstanceId, subepcnt2, 10)
1925 // E2t: send SubsFail (first)
1926 fparams1 := &teststube2ap.E2StubSubsFailParams{}
1927 fparams1.Set(crereq1)
1928 e2termConn1.SendSubsFail(t, fparams1, cremsg1)
1930 // E2t: internal delete
1931 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
1932 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
1935 e2SubsId1 := xappConn1.RecvSubsFail(t, cretrans1)
1937 xappConn2.RecvSubsFail(t, cretrans2)
1939 //Wait that subs is cleaned
1940 mainCtrl.wait_subs_clean(t, e2SubsId1, 15)
1942 xappConn1.TestMsgChanEmpty(t)
1943 xappConn2.TestMsgChanEmpty(t)
1944 e2termConn1.TestMsgChanEmpty(t)
1945 mainCtrl.wait_registry_empty(t, 10)
1948 //-----------------------------------------------------------------------------
1949 // TestSubReqAndSubDelNoAnswerSameActionParallel
1952 // +-------+ +-------+ +---------+ +---------+
1953 // | xapp2 | | xapp1 | | submgr | | e2term |
1954 // +-------+ +-------+ +---------+ +---------+
1959 // | |------------->| |
1962 // | | |------------->|
1964 // |--------------------------->| |
1967 // | | |------------->|
1970 // | | | SubDelReq |
1971 // | | |------------->|
1973 // | | | SubDelResp |
1974 // | | |<-------------|
1976 //-----------------------------------------------------------------------------
1977 func TestSubReqAndSubDelNoAnswerSameActionParallel(t *testing.T) {
1978 CaseBegin("TestSubReqAndSubDelNoAnswerSameActionParallel")
1981 rparams1 := &teststube2ap.E2StubSubsReqParams{}
1983 xappConn1.SendSubsReq(t, rparams1, nil)
1985 crereq1, _ := e2termConn1.RecvSubsReq(t)
1988 rparams2 := &teststube2ap.E2StubSubsReqParams{}
1990 subepcnt2 := mainCtrl.get_subs_entrypoint_cnt(t, crereq1.RequestId.InstanceId)
1991 xappConn2.SendSubsReq(t, rparams2, nil)
1992 mainCtrl.wait_subs_entrypoint_cnt_change(t, crereq1.RequestId.InstanceId, subepcnt2, 10)
1994 //Req1 (retransmitted)
1995 e2termConn1.RecvSubsReq(t)
1997 delreq1, delmsg1 := e2termConn1.RecvSubsDelReq(t)
1998 e2termConn1.SendSubsDelResp(t, delreq1, delmsg1)
2000 //Wait that subs is cleaned
2001 mainCtrl.wait_subs_clean(t, delreq1.RequestId.InstanceId, 10)
2003 xappConn1.TestMsgChanEmpty(t)
2004 xappConn2.TestMsgChanEmpty(t)
2005 e2termConn1.TestMsgChanEmpty(t)
2006 mainCtrl.wait_registry_empty(t, 15)
2009 //----------------------------- Policy cases ---------------------------------
2010 //-----------------------------------------------------------------------------
2011 // TestSubReqPolicyAndSubDelOk
2014 // +-------+ +---------+ +---------+
2015 // | xapp | | submgr | | e2term |
2016 // +-------+ +---------+ +---------+
2019 // |------------->| |
2022 // | |------------->|
2025 // | |<-------------|
2028 // |<-------------| |
2032 // |------------->| |
2035 // | |------------->|
2038 // | |<-------------|
2041 // |<-------------| |
2043 //-----------------------------------------------------------------------------
2044 func TestSubReqPolicyAndSubDelOk(t *testing.T) {
2045 CaseBegin("TestSubReqAndSubDelOk")
2047 rparams1 := &teststube2ap.E2StubSubsReqParams{}
2049 rparams1.Req.ActionSetups[0].ActionType = e2ap.E2AP_ActionTypePolicy
2050 cretrans := xappConn1.SendSubsReq(t, rparams1, nil)
2052 crereq, cremsg := e2termConn1.RecvSubsReq(t)
2053 e2termConn1.SendSubsResp(t, crereq, cremsg)
2054 e2SubsId := xappConn1.RecvSubsResp(t, cretrans)
2055 deltrans := xappConn1.SendSubsDelReq(t, nil, e2SubsId)
2056 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
2058 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
2059 xappConn1.RecvSubsDelResp(t, deltrans)
2061 //Wait that subs is cleaned
2062 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
2064 xappConn1.TestMsgChanEmpty(t)
2065 xappConn2.TestMsgChanEmpty(t)
2066 e2termConn1.TestMsgChanEmpty(t)
2067 mainCtrl.wait_registry_empty(t, 10)
2070 //-----------------------------------------------------------------------------
2071 // TestSubReqPolicyChangeAndSubDelOk
2074 // +-------+ +---------+ +---------+
2075 // | xapp | | submgr | | e2term |
2076 // +-------+ +---------+ +---------+
2079 // |------------->| |
2082 // | |------------->|
2085 // | |<-------------|
2088 // |<-------------| |
2091 // |------------->| |
2094 // | |------------->|
2097 // | |<-------------|
2100 // |<-------------| |
2103 // |------------->| |
2106 // | |------------->|
2109 // | |<-------------|
2112 // |<-------------| |
2114 //-----------------------------------------------------------------------------
2116 func TestSubReqPolicyChangeAndSubDelOk(t *testing.T) {
2117 CaseBegin("TestSubReqAndSubDelOk")
2119 rparams1 := &teststube2ap.E2StubSubsReqParams{}
2121 rparams1.Req.ActionSetups[0].ActionType = e2ap.E2AP_ActionTypePolicy
2122 cretrans := xappConn1.SendSubsReq(t, rparams1, nil)
2124 crereq, cremsg := e2termConn1.RecvSubsReq(t)
2125 e2termConn1.SendSubsResp(t, crereq, cremsg)
2126 e2SubsId := xappConn1.RecvSubsResp(t, cretrans)
2129 rparams1.Req.RequestId.InstanceId = e2SubsId
2130 rparams1.Req.ActionSetups[0].SubsequentAction.TimetoWait = e2ap.E2AP_TimeToWaitW200ms
2131 xappConn1.SendSubsReq(t, rparams1, cretrans)
2133 crereq, cremsg = e2termConn1.RecvSubsReq(t)
2134 e2termConn1.SendSubsResp(t, crereq, cremsg)
2135 e2SubsId = xappConn1.RecvSubsResp(t, cretrans)
2136 deltrans := xappConn1.SendSubsDelReq(t, nil, e2SubsId)
2137 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
2139 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
2140 xappConn1.RecvSubsDelResp(t, deltrans)
2142 //Wait that subs is cleaned
2143 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
2145 xappConn1.TestMsgChanEmpty(t)
2146 xappConn2.TestMsgChanEmpty(t)
2147 e2termConn1.TestMsgChanEmpty(t)
2148 mainCtrl.wait_registry_empty(t, 10)
2151 //-----------------------------------------------------------------------------
2152 // TestSubReqAndSubDelOkTwoE2termParallel
2155 // +-------+ +---------+ +---------+ +---------+
2156 // | xapp | | submgr | | e2term1 | | e2term2 |
2157 // +-------+ +---------+ +---------+ +---------+
2162 // |------------->| | |
2165 // | |------------->| |
2168 // |------------->| | |
2171 // | |---------------------------->|
2174 // | |<-------------| |
2176 // |<-------------| | |
2178 // | |<----------------------------|
2180 // |<-------------| | |
2182 // | [SUBS 1 DELETE] | |
2184 // | [SUBS 2 DELETE] | |
2187 //-----------------------------------------------------------------------------
2188 func TestSubReqAndSubDelOkTwoE2termParallel(t *testing.T) {
2189 CaseBegin("TestSubReqAndSubDelOkTwoE2termParallel")
2192 cretrans1 := xappConn1.NewRmrTransactionId("", "RAN_NAME_1")
2193 xappConn1.SendSubsReq(t, nil, cretrans1)
2194 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
2196 cretrans2 := xappConn1.NewRmrTransactionId("", "RAN_NAME_11")
2197 xappConn1.SendSubsReq(t, nil, cretrans2)
2198 crereq2, cremsg2 := e2termConn2.RecvSubsReq(t)
2201 e2termConn1.SendSubsResp(t, crereq1, cremsg1)
2202 e2SubsId1 := xappConn1.RecvSubsResp(t, cretrans1)
2205 e2termConn2.SendSubsResp(t, crereq2, cremsg2)
2206 e2SubsId2 := xappConn1.RecvSubsResp(t, cretrans2)
2209 deltrans1 := xappConn1.SendSubsDelReq(t, nil, e2SubsId1)
2210 delreq1, delmsg1 := e2termConn1.RecvSubsDelReq(t)
2211 e2termConn1.SendSubsDelResp(t, delreq1, delmsg1)
2212 xappConn1.RecvSubsDelResp(t, deltrans1)
2213 //Wait that subs is cleaned
2214 mainCtrl.wait_subs_clean(t, e2SubsId1, 10)
2217 deltrans2 := xappConn1.SendSubsDelReq(t, nil, e2SubsId2)
2218 delreq2, delmsg2 := e2termConn2.RecvSubsDelReq(t)
2219 e2termConn2.SendSubsDelResp(t, delreq2, delmsg2)
2220 xappConn1.RecvSubsDelResp(t, deltrans2)
2221 //Wait that subs is cleaned
2222 mainCtrl.wait_subs_clean(t, e2SubsId2, 10)
2224 xappConn1.TestMsgChanEmpty(t)
2225 xappConn2.TestMsgChanEmpty(t)
2226 e2termConn1.TestMsgChanEmpty(t)
2227 e2termConn2.TestMsgChanEmpty(t)
2228 mainCtrl.wait_registry_empty(t, 10)
2231 //-----------------------------------------------------------------------------
2232 // TestSubReqInsertAndSubDelOk
2235 // +-------+ +---------+ +---------+
2236 // | xapp | | submgr | | e2term |
2237 // +-------+ +---------+ +---------+
2240 // |------------->| |
2243 // | |------------->|
2246 // | |<-------------|
2249 // |<-------------| |
2253 // |------------->| |
2256 // | |------------->|
2259 // | |<-------------|
2262 // |<-------------| |
2264 //-----------------------------------------------------------------------------
2265 func TestSubReqInsertAndSubDelOk(t *testing.T) {
2266 CaseBegin("TestInsertSubReqAndSubDelOk")
2268 rparams1 := &teststube2ap.E2StubSubsReqParams{}
2270 rparams1.Req.ActionSetups[0].ActionType = e2ap.E2AP_ActionTypeInsert
2271 cretrans := xappConn1.SendSubsReq(t, rparams1, nil)
2273 crereq, cremsg := e2termConn1.RecvSubsReq(t)
2274 e2termConn1.SendSubsResp(t, crereq, cremsg)
2275 e2SubsId := xappConn1.RecvSubsResp(t, cretrans)
2276 deltrans := xappConn1.SendSubsDelReq(t, nil, e2SubsId)
2277 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
2279 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
2280 xappConn1.RecvSubsDelResp(t, deltrans)
2282 //Wait that subs is cleaned
2283 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
2285 xappConn1.TestMsgChanEmpty(t)
2286 xappConn2.TestMsgChanEmpty(t)
2287 e2termConn1.TestMsgChanEmpty(t)
2288 mainCtrl.wait_registry_empty(t, 10)
2291 //-----------------------------------------------------------------------------
2292 // TestSubReqRetransmissionWithSameSubIdDiffXid
2294 // This case simulates case where xApp restarts and starts sending same
2295 // subscription requests which have already subscribed successfully
2298 // +-------+ +---------+ +---------+
2299 // | xapp | | submgr | | e2term |
2300 // +-------+ +---------+ +---------+
2303 // |------------->| |
2306 // | |------------->|
2309 // | |<-------------|
2312 // |<-------------| |
2314 // | xApp restart | |
2317 // | (retrans with same xApp generated subid but diff xid)
2318 // |------------->| |
2321 // |<-------------| |
2323 // | [SUBS DELETE] |
2326 //-----------------------------------------------------------------------------
2327 func TestSubReqRetransmissionWithSameSubIdDiffXid(t *testing.T) {
2328 CaseBegin("TestSubReqRetransmissionWithSameSubIdDiffXid")
2331 cretrans := xappConn1.SendSubsReq(t, nil, nil)
2332 crereq, cremsg := e2termConn1.RecvSubsReq(t)
2333 e2termConn1.SendSubsResp(t, crereq, cremsg)
2334 e2SubsId := xappConn1.RecvSubsResp(t, cretrans)
2336 // xApp restart here
2337 // --> artificial delay
2338 <-time.After(1 * time.Second)
2341 cretrans = xappConn1.SendSubsReq(t, nil, nil) //Retransmitted SubReq
2342 e2SubsId = xappConn1.RecvSubsResp(t, cretrans)
2345 deltrans := xappConn1.SendSubsDelReq(t, nil, e2SubsId)
2346 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
2347 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
2348 xappConn1.RecvSubsDelResp(t, deltrans)
2350 //Wait that subs is cleaned
2351 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
2353 xappConn1.TestMsgChanEmpty(t)
2354 xappConn2.TestMsgChanEmpty(t)
2355 e2termConn1.TestMsgChanEmpty(t)
2356 mainCtrl.wait_registry_empty(t, 10)
2359 //-----------------------------------------------------------------------------
2360 // TestSubReqNokAndSubDelOkWithRestartInMiddle
2363 // +-------+ +---------+ +---------+
2364 // | xapp | | submgr | | e2term |
2365 // +-------+ +---------+ +---------+
2368 // |------------->| |
2371 // | |------------->|
2376 // | Submgr restart |
2380 // | |------------->|
2383 // | |<-------------|
2386 //-----------------------------------------------------------------------------
2388 func TestSubReqNokAndSubDelOkWithRestartInMiddle(t *testing.T) {
2389 CaseBegin("TestSubReqNokAndSubDelOkWithRestartInMiddle")
2391 // Remove possible existing subscrition
2392 mainCtrl.removeExistingSubscriptions(t)
2394 mainCtrl.SetResetTestFlag(t, true) // subs.DoNotWaitSubResp will be set TRUE for the subscription
2395 xappConn1.SendSubsReq(t, nil, nil)
2396 e2termConn1.RecvSubsReq(t)
2397 mainCtrl.SetResetTestFlag(t, false)
2399 resp, _ := xapp.Subscription.QuerySubscriptions()
2400 assert.Equal(t, resp[0].Meid, "RAN_NAME_1")
2401 assert.Equal(t, resp[0].ClientEndpoint, []string{"localhost:13560"})
2402 e2SubsId := uint32(resp[0].SubscriptionID)
2403 t.Logf("e2SubsId = %v", e2SubsId)
2405 mainCtrl.SimulateRestart(t)
2406 xapp.Logger.Debug("mainCtrl.SimulateRestart done")
2408 // Submgr send delete for uncompleted subscription
2409 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
2410 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
2412 // Wait that subs is cleaned
2413 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
2415 xappConn1.TestMsgChanEmpty(t)
2416 xappConn2.TestMsgChanEmpty(t)
2417 e2termConn1.TestMsgChanEmpty(t)
2418 mainCtrl.wait_registry_empty(t, 10)
2421 //-----------------------------------------------------------------------------
2422 // TestSubReqAndSubDelOkWithRestartInMiddle
2425 // +-------+ +---------+ +---------+
2426 // | xapp | | submgr | | e2term |
2427 // +-------+ +---------+ +---------+
2430 // |------------->| |
2433 // | |------------->|
2436 // | |<-------------|
2439 // |<-------------| |
2442 // | Submgr restart |
2445 // |------------->| |
2448 // | |------------->|
2451 // | |<-------------|
2454 // |<-------------| |
2456 //-----------------------------------------------------------------------------
2458 func TestSubReqAndSubDelOkWithRestartInMiddle(t *testing.T) {
2459 CaseBegin("TestSubReqAndSubDelOkWithRestartInMiddle")
2461 cretrans := xappConn1.SendSubsReq(t, nil, nil)
2462 crereq, cremsg := e2termConn1.RecvSubsReq(t)
2463 e2termConn1.SendSubsResp(t, crereq, cremsg)
2464 e2SubsId := xappConn1.RecvSubsResp(t, cretrans)
2466 // Check subscription
2467 resp, _ := xapp.Subscription.QuerySubscriptions()
2468 assert.Equal(t, resp[0].SubscriptionID, int64(e2SubsId))
2469 assert.Equal(t, resp[0].Meid, "RAN_NAME_1")
2470 assert.Equal(t, resp[0].ClientEndpoint, []string{"localhost:13560"})
2472 mainCtrl.SimulateRestart(t)
2473 xapp.Logger.Debug("mainCtrl.SimulateRestart done")
2475 // Check that subscription is restored correctly after restart
2476 resp, _ = xapp.Subscription.QuerySubscriptions()
2477 assert.Equal(t, resp[0].SubscriptionID, int64(e2SubsId))
2478 assert.Equal(t, resp[0].Meid, "RAN_NAME_1")
2479 assert.Equal(t, resp[0].ClientEndpoint, []string{"localhost:13560"})
2481 deltrans := xappConn1.SendSubsDelReq(t, nil, e2SubsId)
2482 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
2483 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
2484 xappConn1.RecvSubsDelResp(t, deltrans)
2486 //Wait that subs is cleaned
2487 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
2489 xappConn1.TestMsgChanEmpty(t)
2490 xappConn2.TestMsgChanEmpty(t)
2491 e2termConn1.TestMsgChanEmpty(t)
2492 mainCtrl.wait_registry_empty(t, 10)
2495 //-----------------------------------------------------------------------------
2496 // TestSubReqAndSubDelOkSameActionWithRestartsInMiddle
2499 // +-------+ +-------+ +---------+ +---------+
2500 // | xapp2 | | xapp1 | | submgr | | e2term |
2501 // +-------+ +-------+ +---------+ +---------+
2506 // | |------------->| |
2509 // | | |------------->|
2511 // | | |<-------------|
2513 // | |<-------------| |
2516 // | submgr restart |
2521 // |--------------------------->| |
2524 // |<---------------------------| |
2526 // | | SubDelReq 1 | |
2527 // | |------------->| |
2529 // | | SubDelResp 1 | |
2530 // | |<-------------| |
2534 // | submgr restart |
2537 // | SubDelReq 2 | |
2538 // |--------------------------->| |
2540 // | | | SubDelReq 2 |
2541 // | | |------------->|
2543 // | | | SubDelReq 2 |
2544 // | | |------------->|
2546 // | SubDelResp 2 | |
2547 // |<---------------------------| |
2549 //-----------------------------------------------------------------------------
2551 func TestSubReqAndSubDelOkSameActionWithRestartsInMiddle(t *testing.T) {
2552 CaseBegin("TestSubReqAndSubDelOkSameActionWithRestartsInMiddle")
2555 rparams1 := &teststube2ap.E2StubSubsReqParams{}
2557 cretrans1 := xappConn1.SendSubsReq(t, rparams1, nil)
2558 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
2559 e2termConn1.SendSubsResp(t, crereq1, cremsg1)
2560 e2SubsId1 := xappConn1.RecvSubsResp(t, cretrans1)
2563 rparams2 := &teststube2ap.E2StubSubsReqParams{}
2565 cretrans2 := xappConn2.SendSubsReq(t, rparams2, nil)
2566 e2SubsId2 := xappConn2.RecvSubsResp(t, cretrans2)
2568 // Check subscription
2569 resp, _ := xapp.Subscription.QuerySubscriptions() ////////////////////////////////
2570 assert.Equal(t, resp[0].SubscriptionID, int64(e2SubsId1))
2571 assert.Equal(t, resp[0].Meid, "RAN_NAME_1")
2572 assert.Equal(t, resp[0].ClientEndpoint, []string{"localhost:13560", "localhost:13660"})
2574 mainCtrl.SimulateRestart(t)
2575 xapp.Logger.Debug("mainCtrl.SimulateRestart done")
2577 // Check that subscription is restored correctly after restart
2578 resp, _ = xapp.Subscription.QuerySubscriptions()
2579 assert.Equal(t, resp[0].SubscriptionID, int64(e2SubsId1))
2580 assert.Equal(t, resp[0].Meid, "RAN_NAME_1")
2581 assert.Equal(t, resp[0].ClientEndpoint, []string{"localhost:13560", "localhost:13660"})
2584 deltrans1 := xappConn1.SendSubsDelReq(t, nil, e2SubsId1)
2585 xapp.Logger.Debug("xappConn1.RecvSubsDelResp")
2586 xappConn1.RecvSubsDelResp(t, deltrans1)
2587 xapp.Logger.Debug("xappConn1.RecvSubsDelResp received")
2589 mainCtrl.SimulateRestart(t)
2590 xapp.Logger.Debug("mainCtrl.SimulateRestart done")
2593 deltrans2 := xappConn2.SendSubsDelReq(t, nil, e2SubsId2)
2594 delreq2, delmsg2 := e2termConn1.RecvSubsDelReq(t)
2596 e2termConn1.SendSubsDelResp(t, delreq2, delmsg2)
2597 xappConn2.RecvSubsDelResp(t, deltrans2)
2599 //Wait that subs is cleaned
2600 mainCtrl.wait_subs_clean(t, e2SubsId2, 10)
2602 xappConn1.TestMsgChanEmpty(t)
2603 xappConn2.TestMsgChanEmpty(t)
2604 e2termConn1.TestMsgChanEmpty(t)
2605 mainCtrl.wait_registry_empty(t, 10)
2608 //*****************************************************************************
2609 // REST interface test cases
2610 //*****************************************************************************
2612 //-----------------------------------------------------------------------------
2613 // Test debug GET and POST requests
2616 // +-------+ +---------+
2617 // | user | | submgr |
2618 // +-------+ +---------+
2625 func TestGetSubscriptions(t *testing.T) {
2627 mainCtrl.sendGetRequest(t, "localhost:8088", "/ric/v1/subscriptions")
2630 func TestGetSymptomData(t *testing.T) {
2632 mainCtrl.sendGetRequest(t, "localhost:8080", "/ric/v1/symptomdata")
2635 func TestPostdeleteSubId(t *testing.T) {
2637 mainCtrl.sendPostRequest(t, "localhost:8080", "/ric/v1/test/deletesubid=1")
2640 func TestPostEmptyDb(t *testing.T) {
2642 mainCtrl.sendPostRequest(t, "localhost:8080", "/ric/v1/test/emptydb")
2645 func TestGetRestSubscriptions(t *testing.T) {
2647 mainCtrl.sendGetRequest(t, "localhost:8080", "/ric/v1/restsubscriptions")
2650 //-----------------------------------------------------------------------------
2651 // TestRESTSubReqAndRouteNok
2654 // +-------+ +---------+ +---------+
2655 // | xapp | | submgr | | rtmgr |
2656 // +-------+ +---------+ +---------+
2659 // |---------------->| |
2661 // | RESTSubResp | |
2662 // |<----------------| |
2663 // | | RouteCreate |
2664 // | |------------->|
2666 // | | RouteCreate |
2668 // | |(Bad request) |
2669 // | |<-------------|
2671 // |<----------------| |
2673 // | [SUBS INT DELETE] |
2675 // | RESTSubDelReq | |
2676 // |---------------->| |
2677 // | RESTSubDelResp | |
2678 // |<----------------| |
2680 //-----------------------------------------------------------------------------
2681 func TestRESTSubReqAndRouteNok(t *testing.T) {
2682 CaseBegin("TestRESTSubReqAndRouteNok")
2684 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
2685 Counter{cRestSubReqFromXapp, 1},
2686 Counter{cRestSubRespToXapp, 1},
2687 Counter{cRouteCreateFail, 1},
2688 Counter{cRestSubFailNotifToXapp, 1},
2689 Counter{cRestSubDelReqFromXapp, 1},
2690 Counter{cRestSubDelRespToXapp, 1},
2693 const subReqCount int = 1
2695 // Add delay for rtmgt HTTP handling so that HTTP response is received before notify on XAPP side
2696 waiter := rtmgrHttp.AllocNextSleep(50, false)
2697 newSubsId := mainCtrl.get_registry_next_subid(t)
2700 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
2701 restSubId := xappConn1.SendRESTSubsReq(t, params)
2702 xappConn1.ExpectRESTNotificationNok(t, restSubId, "failAll")
2703 waiter.WaitResult(t)
2705 e2SubsId := xappConn1.WaitRESTNotification(t, restSubId)
2706 xapp.Logger.Debug("TEST: REST notification received e2SubsId=%v", e2SubsId)
2709 xappConn1.SendRESTSubsDelReq(t, &restSubId)
2711 // Wait that subs is cleaned
2712 mainCtrl.wait_subs_clean(t, newSubsId, 10)
2713 waitSubsCleanup(t, e2SubsId, 10)
2714 mainCtrl.VerifyCounterValues(t)
2717 func TestRESTSubReqAndRouteUpdateNok(t *testing.T) {
2718 CaseBegin("TestSubReqAndRouteUpdateNok")
2720 //Init counter check
2721 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
2722 Counter{cRestSubReqFromXapp, 2},
2723 Counter{cRestSubRespToXapp, 2},
2724 Counter{cSubReqToE2, 1},
2725 Counter{cSubRespFromE2, 1},
2726 Counter{cRestSubNotifToXapp, 1},
2727 Counter{cRestSubFailNotifToXapp, 1},
2728 Counter{cRouteCreateUpdateFail, 1},
2729 Counter{cRestSubDelReqFromXapp, 1},
2730 Counter{cSubDelReqToE2, 1},
2731 Counter{cSubDelRespFromE2, 1},
2732 Counter{cRestSubDelRespToXapp, 1},
2735 var params *teststube2ap.RESTSubsReqParams = nil
2738 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
2740 queryXappSubscription(t, int64(e2SubsId), "RAN_NAME_1", []string{"localhost:13560"})
2742 // xapp2 ROUTE creation shall fail with 400 from rtmgr -> submgr
2743 waiter := rtmgrHttp.AllocNextEvent(false)
2744 newSubsId := mainCtrl.get_registry_next_subid(t)
2745 params = xappConn2.GetRESTSubsReqReportParams(subReqCount)
2746 params.SetMeid("RAN_NAME_1")
2747 restSubId2 := xappConn2.SendRESTSubsReq(t, params)
2748 xapp.Logger.Debug("Send REST subscriber request for second subscriber : %v", restSubId2)
2749 xappConn2.ExpectRESTNotificationNok(t, restSubId2, "allFail")
2750 waiter.WaitResult(t)
2751 // e2SubsId2 := xappConn2.WaitRESTNotification(t, restSubId2) - TOD: missing delete
2752 xappConn2.WaitRESTNotification(t, restSubId2)
2754 queryXappSubscription(t, int64(e2SubsId), "RAN_NAME_1", []string{"localhost:13560"})
2756 deleteSubscription(t, xappConn1, e2termConn1, &restSubId)
2758 mainCtrl.wait_subs_clean(t, newSubsId, 10)
2759 //Wait that subs is cleaned
2760 waitSubsCleanup(t, e2SubsId, 10)
2762 mainCtrl.VerifyCounterValues(t)
2765 func TestRESTSubDelReqAndRouteDeleteNok(t *testing.T) {
2766 CaseBegin("TestRESTSubDelReqAndRouteDeleteNok")
2768 // Init counter check
2769 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
2770 Counter{cRestSubReqFromXapp, 1},
2771 Counter{cRestSubRespToXapp, 1},
2772 Counter{cSubReqToE2, 1},
2773 Counter{cSubRespFromE2, 1},
2774 Counter{cRestSubNotifToXapp, 1},
2775 Counter{cRestSubDelReqFromXapp, 1},
2776 Counter{cRouteDeleteFail, 1},
2777 Counter{cSubDelReqToE2, 1},
2778 Counter{cSubDelRespFromE2, 1},
2779 Counter{cRestSubDelRespToXapp, 1},
2782 var params *teststube2ap.RESTSubsReqParams = nil
2785 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
2787 queryXappSubscription(t, int64(e2SubsId), "RAN_NAME_1", []string{"localhost:13560"})
2789 waiter := rtmgrHttp.AllocNextEvent(false)
2790 xappConn1.SendRESTSubsDelReq(t, &restSubId)
2791 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
2792 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
2793 waiter.WaitResult(t)
2795 waitSubsCleanup(t, e2SubsId, 10)
2797 mainCtrl.VerifyCounterValues(t)
2800 func TestRESTSubMergeDelAndRouteUpdateNok(t *testing.T) {
2801 CaseBegin("TestRESTSubMergeDelAndRouteUpdateNok")
2803 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
2804 Counter{cRestSubReqFromXapp, 2},
2805 Counter{cRestSubRespToXapp, 2},
2806 Counter{cSubReqToE2, 1},
2807 Counter{cSubRespFromE2, 1},
2808 Counter{cRestSubNotifToXapp, 2},
2809 Counter{cRestSubDelReqFromXapp, 2},
2810 Counter{cRouteDeleteUpdateFail, 1},
2811 Counter{cSubDelReqToE2, 1},
2812 Counter{cSubDelRespFromE2, 1},
2813 Counter{cRestSubDelRespToXapp, 2},
2816 var params *teststube2ap.RESTSubsReqParams = nil
2819 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
2821 queryXappSubscription(t, int64(e2SubsId), "RAN_NAME_1", []string{"localhost:13560"})
2822 restSubId2, e2SubsId2 := createXapp2MergedSubscription(t, "RAN_NAME_1")
2824 queryXappSubscription(t, int64(e2SubsId), "RAN_NAME_1", []string{"localhost:13560", "localhost:13660"})
2826 //Del1, this shall fail on rtmgr side
2827 waiter := rtmgrHttp.AllocNextEvent(false)
2828 xappConn1.SendRESTSubsDelReq(t, &restSubId)
2829 waiter.WaitResult(t)
2831 queryXappSubscription(t, int64(e2SubsId), "RAN_NAME_1", []string{"localhost:13660"})
2834 deleteXapp2Subscription(t, &restSubId2)
2836 waitSubsCleanup(t, e2SubsId2, 10)
2838 mainCtrl.VerifyCounterValues(t)
2841 //-----------------------------------------------------------------------------
2842 // TestRESTSubReqRetransmission
2845 // +-------+ +---------+ +---------+
2846 // | xapp | | submgr | | e2term |
2847 // +-------+ +---------+ +---------+
2849 // | RESTSubReq1 | |
2850 // |---------------->| |
2852 // | RESTSubResp | |
2853 // |<----------------| |
2855 // | |------------->|
2857 // | RESTSubReq2 | |
2859 // |---------------->| |
2860 // | RESTSubResp(201)| |
2861 // |<----------------| |
2864 // | |<-------------|
2866 // |<----------------| |
2868 // | [SUBS DELETE] |
2871 //-----------------------------------------------------------------------------
2873 func TestRESTSubReqRetransmission(t *testing.T) {
2874 CaseBegin("TestRESTSubReqRetransmission")
2876 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
2877 Counter{cRestSubReqFromXapp, 2},
2878 Counter{cRestSubRespToXapp, 2},
2879 Counter{cSubReqToE2, 1},
2880 Counter{cSubRespFromE2, 1},
2881 Counter{cRestSubNotifToXapp, 1},
2882 Counter{cRestSubDelReqFromXapp, 1},
2883 Counter{cSubDelReqToE2, 1},
2884 Counter{cSubDelRespFromE2, 1},
2885 Counter{cRestSubDelRespToXapp, 1},
2887 // Retry/duplicate will get the same way as the first request.
2888 // Contianed duplicate messages from same xapp will not be merged. Here we use xappConn2 to simulate sending
2889 // second request from same xapp as doing it from xappConn1 would not work as notification would not be received
2892 const subReqCount int = 1
2894 // In order to force both XAPP's to create their own subscriptions, force rtmgr to block a while so that 2nd create
2895 // gets into execution before the rtmgrg responds for the first one.
2896 waiter := rtmgrHttp.AllocNextSleep(10, true)
2897 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
2898 restSubId1 := xappConn1.SendRESTSubsReq(t, params)
2899 xappConn2.SendRESTSubsReq(t, params)
2901 waiter.WaitResult(t)
2903 xappConn1.WaitListedRestNotifications(t, []string{restSubId1})
2905 // Depending one goroutine scheduling order, we cannot say for sure which xapp reaches e2term first. Thus
2906 // the order is not significant he6re.
2907 crereq, cremsg := e2termConn1.RecvSubsReq(t)
2908 e2termConn1.SendSubsResp(t, crereq, cremsg)
2910 e2SubsIdA := <-xappConn1.ListedRESTNotifications
2911 xapp.Logger.Debug("TEST: 1.st XAPP notification received e2SubsId=%v", e2SubsIdA)
2914 xappConn1.SendRESTSubsDelReq(t, &restSubId1)
2915 delreq1, delmsg1 := e2termConn1.RecvSubsDelReq(t)
2916 e2termConn1.SendSubsDelResp(t, delreq1, delmsg1)
2918 mainCtrl.wait_multi_subs_clean(t, []uint32{e2SubsIdA.E2SubsId}, 10)
2920 mainCtrl.VerifyCounterValues(t)
2923 //-----------------------------------------------------------------------------
2925 // +-------+ +---------+ +---------+ +---------+
2926 // | xapp | | submgr | | e2term | | rtmgr |
2927 // +-------+ +---------+ +---------+ +---------+
2929 // | RESTSubReq | | |
2930 // |---------------->| | |
2931 // | RESTSubResp | | |
2932 // |<----------------| | |
2933 // | | RouteCreate | |
2934 // | |--------------------------->|
2935 // | | RouteResponse| |
2936 // | |<---------------------------| // The order of these events may vary
2938 // | |------------->| | // The order of these events may vary
2940 // | |<-------------| |
2941 // | RESTNotif1 | | |
2942 // |<----------------| | |
2943 // | RESTSubReq | | |
2944 // | [RETRANS1] | | |
2945 // |---------------->| | |
2946 // | RESTNotif1 | | |
2947 // |<----------------| | |
2948 // | RESTSubReq | | |
2949 // | [RETRANS2] | | |
2950 // |---------------->| | |
2951 // | RESTNotif1 | | |
2952 // |<----------------| | |
2953 // | RESTSubDelReq | | |
2954 // |---------------->| | |
2955 // | | SubDelReq | |
2956 // | |------------->| |
2957 // | RESTSubDelResp| | |
2958 // |<----------------| | |
2959 // | | SubDelResp | |
2960 // | |<-------------| |
2963 //-----------------------------------------------------------------------------
2965 func TestRESTSubReqRetransmissionV2(t *testing.T) {
2966 CaseBegin("TestRESTSubReqRetransmissionV2")
2968 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
2969 Counter{cRestSubReqFromXapp, 3},
2970 Counter{cRestSubRespToXapp, 3},
2971 Counter{cSubReqToE2, 1},
2972 Counter{cSubRespFromE2, 1},
2973 Counter{cRestSubNotifToXapp, 3},
2974 Counter{cRestSubDelReqFromXapp, 1},
2975 Counter{cSubDelReqToE2, 1},
2976 Counter{cSubDelRespFromE2, 1},
2977 Counter{cRestSubDelRespToXapp, 1},
2980 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
2982 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
2984 queryXappSubscription(t, int64(e2SubsId), "RAN_NAME_1", []string{"localhost:13560"})
2987 restSubId_resend := xappConn1.SendRESTSubsReq(t, params)
2989 assert.Equal(t, restSubId_resend, restSubId)
2991 <-time.After(100 * time.Millisecond)
2994 restSubId_resend2 := xappConn1.SendRESTSubsReq(t, params)
2996 assert.Equal(t, restSubId_resend2, restSubId)
2998 <-time.After(100 * time.Millisecond)
3000 deleteSubscription(t, xappConn1, e2termConn1, &restSubId)
3002 waitSubsCleanup(t, e2SubsId, 10)
3004 //Wait that subs is cleaned
3005 mainCtrl.VerifyCounterValues(t)
3008 //-----------------------------------------------------------------------------
3010 // +-------+ +---------+ +---------+ +---------+
3011 // | xapp | | submgr | | e2term | | rtmgr |
3012 // +-------+ +---------+ +---------+ +---------+
3014 // | RESTSubReq | | |
3015 // |---------------->| | |
3016 // | RESTSubResp | | |
3017 // |<----------------| | |
3018 // | | RouteCreate | |
3019 // | |--------------------------->|
3020 // | | RouteResponse| |
3021 // | |<---------------------------| // The order of these events may vary
3023 // | |------------->| | // The order of these events may vary
3025 // | |<-------------| |
3026 // | RESTNotif1 | | |
3027 // |<----------------| | |
3028 // | RESTSubReq | | |
3029 // | [RETRANS, with RESTsubsId] | |
3030 // |---------------->| | |
3031 // | RESTNotif1 | | |
3032 // |<----------------| | |
3033 // | RESTSubReq | | |
3034 // | [RETRANS, without RESTsubsId] | |
3035 // |---------------->| | |
3036 // | RESTNotif1 | | |
3037 // |<----------------| | |
3038 // | RESTSubDelReq | | |
3039 // |---------------->| | |
3040 // | | SubDelReq | |
3041 // | |------------->| |
3042 // | RESTSubDelResp| | |
3043 // |<----------------| | |
3044 // | | SubDelResp | |
3045 // | |<-------------| |
3048 //-----------------------------------------------------------------------------
3049 func TestRESTSubReqRetransmissionV3(t *testing.T) {
3050 CaseBegin("TestRESTSubReqRetransmissionV3")
3052 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
3053 Counter{cRestSubReqFromXapp, 3},
3054 Counter{cRestSubRespToXapp, 3},
3055 Counter{cSubReqToE2, 1},
3056 Counter{cSubRespFromE2, 1},
3057 Counter{cRestSubNotifToXapp, 3},
3058 Counter{cRestSubDelReqFromXapp, 1},
3059 Counter{cSubDelReqToE2, 1},
3060 Counter{cSubDelRespFromE2, 1},
3061 Counter{cRestSubDelRespToXapp, 1},
3064 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
3066 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
3068 queryXappSubscription(t, int64(e2SubsId), "RAN_NAME_1", []string{"localhost:13560"})
3070 <-time.After(100 * time.Millisecond)
3072 //1.st resend with subscription ID
3073 params.SetSubscriptionID(&restSubId)
3074 restSubId_resend := xappConn1.SendRESTSubsReq(t, params)
3076 assert.Equal(t, restSubId_resend, restSubId)
3078 <-time.After(100 * time.Millisecond)
3080 //2.nd resend without subscription ID (faking app restart)
3081 params = xappConn1.GetRESTSubsReqReportParams(subReqCount)
3082 restSubId_resend2 := xappConn1.SendRESTSubsReq(t, params)
3084 assert.Equal(t, restSubId_resend2, restSubId)
3086 <-time.After(100 * time.Millisecond)
3088 deleteSubscription(t, xappConn1, e2termConn1, &restSubId)
3090 waitSubsCleanup(t, e2SubsId, 10)
3092 //Wait that subs is cleaned
3093 mainCtrl.VerifyCounterValues(t)
3096 //-----------------------------------------------------------------------------
3098 // +-------+ +---------+ +---------+ +---------+
3099 // | xapp | | submgr | | e2term | | rtmgr |
3100 // +-------+ +---------+ +---------+ +---------+
3102 // | RESTSubReq | | |
3103 // |---------------->| | |
3104 // | RESTSubResp | | |
3105 // |<----------------| | |
3106 // | | RouteCreate | |
3107 // | |--------------------------->|
3108 // | | RouteResponse| |
3109 // | |<---------------------------|
3111 // | |------------->| |
3113 // | |<-------------| |
3114 // | RESTNotif1 | | |
3115 // |<----------------| | |
3116 // | RESTSubReq | | |
3117 // | [with RestSUbsId + one additional e2 subDetail]
3118 // |---------------->| | |
3119 // | RESTNotif1 | | |
3120 // | [for initial e2 subDetail] | |
3121 // |<----------------| | |
3122 // | | RouteCreate | |
3123 // | |--------------------------->|
3124 // | | RouteResponse| |
3125 // | |<---------------------------|
3127 // | |------------->| |
3129 // | |<-------------| |
3130 // | RESTNotif1 | | |
3131 // |<----------------| | |
3132 // | RESTSubReq | | |
3133 // | [with RESTsubsId initial request] |
3134 // |---------------->| | |
3135 // | RESTNotif1 | | |
3136 // |<----------------| | |
3137 // | RESTSubDelReq | | |
3138 // |---------------->| | |
3139 // | RESTSubDelResp| | |
3140 // |<----------------| | |
3141 // | | SubDelReq | |
3142 // | |------------->| |
3143 // | | SubDelResp | |
3144 // | |<-------------| |
3145 // | | SubDelReq | |
3146 // | |------------->| |
3147 // | | SubDelResp | |
3148 // | |<-------------| |
3151 //-----------------------------------------------------------------------------
3153 func TestRESTSubReqRetransmissionV4(t *testing.T) {
3154 CaseBegin("TestRESTSubReqRetransmissionV4")
3156 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
3157 Counter{cRestSubReqFromXapp, 3},
3158 Counter{cRestSubRespToXapp, 3},
3159 Counter{cSubReqToE2, 2},
3160 Counter{cSubRespFromE2, 2},
3161 Counter{cRestSubNotifToXapp, 4},
3162 Counter{cRestSubDelReqFromXapp, 1},
3163 Counter{cSubDelReqToE2, 2},
3164 Counter{cSubDelRespFromE2, 2},
3165 Counter{cRestSubDelRespToXapp, 1},
3168 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
3170 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
3172 <-time.After(100 * time.Millisecond)
3174 // Send modified requst, this time with e2 subscriptions.
3175 params2 := xappConn1.GetRESTSubsReqReportParams(subReqCount + 1)
3176 params2.SetSubscriptionID(&restSubId)
3178 xapp.Subscription.SetResponseCB(xappConn1.SubscriptionRespHandler)
3179 xappConn1.ExpectAnyNotification(t)
3180 // Resend the original request with an additional e2 subscription (detail), this time with restsubsid
3181 restSubId_resend := xappConn1.SendRESTSubsReq(t, params2)
3182 e2SubsId1 := xappConn1.WaitAnyRESTNotification(t)
3183 assert.Equal(t, e2SubsId, e2SubsId1)
3185 crereq2, cremsg2 := e2termConn1.RecvSubsReq(t)
3187 xappConn1.DecrementRequestCount()
3188 xappConn1.ExpectRESTNotification(t, restSubId_resend)
3189 e2termConn1.SendSubsResp(t, crereq2, cremsg2)
3190 e2SubsId2 := xappConn1.WaitRESTNotification(t, restSubId_resend)
3191 assert.NotEqual(t, e2SubsId2, 0)
3193 <-time.After(100 * time.Millisecond)
3195 xapp.Subscription.SetResponseCB(xappConn1.SubscriptionRespHandler)
3196 params = xappConn1.GetRESTSubsReqReportParams(subReqCount)
3197 params.SetSubscriptionID(&restSubId)
3198 xappConn1.ExpectAnyNotification(t)
3199 // Resend the original request again with only one e2 subscription (detail), this time with restsubsid
3200 restSubId_resend2 := xappConn1.SendRESTSubsReq(t, params)
3201 assert.Equal(t, restSubId_resend, restSubId_resend2)
3203 e2SubsId1 = xappConn1.WaitAnyRESTNotification(t)
3204 assert.Equal(t, e2SubsId, e2SubsId1)
3206 // Delete both e2 subscriptions
3207 xappConn1.SendRESTSubsDelReq(t, &restSubId)
3208 e2SubsIds := []uint32{e2SubsId, e2SubsId2}
3209 sendAndReceiveMultipleE2DelReqs(t, e2SubsIds, e2termConn1)
3211 waitSubsCleanup(t, e2SubsId, 10)
3213 //Wait that subs is cleaned
3214 mainCtrl.VerifyCounterValues(t)
3217 //-----------------------------------------------------------------------------
3219 // +-------+ +---------+ +---------+ +---------+
3220 // | xapp | | submgr | | e2term | | rtmgr |
3221 // +-------+ +---------+ +---------+ +---------+
3223 // | RESTSubReq | | |
3224 // |---------------->| | |
3225 // | RESTSubResp | | |
3226 // |<----------------| | |
3227 // | | RouteCreate | |
3228 // | |--------------------------->|
3229 // | | RouteResponse| |
3230 // | |<---------------------------|
3232 // | |------------->| |
3234 // | |<-------------| |
3235 // | RESTNotif1 | | |
3236 // |<----------------| | |
3237 // | RESTSubReq | | |
3238 // | [with RestSUbsId + one additional e2 subDetail]
3239 // |---------------->| | |
3240 // | RESTNotif1 | | |
3241 // | [for initial e2 subDetail] | |
3242 // |<----------------| | |
3243 // | | RouteCreate | |
3244 // | |--------------------------->|
3245 // | | RouteResponse| |
3246 // | |<---------------------------|
3248 // | |------------->| |
3250 // | |<-------------| |
3251 // | RESTNotif1 | | |
3252 // |<----------------| | |
3253 // | RESTSubReq | | |
3254 // | [without RESTsubsId initial request] |
3255 // |---------------->| | |
3256 // | RESTNotif1 | | |
3257 // |<----------------| | |
3258 // | RESTSubDelReq | | |
3259 // |---------------->| | |
3260 // | RESTSubDelResp| | |
3261 // |<----------------| | |
3262 // | | SubDelReq | |
3263 // | |------------->| |
3264 // | | SubDelResp | |
3265 // | |<-------------| |
3266 // | | SubDelReq | |
3267 // | |------------->| |
3268 // | | SubDelResp | |
3269 // | |<-------------| |
3272 //-----------------------------------------------------------------------------
3274 func TestRESTSubReqRetransmissionV5(t *testing.T) {
3275 CaseBegin("TestRESTSubReqRetransmissionV5")
3277 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
3278 Counter{cRestSubReqFromXapp, 3},
3279 Counter{cRestSubRespToXapp, 3},
3280 Counter{cSubReqToE2, 2},
3281 Counter{cSubRespFromE2, 2},
3282 Counter{cRestSubNotifToXapp, 4},
3283 Counter{cRestSubDelReqFromXapp, 1},
3284 Counter{cSubDelReqToE2, 2},
3285 Counter{cSubDelRespFromE2, 2},
3286 Counter{cRestSubDelRespToXapp, 1},
3289 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
3291 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
3293 <-time.After(100 * time.Millisecond)
3295 // Send modified requst, this time with e2 subscriptions.
3296 params2 := xappConn1.GetRESTSubsReqReportParams(subReqCount + 1)
3297 params2.SetSubscriptionID(&restSubId)
3299 xapp.Subscription.SetResponseCB(xappConn1.SubscriptionRespHandler)
3300 xappConn1.ExpectAnyNotification(t)
3301 // Resend the original request with an additional e2 subscription (detail), this time with restsubsid
3302 restSubId_resend := xappConn1.SendRESTSubsReq(t, params2)
3304 e2SubsId1 := xappConn1.WaitAnyRESTNotification(t)
3305 assert.Equal(t, e2SubsId, e2SubsId1)
3306 // The first E2 subscription returns immediately, manually decrement expected request count for the remaining request handling
3307 xappConn1.DecrementRequestCount()
3309 crereq2, cremsg2 := e2termConn1.RecvSubsReq(t)
3311 xappConn1.ExpectRESTNotification(t, restSubId_resend)
3312 e2termConn1.SendSubsResp(t, crereq2, cremsg2)
3313 e2SubsId2 := xappConn1.WaitRESTNotification(t, restSubId_resend)
3314 assert.NotEqual(t, e2SubsId2, 0)
3316 <-time.After(100 * time.Millisecond)
3318 xapp.Subscription.SetResponseCB(xappConn1.SubscriptionRespHandler)
3319 params = xappConn1.GetRESTSubsReqReportParams(subReqCount)
3320 xappConn1.ExpectAnyNotification(t)
3321 // Resend the original request again with only one e2 subscription (detail), WITHOUT restsubsid
3322 // md5sum shall find the original request
3323 restSubId_resend2 := xappConn1.SendRESTSubsReq(t, params)
3324 assert.Equal(t, restSubId_resend, restSubId_resend2)
3326 e2SubsId1 = xappConn1.WaitAnyRESTNotification(t)
3327 assert.Equal(t, e2SubsId, e2SubsId1)
3329 // Delete both e2 subscriptions
3330 xappConn1.SendRESTSubsDelReq(t, &restSubId)
3331 e2SubsIds := []uint32{e2SubsId, e2SubsId2}
3332 sendAndReceiveMultipleE2DelReqs(t, e2SubsIds, e2termConn1)
3334 waitSubsCleanup(t, e2SubsId, 10)
3336 //Wait that subs is cleaned
3337 mainCtrl.VerifyCounterValues(t)
3340 //-----------------------------------------------------------------------------
3342 // +-------+ +---------+ +---------+ +---------+
3343 // | xapp | | submgr | | e2term | | rtmgr |
3344 // +-------+ +---------+ +---------+ +---------+
3346 // | RESTSubReq | | |
3347 // |---------------->| | |
3348 // | RESTSubResp | | |
3349 // |<----------------| | |
3350 // | | RouteCreate | |
3351 // | |--------------------------->|
3352 // | | RouteResponse| |
3353 // | |<---------------------------|
3355 // | |------------->| |
3357 // | |<-------------| |
3358 // | RESTNotif1 | | |
3359 // |<----------------| | |
3360 // | RESTSubReq | | |
3361 // | [with RestSUbsId + one additional e2 subDetail]
3362 // |---------------->| | |
3363 // | RESTNotif1 | | |
3364 // | [for initial e2 subDetail] | |
3365 // |<----------------| | |
3366 // | | RouteCreate | |
3367 // | |--------------------------->|
3368 // | | RouteResponse| |
3369 // | |<---------------------------|
3371 // | |------------->| |
3373 // | |<-------------| |
3374 // | RESTNotif1 | | |
3375 // |<----------------| | |
3376 // | RESTSubDelReq | | |
3377 // |---------------->| | |
3378 // | RESTSubDelResp| | |
3379 // |<----------------| | |
3380 // | | SubDelReq | |
3381 // | |------------->| |
3382 // | | SubDelResp | |
3383 // | |<-------------| |
3384 // | | SubDelReq | |
3385 // | |------------->| |
3386 // | | SubDelResp | |
3387 // | |<-------------| |
3388 // | RESTSubReq | | |
3389 // | [with RESTsubsId initial request] |
3390 // |---------------->| | |
3391 // | RESTSubResp | | |
3392 // |<----------------| | |
3393 // | | RouteCreate | |
3394 // | |--------------------------->|
3395 // | | RouteResponse| |
3396 // | |<---------------------------|
3398 // | |------------->| |
3400 // | |<-------------| |
3401 // | RESTNotif1 | | |
3402 // |<----------------| | |
3405 //-----------------------------------------------------------------------------
3406 func TestRESTSubReqRetransmissionV6(t *testing.T) {
3407 CaseBegin("TestRESTSubReqRetransmissionV6")
3409 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
3410 Counter{cRestSubReqFromXapp, 3},
3411 Counter{cRestSubRespToXapp, 3},
3412 Counter{cSubReqToE2, 3},
3413 Counter{cSubRespFromE2, 3},
3414 Counter{cRestSubNotifToXapp, 4},
3415 Counter{cRestSubDelReqFromXapp, 2},
3416 Counter{cSubDelReqToE2, 3},
3417 Counter{cSubDelRespFromE2, 3},
3418 Counter{cRestSubDelRespToXapp, 2},
3421 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
3423 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
3425 <-time.After(100 * time.Millisecond)
3427 // Send modified requst, this time with e2 subscriptions.
3428 params2 := xappConn1.GetRESTSubsReqReportParams(subReqCount + 1)
3429 params2.SetSubscriptionID(&restSubId)
3431 xapp.Subscription.SetResponseCB(xappConn1.SubscriptionRespHandler)
3432 xappConn1.ExpectAnyNotification(t)
3433 // Resend the original request with an additional e2 subscription (detail), this time with restsubsid
3434 restSubId_resend := xappConn1.SendRESTSubsReq(t, params2)
3436 e2SubsId1 := xappConn1.WaitAnyRESTNotification(t)
3437 assert.Equal(t, e2SubsId, e2SubsId1)
3439 crereq2, cremsg2 := e2termConn1.RecvSubsReq(t)
3441 xappConn1.ExpectRESTNotification(t, restSubId_resend)
3442 e2termConn1.SendSubsResp(t, crereq2, cremsg2)
3443 e2SubsId2 := xappConn1.WaitRESTNotification(t, restSubId_resend)
3444 assert.NotEqual(t, e2SubsId2, 0)
3446 <-time.After(100 * time.Millisecond)
3448 // Delete both e2 subscriptions
3449 xappConn1.SendRESTSubsDelReq(t, &restSubId)
3450 e2SubsIds := []uint32{e2SubsId, e2SubsId2}
3451 sendAndReceiveMultipleE2DelReqs(t, e2SubsIds, e2termConn1)
3453 waitSubsCleanup(t, e2SubsId, 10)
3455 // Resend the original request, we shall find it's previous md5sum/restsubs
3456 // but the restsubscription has been already removed. This shall trigger a
3458 restSubId, e2SubsId = createSubscription(t, xappConn1, e2termConn1, params)
3460 <-time.After(100 * time.Millisecond)
3462 deleteSubscription(t, xappConn1, e2termConn1, &restSubId)
3464 waitSubsCleanup(t, e2SubsId, 10)
3466 //Wait that subs is cleaned
3467 mainCtrl.VerifyCounterValues(t)
3470 func TestRESTSubDelReqRetransmission(t *testing.T) {
3471 CaseBegin("TestRESTSubDelReqRetransmission")
3473 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
3474 Counter{cRestSubReqFromXapp, 1},
3475 Counter{cRestSubRespToXapp, 1},
3476 Counter{cSubReqToE2, 1},
3477 Counter{cSubRespFromE2, 1},
3478 Counter{cRestSubNotifToXapp, 1},
3479 Counter{cRestSubDelReqFromXapp, 2},
3480 Counter{cSubDelReqToE2, 1},
3481 Counter{cSubDelRespFromE2, 1},
3482 Counter{cRestSubDelRespToXapp, 1},
3485 var params *teststube2ap.RESTSubsReqParams = nil
3488 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
3490 queryXappSubscription(t, int64(e2SubsId), "RAN_NAME_1", []string{"localhost:13560"})
3493 xappConn1.SendRESTSubsDelReq(t, &restSubId)
3494 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
3496 seqBef := mainCtrl.get_msgcounter(t)
3497 xappConn1.SendRESTSubsDelReq(t, &restSubId)
3498 mainCtrl.wait_msgcounter_change(t, seqBef, 10)
3500 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
3502 waitSubsCleanup(t, e2SubsId, 10)
3504 mainCtrl.VerifyCounterValues(t)
3507 //-----------------------------------------------------------------------------
3508 // TestRESTSubReqDelReq
3511 // +-------+ +---------+ +---------+
3512 // | xapp | | submgr | | e2term |
3513 // +-------+ +---------+ +---------+
3516 // |---------------->| |
3518 // | RESTSubResp | |
3519 // |<----------------| |
3521 // | |------------->|
3522 // | RESTSubDelReq | |
3523 // |---------------->| |
3524 // | RESTSubDelResp | |
3526 // |<----------------| |
3528 // | |<-------------|
3530 // |<----------------| |
3532 // | [SUBS DELETE] |
3535 //-----------------------------------------------------------------------------
3536 func TestRESTSubReqDelReq(t *testing.T) {
3537 CaseBegin("TestRESTSubReqDelReq")
3539 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
3540 Counter{cRestSubReqFromXapp, 1},
3541 Counter{cRestSubRespToXapp, 1},
3542 Counter{cSubReqToE2, 1},
3543 Counter{cSubRespFromE2, 1},
3544 Counter{cRestSubNotifToXapp, 1},
3545 Counter{cRestSubDelReqFromXapp, 2},
3546 Counter{cSubDelReqToE2, 1},
3547 Counter{cSubDelRespFromE2, 1},
3548 Counter{cRestSubDelRespToXapp, 1},
3551 const subReqCount int = 1
3554 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
3555 restSubId := xappConn1.SendRESTSubsReq(t, params)
3557 // Del. This will fail as processing of the subscription
3558 // is still ongoing in submgr. Deletion is not allowed before
3559 // subscription creation has been completed.
3560 xappConn1.SendRESTSubsDelReq(t, &restSubId)
3561 crereq, cremsg := e2termConn1.RecvSubsReq(t)
3562 xappConn1.ExpectRESTNotification(t, restSubId)
3563 e2termConn1.SendSubsResp(t, crereq, cremsg)
3564 e2SubsId := xappConn1.WaitRESTNotification(t, restSubId)
3567 xappConn1.SendRESTSubsDelReq(t, &restSubId)
3569 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
3570 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
3572 // Wait that subs is cleaned
3573 waitSubsCleanup(t, e2SubsId, 10)
3574 mainCtrl.VerifyCounterValues(t)
3578 func TestRESTSubDelReqCollision(t *testing.T) {
3579 CaseBegin("TestRESTSubDelReqCollision - not relevant for REST API")
3582 func TestRESTSubReqAndSubDelOkTwoParallel(t *testing.T) {
3583 CaseBegin("TestRESTSubReqAndSubDelOkTwoParallel")
3585 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
3586 Counter{cRestSubReqFromXapp, 2},
3587 Counter{cRestSubRespToXapp, 2},
3588 Counter{cSubReqToE2, 2},
3589 Counter{cSubRespFromE2, 2},
3590 Counter{cRestSubNotifToXapp, 2},
3591 Counter{cRestSubDelReqFromXapp, 2},
3592 Counter{cSubDelReqToE2, 2},
3593 Counter{cSubDelRespFromE2, 2},
3594 Counter{cRestSubDelRespToXapp, 2},
3598 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
3599 restSubId1 := xappConn1.SendRESTSubsReq(t, params)
3600 xapp.Logger.Debug("Send 1st REST subscriber request for subscriberId : %v", restSubId1)
3603 params = xappConn2.GetRESTSubsReqReportParams(subReqCount)
3604 restSubId2 := xappConn2.SendRESTSubsReq(t, params)
3605 xapp.Logger.Debug("Send 2nd REST subscriber request for subscriberId : %v", restSubId2)
3607 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
3608 crereq2, cremsg2 := e2termConn1.RecvSubsReq(t)
3610 //XappConn1 receives both of the responses
3611 xappConn1.WaitListedRestNotifications(t, []string{restSubId1, restSubId2})
3614 e2termConn1.SendSubsResp(t, crereq1, cremsg1)
3616 e2termConn1.SendSubsResp(t, crereq2, cremsg2)
3618 e2SubsIdA := <-xappConn1.ListedRESTNotifications
3619 xapp.Logger.Debug("TEST: 1.st XAPP notification received e2SubsId=%v", e2SubsIdA)
3620 e2SubsIdB := <-xappConn1.ListedRESTNotifications
3621 xapp.Logger.Debug("TEST: 2.nd XAPP notification received e2SubsId=%v", e2SubsIdB)
3624 deleteSubscription(t, xappConn1, e2termConn1, &restSubId1)
3626 deleteSubscription(t, xappConn2, e2termConn1, &restSubId2)
3628 //Wait that subs is cleaned
3629 mainCtrl.wait_subs_clean(t, e2SubsIdA.E2SubsId, 10)
3630 waitSubsCleanup(t, e2SubsIdB.E2SubsId, 10)
3632 mainCtrl.VerifyCounterValues(t)
3636 func TestRESTSameSubsDiffRan(t *testing.T) {
3637 CaseBegin("TestRESTSameSubsDiffRan")
3639 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
3640 Counter{cRestSubReqFromXapp, 2},
3641 Counter{cRestSubRespToXapp, 2},
3642 Counter{cSubReqToE2, 2},
3643 Counter{cSubRespFromE2, 2},
3644 Counter{cRestSubNotifToXapp, 2},
3645 Counter{cRestSubDelReqFromXapp, 2},
3646 Counter{cSubDelReqToE2, 2},
3647 Counter{cSubDelRespFromE2, 2},
3648 Counter{cRestSubDelRespToXapp, 2},
3651 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
3652 restSubId1, e2SubsId1 := createSubscription(t, xappConn1, e2termConn1, params)
3653 xapp.Logger.Debug("Send 1st REST subscriber request for subscriberId : %v", restSubId1)
3655 params = xappConn1.GetRESTSubsReqReportParams(subReqCount)
3656 params.SetMeid("RAN_NAME_2")
3657 restSubId2, e2SubsId2 := createSubscription(t, xappConn1, e2termConn1, params)
3658 xapp.Logger.Debug("Send 2nd REST subscriber request for subscriberId : %v", restSubId2)
3661 deleteSubscription(t, xappConn1, e2termConn1, &restSubId1)
3663 deleteSubscription(t, xappConn1, e2termConn1, &restSubId2)
3665 //Wait that subs is cleaned
3666 mainCtrl.wait_subs_clean(t, e2SubsId1, 10)
3667 waitSubsCleanup(t, e2SubsId2, 10)
3669 mainCtrl.VerifyCounterValues(t)
3673 func TestRESTSubReqRetryInSubmgr(t *testing.T) {
3674 CaseBegin("TestRESTSubReqRetryInSubmgr start")
3676 // Init counter check
3677 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
3678 Counter{cRestSubReqFromXapp, 1},
3679 Counter{cRestSubRespToXapp, 1},
3680 Counter{cSubReqToE2, 1},
3681 Counter{cSubReReqToE2, 1},
3682 Counter{cSubRespFromE2, 1},
3683 Counter{cRestSubNotifToXapp, 1},
3684 Counter{cRestSubDelReqFromXapp, 1},
3685 Counter{cSubDelReqToE2, 1},
3686 Counter{cSubDelRespFromE2, 1},
3687 Counter{cRestSubDelRespToXapp, 1},
3690 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
3691 restSubId := xappConn1.SendRESTSubsReq(t, params)
3693 xapp.Logger.Debug("Send REST subscriber request for subscriber : %v", restSubId)
3695 // Catch the first message and ignore it
3696 crereq, cremsg := e2termConn1.RecvSubsReq(t)
3697 xapp.Logger.Debug("Ignore REST subscriber request for subscriber : %v", restSubId)
3699 // The second request is being handled normally
3700 crereq, cremsg = e2termConn1.RecvSubsReq(t)
3701 xappConn1.ExpectRESTNotification(t, restSubId)
3702 e2termConn1.SendSubsResp(t, crereq, cremsg)
3703 e2SubsId := xappConn1.WaitRESTNotification(t, restSubId)
3705 queryXappSubscription(t, int64(e2SubsId), "RAN_NAME_1", []string{"localhost:13560"})
3707 deleteSubscription(t, xappConn1, e2termConn1, &restSubId)
3709 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
3710 //Wait that subs is cleaned
3711 waitSubsCleanup(t, e2SubsId, 10)
3713 mainCtrl.VerifyCounterValues(t)
3717 //-----------------------------------------------------------------------------
3718 // TestRESTSubReqTwoRetriesNoRespSubDelRespInSubmgr
3721 // +-------+ +---------+ +---------+
3722 // | xapp | | submgr | | e2term |
3723 // +-------+ +---------+ +---------+
3726 // |---------------->| |
3728 // | RESTSubResp | |
3729 // |<----------------| |
3731 // | |------------->|
3735 // | |------------->|
3738 // | |------------->|
3742 // | |------------->|
3746 // | |<-------------|
3749 // |<----------------| |
3751 // | [SUBS DELETE] |
3754 //-----------------------------------------------------------------------------
3756 func TestRESTSubReqRetryNoRespSubDelRespInSubmgr(t *testing.T) {
3757 CaseBegin("TestRESTSubReqTwoRetriesNoRespSubDelRespInSubmgr start")
3759 // Init counter check
3760 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
3761 Counter{cRestSubReqFromXapp, 1},
3762 Counter{cRestSubRespToXapp, 1},
3763 Counter{cSubReqToE2, 1},
3764 Counter{cSubReReqToE2, 1},
3765 Counter{cSubReqTimerExpiry, 2},
3766 Counter{cSubDelReqToE2, 1},
3767 Counter{cSubDelRespFromE2, 1},
3770 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
3771 restSubId := xappConn1.SendRESTSubsReq(t, params)
3772 xapp.Logger.Debug("Send REST subscriber request for subscriber : %v", restSubId)
3774 e2termConn1.RecvSubsReq(t)
3775 xapp.Logger.Debug("Ignore 1st REST subscriber request for subscriber : %v", restSubId)
3777 e2termConn1.RecvSubsReq(t)
3778 xapp.Logger.Debug("Ignore 2nd REST subscriber request for subscriber : %v", restSubId)
3780 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
3781 xappConn1.ExpectRESTNotificationNok(t, restSubId, "allFail")
3782 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
3783 xappConn1.WaitRESTNotification(t, restSubId)
3785 // Wait that subs is cleaned
3786 waitSubsCleanup(t, delreq.RequestId.InstanceId, 10)
3788 mainCtrl.VerifyCounterValues(t)
3791 func TestREST2eTermNotRespondingToSubReq(t *testing.T) {
3792 CaseBegin("TestREST2eTermNotRespondingToSubReq start")
3794 // Init counter check
3795 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
3796 Counter{cRestSubReqFromXapp, 1},
3797 Counter{cRestSubRespToXapp, 1},
3798 Counter{cSubReqToE2, 1},
3799 Counter{cSubReReqToE2, 1},
3800 Counter{cSubReqTimerExpiry, 2},
3801 Counter{cSubDelReqToE2, 1},
3802 Counter{cSubDelReqTimerExpiry, 2},
3805 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
3806 restSubId := xappConn1.SendRESTSubsReq(t, params)
3807 xapp.Logger.Debug("Send REST subscriber request for subscriber : %v", restSubId)
3809 e2termConn1.RecvSubsReq(t)
3810 xapp.Logger.Debug("Ignore 1st REST subscriber request for subscriber : %v", restSubId)
3812 e2termConn1.RecvSubsReq(t)
3813 xapp.Logger.Debug("Ignore 2nd REST subscriber request for subscriber : %v", restSubId)
3815 e2termConn1.RecvSubsDelReq(t)
3816 xapp.Logger.Debug("Ignore 1st INTERNAL delete request for subscriber : %v", restSubId)
3818 xappConn1.ExpectRESTNotificationNok(t, restSubId, "allFail")
3819 e2termConn1.RecvSubsDelReq(t)
3820 xapp.Logger.Debug("Ignore 2nd INTERNAL delete request for subscriber : %v", restSubId)
3822 e2SubsId := xappConn1.WaitRESTNotification(t, restSubId)
3824 waitSubsCleanup(t, e2SubsId, 10)
3826 mainCtrl.VerifyCounterValues(t)
3830 //-----------------------------------------------------------------------------
3831 // TestRESTSubReqTwoRetriesNoRespSubDelRespInSubmgr
3834 // +-------+ +---------+ +---------+
3835 // | xapp | | submgr | | e2term |
3836 // +-------+ +---------+ +---------+
3839 // |---------------->| |
3841 // | RESTSubResp | |
3842 // |<----------------| |
3844 // | |------------->|
3848 // | |------------->|
3851 // | |------------->|
3855 // | |------------->|
3859 // | |<-------------|
3862 // |<----------------| |
3864 // | [SUBS DELETE] |
3867 //-----------------------------------------------------------------------------
3868 func TestRESTSubReqTwoRetriesNoRespAtAllInSubmgr(t *testing.T) {
3869 CaseBegin("TestRESTSubReqTwoRetriesNoRespAtAllInSubmgr start")
3871 // Init counter check
3872 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
3873 Counter{cRestSubReqFromXapp, 1},
3874 Counter{cRestSubRespToXapp, 1},
3875 Counter{cSubReqToE2, 1},
3876 Counter{cSubReReqToE2, 1},
3877 Counter{cSubReqTimerExpiry, 2},
3878 Counter{cSubDelReqToE2, 1},
3879 Counter{cSubDelReReqToE2, 1},
3880 Counter{cSubDelReqTimerExpiry, 2},
3883 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
3884 restSubId := xappConn1.SendRESTSubsReq(t, params)
3885 xapp.Logger.Debug("Send REST subscriber request for subscriber : %v", restSubId)
3887 e2termConn1.RecvSubsReq(t)
3888 xapp.Logger.Debug("Ignore 1st REST subscriber request for subscriber : %v", restSubId)
3890 e2termConn1.RecvSubsReq(t)
3891 xapp.Logger.Debug("Ignore 2nd REST subscriber request for subscriber : %v", restSubId)
3893 e2termConn1.RecvSubsDelReq(t)
3894 xapp.Logger.Debug("Ignore 1st INTERNAL delete request for subscriber : %v", restSubId)
3896 xappConn1.ExpectRESTNotificationNok(t, restSubId, "allFail")
3897 e2termConn1.RecvSubsDelReq(t)
3898 xapp.Logger.Debug("Ignore 2nd INTERNAL delete request for subscriber : %v", restSubId)
3900 e2SubsId := xappConn1.WaitRESTNotification(t, restSubId)
3902 waitSubsCleanup(t, e2SubsId, 10)
3904 mainCtrl.VerifyCounterValues(t)
3907 //-----------------------------------------------------------------------------
3908 // TestRESTSubReqSubFailRespInSubmgr
3911 // +-------+ +---------+ +---------+
3912 // | xapp | | submgr | | e2term |
3913 // +-------+ +---------+ +---------+
3916 // |---------------->| |
3918 // | RESTSubResp | |
3919 // |<----------------| |
3921 // | |------------->|
3924 // | |<-------------|
3927 // | |------------->|
3930 // | |<-------------|
3934 // |<----------------| |
3936 // | [SUBS DELETE] |
3939 //-----------------------------------------------------------------------------
3940 func TestRESTSubReqSubFailRespInSubmgr(t *testing.T) {
3941 CaseBegin("TestRESTSubReqSubFailRespInSubmgr")
3943 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
3944 Counter{cRestSubReqFromXapp, 1},
3945 Counter{cRestSubRespToXapp, 1},
3946 Counter{cSubReqToE2, 1},
3947 Counter{cSubFailFromE2, 1},
3948 Counter{cRestSubFailNotifToXapp, 1},
3949 Counter{cRestSubDelReqFromXapp, 1},
3952 const subReqCount int = 1
3953 const e2Timeout int64 = 2
3954 const e2RetryCount int64 = 1
3955 const routingNeeded bool = true
3957 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
3958 params.SetSubscriptionDirectives(e2Timeout, e2RetryCount, routingNeeded)
3959 restSubId := xappConn1.SendRESTSubsReq(t, params)
3961 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
3962 fparams1 := &teststube2ap.E2StubSubsFailParams{}
3963 fparams1.Set(crereq1)
3964 e2termConn1.SendSubsFail(t, fparams1, cremsg1)
3966 delreq1, delmsg1 := e2termConn1.RecvSubsDelReq(t)
3967 xappConn1.ExpectRESTNotificationNok(t, restSubId, "allFail")
3968 e2termConn1.SendSubsDelResp(t, delreq1, delmsg1)
3969 e2SubsId := xappConn1.WaitRESTNotification(t, restSubId)
3970 xapp.Logger.Debug("TEST: REST notification received e2SubsId=%v", e2SubsId)
3972 // REST subscription sill there to be deleted
3973 xappConn1.SendRESTSubsDelReq(t, &restSubId)
3975 // Wait that subs is cleaned
3976 waitSubsCleanup(t, e2SubsId, 10)
3978 mainCtrl.VerifyCounterValues(t)
3982 //-----------------------------------------------------------------------------
3983 // TestRESTSubDelReqRetryInSubmgr
3986 // +-------+ +---------+ +---------+
3987 // | xapp | | submgr | | e2term |
3988 // +-------+ +---------+ +---------+
3990 // | [SUBS CREATE] |
3993 // | RESTSubDelReq | |
3994 // |---------------->| |
3996 // | RESTSubDelResp | |
3997 // |<----------------| |
3999 // | |------------->|
4002 // | |------------->|
4005 // | |<-------------|
4008 //-----------------------------------------------------------------------------
4009 func TestRESTSubDelReqRetryInSubmgr(t *testing.T) {
4010 CaseBegin("TestRESTSubDelReqRetryInSubmgr")
4012 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
4013 Counter{cRestSubReqFromXapp, 1},
4014 Counter{cRestSubRespToXapp, 1},
4015 Counter{cSubReqToE2, 1},
4016 Counter{cSubRespFromE2, 1},
4017 Counter{cRestSubNotifToXapp, 1},
4018 Counter{cRestSubDelReqFromXapp, 1},
4019 Counter{cSubDelReqToE2, 1},
4020 Counter{cSubDelReReqToE2, 1},
4021 Counter{cSubDelRespFromE2, 1},
4022 Counter{cRestSubDelRespToXapp, 1},
4025 var params *teststube2ap.RESTSubsReqParams = nil
4026 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
4029 xappConn1.SendRESTSubsDelReq(t, &restSubId)
4031 // E2t: Receive 1st SubsDelReq
4032 e2termConn1.RecvSubsDelReq(t)
4034 // E2t: Receive 2nd SubsDelReq and send SubsDelResp
4035 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
4036 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
4038 //Wait that subs is cleaned
4039 waitSubsCleanup(t, e2SubsId, 10)
4041 mainCtrl.VerifyCounterValues(t)
4044 //-----------------------------------------------------------------------------
4045 // TestRESTSubDelReqTwoRetriesNoRespInSubmgr
4048 // +-------+ +---------+ +---------+
4049 // | xapp | | submgr | | e2term |
4050 // +-------+ +---------+ +---------+
4052 // | [SUBS CREATE] |
4055 // | RESTSubDelReq | |
4056 // |---------------->| |
4058 // | RESTSubDelResp | |
4059 // |<----------------| |
4061 // | |------------->|
4064 // | |------------->|
4068 //-----------------------------------------------------------------------------
4069 func TestRESTSubDelReqTwoRetriesNoRespInSubmgr(t *testing.T) {
4070 CaseBegin("TestRESTSubDelReTwoRetriesNoRespInSubmgr")
4072 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
4073 Counter{cRestSubReqFromXapp, 1},
4074 Counter{cRestSubRespToXapp, 1},
4075 Counter{cSubReqToE2, 1},
4076 Counter{cSubRespFromE2, 1},
4077 Counter{cRestSubNotifToXapp, 1},
4078 Counter{cRestSubDelReqFromXapp, 1},
4079 Counter{cSubDelReqToE2, 1},
4080 Counter{cSubDelReReqToE2, 1},
4081 Counter{cSubDelRespFromE2, 1},
4082 Counter{cRestSubDelRespToXapp, 1},
4086 var params *teststube2ap.RESTSubsReqParams = nil
4087 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
4090 xappConn1.SendRESTSubsDelReq(t, &restSubId)
4092 // E2t: Receive 1st SubsDelReq
4093 e2termConn1.RecvSubsDelReq(t)
4095 // E2t: Receive 2nd SubsDelReq and send SubsDelResp
4096 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
4097 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
4099 //Wait that subs is cleaned
4100 waitSubsCleanup(t, e2SubsId, 10)
4102 mainCtrl.VerifyCounterValues(t)
4105 //-----------------------------------------------------------------------------
4106 // TestRESTSubDelReqSubDelFailRespInSubmgr
4109 // +-------+ +---------+ +---------+
4110 // | xapp | | submgr | | e2term |
4111 // +-------+ +---------+ +---------+
4113 // | [SUBS CREATE] |
4116 // | RESTSubDelReq | |
4117 // |---------------->| |
4119 // | RESTSubDelResp | |
4120 // |<----------------| |
4122 // | |------------->|
4125 // | |<-------------|
4128 //-----------------------------------------------------------------------------
4129 func TestRESTSubDelReqSubDelFailRespInSubmgr(t *testing.T) {
4130 CaseBegin("TestRESTSubDelReqSubDelFailRespInSubmgr")
4132 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
4133 Counter{cRestSubReqFromXapp, 1},
4134 Counter{cRestSubRespToXapp, 1},
4135 Counter{cSubReqToE2, 1},
4136 Counter{cSubRespFromE2, 1},
4137 Counter{cRestSubNotifToXapp, 1},
4138 Counter{cRestSubDelReqFromXapp, 1},
4139 Counter{cSubDelReqToE2, 1},
4140 Counter{cSubDelFailFromE2, 1},
4141 Counter{cRestSubDelRespToXapp, 1},
4145 var params *teststube2ap.RESTSubsReqParams = nil
4146 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
4149 xappConn1.SendRESTSubsDelReq(t, &restSubId)
4151 // E2t: Send receive SubsDelReq and send SubsDelFail
4152 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
4153 e2termConn1.SendSubsDelFail(t, delreq, delmsg)
4155 //Wait that subs is cleaned
4156 waitSubsCleanup(t, e2SubsId, 10)
4158 mainCtrl.VerifyCounterValues(t)
4161 //-----------------------------------------------------------------------------
4162 // TestRESTSubReqAndSubDelOkSameAction
4165 // +-------+ +-------+ +---------+ +---------+
4166 // | xapp2 | | xapp1 | | submgr | | e2term |
4167 // +-------+ +-------+ +---------+ +---------+
4169 // | | RESTSubReq1 | |
4170 // | |---------------->| |
4172 // | | RESTSubResp1 | |
4173 // | |<----------------| |
4176 // | | |------------->|
4178 // | | |<-------------|
4179 // | | RESTNotif1 | |
4180 // | |<----------------| |
4182 // | RESTSubReq2 | |
4183 // |------------------------------>| |
4185 // | RESTSubResp2 | |
4186 // |<------------------------------| |
4188 // | | RESTNotif2 | |
4189 // |<------------------------------| |
4191 // | | RESTSubDelReq1 | |
4192 // | |---------------->| |
4194 // | | RESTSubDelResp1 | |
4195 // | |<----------------| |
4197 // | RESTSubDelReq2 | |
4198 // |------------------------------>| |
4200 // | RESTSubDelResp2 | |
4201 // |<------------------------------| |
4203 // | | | SubDelReq2 |
4204 // | | |------------->|
4206 // | | | SubDelResp2 |
4207 // | | |<-------------|
4210 //-----------------------------------------------------------------------------
4211 func TestRESTSubReqAndSubDelOkSameAction(t *testing.T) {
4212 CaseBegin("TestRESTSubReqAndSubDelOkSameAction")
4214 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
4215 Counter{cRestSubReqFromXapp, 2},
4216 Counter{cRestSubRespToXapp, 2},
4217 Counter{cSubReqToE2, 1},
4218 Counter{cSubRespFromE2, 1},
4219 Counter{cRestSubNotifToXapp, 2},
4220 Counter{cMergedSubscriptions, 1},
4221 Counter{cUnmergedSubscriptions, 1},
4222 Counter{cRestSubDelReqFromXapp, 2},
4223 Counter{cSubDelReqToE2, 1},
4224 Counter{cSubDelRespFromE2, 1},
4225 Counter{cRestSubDelRespToXapp, 2},
4229 var params *teststube2ap.RESTSubsReqParams = nil
4232 restSubId1, e2SubsId1 := createSubscription(t, xappConn1, e2termConn1, params)
4233 queryXappSubscription(t, int64(e2SubsId1), "RAN_NAME_1", []string{"localhost:13560"})
4236 params = xappConn2.GetRESTSubsReqReportParams(subReqCount)
4237 params.SetMeid("RAN_NAME_1")
4239 xapp.Subscription.SetResponseCB(xappConn2.SubscriptionRespHandler)
4240 xappConn2.ExpectAnyNotification(t)
4241 waiter := rtmgrHttp.AllocNextSleep(10, true)
4242 restSubId2 := xappConn2.SendRESTSubsReq(t, params)
4243 waiter.WaitResult(t)
4244 xapp.Logger.Debug("Send REST subscriber request for subscriberId : %v", restSubId2)
4245 e2SubsId2 := xappConn2.WaitAnyRESTNotification(t)
4246 xapp.Logger.Debug("REST notification received e2SubsId=%v", e2SubsId2)
4248 queryXappSubscription(t, int64(e2SubsId1), "RAN_NAME_1", []string{"localhost:13560", "localhost:13660"})
4251 xappConn1.SendRESTSubsDelReq(t, &restSubId1)
4254 deleteXapp2Subscription(t, &restSubId2)
4256 //Wait that subs is cleaned
4257 waitSubsCleanup(t, e2SubsId2, 10)
4259 mainCtrl.VerifyCounterValues(t)
4262 //-----------------------------------------------------------------------------
4263 // TestSubReqAndSubDelOkSameActionParallel
4266 // +-------+ +-------+ +---------+ +---------+
4267 // | xapp2 | | xapp1 | | submgr | | e2term |
4268 // +-------+ +-------+ +---------+ +---------+
4273 // | |------------->| |
4276 // | | |------------->|
4278 // |--------------------------->| |
4280 // | | |<-------------|
4282 // | |<-------------| |
4284 // | | |------------->|
4287 // | | |<-------------|
4289 // |<---------------------------| |
4291 // | | SubDelReq 1 | |
4292 // | |------------->| |
4294 // | | SubDelResp 1 | |
4295 // | |<-------------| |
4297 // | SubDelReq 2 | |
4298 // |--------------------------->| |
4300 // | | | SubDelReq 2 |
4301 // | | |------------->|
4303 // | | | SubDelReq 2 |
4304 // | | |------------->|
4306 // | SubDelResp 2 | |
4307 // |<---------------------------| |
4309 func TestRESTSubReqAndSubDelOkSameActionParallel(t *testing.T) {
4310 CaseBegin("TestRESTSubReqAndSubDelOkSameActionParallel")
4312 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
4313 Counter{cRestSubReqFromXapp, 2},
4314 Counter{cRestSubRespToXapp, 2},
4315 Counter{cSubReqToE2, 2},
4316 Counter{cSubRespFromE2, 2},
4317 Counter{cRestSubNotifToXapp, 2},
4318 Counter{cRestSubDelReqFromXapp, 2},
4319 Counter{cSubDelReqToE2, 2},
4320 Counter{cSubDelRespFromE2, 2},
4321 Counter{cRestSubDelRespToXapp, 2},
4324 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
4325 restSubId1 := xappConn1.SendRESTSubsReq(t, params)
4326 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
4328 params2 := xappConn2.GetRESTSubsReqReportParams(subReqCount)
4329 restSubId2 := xappConn2.SendRESTSubsReq(t, params2)
4331 xappConn1.ExpectRESTNotification(t, restSubId1)
4332 e2termConn1.SendSubsResp(t, crereq1, cremsg1)
4333 e2SubsId1 := xappConn1.WaitRESTNotification(t, restSubId1)
4335 xappConn2.ExpectRESTNotification(t, restSubId2)
4336 crereq2, cremsg2 := e2termConn1.RecvSubsReq(t)
4337 e2termConn1.SendSubsResp(t, crereq2, cremsg2)
4338 e2SubsId2 := xappConn2.WaitRESTNotification(t, restSubId2)
4341 xappConn1.SendRESTSubsDelReq(t, &restSubId1)
4342 delreq1, delmsg1 := e2termConn1.RecvSubsDelReq(t)
4343 e2termConn1.SendSubsDelResp(t, delreq1, delmsg1)
4344 mainCtrl.wait_subs_clean(t, e2SubsId1, 10)
4347 xappConn2.SendRESTSubsDelReq(t, &restSubId2)
4348 delreq2, delmsg2 := e2termConn1.RecvSubsDelReq(t)
4349 e2termConn1.SendSubsDelResp(t, delreq2, delmsg2)
4351 waitSubsCleanup(t, e2SubsId2, 10)
4353 mainCtrl.VerifyCounterValues(t)
4356 //-----------------------------------------------------------------------------
4357 // TestRESTSubReqAndSubDelNoAnswerSameActionParallel
4360 // +-------+ +-------+ +---------+ +---------+
4361 // | xapp2 | | xapp1 | | submgr | | e2term |
4362 // +-------+ +-------+ +---------+ +---------+
4366 // | | RESTSubReq1 | |
4367 // | |---------------->| |
4369 // | | RESTSubResp1 | |
4370 // | |<----------------| |
4372 // | | |------------->|
4373 // | RESTSubReq2 | |
4374 // |------------------------------>| |
4376 // | RESTSubDelResp2 | |
4377 // |<------------------------------| |
4379 // | | |------------->|
4382 // | | | SubDelReq |
4383 // | | |------------->|
4385 // | | | SubDelResp |
4386 // | | |<-------------|
4387 // | | RESTNotif1 | |
4388 // | | unsuccess | |
4389 // | |<----------------| |
4391 // | | unsuccess | |
4392 // |<------------------------------| |
4394 // | | RESTSubDelReq1 | |
4395 // | |---------------->| |
4397 // | | RESTSubDelResp1 | |
4398 // | |<----------------| |
4400 // | RESTSubDelReq2 | |
4401 // |------------------------------>| |
4403 // | RESTSubDelResp2 | |
4404 // |<------------------------------| |
4406 //-----------------------------------------------------------------------------
4407 func TestRESTSubReqAndSubDelNoAnswerSameActionParallel(t *testing.T) {
4408 CaseBegin("TestRESTSubReqAndSubDelNoAnswerSameActionParallel")
4410 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
4411 Counter{cRestSubReqFromXapp, 2},
4412 Counter{cRestSubRespToXapp, 2},
4413 Counter{cSubReqToE2, 1},
4414 Counter{cRestSubFailNotifToXapp, 2},
4415 Counter{cRestSubDelReqFromXapp, 2},
4416 Counter{cSubDelReqToE2, 1},
4417 Counter{cSubDelRespFromE2, 1},
4418 Counter{cRestSubDelRespToXapp, 2},
4421 const subReqCount int = 1
4424 params1 := xappConn1.GetRESTSubsReqReportParams(subReqCount)
4425 restSubId1 := xappConn1.SendRESTSubsReq(t, params1)
4426 crereq1, _ := e2termConn1.RecvSubsReq(t)
4429 subepcnt2 := mainCtrl.get_subs_entrypoint_cnt(t, crereq1.RequestId.InstanceId)
4430 params2 := xappConn2.GetRESTSubsReqReportParams(subReqCount)
4431 params2.SetMeid("RAN_NAME_1")
4432 restSubId2 := xappConn2.SendRESTSubsReq(t, params2)
4433 mainCtrl.wait_subs_entrypoint_cnt_change(t, crereq1.RequestId.InstanceId, subepcnt2, 10)
4435 //Req1 (retransmitted)
4436 e2termConn1.RecvSubsReq(t)
4438 delreq1, delmsg1 := e2termConn1.RecvSubsDelReq(t)
4440 xappConn1.WaitListedRestNotifications(t, []string{restSubId1, restSubId2})
4441 e2termConn1.SendSubsDelResp(t, delreq1, delmsg1)
4443 e2SubsIdA := <-xappConn1.ListedRESTNotifications
4444 xapp.Logger.Debug("TEST: 1.st XAPP notification received e2SubsId=%v", e2SubsIdA)
4445 e2SubsIdB := <-xappConn1.ListedRESTNotifications
4446 xapp.Logger.Debug("TEST: 2.nd XAPP notification received e2SubsId=%v", e2SubsIdB)
4449 xappConn1.SendRESTSubsDelReq(t, &restSubId1)
4452 xappConn2.SendRESTSubsDelReq(t, &restSubId2)
4454 mainCtrl.wait_multi_subs_clean(t, []uint32{e2SubsIdA.E2SubsId, e2SubsIdB.E2SubsId}, 10)
4456 //Wait that subs is cleaned
4457 waitSubsCleanup(t, e2SubsIdA.E2SubsId, 10)
4459 mainCtrl.VerifyCounterValues(t)
4462 //-----------------------------------------------------------------------------
4463 // TestRESTSubReqAndSubDelNokSameActionParallel
4466 // +-------+ +-------+ +---------+ +---------+
4467 // | xapp2 | | xapp1 | | submgr | | e2term |
4468 // +-------+ +-------+ +---------+ +---------+
4472 // | | RESTSubReq1 | |
4473 // | |---------------->| |
4475 // | | RESTSubResp1 | |
4476 // | |<----------------| |
4478 // | | |------------->|
4479 // | RESTSubReq2 | |
4480 // |------------------------------>| |
4482 // | RESTSubDelResp2 | |
4483 // |<------------------------------| |
4485 // | | |<-------------|
4487 // | | RESTNotif1 | |
4488 // | | unsuccess | |
4489 // | |<----------------| |
4491 // | | unsuccess | |
4492 // |<------------------------------| |
4493 // | | | SubDelReq |
4494 // | | |------------->|
4495 // | | | SubDelResp |
4496 // | | |<-------------|
4498 // | | RESTSubDelReq1 | |
4499 // | |---------------->| |
4501 // | | RESTSubDelResp1 | |
4502 // | |<----------------| |
4504 // | RESTSubDelReq2 | |
4505 // |------------------------------>| |
4507 // | RESTSubDelResp2 | |
4508 // |<------------------------------| |
4510 //-----------------------------------------------------------------------------
4511 func TestRESTSubReqAndSubDelNokSameActionParallel(t *testing.T) {
4512 CaseBegin("TestRESTSubReqAndSubDelNokSameActionParallel")
4514 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
4515 Counter{cRestSubReqFromXapp, 2},
4516 Counter{cRestSubRespToXapp, 2},
4517 Counter{cSubReqToE2, 1},
4518 Counter{cSubFailFromE2, 1},
4519 Counter{cRestSubFailNotifToXapp, 2},
4520 Counter{cRestSubDelReqFromXapp, 2},
4521 Counter{cSubDelReqToE2, 1},
4522 Counter{cSubDelRespFromE2, 1},
4523 Counter{cRestSubDelRespToXapp, 2},
4526 const subReqCount int = 1
4529 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
4530 restSubId1 := xappConn1.SendRESTSubsReq(t, params)
4531 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
4534 subepcnt2 := mainCtrl.get_subs_entrypoint_cnt(t, crereq1.RequestId.InstanceId)
4535 params2 := xappConn2.GetRESTSubsReqReportParams(subReqCount)
4536 params2.SetMeid("RAN_NAME_1")
4537 restSubId2 := xappConn2.SendRESTSubsReq(t, params2)
4538 mainCtrl.wait_subs_entrypoint_cnt_change(t, crereq1.RequestId.InstanceId, subepcnt2, 10)
4540 // E2t: send SubsFail (first)
4541 fparams1 := &teststube2ap.E2StubSubsFailParams{}
4542 fparams1.Set(crereq1)
4543 e2termConn1.SendSubsFail(t, fparams1, cremsg1)
4545 // E2t: internal delete
4546 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
4547 xappConn1.WaitListedRestNotifications(t, []string{restSubId1, restSubId2})
4548 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
4550 e2SubsIdA := <-xappConn1.ListedRESTNotifications
4551 xapp.Logger.Debug("TEST: 1.st XAPP notification received e2SubsId=%v", e2SubsIdA)
4552 e2SubsIdB := <-xappConn1.ListedRESTNotifications
4553 xapp.Logger.Debug("TEST: 2.nd XAPP notification received e2SubsId=%v", e2SubsIdB)
4556 xappConn1.SendRESTSubsDelReq(t, &restSubId1)
4559 xappConn2.SendRESTSubsDelReq(t, &restSubId2)
4561 //Wait that subs is cleaned
4562 waitSubsCleanup(t, e2SubsIdA.E2SubsId, 10)
4563 waitSubsCleanup(t, e2SubsIdB.E2SubsId, 10)
4565 mainCtrl.VerifyCounterValues(t)
4568 func TestRESTSubReqPolicyAndSubDelOk(t *testing.T) {
4569 CaseBegin("TestRESTSubReqPolicyAndSubDelOk")
4571 // Init counter check
4572 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
4573 Counter{cRestSubReqFromXapp, 1},
4574 Counter{cRestSubRespToXapp, 1},
4575 Counter{cSubReqToE2, 1},
4576 Counter{cSubRespFromE2, 1},
4577 Counter{cRestSubNotifToXapp, 1},
4578 Counter{cRestSubDelReqFromXapp, 1},
4579 Counter{cSubDelReqToE2, 1},
4580 Counter{cSubDelRespFromE2, 1},
4581 Counter{cRestSubDelRespToXapp, 1},
4584 params := xappConn1.GetRESTSubsReqPolicyParams(subReqCount)
4585 restSubId := xappConn1.SendRESTSubsReq(t, params)
4586 xapp.Logger.Debug("Send REST Policy subscriber request for subscriberId : %v", restSubId)
4588 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
4589 xappConn1.ExpectRESTNotification(t, restSubId)
4590 e2termConn1.SendSubsResp(t, crereq1, cremsg1)
4591 e2SubsId := xappConn1.WaitRESTNotification(t, restSubId)
4592 xapp.Logger.Debug("REST notification received e2SubsId=%v", e2SubsId)
4594 xappConn1.SendRESTSubsDelReq(t, &restSubId)
4595 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
4596 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
4598 // Wait that subs is cleaned
4599 waitSubsCleanup(t, e2SubsId, 10)
4600 mainCtrl.VerifyCounterValues(t)
4603 //-----------------------------------------------------------------------------
4604 // TestRESTSubReqPolicyChangeAndSubDelOk
4607 // +-------+ +---------+ +---------+
4608 // | xapp | | submgr | | e2term |
4609 // +-------+ +---------+ +---------+
4612 // |---------------->| |
4614 // | RESTSubResp | |
4615 // |<----------------| |
4617 // | |------------->|
4620 // | |<-------------|
4623 // |<----------------| |
4626 // |---------------->| |
4628 // | RESTSubResp | |
4629 // |<----------------| |
4631 // | |------------->|
4634 // | |<-------------|
4637 // |<----------------| |
4639 // | RESTSubDelReq | |
4640 // |---------------->| |
4643 // | |------------->|
4646 // | |<-------------|
4648 // | RESTSubDelResp | |
4649 // |<----------------| |
4651 //-----------------------------------------------------------------------------
4652 func TestRESTSubReqPolicyChangeAndSubDelOk(t *testing.T) {
4653 CaseBegin("TestRESTSubReqPolicyAndSubDelOk")
4655 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
4656 Counter{cRestSubReqFromXapp, 2},
4657 Counter{cRestSubRespToXapp, 2},
4658 Counter{cSubReqToE2, 2},
4659 Counter{cSubRespFromE2, 2},
4660 Counter{cRestSubNotifToXapp, 2},
4661 Counter{cRestSubDelReqFromXapp, 1},
4662 Counter{cSubDelReqToE2, 1},
4663 Counter{cSubDelRespFromE2, 1},
4664 Counter{cRestSubDelRespToXapp, 1},
4667 const subReqCount int = 1
4668 const e2Timeout int64 = 1
4669 const e2RetryCount int64 = 0
4670 const routingNeeded bool = true
4673 params := xappConn1.GetRESTSubsReqPolicyParams(subReqCount)
4674 params.SetSubscriptionDirectives(e2Timeout, e2RetryCount, routingNeeded)
4675 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
4678 // GetRESTSubsReqPolicyParams sets some counters on tc side.
4680 params = xappConn1.GetRESTSubsReqPolicyParams(subReqCount)
4681 params.SetSubscriptionDirectives(e2Timeout, e2RetryCount, routingNeeded)
4682 params.SetSubscriptionID(&restSubId)
4683 params.SetTimeToWait("w200ms")
4684 restSubId, e2SubsId = createSubscription(t, xappConn1, e2termConn1, params)
4687 xappConn1.SendRESTSubsDelReq(t, &restSubId)
4689 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
4690 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
4692 // Wait that subs is cleaned
4693 waitSubsCleanup(t, e2SubsId, 10)
4694 mainCtrl.VerifyCounterValues(t)
4697 //-----------------------------------------------------------------------------
4698 // TestRESTSubReqPolicyChangeNOk
4701 // +-------+ +---------+ +---------+
4702 // | xapp | | submgr | | e2term |
4703 // +-------+ +---------+ +---------+
4706 // |---------------->| |
4708 // | RESTSubResp | |
4709 // |<----------------| |
4711 // | |------------->|
4714 // | |<-------------|
4717 // |<----------------| |
4720 // |---------------->| |
4722 // | RESTSubUpdateFail(400 Bad request)
4724 // | RESTSubDelReq | |
4725 // |---------------->| |
4728 // | |------------->|
4731 // | |<-------------|
4733 // | RESTSubDelResp | |
4734 // |<----------------| |
4736 //-----------------------------------------------------------------------------
4737 func TestRESTSubReqPolicyChangeNOk(t *testing.T) {
4738 CaseBegin("TestRESTSubReqPolicyChangeNOk")
4740 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
4741 Counter{cRestSubReqFromXapp, 2},
4742 Counter{cRestSubRespToXapp, 1},
4743 Counter{cSubReqToE2, 1},
4744 Counter{cSubRespFromE2, 1},
4745 Counter{cRestSubNotifToXapp, 1},
4746 Counter{cRestSubFailToXapp, 1},
4747 Counter{cRestSubDelReqFromXapp, 1},
4748 Counter{cSubDelReqToE2, 1},
4749 Counter{cSubDelRespFromE2, 1},
4750 Counter{cRestSubDelRespToXapp, 1},
4754 params := xappConn1.GetRESTSubsReqPolicyParams(subReqCount)
4755 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
4758 params = xappConn1.GetRESTSubsReqPolicyParams(subReqCount)
4760 restSubIdUpd := strings.ToUpper(restSubId) // This makes RESTSubReq to fail
4761 params.SetSubscriptionID(&restSubIdUpd)
4762 params.SetTimeToWait("w200ms")
4764 restSubId2 := xappConn1.SendRESTSubsReq(t, params)
4765 assert.Equal(t, restSubId2, "")
4768 xappConn1.SendRESTSubsDelReq(t, &restSubId)
4770 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
4771 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
4773 // Wait that subs is cleaned
4774 waitSubsCleanup(t, e2SubsId, 10)
4775 mainCtrl.VerifyCounterValues(t)
4778 //-----------------------------------------------------------------------------
4779 // TestRESTSubReqAndSubDelOkTwoE2termParallel
4782 // +-------+ +---------+ +---------+ +---------+
4783 // | xapp | | submgr | | e2term1 | | e2term2 |
4784 // +-------+ +---------+ +---------+ +---------+
4788 // | RESTSubReq1 | | |
4789 // |---------------->| | |
4791 // | RESTSubResp1 | | |
4792 // |<----------------| | |
4794 // | |------------->| |
4796 // | RESTSubReq2 | | |
4797 // |---------------->| | |
4799 // | RESTSubResp2 | | |
4800 // |<----------------| | |
4802 // | |---------------------------->|
4805 // | |<-------------| |
4806 // | RESTNotif1 | | |
4807 // |<----------------| | |
4809 // | |<----------------------------|
4810 // | RESTNotif2 | | |
4811 // |<----------------| | |
4813 // | [SUBS 1 DELETE] | |
4815 // | [SUBS 2 DELETE] | |
4818 //-----------------------------------------------------------------------------
4819 func TestRESTSubReqAndSubDelOkTwoE2termParallel(t *testing.T) {
4820 CaseBegin("TestRESTSubReqAndSubDelOkTwoE2termParallel")
4822 // Init counter check
4823 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
4824 Counter{cRestSubReqFromXapp, 2},
4825 Counter{cRestSubRespToXapp, 2},
4826 Counter{cSubReqToE2, 2},
4827 Counter{cSubRespFromE2, 2},
4828 Counter{cRestSubNotifToXapp, 2},
4829 Counter{cRestSubDelReqFromXapp, 2},
4830 Counter{cSubDelReqToE2, 2},
4831 Counter{cSubDelRespFromE2, 2},
4832 Counter{cRestSubDelRespToXapp, 2},
4835 const subReqCount int = 1
4838 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
4839 restSubId1 := xappConn1.SendRESTSubsReq(t, params)
4840 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
4843 params = xappConn2.GetRESTSubsReqReportParams(subReqCount)
4844 params.SetMeid("RAN_NAME_11")
4845 // Here we use xappConn2 to simulate sending second request from same xapp as doing it from xappConn1
4846 // would not work as notification would not be received
4847 restSubId2 := xappConn2.SendRESTSubsReq(t, params)
4848 crereq2, cremsg2 := e2termConn2.RecvSubsReq(t)
4851 xappConn1.ExpectRESTNotification(t, restSubId1)
4852 e2termConn1.SendSubsResp(t, crereq1, cremsg1)
4853 e2SubsId1 := xappConn1.WaitRESTNotification(t, restSubId1)
4854 xapp.Logger.Debug("TEST: REST notification received e2SubsId1=%v", e2SubsId1)
4857 xappConn2.ExpectRESTNotification(t, restSubId2)
4858 e2termConn2.SendSubsResp(t, crereq2, cremsg2)
4859 e2SubsId2 := xappConn2.WaitRESTNotification(t, restSubId2)
4860 xapp.Logger.Debug("TEST: REST notification received e2SubsId2=%v", e2SubsId2)
4863 xappConn1.SendRESTSubsDelReq(t, &restSubId1)
4864 delreq1, delmsg1 := e2termConn1.RecvSubsDelReq(t)
4865 e2termConn1.SendSubsDelResp(t, delreq1, delmsg1)
4867 // Wait that subs is cleaned
4868 mainCtrl.wait_subs_clean(t, e2SubsId1, 10)
4871 xappConn1.SendRESTSubsDelReq(t, &restSubId2)
4872 delreq2, delmsg2 := e2termConn2.RecvSubsDelReq(t)
4873 e2termConn2.SendSubsDelResp(t, delreq2, delmsg2)
4875 // Wait that subs is cleaned
4876 waitSubsCleanup(t, e2SubsId2, 10)
4878 mainCtrl.VerifyCounterValues(t)
4881 //-----------------------------------------------------------------------------
4882 // TestRESTSubReqAsn1EncodeFail
4884 // In this case submgr send RICSubscriptionDeleteRequest after encode failure which should not happen!
4886 // +-------+ +---------+ +---------+
4887 // | xapp | | submgr | | e2term |
4888 // +-------+ +---------+ +---------+
4891 // |---------------->| |
4893 // | RESTSubResp | |
4894 // |<----------------| |
4895 // | RESTSubDelReq | |
4896 // |---------------->| |
4897 // | RESTSubDelResp | |
4899 // |<----------------| |
4902 //-----------------------------------------------------------------------------
4903 func TestRESTSubReqAsn1EncodeFail(t *testing.T) {
4904 CaseBegin("TestRESTSubReqAsn1EncodeFail")
4906 xapp.Logger.Debug("Xapp-frame, v0.8.1 sufficient REST API validation")
4910 //-----------------------------------------------------------------------------
4911 // TestRESTSubReqInsertAndSubDelOk
4914 // +-------+ +---------+ +---------+
4915 // | xapp | | submgr | | e2term |
4916 // +-------+ +---------+ +---------+
4919 // |---------------->| |
4921 // | RESTSubResp | |
4922 // |<----------------| |
4925 // | |------------->|
4928 // | |<-------------|
4930 // |<----------------| |
4933 // | RESTSubDelReq | |
4934 // |---------------->| |
4937 // | |------------->|
4940 // | |<-------------|
4942 // | RESTSubDelResp| |
4943 // |<----------------| |
4945 //-----------------------------------------------------------------------------
4946 func TestRESTSubReqInsertAndSubDelOk(t *testing.T) {
4947 CaseBegin("TestRESTInsertSubReqAndSubDelOk")
4949 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
4950 Counter{cRestSubReqFromXapp, 1},
4951 Counter{cRestSubRespToXapp, 1},
4952 Counter{cSubReqToE2, 1},
4953 Counter{cSubRespFromE2, 1},
4954 Counter{cRestSubNotifToXapp, 1},
4955 Counter{cRestSubDelReqFromXapp, 1},
4956 Counter{cSubDelReqToE2, 1},
4957 Counter{cSubDelRespFromE2, 1},
4958 Counter{cRestSubDelRespToXapp, 1},
4961 const subReqCount int = 1
4963 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
4964 params.SetSubActionTypes("insert")
4967 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
4970 xappConn1.SendRESTSubsDelReq(t, &restSubId)
4972 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
4973 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
4975 // Wait that subs is cleaned
4976 waitSubsCleanup(t, e2SubsId, 10)
4977 mainCtrl.VerifyCounterValues(t)
4980 //-----------------------------------------------------------------------------
4981 // TestRESTSubReqNokAndSubDelOkWithRestartInMiddle
4984 // +-------+ +---------+ +---------+
4985 // | xapp | | submgr | | e2term |
4986 // +-------+ +---------+ +---------+
4989 // |------------->| |
4992 // | |------------->|
4997 // | Submgr restart |
5001 // | |------------->|
5004 // | |<-------------|
5007 //-----------------------------------------------------------------------------
5008 func TestRESTSubReqNokAndSubDelOkWithRestartInMiddle(t *testing.T) {
5009 CaseBegin("TestRESTSubReqNokAndSubDelOkWithRestartInMiddle")
5011 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
5012 Counter{cRestSubReqFromXapp, 1},
5013 Counter{cRestSubRespToXapp, 1},
5014 Counter{cSubReqToE2, 1},
5015 Counter{cSubDelReqFromXapp, 1},
5016 Counter{cSubDelReqToE2, 1},
5017 Counter{cSubDelRespFromE2, 1},
5020 const subReqCount int = 1
5022 // Remove possible existing subscription
5023 mainCtrl.removeExistingSubscriptions(t)
5025 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
5028 mainCtrl.SetResetTestFlag(t, true) // subs.DoNotWaitSubResp will be set TRUE for the subscription
5029 restSubId := xappConn1.SendRESTSubsReq(t, params)
5030 xapp.Logger.Debug("Send REST subscriber request for subscriber : %v", restSubId)
5032 e2termConn1.RecvSubsReq(t)
5034 mainCtrl.SetResetTestFlag(t, false)
5036 mainCtrl.SimulateRestart(t)
5037 xapp.Logger.Debug("mainCtrl.SimulateRestart done")
5040 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
5041 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
5043 xappConn1.TestMsgChanEmpty(t)
5044 xappConn2.TestMsgChanEmpty(t)
5045 e2termConn1.TestMsgChanEmpty(t)
5046 mainCtrl.wait_registry_empty(t, 10)
5048 mainCtrl.VerifyCounterValues(t)
5051 //-----------------------------------------------------------------------------
5052 // TestRESTSubReqAndSubDelOkWithRestartInMiddle
5055 // +-------+ +---------+ +---------+
5056 // | xapp | | submgr | | e2term |
5057 // +-------+ +---------+ +---------+
5060 // |---------------->| |
5062 // | RESTSubResp | |
5063 // |<----------------| |
5065 // | |------------->|
5068 // | |<-------------|
5071 // |<----------------| |
5074 // | Submgr restart |
5076 // | RESTSubDelReq | |
5077 // |---------------->| |
5080 // | |------------->|
5083 // | |<-------------|
5085 // | RESTSubDelResp | |
5086 // |<----------------| |
5088 //-----------------------------------------------------------------------------
5090 func TestRESTSubReqAndSubDelOkWithRestartInMiddle(t *testing.T) {
5091 CaseBegin("TestRESTSubReqAndSubDelOkWithRestartInMiddle")
5093 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
5094 Counter{cRestSubReqFromXapp, 1},
5095 Counter{cRestSubRespToXapp, 1},
5096 Counter{cSubReqToE2, 1},
5097 Counter{cSubRespFromE2, 1},
5098 Counter{cRestSubNotifToXapp, 1},
5099 Counter{cRestSubDelReqFromXapp, 1},
5100 Counter{cSubDelReqToE2, 1},
5101 Counter{cRestSubDelRespToXapp, 1},
5104 // Remove possible existing subscription
5105 mainCtrl.removeExistingSubscriptions(t)
5107 var params *teststube2ap.RESTSubsReqParams = nil
5109 // Create subscription
5110 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
5111 xapp.Logger.Debug("Send REST subscriber request for subscriber : %v", restSubId)
5113 // Check subscription
5114 queryXappSubscription(t, int64(e2SubsId), "RAN_NAME_1", []string{"localhost:13560"})
5116 mainCtrl.SimulateRestart(t)
5117 xapp.Logger.Debug("mainCtrl.SimulateRestart done")
5119 // Check subscription
5120 queryXappSubscription(t, int64(e2SubsId), "RAN_NAME_1", []string{"localhost:13560"})
5122 // Delete subscription
5123 deleteSubscription(t, xappConn1, e2termConn1, &restSubId)
5125 //Wait that subs is cleaned
5126 waitSubsCleanup(t, e2SubsId, 10)
5128 mainCtrl.VerifyCounterValues(t)
5131 //-----------------------------------------------------------------------------
5132 // TestRESTSubReqAndSubDelOkSameActionWithRestartsInMiddle
5135 // +-------+ +-------+ +---------+ +---------+
5136 // | xapp2 | | xapp1 | | submgr | | e2term |
5137 // +-------+ +-------+ +---------+ +---------+
5139 // | | RESTSubReq1 | |
5140 // | |---------------->| |
5142 // | | RESTSubResp1 | |
5143 // | |<----------------| |
5146 // | | |------------->|
5148 // | | |<-------------|
5149 // | | RESTNotif1 | |
5150 // | |<----------------| |
5152 // | RESTSubReq2 | |
5153 // |------------------------------>| |
5155 // | RESTSubResp2 | |
5156 // |<------------------------------| |
5158 // | | RESTNotif2 | |
5159 // |<------------------------------| |
5161 // | | Submgr restart |
5163 // | | RESTSubDelReq1 | |
5164 // | |---------------->| |
5166 // | | RESTSubDelResp1 | |
5167 // | |<----------------| |
5169 // | | Submgr restart |
5171 // | RESTSubDelReq2 | |
5172 // |------------------------------>| |
5174 // | RESTSubDelResp2 | |
5175 // |<------------------------------| |
5177 // | | | SubDelReq2 |
5178 // | | |------------->|
5180 // | | | SubDelResp2 |
5181 // | | |<-------------|
5184 //-----------------------------------------------------------------------------
5186 func TestRESTSubReqAndSubDelOkSameActionWithRestartsInMiddle(t *testing.T) {
5187 CaseBegin("TestRESTSubReqAndSubDelOkSameActionWithRestartsInMiddle")
5189 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
5190 Counter{cRestSubReqFromXapp, 2},
5191 Counter{cRestSubRespToXapp, 2},
5192 Counter{cSubReqToE2, 1},
5193 Counter{cSubRespFromE2, 1},
5194 Counter{cRestSubNotifToXapp, 2},
5195 Counter{cMergedSubscriptions, 1},
5196 Counter{cUnmergedSubscriptions, 1},
5197 Counter{cRestSubDelReqFromXapp, 2},
5198 Counter{cSubDelReqToE2, 1},
5199 Counter{cSubDelRespFromE2, 1},
5200 Counter{cRestSubDelRespToXapp, 2},
5203 // Remove possible existing subscription
5204 mainCtrl.removeExistingSubscriptions(t)
5206 var params *teststube2ap.RESTSubsReqParams = nil
5208 // Create subscription 1
5209 restSubId1, e2SubsId1 := createSubscription(t, xappConn1, e2termConn1, params)
5210 xapp.Logger.Debug("Send REST subscriber request for subscriber 1 : %v", restSubId1)
5212 // Create subscription 2 with same action
5213 params = xappConn2.GetRESTSubsReqReportParams(subReqCount)
5214 params.SetMeid("RAN_NAME_1")
5215 xapp.Subscription.SetResponseCB(xappConn2.SubscriptionRespHandler)
5216 xappConn2.ExpectAnyNotification(t)
5217 restSubId2 := xappConn2.SendRESTSubsReq(t, params)
5218 xapp.Logger.Debug("Send REST subscriber request for subscriberId : %v", restSubId2)
5219 e2SubsId2 := xappConn2.WaitAnyRESTNotification(t)
5220 xapp.Logger.Debug("REST notification received e2SubsId=%v", e2SubsId2)
5222 queryXappSubscription(t, int64(e2SubsId1), "RAN_NAME_1", []string{"localhost:13560", "localhost:13660"})
5224 mainCtrl.SimulateRestart(t)
5225 xapp.Logger.Debug("mainCtrl.SimulateRestart done")
5227 // Delete subscription 1, and wait until it has removed the first endpoint
5228 subepcnt := mainCtrl.get_subs_entrypoint_cnt(t, e2SubsId1)
5229 xappConn1.SendRESTSubsDelReq(t, &restSubId1)
5230 mainCtrl.wait_subs_entrypoint_cnt_change(t, e2SubsId1, subepcnt, 10)
5232 mainCtrl.SimulateRestart(t)
5233 xapp.Logger.Debug("mainCtrl.SimulateRestart done")
5234 queryXappSubscription(t, int64(e2SubsId1), "RAN_NAME_1", []string{"localhost:13660"})
5236 // Delete subscription 2
5237 deleteXapp2Subscription(t, &restSubId2)
5239 //Wait that subs is cleaned
5240 waitSubsCleanup(t, e2SubsId2, 10)
5242 mainCtrl.VerifyCounterValues(t)
5245 //-----------------------------------------------------------------------------
5246 // TestRESTReportSubReqAndSubDelOk
5249 // +-------+ +---------+ +---------+
5250 // | xapp | | submgr | | e2term |
5251 // +-------+ +---------+ +---------+
5254 // |---------------->| |
5256 // | RESTSubResp | |
5257 // |<----------------| |
5260 // | |------------->|
5263 // | |<-------------|
5265 // |<----------------| |
5267 // | |------------->|
5270 // | |<-------------|
5272 // |<----------------| |
5276 // | RESTSubDelReq | |
5277 // |---------------->| |
5280 // | |------------->|
5283 // | |<-------------|
5285 // | RESTSubDelResp| |
5286 // |<----------------| |
5288 //-----------------------------------------------------------------------------
5290 func TestRESTReportSubReqAndSubDelOk(t *testing.T) {
5291 CaseBegin("TestRESTReportSubReqAndSubDelOk")
5292 const subReqCount int = 1
5294 RESTReportSubReqAndSubDelOk(t, subReqCount, testIndex)
5297 func RESTReportSubReqAndSubDelOk(t *testing.T, subReqCount int, testIndex int) {
5298 xapp.Logger.Debug("TEST: TestRESTReportSubReqAndSubDelOk with testIndex %v", testIndex)
5301 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
5302 restSubId := xappConn1.SendRESTSubsReq(t, params)
5304 var e2SubsId []uint32
5305 for i := 0; i < subReqCount; i++ {
5306 crereq, cremsg := e2termConn1.RecvSubsReq(t)
5307 xappConn1.ExpectRESTNotification(t, restSubId)
5309 e2termConn1.SendSubsResp(t, crereq, cremsg)
5310 instanceId := xappConn1.WaitRESTNotification(t, restSubId)
5311 xapp.Logger.Debug("TEST: REST notification received e2SubsId=%v", instanceId)
5312 e2SubsId = append(e2SubsId, instanceId)
5313 resp, _ := xapp.Subscription.QuerySubscriptions()
5314 assert.Equal(t, resp[i].SubscriptionID, (int64)(instanceId))
5315 assert.Equal(t, resp[i].Meid, "RAN_NAME_1")
5316 assert.Equal(t, resp[i].ClientEndpoint, []string{"localhost:13560"})
5321 xappConn1.SendRESTSubsDelReq(t, &restSubId)
5323 for i := 0; i < subReqCount; i++ {
5324 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
5325 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
5328 // Wait that subs is cleaned
5329 for i := 0; i < subReqCount; i++ {
5330 mainCtrl.wait_subs_clean(t, e2SubsId[i], 10)
5333 xappConn1.TestMsgChanEmpty(t)
5334 e2termConn1.TestMsgChanEmpty(t)
5335 mainCtrl.wait_registry_empty(t, 10)
5339 func TestRESTPolicySubReqAndSubDelOk(t *testing.T) {
5340 CaseBegin("TestRESTPolicySubReqAndSubDelOk")
5344 RESTPolicySubReqAndSubDelOk(t, subReqCount, testIndex)
5348 RESTPolicySubReqAndSubDelOk(t, subReqCount, testIndex)
5351 func RESTPolicySubReqAndSubDelOk(t *testing.T, subReqCount int, testIndex int) {
5352 xapp.Logger.Debug("TEST: TestRESTPolicySubReqAndSubDelOk with testIndex %v", testIndex)
5355 params := xappConn1.GetRESTSubsReqPolicyParams(subReqCount)
5356 restSubId := xappConn1.SendRESTSubsReq(t, params)
5358 var e2SubsId []uint32
5359 for i := 0; i < subReqCount; i++ {
5360 crereq, cremsg := e2termConn1.RecvSubsReq(t)
5361 xappConn1.ExpectRESTNotification(t, restSubId)
5362 e2termConn1.SendSubsResp(t, crereq, cremsg)
5363 instanceId := xappConn1.WaitRESTNotification(t, restSubId)
5364 xapp.Logger.Debug("TEST: REST notification received e2SubsId=%v", instanceId)
5365 e2SubsId = append(e2SubsId, instanceId)
5369 xappConn1.SendRESTSubsDelReq(t, &restSubId)
5371 for i := 0; i < subReqCount; i++ {
5372 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
5373 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
5376 // Wait that subs is cleaned
5377 for i := 0; i < subReqCount; i++ {
5378 mainCtrl.wait_subs_clean(t, e2SubsId[i], 10)
5380 xappConn1.TestMsgChanEmpty(t)
5381 e2termConn1.TestMsgChanEmpty(t)
5382 mainCtrl.wait_registry_empty(t, 10)
5385 func TestRESTTwoPolicySubReqAndSubDelOk(t *testing.T) {
5387 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
5388 Counter{cRestSubReqFromXapp, 1},
5389 Counter{cRestSubRespToXapp, 1},
5390 Counter{cSubReqToE2, 2},
5391 Counter{cSubRespFromE2, 2},
5392 Counter{cRestSubNotifToXapp, 2},
5393 Counter{cRestSubDelReqFromXapp, 1},
5394 Counter{cSubDelReqToE2, 2},
5395 Counter{cSubDelRespFromE2, 2},
5396 Counter{cRestSubDelRespToXapp, 1},
5399 const subReqCount int = 2
5402 params := xappConn1.GetRESTSubsReqPolicyParams(subReqCount)
5403 restSubId := xappConn1.SendRESTSubsReq(t, params)
5404 e2SubsIds := sendAndReceiveMultipleE2SubReqs(t, subReqCount, xappConn1, e2termConn1, restSubId)
5406 assert.Equal(t, len(e2SubsIds), 2)
5409 xappConn1.SendRESTSubsDelReq(t, &restSubId)
5410 sendAndReceiveMultipleE2DelReqs(t, e2SubsIds, e2termConn1)
5412 xappConn1.TestMsgChanEmpty(t)
5413 e2termConn1.TestMsgChanEmpty(t)
5414 mainCtrl.wait_registry_empty(t, 10)
5416 mainCtrl.VerifyCounterValues(t)
5418 func TestRESTPolicySubReqAndSubDelOkFullAmount(t *testing.T) {
5420 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
5421 Counter{cRestSubReqFromXapp, 1},
5422 Counter{cRestSubRespToXapp, 1},
5423 Counter{cSubReqToE2, 19},
5424 Counter{cSubRespFromE2, 19},
5425 Counter{cRestSubNotifToXapp, 19},
5426 Counter{cRestSubDelReqFromXapp, 1},
5427 Counter{cSubDelReqToE2, 19},
5428 Counter{cSubDelRespFromE2, 19},
5429 Counter{cRestSubDelRespToXapp, 1},
5432 const subReqCount int = 19
5434 params := xappConn1.GetRESTSubsReqPolicyParams(subReqCount)
5435 restSubId := xappConn1.SendRESTSubsReq(t, params)
5436 e2SubsIds := sendAndReceiveMultipleE2SubReqs(t, subReqCount, xappConn1, e2termConn1, restSubId)
5438 assert.Equal(t, len(e2SubsIds), 19)
5440 xappConn1.SendRESTSubsDelReq(t, &restSubId)
5441 sendAndReceiveMultipleE2DelReqs(t, e2SubsIds, e2termConn1)
5443 xappConn1.TestMsgChanEmpty(t)
5444 e2termConn1.TestMsgChanEmpty(t)
5445 mainCtrl.wait_registry_empty(t, 10)
5447 mainCtrl.VerifyCounterValues(t)
5450 func TestRESTTwoReportSubReqAndSubDelOk(t *testing.T) {
5454 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
5455 Counter{cRestSubReqFromXapp, 1},
5456 Counter{cRestSubRespToXapp, 1},
5457 Counter{cSubReqToE2, uint64(subReqCount)},
5458 Counter{cSubRespFromE2, uint64(subReqCount)},
5459 Counter{cRestSubNotifToXapp, uint64(subReqCount)},
5460 Counter{cRestSubDelReqFromXapp, 1},
5461 Counter{cSubDelReqToE2, uint64(subReqCount)},
5462 Counter{cSubDelRespFromE2, uint64(subReqCount)},
5463 Counter{cRestSubDelRespToXapp, 1},
5467 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
5468 restSubId := xappConn1.SendRESTSubsReq(t, params)
5469 e2SubsIds := sendAndReceiveMultipleE2SubReqs(t, subReqCount, xappConn1, e2termConn1, restSubId)
5471 assert.Equal(t, len(e2SubsIds), subReqCount)
5474 xappConn1.SendRESTSubsDelReq(t, &restSubId)
5475 sendAndReceiveMultipleE2DelReqs(t, e2SubsIds, e2termConn1)
5477 xappConn1.TestMsgChanEmpty(t)
5478 e2termConn1.TestMsgChanEmpty(t)
5479 mainCtrl.wait_registry_empty(t, 10)
5481 mainCtrl.VerifyCounterValues(t)
5484 func TestRESTTwoReportSubReqAndSubDelOkNoActParams(t *testing.T) {
5488 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
5489 Counter{cRestSubReqFromXapp, 1},
5490 Counter{cRestSubRespToXapp, 1},
5491 Counter{cSubReqToE2, uint64(subReqCount)},
5492 Counter{cSubRespFromE2, uint64(subReqCount)},
5493 Counter{cRestSubNotifToXapp, uint64(subReqCount)},
5494 Counter{cRestSubDelReqFromXapp, 1},
5495 Counter{cSubDelReqToE2, uint64(subReqCount)},
5496 Counter{cSubDelRespFromE2, uint64(subReqCount)},
5497 Counter{cRestSubDelRespToXapp, 1},
5501 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
5502 restSubId := xappConn1.SendRESTSubsReq(t, params)
5503 e2SubsIds := sendAndReceiveMultipleE2SubReqs(t, subReqCount, xappConn1, e2termConn1, restSubId)
5505 assert.Equal(t, len(e2SubsIds), subReqCount)
5508 xappConn1.SendRESTSubsDelReq(t, &restSubId)
5509 sendAndReceiveMultipleE2DelReqs(t, e2SubsIds, e2termConn1)
5511 xappConn1.TestMsgChanEmpty(t)
5512 e2termConn1.TestMsgChanEmpty(t)
5513 mainCtrl.wait_registry_empty(t, 10)
5515 mainCtrl.VerifyCounterValues(t)
5518 func TestRESTFullAmountReportSubReqAndSubDelOk(t *testing.T) {
5522 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
5523 Counter{cRestSubReqFromXapp, 1},
5524 Counter{cRestSubRespToXapp, 1},
5525 Counter{cSubReqToE2, uint64(subReqCount)},
5526 Counter{cSubRespFromE2, uint64(subReqCount)},
5527 Counter{cRestSubNotifToXapp, uint64(subReqCount)},
5528 Counter{cRestSubDelReqFromXapp, 1},
5529 Counter{cSubDelReqToE2, uint64(subReqCount)},
5530 Counter{cSubDelRespFromE2, uint64(subReqCount)},
5531 Counter{cRestSubDelRespToXapp, 1},
5535 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
5536 restSubId := xappConn1.SendRESTSubsReq(t, params)
5537 e2SubsIds := sendAndReceiveMultipleE2SubReqs(t, subReqCount, xappConn1, e2termConn1, restSubId)
5539 assert.Equal(t, len(e2SubsIds), subReqCount)
5542 xappConn1.SendRESTSubsDelReq(t, &restSubId)
5543 sendAndReceiveMultipleE2DelReqs(t, e2SubsIds, e2termConn1)
5545 xappConn1.TestMsgChanEmpty(t)
5546 e2termConn1.TestMsgChanEmpty(t)
5547 mainCtrl.wait_registry_empty(t, 10)
5549 mainCtrl.VerifyCounterValues(t)
5552 func TestRESTSubReqReportSameActionDiffEventTriggerDefinitionLen(t *testing.T) {
5553 CaseBegin("TestRESTSubReqReportSameActionDiffEventTriggerDefinitionLen")
5555 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
5556 Counter{cRestSubReqFromXapp, 2},
5557 Counter{cRestSubRespToXapp, 2},
5558 Counter{cSubReqToE2, 2},
5559 Counter{cSubRespFromE2, 2},
5560 Counter{cRestSubNotifToXapp, 2},
5561 Counter{cRestSubDelReqFromXapp, 2},
5562 Counter{cSubDelReqToE2, 2},
5563 Counter{cSubDelRespFromE2, 2},
5564 Counter{cRestSubDelRespToXapp, 2},
5568 var params *teststube2ap.RESTSubsReqParams = nil
5571 restSubId1, e2SubsId1 := createSubscription(t, xappConn1, e2termConn1, params)
5572 xapp.Logger.Debug("Send REST subscriber request for subscriberId : %v", restSubId1)
5574 queryXappSubscription(t, int64(e2SubsId1), "RAN_NAME_1", []string{"localhost:13560"})
5577 params = xappConn2.GetRESTSubsReqReportParams(subReqCount)
5578 params.SetMeid("RAN_NAME_1")
5579 eventTriggerDefinition := []int64{1234, 1}
5580 params.SetSubEventTriggerDefinition(eventTriggerDefinition)
5582 restSubId2 := xappConn2.SendRESTSubsReq(t, params)
5583 xapp.Logger.Debug("Send REST subscriber request for subscriberId : %v", restSubId2)
5584 crereq, cremsg := e2termConn1.RecvSubsReq(t)
5585 xappConn2.ExpectRESTNotification(t, restSubId2)
5586 e2termConn1.SendSubsResp(t, crereq, cremsg)
5587 e2SubsId2 := xappConn2.WaitRESTNotification(t, restSubId2)
5589 deleteXapp1Subscription(t, &restSubId1)
5590 deleteXapp2Subscription(t, &restSubId2)
5592 waitSubsCleanup(t, e2SubsId1, 10)
5593 waitSubsCleanup(t, e2SubsId2, 10)
5595 mainCtrl.VerifyCounterValues(t)
5599 func TestRESTSubReqReportSameActionDiffActionListLen(t *testing.T) {
5600 CaseBegin("TestRESTSubReqReportSameActionDiffActionListLen")
5602 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
5603 Counter{cRestSubReqFromXapp, 2},
5604 Counter{cRestSubRespToXapp, 2},
5605 Counter{cSubReqToE2, 2},
5606 Counter{cSubRespFromE2, 2},
5607 Counter{cRestSubNotifToXapp, 2},
5608 Counter{cRestSubDelReqFromXapp, 2},
5609 Counter{cSubDelReqToE2, 2},
5610 Counter{cSubDelRespFromE2, 2},
5611 Counter{cRestSubDelRespToXapp, 2},
5615 var params *teststube2ap.RESTSubsReqParams = nil
5618 restSubId1, e2SubsId1 := createSubscription(t, xappConn1, e2termConn1, params)
5619 xapp.Logger.Debug("Send REST subscriber request for subscriberId : %v", restSubId1)
5621 queryXappSubscription(t, int64(e2SubsId1), "RAN_NAME_1", []string{"localhost:13560"})
5624 params = xappConn2.GetRESTSubsReqReportParams(subReqCount)
5625 params.SetMeid("RAN_NAME_1")
5627 actionId := int64(1)
5628 actionType := "report"
5629 actionDefinition := []int64{5678, 1}
5630 subsequestActionType := "continue"
5631 timeToWait := "w10ms"
5632 params.AppendActionToActionToBeSetupList(actionId, actionType, actionDefinition, subsequestActionType, timeToWait)
5634 restSubId2 := xappConn2.SendRESTSubsReq(t, params)
5635 xapp.Logger.Debug("Send REST subscriber request for subscriberId : %v", restSubId2)
5636 crereq, cremsg := e2termConn1.RecvSubsReq(t)
5637 xappConn2.ExpectRESTNotification(t, restSubId2)
5638 e2termConn1.SendSubsResp(t, crereq, cremsg)
5639 e2SubsId2 := xappConn2.WaitRESTNotification(t, restSubId2)
5641 deleteXapp1Subscription(t, &restSubId1)
5642 deleteXapp2Subscription(t, &restSubId2)
5644 waitSubsCleanup(t, e2SubsId1, 10)
5645 waitSubsCleanup(t, e2SubsId2, 10)
5647 mainCtrl.VerifyCounterValues(t)
5651 func TestRESTSubReqReportSameActionDiffActionID(t *testing.T) {
5652 CaseBegin("TestRESTSubReqReportSameActionDiffActionID")
5654 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
5655 Counter{cRestSubReqFromXapp, 2},
5656 Counter{cRestSubRespToXapp, 2},
5657 Counter{cSubReqToE2, 2},
5658 Counter{cSubRespFromE2, 2},
5659 Counter{cRestSubNotifToXapp, 2},
5660 Counter{cRestSubDelReqFromXapp, 2},
5661 Counter{cSubDelReqToE2, 2},
5662 Counter{cSubDelRespFromE2, 2},
5663 Counter{cRestSubDelRespToXapp, 2},
5667 var params *teststube2ap.RESTSubsReqParams = nil
5670 restSubId1, e2SubsId1 := createSubscription(t, xappConn1, e2termConn1, params)
5671 xapp.Logger.Debug("Send REST subscriber request for subscriberId : %v", restSubId1)
5673 queryXappSubscription(t, int64(e2SubsId1), "RAN_NAME_1", []string{"localhost:13560"})
5676 params = xappConn2.GetRESTSubsReqReportParams(subReqCount)
5677 params.SetMeid("RAN_NAME_1")
5678 params.SetSubActionIDs(int64(2))
5680 restSubId2 := xappConn2.SendRESTSubsReq(t, params)
5681 xapp.Logger.Debug("Send REST subscriber request for subscriberId : %v", restSubId2)
5682 crereq, cremsg := e2termConn1.RecvSubsReq(t)
5683 xappConn2.ExpectRESTNotification(t, restSubId2)
5684 e2termConn1.SendSubsResp(t, crereq, cremsg)
5685 e2SubsId2 := xappConn2.WaitRESTNotification(t, restSubId2)
5687 deleteXapp1Subscription(t, &restSubId1)
5688 deleteXapp2Subscription(t, &restSubId2)
5690 waitSubsCleanup(t, e2SubsId1, 10)
5691 waitSubsCleanup(t, e2SubsId2, 10)
5693 mainCtrl.VerifyCounterValues(t)
5697 func TestRESTSubReqDiffActionType(t *testing.T) {
5698 CaseBegin("TestRESTSubReqDiffActionType")
5700 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
5701 Counter{cRestSubReqFromXapp, 2},
5702 Counter{cRestSubRespToXapp, 2},
5703 Counter{cSubReqToE2, 2},
5704 Counter{cSubRespFromE2, 2},
5705 Counter{cRestSubNotifToXapp, 2},
5706 Counter{cRestSubDelReqFromXapp, 2},
5707 Counter{cSubDelReqToE2, 2},
5708 Counter{cSubDelRespFromE2, 2},
5709 Counter{cRestSubDelRespToXapp, 2},
5712 const e2Timeout int64 = 2
5713 const e2RetryCount int64 = 2
5714 const routingNeeded bool = true
5717 params := xappConn1.GetRESTSubsReqPolicyParams(subReqCount)
5718 params.SetSubscriptionDirectives(e2Timeout, e2RetryCount, routingNeeded)
5721 restSubId1, e2SubsId1 := createSubscription(t, xappConn1, e2termConn1, params)
5722 xapp.Logger.Debug("Send REST subscriber request for subscriberId : %v", restSubId1)
5724 queryXappSubscription(t, int64(e2SubsId1), "RAN_NAME_1", []string{"localhost:13560"})
5727 params = xappConn2.GetRESTSubsReqReportParams(subReqCount)
5728 params.SetSubscriptionDirectives(e2Timeout, e2RetryCount, routingNeeded)
5729 params.SetMeid("RAN_NAME_1")
5731 restSubId2 := xappConn2.SendRESTSubsReq(t, params)
5732 xapp.Logger.Debug("Send REST subscriber request for subscriberId : %v", restSubId2)
5733 crereq, cremsg := e2termConn1.RecvSubsReq(t)
5734 xappConn2.ExpectRESTNotification(t, restSubId2)
5735 e2termConn1.SendSubsResp(t, crereq, cremsg)
5736 e2SubsId2 := xappConn2.WaitRESTNotification(t, restSubId2)
5738 deleteXapp1Subscription(t, &restSubId1)
5739 deleteXapp2Subscription(t, &restSubId2)
5741 waitSubsCleanup(t, e2SubsId1, 10)
5742 waitSubsCleanup(t, e2SubsId2, 10)
5744 mainCtrl.VerifyCounterValues(t)
5748 func TestRESTSubReqPolicyAndSubDelOkSameAction(t *testing.T) {
5749 CaseBegin("TestRESTSubReqPolicyAndSubDelOkSameAction")
5751 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
5752 Counter{cRestSubReqFromXapp, 2},
5753 Counter{cRestSubRespToXapp, 2},
5754 Counter{cSubReqToE2, 2},
5755 Counter{cSubRespFromE2, 2},
5756 Counter{cRestSubNotifToXapp, 2},
5757 Counter{cRestSubDelReqFromXapp, 2},
5758 Counter{cSubDelReqToE2, 2},
5759 Counter{cSubDelRespFromE2, 2},
5760 Counter{cRestSubDelRespToXapp, 2},
5763 const e2Timeout int64 = 2
5764 const e2RetryCount int64 = 2
5765 const routingNeeded bool = true
5768 params := xappConn1.GetRESTSubsReqPolicyParams(subReqCount)
5769 params.SetSubscriptionDirectives(e2Timeout, e2RetryCount, routingNeeded)
5772 restSubId1, e2SubsId1 := createSubscription(t, xappConn1, e2termConn1, params)
5773 xapp.Logger.Debug("Send REST subscriber request for subscriberId : %v", restSubId1)
5775 queryXappSubscription(t, int64(e2SubsId1), "RAN_NAME_1", []string{"localhost:13560"})
5778 params = xappConn2.GetRESTSubsReqPolicyParams(subReqCount)
5779 params.SetSubscriptionDirectives(e2Timeout, e2RetryCount, routingNeeded)
5780 params.SetMeid("RAN_NAME_1")
5782 restSubId2 := xappConn2.SendRESTSubsReq(t, params)
5783 xapp.Logger.Debug("Send REST subscriber request for subscriberId : %v", restSubId2)
5784 crereq, cremsg := e2termConn1.RecvSubsReq(t)
5785 xappConn2.ExpectRESTNotification(t, restSubId2)
5786 e2termConn1.SendSubsResp(t, crereq, cremsg)
5787 e2SubsId2 := xappConn2.WaitRESTNotification(t, restSubId2)
5789 deleteXapp1Subscription(t, &restSubId1)
5790 deleteXapp2Subscription(t, &restSubId2)
5792 waitSubsCleanup(t, e2SubsId1, 10)
5793 waitSubsCleanup(t, e2SubsId2, 10)
5795 mainCtrl.VerifyCounterValues(t)
5799 func TestRESTSubReqReportSameActionDiffActionDefinitionLen(t *testing.T) {
5800 CaseBegin("TestRESTSubReqReportSameActionDiffActionDefinitionLen")
5802 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
5803 Counter{cRestSubReqFromXapp, 2},
5804 Counter{cRestSubRespToXapp, 2},
5805 Counter{cSubReqToE2, 2},
5806 Counter{cSubRespFromE2, 2},
5807 Counter{cRestSubNotifToXapp, 2},
5808 Counter{cRestSubDelReqFromXapp, 2},
5809 Counter{cSubDelReqToE2, 2},
5810 Counter{cSubDelRespFromE2, 2},
5811 Counter{cRestSubDelRespToXapp, 2},
5815 var params *teststube2ap.RESTSubsReqParams = nil
5818 restSubId1, e2SubsId1 := createSubscription(t, xappConn1, e2termConn1, params)
5819 xapp.Logger.Debug("Send REST subscriber request for subscriberId : %v", restSubId1)
5821 queryXappSubscription(t, int64(e2SubsId1), "RAN_NAME_1", []string{"localhost:13560"})
5824 params = xappConn2.GetRESTSubsReqReportParams(subReqCount)
5825 params.SetMeid("RAN_NAME_1")
5826 actionDefinition := []int64{5678, 1}
5827 params.SetSubActionDefinition(actionDefinition)
5829 restSubId2 := xappConn2.SendRESTSubsReq(t, params)
5830 xapp.Logger.Debug("Send REST subscriber request for subscriberId : %v", restSubId2)
5831 crereq, cremsg := e2termConn1.RecvSubsReq(t)
5832 xappConn2.ExpectRESTNotification(t, restSubId2)
5833 e2termConn1.SendSubsResp(t, crereq, cremsg)
5834 e2SubsId2 := xappConn2.WaitRESTNotification(t, restSubId2)
5836 deleteXapp1Subscription(t, &restSubId1)
5837 deleteXapp2Subscription(t, &restSubId2)
5839 waitSubsCleanup(t, e2SubsId1, 10)
5840 waitSubsCleanup(t, e2SubsId2, 10)
5842 mainCtrl.VerifyCounterValues(t)
5846 func TestRESTSubReqReportSameActionDiffActionDefinitionContents(t *testing.T) {
5847 CaseBegin("TestRESTSubReqReportSameActionDiffActionDefinitionContents")
5849 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
5850 Counter{cRestSubReqFromXapp, 2},
5851 Counter{cRestSubRespToXapp, 2},
5852 Counter{cSubReqToE2, 2},
5853 Counter{cSubRespFromE2, 2},
5854 Counter{cRestSubNotifToXapp, 2},
5855 Counter{cRestSubDelReqFromXapp, 2},
5856 Counter{cSubDelReqToE2, 2},
5857 Counter{cSubDelRespFromE2, 2},
5858 Counter{cRestSubDelRespToXapp, 2},
5862 var params *teststube2ap.RESTSubsReqParams = nil
5865 restSubId1, e2SubsId1 := createSubscription(t, xappConn1, e2termConn1, params)
5866 xapp.Logger.Debug("Send REST subscriber request for subscriberId : %v", restSubId1)
5868 queryXappSubscription(t, int64(e2SubsId1), "RAN_NAME_1", []string{"localhost:13560"})
5871 params = xappConn2.GetRESTSubsReqReportParams(subReqCount)
5872 params.SetMeid("RAN_NAME_1")
5873 actionDefinition := []int64{56782}
5874 params.SetSubActionDefinition(actionDefinition)
5876 restSubId2 := xappConn2.SendRESTSubsReq(t, params)
5877 xapp.Logger.Debug("Send REST subscriber request for subscriberId : %v", restSubId2)
5878 crereq, cremsg := e2termConn1.RecvSubsReq(t)
5879 xappConn2.ExpectRESTNotification(t, restSubId2)
5880 e2termConn1.SendSubsResp(t, crereq, cremsg)
5881 e2SubsId2 := xappConn2.WaitRESTNotification(t, restSubId2)
5883 deleteXapp1Subscription(t, &restSubId1)
5884 deleteXapp2Subscription(t, &restSubId2)
5886 waitSubsCleanup(t, e2SubsId1, 10)
5887 waitSubsCleanup(t, e2SubsId2, 10)
5889 mainCtrl.VerifyCounterValues(t)
5893 func TestRESTSubReqReportSameActionDiffSubsAction(t *testing.T) {
5894 CaseBegin("TestRESTSubReqReportSameActionDiffSubsAction")
5896 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
5897 Counter{cRestSubReqFromXapp, 2},
5898 Counter{cRestSubRespToXapp, 2},
5899 Counter{cSubReqToE2, 2},
5900 Counter{cSubRespFromE2, 2},
5901 Counter{cRestSubNotifToXapp, 2},
5902 Counter{cRestSubDelReqFromXapp, 2},
5903 Counter{cSubDelReqToE2, 2},
5904 Counter{cSubDelRespFromE2, 2},
5905 Counter{cRestSubDelRespToXapp, 2},
5909 var params *teststube2ap.RESTSubsReqParams = nil
5912 restSubId1, e2SubsId1 := createSubscription(t, xappConn1, e2termConn1, params)
5913 xapp.Logger.Debug("Send REST subscriber request for subscriberId : %v", restSubId1)
5915 queryXappSubscription(t, int64(e2SubsId1), "RAN_NAME_1", []string{"localhost:13560"})
5918 params = xappConn2.GetRESTSubsReqReportParams(subReqCount)
5919 params.SetMeid("RAN_NAME_1")
5920 params.SetTimeToWait("w200ms")
5921 restSubId2 := xappConn2.SendRESTSubsReq(t, params)
5922 xapp.Logger.Debug("Send REST subscriber request for subscriberId : %v", restSubId2)
5923 crereq, cremsg := e2termConn1.RecvSubsReq(t)
5924 xappConn2.ExpectRESTNotification(t, restSubId2)
5925 e2termConn1.SendSubsResp(t, crereq, cremsg)
5926 e2SubsId2 := xappConn2.WaitRESTNotification(t, restSubId2)
5928 deleteXapp1Subscription(t, &restSubId1)
5929 deleteXapp2Subscription(t, &restSubId2)
5931 waitSubsCleanup(t, e2SubsId1, 10)
5932 waitSubsCleanup(t, e2SubsId2, 10)
5934 mainCtrl.VerifyCounterValues(t)
5938 //-----------------------------------------------------------------------------
5939 // TestRESTUnpackSubscriptionResponseDecodeFail
5942 // +-------+ +---------+ +---------+
5943 // | xapp | | submgr | | e2term |
5944 // +-------+ +---------+ +---------+
5947 // |---------------->| |
5949 // | RESTSubResp | |
5950 // |<----------------| |
5953 // | |------------->|
5955 // | | SubResp | ASN.1 decode fails
5956 // | |<-------------|
5959 // | |------------->|
5961 // | | SubFail | Duplicated action
5962 // | |<-------------|
5963 // | RESTNotif (fail)| |
5964 // |<----------------| |
5966 // | |------------->|
5969 // | |<-------------|
5971 //-----------------------------------------------------------------------------
5973 func TestRESTUnpackSubscriptionResponseDecodeFail(t *testing.T) {
5974 xapp.Logger.Debug("TEST: TestRESTUnpackSubscriptionResponseDecodeFail")
5975 const subReqCount int = 1
5978 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
5979 restSubId := xappConn1.SendRESTSubsReq(t, params)
5981 crereq, cremsg := e2termConn1.RecvSubsReq(t)
5982 // Decode of this response fails which will result resending original request
5983 e2termConn1.SendInvalidE2Asn1Resp(t, cremsg, xapp.RIC_SUB_RESP)
5985 _, cremsg = e2termConn1.RecvSubsReq(t)
5987 xappConn1.ExpectRESTNotificationNok(t, restSubId, "allFail")
5989 // Subscription already created in E2 Node.
5990 fparams := &teststube2ap.E2StubSubsFailParams{}
5992 fparams.SetCauseVal(0, 1, 3) // CauseRIC / duplicate-action
5993 e2termConn1.SendSubsFail(t, fparams, cremsg)
5995 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
5996 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
5998 instanceId := xappConn1.WaitRESTNotification(t, restSubId)
5999 xapp.Logger.Debug("TEST: REST notification received e2SubsId=%v", instanceId)
6001 // Wait that subs is cleaned
6002 mainCtrl.wait_subs_clean(t, crereq.RequestId.InstanceId, 10)
6004 xappConn1.TestMsgChanEmpty(t)
6005 e2termConn1.TestMsgChanEmpty(t)
6006 mainCtrl.wait_registry_empty(t, 10)
6009 //-----------------------------------------------------------------------------
6010 // TestRESTUnpackSubscriptionResponseUnknownInstanceId
6013 // +-------+ +---------+ +---------+
6014 // | xapp | | submgr | | e2term |
6015 // +-------+ +---------+ +---------+
6018 // |---------------->| |
6020 // | RESTSubResp | |
6021 // |<----------------| |
6024 // | |------------->|
6026 // | | SubResp | Unknown instanceId
6027 // | |<-------------|
6030 // | |------------->|
6032 // | | SubFail | Duplicated action
6033 // | |<-------------|
6034 // | RESTNotif (fail)| |
6035 // |<----------------| |
6037 // | |------------->|
6040 // | |<-------------|
6042 //-----------------------------------------------------------------------------
6044 func TestRESTUnpackSubscriptionResponseUnknownInstanceId(t *testing.T) {
6045 xapp.Logger.Debug("TEST: TestRESTUnpackSubscriptionResponseUnknownInstanceId")
6046 const subReqCount int = 1
6049 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
6050 restSubId := xappConn1.SendRESTSubsReq(t, params)
6052 crereq, cremsg := e2termConn1.RecvSubsReq(t)
6054 // Unknown instanceId in this response which will result resending original request
6055 orgInstanceId := crereq.RequestId.InstanceId
6056 crereq.RequestId.InstanceId = 0
6057 e2termConn1.SendSubsResp(t, crereq, cremsg)
6059 _, cremsg = e2termConn1.RecvSubsReq(t)
6061 xappConn1.ExpectRESTNotificationNok(t, restSubId, "allFail")
6063 // Subscription already created in E2 Node.
6064 fparams := &teststube2ap.E2StubSubsFailParams{}
6066 fparams.SetCauseVal(0, 1, 3) // CauseRIC / duplicate-action
6067 e2termConn1.SendSubsFail(t, fparams, cremsg)
6069 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
6070 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
6072 instanceId := xappConn1.WaitRESTNotification(t, restSubId)
6073 xapp.Logger.Debug("TEST: REST notification received e2SubsId=%v", instanceId)
6075 // Wait that subs is cleaned
6076 mainCtrl.wait_subs_clean(t, orgInstanceId, 10)
6078 xappConn1.TestMsgChanEmpty(t)
6079 e2termConn1.TestMsgChanEmpty(t)
6080 mainCtrl.wait_registry_empty(t, 10)
6083 //-----------------------------------------------------------------------------
6084 // TestRESTUnpackSubscriptionResponseNoTransaction
6087 // +-------+ +---------+ +---------+
6088 // | xapp | | submgr | | e2term |
6089 // +-------+ +---------+ +---------+
6092 // |---------------->| |
6094 // | RESTSubResp | |
6095 // |<----------------| |
6098 // | |------------->|
6100 // | | SubResp | No transaction for the response
6101 // | |<-------------|
6104 // | |------------->|
6106 // | | SubFail | Duplicated action
6107 // | |<-------------|
6108 // | RESTNotif (fail)| |
6109 // |<----------------| |
6111 // | |------------->|
6114 // | |<-------------|
6117 // | |------------->|
6120 // | |<-------------|
6122 //-----------------------------------------------------------------------------
6123 func TestRESTUnpackSubscriptionResponseNoTransaction(t *testing.T) {
6124 xapp.Logger.Debug("TEST: TestRESTUnpackSubscriptionResponseNoTransaction")
6125 const subReqCount int = 1
6128 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
6129 restSubId := xappConn1.SendRESTSubsReq(t, params)
6131 crereq, cremsg := e2termConn1.RecvSubsReq(t)
6133 mainCtrl.MakeTransactionNil(t, crereq.RequestId.InstanceId)
6134 // No transaction exist for this response which will result resending original request
6135 e2termConn1.SendSubsResp(t, crereq, cremsg)
6137 _, cremsg = e2termConn1.RecvSubsReq(t)
6139 xappConn1.ExpectRESTNotificationNok(t, restSubId, "allFail")
6141 // Subscription already created in E2 Node.
6142 fparams := &teststube2ap.E2StubSubsFailParams{}
6144 fparams.SetCauseVal(0, 1, 3) // CauseRIC / duplicate-action
6145 e2termConn1.SendSubsFail(t, fparams, cremsg)
6147 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
6148 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
6150 // Resending happens because there no transaction
6151 delreq, delmsg = e2termConn1.RecvSubsDelReq(t)
6152 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
6154 instanceId := xappConn1.WaitRESTNotification(t, restSubId)
6155 xapp.Logger.Debug("TEST: REST notification received e2SubsId=%v", instanceId)
6157 // Wait that subs is cleaned
6158 mainCtrl.wait_subs_clean(t, crereq.RequestId.InstanceId, 10)
6160 xappConn1.TestMsgChanEmpty(t)
6161 e2termConn1.TestMsgChanEmpty(t)
6162 mainCtrl.wait_registry_empty(t, 10)
6166 //-----------------------------------------------------------------------------
6167 // TestRESTUnpackSubscriptionFailureDecodeFail
6170 // +-------+ +---------+ +---------+
6171 // | xapp | | submgr | | e2term |
6172 // +-------+ +---------+ +---------+
6175 // |---------------->| |
6177 // | RESTSubResp | |
6178 // |<----------------| |
6181 // | |------------->|
6183 // | | SubFail | ASN.1 decode fails
6184 // | |<-------------|
6187 // | |------------->|
6189 // | | SubFail | Duplicated action
6190 // | |<-------------|
6191 // | RESTNotif (fail)| |
6192 // |<----------------| |
6194 // | |------------->|
6197 // | |<-------------|
6199 //-----------------------------------------------------------------------------
6200 func TestRESTUnpackSubscriptionFailureDecodeFail(t *testing.T) {
6201 xapp.Logger.Debug("TEST: TestRESTUnpackSubscriptionFailureDecodeFail")
6202 const subReqCount int = 1
6205 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
6206 restSubId := xappConn1.SendRESTSubsReq(t, params)
6208 crereq, cremsg := e2termConn1.RecvSubsReq(t)
6210 // Decode of this response fails which will result resending original request
6211 e2termConn1.SendInvalidE2Asn1Resp(t, cremsg, xapp.RIC_SUB_FAILURE)
6213 _, cremsg = e2termConn1.RecvSubsReq(t)
6215 xappConn1.ExpectRESTNotificationNok(t, restSubId, "allFail")
6217 // Subscription already created in E2 Node.
6218 fparams := &teststube2ap.E2StubSubsFailParams{}
6220 fparams.SetCauseVal(0, 1, 3) // CauseRIC / duplicate-action
6221 e2termConn1.SendSubsFail(t, fparams, cremsg)
6223 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
6224 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
6226 instanceId := xappConn1.WaitRESTNotification(t, restSubId)
6227 xapp.Logger.Debug("TEST: REST notification received e2SubsId=%v", instanceId)
6229 // Wait that subs is cleaned
6230 mainCtrl.wait_subs_clean(t, crereq.RequestId.InstanceId, 10)
6232 xappConn1.TestMsgChanEmpty(t)
6233 e2termConn1.TestMsgChanEmpty(t)
6234 mainCtrl.wait_registry_empty(t, 10)
6237 //-----------------------------------------------------------------------------
6238 // TestRESTUnpackSubscriptionResponseUnknownInstanceId
6241 // +-------+ +---------+ +---------+
6242 // | xapp | | submgr | | e2term |
6243 // +-------+ +---------+ +---------+
6246 // |---------------->| |
6248 // | RESTSubResp | |
6249 // |<----------------| |
6252 // | |------------->|
6254 // | | SubFail | Unknown instanceId
6255 // | |<-------------|
6258 // | |------------->|
6260 // | | SubFail | Duplicated action
6261 // | |<-------------|
6262 // | RESTNotif (fail)| |
6263 // |<----------------| |
6265 // | |------------->|
6268 // | |<-------------|
6270 //-----------------------------------------------------------------------------
6271 func TestRESTUnpackSubscriptionFailureUnknownInstanceId(t *testing.T) {
6272 xapp.Logger.Debug("TEST: TestRESTUnpackSubscriptionFailureUnknownInstanceId")
6273 const subReqCount int = 1
6276 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
6277 restSubId := xappConn1.SendRESTSubsReq(t, params)
6279 crereq, cremsg := e2termConn1.RecvSubsReq(t)
6281 // Unknown instanceId in this response which will result resending original request
6282 fparams := &teststube2ap.E2StubSubsFailParams{}
6284 fparams.Fail.RequestId.InstanceId = 0
6285 e2termConn1.SendSubsFail(t, fparams, cremsg)
6287 _, cremsg = e2termConn1.RecvSubsReq(t)
6289 xappConn1.ExpectRESTNotificationNok(t, restSubId, "allFail")
6291 // Subscription already created in E2 Node.
6292 fparams.SetCauseVal(0, 1, 3) // CauseRIC / duplicate-action
6293 e2termConn1.SendSubsFail(t, fparams, cremsg)
6295 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
6296 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
6298 instanceId := xappConn1.WaitRESTNotification(t, restSubId)
6299 xapp.Logger.Debug("TEST: REST notification received e2SubsId=%v", instanceId)
6301 // Wait that subs is cleaned
6302 mainCtrl.wait_subs_clean(t, crereq.RequestId.InstanceId, 10)
6304 xappConn1.TestMsgChanEmpty(t)
6305 e2termConn1.TestMsgChanEmpty(t)
6306 mainCtrl.wait_registry_empty(t, 10)
6309 //-----------------------------------------------------------------------------
6310 // TestRESTUnpackSubscriptionFailureNoTransaction
6313 // +-------+ +---------+ +---------+
6314 // | xapp | | submgr | | e2term |
6315 // +-------+ +---------+ +---------+
6318 // |---------------->| |
6320 // | RESTSubResp | |
6321 // |<----------------| |
6324 // | |------------->|
6326 // | | SubFail | No transaction for the response
6327 // | |<-------------|
6330 // | |------------->|
6332 // | | SubFail | Duplicated action
6333 // | |<-------------|
6334 // | RESTNotif (fail)| |
6335 // |<----------------| |
6337 // | |------------->|
6340 // | |<-------------|
6342 //-----------------------------------------------------------------------------
6343 func TestRESTUnpackSubscriptionFailureNoTransaction(t *testing.T) {
6344 xapp.Logger.Debug("TEST: TestRESTUnpackSubscriptionFailureNoTransaction")
6345 const subReqCount int = 1
6348 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
6349 restSubId := xappConn1.SendRESTSubsReq(t, params)
6351 crereq, cremsg := e2termConn1.RecvSubsReq(t)
6353 mainCtrl.MakeTransactionNil(t, crereq.RequestId.InstanceId)
6355 // No transaction exist for this response which will result resending original request
6356 fparams := &teststube2ap.E2StubSubsFailParams{}
6358 e2termConn1.SendSubsFail(t, fparams, cremsg)
6360 _, cremsg = e2termConn1.RecvSubsReq(t)
6362 xappConn1.ExpectRESTNotificationNok(t, restSubId, "allFail")
6364 // Subscription already created in E2 Node.
6365 fparams.SetCauseVal(0, 1, 3) // CauseRIC / duplicate-action
6366 e2termConn1.SendSubsFail(t, fparams, cremsg)
6368 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
6369 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
6371 // Resending happens because there no transaction
6372 delreq, delmsg = e2termConn1.RecvSubsDelReq(t)
6373 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
6375 instanceId := xappConn1.WaitRESTNotification(t, restSubId)
6376 xapp.Logger.Debug("TEST: REST notification received e2SubsId=%v", instanceId)
6378 // Wait that subs is cleaned
6379 mainCtrl.wait_subs_clean(t, crereq.RequestId.InstanceId, 10)
6381 xappConn1.TestMsgChanEmpty(t)
6382 e2termConn1.TestMsgChanEmpty(t)
6383 mainCtrl.wait_registry_empty(t, 10)
6386 //-----------------------------------------------------------------------------
6387 // TestRESTUnpackSubscriptionDeleteResponseDecodeFail
6390 // +-------+ +---------+ +---------+
6391 // | xapp | | submgr | | e2term |
6392 // +-------+ +---------+ +---------+
6394 // | [SUBS CREATE] |
6397 // | RESTSubDelReq | |
6398 // |---------------->| |
6400 // | RESTSubDelResp | |
6401 // |<----------------| |
6404 // | |------------->|
6406 // | | SubDelResp | ASN.1 decode fails
6407 // | |<-------------|
6410 // | |------------->|
6412 // | | SubDelFail | Subscription does exist any more
6413 // | |<-------------|
6416 //-----------------------------------------------------------------------------
6417 func TestRESTUnpackSubscriptionDeleteResponseDecodeFail(t *testing.T) {
6418 xapp.Logger.Debug("TEST: TestRESTUnpackSubscriptionDeleteResponseDecodeFail")
6421 var params *teststube2ap.RESTSubsReqParams = nil
6422 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
6425 xappConn1.SendRESTSubsDelReq(t, &restSubId)
6427 // E2t: Receive 1st SubsDelReq
6428 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
6430 // Decode of this response fails which will result resending original request
6431 e2termConn1.SendInvalidE2Asn1Resp(t, delmsg, xapp.RIC_SUB_DEL_REQ)
6433 // E2t: Receive 2nd SubsDelReq and send SubsDelResp
6434 delreq, delmsg = e2termConn1.RecvSubsDelReq(t)
6436 // Subscription does not exist in in E2 Node.
6437 e2termConn1.SendSubsDelFail(t, delreq, delmsg)
6439 // Wait that subs is cleaned
6440 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
6442 xappConn1.TestMsgChanEmpty(t)
6443 e2termConn1.TestMsgChanEmpty(t)
6444 mainCtrl.wait_registry_empty(t, 10)
6447 //-----------------------------------------------------------------------------
6448 // TestRESTUnpackSubscriptionDeleteResponseUnknownInstanceId
6451 // +-------+ +---------+ +---------+
6452 // | xapp | | submgr | | e2term |
6453 // +-------+ +---------+ +---------+
6455 // | [SUBS CREATE] |
6458 // | RESTSubDelReq | |
6459 // |---------------->| |
6461 // | RESTSubDelResp | |
6462 // |<----------------| |
6465 // | |------------->|
6467 // | | SubDelResp | Unknown instanceId
6468 // | |<-------------|
6471 // | |------------->|
6473 // | | SubDelFail | Subscription does exist any more
6474 // | |<-------------|
6476 //-----------------------------------------------------------------------------
6477 func TestRESTUnpackSubscriptionDeleteResponseUnknownInstanceId(t *testing.T) {
6478 xapp.Logger.Debug("TEST: TestRESTUnpackSubscriptionDeleteResponseUnknownInstanceId")
6481 var params *teststube2ap.RESTSubsReqParams = nil
6482 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
6485 xappConn1.SendRESTSubsDelReq(t, &restSubId)
6487 // E2t: Receive 1st SubsDelReq
6488 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
6490 // Unknown instanceId in this response which will result resending original request
6491 delreq.RequestId.InstanceId = 0
6492 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
6494 // E2t: Receive 2nd SubsDelReq
6495 delreq, delmsg = e2termConn1.RecvSubsDelReq(t)
6497 // Subscription does not exist in in E2 Node.
6498 e2termConn1.SendSubsDelFail(t, delreq, delmsg)
6500 // Wait that subs is cleaned
6501 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
6503 xappConn1.TestMsgChanEmpty(t)
6504 e2termConn1.TestMsgChanEmpty(t)
6505 mainCtrl.wait_registry_empty(t, 10)
6508 //-----------------------------------------------------------------------------
6509 // TestRESTUnpackSubscriptionDeleteResponseNoTransaction
6512 // +-------+ +---------+ +---------+
6513 // | xapp | | submgr | | e2term |
6514 // +-------+ +---------+ +---------+
6516 // | [SUBS CREATE] |
6519 // | RESTSubDelReq | |
6520 // |---------------->| |
6522 // | RESTSubDelResp | |
6523 // |<----------------| |
6526 // | |------------->|
6528 // | | SubDelResp | No transaction for the response
6529 // | |<-------------|
6532 // | |------------->|
6534 // | | SubDelFail | Subscription does exist any more
6535 // | |<-------------|
6537 //-----------------------------------------------------------------------------
6538 func TestRESTUnpackSubscriptionDeleteResponseNoTransaction(t *testing.T) {
6539 xapp.Logger.Debug("TEST: TestRESTUnpackSubscriptionDeleteResponseNoTransaction")
6542 var params *teststube2ap.RESTSubsReqParams = nil
6543 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
6546 xappConn1.SendRESTSubsDelReq(t, &restSubId)
6548 // E2t: Receive 1st SubsDelReq
6549 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
6551 mainCtrl.MakeTransactionNil(t, e2SubsId)
6553 // No transaction exist for this response which will result resending original request
6554 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
6556 // E2t: Receive 2nd SubsDelReq
6557 delreq, delmsg = e2termConn1.RecvSubsDelReq(t)
6559 // Subscription does not exist in in E2 Node.
6560 e2termConn1.SendSubsDelFail(t, delreq, delmsg)
6562 // Wait that subs is cleaned
6563 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
6565 xappConn1.TestMsgChanEmpty(t)
6566 e2termConn1.TestMsgChanEmpty(t)
6567 mainCtrl.wait_registry_empty(t, 10)
6570 //-----------------------------------------------------------------------------
6571 // TestRESTUnpackSubscriptionDeleteFailureDecodeFail
6574 // +-------+ +---------+ +---------+
6575 // | xapp | | submgr | | e2term |
6576 // +-------+ +---------+ +---------+
6578 // | [SUBS CREATE] |
6581 // | RESTSubDelReq | |
6582 // |---------------->| |
6584 // | RESTSubDelResp | |
6585 // |<----------------| |
6588 // | |------------->|
6590 // | | SubDelFail | ASN.1 decode fails
6591 // | |<-------------|
6594 // | |------------->|
6596 // | | SubDelFail | Subscription does exist any more
6597 // | |<-------------|
6599 //-----------------------------------------------------------------------------
6600 func TestRESTUnpackSubscriptionDeleteFailureDecodeFail(t *testing.T) {
6601 xapp.Logger.Debug("TEST: TestRESTUnpackSubscriptionDeleteFailureDecodeFail")
6604 var params *teststube2ap.RESTSubsReqParams = nil
6605 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
6608 xappConn1.SendRESTSubsDelReq(t, &restSubId)
6610 // E2t: Receive 1st SubsDelReq
6611 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
6613 // Decode of this response fails which will result resending original request
6614 e2termConn1.SendInvalidE2Asn1Resp(t, delmsg, xapp.RIC_SUB_DEL_FAILURE)
6616 // E2t: Receive 2nd SubsDelReq and send SubsDelResp
6617 delreq, delmsg = e2termConn1.RecvSubsDelReq(t)
6619 // Subscription does not exist in in E2 Node.
6620 e2termConn1.SendSubsDelFail(t, delreq, delmsg)
6622 // Wait that subs is cleaned
6623 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
6625 xappConn1.TestMsgChanEmpty(t)
6626 e2termConn1.TestMsgChanEmpty(t)
6627 mainCtrl.wait_registry_empty(t, 10)
6630 //-----------------------------------------------------------------------------
6631 // TestRESTUnpackSubscriptionDeleteailureUnknownInstanceId
6634 // +-------+ +---------+ +---------+
6635 // | xapp | | submgr | | e2term |
6636 // +-------+ +---------+ +---------+
6638 // | [SUBS CREATE] |
6641 // | RESTSubDelReq | |
6642 // |---------------->| |
6644 // | RESTSubDelResp | |
6645 // |<----------------| |
6648 // | |------------->|
6650 // | | SubDelFail | Unknown instanceId
6651 // | |<-------------|
6654 // | |------------->|
6656 // | | SubDelFail | Subscription does exist any more
6657 // | |<-------------|
6659 //-----------------------------------------------------------------------------
6660 func TestRESTUnpackSubscriptionDeleteailureUnknownInstanceId(t *testing.T) {
6661 xapp.Logger.Debug("TEST: TestRESTUnpackSubscriptionDeleteailureUnknownInstanceId")
6664 var params *teststube2ap.RESTSubsReqParams = nil
6665 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
6668 xappConn1.SendRESTSubsDelReq(t, &restSubId)
6670 // E2t: Receive 1st SubsDelReq
6671 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
6673 // Unknown instanceId in this response which will result resending original request
6674 delreq.RequestId.InstanceId = 0
6675 e2termConn1.SendSubsDelFail(t, delreq, delmsg)
6677 // E2t: Receive 2nd SubsDelReq
6678 delreq, delmsg = e2termConn1.RecvSubsDelReq(t)
6680 // Subscription does not exist in in E2 Node.
6681 e2termConn1.SendSubsDelFail(t, delreq, delmsg)
6683 // Wait that subs is cleaned
6684 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
6686 xappConn1.TestMsgChanEmpty(t)
6687 e2termConn1.TestMsgChanEmpty(t)
6688 mainCtrl.wait_registry_empty(t, 10)
6691 //-----------------------------------------------------------------------------
6692 // TestRESTUnpackSubscriptionDeleteFailureNoTransaction
6695 // +-------+ +---------+ +---------+
6696 // | xapp | | submgr | | e2term |
6697 // +-------+ +---------+ +---------+
6699 // | [SUBS CREATE] |
6702 // | RESTSubDelReq | |
6703 // |---------------->| |
6705 // | RESTSubDelResp | |
6706 // |<----------------| |
6709 // | |------------->|
6711 // | | SubDelFail | No transaction for the response
6712 // | |<-------------|
6715 // | |------------->|
6717 // | | SubDelFail | Subscription does exist any more
6718 // | |<-------------|
6720 //-----------------------------------------------------------------------------
6721 func TestRESTUnpackSubscriptionDeleteFailureNoTransaction(t *testing.T) {
6722 xapp.Logger.Debug("TEST: TestRESTUnpackSubscriptionDeleteFailureNoTransaction")
6725 var params *teststube2ap.RESTSubsReqParams = nil
6726 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
6729 xappConn1.SendRESTSubsDelReq(t, &restSubId)
6731 // E2t: Receive 1st SubsDelReq
6732 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
6734 mainCtrl.MakeTransactionNil(t, e2SubsId)
6736 // No transaction exist for this response which will result resending original request
6737 e2termConn1.SendSubsDelFail(t, delreq, delmsg)
6739 // E2t: Receive 2nd SubsDelReq
6740 delreq, delmsg = e2termConn1.RecvSubsDelReq(t)
6742 // Subscription does not exist in in E2 Node.
6743 e2termConn1.SendSubsDelFail(t, delreq, delmsg)
6745 // Wait that subs is cleaned
6746 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
6748 xappConn1.TestMsgChanEmpty(t)
6749 e2termConn1.TestMsgChanEmpty(t)
6750 mainCtrl.wait_registry_empty(t, 10)
6753 //-----------------------------------------------------------------------------
6754 // TestRESTSubReqFailAsn1PackSubReqError
6757 // +-------+ +---------+ +---------+
6758 // | xapp | | submgr | | e2term |
6759 // +-------+ +---------+ +---------+
6762 // |---------------->| |
6764 // | RESTSubResp | |
6765 // |<----------------| |
6767 // | ASN.1 encode fails |
6770 // | |------------->|
6773 // | |<-------------|
6777 // |<----------------| |
6779 // | [SUBS DELETE] |
6782 //-----------------------------------------------------------------------------
6783 func TestRESTSubReqFailAsn1PackSubReqError(t *testing.T) {
6785 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
6786 Counter{cRestSubReqFromXapp, 1},
6787 Counter{cRestSubRespToXapp, 1},
6788 Counter{cRestSubFailNotifToXapp, 1},
6791 const subReqCount int = 1
6793 var params *teststube2ap.RESTSubsReqParams = nil
6794 params = xappConn1.GetRESTSubsReqReportParams(subReqCount)
6795 e2ap_wrapper.AllowE2apToProcess(e2ap_wrapper.SUB_REQ, false)
6798 restSubId := xappConn1.SendRESTSubsReq(t, params)
6799 xapp.Logger.Debug("Send REST subscriber request for subscriberId : %v", restSubId)
6801 // E2t: Receive SubsDelReq
6802 xappConn1.ExpectRESTNotificationNok(t, restSubId, "allFail")
6804 e2SubsId := xappConn1.WaitRESTNotification(t, restSubId)
6805 xapp.Logger.Debug("TEST: REST notification received e2SubsId=%v", e2SubsId)
6807 e2ap_wrapper.AllowE2apToProcess(e2ap_wrapper.SUB_REQ, true)
6808 // Wait that subs is cleaned
6809 waitSubsCleanup(t, e2SubsId, 10)
6810 mainCtrl.VerifyCounterValues(t)
6813 func TestRESTSubReqPolicyUpdateTimeoutAndSubDelOkSameAction(t *testing.T) {
6814 CaseBegin("TestRESTSubReqPolicyUpdateTimeoutAndSubDelOkSameAction")
6816 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
6817 Counter{cRestSubReqFromXapp, 2},
6818 Counter{cRestSubRespToXapp, 2},
6819 Counter{cSubReqToE2, 2},
6820 Counter{cSubRespFromE2, 1},
6821 Counter{cRestSubNotifToXapp, 1},
6822 Counter{cRestSubFailNotifToXapp, 1},
6823 Counter{cRestSubDelReqFromXapp, 1},
6824 Counter{cSubDelReqToE2, 1},
6825 Counter{cSubDelRespFromE2, 1},
6826 Counter{cRestSubDelRespToXapp, 1},
6829 const e2Timeout int64 = 1
6830 const e2RetryCount int64 = 0
6831 const routingNeeded bool = false
6834 params := xappConn1.GetRESTSubsReqPolicyParams(subReqCount)
6835 params.SetSubscriptionDirectives(e2Timeout, e2RetryCount, routingNeeded)
6838 restSubId := xappConn1.SendRESTSubsReq(t, params)
6839 xapp.Logger.Debug("Send REST subscribe request for subscriberId : %v", restSubId)
6841 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
6842 xappConn1.ExpectRESTNotification(t, restSubId)
6843 e2termConn1.SendSubsResp(t, crereq1, cremsg1)
6844 e2SubsId := xappConn1.WaitRESTNotification(t, restSubId)
6845 xapp.Logger.Debug("REST notification received e2SubsId=%v", e2SubsId)
6848 params = xappConn1.GetRESTSubsReqPolicyParams(subReqCount)
6849 params.SetSubscriptionDirectives(e2Timeout, e2RetryCount, routingNeeded)
6850 params.SetSubscriptionID(&restSubId)
6851 params.SetTimeToWait("w200ms")
6852 restSubId = xappConn1.SendRESTSubsReq(t, params)
6853 xapp.Logger.Debug("Send REST subscribe request for subscriberId : %v", restSubId)
6855 crereq1, cremsg1 = e2termConn1.RecvSubsReq(t)
6856 xappConn1.ExpectRESTNotification(t, restSubId)
6857 // SubsResp is missing, e2SubsId will be 0
6858 zeroE2SubsId := xappConn1.WaitRESTNotification(t, restSubId)
6859 xapp.Logger.Debug("TEST: REST notification received e2SubsId=%v", zeroE2SubsId)
6862 xappConn1.SendRESTSubsDelReq(t, &restSubId)
6863 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
6864 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
6866 waitSubsCleanup(t, e2SubsId, 10)
6868 mainCtrl.VerifyCounterValues(t)
6871 //-----------------------------------------------------------------------------
6872 // TestPolicyUpdateRESTSubReqAndSubDelOkWithRestartInMiddle
6875 // +-------+ +---------+ +---------+
6876 // | xapp | | submgr | | e2term |
6877 // +-------+ +---------+ +---------+
6880 // |---------------->| |
6882 // | RESTSubResp | |
6883 // |<----------------| |
6885 // | |------------->|
6888 // | |<-------------|
6891 // |<----------------| |
6894 // |---------------->| |
6896 // | RESTSubResp | |
6897 // |<----------------| |
6899 // | |------------->|
6901 // | Submgr restart |
6903 // | RESTSubDelReq | |
6904 // |---------------->| |
6907 // | |------------->|
6910 // | |<-------------|
6912 // | RESTSubDelResp | |
6913 // |<----------------| |
6915 //-----------------------------------------------------------------------------
6917 func TestPolicyUpdateRESTSubReqAndSubDelOkWithRestartInMiddle(t *testing.T) {
6918 CaseBegin("TestPolicyUpdateRESTSubReqAndSubDelOkWithRestartInMiddle")
6920 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
6921 Counter{cRestSubReqFromXapp, 2},
6922 Counter{cRestSubRespToXapp, 2},
6923 Counter{cSubReqToE2, 2},
6924 Counter{cSubRespFromE2, 1},
6925 Counter{cRestSubNotifToXapp, 1},
6926 Counter{cRestSubNotifToXapp, 1},
6927 Counter{cRestSubDelReqFromXapp, 1},
6928 Counter{cSubDelReqToE2, 1},
6929 Counter{cRestSubDelRespToXapp, 1},
6932 // Remove possible existing subscription
6933 mainCtrl.removeExistingSubscriptions(t)
6935 const e2Timeout int64 = 1
6936 const e2RetryCount int64 = 0
6937 const routingNeeded bool = false
6940 params := xappConn1.GetRESTSubsReqPolicyParams(subReqCount)
6941 params.SetSubscriptionDirectives(e2Timeout, e2RetryCount, routingNeeded)
6942 // Create subscription
6943 restSubId := xappConn1.SendRESTSubsReq(t, params)
6944 xapp.Logger.Debug("Send REST subscribe request for subscriberId : %v", restSubId)
6946 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
6947 xappConn1.ExpectRESTNotification(t, restSubId)
6948 e2termConn1.SendSubsResp(t, crereq1, cremsg1)
6949 e2SubsId := xappConn1.WaitRESTNotification(t, restSubId)
6950 xapp.Logger.Debug("REST notification received e2SubsId=%v", e2SubsId)
6952 // Check subscription
6953 queryXappSubscription(t, int64(e2SubsId), "RAN_NAME_1", []string{"localhost:13560"})
6956 params = xappConn1.GetRESTSubsReqPolicyParams(subReqCount)
6957 params.SetSubscriptionDirectives(e2Timeout, e2RetryCount, routingNeeded)
6958 params.SetSubscriptionID(&restSubId)
6959 params.SetTimeToWait("w200ms")
6960 mainCtrl.SetResetTestFlag(t, true) // subs.DoNotWaitSubResp will be set TRUE for the subscription
6961 restSubId = xappConn1.SendRESTSubsReq(t, params)
6962 xapp.Logger.Debug("Send REST subscribe request for subscriberId : %v", restSubId)
6964 crereq1, cremsg1 = e2termConn1.RecvSubsReq(t)
6965 mainCtrl.SetResetTestFlag(t, false)
6967 // SubsResp is missing due to submgr restart
6969 mainCtrl.SimulateRestart(t)
6970 xapp.Logger.Debug("mainCtrl.SimulateRestart done")
6972 // Check subscription
6973 queryXappSubscription(t, int64(e2SubsId), "RAN_NAME_1", []string{"localhost:13560"})
6975 xapp.Logger.Debug("Here 1")
6976 //<-time.After(3 * time.Second)
6977 xapp.Logger.Debug("Here 2")
6979 // Delete subscription
6980 xappConn1.SendRESTSubsDelReq(t, &restSubId)
6981 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
6982 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
6984 //Wait that subs is cleaned
6985 waitSubsCleanup(t, e2SubsId, 10)
6987 mainCtrl.VerifyCounterValues(t)
6990 ////////////////////////////////////////////////////////////////////////////////////
6991 // Services for UT cases
6992 ////////////////////////////////////////////////////////////////////////////////////
6993 const subReqCount int = 1
6994 const host string = "localhost"
6996 func createSubscription(t *testing.T, fromXappConn *teststube2ap.E2Stub, toE2termConn *teststube2ap.E2Stub, params *teststube2ap.RESTSubsReqParams) (string, uint32) {
6998 params = fromXappConn.GetRESTSubsReqReportParams(subReqCount)
7000 restSubId := fromXappConn.SendRESTSubsReq(t, params)
7001 xapp.Logger.Debug("Send REST subscriber request for subscriberId : %v", restSubId)
7003 crereq1, cremsg1 := toE2termConn.RecvSubsReq(t)
7004 fromXappConn.ExpectRESTNotification(t, restSubId)
7005 toE2termConn.SendSubsResp(t, crereq1, cremsg1)
7006 e2SubsId := fromXappConn.WaitRESTNotification(t, restSubId)
7007 xapp.Logger.Debug("REST notification received e2SubsId=%v", e2SubsId)
7009 return restSubId, e2SubsId
7012 func createXapp2MergedSubscription(t *testing.T, meid string) (string, uint32) {
7014 params := xappConn2.GetRESTSubsReqReportParams(subReqCount)
7016 params.SetMeid(meid)
7018 xapp.Subscription.SetResponseCB(xappConn2.SubscriptionRespHandler)
7019 restSubId := xappConn2.SendRESTSubsReq(t, params)
7020 xappConn2.ExpectRESTNotification(t, restSubId)
7021 xapp.Logger.Debug("Send REST subscriber request for subscriberId : %v", restSubId)
7022 e2SubsId := xappConn2.WaitRESTNotification(t, restSubId)
7023 xapp.Logger.Debug("REST notification received e2SubsId=%v", e2SubsId)
7025 return restSubId, e2SubsId
7028 func createXapp1PolicySubscription(t *testing.T) (string, uint32) {
7030 params := xappConn1.GetRESTSubsReqPolicyParams(subReqCount)
7031 restSubId := xappConn1.SendRESTSubsReq(t, params)
7032 xapp.Logger.Debug("Send REST Policy subscriber request for subscriberId : %v", restSubId)
7034 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
7035 xappConn1.ExpectRESTNotification(t, restSubId)
7036 e2termConn1.SendSubsResp(t, crereq1, cremsg1)
7037 e2SubsId := xappConn1.WaitRESTNotification(t, restSubId)
7038 xapp.Logger.Debug("REST notification received e2SubsId=%v", e2SubsId)
7040 return restSubId, e2SubsId
7043 func createXapp1ReportSubscriptionE2Fail(t *testing.T) (string, uint32) {
7044 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
7045 restSubId := xappConn1.SendRESTSubsReq(t, params)
7047 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
7048 fparams1 := &teststube2ap.E2StubSubsFailParams{}
7049 fparams1.Set(crereq1)
7050 e2termConn1.SendSubsFail(t, fparams1, cremsg1)
7052 delreq1, delmsg1 := e2termConn1.RecvSubsDelReq(t)
7053 xappConn1.ExpectRESTNotification(t, restSubId)
7054 e2termConn1.SendSubsDelResp(t, delreq1, delmsg1)
7055 e2SubsId := xappConn1.WaitRESTNotification(t, restSubId)
7056 xapp.Logger.Debug("TEST: REST notification received e2SubsId=%v", e2SubsId)
7058 return restSubId, e2SubsId
7061 func deleteSubscription(t *testing.T, fromXappConn *teststube2ap.E2Stub, toE2termConn *teststube2ap.E2Stub, restSubId *string) {
7062 fromXappConn.SendRESTSubsDelReq(t, restSubId)
7063 delreq, delmsg := toE2termConn.RecvSubsDelReq(t)
7064 toE2termConn.SendSubsDelResp(t, delreq, delmsg)
7067 func deleteXapp1Subscription(t *testing.T, restSubId *string) {
7068 xappConn1.SendRESTSubsDelReq(t, restSubId)
7069 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
7070 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
7073 func deleteXapp2Subscription(t *testing.T, restSubId *string) {
7074 xappConn2.SendRESTSubsDelReq(t, restSubId)
7075 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
7076 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
7079 func queryXappSubscription(t *testing.T, e2SubsId int64, meid string, endpoint []string) {
7080 resp, _ := xapp.Subscription.QuerySubscriptions()
7081 assert.Equal(t, resp[0].SubscriptionID, e2SubsId)
7082 assert.Equal(t, resp[0].Meid, meid)
7083 assert.Equal(t, resp[0].ClientEndpoint, endpoint)
7086 func waitSubsCleanup(t *testing.T, e2SubsId uint32, timeout int) {
7087 //Wait that subs is cleaned
7088 mainCtrl.wait_subs_clean(t, e2SubsId, timeout)
7090 xappConn1.TestMsgChanEmpty(t)
7091 xappConn2.TestMsgChanEmpty(t)
7092 e2termConn1.TestMsgChanEmpty(t)
7093 mainCtrl.wait_registry_empty(t, timeout)
7096 func sendAndReceiveMultipleE2SubReqs(t *testing.T, count int, fromXappConn *teststube2ap.E2Stub, toE2termConn *teststube2ap.E2Stub, restSubId string) []uint32 {
7098 var e2SubsId []uint32
7100 for i := 0; i < count; i++ {
7101 xapp.Logger.Debug("TEST: %d ===================================== BEGIN CRE ============================================", i+1)
7102 crereq, cremsg := toE2termConn.RecvSubsReq(t)
7103 fromXappConn.ExpectRESTNotification(t, restSubId)
7104 toE2termConn.SendSubsResp(t, crereq, cremsg)
7105 instanceId := fromXappConn.WaitRESTNotification(t, restSubId)
7106 e2SubsId = append(e2SubsId, instanceId)
7107 xapp.Logger.Debug("TEST: %v", e2SubsId)
7108 xapp.Logger.Debug("TEST: %d ===================================== END CRE ============================================", i+1)
7109 <-time.After(100 * time.Millisecond)
7114 func sendAndReceiveMultipleE2DelReqs(t *testing.T, e2SubsIds []uint32, toE2termConn *teststube2ap.E2Stub) {
7116 for i := 0; i < len(e2SubsIds); i++ {
7117 xapp.Logger.Debug("TEST: %d ===================================== BEGIN DEL ============================================", i+1)
7118 delreq, delmsg := toE2termConn.RecvSubsDelReq(t)
7119 toE2termConn.SendSubsDelResp(t, delreq, delmsg)
7120 <-time.After(1 * time.Second)
7121 xapp.Logger.Debug("TEST: %d ===================================== END DEL ============================================", i+1)
7122 <-time.After(100 * time.Millisecond)
7125 // Wait that subs is cleaned
7126 for i := 0; i < len(e2SubsIds); i++ {
7127 mainCtrl.wait_subs_clean(t, e2SubsIds[i], 10)