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 mainCtrl.InitAllCounterMap()
43 SetPackerIf(e2ap_wrapper.NewUtAsn1E2APPacker())
44 mainCtrl.c.restDuplicateCtrl.Init()
47 func TestRanStatusChangeViaSDLNotification(t *testing.T) {
49 // Current UT test cases use these ran names
50 xappRnibMock.CreateGnb("RAN_NAME_1", entities.ConnectionStatus_DISCONNECTED)
51 xappRnibMock.CreateGnb("RAN_NAME_11", entities.ConnectionStatus_DISCONNECTED)
52 xappRnibMock.CreateGnb("RAN_NAME_2", entities.ConnectionStatus_DISCONNECTED)
54 mainCtrl.c.e2IfState.ReadE2ConfigurationFromRnib()
55 mainCtrl.c.e2IfState.SubscribeChannels()
57 mainCtrl.SetE2State(t, "RAN_NAME_1_CONNECTED")
58 mainCtrl.SetE2State(t, "RAN_NAME_2_CONNECTED")
59 mainCtrl.SetE2State(t, "RAN_NAME_11_CONNECTED")
62 //-----------------------------------------------------------------------------
63 // TestRESTSubReqAfterE2ConnBreak
66 // +-------+ +---------+ +---------+
67 // | xapp | | submgr | | e2term |
68 // +-------+ +---------+ +---------+
70 // | [E2 Conn. DOWN] |
73 // |---------------->| |
75 // |<----------------| |
78 //-----------------------------------------------------------------------------
80 func TestRESTSubReqAfterE2ConnBreak(t *testing.T) {
81 CaseBegin("TestRESTSubReqAfterE2ConnBreak")
83 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
84 Counter{cRestSubReqFromXapp, 1},
85 Counter{cRestReqRejDueE2Down, 1},
88 // E2 disconnect after E2term has received response
89 mainCtrl.SetE2State(t, "RAN_NAME_1_DISCONNECTED")
91 const subReqCount int = 1
92 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
93 xappConn1.SendRESTSubsReq(t, params)
95 // Restore E2 connection for following test cases
96 mainCtrl.SetE2State(t, "RAN_NAME_1_CONNECTED")
98 mainCtrl.VerifyCounterValues(t)
99 mainCtrl.VerifyAllClean(t)
103 //-----------------------------------------------------------------------------
104 // TestRESTSubReqE2ConnBreak
107 // +-------+ +---------+ +---------+
108 // | xapp | | submgr | | e2term |
109 // +-------+ +---------+ +---------+
112 // |---------------->| |
114 // |<----------------| |
116 // | |------------->|
118 // | |<-------------|
120 // | [E2 Conn. DOWN] |
121 // | [Int. SUBS DELETE] |
123 // | RESTNotif(unsuccessful) |
124 // |<----------------| |
128 //-----------------------------------------------------------------------------
129 func TestRESTSubReqE2ConnBreak(t *testing.T) {
130 CaseBegin("TestRESTSubReqE2ConnBreak")
132 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
133 Counter{cRestSubReqFromXapp, 1},
134 Counter{cRestSubRespToXapp, 1},
135 Counter{cSubReqToE2, 1},
136 Counter{cSubRespFromE2, 1},
137 Counter{cRestSubFailNotifToXapp, 1},
141 const subReqCount int = 1
142 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
143 restSubId := xappConn1.SendRESTSubsReq(t, params)
145 crereq, cremsg := e2termConn1.RecvSubsReq(t)
146 xappConn1.ExpectRESTNotification(t, restSubId)
148 // E2 disconnect after E2term has received response
149 mainCtrl.SetE2State(t, "RAN_NAME_1_DISCONNECTED")
151 e2termConn1.SendSubsResp(t, crereq, cremsg)
152 e2SubsId := xappConn1.WaitRESTNotification(t, restSubId)
154 <-time.After(time.Second * 1)
155 assert.Equal(t, 0, len(mainCtrl.c.registry.register))
156 assert.Equal(t, 0, len(mainCtrl.c.registry.restSubscriptions))
158 subIds, register, err := mainCtrl.c.ReadAllSubscriptionsFromSdl()
160 xapp.Logger.Error("%v", err)
162 assert.Equal(t, 65534, len(subIds)) // range 1-65535 , FFFF = 65535
163 assert.Equal(t, 0, len(register))
166 restSubscriptions, err := mainCtrl.c.ReadAllRESTSubscriptionsFromSdl()
168 xapp.Logger.Error("%v", err)
170 assert.Equal(t, 0, len(restSubscriptions))
173 // Restore E2 connection for following test cases
174 mainCtrl.SetE2State(t, "RAN_NAME_1_CONNECTED")
176 // Wait that subs is cleaned
177 waitSubsCleanup(t, e2SubsId, 10)
178 mainCtrl.VerifyCounterValues(t)
179 mainCtrl.VerifyAllClean(t)
182 //-----------------------------------------------------------------------------
183 // TestRESTSubscriptionDeleteAfterE2ConnectionBreak
186 // +-------+ +---------+ +---------+
187 // | xapp | | submgr | | e2term |
188 // +-------+ +---------+ +---------+
192 // | [E2 Conn. DOWN] |
194 // | RESTSubDelReq | |
195 // |---------------->| |
197 // | RESTSubDelResp | |
198 // |<----------------| |
200 // | [No valid subscription found] |
203 //-----------------------------------------------------------------------------
204 func TestRESTSubscriptionDeleteAfterE2ConnectionBreak(t *testing.T) {
205 xapp.Logger.Debug("TEST: TestRESTSubscriptionDeleteAfterE2ConnectionBreak")
207 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
208 Counter{cRestSubReqFromXapp, 1},
209 Counter{cRestSubRespToXapp, 1},
210 Counter{cSubReqToE2, 1},
211 Counter{cSubRespFromE2, 1},
212 Counter{cRestSubNotifToXapp, 1},
213 Counter{cRestSubDelReqFromXapp, 1},
214 Counter{cRestSubDelRespToXapp, 1},
218 var params *teststube2ap.RESTSubsReqParams = nil
219 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
221 // E2 disconnect after E2term has received response
222 mainCtrl.SetE2State(t, "RAN_NAME_1_DISCONNECTED")
225 xappConn1.SendRESTSubsDelReq(t, &restSubId)
227 <-time.After(time.Second * 1)
228 assert.Equal(t, 0, len(mainCtrl.c.registry.register))
229 assert.Equal(t, 0, len(mainCtrl.c.registry.restSubscriptions))
231 subIds, register, err := mainCtrl.c.ReadAllSubscriptionsFromSdl()
233 xapp.Logger.Error("%v", err)
235 assert.Equal(t, 65534, len(subIds)) // range 1-65535 , FFFF = 65535
236 assert.Equal(t, 0, len(register))
239 restSubscriptions, err := mainCtrl.c.ReadAllRESTSubscriptionsFromSdl()
241 xapp.Logger.Error("%v", err)
243 assert.Equal(t, 0, len(restSubscriptions))
246 // Restore E2 connection for following test cases
247 mainCtrl.SetE2State(t, "RAN_NAME_1_CONNECTED")
249 // Wait that subs is cleaned
250 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
252 xappConn1.TestMsgChanEmpty(t)
253 e2termConn1.TestMsgChanEmpty(t)
254 mainCtrl.wait_registry_empty(t, 10)
255 mainCtrl.VerifyCounterValues(t)
256 mainCtrl.VerifyAllClean(t)
259 //-----------------------------------------------------------------------------
260 // TestRESTOtherE2ConnectionChanges
264 // +-------+ +---------+ +---------+
265 // | xapp | | submgr | | e2term |
266 // +-------+ +---------+ +---------+
270 // | [E2 CONNECTED_SETUP_FAILED] |
271 // | [E2 CONNECTING] |
272 // | [E2 SHUTTING_DOWN] |
273 // | [E2 SHUT_DOWN] |
278 //-----------------------------------------------------------------------------
279 func TestRESTOtherE2ConnectionChanges(t *testing.T) {
280 xapp.Logger.Debug("TEST: TestRESTOtherE2ConnectionChanges")
282 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
283 Counter{cRestSubReqFromXapp, 1},
284 Counter{cRestSubRespToXapp, 1},
285 Counter{cSubReqToE2, 1},
286 Counter{cSubRespFromE2, 1},
287 Counter{cRestSubNotifToXapp, 1},
288 Counter{cRestSubDelReqFromXapp, 1},
289 Counter{cSubDelReqToE2, 1},
290 Counter{cSubDelRespFromE2, 1},
291 Counter{cRestSubDelRespToXapp, 1},
295 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
296 restSubId := xappConn1.SendRESTSubsReq(t, params)
298 crereq, cremsg := e2termConn1.RecvSubsReq(t)
299 xappConn1.ExpectRESTNotification(t, restSubId)
300 e2termConn1.SendSubsResp(t, crereq, cremsg)
301 e2SubsId := xappConn1.WaitRESTNotification(t, restSubId)
303 // Submgr should not react any other connection state changes than CONNECTED and DISCONNECTED
304 mainCtrl.SetE2State(t, "RAN_NAME_1_CONNECTED_SETUP_FAILED")
305 mainCtrl.SetE2State(t, "RAN_NAME_1_CONNECTING")
306 mainCtrl.SetE2State(t, "RAN_NAME_1_SHUTTING_DOWN")
307 mainCtrl.SetE2State(t, "RAN_NAME_1_SHUT_DOWN")
310 xappConn1.SendRESTSubsDelReq(t, &restSubId)
311 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
312 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
314 // Restore E2 connection for following test cases
315 mainCtrl.SetE2State(t, "RAN_NAME_1_CONNECTED")
317 // Wait that subs is cleaned
318 waitSubsCleanup(t, e2SubsId, 10)
319 mainCtrl.VerifyCounterValues(t)
320 mainCtrl.VerifyAllClean(t)
323 //-----------------------------------------------------------------------------
324 // TestRESTSubReqAndDeleteOkWithE2apUtWrapper
327 // +-------+ +---------+ +---------+ +---------+
328 // | xapp | | submgr | | e2term | | rtmgr |
329 // +-------+ +---------+ +---------+ +---------+
331 // | RESTSubReq | | |
332 // |---------------->| | |
333 // | | RouteCreate | |
334 // | |--------------------------->| // The order of these events may vary
336 // | RESTSubResp | | | // The order of these events may vary
337 // |<----------------| | |
338 // | | RouteResponse| |
339 // | |<---------------------------| // The order of these events may vary
342 // | |------------->| | // The order of these events may vary
345 // | |<-------------| |
346 // | RESTNotif1 | | |
347 // |<----------------| | |
349 // | RESTSubDelReq | | |
350 // |---------------->| | |
352 // | |------------->| |
354 // | RESTSubDelResp| | |
355 // |<----------------| | |
357 // | | SubDelResp | |
358 // | |<-------------| |
362 //-----------------------------------------------------------------------------
363 func TestRESTSubReqAndDeleteOkWithE2apUtWrapper(t *testing.T) {
365 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, nil)
367 deleteSubscription(t, xappConn1, e2termConn1, &restSubId)
369 waitSubsCleanup(t, e2SubsId, 10)
370 mainCtrl.VerifyAllClean(t)
373 //-----------------------------------------------------------------------------
374 // TestRESTSubReqAndE1apDeleteReqPackingError
377 // +-------+ +---------+ +---------+ +---------+
378 // | xapp | | submgr | | e2term | | rtmgr |
379 // +-------+ +---------+ +---------+ +---------+
381 // | RESTSubReq | | |
382 // |---------------->| | |
383 // | | RouteCreate | |
384 // | |--------------------------->| // The order of these events may vary
386 // | RESTSubResp | | | // The order of these events may vary
387 // |<----------------| | |
388 // | | RouteResponse| |
389 // | |<---------------------------| // The order of these events may vary
392 // | |------------->| | // The order of these events may vary
395 // | |<-------------| |
396 // | RESTNotif1 | | |
397 // |<----------------| | |
399 // | RESTSubDelReq | | |
400 // |---------------->| | |
402 // | RESTSubDelResp| | |
403 // |<----------------| | |
407 //-----------------------------------------------------------------------------
408 func TestRESTSubReqAndE1apDeleteReqPackingError(t *testing.T) {
410 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, nil)
412 e2ap_wrapper.AllowE2apToProcess(e2ap_wrapper.SUB_DEL_REQ, false)
413 xappConn1.SendRESTSubsDelReq(t, &restSubId)
414 defer e2ap_wrapper.AllowE2apToProcess(e2ap_wrapper.SUB_DEL_REQ, true)
416 waitSubsCleanup(t, e2SubsId, 10)
417 mainCtrl.VerifyAllClean(t)
420 //-----------------------------------------------------------------------------
421 // TestRESTSubReqAndE1apDeleteRespUnpackingError
424 // +-------+ +---------+ +---------+ +---------+
425 // | xapp | | submgr | | e2term | | rtmgr |
426 // +-------+ +---------+ +---------+ +---------+
428 // | RESTSubReq | | |
429 // |---------------->| | |
430 // | | RouteCreate | |
431 // | |--------------------------->| // The order of these events may vary
433 // | RESTSubResp | | | // The order of these events may vary
434 // |<----------------| | |
435 // | | RouteResponse| |
436 // | |<---------------------------| // The order of these events may vary
439 // | |------------->| | // The order of these events may vary
442 // | |<-------------| |
443 // | RESTNotif1 | | |
444 // |<----------------| | |
446 // | RESTSubDelReq | | |
447 // |---------------->| | |
449 // | |------------->| |
451 // | RESTSubDelResp| | |
452 // |<----------------| | | // The order of these events may vary
454 // | | SubDelResp | |
455 // | |<-------------| | // 1.st NOK
458 // | |------------->| |
460 // | | SubDelResp | |
461 // | |<-------------| | // 2.nd NOK
463 //-----------------------------------------------------------------------------
465 func TestRESTSubReqAndE1apDeleteRespUnpackingError(t *testing.T) {
467 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, nil)
469 xappConn1.SendRESTSubsDelReq(t, &restSubId)
470 e2ap_wrapper.AllowE2apToProcess(e2ap_wrapper.SUB_DEL_RESP, false)
471 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
472 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
474 delreq, delmsg = e2termConn1.RecvSubsDelReq(t)
475 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
477 defer e2ap_wrapper.AllowE2apToProcess(e2ap_wrapper.SUB_DEL_RESP, true)
479 waitSubsCleanup(t, e2SubsId, 10)
480 mainCtrl.VerifyAllClean(t)
483 //-----------------------------------------------------------------------------
484 // TestSubReqAndRouteNok
487 // +-------+ +---------+ +---------+
488 // | xapp | | submgr | | rtmgr |
489 // +-------+ +---------+ +---------+
492 // |------------->| |
495 // | |------------->|
499 // | |<-------------|
501 // | [SUBS INT DELETE] |
504 //-----------------------------------------------------------------------------
506 func TestSubReqAndRouteNok(t *testing.T) {
507 CaseBegin("TestSubReqAndRouteNok")
509 // Init counter check
510 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
511 Counter{cSubReqFromXapp, 1},
512 Counter{cRouteCreateFail, 1},
515 waiter := rtmgrHttp.AllocNextEvent(false)
516 newSubsId := mainCtrl.get_registry_next_subid(t)
517 xappConn1.SendSubsReq(t, nil, nil)
520 //Wait that subs is cleaned
521 mainCtrl.wait_subs_clean(t, newSubsId, 10)
523 xappConn1.TestMsgChanEmpty(t)
524 xappConn2.TestMsgChanEmpty(t)
525 e2termConn1.TestMsgChanEmpty(t)
526 mainCtrl.wait_registry_empty(t, 10)
528 <-time.After(1 * time.Second)
529 mainCtrl.VerifyCounterValues(t)
532 //-----------------------------------------------------------------------------
533 // TestSubReqAndRouteUpdateNok
536 // +-------+ +-------+ +---------+ +---------+
537 // | xapp2 | | xapp1 | | submgr | | rtmgr |
538 // +-------+ +-------+ +---------+ +---------+
540 // | [SUBS CREATE] | |
544 // | SubReq (mergeable) | |
545 // |--------------------------->| | |
547 // | | | RouteUpdate |
548 // | | |------------->|
550 // | | | RouteUpdate |
551 // | | | status:400 |
552 // | | |<-------------|
554 // | [SUBS INT DELETE] | |
557 // | [SUBS DELETE] | |
560 func TestSubReqAndRouteUpdateNok(t *testing.T) {
561 CaseBegin("TestSubReqAndRouteUpdateNok")
563 // Init counter check
564 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
565 Counter{cSubReqFromXapp, 2},
566 Counter{cSubReqToE2, 1},
567 Counter{cSubRespFromE2, 1},
568 Counter{cSubRespToXapp, 1},
569 Counter{cRouteCreateUpdateFail, 1},
570 Counter{cSubDelReqFromXapp, 1},
571 Counter{cSubDelReqToE2, 1},
572 Counter{cSubDelRespFromE2, 1},
573 Counter{cSubDelRespToXapp, 1},
576 cretrans := xappConn1.SendSubsReq(t, nil, nil)
577 crereq, cremsg := e2termConn1.RecvSubsReq(t)
578 e2termConn1.SendSubsResp(t, crereq, cremsg)
579 e2SubsId := xappConn1.RecvSubsResp(t, cretrans)
581 resp, _ := xapp.Subscription.QuerySubscriptions()
582 assert.Equal(t, resp[0].SubscriptionID, int64(e2SubsId))
583 assert.Equal(t, resp[0].Meid, "RAN_NAME_1")
584 assert.Equal(t, resp[0].ClientEndpoint, []string{"localhost:13560"})
586 waiter := rtmgrHttp.AllocNextEvent(false)
587 newSubsId := mainCtrl.get_registry_next_subid(t)
588 xappConn2.SendSubsReq(t, nil, nil)
591 deltrans := xappConn1.SendSubsDelReq(t, nil, e2SubsId)
592 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
594 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
595 xappConn1.RecvSubsDelResp(t, deltrans)
597 //Wait that subs is cleaned
598 mainCtrl.wait_subs_clean(t, newSubsId, 10)
599 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
601 xappConn1.TestMsgChanEmpty(t)
602 xappConn2.TestMsgChanEmpty(t)
603 e2termConn1.TestMsgChanEmpty(t)
604 mainCtrl.wait_registry_empty(t, 10)
606 mainCtrl.VerifyCounterValues(t)
609 //-----------------------------------------------------------------------------
610 // TestSubDelReqAndRouteDeleteNok
613 // +-------+ +---------+ +---------+ +---------+
614 // | xapp | | submgr | | e2term | | rtmgr |
615 // +-------+ +---------+ +---------+ +---------+
617 // | [SUBS CREATE] | |
622 // |------------->| | |
624 // | |------------->| |
626 // | |<-------------| |
628 // |<-------------| | |
629 // | | RouteDelete | |
630 // | |---------------------------->|
632 // | | RouteDelete | |
633 // | | status:400 | |
634 // | |<----------------------------|
636 func TestSubDelReqAndRouteDeleteNok(t *testing.T) {
637 CaseBegin("TestSubDelReqAndRouteDeleteNok")
639 // Init counter check
640 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
641 Counter{cSubReqFromXapp, 1},
642 Counter{cSubReqToE2, 1},
643 Counter{cSubRespFromE2, 1},
644 Counter{cSubRespToXapp, 1},
645 Counter{cSubDelReqFromXapp, 1},
646 Counter{cRouteDeleteFail, 1},
647 Counter{cSubDelReqToE2, 1},
648 Counter{cSubDelRespFromE2, 1},
649 Counter{cSubDelRespToXapp, 1},
652 cretrans := xappConn1.SendSubsReq(t, nil, nil)
653 crereq, cremsg := e2termConn1.RecvSubsReq(t)
654 e2termConn1.SendSubsResp(t, crereq, cremsg)
655 e2SubsId := xappConn1.RecvSubsResp(t, cretrans)
657 resp, _ := xapp.Subscription.QuerySubscriptions()
658 assert.Equal(t, resp[0].SubscriptionID, int64(e2SubsId))
659 assert.Equal(t, resp[0].Meid, "RAN_NAME_1")
660 assert.Equal(t, resp[0].ClientEndpoint, []string{"localhost:13560"})
662 deltrans := xappConn1.SendSubsDelReq(t, nil, e2SubsId)
663 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
665 waiter := rtmgrHttp.AllocNextEvent(false)
666 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
669 xappConn1.RecvSubsDelResp(t, deltrans)
671 //Wait that subs is cleaned
672 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
674 xappConn1.TestMsgChanEmpty(t)
675 xappConn2.TestMsgChanEmpty(t)
676 e2termConn1.TestMsgChanEmpty(t)
677 mainCtrl.wait_registry_empty(t, 10)
678 mainCtrl.VerifyCounterValues(t)
681 //-----------------------------------------------------------------------------
682 // TestSubMergeDelAndRouteUpdateNok
684 // +-------+ +-------+ +---------+ +---------+
685 // | xapp2 | | xapp1 | | submgr | | e2term |
686 // +-------+ +-------+ +---------+ +---------+
691 // | |------------->| |
694 // | | |------------->|
696 // | | |<-------------|
698 // | |<-------------| |
701 // |--------------------------->| |
704 // |<---------------------------| |
706 // | | SubDelReq 1 | |
707 // | |------------->| |
708 // | | | RouteUpdate |
709 // | | |-----> rtmgr |
711 // | | | RouteUpdate |
712 // | | | status:400 |
713 // | | |<----- rtmgr |
715 // | | SubDelResp 1 | |
716 // | |<-------------| |
719 // |--------------------------->| |
721 // | | | SubDelReq 2 |
722 // | | |------------->|
724 // | | | SubDelReq 2 |
725 // | | |------------->|
727 // | SubDelResp 2 | |
728 // |<---------------------------| |
730 //-----------------------------------------------------------------------------
731 func TestSubMergeDelAndRouteUpdateNok(t *testing.T) {
732 CaseBegin("TestSubMergeDelAndRouteUpdateNok")
734 // Init counter check
735 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
736 Counter{cSubReqFromXapp, 2},
737 Counter{cMergedSubscriptions, 1},
738 Counter{cSubReqToE2, 1},
739 Counter{cSubRespFromE2, 1},
740 Counter{cSubRespToXapp, 2},
741 Counter{cSubDelReqFromXapp, 2},
742 Counter{cRouteDeleteUpdateFail, 1},
743 Counter{cSubDelReqToE2, 1},
744 Counter{cSubDelRespFromE2, 1},
745 Counter{cSubDelRespToXapp, 2},
746 Counter{cUnmergedSubscriptions, 1},
750 rparams1 := &teststube2ap.E2StubSubsReqParams{}
752 cretrans1 := xappConn1.SendSubsReq(t, rparams1, nil)
753 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
754 e2termConn1.SendSubsResp(t, crereq1, cremsg1)
755 e2SubsId1 := xappConn1.RecvSubsResp(t, cretrans1)
758 rparams2 := &teststube2ap.E2StubSubsReqParams{}
760 cretrans2 := xappConn2.SendSubsReq(t, rparams2, nil)
761 e2SubsId2 := xappConn2.RecvSubsResp(t, cretrans2)
763 resp, _ := xapp.Subscription.QuerySubscriptions()
764 assert.Equal(t, resp[0].SubscriptionID, int64(e2SubsId1))
765 assert.Equal(t, resp[0].Meid, "RAN_NAME_1")
766 assert.Equal(t, resp[0].ClientEndpoint, []string{"localhost:13560", "localhost:13660"})
769 waiter := rtmgrHttp.AllocNextEvent(false)
770 deltrans1 := xappConn1.SendSubsDelReq(t, nil, e2SubsId1)
773 xappConn1.RecvSubsDelResp(t, deltrans1)
776 deltrans2 := xappConn2.SendSubsDelReq(t, nil, e2SubsId2)
777 delreq2, delmsg2 := e2termConn1.RecvSubsDelReq(t)
778 e2termConn1.SendSubsDelResp(t, delreq2, delmsg2)
779 xappConn2.RecvSubsDelResp(t, deltrans2)
780 //Wait that subs is cleaned
781 mainCtrl.wait_subs_clean(t, e2SubsId2, 10)
783 xappConn1.TestMsgChanEmpty(t)
784 xappConn2.TestMsgChanEmpty(t)
785 e2termConn1.TestMsgChanEmpty(t)
786 mainCtrl.wait_registry_empty(t, 10)
788 mainCtrl.VerifyCounterValues(t)
791 //-----------------------------------------------------------------------------
793 //-----------------------------------------------------------------------------
794 // TestSubReqAndSubDelOk
797 // +-------+ +---------+ +---------+
798 // | xapp | | submgr | | e2term |
799 // +-------+ +---------+ +---------+
802 // |------------->| |
805 // | |------------->|
808 // | |<-------------|
811 // |<-------------| |
815 // |------------->| |
818 // | |------------->|
821 // | |<-------------|
824 // |<-------------| |
826 //-----------------------------------------------------------------------------
827 func TestSubReqAndSubDelOk(t *testing.T) {
828 CaseBegin("TestSubReqAndSubDelOk")
830 // Init counter check
831 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
832 Counter{cSubReqFromXapp, 1},
833 Counter{cSubReqToE2, 1},
834 Counter{cSubRespFromE2, 1},
835 Counter{cSubRespToXapp, 1},
836 Counter{cSubDelReqFromXapp, 1},
837 Counter{cSubDelReqToE2, 1},
838 Counter{cSubDelRespFromE2, 1},
839 Counter{cSubDelRespToXapp, 1},
842 cretrans := xappConn1.SendSubsReq(t, nil, nil)
843 crereq, cremsg := e2termConn1.RecvSubsReq(t)
844 e2termConn1.SendSubsResp(t, crereq, cremsg)
845 e2SubsId := xappConn1.RecvSubsResp(t, cretrans)
847 resp, _ := xapp.Subscription.QuerySubscriptions()
848 assert.Equal(t, resp[0].SubscriptionID, int64(e2SubsId))
849 assert.Equal(t, resp[0].Meid, "RAN_NAME_1")
850 assert.Equal(t, resp[0].ClientEndpoint, []string{"localhost:13560"})
852 deltrans := xappConn1.SendSubsDelReq(t, nil, e2SubsId)
853 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
855 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
856 xappConn1.RecvSubsDelResp(t, deltrans)
858 //Wait that subs is cleaned
859 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
861 xappConn1.TestMsgChanEmpty(t)
862 xappConn2.TestMsgChanEmpty(t)
863 e2termConn1.TestMsgChanEmpty(t)
864 mainCtrl.wait_registry_empty(t, 10)
866 mainCtrl.VerifyCounterValues(t)
869 //-----------------------------------------------------------------------------
870 // TestSubReqRetransmission
873 // +-------+ +---------+ +---------+
874 // | xapp | | submgr | | e2term |
875 // +-------+ +---------+ +---------+
878 // |------------->| |
881 // | |------------->|
885 // |------------->| |
888 // | |<-------------|
891 // |<-------------| |
896 //-----------------------------------------------------------------------------
897 func TestSubReqRetransmission(t *testing.T) {
898 CaseBegin("TestSubReqRetransmission")
901 cretrans := xappConn1.SendSubsReq(t, nil, nil)
902 crereq, cremsg := e2termConn1.RecvSubsReq(t)
904 seqBef := mainCtrl.get_msgcounter(t)
905 xappConn1.SendSubsReq(t, nil, cretrans) //Retransmitted SubReq
906 mainCtrl.wait_msgcounter_change(t, seqBef, 10)
908 // hack as there is no real way to see has message be handled.
909 // Previuos counter check just tells that is has been received by submgr
910 // --> artificial delay
911 <-time.After(1 * time.Second)
912 e2termConn1.SendSubsResp(t, crereq, cremsg)
913 e2SubsId := xappConn1.RecvSubsResp(t, cretrans)
916 deltrans := xappConn1.SendSubsDelReq(t, nil, e2SubsId)
917 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
918 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
919 xappConn1.RecvSubsDelResp(t, deltrans)
921 //Wait that subs is cleaned
922 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
924 xappConn1.TestMsgChanEmpty(t)
925 xappConn2.TestMsgChanEmpty(t)
926 e2termConn1.TestMsgChanEmpty(t)
927 mainCtrl.wait_registry_empty(t, 10)
930 //-----------------------------------------------------------------------------
931 // TestSubDelReqRetransmission
934 // +-------+ +---------+ +---------+
935 // | xapp | | submgr | | e2term |
936 // +-------+ +---------+ +---------+
942 // |------------->| |
945 // | |------------->|
950 // |------------->| |
953 // | |<-------------|
956 // |<-------------| |
958 //-----------------------------------------------------------------------------
959 func TestSubDelReqRetransmission(t *testing.T) {
960 CaseBegin("TestSubDelReqRetransmission")
963 cretrans := xappConn1.SendSubsReq(t, nil, nil)
964 crereq, cremsg := e2termConn1.RecvSubsReq(t)
965 e2termConn1.SendSubsResp(t, crereq, cremsg)
966 e2SubsId := xappConn1.RecvSubsResp(t, cretrans)
969 deltrans := xappConn1.SendSubsDelReq(t, nil, e2SubsId)
970 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
972 seqBef := mainCtrl.get_msgcounter(t)
973 xappConn1.SendSubsDelReq(t, deltrans, e2SubsId) //Retransmitted SubDelReq
974 mainCtrl.wait_msgcounter_change(t, seqBef, 10)
976 // hack as there is no real way to see has message be handled.
977 // Previuos counter check just tells that is has been received by submgr
978 // --> artificial delay
979 <-time.After(1 * time.Second)
981 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
982 xappConn1.RecvSubsDelResp(t, deltrans)
984 //Wait that subs is cleaned
985 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
987 xappConn1.TestMsgChanEmpty(t)
988 xappConn2.TestMsgChanEmpty(t)
989 e2termConn1.TestMsgChanEmpty(t)
990 mainCtrl.wait_registry_empty(t, 10)
993 //-----------------------------------------------------------------------------
994 // TestSubDelReqCollision
997 // +-------+ +---------+ +---------+
998 // | xapp | | submgr | | e2term |
999 // +-------+ +---------+ +---------+
1001 // | [SUBS CREATE] |
1004 // | SubDelReq 1 | |
1005 // |------------->| |
1007 // | | SubDelReq 1 |
1008 // | |------------->|
1010 // | SubDelReq 2 | |
1013 // |------------->| |
1015 // | | SubDelResp 1 |
1016 // | |<-------------|
1018 // | SubDelResp 1 | |
1019 // |<-------------| |
1021 // | SubDelResp 2 | |
1022 // |<-------------| |
1024 //-----------------------------------------------------------------------------
1026 func TestSubDelReqCollision(t *testing.T) {
1027 CaseBegin("TestSubDelReqCollision")
1030 cretrans := xappConn1.SendSubsReq(t, nil, nil)
1031 crereq, cremsg := e2termConn1.RecvSubsReq(t)
1032 e2termConn1.SendSubsResp(t, crereq, cremsg)
1033 e2SubsId := xappConn1.RecvSubsResp(t, cretrans)
1036 xappConn1.SendSubsDelReq(t, nil, e2SubsId)
1037 delreq1, delmsg1 := e2termConn1.RecvSubsDelReq(t)
1039 // Subs Delete colliding
1040 seqBef := mainCtrl.get_msgcounter(t)
1041 deltranscol2 := xappConn1.NewRmrTransactionId("", "RAN_NAME_1")
1042 xappConn1.SendSubsDelReq(t, deltranscol2, e2SubsId) //Colliding SubDelReq
1043 mainCtrl.wait_msgcounter_change(t, seqBef, 10)
1045 // hack as there is no real way to see has message be handled.
1046 // Previuos counter check just tells that is has been received by submgr
1047 // --> artificial delay
1048 <-time.After(1 * time.Second)
1050 // Del resp for first and second
1051 e2termConn1.SendSubsDelResp(t, delreq1, delmsg1)
1053 // don't care in which order responses are received
1054 xappConn1.RecvSubsDelResp(t, nil)
1055 xappConn1.RecvSubsDelResp(t, nil)
1057 //Wait that subs is cleaned
1058 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
1060 xappConn1.TestMsgChanEmpty(t)
1061 xappConn2.TestMsgChanEmpty(t)
1062 e2termConn1.TestMsgChanEmpty(t)
1063 mainCtrl.wait_registry_empty(t, 10)
1066 //-----------------------------------------------------------------------------
1067 // TestSubReqAndSubDelOkTwoParallel
1070 // +-------+ +-------+ +---------+ +---------+
1071 // | xapp | | xapp | | submgr | | e2term |
1072 // +-------+ +-------+ +---------+ +---------+
1077 // | |------------->| |
1080 // | | |------------->|
1083 // |------------------------>| |
1086 // | | |------------->|
1089 // | | |<-------------|
1091 // | |<-------------| |
1094 // | | |<-------------|
1096 // |<------------------------| |
1098 // | | [SUBS 1 DELETE] |
1100 // | | [SUBS 2 DELETE] |
1103 //-----------------------------------------------------------------------------
1105 func TestSubReqAndSubDelOkTwoParallel(t *testing.T) {
1106 CaseBegin("TestSubReqAndSubDelOkTwoParallel")
1109 rparams1 := &teststube2ap.E2StubSubsReqParams{}
1111 cretrans1 := xappConn1.SendSubsReq(t, rparams1, nil)
1112 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
1115 rparams2 := &teststube2ap.E2StubSubsReqParams{}
1118 rparams2.Req.EventTriggerDefinition.Data.Length = 1
1119 rparams2.Req.EventTriggerDefinition.Data.Data = make([]uint8, rparams2.Req.EventTriggerDefinition.Data.Length)
1120 rparams2.Req.EventTriggerDefinition.Data.Data[0] = 2
1122 cretrans2 := xappConn2.SendSubsReq(t, rparams2, nil)
1123 crereq2, cremsg2 := e2termConn1.RecvSubsReq(t)
1126 e2termConn1.SendSubsResp(t, crereq1, cremsg1)
1127 e2SubsId1 := xappConn1.RecvSubsResp(t, cretrans1)
1130 e2termConn1.SendSubsResp(t, crereq2, cremsg2)
1131 e2SubsId2 := xappConn2.RecvSubsResp(t, cretrans2)
1134 deltrans1 := xappConn1.SendSubsDelReq(t, nil, e2SubsId1)
1135 delreq1, delmsg1 := e2termConn1.RecvSubsDelReq(t)
1136 e2termConn1.SendSubsDelResp(t, delreq1, delmsg1)
1137 xappConn1.RecvSubsDelResp(t, deltrans1)
1138 //Wait that subs is cleaned
1139 mainCtrl.wait_subs_clean(t, e2SubsId1, 10)
1142 deltrans2 := xappConn2.SendSubsDelReq(t, nil, e2SubsId2)
1143 delreq2, delmsg2 := e2termConn1.RecvSubsDelReq(t)
1144 e2termConn1.SendSubsDelResp(t, delreq2, delmsg2)
1145 xappConn2.RecvSubsDelResp(t, deltrans2)
1146 //Wait that subs is cleaned
1147 mainCtrl.wait_subs_clean(t, e2SubsId2, 10)
1149 xappConn1.TestMsgChanEmpty(t)
1150 xappConn2.TestMsgChanEmpty(t)
1151 e2termConn1.TestMsgChanEmpty(t)
1152 mainCtrl.wait_registry_empty(t, 10)
1155 //-----------------------------------------------------------------------------
1156 // TestSameSubsDiffRan
1157 // Same subscription to different RANs
1160 // +-------+ +---------+ +---------+
1161 // | xapp | | submgr | | e2term |
1162 // +-------+ +---------+ +---------+
1167 // |------------->| |
1170 // | |------------->|
1172 // | | SubResp(r1) |
1173 // | |<-------------|
1175 // | SubResp(r1) | |
1176 // |<-------------| |
1179 // |------------->| |
1182 // | |------------->|
1184 // | | SubResp(r2) |
1185 // | |<-------------|
1187 // | SubResp(r2) | |
1188 // |<-------------| |
1190 // | [SUBS r1 DELETE] |
1192 // | [SUBS r2 DELETE] |
1195 //-----------------------------------------------------------------------------
1196 func TestSameSubsDiffRan(t *testing.T) {
1197 CaseBegin("TestSameSubsDiffRan")
1200 cretrans1 := xappConn1.NewRmrTransactionId("", "RAN_NAME_1")
1201 xappConn1.SendSubsReq(t, nil, cretrans1)
1202 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
1203 e2termConn1.SendSubsResp(t, crereq1, cremsg1)
1204 e2SubsId1 := xappConn1.RecvSubsResp(t, cretrans1)
1207 cretrans2 := xappConn1.NewRmrTransactionId("", "RAN_NAME_2")
1208 xappConn1.SendSubsReq(t, nil, cretrans2)
1209 crereq2, cremsg2 := e2termConn1.RecvSubsReq(t)
1210 e2termConn1.SendSubsResp(t, crereq2, cremsg2)
1211 e2SubsId2 := xappConn1.RecvSubsResp(t, cretrans2)
1214 deltrans1 := xappConn1.NewRmrTransactionId("", "RAN_NAME_1")
1215 xappConn1.SendSubsDelReq(t, deltrans1, e2SubsId1)
1216 delreq1, delmsg1 := e2termConn1.RecvSubsDelReq(t)
1217 e2termConn1.SendSubsDelResp(t, delreq1, delmsg1)
1218 xappConn1.RecvSubsDelResp(t, deltrans1)
1219 //Wait that subs is cleaned
1220 mainCtrl.wait_subs_clean(t, e2SubsId1, 10)
1223 deltrans2 := xappConn1.NewRmrTransactionId("", "RAN_NAME_2")
1224 xappConn1.SendSubsDelReq(t, deltrans2, e2SubsId2)
1225 delreq2, delmsg2 := e2termConn1.RecvSubsDelReq(t)
1226 e2termConn1.SendSubsDelResp(t, delreq2, delmsg2)
1227 xappConn1.RecvSubsDelResp(t, deltrans2)
1228 //Wait that subs is cleaned
1229 mainCtrl.wait_subs_clean(t, e2SubsId2, 10)
1231 xappConn1.TestMsgChanEmpty(t)
1232 xappConn2.TestMsgChanEmpty(t)
1233 e2termConn1.TestMsgChanEmpty(t)
1234 mainCtrl.wait_registry_empty(t, 10)
1237 //-----------------------------------------------------------------------------
1238 // TestSubReqRetryInSubmgr
1241 // +-------+ +---------+ +---------+
1242 // | xapp | | submgr | | e2term |
1243 // +-------+ +---------+ +---------+
1246 // |------------->| |
1249 // | |------------->|
1253 // | |------------->|
1256 // | |<-------------|
1259 // |<-------------| |
1261 // | [SUBS DELETE] |
1264 //-----------------------------------------------------------------------------
1266 func TestSubReqRetryInSubmgr(t *testing.T) {
1267 CaseBegin("TestSubReqRetryInSubmgr start")
1269 // Init counter check
1270 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
1271 Counter{cSubReqFromXapp, 1},
1272 Counter{cSubReqToE2, 1},
1273 Counter{cSubReqTimerExpiry, 1},
1274 Counter{cSubReReqToE2, 1},
1275 Counter{cSubRespFromE2, 1},
1276 Counter{cSubRespToXapp, 1},
1277 Counter{cSubDelReqFromXapp, 1},
1278 Counter{cSubDelReqToE2, 1},
1279 Counter{cSubDelRespFromE2, 1},
1280 Counter{cSubDelRespToXapp, 1},
1283 // Xapp: Send SubsReq
1284 cretrans := xappConn1.SendSubsReq(t, nil, nil)
1286 // E2t: Receive 1st SubsReq
1287 e2termConn1.RecvSubsReq(t)
1289 // E2t: Receive 2nd SubsReq and send SubsResp
1290 crereq, cremsg := e2termConn1.RecvSubsReq(t)
1291 e2termConn1.SendSubsResp(t, crereq, cremsg)
1293 // Xapp: Receive SubsResp
1294 e2SubsId := xappConn1.RecvSubsResp(t, cretrans)
1296 deltrans := xappConn1.SendSubsDelReq(t, nil, e2SubsId)
1297 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
1298 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
1299 xappConn1.RecvSubsDelResp(t, deltrans)
1301 // Wait that subs is cleaned
1302 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
1304 xappConn1.TestMsgChanEmpty(t)
1305 xappConn2.TestMsgChanEmpty(t)
1306 e2termConn1.TestMsgChanEmpty(t)
1307 mainCtrl.wait_registry_empty(t, 10)
1309 mainCtrl.VerifyCounterValues(t)
1312 //-----------------------------------------------------------------------------
1313 // TestSubReqTwoRetriesNoRespSubDelRespInSubmgr
1316 // +-------+ +---------+ +---------+
1317 // | xapp | | submgr | | e2term |
1318 // +-------+ +---------+ +---------+
1321 // |------------->| |
1324 // | |------------->|
1328 // | |------------->|
1331 // | |------------->|
1334 // | |<-------------|
1337 //-----------------------------------------------------------------------------
1338 func TestSubReqRetryNoRespSubDelRespInSubmgr(t *testing.T) {
1339 CaseBegin("TestSubReqTwoRetriesNoRespSubDelRespInSubmgr start")
1341 // Init counter check
1342 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
1343 Counter{cSubReqFromXapp, 1},
1344 Counter{cSubReqToE2, 1},
1345 Counter{cSubReReqToE2, 1},
1346 Counter{cSubReqTimerExpiry, 2},
1347 Counter{cSubDelReqToE2, 1},
1348 Counter{cSubDelRespFromE2, 1},
1351 // Xapp: Send SubsReq
1352 xappConn1.SendSubsReq(t, nil, nil)
1354 // E2t: Receive 1st SubsReq
1355 e2termConn1.RecvSubsReq(t)
1357 // E2t: Receive 2nd SubsReq
1358 e2termConn1.RecvSubsReq(t)
1360 // E2t: Send receive SubsDelReq and send SubsResp
1361 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
1362 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
1364 // Wait that subs is cleaned
1365 mainCtrl.wait_subs_clean(t, delreq.RequestId.InstanceId, 10)
1367 xappConn1.TestMsgChanEmpty(t)
1368 xappConn2.TestMsgChanEmpty(t)
1369 e2termConn1.TestMsgChanEmpty(t)
1370 mainCtrl.wait_registry_empty(t, 10)
1372 mainCtrl.VerifyCounterValues(t)
1375 //-----------------------------------------------------------------------------
1376 // TestSubReqTwoRetriesNoRespAtAllInSubmgr
1379 // +-------+ +---------+ +---------+
1380 // | xapp | | submgr | | e2term |
1381 // +-------+ +---------+ +---------+
1384 // |------------->| |
1387 // | |------------->|
1391 // | |------------->|
1394 // | |------------->|
1398 // | |------------->|
1402 //-----------------------------------------------------------------------------
1404 func TestSubReqTwoRetriesNoRespAtAllInSubmgr(t *testing.T) {
1405 CaseBegin("TestSubReqTwoRetriesNoRespAtAllInSubmgr start")
1407 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
1408 Counter{cSubReqFromXapp, 1},
1409 Counter{cSubReqToE2, 1},
1410 Counter{cSubReReqToE2, 1},
1411 Counter{cSubReqTimerExpiry, 2},
1412 Counter{cSubDelReqToE2, 1},
1413 Counter{cSubDelReReqToE2, 1},
1414 Counter{cSubDelReqTimerExpiry, 2},
1417 // Xapp: Send SubsReq
1418 xappConn1.SendSubsReq(t, nil, nil)
1420 // E2t: Receive 1st SubsReq
1421 e2termConn1.RecvSubsReq(t)
1423 // E2t: Receive 2nd SubsReq
1424 e2termConn1.RecvSubsReq(t)
1426 // E2t: Receive 1st SubsDelReq
1427 e2termConn1.RecvSubsDelReq(t)
1429 // E2t: Receive 2nd SubsDelReq
1430 delreq, _ := e2termConn1.RecvSubsDelReq(t)
1432 // Wait that subs is cleaned
1433 mainCtrl.wait_subs_clean(t, delreq.RequestId.InstanceId, 15)
1435 xappConn1.TestMsgChanEmpty(t)
1436 xappConn2.TestMsgChanEmpty(t)
1437 e2termConn1.TestMsgChanEmpty(t)
1438 mainCtrl.wait_registry_empty(t, 10)
1440 mainCtrl.VerifyCounterValues(t)
1443 //-----------------------------------------------------------------------------
1444 // TestSubReqSubFailRespInSubmgr
1447 // +-------+ +---------+ +---------+
1448 // | xapp | | submgr | | e2term |
1449 // +-------+ +---------+ +---------+
1452 // |------------->| |
1455 // | |------------->|
1458 // | |<-------------|
1461 // |<-------------| |
1464 //-----------------------------------------------------------------------------
1466 func TestSubReqSubFailRespInSubmgr(t *testing.T) {
1467 CaseBegin("TestSubReqSubFailRespInSubmgr start")
1469 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
1470 Counter{cSubReqFromXapp, 1},
1471 Counter{cSubReqToE2, 1},
1472 Counter{cSubFailFromE2, 1},
1473 Counter{cSubFailToXapp, 1},
1476 // Xapp: Send SubsReq
1477 cretrans := xappConn1.SendSubsReq(t, nil, nil)
1479 // E2t: Receive SubsReq and send SubsFail (first)
1480 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
1481 fparams1 := &teststube2ap.E2StubSubsFailParams{}
1482 fparams1.Set(crereq1)
1483 e2termConn1.SendSubsFail(t, fparams1, cremsg1)
1485 // Xapp: Receive SubsFail
1486 e2SubsId := xappConn1.RecvSubsFail(t, cretrans)
1488 // Wait that subs is cleaned
1489 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
1491 xappConn1.TestMsgChanEmpty(t)
1492 xappConn2.TestMsgChanEmpty(t)
1493 e2termConn1.TestMsgChanEmpty(t)
1494 mainCtrl.wait_registry_empty(t, 10)
1496 mainCtrl.VerifyCounterValues(t)
1499 //-----------------------------------------------------------------------------
1500 // TestSubDelReqRetryInSubmgr
1503 // +-------+ +---------+ +---------+
1504 // | xapp | | submgr | | e2term |
1505 // +-------+ +---------+ +---------+
1507 // | [SUBS CREATE] |
1511 // |------------->| |
1514 // | |------------->|
1517 // | |------------->|
1520 // | |<-------------|
1523 // |<-------------| |
1525 //-----------------------------------------------------------------------------
1527 func TestSubDelReqRetryInSubmgr(t *testing.T) {
1529 CaseBegin("TestSubDelReqRetryInSubmgr start")
1532 cretrans := xappConn1.SendSubsReq(t, nil, nil)
1533 crereq, cremsg := e2termConn1.RecvSubsReq(t)
1534 e2termConn1.SendSubsResp(t, crereq, cremsg)
1535 e2SubsId := xappConn1.RecvSubsResp(t, cretrans)
1538 // Xapp: Send SubsDelReq
1539 deltrans := xappConn1.SendSubsDelReq(t, nil, e2SubsId)
1541 // E2t: Receive 1st SubsDelReq
1542 e2termConn1.RecvSubsDelReq(t)
1544 // E2t: Receive 2nd SubsDelReq and send SubsDelResp
1545 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
1546 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
1548 // Xapp: Receive SubsDelResp
1549 xappConn1.RecvSubsDelResp(t, deltrans)
1551 // Wait that subs is cleaned
1552 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
1554 xappConn1.TestMsgChanEmpty(t)
1555 xappConn2.TestMsgChanEmpty(t)
1556 e2termConn1.TestMsgChanEmpty(t)
1557 mainCtrl.wait_registry_empty(t, 10)
1560 //-----------------------------------------------------------------------------
1561 // TestSubDelReqTwoRetriesNoRespInSubmgr
1564 // +-------+ +---------+ +---------+
1565 // | xapp | | submgr | | e2term |
1566 // +-------+ +---------+ +---------+
1568 // | [SUBS CREATE] |
1572 // |------------->| |
1575 // | |------------->|
1578 // | |------------->|
1582 // |<-------------| |
1584 //-----------------------------------------------------------------------------
1586 func TestSubDelReqTwoRetriesNoRespInSubmgr(t *testing.T) {
1588 CaseBegin("TestSubDelReTwoRetriesNoRespInSubmgr start")
1591 cretrans := xappConn1.SendSubsReq(t, nil, nil)
1592 crereq, cremsg := e2termConn1.RecvSubsReq(t)
1593 e2termConn1.SendSubsResp(t, crereq, cremsg)
1594 e2SubsId := xappConn1.RecvSubsResp(t, cretrans)
1597 // Xapp: Send SubsDelReq
1598 deltrans := xappConn1.SendSubsDelReq(t, nil, e2SubsId)
1600 // E2t: Receive 1st SubsDelReq
1601 e2termConn1.RecvSubsDelReq(t)
1603 // E2t: Receive 2nd SubsDelReq
1604 e2termConn1.RecvSubsDelReq(t)
1606 // Xapp: Receive SubsDelResp
1607 xappConn1.RecvSubsDelResp(t, deltrans)
1609 // Wait that subs is cleaned
1610 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
1612 xappConn1.TestMsgChanEmpty(t)
1613 xappConn2.TestMsgChanEmpty(t)
1614 e2termConn1.TestMsgChanEmpty(t)
1615 mainCtrl.wait_registry_empty(t, 10)
1618 //-----------------------------------------------------------------------------
1619 // TestSubDelReqSubDelFailRespInSubmgr
1622 // +-------+ +---------+ +---------+
1623 // | xapp | | submgr | | e2term |
1624 // +-------+ +---------+ +---------+
1626 // | [SUBS CREATE] |
1630 // |------------->| |
1633 // | |------------->|
1636 // | |<-------------|
1639 // |<-------------| |
1642 //-----------------------------------------------------------------------------
1644 func TestSubDelReqSubDelFailRespInSubmgr(t *testing.T) {
1645 CaseBegin("TestSubReqSubDelFailRespInSubmgr start")
1647 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
1648 Counter{cSubReqFromXapp, 1},
1649 Counter{cSubReqToE2, 1},
1650 Counter{cSubRespFromE2, 1},
1651 Counter{cSubRespToXapp, 1},
1652 Counter{cSubDelReqFromXapp, 1},
1653 Counter{cSubDelReqToE2, 1},
1654 Counter{cSubDelFailFromE2, 1},
1655 Counter{cSubDelRespToXapp, 1},
1659 cretrans := xappConn1.SendSubsReq(t, nil, nil)
1660 crereq, cremsg := e2termConn1.RecvSubsReq(t)
1661 e2termConn1.SendSubsResp(t, crereq, cremsg)
1662 e2SubsId := xappConn1.RecvSubsResp(t, cretrans)
1664 // Xapp: Send SubsDelReq
1665 deltrans := xappConn1.SendSubsDelReq(t, nil, e2SubsId)
1667 // E2t: Send receive SubsDelReq and send SubsDelFail
1668 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
1669 e2termConn1.SendSubsDelFail(t, delreq, delmsg)
1671 // Xapp: Receive SubsDelResp
1672 xappConn1.RecvSubsDelResp(t, deltrans)
1674 // Wait that subs is cleaned
1675 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
1677 xappConn1.TestMsgChanEmpty(t)
1678 xappConn2.TestMsgChanEmpty(t)
1679 e2termConn1.TestMsgChanEmpty(t)
1680 mainCtrl.wait_registry_empty(t, 10)
1682 mainCtrl.VerifyCounterValues(t)
1685 //-----------------------------------------------------------------------------
1686 // TestSubReqAndSubDelOkSameAction
1689 // +-------+ +-------+ +---------+ +---------+
1690 // | xapp2 | | xapp1 | | submgr | | e2term |
1691 // +-------+ +-------+ +---------+ +---------+
1696 // | |------------->| |
1699 // | | |------------->|
1701 // | | |<-------------|
1703 // | |<-------------| |
1706 // |--------------------------->| |
1709 // |<---------------------------| |
1711 // | | SubDelReq 1 | |
1712 // | |------------->| |
1714 // | | SubDelResp 1 | |
1715 // | |<-------------| |
1717 // | SubDelReq 2 | |
1718 // |--------------------------->| |
1720 // | | | SubDelReq 2 |
1721 // | | |------------->|
1723 // | | | SubDelReq 2 |
1724 // | | |------------->|
1726 // | SubDelResp 2 | |
1727 // |<---------------------------| |
1729 //-----------------------------------------------------------------------------
1730 func TestSubReqAndSubDelOkSameAction(t *testing.T) {
1731 CaseBegin("TestSubReqAndSubDelOkSameAction")
1733 // Init counter check
1734 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
1735 Counter{cSubReqFromXapp, 2},
1736 Counter{cSubReqToE2, 1},
1737 Counter{cSubRespFromE2, 1},
1738 Counter{cSubRespToXapp, 2},
1739 Counter{cMergedSubscriptions, 1},
1740 Counter{cUnmergedSubscriptions, 1},
1741 Counter{cSubDelReqFromXapp, 2},
1742 Counter{cSubDelReqToE2, 1},
1743 Counter{cSubDelRespFromE2, 1},
1744 Counter{cSubDelRespToXapp, 2},
1748 rparams1 := &teststube2ap.E2StubSubsReqParams{}
1750 cretrans1 := xappConn1.SendSubsReq(t, rparams1, nil)
1751 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
1752 e2termConn1.SendSubsResp(t, crereq1, cremsg1)
1753 e2SubsId1 := xappConn1.RecvSubsResp(t, cretrans1)
1756 rparams2 := &teststube2ap.E2StubSubsReqParams{}
1758 cretrans2 := xappConn2.SendSubsReq(t, rparams2, nil)
1759 e2SubsId2 := xappConn2.RecvSubsResp(t, cretrans2)
1761 resp, _ := xapp.Subscription.QuerySubscriptions()
1762 assert.Equal(t, resp[0].SubscriptionID, int64(e2SubsId1))
1763 assert.Equal(t, resp[0].Meid, "RAN_NAME_1")
1764 assert.Equal(t, resp[0].ClientEndpoint, []string{"localhost:13560", "localhost:13660"})
1767 deltrans1 := xappConn1.SendSubsDelReq(t, nil, e2SubsId1)
1768 xappConn1.RecvSubsDelResp(t, deltrans1)
1771 deltrans2 := xappConn2.SendSubsDelReq(t, nil, e2SubsId2)
1772 delreq2, delmsg2 := e2termConn1.RecvSubsDelReq(t)
1773 e2termConn1.SendSubsDelResp(t, delreq2, delmsg2)
1774 xappConn2.RecvSubsDelResp(t, deltrans2)
1775 //Wait that subs is cleaned
1776 mainCtrl.wait_subs_clean(t, e2SubsId2, 10)
1778 xappConn1.TestMsgChanEmpty(t)
1779 xappConn2.TestMsgChanEmpty(t)
1780 e2termConn1.TestMsgChanEmpty(t)
1781 mainCtrl.wait_registry_empty(t, 10)
1783 mainCtrl.VerifyCounterValues(t)
1786 //-----------------------------------------------------------------------------
1787 // TestSubReqAndSubDelOkSameActionParallel
1790 // +-------+ +-------+ +---------+ +---------+
1791 // | xapp2 | | xapp1 | | submgr | | e2term |
1792 // +-------+ +-------+ +---------+ +---------+
1797 // | |------------->| |
1800 // | | |------------->|
1802 // |--------------------------->| |
1804 // | | |<-------------|
1806 // | |<-------------| |
1809 // |<---------------------------| |
1811 // | | SubDelReq 1 | |
1812 // | |------------->| |
1814 // | | SubDelResp 1 | |
1815 // | |<-------------| |
1817 // | SubDelReq 2 | |
1818 // |--------------------------->| |
1820 // | | | SubDelReq 2 |
1821 // | | |------------->|
1823 // | | | SubDelReq 2 |
1824 // | | |------------->|
1826 // | SubDelResp 2 | |
1827 // |<---------------------------| |
1829 //-----------------------------------------------------------------------------
1830 func TestSubReqAndSubDelOkSameActionParallel(t *testing.T) {
1831 CaseBegin("TestSubReqAndSubDelOkSameActionParallel")
1834 rparams1 := &teststube2ap.E2StubSubsReqParams{}
1836 cretrans1 := xappConn1.SendSubsReq(t, rparams1, nil)
1837 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
1840 rparams2 := &teststube2ap.E2StubSubsReqParams{}
1842 cretrans2 := xappConn2.SendSubsReq(t, rparams2, nil)
1845 e2termConn1.SendSubsResp(t, crereq1, cremsg1)
1846 e2SubsId1 := xappConn1.RecvSubsResp(t, cretrans1)
1849 e2SubsId2 := xappConn2.RecvSubsResp(t, cretrans2)
1852 deltrans1 := xappConn1.SendSubsDelReq(t, nil, e2SubsId1)
1853 xappConn1.RecvSubsDelResp(t, deltrans1)
1856 deltrans2 := xappConn2.SendSubsDelReq(t, nil, e2SubsId2)
1857 delreq2, delmsg2 := e2termConn1.RecvSubsDelReq(t)
1858 e2termConn1.SendSubsDelResp(t, delreq2, delmsg2)
1859 xappConn2.RecvSubsDelResp(t, deltrans2)
1861 //Wait that subs is cleaned
1862 mainCtrl.wait_subs_clean(t, e2SubsId2, 10)
1864 xappConn1.TestMsgChanEmpty(t)
1865 xappConn2.TestMsgChanEmpty(t)
1866 e2termConn1.TestMsgChanEmpty(t)
1867 mainCtrl.wait_registry_empty(t, 10)
1870 //-----------------------------------------------------------------------------
1871 // TestSubReqAndSubDelNokSameActionParallel
1874 // +-------+ +-------+ +---------+ +---------+
1875 // | xapp2 | | xapp1 | | submgr | | e2term |
1876 // +-------+ +-------+ +---------+ +---------+
1881 // | |------------->| |
1884 // | | |------------->|
1886 // |--------------------------->| |
1888 // | | |<-------------|
1891 // | |<-------------| |
1894 // |<---------------------------| |
1896 //-----------------------------------------------------------------------------
1897 func TestSubReqAndSubDelNokSameActionParallel(t *testing.T) {
1898 CaseBegin("TestSubReqAndSubDelNokSameActionParallel")
1901 rparams1 := &teststube2ap.E2StubSubsReqParams{}
1903 cretrans1 := xappConn1.SendSubsReq(t, rparams1, nil)
1905 // E2t: Receive SubsReq (first)
1906 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
1909 rparams2 := &teststube2ap.E2StubSubsReqParams{}
1911 subepcnt2 := mainCtrl.get_subs_entrypoint_cnt(t, crereq1.RequestId.InstanceId)
1912 cretrans2 := xappConn2.SendSubsReq(t, rparams2, nil)
1913 mainCtrl.wait_subs_entrypoint_cnt_change(t, crereq1.RequestId.InstanceId, subepcnt2, 10)
1915 // E2t: send SubsFail (first)
1916 fparams1 := &teststube2ap.E2StubSubsFailParams{}
1917 fparams1.Set(crereq1)
1918 e2termConn1.SendSubsFail(t, fparams1, cremsg1)
1921 e2SubsId1 := xappConn1.RecvSubsFail(t, cretrans1)
1923 xappConn2.RecvSubsFail(t, cretrans2)
1925 //Wait that subs is cleaned
1926 mainCtrl.wait_subs_clean(t, e2SubsId1, 15)
1928 xappConn1.TestMsgChanEmpty(t)
1929 xappConn2.TestMsgChanEmpty(t)
1930 e2termConn1.TestMsgChanEmpty(t)
1931 mainCtrl.wait_registry_empty(t, 10)
1934 //-----------------------------------------------------------------------------
1935 // TestSubReqAndSubDelNoAnswerSameActionParallel
1938 // +-------+ +-------+ +---------+ +---------+
1939 // | xapp2 | | xapp1 | | submgr | | e2term |
1940 // +-------+ +-------+ +---------+ +---------+
1945 // | |------------->| |
1948 // | | |------------->|
1950 // |--------------------------->| |
1953 // | | |------------->|
1956 // | | | SubDelReq |
1957 // | | |------------->|
1959 // | | | SubDelResp |
1960 // | | |<-------------|
1962 //-----------------------------------------------------------------------------
1963 func TestSubReqAndSubDelNoAnswerSameActionParallel(t *testing.T) {
1964 CaseBegin("TestSubReqAndSubDelNoAnswerSameActionParallel")
1967 rparams1 := &teststube2ap.E2StubSubsReqParams{}
1969 xappConn1.SendSubsReq(t, rparams1, nil)
1971 crereq1, _ := e2termConn1.RecvSubsReq(t)
1974 rparams2 := &teststube2ap.E2StubSubsReqParams{}
1976 subepcnt2 := mainCtrl.get_subs_entrypoint_cnt(t, crereq1.RequestId.InstanceId)
1977 xappConn2.SendSubsReq(t, rparams2, nil)
1978 mainCtrl.wait_subs_entrypoint_cnt_change(t, crereq1.RequestId.InstanceId, subepcnt2, 10)
1980 //Req1 (retransmitted)
1981 e2termConn1.RecvSubsReq(t)
1983 delreq1, delmsg1 := e2termConn1.RecvSubsDelReq(t)
1984 e2termConn1.SendSubsDelResp(t, delreq1, delmsg1)
1986 //Wait that subs is cleaned
1987 mainCtrl.wait_subs_clean(t, delreq1.RequestId.InstanceId, 10)
1989 xappConn1.TestMsgChanEmpty(t)
1990 xappConn2.TestMsgChanEmpty(t)
1991 e2termConn1.TestMsgChanEmpty(t)
1992 mainCtrl.wait_registry_empty(t, 15)
1995 //----------------------------- Policy cases ---------------------------------
1996 //-----------------------------------------------------------------------------
1997 // TestSubReqPolicyAndSubDelOk
2000 // +-------+ +---------+ +---------+
2001 // | xapp | | submgr | | e2term |
2002 // +-------+ +---------+ +---------+
2005 // |------------->| |
2008 // | |------------->|
2011 // | |<-------------|
2014 // |<-------------| |
2018 // |------------->| |
2021 // | |------------->|
2024 // | |<-------------|
2027 // |<-------------| |
2029 //-----------------------------------------------------------------------------
2030 func TestSubReqPolicyAndSubDelOk(t *testing.T) {
2031 CaseBegin("TestSubReqAndSubDelOk")
2033 rparams1 := &teststube2ap.E2StubSubsReqParams{}
2035 rparams1.Req.ActionSetups[0].ActionType = e2ap.E2AP_ActionTypePolicy
2036 cretrans := xappConn1.SendSubsReq(t, rparams1, nil)
2038 crereq, cremsg := e2termConn1.RecvSubsReq(t)
2039 e2termConn1.SendSubsResp(t, crereq, cremsg)
2040 e2SubsId := xappConn1.RecvSubsResp(t, cretrans)
2041 deltrans := xappConn1.SendSubsDelReq(t, nil, e2SubsId)
2042 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
2044 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
2045 xappConn1.RecvSubsDelResp(t, deltrans)
2047 //Wait that subs is cleaned
2048 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
2050 xappConn1.TestMsgChanEmpty(t)
2051 xappConn2.TestMsgChanEmpty(t)
2052 e2termConn1.TestMsgChanEmpty(t)
2053 mainCtrl.wait_registry_empty(t, 10)
2056 //-----------------------------------------------------------------------------
2057 // TestSubReqPolicyChangeAndSubDelOk
2060 // +-------+ +---------+ +---------+
2061 // | xapp | | submgr | | e2term |
2062 // +-------+ +---------+ +---------+
2065 // |------------->| |
2068 // | |------------->|
2071 // | |<-------------|
2074 // |<-------------| |
2077 // |------------->| |
2080 // | |------------->|
2083 // | |<-------------|
2086 // |<-------------| |
2089 // |------------->| |
2092 // | |------------->|
2095 // | |<-------------|
2098 // |<-------------| |
2100 //-----------------------------------------------------------------------------
2102 func TestSubReqPolicyChangeAndSubDelOk(t *testing.T) {
2103 CaseBegin("TestSubReqAndSubDelOk")
2105 rparams1 := &teststube2ap.E2StubSubsReqParams{}
2107 rparams1.Req.ActionSetups[0].ActionType = e2ap.E2AP_ActionTypePolicy
2108 cretrans := xappConn1.SendSubsReq(t, rparams1, nil)
2110 crereq, cremsg := e2termConn1.RecvSubsReq(t)
2111 e2termConn1.SendSubsResp(t, crereq, cremsg)
2112 e2SubsId := xappConn1.RecvSubsResp(t, cretrans)
2115 rparams1.Req.RequestId.InstanceId = e2SubsId
2116 rparams1.Req.ActionSetups[0].SubsequentAction.TimetoWait = e2ap.E2AP_TimeToWaitW200ms
2117 xappConn1.SendSubsReq(t, rparams1, cretrans)
2119 crereq, cremsg = e2termConn1.RecvSubsReq(t)
2120 e2termConn1.SendSubsResp(t, crereq, cremsg)
2121 e2SubsId = xappConn1.RecvSubsResp(t, cretrans)
2122 deltrans := xappConn1.SendSubsDelReq(t, nil, e2SubsId)
2123 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
2125 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
2126 xappConn1.RecvSubsDelResp(t, deltrans)
2128 //Wait that subs is cleaned
2129 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
2131 xappConn1.TestMsgChanEmpty(t)
2132 xappConn2.TestMsgChanEmpty(t)
2133 e2termConn1.TestMsgChanEmpty(t)
2134 mainCtrl.wait_registry_empty(t, 10)
2137 //-----------------------------------------------------------------------------
2138 // TestSubReqAndSubDelOkTwoE2termParallel
2141 // +-------+ +---------+ +---------+ +---------+
2142 // | xapp | | submgr | | e2term1 | | e2term2 |
2143 // +-------+ +---------+ +---------+ +---------+
2148 // |------------->| | |
2151 // | |------------->| |
2154 // |------------->| | |
2157 // | |---------------------------->|
2160 // | |<-------------| |
2162 // |<-------------| | |
2164 // | |<----------------------------|
2166 // |<-------------| | |
2168 // | [SUBS 1 DELETE] | |
2170 // | [SUBS 2 DELETE] | |
2173 //-----------------------------------------------------------------------------
2174 func TestSubReqAndSubDelOkTwoE2termParallel(t *testing.T) {
2175 CaseBegin("TestSubReqAndSubDelOkTwoE2termParallel")
2178 cretrans1 := xappConn1.NewRmrTransactionId("", "RAN_NAME_1")
2179 xappConn1.SendSubsReq(t, nil, cretrans1)
2180 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
2182 cretrans2 := xappConn1.NewRmrTransactionId("", "RAN_NAME_11")
2183 xappConn1.SendSubsReq(t, nil, cretrans2)
2184 crereq2, cremsg2 := e2termConn2.RecvSubsReq(t)
2187 e2termConn1.SendSubsResp(t, crereq1, cremsg1)
2188 e2SubsId1 := xappConn1.RecvSubsResp(t, cretrans1)
2191 e2termConn2.SendSubsResp(t, crereq2, cremsg2)
2192 e2SubsId2 := xappConn1.RecvSubsResp(t, cretrans2)
2195 deltrans1 := xappConn1.SendSubsDelReq(t, nil, e2SubsId1)
2196 delreq1, delmsg1 := e2termConn1.RecvSubsDelReq(t)
2197 e2termConn1.SendSubsDelResp(t, delreq1, delmsg1)
2198 xappConn1.RecvSubsDelResp(t, deltrans1)
2199 //Wait that subs is cleaned
2200 mainCtrl.wait_subs_clean(t, e2SubsId1, 10)
2203 deltrans2 := xappConn1.SendSubsDelReq(t, nil, e2SubsId2)
2204 delreq2, delmsg2 := e2termConn2.RecvSubsDelReq(t)
2205 e2termConn2.SendSubsDelResp(t, delreq2, delmsg2)
2206 xappConn1.RecvSubsDelResp(t, deltrans2)
2207 //Wait that subs is cleaned
2208 mainCtrl.wait_subs_clean(t, e2SubsId2, 10)
2210 xappConn1.TestMsgChanEmpty(t)
2211 xappConn2.TestMsgChanEmpty(t)
2212 e2termConn1.TestMsgChanEmpty(t)
2213 e2termConn2.TestMsgChanEmpty(t)
2214 mainCtrl.wait_registry_empty(t, 10)
2217 //-----------------------------------------------------------------------------
2218 // TestSubReqInsertAndSubDelOk
2221 // +-------+ +---------+ +---------+
2222 // | xapp | | submgr | | e2term |
2223 // +-------+ +---------+ +---------+
2226 // |------------->| |
2229 // | |------------->|
2232 // | |<-------------|
2235 // |<-------------| |
2239 // |------------->| |
2242 // | |------------->|
2245 // | |<-------------|
2248 // |<-------------| |
2250 //-----------------------------------------------------------------------------
2251 func TestSubReqInsertAndSubDelOk(t *testing.T) {
2252 CaseBegin("TestInsertSubReqAndSubDelOk")
2254 rparams1 := &teststube2ap.E2StubSubsReqParams{}
2256 rparams1.Req.ActionSetups[0].ActionType = e2ap.E2AP_ActionTypeInsert
2257 cretrans := xappConn1.SendSubsReq(t, rparams1, nil)
2259 crereq, cremsg := e2termConn1.RecvSubsReq(t)
2260 e2termConn1.SendSubsResp(t, crereq, cremsg)
2261 e2SubsId := xappConn1.RecvSubsResp(t, cretrans)
2262 deltrans := xappConn1.SendSubsDelReq(t, nil, e2SubsId)
2263 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
2265 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
2266 xappConn1.RecvSubsDelResp(t, deltrans)
2268 //Wait that subs is cleaned
2269 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
2271 xappConn1.TestMsgChanEmpty(t)
2272 xappConn2.TestMsgChanEmpty(t)
2273 e2termConn1.TestMsgChanEmpty(t)
2274 mainCtrl.wait_registry_empty(t, 10)
2277 //-----------------------------------------------------------------------------
2278 // TestSubReqRetransmissionWithSameSubIdDiffXid
2280 // This case simulates case where xApp restarts and starts sending same
2281 // subscription requests which have already subscribed successfully
2284 // +-------+ +---------+ +---------+
2285 // | xapp | | submgr | | e2term |
2286 // +-------+ +---------+ +---------+
2289 // |------------->| |
2292 // | |------------->|
2295 // | |<-------------|
2298 // |<-------------| |
2300 // | xApp restart | |
2303 // | (retrans with same xApp generated subid but diff xid)
2304 // |------------->| |
2307 // |<-------------| |
2309 // | [SUBS DELETE] |
2312 //-----------------------------------------------------------------------------
2313 func TestSubReqRetransmissionWithSameSubIdDiffXid(t *testing.T) {
2314 CaseBegin("TestSubReqRetransmissionWithSameSubIdDiffXid")
2317 cretrans := xappConn1.SendSubsReq(t, nil, nil)
2318 crereq, cremsg := e2termConn1.RecvSubsReq(t)
2319 e2termConn1.SendSubsResp(t, crereq, cremsg)
2320 e2SubsId := xappConn1.RecvSubsResp(t, cretrans)
2322 // xApp restart here
2323 // --> artificial delay
2324 <-time.After(1 * time.Second)
2327 cretrans = xappConn1.SendSubsReq(t, nil, nil) //Retransmitted SubReq
2328 e2SubsId = xappConn1.RecvSubsResp(t, cretrans)
2331 deltrans := xappConn1.SendSubsDelReq(t, nil, e2SubsId)
2332 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
2333 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
2334 xappConn1.RecvSubsDelResp(t, deltrans)
2336 //Wait that subs is cleaned
2337 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
2339 xappConn1.TestMsgChanEmpty(t)
2340 xappConn2.TestMsgChanEmpty(t)
2341 e2termConn1.TestMsgChanEmpty(t)
2342 mainCtrl.wait_registry_empty(t, 10)
2345 //-----------------------------------------------------------------------------
2346 // TestSubReqNokAndSubDelOkWithRestartInMiddle
2349 // +-------+ +---------+ +---------+
2350 // | xapp | | submgr | | e2term |
2351 // +-------+ +---------+ +---------+
2354 // |------------->| |
2357 // | |------------->|
2362 // | Submgr restart |
2366 // | |------------->|
2369 // | |<-------------|
2372 //-----------------------------------------------------------------------------
2374 func TestSubReqNokAndSubDelOkWithRestartInMiddle(t *testing.T) {
2375 CaseBegin("TestSubReqNokAndSubDelOkWithRestartInMiddle")
2377 mainCtrl.SetResetTestFlag(t, true) // subs.DoNotWaitSubResp will be set TRUE for the subscription
2378 xappConn1.SendSubsReq(t, nil, nil)
2379 e2termConn1.RecvSubsReq(t)
2380 mainCtrl.SetResetTestFlag(t, false)
2382 resp, _ := xapp.Subscription.QuerySubscriptions()
2383 assert.Equal(t, resp[0].Meid, "RAN_NAME_1")
2384 assert.Equal(t, resp[0].ClientEndpoint, []string{"localhost:13560"})
2385 e2SubsId := uint32(resp[0].SubscriptionID)
2386 t.Logf("e2SubsId = %v", e2SubsId)
2388 mainCtrl.SimulateRestart(t)
2389 xapp.Logger.Debug("mainCtrl.SimulateRestart done")
2391 // Submgr send delete for uncompleted subscription
2392 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
2393 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
2395 // Wait that subs is cleaned
2396 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
2398 xappConn1.TestMsgChanEmpty(t)
2399 xappConn2.TestMsgChanEmpty(t)
2400 e2termConn1.TestMsgChanEmpty(t)
2401 mainCtrl.wait_registry_empty(t, 10)
2404 //-----------------------------------------------------------------------------
2405 // TestSubReqAndSubDelOkWithRestartInMiddle
2408 // +-------+ +---------+ +---------+
2409 // | xapp | | submgr | | e2term |
2410 // +-------+ +---------+ +---------+
2413 // |------------->| |
2416 // | |------------->|
2419 // | |<-------------|
2422 // |<-------------| |
2425 // | Submgr restart |
2428 // |------------->| |
2431 // | |------------->|
2434 // | |<-------------|
2437 // |<-------------| |
2439 //-----------------------------------------------------------------------------
2441 func TestSubReqAndSubDelOkWithRestartInMiddle(t *testing.T) {
2442 CaseBegin("TestSubReqAndSubDelOkWithRestartInMiddle")
2444 cretrans := xappConn1.SendSubsReq(t, nil, nil)
2445 crereq, cremsg := e2termConn1.RecvSubsReq(t)
2446 e2termConn1.SendSubsResp(t, crereq, cremsg)
2447 e2SubsId := xappConn1.RecvSubsResp(t, cretrans)
2449 // Check subscription
2450 resp, _ := xapp.Subscription.QuerySubscriptions()
2451 assert.Equal(t, resp[0].SubscriptionID, int64(e2SubsId))
2452 assert.Equal(t, resp[0].Meid, "RAN_NAME_1")
2453 assert.Equal(t, resp[0].ClientEndpoint, []string{"localhost:13560"})
2455 mainCtrl.SimulateRestart(t)
2456 xapp.Logger.Debug("mainCtrl.SimulateRestart done")
2458 // ReadE2Subscriptions() for testing is running in own go routine (go mainCtrl.c.ReadE2Subscriptions())
2459 // That needs to be completed before successful subscription query is possible
2460 <-time.After(time.Second * 1)
2462 // Check that subscription is restored correctly after restart
2463 resp, _ = xapp.Subscription.QuerySubscriptions()
2464 assert.Equal(t, resp[0].SubscriptionID, int64(e2SubsId))
2465 assert.Equal(t, resp[0].Meid, "RAN_NAME_1")
2466 assert.Equal(t, resp[0].ClientEndpoint, []string{"localhost:13560"})
2468 deltrans := xappConn1.SendSubsDelReq(t, nil, e2SubsId)
2469 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
2470 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
2471 xappConn1.RecvSubsDelResp(t, deltrans)
2473 //Wait that subs is cleaned
2474 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
2476 xappConn1.TestMsgChanEmpty(t)
2477 xappConn2.TestMsgChanEmpty(t)
2478 e2termConn1.TestMsgChanEmpty(t)
2479 mainCtrl.wait_registry_empty(t, 10)
2482 //-----------------------------------------------------------------------------
2483 // TestSubReqAndSubDelOkSameActionWithRestartsInMiddle
2486 // +-------+ +-------+ +---------+ +---------+
2487 // | xapp2 | | xapp1 | | submgr | | e2term |
2488 // +-------+ +-------+ +---------+ +---------+
2493 // | |------------->| |
2496 // | | |------------->|
2498 // | | |<-------------|
2500 // | |<-------------| |
2503 // | submgr restart |
2508 // |--------------------------->| |
2511 // |<---------------------------| |
2513 // | | SubDelReq 1 | |
2514 // | |------------->| |
2516 // | | SubDelResp 1 | |
2517 // | |<-------------| |
2521 // | submgr restart |
2524 // | SubDelReq 2 | |
2525 // |--------------------------->| |
2527 // | | | SubDelReq 2 |
2528 // | | |------------->|
2530 // | | | SubDelReq 2 |
2531 // | | |------------->|
2533 // | SubDelResp 2 | |
2534 // |<---------------------------| |
2536 //-----------------------------------------------------------------------------
2538 func TestSubReqAndSubDelOkSameActionWithRestartsInMiddle(t *testing.T) {
2539 CaseBegin("TestSubReqAndSubDelOkSameActionWithRestartsInMiddle")
2542 rparams1 := &teststube2ap.E2StubSubsReqParams{}
2544 cretrans1 := xappConn1.SendSubsReq(t, rparams1, nil)
2545 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
2546 e2termConn1.SendSubsResp(t, crereq1, cremsg1)
2547 e2SubsId1 := xappConn1.RecvSubsResp(t, cretrans1)
2550 rparams2 := &teststube2ap.E2StubSubsReqParams{}
2552 cretrans2 := xappConn2.SendSubsReq(t, rparams2, nil)
2553 e2SubsId2 := xappConn2.RecvSubsResp(t, cretrans2)
2555 // Check subscription
2556 resp, _ := xapp.Subscription.QuerySubscriptions()
2557 assert.Equal(t, resp[0].SubscriptionID, int64(e2SubsId1))
2558 assert.Equal(t, resp[0].Meid, "RAN_NAME_1")
2559 assert.Equal(t, resp[0].ClientEndpoint, []string{"localhost:13560", "localhost:13660"})
2561 mainCtrl.SimulateRestart(t)
2562 xapp.Logger.Debug("mainCtrl.SimulateRestart done")
2564 // ReadE2Subscriptions() for testing is running in own go routine (go mainCtrl.c.ReadE2Subscriptions())
2565 // That needs to be completed before successful subscription query is possible
2566 <-time.After(time.Second * 1)
2568 // Check that subscription is restored correctly after restart
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"})
2575 deltrans1 := xappConn1.SendSubsDelReq(t, nil, e2SubsId1)
2576 xapp.Logger.Debug("xappConn1.RecvSubsDelResp")
2577 xappConn1.RecvSubsDelResp(t, deltrans1)
2578 xapp.Logger.Debug("xappConn1.RecvSubsDelResp received")
2580 mainCtrl.SimulateRestart(t)
2581 xapp.Logger.Debug("mainCtrl.SimulateRestart done")
2583 // ReadE2Subscriptions() for testing is running in own go routine (go mainCtrl.c.ReadE2Subscriptions())
2584 // Submgr need be ready before successful subscription deletion is possible
2585 <-time.After(time.Second * 1)
2588 deltrans2 := xappConn2.SendSubsDelReq(t, nil, e2SubsId2)
2589 delreq2, delmsg2 := e2termConn1.RecvSubsDelReq(t)
2591 e2termConn1.SendSubsDelResp(t, delreq2, delmsg2)
2592 xappConn2.RecvSubsDelResp(t, deltrans2)
2594 //Wait that subs is cleaned
2595 mainCtrl.wait_subs_clean(t, e2SubsId2, 10)
2597 xappConn1.TestMsgChanEmpty(t)
2598 xappConn2.TestMsgChanEmpty(t)
2599 e2termConn1.TestMsgChanEmpty(t)
2600 mainCtrl.wait_registry_empty(t, 10)
2603 //*****************************************************************************
2604 // REST interface test cases
2605 //*****************************************************************************
2607 //-----------------------------------------------------------------------------
2608 // Test debug GET and POST requests
2611 // +-------+ +---------+
2612 // | user | | submgr |
2613 // +-------+ +---------+
2620 func TestGetSubscriptions(t *testing.T) {
2622 mainCtrl.sendGetRequest(t, "localhost:8088", "/ric/v1/subscriptions")
2625 func TestGetSymptomData(t *testing.T) {
2627 mainCtrl.sendGetRequest(t, "localhost:8080", "/ric/v1/symptomdata")
2630 func TestPostdeleteSubId(t *testing.T) {
2632 mainCtrl.sendPostRequest(t, "localhost:8080", "/ric/v1/test/deletesubid=1")
2635 func TestPostEmptyDb(t *testing.T) {
2637 mainCtrl.sendPostRequest(t, "localhost:8080", "/ric/v1/test/emptydb")
2640 func TestGetRestSubscriptions(t *testing.T) {
2642 mainCtrl.sendGetRequest(t, "localhost:8080", "/ric/v1/restsubscriptions")
2645 //-----------------------------------------------------------------------------
2646 // TestRESTSubReqAndRouteNok
2649 // +-------+ +---------+ +---------+
2650 // | xapp | | submgr | | rtmgr |
2651 // +-------+ +---------+ +---------+
2654 // |---------------->| |
2656 // | RESTSubResp | |
2657 // |<----------------| |
2658 // | | RouteCreate |
2659 // | |------------->|
2661 // | | RouteCreate |
2663 // | |(Bad request) |
2664 // | |<-------------|
2666 // |<----------------| |
2668 // | [SUBS INT DELETE] |
2670 // | RESTSubDelReq | |
2671 // |---------------->| |
2672 // | RESTSubDelResp | |
2673 // |<----------------| |
2675 //-----------------------------------------------------------------------------
2676 func TestRESTSubReqAndRouteNok(t *testing.T) {
2677 CaseBegin("TestRESTSubReqAndRouteNok")
2679 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
2680 Counter{cRestSubReqFromXapp, 1},
2681 Counter{cRestSubRespToXapp, 1},
2682 Counter{cRouteCreateFail, 1},
2683 Counter{cRestSubFailNotifToXapp, 1},
2684 Counter{cRestSubDelReqFromXapp, 1},
2685 Counter{cRestSubDelRespToXapp, 1},
2688 const subReqCount int = 1
2690 // Add delay for rtmgt HTTP handling so that HTTP response is received before notify on XAPP side
2691 waiter := rtmgrHttp.AllocNextSleep(50, false)
2692 newSubsId := mainCtrl.get_registry_next_subid(t)
2695 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
2696 restSubId := xappConn1.SendRESTSubsReq(t, params)
2697 xappConn1.ExpectRESTNotificationNok(t, restSubId, "failAll")
2698 waiter.WaitResult(t)
2700 e2SubsId := xappConn1.WaitRESTNotification(t, restSubId)
2701 xapp.Logger.Debug("TEST: REST notification received e2SubsId=%v", e2SubsId)
2704 xappConn1.SendRESTSubsDelReq(t, &restSubId)
2706 // Wait that subs is cleaned
2707 mainCtrl.wait_subs_clean(t, newSubsId, 10)
2708 waitSubsCleanup(t, e2SubsId, 10)
2709 mainCtrl.VerifyCounterValues(t)
2710 mainCtrl.VerifyAllClean(t)
2713 func TestRESTSubReqAndRouteUpdateNok(t *testing.T) {
2714 CaseBegin("TestSubReqAndRouteUpdateNok")
2716 //Init counter check
2717 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
2718 Counter{cRestSubReqFromXapp, 2},
2719 Counter{cRestSubRespToXapp, 2},
2720 Counter{cSubReqToE2, 1},
2721 Counter{cSubRespFromE2, 1},
2722 Counter{cRestSubNotifToXapp, 1},
2723 Counter{cRestSubFailNotifToXapp, 1},
2724 Counter{cRouteCreateUpdateFail, 1},
2725 Counter{cRestSubDelReqFromXapp, 2},
2726 Counter{cSubDelReqToE2, 1},
2727 Counter{cSubDelRespFromE2, 1},
2728 Counter{cRestSubDelRespToXapp, 2},
2731 var params *teststube2ap.RESTSubsReqParams = nil
2734 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
2736 queryXappSubscription(t, int64(e2SubsId), "RAN_NAME_1", []string{"localhost:13560"})
2738 // xapp2 ROUTE creation shall fail with 400 from rtmgr -> submgr
2739 waiter := rtmgrHttp.AllocNextEvent(false)
2740 newSubsId := mainCtrl.get_registry_next_subid(t)
2741 params = xappConn2.GetRESTSubsReqReportParams(subReqCount)
2742 params.SetMeid("RAN_NAME_1")
2743 restSubId2 := xappConn2.SendRESTSubsReq(t, params)
2744 xapp.Logger.Debug("Send REST subscriber request for second subscriber : %v", restSubId2)
2745 xappConn2.ExpectRESTNotificationNok(t, restSubId2, "allFail")
2746 waiter.WaitResult(t)
2747 xappConn2.WaitRESTNotification(t, restSubId2)
2749 queryXappSubscription(t, int64(e2SubsId), "RAN_NAME_1", []string{"localhost:13560"})
2751 deleteSubscription(t, xappConn1, e2termConn1, &restSubId)
2752 xappConn2.SendRESTSubsDelReq(t, &restSubId2)
2754 mainCtrl.wait_subs_clean(t, newSubsId, 10)
2755 //Wait that subs is cleaned
2756 waitSubsCleanup(t, e2SubsId, 10)
2758 mainCtrl.VerifyCounterValues(t)
2759 mainCtrl.VerifyAllClean(t)
2762 func TestRESTSubDelReqAndRouteDeleteNok(t *testing.T) {
2763 CaseBegin("TestRESTSubDelReqAndRouteDeleteNok")
2765 // Init counter check
2766 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
2767 Counter{cRestSubReqFromXapp, 1},
2768 Counter{cRestSubRespToXapp, 1},
2769 Counter{cSubReqToE2, 1},
2770 Counter{cSubRespFromE2, 1},
2771 Counter{cRestSubNotifToXapp, 1},
2772 Counter{cRestSubDelReqFromXapp, 1},
2773 Counter{cRouteDeleteFail, 1},
2774 Counter{cSubDelReqToE2, 1},
2775 Counter{cSubDelRespFromE2, 1},
2776 Counter{cRestSubDelRespToXapp, 1},
2779 var params *teststube2ap.RESTSubsReqParams = nil
2782 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
2784 queryXappSubscription(t, int64(e2SubsId), "RAN_NAME_1", []string{"localhost:13560"})
2786 waiter := rtmgrHttp.AllocNextEvent(false)
2787 xappConn1.SendRESTSubsDelReq(t, &restSubId)
2788 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
2789 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
2790 waiter.WaitResult(t)
2792 waitSubsCleanup(t, e2SubsId, 10)
2793 mainCtrl.VerifyCounterValues(t)
2794 mainCtrl.VerifyAllClean(t)
2797 func TestRESTSubMergeDelAndRouteUpdateNok(t *testing.T) {
2798 CaseBegin("TestRESTSubMergeDelAndRouteUpdateNok")
2800 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
2801 Counter{cRestSubReqFromXapp, 2},
2802 Counter{cMergedSubscriptions, 1},
2803 Counter{cRestSubRespToXapp, 2},
2804 Counter{cSubReqToE2, 1},
2805 Counter{cSubRespFromE2, 1},
2806 Counter{cRestSubNotifToXapp, 2},
2807 Counter{cRestSubDelReqFromXapp, 2},
2808 Counter{cRouteDeleteUpdateFail, 1},
2809 Counter{cSubDelReqToE2, 1},
2810 Counter{cSubDelRespFromE2, 1},
2811 Counter{cRestSubDelRespToXapp, 2},
2812 Counter{cUnmergedSubscriptions, 1},
2815 var params *teststube2ap.RESTSubsReqParams = nil
2818 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
2820 queryXappSubscription(t, int64(e2SubsId), "RAN_NAME_1", []string{"localhost:13560"})
2821 restSubId2, e2SubsId2 := createXapp2MergedSubscription(t, "RAN_NAME_1")
2823 queryXappSubscription(t, int64(e2SubsId), "RAN_NAME_1", []string{"localhost:13560", "localhost:13660"})
2825 //Del1, this shall fail on rtmgr side
2826 waiter := rtmgrHttp.AllocNextEvent(false)
2827 xappConn1.SendRESTSubsDelReq(t, &restSubId)
2828 waiter.WaitResult(t)
2830 queryXappSubscription(t, int64(e2SubsId), "RAN_NAME_1", []string{"localhost:13660"})
2833 deleteXapp2Subscription(t, &restSubId2)
2835 waitSubsCleanup(t, e2SubsId2, 10)
2836 mainCtrl.VerifyCounterValues(t)
2837 mainCtrl.VerifyAllClean(t)
2840 //-----------------------------------------------------------------------------
2841 // TestRESTSubReqRetransmission
2844 // +-------+ +---------+ +---------+
2845 // | xapp | | submgr | | e2term |
2846 // +-------+ +---------+ +---------+
2848 // | RESTSubReq1 | |
2849 // |---------------->| |
2851 // | RESTSubResp | |
2852 // |<----------------| |
2854 // | |------------->|
2856 // | RESTSubReq2 | |
2858 // |---------------->| |
2859 // | RESTSubResp(201)| |
2860 // |<----------------| |
2863 // | |<-------------|
2865 // |<----------------| |
2867 // | [SUBS DELETE] |
2870 //-----------------------------------------------------------------------------
2872 func TestRESTSubReqRetransmission(t *testing.T) {
2873 CaseBegin("TestRESTSubReqRetransmission")
2875 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
2876 Counter{cRestSubReqFromXapp, 2},
2877 Counter{cRestSubRespToXapp, 2},
2878 Counter{cSubReqToE2, 1},
2879 Counter{cSubRespFromE2, 1},
2880 Counter{cRestSubNotifToXapp, 1},
2881 Counter{cRestSubDelReqFromXapp, 1},
2882 Counter{cSubDelReqToE2, 1},
2883 Counter{cSubDelRespFromE2, 1},
2884 Counter{cRestSubDelRespToXapp, 1},
2886 // Retry/duplicate will get the same way as the first request.
2887 // Contianed duplicate messages from same xapp will not be merged. Here we use xappConn2 to simulate sending
2888 // second request from same xapp as doing it from xappConn1 would not work as notification would not be received
2891 const subReqCount int = 1
2893 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
2894 restSubId := xappConn1.SendRESTSubsReq(t, params)
2896 xappConn1.SendRESTSubsReq(t, params)
2897 <-time.After(time.Second * 1)
2899 xappConn1.WaitListedRestNotifications(t, []string{restSubId})
2901 // Depending one goroutine scheduling order, we cannot say for sure which xapp reaches e2term first. Thus
2902 // the order is not significant here.
2903 crereq, cremsg := e2termConn1.RecvSubsReq(t)
2904 e2termConn1.SendSubsResp(t, crereq, cremsg)
2906 e2SubsId := <-xappConn1.ListedRESTNotifications
2908 xapp.Logger.Debug("TEST: XAPP notification received e2SubsId=%v", e2SubsId)
2911 xappConn1.SendRESTSubsDelReq(t, &restSubId)
2912 delreq1, delmsg1 := e2termConn1.RecvSubsDelReq(t)
2913 e2termConn1.SendSubsDelResp(t, delreq1, delmsg1)
2915 mainCtrl.wait_multi_subs_clean(t, []uint32{e2SubsId.E2SubsId}, 10)
2917 mainCtrl.VerifyCounterValues(t)
2918 mainCtrl.VerifyAllClean(t)
2921 //-----------------------------------------------------------------------------
2923 // +-------+ +---------+ +---------+ +---------+
2924 // | xapp | | submgr | | e2term | | rtmgr |
2925 // +-------+ +---------+ +---------+ +---------+
2927 // | RESTSubReq | | |
2928 // |---------------->| | |
2929 // | RESTSubResp | | |
2930 // |<----------------| | |
2931 // | | RouteCreate | |
2932 // | |--------------------------->|
2933 // | | RouteResponse| |
2934 // | |<---------------------------| // The order of these events may vary
2936 // | |------------->| | // The order of these events may vary
2938 // | |<-------------| |
2939 // | RESTNotif1 | | |
2940 // |<----------------| | |
2941 // | RESTSubReq | | |
2942 // | [RETRANS1] | | |
2943 // |---------------->| | |
2944 // | RESTNotif1 | | |
2945 // |<----------------| | |
2946 // | RESTSubReq | | |
2947 // | [RETRANS2] | | |
2948 // |---------------->| | |
2949 // | RESTNotif1 | | |
2950 // |<----------------| | |
2951 // | RESTSubDelReq | | |
2952 // |---------------->| | |
2953 // | | SubDelReq | |
2954 // | |------------->| |
2955 // | RESTSubDelResp| | |
2956 // |<----------------| | |
2957 // | | SubDelResp | |
2958 // | |<-------------| |
2961 //-----------------------------------------------------------------------------
2963 func TestRESTSubReqRetransmissionV2(t *testing.T) {
2964 CaseBegin("TestRESTSubReqRetransmissionV2")
2966 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
2967 Counter{cRestSubReqFromXapp, 3},
2968 Counter{cDuplicateE2SubReq, 2},
2969 Counter{cRestSubRespToXapp, 3},
2970 Counter{cSubReqToE2, 1},
2971 Counter{cSubRespFromE2, 1},
2972 Counter{cRestSubNotifToXapp, 3},
2973 Counter{cRestSubDelReqFromXapp, 1},
2974 Counter{cSubDelReqToE2, 1},
2975 Counter{cSubDelRespFromE2, 1},
2976 Counter{cRestSubDelRespToXapp, 1},
2979 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
2981 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
2983 queryXappSubscription(t, int64(e2SubsId), "RAN_NAME_1", []string{"localhost:13560"})
2986 restSubId_resend := xappConn1.SendRESTSubsReq(t, params)
2988 assert.Equal(t, restSubId_resend, restSubId)
2990 <-time.After(100 * time.Millisecond)
2993 restSubId_resend2 := xappConn1.SendRESTSubsReq(t, params)
2995 assert.Equal(t, restSubId_resend2, restSubId)
2997 <-time.After(100 * time.Millisecond)
2999 deleteSubscription(t, xappConn1, e2termConn1, &restSubId)
3001 waitSubsCleanup(t, e2SubsId, 10)
3002 mainCtrl.VerifyCounterValues(t)
3003 mainCtrl.VerifyAllClean(t)
3006 //-----------------------------------------------------------------------------
3008 // +-------+ +---------+ +---------+ +---------+
3009 // | xapp | | submgr | | e2term | | rtmgr |
3010 // +-------+ +---------+ +---------+ +---------+
3012 // | RESTSubReq | | |
3013 // |---------------->| | |
3014 // | RESTSubResp | | |
3015 // |<----------------| | |
3016 // | | RouteCreate | |
3017 // | |--------------------------->|
3018 // | | RouteResponse| |
3019 // | |<---------------------------| // The order of these events may vary
3021 // | |------------->| | // The order of these events may vary
3023 // | |<-------------| |
3024 // | RESTNotif1 | | |
3025 // |<----------------| | |
3026 // | RESTSubReq | | |
3027 // | [RETRANS, with RESTsubsId] | |
3028 // |---------------->| | |
3029 // | RESTNotif1 | | |
3030 // |<----------------| | |
3031 // | RESTSubReq | | |
3032 // | [RETRANS, without RESTsubsId] | |
3033 // |---------------->| | |
3034 // | RESTNotif1 | | |
3035 // |<----------------| | |
3036 // | RESTSubDelReq | | |
3037 // |---------------->| | |
3038 // | | SubDelReq | |
3039 // | |------------->| |
3040 // | RESTSubDelResp| | |
3041 // |<----------------| | |
3042 // | | SubDelResp | |
3043 // | |<-------------| |
3046 //-----------------------------------------------------------------------------
3047 func TestRESTSubReqRetransmissionV3(t *testing.T) {
3048 CaseBegin("TestRESTSubReqRetransmissionV3")
3050 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
3051 Counter{cRestSubReqFromXapp, 3},
3052 Counter{cDuplicateE2SubReq, 2},
3053 Counter{cRestSubRespToXapp, 3},
3054 Counter{cSubReqToE2, 1},
3055 Counter{cSubRespFromE2, 1},
3056 Counter{cRestSubNotifToXapp, 3},
3057 Counter{cRestSubDelReqFromXapp, 1},
3058 Counter{cSubDelReqToE2, 1},
3059 Counter{cSubDelRespFromE2, 1},
3060 Counter{cRestSubDelRespToXapp, 1},
3063 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
3065 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
3067 queryXappSubscription(t, int64(e2SubsId), "RAN_NAME_1", []string{"localhost:13560"})
3069 <-time.After(100 * time.Millisecond)
3071 //1.st resend with subscription ID
3072 params.SetSubscriptionID(&restSubId)
3073 restSubId_resend := xappConn1.SendRESTSubsReq(t, params)
3075 assert.Equal(t, restSubId_resend, restSubId)
3077 <-time.After(100 * time.Millisecond)
3079 //2.nd resend without subscription ID (faking app restart)
3080 params = xappConn1.GetRESTSubsReqReportParams(subReqCount)
3081 restSubId_resend2 := xappConn1.SendRESTSubsReq(t, params)
3083 assert.Equal(t, restSubId_resend2, restSubId)
3085 <-time.After(100 * time.Millisecond)
3087 deleteSubscription(t, xappConn1, e2termConn1, &restSubId)
3089 waitSubsCleanup(t, e2SubsId, 10)
3090 mainCtrl.VerifyCounterValues(t)
3091 mainCtrl.VerifyAllClean(t)
3094 //-----------------------------------------------------------------------------
3096 // +-------+ +---------+ +---------+ +---------+
3097 // | xapp | | submgr | | e2term | | rtmgr |
3098 // +-------+ +---------+ +---------+ +---------+
3100 // | RESTSubReq | | |
3101 // |---------------->| | |
3102 // | RESTSubResp | | |
3103 // |<----------------| | |
3104 // | | RouteCreate | |
3105 // | |--------------------------->|
3106 // | | RouteResponse| |
3107 // | |<---------------------------|
3109 // | |------------->| |
3111 // | |<-------------| |
3112 // | RESTNotif1 | | |
3113 // |<----------------| | |
3114 // | RESTSubReq | | |
3115 // | [with RestSUbsId + one additional e2 subDetail]
3116 // |---------------->| | |
3117 // | RESTNotif1 | | |
3118 // | [for initial e2 subDetail] | |
3119 // |<----------------| | |
3120 // | | RouteCreate | |
3121 // | |--------------------------->|
3122 // | | RouteResponse| |
3123 // | |<---------------------------|
3125 // | |------------->| |
3127 // | |<-------------| |
3128 // | RESTNotif1 | | |
3129 // |<----------------| | |
3130 // | RESTSubReq | | |
3131 // | [with RESTsubsId initial request] |
3132 // |---------------->| | |
3133 // | RESTNotif1 | | |
3134 // |<----------------| | |
3135 // | RESTSubDelReq | | |
3136 // |---------------->| | |
3137 // | RESTSubDelResp| | |
3138 // |<----------------| | |
3139 // | | SubDelReq | |
3140 // | |------------->| |
3141 // | | SubDelResp | |
3142 // | |<-------------| |
3143 // | | SubDelReq | |
3144 // | |------------->| |
3145 // | | SubDelResp | |
3146 // | |<-------------| |
3149 //-----------------------------------------------------------------------------
3151 func TestRESTSubReqRetransmissionV4(t *testing.T) {
3152 CaseBegin("TestRESTSubReqRetransmissionV4")
3154 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
3155 Counter{cRestSubReqFromXapp, 3},
3156 Counter{cDuplicateE2SubReq, 2},
3157 Counter{cRestSubRespToXapp, 3},
3158 Counter{cSubReqToE2, 2},
3159 Counter{cSubRespFromE2, 2},
3160 Counter{cRestSubNotifToXapp, 4},
3161 Counter{cRestSubDelReqFromXapp, 1},
3162 Counter{cSubDelReqToE2, 2},
3163 Counter{cSubDelRespFromE2, 2},
3164 Counter{cRestSubDelRespToXapp, 1},
3167 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
3169 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
3171 <-time.After(100 * time.Millisecond)
3173 // Send modified requst, this time with e2 subscriptions.
3174 params2 := xappConn1.GetRESTSubsReqReportParams(subReqCount + 1)
3175 params2.SetSubscriptionID(&restSubId)
3177 xapp.Subscription.SetResponseCB(xappConn1.SubscriptionRespHandler)
3178 xappConn1.ExpectAnyNotification(t)
3179 // Resend the original request with an additional e2 subscription (detail), this time with restsubsid
3180 restSubId_resend := xappConn1.SendRESTSubsReq(t, params2)
3181 e2SubsId1 := xappConn1.WaitAnyRESTNotification(t)
3182 assert.Equal(t, e2SubsId, e2SubsId1)
3184 crereq2, cremsg2 := e2termConn1.RecvSubsReq(t)
3186 xappConn1.DecrementRequestCount()
3187 xappConn1.ExpectRESTNotification(t, restSubId_resend)
3188 e2termConn1.SendSubsResp(t, crereq2, cremsg2)
3189 e2SubsId2 := xappConn1.WaitRESTNotification(t, restSubId_resend)
3190 assert.NotEqual(t, e2SubsId2, 0)
3192 <-time.After(100 * time.Millisecond)
3194 xapp.Subscription.SetResponseCB(xappConn1.SubscriptionRespHandler)
3195 params = xappConn1.GetRESTSubsReqReportParams(subReqCount)
3196 params.SetSubscriptionID(&restSubId)
3197 xappConn1.ExpectAnyNotification(t)
3198 // Resend the original request again with only one e2 subscription (detail), this time with restsubsid
3199 restSubId_resend2 := xappConn1.SendRESTSubsReq(t, params)
3200 assert.Equal(t, restSubId_resend, restSubId_resend2)
3202 e2SubsId1 = xappConn1.WaitAnyRESTNotification(t)
3203 assert.Equal(t, e2SubsId, e2SubsId1)
3205 // Delete both e2 subscriptions
3206 xappConn1.SendRESTSubsDelReq(t, &restSubId)
3207 e2SubsIds := []uint32{e2SubsId, e2SubsId2}
3208 sendAndReceiveMultipleE2DelReqs(t, e2SubsIds, e2termConn1)
3210 waitSubsCleanup(t, e2SubsId, 10)
3211 mainCtrl.VerifyCounterValues(t)
3212 mainCtrl.VerifyAllClean(t)
3215 //-----------------------------------------------------------------------------
3217 // +-------+ +---------+ +---------+ +---------+
3218 // | xapp | | submgr | | e2term | | rtmgr |
3219 // +-------+ +---------+ +---------+ +---------+
3221 // | RESTSubReq | | |
3222 // |---------------->| | |
3223 // | RESTSubResp | | |
3224 // |<----------------| | |
3225 // | | RouteCreate | |
3226 // | |--------------------------->|
3227 // | | RouteResponse| |
3228 // | |<---------------------------|
3230 // | |------------->| |
3232 // | |<-------------| |
3233 // | RESTNotif1 | | |
3234 // |<----------------| | |
3235 // | RESTSubReq | | |
3236 // | [with RestSUbsId + one additional e2 subDetail]
3237 // |---------------->| | |
3238 // | RESTNotif1 | | |
3239 // | [for initial e2 subDetail] | |
3240 // |<----------------| | |
3241 // | | RouteCreate | |
3242 // | |--------------------------->|
3243 // | | RouteResponse| |
3244 // | |<---------------------------|
3246 // | |------------->| |
3248 // | |<-------------| |
3249 // | RESTNotif1 | | |
3250 // |<----------------| | |
3251 // | RESTSubReq | | |
3252 // | [without RESTsubsId initial request] |
3253 // |---------------->| | |
3254 // | RESTNotif1 | | |
3255 // |<----------------| | |
3256 // | RESTSubDelReq | | |
3257 // |---------------->| | |
3258 // | RESTSubDelResp| | |
3259 // |<----------------| | |
3260 // | | SubDelReq | |
3261 // | |------------->| |
3262 // | | SubDelResp | |
3263 // | |<-------------| |
3264 // | | SubDelReq | |
3265 // | |------------->| |
3266 // | | SubDelResp | |
3267 // | |<-------------| |
3270 //-----------------------------------------------------------------------------
3272 func TestRESTSubReqRetransmissionV5(t *testing.T) {
3273 CaseBegin("TestRESTSubReqRetransmissionV5")
3275 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
3276 Counter{cRestSubReqFromXapp, 3},
3277 Counter{cDuplicateE2SubReq, 2},
3278 Counter{cRestSubRespToXapp, 3},
3279 Counter{cSubReqToE2, 2},
3280 Counter{cSubRespFromE2, 2},
3281 Counter{cRestSubNotifToXapp, 4},
3282 Counter{cRestSubDelReqFromXapp, 1},
3283 Counter{cSubDelReqToE2, 2},
3284 Counter{cSubDelRespFromE2, 2},
3285 Counter{cRestSubDelRespToXapp, 1},
3288 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
3290 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
3292 <-time.After(100 * time.Millisecond)
3294 // Send modified request, this time with e2 subscriptions.
3295 params2 := xappConn1.GetRESTSubsReqReportParams(subReqCount + 1)
3296 params2.SetSubscriptionID(&restSubId)
3298 xapp.Subscription.SetResponseCB(xappConn1.SubscriptionRespHandler)
3299 xappConn1.ExpectAnyNotification(t)
3300 // Resend the original request with an additional e2 subscription (detail), this time with restsubsid
3301 restSubId_resend := xappConn1.SendRESTSubsReq(t, params2)
3303 e2SubsId1 := xappConn1.WaitAnyRESTNotification(t)
3304 assert.Equal(t, e2SubsId, e2SubsId1)
3305 // The first E2 subscription returns immediately, manually decrement expected request count for the remaining request handling
3306 xappConn1.DecrementRequestCount()
3308 crereq2, cremsg2 := e2termConn1.RecvSubsReq(t)
3310 xappConn1.ExpectRESTNotification(t, restSubId_resend)
3311 e2termConn1.SendSubsResp(t, crereq2, cremsg2)
3312 e2SubsId2 := xappConn1.WaitRESTNotification(t, restSubId_resend)
3313 assert.NotEqual(t, e2SubsId2, 0)
3315 <-time.After(100 * time.Millisecond)
3317 xapp.Subscription.SetResponseCB(xappConn1.SubscriptionRespHandler)
3318 params = xappConn1.GetRESTSubsReqReportParams(subReqCount)
3319 xappConn1.ExpectAnyNotification(t)
3320 // Resend the original request again with only one e2 subscription (detail), WITHOUT restsubsid
3321 // md5sum shall find the original request
3322 restSubId_resend2 := xappConn1.SendRESTSubsReq(t, params)
3323 assert.Equal(t, restSubId_resend, restSubId_resend2)
3325 e2SubsId1 = xappConn1.WaitAnyRESTNotification(t)
3326 assert.Equal(t, e2SubsId, e2SubsId1)
3328 // Delete both e2 subscriptions
3329 xappConn1.SendRESTSubsDelReq(t, &restSubId)
3330 e2SubsIds := []uint32{e2SubsId, e2SubsId2}
3331 sendAndReceiveMultipleE2DelReqs(t, e2SubsIds, e2termConn1)
3333 waitSubsCleanup(t, e2SubsId, 10)
3334 mainCtrl.VerifyCounterValues(t)
3335 mainCtrl.VerifyAllClean(t)
3338 //-----------------------------------------------------------------------------
3340 // +-------+ +---------+ +---------+ +---------+
3341 // | xapp | | submgr | | e2term | | rtmgr |
3342 // +-------+ +---------+ +---------+ +---------+
3344 // | RESTSubReq | | |
3345 // |---------------->| | |
3346 // | RESTSubResp | | |
3347 // |<----------------| | |
3348 // | | RouteCreate | |
3349 // | |--------------------------->|
3350 // | | RouteResponse| |
3351 // | |<---------------------------|
3353 // | |------------->| |
3355 // | |<-------------| |
3356 // | RESTNotif1 | | |
3357 // |<----------------| | |
3358 // | RESTSubReq | | |
3359 // | [with RestSUbsId + one additional e2 subDetail]
3360 // |---------------->| | |
3361 // | RESTNotif1 | | |
3362 // | [for initial e2 subDetail] | |
3363 // |<----------------| | |
3364 // | | RouteCreate | |
3365 // | |--------------------------->|
3366 // | | RouteResponse| |
3367 // | |<---------------------------|
3369 // | |------------->| |
3371 // | |<-------------| |
3372 // | RESTNotif1 | | |
3373 // |<----------------| | |
3374 // | RESTSubDelReq | | |
3375 // |---------------->| | |
3376 // | RESTSubDelResp| | |
3377 // |<----------------| | |
3378 // | | SubDelReq | |
3379 // | |------------->| |
3380 // | | SubDelResp | |
3381 // | |<-------------| |
3382 // | | SubDelReq | |
3383 // | |------------->| |
3384 // | | SubDelResp | |
3385 // | |<-------------| |
3386 // | RESTSubReq | | |
3387 // | [with RESTsubsId initial request] |
3388 // |---------------->| | |
3389 // | RESTSubResp | | |
3390 // |<----------------| | |
3391 // | | RouteCreate | |
3392 // | |--------------------------->|
3393 // | | RouteResponse| |
3394 // | |<---------------------------|
3396 // | |------------->| |
3398 // | |<-------------| |
3399 // | RESTNotif1 | | |
3400 // |<----------------| | |
3403 //-----------------------------------------------------------------------------
3404 func TestRESTSubReqRetransmissionV6(t *testing.T) {
3405 CaseBegin("TestRESTSubReqRetransmissionV6")
3407 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
3408 Counter{cRestSubReqFromXapp, 3},
3409 Counter{cDuplicateE2SubReq, 1},
3410 Counter{cRestSubRespToXapp, 3},
3411 Counter{cSubReqToE2, 3},
3412 Counter{cSubRespFromE2, 3},
3413 Counter{cRestSubNotifToXapp, 4},
3414 Counter{cRestSubDelReqFromXapp, 2},
3415 Counter{cSubDelReqToE2, 3},
3416 Counter{cSubDelRespFromE2, 3},
3417 Counter{cRestSubDelRespToXapp, 2},
3420 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
3422 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
3424 <-time.After(100 * time.Millisecond)
3426 // Send modified requst, this time with e2 subscriptions.
3427 params2 := xappConn1.GetRESTSubsReqReportParams(subReqCount + 1)
3428 params2.SetSubscriptionID(&restSubId)
3430 xapp.Subscription.SetResponseCB(xappConn1.SubscriptionRespHandler)
3431 xappConn1.ExpectAnyNotification(t)
3432 // Resend the original request with an additional e2 subscription (detail), this time with restsubsid
3433 restSubId_resend := xappConn1.SendRESTSubsReq(t, params2)
3435 e2SubsId1 := xappConn1.WaitAnyRESTNotification(t)
3436 assert.Equal(t, e2SubsId, e2SubsId1)
3438 crereq2, cremsg2 := e2termConn1.RecvSubsReq(t)
3440 xappConn1.ExpectRESTNotification(t, restSubId_resend)
3441 e2termConn1.SendSubsResp(t, crereq2, cremsg2)
3442 e2SubsId2 := xappConn1.WaitRESTNotification(t, restSubId_resend)
3443 assert.NotEqual(t, e2SubsId2, 0)
3445 <-time.After(100 * time.Millisecond)
3447 // Delete both e2 subscriptions
3448 xappConn1.SendRESTSubsDelReq(t, &restSubId)
3449 e2SubsIds := []uint32{e2SubsId, e2SubsId2}
3450 sendAndReceiveMultipleE2DelReqs(t, e2SubsIds, e2termConn1)
3452 waitSubsCleanup(t, e2SubsId, 10)
3454 // Resend the original request, we shall find it's previous md5sum/restsubs
3455 // but the restsubscription has been already removed. This shall trigger a
3457 restSubId, e2SubsId = createSubscription(t, xappConn1, e2termConn1, params)
3459 <-time.After(100 * time.Millisecond)
3461 deleteSubscription(t, xappConn1, e2termConn1, &restSubId)
3463 waitSubsCleanup(t, e2SubsId, 10)
3464 mainCtrl.VerifyCounterValues(t)
3465 mainCtrl.VerifyAllClean(t)
3468 func TestRESTSubDelReqRetransmission(t *testing.T) {
3469 CaseBegin("TestRESTSubDelReqRetransmission")
3471 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
3472 Counter{cRestSubReqFromXapp, 1},
3473 Counter{cRestSubRespToXapp, 1},
3474 Counter{cSubReqToE2, 1},
3475 Counter{cSubRespFromE2, 1},
3476 Counter{cRestSubNotifToXapp, 1},
3477 Counter{cRestSubDelReqFromXapp, 2},
3478 Counter{cSubDelReqToE2, 1},
3479 Counter{cSubDelRespFromE2, 1},
3480 Counter{cRestSubDelRespToXapp, 2},
3483 var params *teststube2ap.RESTSubsReqParams = nil
3486 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
3488 queryXappSubscription(t, int64(e2SubsId), "RAN_NAME_1", []string{"localhost:13560"})
3491 xappConn1.SendRESTSubsDelReq(t, &restSubId)
3492 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
3494 seqBef := mainCtrl.get_msgcounter(t)
3495 xappConn1.SendRESTSubsDelReq(t, &restSubId)
3496 mainCtrl.wait_msgcounter_change(t, seqBef, 10)
3498 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
3500 waitSubsCleanup(t, e2SubsId, 10)
3501 mainCtrl.VerifyCounterValues(t)
3502 mainCtrl.VerifyAllClean(t)
3505 //-----------------------------------------------------------------------------
3506 // TestRESTSubReqDelReq
3509 // +-------+ +---------+ +---------+
3510 // | xapp | | submgr | | e2term |
3511 // +-------+ +---------+ +---------+
3514 // |---------------->| |
3516 // | RESTSubResp | |
3517 // |<----------------| |
3519 // | |------------->|
3520 // | RESTSubDelReq | |
3521 // |---------------->| |
3522 // | RESTSubDelResp | |
3524 // |<----------------| |
3526 // | |<-------------|
3528 // |<----------------| |
3530 // | [SUBS DELETE] |
3533 //-----------------------------------------------------------------------------
3534 func TestRESTSubReqDelReq(t *testing.T) {
3535 CaseBegin("TestRESTSubReqDelReq")
3537 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
3538 Counter{cRestSubReqFromXapp, 1},
3539 Counter{cRestSubRespToXapp, 1},
3540 Counter{cSubReqToE2, 1},
3541 Counter{cSubRespFromE2, 1},
3542 Counter{cRestSubNotifToXapp, 1},
3543 Counter{cRestSubDelReqFromXapp, 2},
3544 Counter{cRestSubDelFailToXapp, 1},
3545 Counter{cSubDelReqToE2, 1},
3546 Counter{cSubDelRespFromE2, 1},
3547 Counter{cRestSubDelRespToXapp, 1},
3550 const subReqCount int = 1
3553 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
3554 restSubId := xappConn1.SendRESTSubsReq(t, params)
3556 // Del. This will fail as processing of the subscription
3557 // is still ongoing in submgr. Deletion is not allowed before
3558 // subscription creation has been completed.
3559 xappConn1.SendRESTSubsDelReq(t, &restSubId)
3560 crereq, cremsg := e2termConn1.RecvSubsReq(t)
3561 xappConn1.ExpectRESTNotification(t, restSubId)
3562 e2termConn1.SendSubsResp(t, crereq, cremsg)
3563 e2SubsId := xappConn1.WaitRESTNotification(t, restSubId)
3566 xappConn1.SendRESTSubsDelReq(t, &restSubId)
3568 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
3569 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
3571 // Wait that subs is cleaned
3572 waitSubsCleanup(t, e2SubsId, 10)
3573 mainCtrl.VerifyCounterValues(t)
3574 mainCtrl.VerifyAllClean(t)
3577 func TestRESTSubDelReqCollision(t *testing.T) {
3578 CaseBegin("TestRESTSubDelReqCollision - not relevant for REST API")
3581 func TestRESTSubReqAndSubDelOkTwoParallel(t *testing.T) {
3582 CaseBegin("TestRESTSubReqAndSubDelOkTwoParallel")
3584 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
3585 Counter{cRestSubReqFromXapp, 2},
3586 Counter{cRestSubRespToXapp, 2},
3587 Counter{cSubReqToE2, 2},
3588 Counter{cSubRespFromE2, 2},
3589 Counter{cRestSubNotifToXapp, 2},
3590 Counter{cRestSubDelReqFromXapp, 2},
3591 Counter{cSubDelReqToE2, 2},
3592 Counter{cSubDelRespFromE2, 2},
3593 Counter{cRestSubDelRespToXapp, 2},
3597 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
3598 restSubId1 := xappConn1.SendRESTSubsReq(t, params)
3599 xapp.Logger.Debug("Send 1st REST subscriber request for subscriberId : %v", restSubId1)
3602 params = xappConn2.GetRESTSubsReqReportParams(subReqCount)
3603 restSubId2 := xappConn2.SendRESTSubsReq(t, params)
3604 xapp.Logger.Debug("Send 2nd REST subscriber request for subscriberId : %v", restSubId2)
3606 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
3607 crereq2, cremsg2 := e2termConn1.RecvSubsReq(t)
3609 //XappConn1 receives both of the responses
3610 xappConn1.WaitListedRestNotifications(t, []string{restSubId1, restSubId2})
3613 e2termConn1.SendSubsResp(t, crereq1, cremsg1)
3615 e2termConn1.SendSubsResp(t, crereq2, cremsg2)
3617 e2SubsIdA := <-xappConn1.ListedRESTNotifications
3618 xapp.Logger.Debug("TEST: 1.st XAPP notification received e2SubsId=%v", e2SubsIdA)
3619 e2SubsIdB := <-xappConn1.ListedRESTNotifications
3620 xapp.Logger.Debug("TEST: 2.nd XAPP notification received e2SubsId=%v", e2SubsIdB)
3623 deleteSubscription(t, xappConn1, e2termConn1, &restSubId1)
3625 deleteSubscription(t, xappConn2, e2termConn1, &restSubId2)
3627 //Wait that subs is cleaned
3628 mainCtrl.wait_subs_clean(t, e2SubsIdA.E2SubsId, 10)
3629 waitSubsCleanup(t, e2SubsIdB.E2SubsId, 10)
3631 mainCtrl.VerifyCounterValues(t)
3632 mainCtrl.VerifyAllClean(t)
3635 func TestRESTSameSubsDiffRan(t *testing.T) {
3636 CaseBegin("TestRESTSameSubsDiffRan")
3638 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
3639 Counter{cRestSubReqFromXapp, 2},
3640 Counter{cRestSubRespToXapp, 2},
3641 Counter{cSubReqToE2, 2},
3642 Counter{cSubRespFromE2, 2},
3643 Counter{cRestSubNotifToXapp, 2},
3644 Counter{cRestSubDelReqFromXapp, 2},
3645 Counter{cSubDelReqToE2, 2},
3646 Counter{cSubDelRespFromE2, 2},
3647 Counter{cRestSubDelRespToXapp, 2},
3650 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
3651 restSubId1, e2SubsId1 := createSubscription(t, xappConn1, e2termConn1, params)
3652 xapp.Logger.Debug("Send 1st REST subscriber request for subscriberId : %v", restSubId1)
3654 params = xappConn1.GetRESTSubsReqReportParams(subReqCount)
3655 params.SetMeid("RAN_NAME_2")
3656 restSubId2, e2SubsId2 := createSubscription(t, xappConn1, e2termConn1, params)
3657 xapp.Logger.Debug("Send 2nd REST subscriber request for subscriberId : %v", restSubId2)
3660 deleteSubscription(t, xappConn1, e2termConn1, &restSubId1)
3662 deleteSubscription(t, xappConn1, e2termConn1, &restSubId2)
3664 //Wait that subs is cleaned
3665 mainCtrl.wait_subs_clean(t, e2SubsId1, 10)
3666 waitSubsCleanup(t, e2SubsId2, 10)
3668 mainCtrl.VerifyCounterValues(t)
3669 mainCtrl.VerifyAllClean(t)
3672 func TestRESTSubReqRetryInSubmgr(t *testing.T) {
3673 CaseBegin("TestRESTSubReqRetryInSubmgr start")
3675 // Init counter check
3676 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
3677 Counter{cRestSubReqFromXapp, 1},
3678 Counter{cRestSubRespToXapp, 1},
3679 Counter{cSubReqToE2, 1},
3680 Counter{cSubReqTimerExpiry, 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)
3714 mainCtrl.VerifyAllClean(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{cRestSubFailNotifToXapp, 1},
3767 Counter{cSubDelReqToE2, 1},
3768 Counter{cSubDelRespFromE2, 1},
3769 Counter{cRestSubDelReqFromXapp, 1},
3770 Counter{cRestSubDelRespToXapp, 1},
3773 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
3774 restSubId := xappConn1.SendRESTSubsReq(t, params)
3775 xapp.Logger.Debug("Send REST subscriber request for subscriber : %v", restSubId)
3777 e2termConn1.RecvSubsReq(t)
3778 xapp.Logger.Debug("Ignore 1st REST subscriber request for subscriber : %v", restSubId)
3780 e2termConn1.RecvSubsReq(t)
3781 xapp.Logger.Debug("Ignore 2nd REST subscriber request for subscriber : %v", restSubId)
3783 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
3784 xappConn1.ExpectRESTNotificationNok(t, restSubId, "allFail")
3785 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
3786 xappConn1.WaitRESTNotification(t, restSubId)
3788 xappConn1.SendRESTSubsDelReq(t, &restSubId)
3790 // Wait that subs is cleaned
3791 waitSubsCleanup(t, delreq.RequestId.InstanceId, 10)
3792 mainCtrl.VerifyCounterValues(t)
3793 mainCtrl.VerifyAllClean(t)
3796 func TestREST2eTermNotRespondingToSubReq(t *testing.T) {
3797 CaseBegin("TestREST2eTermNotRespondingToSubReq start")
3799 // Init counter check
3800 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
3801 Counter{cRestSubReqFromXapp, 1},
3802 Counter{cRestSubRespToXapp, 1},
3803 Counter{cSubReqToE2, 1},
3804 Counter{cSubReReqToE2, 1},
3805 Counter{cSubReqTimerExpiry, 2},
3806 Counter{cSubDelReReqToE2, 1},
3807 Counter{cRestSubFailNotifToXapp, 1},
3808 Counter{cSubDelReqToE2, 1},
3809 Counter{cSubDelReqTimerExpiry, 2},
3810 Counter{cRestSubDelReqFromXapp, 1},
3811 Counter{cRestSubDelRespToXapp, 1},
3814 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
3815 restSubId := xappConn1.SendRESTSubsReq(t, params)
3816 xapp.Logger.Debug("Send REST subscriber request for subscriber : %v", restSubId)
3818 e2termConn1.RecvSubsReq(t)
3819 xapp.Logger.Debug("Ignore 1st REST subscriber request for subscriber : %v", restSubId)
3821 e2termConn1.RecvSubsReq(t)
3822 xapp.Logger.Debug("Ignore 2nd REST subscriber request for subscriber : %v", restSubId)
3824 e2termConn1.RecvSubsDelReq(t)
3825 xapp.Logger.Debug("Ignore 1st INTERNAL delete request for subscriber : %v", restSubId)
3827 xappConn1.ExpectRESTNotificationNok(t, restSubId, "allFail")
3828 e2termConn1.RecvSubsDelReq(t)
3829 xapp.Logger.Debug("Ignore 2nd INTERNAL delete request for subscriber : %v", restSubId)
3831 e2SubsId := xappConn1.WaitRESTNotification(t, restSubId)
3833 xappConn1.SendRESTSubsDelReq(t, &restSubId)
3835 waitSubsCleanup(t, e2SubsId, 10)
3836 mainCtrl.VerifyCounterValues(t)
3837 mainCtrl.VerifyAllClean(t)
3840 //-----------------------------------------------------------------------------
3841 // TestRESTSubReqTwoRetriesNoRespSubDelRespInSubmgr
3844 // +-------+ +---------+ +---------+
3845 // | xapp | | submgr | | e2term |
3846 // +-------+ +---------+ +---------+
3849 // |---------------->| |
3851 // | RESTSubResp | |
3852 // |<----------------| |
3854 // | |------------->|
3858 // | |------------->|
3861 // | |------------->|
3865 // | |------------->|
3869 // | |<-------------|
3872 // |<----------------| |
3874 // | [SUBS DELETE] |
3877 //-----------------------------------------------------------------------------
3878 func TestRESTSubReqTwoRetriesNoRespAtAllInSubmgr(t *testing.T) {
3879 CaseBegin("TestRESTSubReqTwoRetriesNoRespAtAllInSubmgr start")
3881 // Init counter check
3882 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
3883 Counter{cRestSubReqFromXapp, 1},
3884 Counter{cRestSubRespToXapp, 1},
3885 Counter{cSubReqToE2, 1},
3886 Counter{cSubReReqToE2, 1},
3887 Counter{cSubReqTimerExpiry, 2},
3888 Counter{cRestSubFailNotifToXapp, 1},
3889 Counter{cSubDelReqToE2, 1},
3890 Counter{cSubDelReReqToE2, 1},
3891 Counter{cSubDelReqTimerExpiry, 2},
3892 Counter{cRestSubDelReqFromXapp, 1},
3893 Counter{cRestSubDelRespToXapp, 1},
3896 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
3897 restSubId := xappConn1.SendRESTSubsReq(t, params)
3898 xapp.Logger.Debug("Send REST subscriber request for subscriber : %v", restSubId)
3900 e2termConn1.RecvSubsReq(t)
3901 xapp.Logger.Debug("Ignore 1st REST subscriber request for subscriber : %v", restSubId)
3903 e2termConn1.RecvSubsReq(t)
3904 xapp.Logger.Debug("Ignore 2nd REST subscriber request for subscriber : %v", restSubId)
3906 e2termConn1.RecvSubsDelReq(t)
3907 xapp.Logger.Debug("Ignore 1st INTERNAL delete request for subscriber : %v", restSubId)
3909 xappConn1.ExpectRESTNotificationNok(t, restSubId, "allFail")
3910 e2termConn1.RecvSubsDelReq(t)
3911 xapp.Logger.Debug("Ignore 2nd INTERNAL delete request for subscriber : %v", restSubId)
3913 e2SubsId := xappConn1.WaitRESTNotification(t, restSubId)
3915 xappConn1.SendRESTSubsDelReq(t, &restSubId)
3917 waitSubsCleanup(t, e2SubsId, 10)
3918 mainCtrl.VerifyCounterValues(t)
3919 mainCtrl.VerifyAllClean(t)
3922 //-----------------------------------------------------------------------------
3923 // TestRESTSubReqSubFailRespInSubmgr
3926 // +-------+ +---------+ +---------+
3927 // | xapp | | submgr | | e2term |
3928 // +-------+ +---------+ +---------+
3931 // |---------------->| |
3933 // | RESTSubResp | |
3934 // |<----------------| |
3936 // | |------------->|
3939 // | |<-------------|
3943 // |<----------------| |
3945 // | [SUBS DELETE] |
3948 //-----------------------------------------------------------------------------
3949 func TestRESTSubReqSubFailRespInSubmgr(t *testing.T) {
3950 CaseBegin("TestRESTSubReqSubFailRespInSubmgr")
3952 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
3953 Counter{cRestSubReqFromXapp, 1},
3954 Counter{cRestSubRespToXapp, 1},
3955 Counter{cSubReqToE2, 1},
3956 Counter{cSubFailFromE2, 1},
3957 Counter{cRestSubFailNotifToXapp, 1},
3958 Counter{cRestSubDelReqFromXapp, 1},
3959 Counter{cRestSubDelRespToXapp, 1},
3962 const subReqCount int = 1
3963 const e2Timeout int64 = 2
3964 const e2RetryCount int64 = 1
3965 const routingNeeded bool = true
3967 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
3968 params.SetSubscriptionDirectives(e2Timeout, e2RetryCount, routingNeeded)
3969 restSubId := xappConn1.SendRESTSubsReq(t, params)
3971 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
3972 fparams1 := &teststube2ap.E2StubSubsFailParams{}
3973 fparams1.Set(crereq1)
3974 xappConn1.ExpectRESTNotificationNok(t, restSubId, "allFail")
3975 e2termConn1.SendSubsFail(t, fparams1, cremsg1)
3977 e2SubsId := xappConn1.WaitRESTNotification(t, restSubId)
3978 xapp.Logger.Debug("TEST: REST notification received e2SubsId=%v", e2SubsId)
3980 // REST subscription sill there to be deleted
3981 xappConn1.SendRESTSubsDelReq(t, &restSubId)
3983 // Wait that subs is cleaned
3984 waitSubsCleanup(t, e2SubsId, 10)
3986 mainCtrl.VerifyCounterValues(t)
3987 mainCtrl.VerifyAllClean(t)
3990 //-----------------------------------------------------------------------------
3991 // TestRESTSubDelReqRetryInSubmgr
3994 // +-------+ +---------+ +---------+
3995 // | xapp | | submgr | | e2term |
3996 // +-------+ +---------+ +---------+
3998 // | [SUBS CREATE] |
4001 // | RESTSubDelReq | |
4002 // |---------------->| |
4004 // | RESTSubDelResp | |
4005 // |<----------------| |
4007 // | |------------->|
4010 // | |------------->|
4013 // | |<-------------|
4016 //-----------------------------------------------------------------------------
4017 func TestRESTSubDelReqRetryInSubmgr(t *testing.T) {
4018 CaseBegin("TestRESTSubDelReqRetryInSubmgr")
4020 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
4021 Counter{cRestSubReqFromXapp, 1},
4022 Counter{cRestSubRespToXapp, 1},
4023 Counter{cSubReqToE2, 1},
4024 Counter{cSubRespFromE2, 1},
4025 Counter{cRestSubNotifToXapp, 1},
4026 Counter{cRestSubDelReqFromXapp, 1},
4027 Counter{cSubDelReqToE2, 1},
4028 Counter{cSubDelReqTimerExpiry, 1},
4029 Counter{cSubDelReReqToE2, 1},
4030 Counter{cSubDelRespFromE2, 1},
4031 Counter{cRestSubDelRespToXapp, 1},
4034 var params *teststube2ap.RESTSubsReqParams = nil
4035 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
4038 xappConn1.SendRESTSubsDelReq(t, &restSubId)
4040 // E2t: Receive 1st SubsDelReq
4041 e2termConn1.RecvSubsDelReq(t)
4043 // E2t: Receive 2nd SubsDelReq and send SubsDelResp
4044 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
4045 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
4047 //Wait that subs is cleaned
4048 waitSubsCleanup(t, e2SubsId, 10)
4050 mainCtrl.VerifyCounterValues(t)
4051 mainCtrl.VerifyAllClean(t)
4054 //-----------------------------------------------------------------------------
4055 // TestRESTSubDelReqTwoRetriesNoRespInSubmgr
4058 // +-------+ +---------+ +---------+
4059 // | xapp | | submgr | | e2term |
4060 // +-------+ +---------+ +---------+
4062 // | [SUBS CREATE] |
4065 // | RESTSubDelReq | |
4066 // |---------------->| |
4068 // | RESTSubDelResp | |
4069 // |<----------------| |
4071 // | |------------->|
4074 // | |------------->|
4078 //-----------------------------------------------------------------------------
4079 func TestRESTSubDelReqTwoRetriesNoRespInSubmgr(t *testing.T) {
4080 CaseBegin("TestRESTSubDelReTwoRetriesNoRespInSubmgr")
4082 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
4083 Counter{cRestSubReqFromXapp, 1},
4084 Counter{cRestSubRespToXapp, 1},
4085 Counter{cSubReqToE2, 1},
4086 Counter{cSubRespFromE2, 1},
4087 Counter{cRestSubNotifToXapp, 1},
4088 Counter{cRestSubDelReqFromXapp, 1},
4089 Counter{cSubDelReqToE2, 1},
4090 Counter{cSubDelReqTimerExpiry, 1},
4091 Counter{cSubDelReReqToE2, 1},
4092 Counter{cSubDelRespFromE2, 1},
4093 Counter{cRestSubDelRespToXapp, 1},
4097 var params *teststube2ap.RESTSubsReqParams = nil
4098 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
4101 xappConn1.SendRESTSubsDelReq(t, &restSubId)
4103 // E2t: Receive 1st SubsDelReq
4104 e2termConn1.RecvSubsDelReq(t)
4106 // E2t: Receive 2nd SubsDelReq and send SubsDelResp
4107 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
4108 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
4110 //Wait that subs is cleaned
4111 waitSubsCleanup(t, e2SubsId, 10)
4113 mainCtrl.VerifyCounterValues(t)
4114 mainCtrl.VerifyAllClean(t)
4117 //-----------------------------------------------------------------------------
4118 // TestRESTSubDelReqSubDelFailRespInSubmgr
4121 // +-------+ +---------+ +---------+
4122 // | xapp | | submgr | | e2term |
4123 // +-------+ +---------+ +---------+
4125 // | [SUBS CREATE] |
4128 // | RESTSubDelReq | |
4129 // |---------------->| |
4131 // | RESTSubDelResp | |
4132 // |<----------------| |
4134 // | |------------->|
4137 // | |<-------------|
4140 //-----------------------------------------------------------------------------
4141 func TestRESTSubDelReqSubDelFailRespInSubmgr(t *testing.T) {
4142 CaseBegin("TestRESTSubDelReqSubDelFailRespInSubmgr")
4144 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
4145 Counter{cRestSubReqFromXapp, 1},
4146 Counter{cRestSubRespToXapp, 1},
4147 Counter{cSubReqToE2, 1},
4148 Counter{cSubRespFromE2, 1},
4149 Counter{cRestSubNotifToXapp, 1},
4150 Counter{cRestSubDelReqFromXapp, 1},
4151 Counter{cSubDelReqToE2, 1},
4152 Counter{cSubDelFailFromE2, 1},
4153 Counter{cRestSubDelRespToXapp, 1},
4157 var params *teststube2ap.RESTSubsReqParams = nil
4158 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
4161 xappConn1.SendRESTSubsDelReq(t, &restSubId)
4163 // E2t: Send receive SubsDelReq and send SubsDelFail
4164 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
4165 e2termConn1.SendSubsDelFail(t, delreq, delmsg)
4167 //Wait that subs is cleaned
4168 waitSubsCleanup(t, e2SubsId, 10)
4170 mainCtrl.VerifyCounterValues(t)
4171 mainCtrl.VerifyAllClean(t)
4174 //-----------------------------------------------------------------------------
4175 // TestRESTSubReqAndSubDelOkSameAction
4178 // +-------+ +-------+ +---------+ +---------+
4179 // | xapp2 | | xapp1 | | submgr | | e2term |
4180 // +-------+ +-------+ +---------+ +---------+
4182 // | | RESTSubReq1 | |
4183 // | |---------------->| |
4185 // | | RESTSubResp1 | |
4186 // | |<----------------| |
4189 // | | |------------->|
4191 // | | |<-------------|
4192 // | | RESTNotif1 | |
4193 // | |<----------------| |
4195 // | RESTSubReq2 | |
4196 // |------------------------------>| |
4198 // | RESTSubResp2 | |
4199 // |<------------------------------| |
4201 // | | RESTNotif2 | |
4202 // |<------------------------------| |
4204 // | | RESTSubDelReq1 | |
4205 // | |---------------->| |
4207 // | | RESTSubDelResp1 | |
4208 // | |<----------------| |
4210 // | RESTSubDelReq2 | |
4211 // |------------------------------>| |
4213 // | RESTSubDelResp2 | |
4214 // |<------------------------------| |
4216 // | | | SubDelReq2 |
4217 // | | |------------->|
4219 // | | | SubDelResp2 |
4220 // | | |<-------------|
4223 //-----------------------------------------------------------------------------
4224 func TestRESTSubReqAndSubDelOkSameAction(t *testing.T) {
4225 CaseBegin("TestRESTSubReqAndSubDelOkSameAction")
4227 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
4228 Counter{cRestSubReqFromXapp, 2},
4229 Counter{cRestSubRespToXapp, 2},
4230 Counter{cSubReqToE2, 1},
4231 Counter{cSubRespFromE2, 1},
4232 Counter{cRestSubNotifToXapp, 2},
4233 Counter{cMergedSubscriptions, 1},
4234 Counter{cUnmergedSubscriptions, 1},
4235 Counter{cRestSubDelReqFromXapp, 2},
4236 Counter{cSubDelReqToE2, 1},
4237 Counter{cSubDelRespFromE2, 1},
4238 Counter{cRestSubDelRespToXapp, 2},
4242 var params *teststube2ap.RESTSubsReqParams = nil
4245 restSubId1, e2SubsId1 := createSubscription(t, xappConn1, e2termConn1, params)
4246 queryXappSubscription(t, int64(e2SubsId1), "RAN_NAME_1", []string{"localhost:13560"})
4249 params = xappConn2.GetRESTSubsReqReportParams(subReqCount)
4250 params.SetMeid("RAN_NAME_1")
4252 xapp.Subscription.SetResponseCB(xappConn2.SubscriptionRespHandler)
4253 xappConn2.ExpectAnyNotification(t)
4254 waiter := rtmgrHttp.AllocNextSleep(10, true)
4255 restSubId2 := xappConn2.SendRESTSubsReq(t, params)
4256 waiter.WaitResult(t)
4257 xapp.Logger.Debug("Send REST subscriber request for subscriberId : %v", restSubId2)
4258 e2SubsId2 := xappConn2.WaitAnyRESTNotification(t)
4259 xapp.Logger.Debug("REST notification received e2SubsId=%v", e2SubsId2)
4261 queryXappSubscription(t, int64(e2SubsId1), "RAN_NAME_1", []string{"localhost:13560", "localhost:13660"})
4264 xappConn1.SendRESTSubsDelReq(t, &restSubId1)
4267 deleteXapp2Subscription(t, &restSubId2)
4269 //Wait that subs is cleaned
4270 waitSubsCleanup(t, e2SubsId2, 10)
4271 mainCtrl.VerifyCounterValues(t)
4272 mainCtrl.VerifyAllClean(t)
4275 //-----------------------------------------------------------------------------
4276 // TestSubReqAndSubDelOkSameActionParallel
4279 // +-------+ +-------+ +---------+ +---------+
4280 // | xapp2 | | xapp1 | | submgr | | e2term |
4281 // +-------+ +-------+ +---------+ +---------+
4286 // | |------------->| |
4289 // | | |------------->|
4291 // |--------------------------->| |
4293 // | | |<-------------|
4295 // | |<-------------| |
4297 // | | |------------->|
4300 // | | |<-------------|
4302 // |<---------------------------| |
4304 // | | SubDelReq 1 | |
4305 // | |------------->| |
4307 // | | SubDelResp 1 | |
4308 // | |<-------------| |
4310 // | SubDelReq 2 | |
4311 // |--------------------------->| |
4313 // | | | SubDelReq 2 |
4314 // | | |------------->|
4316 // | | | SubDelReq 2 |
4317 // | | |------------->|
4319 // | SubDelResp 2 | |
4320 // |<---------------------------| |
4322 func TestRESTSubReqAndSubDelOkSameActionParallel(t *testing.T) {
4323 CaseBegin("TestRESTSubReqAndSubDelOkSameActionParallel")
4325 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
4326 Counter{cRestSubReqFromXapp, 2},
4327 Counter{cRestSubRespToXapp, 2},
4328 Counter{cSubReqToE2, 2},
4329 Counter{cSubRespFromE2, 2},
4330 Counter{cRestSubNotifToXapp, 2},
4331 Counter{cRestSubDelReqFromXapp, 2},
4332 Counter{cSubDelReqToE2, 2},
4333 Counter{cSubDelRespFromE2, 2},
4334 Counter{cRestSubDelRespToXapp, 2},
4337 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
4338 restSubId1 := xappConn1.SendRESTSubsReq(t, params)
4339 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
4341 params2 := xappConn2.GetRESTSubsReqReportParams(subReqCount)
4342 restSubId2 := xappConn2.SendRESTSubsReq(t, params2)
4344 xappConn1.ExpectRESTNotification(t, restSubId1)
4345 e2termConn1.SendSubsResp(t, crereq1, cremsg1)
4346 e2SubsId1 := xappConn1.WaitRESTNotification(t, restSubId1)
4348 xappConn2.ExpectRESTNotification(t, restSubId2)
4349 crereq2, cremsg2 := e2termConn1.RecvSubsReq(t)
4350 e2termConn1.SendSubsResp(t, crereq2, cremsg2)
4351 e2SubsId2 := xappConn2.WaitRESTNotification(t, restSubId2)
4354 xappConn1.SendRESTSubsDelReq(t, &restSubId1)
4355 delreq1, delmsg1 := e2termConn1.RecvSubsDelReq(t)
4356 e2termConn1.SendSubsDelResp(t, delreq1, delmsg1)
4357 mainCtrl.wait_subs_clean(t, e2SubsId1, 10)
4360 xappConn2.SendRESTSubsDelReq(t, &restSubId2)
4361 delreq2, delmsg2 := e2termConn1.RecvSubsDelReq(t)
4362 e2termConn1.SendSubsDelResp(t, delreq2, delmsg2)
4364 waitSubsCleanup(t, e2SubsId2, 10)
4365 mainCtrl.VerifyCounterValues(t)
4366 mainCtrl.VerifyAllClean(t)
4369 //-----------------------------------------------------------------------------
4370 // TestRESTSubReqAndSubDelNoAnswerSameActionParallel
4373 // +-------+ +-------+ +---------+ +---------+
4374 // | xapp2 | | xapp1 | | submgr | | e2term |
4375 // +-------+ +-------+ +---------+ +---------+
4379 // | | RESTSubReq1 | |
4380 // | |---------------->| |
4382 // | | RESTSubResp1 | |
4383 // | |<----------------| |
4385 // | | |------------->|
4386 // | RESTSubReq2 | |
4387 // |------------------------------>| |
4389 // | RESTSubResp2 | |
4390 // |<------------------------------| |
4392 // | | |------------->|
4395 // | | | SubDelReq |
4396 // | | |------------->|
4398 // | | | SubDelResp |
4399 // | | |<-------------|
4400 // | | RESTNotif1 | |
4401 // | | unsuccess | |
4402 // | |<----------------| |
4404 // | | unsuccess | |
4405 // |<------------------------------| |
4407 // | | RESTSubDelReq1 | |
4408 // | |---------------->| |
4410 // | | RESTSubDelResp1 | |
4411 // | |<----------------| |
4413 // | RESTSubDelReq2 | |
4414 // |------------------------------>| |
4416 // | RESTSubDelResp2 | |
4417 // |<------------------------------| |
4419 //-----------------------------------------------------------------------------
4420 func TestRESTSubReqAndSubDelNoAnswerSameActionParallel(t *testing.T) {
4421 CaseBegin("TestRESTSubReqAndSubDelNoAnswerSameActionParallel")
4423 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
4424 Counter{cRestSubReqFromXapp, 2},
4425 Counter{cMergedSubscriptions, 1},
4426 Counter{cRestSubRespToXapp, 2},
4427 Counter{cSubReqToE2, 1},
4428 Counter{cSubReqTimerExpiry, 2},
4429 Counter{cSubReReqToE2, 1},
4430 Counter{cRestSubFailNotifToXapp, 2},
4431 Counter{cUnmergedSubscriptions, 1},
4432 Counter{cRestSubDelReqFromXapp, 2},
4433 Counter{cSubDelReqToE2, 1},
4434 Counter{cSubDelRespFromE2, 1},
4435 Counter{cRestSubDelRespToXapp, 2},
4437 const subReqCount int = 1
4440 params1 := xappConn1.GetRESTSubsReqReportParams(subReqCount)
4441 restSubId1 := xappConn1.SendRESTSubsReq(t, params1)
4442 crereq1, _ := e2termConn1.RecvSubsReq(t)
4445 subepcnt2 := mainCtrl.get_subs_entrypoint_cnt(t, crereq1.RequestId.InstanceId)
4446 params2 := xappConn2.GetRESTSubsReqReportParams(subReqCount)
4447 params2.SetMeid("RAN_NAME_1")
4448 restSubId2 := xappConn2.SendRESTSubsReq(t, params2)
4449 mainCtrl.wait_subs_entrypoint_cnt_change(t, crereq1.RequestId.InstanceId, subepcnt2, 10)
4451 //Req1 (retransmitted)
4452 e2termConn1.RecvSubsReq(t)
4454 delreq1, delmsg1 := e2termConn1.RecvSubsDelReq(t)
4456 xappConn1.WaitListedRestNotifications(t, []string{restSubId1, restSubId2})
4457 e2termConn1.SendSubsDelResp(t, delreq1, delmsg1)
4459 e2SubsIdA := <-xappConn1.ListedRESTNotifications
4460 xapp.Logger.Debug("TEST: 1.st XAPP notification received e2SubsId=%v", e2SubsIdA)
4461 e2SubsIdB := <-xappConn1.ListedRESTNotifications
4462 xapp.Logger.Debug("TEST: 2.nd XAPP notification received e2SubsId=%v", e2SubsIdB)
4465 xappConn1.SendRESTSubsDelReq(t, &restSubId1)
4468 xappConn2.SendRESTSubsDelReq(t, &restSubId2)
4470 mainCtrl.wait_multi_subs_clean(t, []uint32{e2SubsIdA.E2SubsId, e2SubsIdB.E2SubsId}, 10)
4472 //Wait that subs is cleaned
4473 waitSubsCleanup(t, e2SubsIdA.E2SubsId, 10)
4474 mainCtrl.VerifyCounterValues(t)
4475 mainCtrl.VerifyAllClean(t)
4478 //-----------------------------------------------------------------------------
4479 // TestRESTSubReqAndSubDelNokSameActionParallel
4482 // +-------+ +-------+ +---------+ +---------+
4483 // | xapp2 | | xapp1 | | submgr | | e2term |
4484 // +-------+ +-------+ +---------+ +---------+
4488 // | | RESTSubReq1 | |
4489 // | |---------------->| |
4491 // | | RESTSubResp1 | |
4492 // | |<----------------| |
4494 // | | |------------->|
4495 // | RESTSubReq2 | |
4496 // |------------------------------>| |
4498 // | RESTSubDelResp2 | |
4499 // |<------------------------------| |
4501 // | | |<-------------|
4503 // | | RESTNotif1 | |
4504 // | | unsuccess | |
4505 // | |<----------------| |
4507 // | | unsuccess | |
4508 // |<------------------------------| |
4510 // | | RESTSubDelReq1 | | There is no need for xApp to send delete for failed subscriptions but some xApp might do so.
4511 // | |---------------->| |
4513 // | | RESTSubDelResp1 | |
4514 // | |<----------------| |
4516 // | RESTSubDelReq2 | |
4517 // |------------------------------>| |
4519 // | RESTSubDelResp2 | |
4520 // |<------------------------------| |
4522 //-----------------------------------------------------------------------------
4523 func TestRESTSubReqAndSubDelNokSameActionParallel(t *testing.T) {
4524 CaseBegin("TestRESTSubReqAndSubDelNokSameActionParallel")
4526 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
4527 Counter{cRestSubReqFromXapp, 2},
4528 Counter{cMergedSubscriptions, 1},
4529 Counter{cRestSubRespToXapp, 2},
4530 Counter{cSubReqToE2, 1},
4531 Counter{cSubFailFromE2, 1},
4532 Counter{cRestSubFailNotifToXapp, 2},
4533 Counter{cUnmergedSubscriptions, 1},
4534 Counter{cRestSubDelReqFromXapp, 2},
4535 Counter{cRestSubDelRespToXapp, 2},
4538 const subReqCount int = 1
4541 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
4542 restSubId1 := xappConn1.SendRESTSubsReq(t, params)
4543 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
4546 subepcnt2 := mainCtrl.get_subs_entrypoint_cnt(t, crereq1.RequestId.InstanceId)
4547 params2 := xappConn2.GetRESTSubsReqReportParams(subReqCount)
4548 params2.SetMeid("RAN_NAME_1")
4549 restSubId2 := xappConn2.SendRESTSubsReq(t, params2)
4550 mainCtrl.wait_subs_entrypoint_cnt_change(t, crereq1.RequestId.InstanceId, subepcnt2, 10)
4552 // E2t: send SubsFail (first)
4553 fparams1 := &teststube2ap.E2StubSubsFailParams{}
4554 fparams1.Set(crereq1)
4555 e2termConn1.SendSubsFail(t, fparams1, cremsg1)
4557 xappConn1.WaitListedRestNotifications(t, []string{restSubId1, restSubId2})
4558 e2SubsIdA := <-xappConn1.ListedRESTNotifications
4559 xapp.Logger.Debug("TEST: 1.st XAPP notification received e2SubsId=%v", e2SubsIdA)
4560 e2SubsIdB := <-xappConn1.ListedRESTNotifications
4561 xapp.Logger.Debug("TEST: 2.nd XAPP notification received e2SubsId=%v", e2SubsIdB)
4564 xappConn1.SendRESTSubsDelReq(t, &restSubId1)
4567 xappConn2.SendRESTSubsDelReq(t, &restSubId2)
4569 //Wait that subs is cleaned
4570 waitSubsCleanup(t, e2SubsIdA.E2SubsId, 10)
4571 waitSubsCleanup(t, e2SubsIdB.E2SubsId, 10)
4572 mainCtrl.VerifyCounterValues(t)
4573 mainCtrl.VerifyAllClean(t)
4576 func TestRESTSubReqPolicyAndSubDelOk(t *testing.T) {
4577 CaseBegin("TestRESTSubReqPolicyAndSubDelOk")
4579 // Init counter check
4580 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
4581 Counter{cRestSubReqFromXapp, 1},
4582 Counter{cRestSubRespToXapp, 1},
4583 Counter{cSubReqToE2, 1},
4584 Counter{cSubRespFromE2, 1},
4585 Counter{cRestSubNotifToXapp, 1},
4586 Counter{cRestSubDelReqFromXapp, 1},
4587 Counter{cSubDelReqToE2, 1},
4588 Counter{cSubDelRespFromE2, 1},
4589 Counter{cRestSubDelRespToXapp, 1},
4592 params := xappConn1.GetRESTSubsReqPolicyParams(subReqCount)
4593 restSubId := xappConn1.SendRESTSubsReq(t, params)
4594 xapp.Logger.Debug("Send REST Policy subscriber request for subscriberId : %v", restSubId)
4596 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
4597 xappConn1.ExpectRESTNotification(t, restSubId)
4598 e2termConn1.SendSubsResp(t, crereq1, cremsg1)
4599 e2SubsId := xappConn1.WaitRESTNotification(t, restSubId)
4600 xapp.Logger.Debug("REST notification received e2SubsId=%v", e2SubsId)
4602 xappConn1.SendRESTSubsDelReq(t, &restSubId)
4603 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
4604 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
4606 // Wait that subs is cleaned
4607 waitSubsCleanup(t, e2SubsId, 10)
4608 mainCtrl.VerifyCounterValues(t)
4609 mainCtrl.VerifyAllClean(t)
4612 //-----------------------------------------------------------------------------
4613 // TestRESTSubReqPolicyChangeAndSubDelOk
4616 // +-------+ +---------+ +---------+
4617 // | xapp | | submgr | | e2term |
4618 // +-------+ +---------+ +---------+
4621 // |---------------->| |
4623 // | RESTSubResp | |
4624 // |<----------------| |
4626 // | |------------->|
4629 // | |<-------------|
4632 // |<----------------| |
4635 // |---------------->| |
4637 // | RESTSubResp | |
4638 // |<----------------| |
4640 // | |------------->|
4643 // | |<-------------|
4646 // |<----------------| |
4648 // | RESTSubDelReq | |
4649 // |---------------->| |
4652 // | |------------->|
4655 // | |<-------------|
4657 // | RESTSubDelResp | |
4658 // |<----------------| |
4660 //-----------------------------------------------------------------------------
4661 func TestRESTSubReqPolicyChangeAndSubDelOk(t *testing.T) {
4662 CaseBegin("TestRESTSubReqPolicyAndSubDelOk")
4664 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
4665 Counter{cRestSubReqFromXapp, 2},
4666 Counter{cRestSubRespToXapp, 2},
4667 Counter{cSubReqToE2, 2},
4668 Counter{cSubRespFromE2, 2},
4669 Counter{cRestSubNotifToXapp, 2},
4670 Counter{cRestSubDelReqFromXapp, 1},
4671 Counter{cSubDelReqToE2, 1},
4672 Counter{cSubDelRespFromE2, 1},
4673 Counter{cRestSubDelRespToXapp, 1},
4676 const subReqCount int = 1
4677 const e2Timeout int64 = 1
4678 const e2RetryCount int64 = 0
4679 const routingNeeded bool = true
4682 params := xappConn1.GetRESTSubsReqPolicyParams(subReqCount)
4683 params.SetSubscriptionDirectives(e2Timeout, e2RetryCount, routingNeeded)
4684 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
4687 // GetRESTSubsReqPolicyParams sets some counters on tc side.
4689 params = xappConn1.GetRESTSubsReqPolicyParams(subReqCount)
4690 params.SetSubscriptionDirectives(e2Timeout, e2RetryCount, routingNeeded)
4691 params.SetSubscriptionID(&restSubId)
4692 params.SetTimeToWait("w200ms")
4693 restSubId, e2SubsId = createSubscription(t, xappConn1, e2termConn1, params)
4696 xappConn1.SendRESTSubsDelReq(t, &restSubId)
4698 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
4699 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
4701 // Wait that subs is cleaned
4702 waitSubsCleanup(t, e2SubsId, 10)
4703 mainCtrl.VerifyCounterValues(t)
4704 mainCtrl.VerifyAllClean(t)
4707 //-----------------------------------------------------------------------------
4708 // TestRESTSubReqPolicyChangeNOk
4711 // +-------+ +---------+ +---------+
4712 // | xapp | | submgr | | e2term |
4713 // +-------+ +---------+ +---------+
4716 // |---------------->| |
4718 // | RESTSubResp | |
4719 // |<----------------| |
4721 // | |------------->|
4724 // | |<-------------|
4727 // |<----------------| |
4730 // |---------------->| |
4732 // | RESTSubUpdateFail(400 Bad request)
4734 // | RESTSubDelReq | |
4735 // |---------------->| |
4738 // | |------------->|
4741 // | |<-------------|
4743 // | RESTSubDelResp | |
4744 // |<----------------| |
4746 //-----------------------------------------------------------------------------
4747 func TestRESTSubReqPolicyChangeNOk(t *testing.T) {
4748 CaseBegin("TestRESTSubReqPolicyChangeNOk")
4750 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
4751 Counter{cRestSubReqFromXapp, 2},
4752 Counter{cRestSubRespToXapp, 1},
4753 Counter{cSubReqToE2, 1},
4754 Counter{cSubRespFromE2, 1},
4755 Counter{cRestSubNotifToXapp, 1},
4756 Counter{cRestSubFailToXapp, 1},
4757 Counter{cRestSubDelReqFromXapp, 1},
4758 Counter{cSubDelReqToE2, 1},
4759 Counter{cSubDelRespFromE2, 1},
4760 Counter{cRestSubDelRespToXapp, 1},
4764 params := xappConn1.GetRESTSubsReqPolicyParams(subReqCount)
4765 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
4768 params = xappConn1.GetRESTSubsReqPolicyParams(subReqCount)
4770 restSubIdUpd := strings.ToUpper(restSubId) // This makes RESTSubReq to fail
4771 params.SetSubscriptionID(&restSubIdUpd)
4772 params.SetTimeToWait("w200ms")
4774 restSubId2 := xappConn1.SendRESTSubsReq(t, params)
4775 assert.Equal(t, restSubId2, "")
4778 xappConn1.SendRESTSubsDelReq(t, &restSubId)
4780 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
4781 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
4783 // Wait that subs is cleaned
4784 waitSubsCleanup(t, e2SubsId, 10)
4785 mainCtrl.VerifyCounterValues(t)
4786 mainCtrl.VerifyAllClean(t)
4789 //-----------------------------------------------------------------------------
4790 // TestRESTSubReqAndSubDelOkTwoE2termParallel
4793 // +-------+ +---------+ +---------+ +---------+
4794 // | xapp | | submgr | | e2term1 | | e2term2 |
4795 // +-------+ +---------+ +---------+ +---------+
4799 // | RESTSubReq1 | | |
4800 // |---------------->| | |
4802 // | RESTSubResp1 | | |
4803 // |<----------------| | |
4805 // | |------------->| |
4807 // | RESTSubReq2 | | |
4808 // |---------------->| | |
4810 // | RESTSubResp2 | | |
4811 // |<----------------| | |
4813 // | |---------------------------->|
4816 // | |<-------------| |
4817 // | RESTNotif1 | | |
4818 // |<----------------| | |
4820 // | |<----------------------------|
4821 // | RESTNotif2 | | |
4822 // |<----------------| | |
4824 // | [SUBS 1 DELETE] | |
4826 // | [SUBS 2 DELETE] | |
4829 //-----------------------------------------------------------------------------
4830 func TestRESTSubReqAndSubDelOkTwoE2termParallel(t *testing.T) {
4831 CaseBegin("TestRESTSubReqAndSubDelOkTwoE2termParallel")
4833 // Init counter check
4834 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
4835 Counter{cRestSubReqFromXapp, 2},
4836 Counter{cRestSubRespToXapp, 2},
4837 Counter{cSubReqToE2, 2},
4838 Counter{cSubRespFromE2, 2},
4839 Counter{cRestSubNotifToXapp, 2},
4840 Counter{cRestSubDelReqFromXapp, 2},
4841 Counter{cSubDelReqToE2, 2},
4842 Counter{cSubDelRespFromE2, 2},
4843 Counter{cRestSubDelRespToXapp, 2},
4846 const subReqCount int = 1
4849 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
4850 restSubId1 := xappConn1.SendRESTSubsReq(t, params)
4851 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
4854 params = xappConn2.GetRESTSubsReqReportParams(subReqCount)
4855 params.SetMeid("RAN_NAME_11")
4856 // Here we use xappConn2 to simulate sending second request from same xapp as doing it from xappConn1
4857 // would not work as notification would not be received
4858 restSubId2 := xappConn2.SendRESTSubsReq(t, params)
4859 crereq2, cremsg2 := e2termConn2.RecvSubsReq(t)
4862 xappConn1.ExpectRESTNotification(t, restSubId1)
4863 e2termConn1.SendSubsResp(t, crereq1, cremsg1)
4864 e2SubsId1 := xappConn1.WaitRESTNotification(t, restSubId1)
4865 xapp.Logger.Debug("TEST: REST notification received e2SubsId1=%v", e2SubsId1)
4868 xappConn2.ExpectRESTNotification(t, restSubId2)
4869 e2termConn2.SendSubsResp(t, crereq2, cremsg2)
4870 e2SubsId2 := xappConn2.WaitRESTNotification(t, restSubId2)
4871 xapp.Logger.Debug("TEST: REST notification received e2SubsId2=%v", e2SubsId2)
4874 xappConn1.SendRESTSubsDelReq(t, &restSubId1)
4875 delreq1, delmsg1 := e2termConn1.RecvSubsDelReq(t)
4876 e2termConn1.SendSubsDelResp(t, delreq1, delmsg1)
4878 // Wait that subs is cleaned
4879 mainCtrl.wait_subs_clean(t, e2SubsId1, 10)
4882 xappConn1.SendRESTSubsDelReq(t, &restSubId2)
4883 delreq2, delmsg2 := e2termConn2.RecvSubsDelReq(t)
4884 e2termConn2.SendSubsDelResp(t, delreq2, delmsg2)
4886 // Wait that subs is cleaned
4887 waitSubsCleanup(t, e2SubsId2, 10)
4889 mainCtrl.VerifyCounterValues(t)
4890 mainCtrl.VerifyAllClean(t)
4893 //-----------------------------------------------------------------------------
4894 // TestRESTSubReqAsn1EncodeFail
4896 // In this case submgr send RICSubscriptionDeleteRequest after encode failure which should not happen!
4898 // +-------+ +---------+ +---------+
4899 // | xapp | | submgr | | e2term |
4900 // +-------+ +---------+ +---------+
4903 // |---------------->| |
4905 // | RESTSubResp | |
4906 // |<----------------| |
4907 // | RESTSubDelReq | |
4908 // |---------------->| |
4909 // | RESTSubDelResp | |
4911 // |<----------------| |
4914 //-----------------------------------------------------------------------------
4915 func TestRESTSubReqAsn1EncodeFail(t *testing.T) {
4916 CaseBegin("TestRESTSubReqAsn1EncodeFail")
4918 xapp.Logger.Debug("Xapp-frame, v0.8.1 sufficient REST API validation")
4922 //-----------------------------------------------------------------------------
4923 // TestRESTSubReqInsertAndSubDelOk
4926 // +-------+ +---------+ +---------+
4927 // | xapp | | submgr | | e2term |
4928 // +-------+ +---------+ +---------+
4931 // |---------------->| |
4933 // | RESTSubResp | |
4934 // |<----------------| |
4937 // | |------------->|
4940 // | |<-------------|
4942 // |<----------------| |
4945 // | RESTSubDelReq | |
4946 // |---------------->| |
4949 // | |------------->|
4952 // | |<-------------|
4954 // | RESTSubDelResp| |
4955 // |<----------------| |
4957 //-----------------------------------------------------------------------------
4958 func TestRESTSubReqInsertAndSubDelOk(t *testing.T) {
4959 CaseBegin("TestRESTInsertSubReqAndSubDelOk")
4961 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
4962 Counter{cRestSubReqFromXapp, 1},
4963 Counter{cRestSubRespToXapp, 1},
4964 Counter{cSubReqToE2, 1},
4965 Counter{cSubRespFromE2, 1},
4966 Counter{cRestSubNotifToXapp, 1},
4967 Counter{cRestSubDelReqFromXapp, 1},
4968 Counter{cSubDelReqToE2, 1},
4969 Counter{cSubDelRespFromE2, 1},
4970 Counter{cRestSubDelRespToXapp, 1},
4973 const subReqCount int = 1
4975 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
4976 params.SetSubActionTypes("insert")
4979 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
4982 xappConn1.SendRESTSubsDelReq(t, &restSubId)
4984 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
4985 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
4987 // Wait that subs is cleaned
4988 waitSubsCleanup(t, e2SubsId, 10)
4989 mainCtrl.VerifyCounterValues(t)
4990 mainCtrl.VerifyAllClean(t)
4993 //-----------------------------------------------------------------------------
4994 // TestRESTSubReqNokAndSubDelOkWithRestartInMiddle
4997 // +-------+ +---------+ +---------+
4998 // | xapp | | submgr | | e2term |
4999 // +-------+ +---------+ +---------+
5002 // |------------->| |
5004 // | RESTSubResp | |
5005 // |<-------------| |
5007 // | |------------->|
5012 // | Submgr restart |
5016 // | |------------->|
5019 // | |<-------------|
5023 // |<-------------| |
5025 // | RESTSubDelReq| |
5026 // |------------->| |
5028 // |RESTSubDelResp| |
5029 // |<-------------| |
5031 //-----------------------------------------------------------------------------
5032 func TestRESTSubReqNokAndSubDelOkWithRestartInMiddle(t *testing.T) {
5033 CaseBegin("TestRESTSubReqNokAndSubDelOkWithRestartInMiddle")
5035 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
5036 Counter{cRestSubReqFromXapp, 1},
5037 Counter{cRestSubRespToXapp, 1},
5038 Counter{cSubReqToE2, 1},
5039 Counter{cSubDelReqFromXapp, 1},
5040 Counter{cSubDelReqToE2, 1},
5041 Counter{cSubDelRespFromE2, 1},
5042 Counter{cRestSubDelReqFromXapp, 1},
5043 Counter{cRestSubDelRespToXapp, 1},
5046 const subReqCount int = 1
5048 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
5051 mainCtrl.SetResetTestFlag(t, true) // subs.DoNotWaitSubResp will be set TRUE for the subscription
5052 restSubId := xappConn1.SendRESTSubsReq(t, params)
5053 xapp.Logger.Debug("Send REST subscriber request for subscriber : %v", restSubId)
5055 e2termConn1.RecvSubsReq(t)
5057 mainCtrl.SetResetTestFlag(t, false)
5059 mainCtrl.SimulateRestart(t)
5060 xapp.Logger.Debug("mainCtrl.SimulateRestart done")
5062 // Deleletion of uncompleted subscription
5063 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
5064 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
5067 xappConn1.SendRESTSubsDelReq(t, &restSubId)
5069 xappConn1.TestMsgChanEmpty(t)
5070 e2termConn1.TestMsgChanEmpty(t)
5071 mainCtrl.wait_registry_empty(t, 10)
5073 mainCtrl.VerifyCounterValues(t)
5074 mainCtrl.VerifyAllClean(t)
5077 //-----------------------------------------------------------------------------
5078 // TestRESTSubReqAndSubDelOkWithRestartInMiddle
5081 // +-------+ +---------+ +---------+
5082 // | xapp | | submgr | | e2term |
5083 // +-------+ +---------+ +---------+
5086 // |---------------->| |
5088 // | RESTSubResp | |
5089 // |<----------------| |
5091 // | |------------->|
5094 // | |<-------------|
5097 // |<----------------| |
5100 // | Submgr restart |
5102 // | RESTSubDelReq | |
5103 // |---------------->| |
5106 // | |------------->|
5109 // | |<-------------|
5111 // | RESTSubDelResp | |
5112 // |<----------------| |
5114 //-----------------------------------------------------------------------------
5116 func TestRESTSubReqAndSubDelOkWithRestartInMiddle(t *testing.T) {
5117 CaseBegin("TestRESTSubReqAndSubDelOkWithRestartInMiddle")
5119 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
5120 Counter{cRestSubReqFromXapp, 1},
5121 Counter{cRestSubRespToXapp, 1},
5122 Counter{cSubReqToE2, 1},
5123 Counter{cSubRespFromE2, 1},
5124 Counter{cRestSubNotifToXapp, 1},
5125 Counter{cRestSubDelReqFromXapp, 1},
5126 Counter{cSubDelReqToE2, 1},
5127 Counter{cSubDelRespFromE2, 1},
5128 Counter{cRestSubDelRespToXapp, 1},
5131 // Create subscription
5132 var params *teststube2ap.RESTSubsReqParams = nil
5133 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
5134 xapp.Logger.Debug("Send REST subscriber request for subscriber : %v", restSubId)
5136 // Check subscription
5137 queryXappSubscription(t, int64(e2SubsId), "RAN_NAME_1", []string{"localhost:13560"})
5139 mainCtrl.SimulateRestart(t)
5140 xapp.Logger.Debug("mainCtrl.SimulateRestart done")
5142 // ReadE2Subscriptions() for testing is running in own go routine (go mainCtrl.c.ReadE2Subscriptions())
5143 // That needs to be completed before successful subscription query is possible
5144 <-time.After(time.Second * 1)
5146 // Check subscription
5147 queryXappSubscription(t, int64(e2SubsId), "RAN_NAME_1", []string{"localhost:13560"})
5149 // Delete subscription
5150 deleteSubscription(t, xappConn1, e2termConn1, &restSubId)
5152 //Wait that subs is cleaned
5153 waitSubsCleanup(t, e2SubsId, 10)
5155 mainCtrl.VerifyCounterValues(t)
5156 mainCtrl.VerifyAllClean(t)
5159 //-----------------------------------------------------------------------------
5160 // TestRESTSubReqAndSubDelOkSameActionWithRestartsInMiddle
5163 // +-------+ +-------+ +---------+ +---------+
5164 // | xapp2 | | xapp1 | | submgr | | e2term |
5165 // +-------+ +-------+ +---------+ +---------+
5167 // | | RESTSubReq1 | |
5168 // | |---------------->| |
5170 // | | RESTSubResp1 | |
5171 // | |<----------------| |
5174 // | | |------------->|
5176 // | | |<-------------|
5177 // | | RESTNotif1 | |
5178 // | |<----------------| |
5180 // | RESTSubReq2 | |
5181 // |------------------------------>| |
5183 // | RESTSubResp2 | |
5184 // |<------------------------------| |
5186 // | | RESTNotif2 | |
5187 // |<------------------------------| |
5189 // | | Submgr restart |
5191 // | | RESTSubDelReq1 | |
5192 // | |---------------->| |
5194 // | | RESTSubDelResp1 | |
5195 // | |<----------------| |
5197 // | | Submgr restart |
5199 // | RESTSubDelReq2 | |
5200 // |------------------------------>| |
5202 // | RESTSubDelResp2 | |
5203 // |<------------------------------| |
5205 // | | | SubDelReq2 |
5206 // | | |------------->|
5208 // | | | SubDelResp2 |
5209 // | | |<-------------|
5212 //-----------------------------------------------------------------------------
5213 func TestRESTSubReqAndSubDelOkSameActionWithRestartsInMiddle(t *testing.T) {
5214 CaseBegin("TestRESTSubReqAndSubDelOkSameActionWithRestartsInMiddle")
5216 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
5217 Counter{cRestSubReqFromXapp, 2},
5218 Counter{cRestSubRespToXapp, 2},
5219 Counter{cSubReqToE2, 1},
5220 Counter{cSubRespFromE2, 1},
5221 Counter{cRestSubNotifToXapp, 2},
5222 Counter{cMergedSubscriptions, 1},
5223 Counter{cUnmergedSubscriptions, 1},
5224 Counter{cRestSubDelReqFromXapp, 2},
5225 Counter{cSubDelReqToE2, 1},
5226 Counter{cSubDelRespFromE2, 1},
5227 Counter{cRestSubDelRespToXapp, 2},
5230 // Create subscription 1
5231 var params *teststube2ap.RESTSubsReqParams = nil
5232 restSubId1, e2SubsId1 := createSubscription(t, xappConn1, e2termConn1, params)
5233 xapp.Logger.Debug("Send REST subscriber request for subscriber 1 : %v", restSubId1)
5235 // Create subscription 2 with same action
5236 params = xappConn2.GetRESTSubsReqReportParams(subReqCount)
5237 params.SetMeid("RAN_NAME_1")
5238 xapp.Subscription.SetResponseCB(xappConn2.SubscriptionRespHandler)
5239 xappConn2.ExpectAnyNotification(t)
5240 restSubId2 := xappConn2.SendRESTSubsReq(t, params)
5241 xapp.Logger.Debug("Send REST subscriber request for subscriberId : %v", restSubId2)
5242 e2SubsId2 := xappConn2.WaitAnyRESTNotification(t)
5243 xapp.Logger.Debug("REST notification received e2SubsId=%v", e2SubsId2)
5245 queryXappSubscription(t, int64(e2SubsId1), "RAN_NAME_1", []string{"localhost:13560", "localhost:13660"})
5247 mainCtrl.SimulateRestart(t)
5248 xapp.Logger.Debug("mainCtrl.SimulateRestart done 1")
5250 // ReadE2Subscriptions() for testing is running in own go routine (go mainCtrl.c.ReadE2Subscriptions())
5251 // That needs to be completed before successful subscription delete is possible
5252 <-time.After(time.Second * 1)
5254 // Delete subscription 1, and wait until it has removed the first endpoint
5255 subepcnt := mainCtrl.get_subs_entrypoint_cnt(t, e2SubsId1)
5256 xappConn1.SendRESTSubsDelReq(t, &restSubId1)
5257 mainCtrl.wait_subs_entrypoint_cnt_change(t, e2SubsId1, subepcnt, 10)
5259 // Above wait does not work correctly anymore as this delay makes this test case work
5260 //<-time.After(time.Second * 1)
5262 mainCtrl.SimulateRestart(t)
5263 xapp.Logger.Debug("mainCtrl.SimulateRestart done 2")
5265 // ReadE2Subscriptions() for testing is running in own go routine (go mainCtrl.c.ReadE2Subscriptions())
5266 // That needs to be completed before successful subscription query is possible
5267 <-time.After(time.Second * 1)
5269 queryXappSubscription(t, int64(e2SubsId1), "RAN_NAME_1", []string{"localhost:13660"})
5271 // Delete subscription 2
5272 deleteXapp2Subscription(t, &restSubId2)
5274 //Wait that subs is cleaned
5275 waitSubsCleanup(t, e2SubsId2, 10)
5277 mainCtrl.VerifyCounterValues(t)
5278 mainCtrl.VerifyAllClean(t)
5281 //-----------------------------------------------------------------------------
5282 // TestRESTReportSubReqAndSubDelOk
5285 // +-------+ +---------+ +---------+
5286 // | xapp | | submgr | | e2term |
5287 // +-------+ +---------+ +---------+
5290 // |---------------->| |
5292 // | RESTSubResp | |
5293 // |<----------------| |
5296 // | |------------->|
5299 // | |<-------------|
5301 // |<----------------| |
5303 // | |------------->|
5306 // | |<-------------|
5308 // |<----------------| |
5312 // | RESTSubDelReq | |
5313 // |---------------->| |
5315 // | RESTSubDelResp| |
5316 // |<----------------| |
5318 // | |------------->|
5321 // | |<-------------|
5324 //-----------------------------------------------------------------------------
5326 func TestRESTReportSubReqAndSubDelOk(t *testing.T) {
5327 CaseBegin("TestRESTReportSubReqAndSubDelOk")
5328 const subReqCount int = 1
5330 RESTReportSubReqAndSubDelOk(t, subReqCount, testIndex)
5333 func RESTReportSubReqAndSubDelOk(t *testing.T, subReqCount int, testIndex int) {
5334 xapp.Logger.Debug("TEST: TestRESTReportSubReqAndSubDelOk with testIndex %v", testIndex)
5336 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
5337 Counter{cRestSubReqFromXapp, 1},
5338 Counter{cRestSubRespToXapp, 1},
5339 Counter{cSubReqToE2, uint64(subReqCount)},
5340 Counter{cSubRespFromE2, uint64(subReqCount)},
5341 Counter{cRestSubNotifToXapp, 1},
5342 Counter{cRestSubDelReqFromXapp, 1},
5343 Counter{cRestSubDelRespToXapp, 1},
5344 Counter{cSubDelReqToE2, uint64(subReqCount)},
5345 Counter{cSubDelRespFromE2, uint64(subReqCount)},
5349 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
5350 restSubId := xappConn1.SendRESTSubsReq(t, params)
5352 var e2SubsId []uint32
5353 for i := 0; i < subReqCount; i++ {
5354 crereq, cremsg := e2termConn1.RecvSubsReq(t)
5355 xappConn1.ExpectRESTNotification(t, restSubId)
5357 e2termConn1.SendSubsResp(t, crereq, cremsg)
5358 instanceId := xappConn1.WaitRESTNotification(t, restSubId)
5359 xapp.Logger.Debug("TEST: REST notification received e2SubsId=%v", instanceId)
5360 e2SubsId = append(e2SubsId, instanceId)
5361 resp, _ := xapp.Subscription.QuerySubscriptions()
5362 assert.Equal(t, resp[i].SubscriptionID, (int64)(instanceId))
5363 assert.Equal(t, resp[i].Meid, "RAN_NAME_1")
5364 assert.Equal(t, resp[i].ClientEndpoint, []string{"localhost:13560"})
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)
5381 xappConn1.TestMsgChanEmpty(t)
5382 e2termConn1.TestMsgChanEmpty(t)
5383 mainCtrl.wait_registry_empty(t, 10)
5384 mainCtrl.VerifyAllClean(t)
5385 mainCtrl.VerifyCounterValues(t)
5389 func TestRESTPolicySubReqAndSubDelOk(t *testing.T) { //Was in comments already. Next case is not run!
5390 CaseBegin("TestRESTPolicySubReqAndSubDelOk")
5394 RESTPolicySubReqAndSubDelOk(t, subReqCount, testIndex)
5398 RESTPolicySubReqAndSubDelOk(t, subReqCount, testIndex)
5401 func RESTPolicySubReqAndSubDelOk(t *testing.T, subReqCount int, testIndex int) {
5402 xapp.Logger.Debug("TEST: TestRESTPolicySubReqAndSubDelOk with testIndex %v", testIndex)
5404 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
5405 Counter{cRestSubReqFromXapp, 1},
5406 Counter{cRestSubRespToXapp, 1},
5407 Counter{cSubReqToE2, uint64(subReqCount)},
5408 Counter{cSubRespFromE2, uint64(subReqCount)},
5409 Counter{cRestSubNotifToXapp, 1},
5410 Counter{cRestSubDelReqFromXapp, 1},
5411 Counter{cRestSubDelRespToXapp, 1},
5412 Counter{cSubDelReqToE2, uint64(subReqCount)},
5413 Counter{cSubDelRespFromE2, uint64(subReqCount)},
5417 params := xappConn1.GetRESTSubsReqPolicyParams(subReqCount)
5418 restSubId := xappConn1.SendRESTSubsReq(t, params)
5420 var e2SubsId []uint32
5421 for i := 0; i < subReqCount; i++ {
5422 crereq, cremsg := e2termConn1.RecvSubsReq(t)
5423 xappConn1.ExpectRESTNotification(t, restSubId)
5424 e2termConn1.SendSubsResp(t, crereq, cremsg)
5425 instanceId := xappConn1.WaitRESTNotification(t, restSubId)
5426 xapp.Logger.Debug("TEST: REST notification received e2SubsId=%v", instanceId)
5427 e2SubsId = append(e2SubsId, instanceId)
5431 xappConn1.SendRESTSubsDelReq(t, &restSubId)
5433 for i := 0; i < subReqCount; i++ {
5434 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
5435 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
5438 // Wait that subs is cleaned
5439 for i := 0; i < subReqCount; i++ {
5440 mainCtrl.wait_subs_clean(t, e2SubsId[i], 10)
5442 xappConn1.TestMsgChanEmpty(t)
5443 e2termConn1.TestMsgChanEmpty(t)
5444 mainCtrl.wait_registry_empty(t, 10)
5445 mainCtrl.VerifyAllClean(t)
5446 mainCtrl.VerifyCounterValues(t)
5449 func TestRESTTwoPolicySubReqAndSubDelOk(t *testing.T) {
5451 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
5452 Counter{cRestSubReqFromXapp, 1},
5453 Counter{cRestSubRespToXapp, 1},
5454 Counter{cSubReqToE2, 2},
5455 Counter{cSubRespFromE2, 2},
5456 Counter{cRestSubNotifToXapp, 2},
5457 Counter{cRestSubDelReqFromXapp, 1},
5458 Counter{cSubDelReqToE2, 2},
5459 Counter{cSubDelRespFromE2, 2},
5460 Counter{cRestSubDelRespToXapp, 1},
5463 const subReqCount int = 2
5466 params := xappConn1.GetRESTSubsReqPolicyParams(subReqCount)
5467 restSubId := xappConn1.SendRESTSubsReq(t, params)
5468 e2SubsIds := sendAndReceiveMultipleE2SubReqs(t, subReqCount, xappConn1, e2termConn1, restSubId)
5470 assert.Equal(t, len(e2SubsIds), 2)
5473 xappConn1.SendRESTSubsDelReq(t, &restSubId)
5474 sendAndReceiveMultipleE2DelReqs(t, e2SubsIds, e2termConn1)
5476 xappConn1.TestMsgChanEmpty(t)
5477 e2termConn1.TestMsgChanEmpty(t)
5478 mainCtrl.wait_registry_empty(t, 10)
5480 mainCtrl.VerifyCounterValues(t)
5481 mainCtrl.VerifyAllClean(t)
5483 func TestRESTPolicySubReqAndSubDelOkFullAmount(t *testing.T) {
5485 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
5486 Counter{cRestSubReqFromXapp, 1},
5487 Counter{cRestSubRespToXapp, 1},
5488 Counter{cSubReqToE2, 19},
5489 Counter{cSubRespFromE2, 19},
5490 Counter{cRestSubNotifToXapp, 19},
5491 Counter{cRestSubDelReqFromXapp, 1},
5492 Counter{cSubDelReqToE2, 19},
5493 Counter{cSubDelRespFromE2, 19},
5494 Counter{cRestSubDelRespToXapp, 1},
5497 const subReqCount int = 19
5499 params := xappConn1.GetRESTSubsReqPolicyParams(subReqCount)
5500 restSubId := xappConn1.SendRESTSubsReq(t, params)
5501 e2SubsIds := sendAndReceiveMultipleE2SubReqs(t, subReqCount, xappConn1, e2termConn1, restSubId)
5503 assert.Equal(t, len(e2SubsIds), 19)
5505 xappConn1.SendRESTSubsDelReq(t, &restSubId)
5506 sendAndReceiveMultipleE2DelReqs(t, e2SubsIds, e2termConn1)
5508 xappConn1.TestMsgChanEmpty(t)
5509 e2termConn1.TestMsgChanEmpty(t)
5510 mainCtrl.wait_registry_empty(t, 10)
5512 mainCtrl.VerifyCounterValues(t)
5513 mainCtrl.VerifyAllClean(t)
5516 func TestRESTTwoReportSubReqAndSubDelOk(t *testing.T) {
5520 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
5521 Counter{cRestSubReqFromXapp, 1},
5522 Counter{cRestSubRespToXapp, 1},
5523 Counter{cSubReqToE2, uint64(subReqCount)},
5524 Counter{cSubRespFromE2, uint64(subReqCount)},
5525 Counter{cRestSubNotifToXapp, uint64(subReqCount)},
5526 Counter{cRestSubDelReqFromXapp, 1},
5527 Counter{cSubDelReqToE2, uint64(subReqCount)},
5528 Counter{cSubDelRespFromE2, uint64(subReqCount)},
5529 Counter{cRestSubDelRespToXapp, 1},
5533 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
5534 restSubId := xappConn1.SendRESTSubsReq(t, params)
5535 e2SubsIds := sendAndReceiveMultipleE2SubReqs(t, subReqCount, xappConn1, e2termConn1, restSubId)
5537 assert.Equal(t, len(e2SubsIds), subReqCount)
5540 xappConn1.SendRESTSubsDelReq(t, &restSubId)
5541 sendAndReceiveMultipleE2DelReqs(t, e2SubsIds, e2termConn1)
5543 xappConn1.TestMsgChanEmpty(t)
5544 e2termConn1.TestMsgChanEmpty(t)
5545 mainCtrl.wait_registry_empty(t, 10)
5547 mainCtrl.VerifyCounterValues(t)
5548 mainCtrl.VerifyAllClean(t)
5551 func TestRESTTwoReportSubReqAndSubDelOkNoActParams(t *testing.T) {
5555 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
5556 Counter{cRestSubReqFromXapp, 1},
5557 Counter{cRestSubRespToXapp, 1},
5558 Counter{cSubReqToE2, uint64(subReqCount)},
5559 Counter{cSubRespFromE2, uint64(subReqCount)},
5560 Counter{cRestSubNotifToXapp, uint64(subReqCount)},
5561 Counter{cRestSubDelReqFromXapp, 1},
5562 Counter{cSubDelReqToE2, uint64(subReqCount)},
5563 Counter{cSubDelRespFromE2, uint64(subReqCount)},
5564 Counter{cRestSubDelRespToXapp, 1},
5568 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
5569 restSubId := xappConn1.SendRESTSubsReq(t, params)
5570 e2SubsIds := sendAndReceiveMultipleE2SubReqs(t, subReqCount, xappConn1, e2termConn1, restSubId)
5572 assert.Equal(t, len(e2SubsIds), subReqCount)
5575 xappConn1.SendRESTSubsDelReq(t, &restSubId)
5576 sendAndReceiveMultipleE2DelReqs(t, e2SubsIds, e2termConn1)
5578 xappConn1.TestMsgChanEmpty(t)
5579 e2termConn1.TestMsgChanEmpty(t)
5580 mainCtrl.wait_registry_empty(t, 10)
5582 mainCtrl.VerifyCounterValues(t)
5583 mainCtrl.VerifyAllClean(t)
5586 func TestRESTFullAmountReportSubReqAndSubDelOk(t *testing.T) {
5590 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
5591 Counter{cRestSubReqFromXapp, 1},
5592 Counter{cRestSubRespToXapp, 1},
5593 Counter{cSubReqToE2, uint64(subReqCount)},
5594 Counter{cSubRespFromE2, uint64(subReqCount)},
5595 Counter{cRestSubNotifToXapp, uint64(subReqCount)},
5596 Counter{cRestSubDelReqFromXapp, 1},
5597 Counter{cSubDelReqToE2, uint64(subReqCount)},
5598 Counter{cSubDelRespFromE2, uint64(subReqCount)},
5599 Counter{cRestSubDelRespToXapp, 1},
5603 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
5604 restSubId := xappConn1.SendRESTSubsReq(t, params)
5605 e2SubsIds := sendAndReceiveMultipleE2SubReqs(t, subReqCount, xappConn1, e2termConn1, restSubId)
5607 assert.Equal(t, len(e2SubsIds), subReqCount)
5610 xappConn1.SendRESTSubsDelReq(t, &restSubId)
5611 sendAndReceiveMultipleE2DelReqs(t, e2SubsIds, e2termConn1)
5613 xappConn1.TestMsgChanEmpty(t)
5614 e2termConn1.TestMsgChanEmpty(t)
5615 mainCtrl.wait_registry_empty(t, 10)
5617 mainCtrl.VerifyCounterValues(t)
5618 mainCtrl.VerifyAllClean(t)
5621 func TestRESTSubReqReportSameActionDiffEventTriggerDefinitionLen(t *testing.T) {
5622 CaseBegin("TestRESTSubReqReportSameActionDiffEventTriggerDefinitionLen")
5624 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
5625 Counter{cRestSubReqFromXapp, 2},
5626 Counter{cRestSubRespToXapp, 2},
5627 Counter{cSubReqToE2, 2},
5628 Counter{cSubRespFromE2, 2},
5629 Counter{cRestSubNotifToXapp, 2},
5630 Counter{cRestSubDelReqFromXapp, 2},
5631 Counter{cSubDelReqToE2, 2},
5632 Counter{cSubDelRespFromE2, 2},
5633 Counter{cRestSubDelRespToXapp, 2},
5637 var params *teststube2ap.RESTSubsReqParams = nil
5640 restSubId1, e2SubsId1 := createSubscription(t, xappConn1, e2termConn1, params)
5641 xapp.Logger.Debug("Send REST subscriber request for subscriberId : %v", restSubId1)
5643 queryXappSubscription(t, int64(e2SubsId1), "RAN_NAME_1", []string{"localhost:13560"})
5646 params = xappConn2.GetRESTSubsReqReportParams(subReqCount)
5647 params.SetMeid("RAN_NAME_1")
5648 eventTriggerDefinition := []int64{1234, 1}
5649 params.SetSubEventTriggerDefinition(eventTriggerDefinition)
5651 restSubId2 := xappConn2.SendRESTSubsReq(t, params)
5652 xapp.Logger.Debug("Send REST subscriber request for subscriberId : %v", restSubId2)
5653 crereq, cremsg := e2termConn1.RecvSubsReq(t)
5654 xappConn2.ExpectRESTNotification(t, restSubId2)
5655 e2termConn1.SendSubsResp(t, crereq, cremsg)
5656 e2SubsId2 := xappConn2.WaitRESTNotification(t, restSubId2)
5658 deleteXapp1Subscription(t, &restSubId1)
5659 deleteXapp2Subscription(t, &restSubId2)
5661 waitSubsCleanup(t, e2SubsId1, 10)
5662 waitSubsCleanup(t, e2SubsId2, 10)
5664 mainCtrl.VerifyCounterValues(t)
5665 mainCtrl.VerifyAllClean(t)
5668 func TestRESTSubReqReportSameActionDiffActionListLen(t *testing.T) {
5669 CaseBegin("TestRESTSubReqReportSameActionDiffActionListLen")
5671 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
5672 Counter{cRestSubReqFromXapp, 2},
5673 Counter{cRestSubRespToXapp, 2},
5674 Counter{cSubReqToE2, 2},
5675 Counter{cSubRespFromE2, 2},
5676 Counter{cRestSubNotifToXapp, 2},
5677 Counter{cRestSubDelReqFromXapp, 2},
5678 Counter{cSubDelReqToE2, 2},
5679 Counter{cSubDelRespFromE2, 2},
5680 Counter{cRestSubDelRespToXapp, 2},
5684 var params *teststube2ap.RESTSubsReqParams = nil
5687 restSubId1, e2SubsId1 := createSubscription(t, xappConn1, e2termConn1, params)
5688 xapp.Logger.Debug("Send REST subscriber request for subscriberId : %v", restSubId1)
5690 queryXappSubscription(t, int64(e2SubsId1), "RAN_NAME_1", []string{"localhost:13560"})
5693 params = xappConn2.GetRESTSubsReqReportParams(subReqCount)
5694 params.SetMeid("RAN_NAME_1")
5696 actionId := int64(1)
5697 actionType := "report"
5698 actionDefinition := []int64{5678, 1}
5699 subsequestActionType := "continue"
5700 timeToWait := "w10ms"
5701 params.AppendActionToActionToBeSetupList(actionId, actionType, actionDefinition, subsequestActionType, timeToWait)
5703 restSubId2 := xappConn2.SendRESTSubsReq(t, params)
5704 xapp.Logger.Debug("Send REST subscriber request for subscriberId : %v", restSubId2)
5705 crereq, cremsg := e2termConn1.RecvSubsReq(t)
5706 xappConn2.ExpectRESTNotification(t, restSubId2)
5707 e2termConn1.SendSubsResp(t, crereq, cremsg)
5708 e2SubsId2 := xappConn2.WaitRESTNotification(t, restSubId2)
5710 deleteXapp1Subscription(t, &restSubId1)
5711 deleteXapp2Subscription(t, &restSubId2)
5713 waitSubsCleanup(t, e2SubsId1, 10)
5714 waitSubsCleanup(t, e2SubsId2, 10)
5716 mainCtrl.VerifyCounterValues(t)
5717 mainCtrl.VerifyAllClean(t)
5720 func TestRESTSubReqReportSameActionDiffActionID(t *testing.T) {
5721 CaseBegin("TestRESTSubReqReportSameActionDiffActionID")
5723 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
5724 Counter{cRestSubReqFromXapp, 2},
5725 Counter{cRestSubRespToXapp, 2},
5726 Counter{cSubReqToE2, 2},
5727 Counter{cSubRespFromE2, 2},
5728 Counter{cRestSubNotifToXapp, 2},
5729 Counter{cRestSubDelReqFromXapp, 2},
5730 Counter{cSubDelReqToE2, 2},
5731 Counter{cSubDelRespFromE2, 2},
5732 Counter{cRestSubDelRespToXapp, 2},
5736 var params *teststube2ap.RESTSubsReqParams = nil
5739 restSubId1, e2SubsId1 := createSubscription(t, xappConn1, e2termConn1, params)
5740 xapp.Logger.Debug("Send REST subscriber request for subscriberId : %v", restSubId1)
5742 queryXappSubscription(t, int64(e2SubsId1), "RAN_NAME_1", []string{"localhost:13560"})
5745 params = xappConn2.GetRESTSubsReqReportParams(subReqCount)
5746 params.SetMeid("RAN_NAME_1")
5747 params.SetSubActionIDs(int64(2))
5749 restSubId2 := xappConn2.SendRESTSubsReq(t, params)
5750 xapp.Logger.Debug("Send REST subscriber request for subscriberId : %v", restSubId2)
5751 crereq, cremsg := e2termConn1.RecvSubsReq(t)
5752 xappConn2.ExpectRESTNotification(t, restSubId2)
5753 e2termConn1.SendSubsResp(t, crereq, cremsg)
5754 e2SubsId2 := xappConn2.WaitRESTNotification(t, restSubId2)
5756 deleteXapp1Subscription(t, &restSubId1)
5757 deleteXapp2Subscription(t, &restSubId2)
5759 waitSubsCleanup(t, e2SubsId1, 10)
5760 waitSubsCleanup(t, e2SubsId2, 10)
5762 mainCtrl.VerifyCounterValues(t)
5763 mainCtrl.VerifyAllClean(t)
5766 func TestRESTSubReqDiffActionType(t *testing.T) {
5767 CaseBegin("TestRESTSubReqDiffActionType")
5769 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
5770 Counter{cRestSubReqFromXapp, 2},
5771 Counter{cRestSubRespToXapp, 2},
5772 Counter{cSubReqToE2, 2},
5773 Counter{cSubRespFromE2, 2},
5774 Counter{cRestSubNotifToXapp, 2},
5775 Counter{cRestSubDelReqFromXapp, 2},
5776 Counter{cSubDelReqToE2, 2},
5777 Counter{cSubDelRespFromE2, 2},
5778 Counter{cRestSubDelRespToXapp, 2},
5781 const e2Timeout int64 = 2
5782 const e2RetryCount int64 = 2
5783 const routingNeeded bool = true
5786 params := xappConn1.GetRESTSubsReqPolicyParams(subReqCount)
5787 params.SetSubscriptionDirectives(e2Timeout, e2RetryCount, routingNeeded)
5790 restSubId1, e2SubsId1 := createSubscription(t, xappConn1, e2termConn1, params)
5791 xapp.Logger.Debug("Send REST subscriber request for subscriberId : %v", restSubId1)
5793 queryXappSubscription(t, int64(e2SubsId1), "RAN_NAME_1", []string{"localhost:13560"})
5796 params = xappConn2.GetRESTSubsReqReportParams(subReqCount)
5797 params.SetSubscriptionDirectives(e2Timeout, e2RetryCount, routingNeeded)
5798 params.SetMeid("RAN_NAME_1")
5800 restSubId2 := xappConn2.SendRESTSubsReq(t, params)
5801 xapp.Logger.Debug("Send REST subscriber request for subscriberId : %v", restSubId2)
5802 crereq, cremsg := e2termConn1.RecvSubsReq(t)
5803 xappConn2.ExpectRESTNotification(t, restSubId2)
5804 e2termConn1.SendSubsResp(t, crereq, cremsg)
5805 e2SubsId2 := xappConn2.WaitRESTNotification(t, restSubId2)
5807 deleteXapp1Subscription(t, &restSubId1)
5808 deleteXapp2Subscription(t, &restSubId2)
5810 waitSubsCleanup(t, e2SubsId1, 10)
5811 waitSubsCleanup(t, e2SubsId2, 10)
5813 mainCtrl.VerifyCounterValues(t)
5814 mainCtrl.VerifyAllClean(t)
5817 func TestRESTSubReqPolicyAndSubDelOkSameAction(t *testing.T) {
5818 CaseBegin("TestRESTSubReqPolicyAndSubDelOkSameAction")
5820 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
5821 Counter{cRestSubReqFromXapp, 2},
5822 Counter{cRestSubRespToXapp, 2},
5823 Counter{cSubReqToE2, 2},
5824 Counter{cSubRespFromE2, 2},
5825 Counter{cRestSubNotifToXapp, 2},
5826 Counter{cRestSubDelReqFromXapp, 2},
5827 Counter{cSubDelReqToE2, 2},
5828 Counter{cSubDelRespFromE2, 2},
5829 Counter{cRestSubDelRespToXapp, 2},
5832 const e2Timeout int64 = 2
5833 const e2RetryCount int64 = 2
5834 const routingNeeded bool = true
5837 params := xappConn1.GetRESTSubsReqPolicyParams(subReqCount)
5838 params.SetSubscriptionDirectives(e2Timeout, e2RetryCount, routingNeeded)
5841 restSubId1, e2SubsId1 := createSubscription(t, xappConn1, e2termConn1, params)
5842 xapp.Logger.Debug("Send REST subscriber request for subscriberId : %v", restSubId1)
5844 queryXappSubscription(t, int64(e2SubsId1), "RAN_NAME_1", []string{"localhost:13560"})
5847 params = xappConn2.GetRESTSubsReqPolicyParams(subReqCount)
5848 params.SetSubscriptionDirectives(e2Timeout, e2RetryCount, routingNeeded)
5849 params.SetMeid("RAN_NAME_1")
5851 restSubId2 := xappConn2.SendRESTSubsReq(t, params)
5852 xapp.Logger.Debug("Send REST subscriber request for subscriberId : %v", restSubId2)
5853 crereq, cremsg := e2termConn1.RecvSubsReq(t)
5854 xappConn2.ExpectRESTNotification(t, restSubId2)
5855 e2termConn1.SendSubsResp(t, crereq, cremsg)
5856 e2SubsId2 := xappConn2.WaitRESTNotification(t, restSubId2)
5858 deleteXapp1Subscription(t, &restSubId1)
5859 deleteXapp2Subscription(t, &restSubId2)
5861 waitSubsCleanup(t, e2SubsId1, 10)
5862 waitSubsCleanup(t, e2SubsId2, 10)
5864 mainCtrl.VerifyCounterValues(t)
5865 mainCtrl.VerifyAllClean(t)
5868 func TestRESTSubReqReportSameActionDiffActionDefinitionLen(t *testing.T) {
5869 CaseBegin("TestRESTSubReqReportSameActionDiffActionDefinitionLen")
5871 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
5872 Counter{cRestSubReqFromXapp, 2},
5873 Counter{cRestSubRespToXapp, 2},
5874 Counter{cSubReqToE2, 2},
5875 Counter{cSubRespFromE2, 2},
5876 Counter{cRestSubNotifToXapp, 2},
5877 Counter{cRestSubDelReqFromXapp, 2},
5878 Counter{cSubDelReqToE2, 2},
5879 Counter{cSubDelRespFromE2, 2},
5880 Counter{cRestSubDelRespToXapp, 2},
5884 var params *teststube2ap.RESTSubsReqParams = nil
5887 restSubId1, e2SubsId1 := createSubscription(t, xappConn1, e2termConn1, params)
5888 xapp.Logger.Debug("Send REST subscriber request for subscriberId : %v", restSubId1)
5890 queryXappSubscription(t, int64(e2SubsId1), "RAN_NAME_1", []string{"localhost:13560"})
5893 params = xappConn2.GetRESTSubsReqReportParams(subReqCount)
5894 params.SetMeid("RAN_NAME_1")
5895 actionDefinition := []int64{5678, 1}
5896 params.SetSubActionDefinition(actionDefinition)
5898 restSubId2 := xappConn2.SendRESTSubsReq(t, params)
5899 xapp.Logger.Debug("Send REST subscriber request for subscriberId : %v", restSubId2)
5900 crereq, cremsg := e2termConn1.RecvSubsReq(t)
5901 xappConn2.ExpectRESTNotification(t, restSubId2)
5902 e2termConn1.SendSubsResp(t, crereq, cremsg)
5903 e2SubsId2 := xappConn2.WaitRESTNotification(t, restSubId2)
5905 deleteXapp1Subscription(t, &restSubId1)
5906 deleteXapp2Subscription(t, &restSubId2)
5908 waitSubsCleanup(t, e2SubsId1, 10)
5909 waitSubsCleanup(t, e2SubsId2, 10)
5911 mainCtrl.VerifyCounterValues(t)
5912 mainCtrl.VerifyAllClean(t)
5915 func TestRESTSubReqReportSameActionDiffActionDefinitionContents(t *testing.T) {
5916 CaseBegin("TestRESTSubReqReportSameActionDiffActionDefinitionContents")
5918 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
5919 Counter{cRestSubReqFromXapp, 2},
5920 Counter{cRestSubRespToXapp, 2},
5921 Counter{cSubReqToE2, 2},
5922 Counter{cSubRespFromE2, 2},
5923 Counter{cRestSubNotifToXapp, 2},
5924 Counter{cRestSubDelReqFromXapp, 2},
5925 Counter{cSubDelReqToE2, 2},
5926 Counter{cSubDelRespFromE2, 2},
5927 Counter{cRestSubDelRespToXapp, 2},
5931 var params *teststube2ap.RESTSubsReqParams = nil
5934 restSubId1, e2SubsId1 := createSubscription(t, xappConn1, e2termConn1, params)
5935 xapp.Logger.Debug("Send REST subscriber request for subscriberId : %v", restSubId1)
5937 queryXappSubscription(t, int64(e2SubsId1), "RAN_NAME_1", []string{"localhost:13560"})
5940 params = xappConn2.GetRESTSubsReqReportParams(subReqCount)
5941 params.SetMeid("RAN_NAME_1")
5942 actionDefinition := []int64{56782}
5943 params.SetSubActionDefinition(actionDefinition)
5945 restSubId2 := xappConn2.SendRESTSubsReq(t, params)
5946 xapp.Logger.Debug("Send REST subscriber request for subscriberId : %v", restSubId2)
5947 crereq, cremsg := e2termConn1.RecvSubsReq(t)
5948 xappConn2.ExpectRESTNotification(t, restSubId2)
5949 e2termConn1.SendSubsResp(t, crereq, cremsg)
5950 e2SubsId2 := xappConn2.WaitRESTNotification(t, restSubId2)
5952 deleteXapp1Subscription(t, &restSubId1)
5953 deleteXapp2Subscription(t, &restSubId2)
5955 waitSubsCleanup(t, e2SubsId1, 10)
5956 waitSubsCleanup(t, e2SubsId2, 10)
5958 mainCtrl.VerifyCounterValues(t)
5959 mainCtrl.VerifyAllClean(t)
5962 func TestRESTSubReqReportSameActionDiffSubsAction(t *testing.T) {
5963 CaseBegin("TestRESTSubReqReportSameActionDiffSubsAction")
5965 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
5966 Counter{cRestSubReqFromXapp, 2},
5967 Counter{cRestSubRespToXapp, 2},
5968 Counter{cSubReqToE2, 2},
5969 Counter{cSubRespFromE2, 2},
5970 Counter{cRestSubNotifToXapp, 2},
5971 Counter{cRestSubDelReqFromXapp, 2},
5972 Counter{cSubDelReqToE2, 2},
5973 Counter{cSubDelRespFromE2, 2},
5974 Counter{cRestSubDelRespToXapp, 2},
5978 var params *teststube2ap.RESTSubsReqParams = nil
5981 restSubId1, e2SubsId1 := createSubscription(t, xappConn1, e2termConn1, params)
5982 xapp.Logger.Debug("Send REST subscriber request for subscriberId : %v", restSubId1)
5984 queryXappSubscription(t, int64(e2SubsId1), "RAN_NAME_1", []string{"localhost:13560"})
5987 params = xappConn2.GetRESTSubsReqReportParams(subReqCount)
5988 params.SetMeid("RAN_NAME_1")
5989 params.SetTimeToWait("w200ms")
5990 restSubId2 := xappConn2.SendRESTSubsReq(t, params)
5991 xapp.Logger.Debug("Send REST subscriber request for subscriberId : %v", restSubId2)
5992 crereq, cremsg := e2termConn1.RecvSubsReq(t)
5993 xappConn2.ExpectRESTNotification(t, restSubId2)
5994 e2termConn1.SendSubsResp(t, crereq, cremsg)
5995 e2SubsId2 := xappConn2.WaitRESTNotification(t, restSubId2)
5997 deleteXapp1Subscription(t, &restSubId1)
5998 deleteXapp2Subscription(t, &restSubId2)
6000 waitSubsCleanup(t, e2SubsId1, 10)
6001 waitSubsCleanup(t, e2SubsId2, 10)
6003 mainCtrl.VerifyCounterValues(t)
6004 mainCtrl.VerifyAllClean(t)
6007 //-----------------------------------------------------------------------------
6008 // TestRESTUnpackSubscriptionResponseDecodeFail
6011 // +-------+ +---------+ +---------+
6012 // | xapp | | submgr | | e2term |
6013 // +-------+ +---------+ +---------+
6016 // |---------------->| |
6018 // | RESTSubResp | |
6019 // |<----------------| |
6022 // | |------------->|
6024 // | | SubResp | ASN.1 decode fails
6025 // | |<-------------| Decode failed. More data needed. This will result timer expiry and resending
6028 // | |------------->|
6030 // | | SubFail | Duplicated action
6031 // | |<-------------|
6032 // | RESTNotif (fail)| |
6033 // |<----------------| |
6035 // | [SUBS DELETE] |
6038 //-----------------------------------------------------------------------------
6040 func TestRESTUnpackSubscriptionResponseDecodeFail(t *testing.T) {
6041 xapp.Logger.Debug("TEST: TestRESTUnpackSubscriptionResponseDecodeFail")
6043 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
6044 Counter{cRestSubReqFromXapp, 1},
6045 Counter{cRestSubRespToXapp, 1},
6046 Counter{cSubReqToE2, 1},
6047 Counter{cSubReqTimerExpiry, 1},
6048 Counter{cSubReReqToE2, 1},
6049 Counter{cSubRespFromE2, 1},
6050 Counter{cSubFailFromE2, 1},
6051 Counter{cRestSubFailNotifToXapp, 1},
6052 Counter{cRestSubDelReqFromXapp, 1},
6053 Counter{cRestSubDelRespToXapp, 1},
6056 const subReqCount int = 1
6059 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
6060 restSubId := xappConn1.SendRESTSubsReq(t, params)
6062 crereq, cremsg := e2termConn1.RecvSubsReq(t)
6063 // Decode of this response fails which will result resending original request
6064 e2termConn1.SendInvalidE2Asn1Resp(t, cremsg, xapp.RIC_SUB_RESP)
6066 _, cremsg = e2termConn1.RecvSubsReq(t)
6068 xappConn1.ExpectRESTNotificationNok(t, restSubId, "allFail")
6070 // Subscription already created in E2 Node.
6071 fparams := &teststube2ap.E2StubSubsFailParams{}
6073 fparams.SetCauseVal(0, 1, 3) // CauseRIC / duplicate-action
6074 e2termConn1.SendSubsFail(t, fparams, cremsg)
6076 instanceId := xappConn1.WaitRESTNotification(t, restSubId)
6077 xapp.Logger.Debug("TEST: REST notification received e2SubsId=%v", instanceId)
6079 xappConn1.SendRESTSubsDelReq(t, &restSubId)
6081 // Wait that subs is cleaned
6082 mainCtrl.wait_subs_clean(t, crereq.RequestId.InstanceId, 10)
6084 xappConn1.TestMsgChanEmpty(t)
6085 e2termConn1.TestMsgChanEmpty(t)
6086 mainCtrl.wait_registry_empty(t, 10)
6087 mainCtrl.VerifyAllClean(t)
6088 mainCtrl.VerifyCounterValues(t)
6091 //-----------------------------------------------------------------------------
6092 // TestRESTUnpackSubscriptionResponseUnknownInstanceId
6095 // +-------+ +---------+ +---------+
6096 // | xapp | | submgr | | e2term |
6097 // +-------+ +---------+ +---------+
6100 // |---------------->| |
6102 // | RESTSubResp | |
6103 // |<----------------| |
6106 // | |------------->|
6108 // | | SubResp | Unknown instanceId
6109 // | |<-------------| No valid subscription found with subIds [0]
6112 // | |------------->|
6114 // | | SubFail | Duplicated action
6115 // | |<-------------| No valid subscription found with subIds [0]
6116 // | RESTNotif (fail)| |
6117 // |<----------------| |
6119 // | |------------->|
6122 // | |<-------------|
6124 // | [SUBS DELETE] |
6127 //-----------------------------------------------------------------------------
6129 func TestRESTUnpackSubscriptionResponseUnknownInstanceId(t *testing.T) {
6130 xapp.Logger.Debug("TEST: TestRESTUnpackSubscriptionResponseUnknownInstanceId")
6132 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
6133 Counter{cRestSubReqFromXapp, 1},
6134 Counter{cRestSubRespToXapp, 1},
6135 Counter{cSubReqToE2, 1},
6136 Counter{cSubReqTimerExpiry, 2},
6137 Counter{cSubReReqToE2, 1},
6138 Counter{cSubRespFromE2, 1},
6139 Counter{cSubFailFromE2, 1},
6140 Counter{cRestSubFailNotifToXapp, 1},
6141 Counter{cRestSubDelReqFromXapp, 1},
6142 Counter{cRestSubDelRespToXapp, 1},
6143 Counter{cSubDelReqToE2, 1},
6144 Counter{cSubDelRespFromE2, 1},
6147 const subReqCount int = 1
6150 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
6151 restSubId := xappConn1.SendRESTSubsReq(t, params)
6153 crereq, cremsg := e2termConn1.RecvSubsReq(t)
6155 // Unknown instanceId 0 in this response which will result resending original request
6156 orgInstanceId := crereq.RequestId.InstanceId
6157 crereq.RequestId.InstanceId = 0
6158 e2termConn1.SendSubsResp(t, crereq, cremsg)
6160 _, cremsg = e2termConn1.RecvSubsReq(t)
6162 xappConn1.ExpectRESTNotificationNok(t, restSubId, "allFail")
6164 // Subscription already created in E2 Node. E2 Node responds with failure but there is also same unknown instanceId 0
6165 fparams := &teststube2ap.E2StubSubsFailParams{}
6167 fparams.SetCauseVal(0, 1, 3) // CauseRIC / duplicate-action
6168 e2termConn1.SendSubsFail(t, fparams, cremsg)
6170 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
6171 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
6173 instanceId := xappConn1.WaitRESTNotification(t, restSubId)
6174 xapp.Logger.Debug("TEST: REST notification received e2SubsId=%v", instanceId)
6176 xappConn1.SendRESTSubsDelReq(t, &restSubId)
6178 // Wait that subs is cleaned
6179 mainCtrl.wait_subs_clean(t, orgInstanceId, 10)
6181 xappConn1.TestMsgChanEmpty(t)
6182 e2termConn1.TestMsgChanEmpty(t)
6183 mainCtrl.wait_registry_empty(t, 10)
6184 mainCtrl.VerifyAllClean(t)
6185 mainCtrl.VerifyCounterValues(t)
6188 //-----------------------------------------------------------------------------
6189 // TestRESTUnpackSubscriptionResponseNoTransaction
6192 // +-------+ +---------+ +---------+
6193 // | xapp | | submgr | | e2term |
6194 // +-------+ +---------+ +---------+
6197 // |---------------->| |
6199 // | RESTSubResp | |
6200 // |<----------------| |
6203 // | |------------->|
6205 // | | SubResp | No transaction for the response
6206 // | |<-------------| Ongoing transaction not found. This will result timer expiry and resending
6209 // | |------------->|
6211 // | | SubFail | Duplicated action
6212 // | |<-------------|Ongoing transaction not found. This will result timer expiry and sending delete
6213 // | RESTNotif (fail)| |
6214 // |<----------------| |
6216 // | |------------->|
6219 // | |<-------------| Ongoing transaction not found. This will result timer expiry and resending
6222 // | |------------->|
6225 // | |<-------------| Ongoing transaction not found.
6227 // | [SUBS DELETE] |
6230 //-----------------------------------------------------------------------------
6231 func TestRESTUnpackSubscriptionResponseNoTransaction(t *testing.T) {
6232 xapp.Logger.Debug("TEST: TestRESTUnpackSubscriptionResponseNoTransaction")
6234 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
6235 Counter{cRestSubReqFromXapp, 1},
6236 Counter{cRestSubRespToXapp, 1},
6237 Counter{cSubReqToE2, 1},
6238 Counter{cSubReqTimerExpiry, 2},
6239 Counter{cSubReReqToE2, 1},
6240 Counter{cSubRespFromE2, 1},
6241 Counter{cSubFailFromE2, 1},
6242 Counter{cRestSubFailNotifToXapp, 1},
6243 Counter{cRestSubDelReqFromXapp, 1},
6244 Counter{cRestSubDelRespToXapp, 1},
6245 Counter{cSubDelReqToE2, 1},
6246 Counter{cSubDelReqTimerExpiry, 2},
6247 Counter{cSubDelReReqToE2, 1},
6248 Counter{cSubDelRespFromE2, 2},
6251 const subReqCount int = 1
6254 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
6255 restSubId := xappConn1.SendRESTSubsReq(t, params)
6257 crereq, cremsg := e2termConn1.RecvSubsReq(t)
6259 mainCtrl.MakeTransactionNil(t, crereq.RequestId.InstanceId)
6260 // No transaction exist for this response which will result resending original request
6261 e2termConn1.SendSubsResp(t, crereq, cremsg)
6263 _, cremsg = e2termConn1.RecvSubsReq(t)
6265 xappConn1.ExpectRESTNotificationNok(t, restSubId, "allFail")
6267 // Subscription already created in E2 Node.
6268 fparams := &teststube2ap.E2StubSubsFailParams{}
6270 fparams.SetCauseVal(0, 1, 3) // CauseRIC / duplicate-action
6271 e2termConn1.SendSubsFail(t, fparams, cremsg)
6273 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
6274 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
6276 // Resending happens because there no transaction
6277 delreq, delmsg = e2termConn1.RecvSubsDelReq(t)
6278 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
6280 instanceId := xappConn1.WaitRESTNotification(t, restSubId)
6281 xapp.Logger.Debug("TEST: REST notification received e2SubsId=%v", instanceId)
6283 xappConn1.SendRESTSubsDelReq(t, &restSubId)
6285 // Wait that subs is cleaned
6286 mainCtrl.wait_subs_clean(t, crereq.RequestId.InstanceId, 10)
6288 xappConn1.TestMsgChanEmpty(t)
6289 e2termConn1.TestMsgChanEmpty(t)
6290 mainCtrl.wait_registry_empty(t, 10)
6291 mainCtrl.VerifyAllClean(t)
6292 mainCtrl.VerifyCounterValues(t)
6295 //-----------------------------------------------------------------------------
6296 // TestRESTUnpackSubscriptionFailureDecodeFail
6299 // +-------+ +---------+ +---------+
6300 // | xapp | | submgr | | e2term |
6301 // +-------+ +---------+ +---------+
6304 // |---------------->| |
6306 // | RESTSubResp | |
6307 // |<----------------| |
6310 // | |------------->|
6312 // | | SubFail | ASN.1 decode fails
6313 // | |<-------------| Decode failed. More data needed. This will result timer expiry and resending
6316 // | |------------->|
6318 // | | SubFail | Duplicated action
6319 // | |<-------------|
6320 // | RESTNotif (fail)| |
6321 // |<----------------| |
6323 // | [SUBS DELETE] |
6326 //-----------------------------------------------------------------------------
6327 func TestRESTUnpackSubscriptionFailureDecodeFail(t *testing.T) {
6328 xapp.Logger.Debug("TEST: TestRESTUnpackSubscriptionFailureDecodeFail")
6330 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
6331 Counter{cRestSubReqFromXapp, 1},
6332 Counter{cRestSubRespToXapp, 1},
6333 Counter{cSubReqToE2, 1},
6334 Counter{cSubReqTimerExpiry, 1},
6335 Counter{cSubReReqToE2, 1},
6336 Counter{cSubFailFromE2, 2},
6337 Counter{cRestSubFailNotifToXapp, 1},
6338 Counter{cRestSubDelReqFromXapp, 1},
6339 Counter{cRestSubDelRespToXapp, 1},
6342 const subReqCount int = 1
6345 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
6346 restSubId := xappConn1.SendRESTSubsReq(t, params)
6348 crereq, cremsg := e2termConn1.RecvSubsReq(t)
6350 // Decode of this response fails which will result resending original request
6351 e2termConn1.SendInvalidE2Asn1Resp(t, cremsg, xapp.RIC_SUB_FAILURE)
6353 _, cremsg = e2termConn1.RecvSubsReq(t)
6355 xappConn1.ExpectRESTNotificationNok(t, restSubId, "allFail")
6357 // Subscription already created in E2 Node.
6358 fparams := &teststube2ap.E2StubSubsFailParams{}
6360 fparams.SetCauseVal(0, 1, 3) // CauseRIC / duplicate-action
6361 e2termConn1.SendSubsFail(t, fparams, cremsg)
6363 instanceId := xappConn1.WaitRESTNotification(t, restSubId)
6364 xapp.Logger.Debug("TEST: REST notification received e2SubsId=%v", instanceId)
6366 xappConn1.SendRESTSubsDelReq(t, &restSubId)
6368 // Wait that subs is cleaned
6369 mainCtrl.wait_subs_clean(t, crereq.RequestId.InstanceId, 10)
6371 xappConn1.TestMsgChanEmpty(t)
6372 e2termConn1.TestMsgChanEmpty(t)
6373 mainCtrl.wait_registry_empty(t, 10)
6374 mainCtrl.VerifyAllClean(t)
6375 mainCtrl.VerifyCounterValues(t)
6378 //-----------------------------------------------------------------------------
6379 // TestRESTUnpackSubscriptionResponseUnknownInstanceId
6382 // +-------+ +---------+ +---------+
6383 // | xapp | | submgr | | e2term |
6384 // +-------+ +---------+ +---------+
6387 // |---------------->| |
6389 // | RESTSubResp | |
6390 // |<----------------| |
6393 // | |------------->|
6395 // | | SubFail | Unknown instanceId
6396 // | |<-------------| No valid subscription found with subIds [0]. This will result timer expiry and resending
6399 // | |------------->|
6401 // | | SubFail | Duplicated action
6402 // | |<-------------|No valid subscription found with subIds [0]. This will result timer expiry and sending delete
6403 // | RESTNotif (fail)| |
6404 // |<----------------| |
6406 // | |------------->|
6409 // | |<-------------|
6411 // | [SUBS DELETE] |
6414 //-----------------------------------------------------------------------------
6415 func TestRESTUnpackSubscriptionFailureUnknownInstanceId(t *testing.T) {
6416 xapp.Logger.Debug("TEST: TestRESTUnpackSubscriptionFailureUnknownInstanceId")
6417 const subReqCount int = 1
6419 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
6420 Counter{cRestSubReqFromXapp, 1},
6421 Counter{cRestSubRespToXapp, 1},
6422 Counter{cSubReqToE2, 1},
6423 Counter{cSubReqTimerExpiry, 2},
6424 Counter{cSubReReqToE2, 1},
6425 Counter{cSubFailFromE2, 2},
6426 Counter{cRestSubFailNotifToXapp, 1},
6427 Counter{cRestSubDelReqFromXapp, 1},
6428 Counter{cRestSubDelRespToXapp, 1},
6429 Counter{cSubDelReqToE2, 1},
6430 Counter{cSubDelRespFromE2, 1},
6434 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
6435 restSubId := xappConn1.SendRESTSubsReq(t, params)
6437 crereq, cremsg := e2termConn1.RecvSubsReq(t)
6439 // Unknown instanceId 0 in this response which will result resending original request
6440 fparams := &teststube2ap.E2StubSubsFailParams{}
6442 fparams.Fail.RequestId.InstanceId = 0
6443 e2termConn1.SendSubsFail(t, fparams, cremsg)
6445 _, cremsg = e2termConn1.RecvSubsReq(t)
6447 xappConn1.ExpectRESTNotificationNok(t, restSubId, "allFail")
6449 // Subscription already created in E2 Node. E2 Node responds with failure but there is also same unknown instanceId 0
6450 fparams.SetCauseVal(0, 1, 3) // CauseRIC / duplicate-action
6451 e2termConn1.SendSubsFail(t, fparams, cremsg)
6453 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
6454 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
6456 instanceId := xappConn1.WaitRESTNotification(t, restSubId)
6457 xapp.Logger.Debug("TEST: REST notification received e2SubsId=%v", instanceId)
6459 xappConn1.SendRESTSubsDelReq(t, &restSubId)
6461 // Wait that subs is cleaned
6462 mainCtrl.wait_subs_clean(t, crereq.RequestId.InstanceId, 10)
6464 xappConn1.TestMsgChanEmpty(t)
6465 e2termConn1.TestMsgChanEmpty(t)
6466 mainCtrl.wait_registry_empty(t, 10)
6467 mainCtrl.VerifyAllClean(t)
6468 mainCtrl.VerifyCounterValues(t)
6471 //-----------------------------------------------------------------------------
6472 // TestRESTUnpackSubscriptionFailureNoTransaction
6475 // +-------+ +---------+ +---------+
6476 // | xapp | | submgr | | e2term |
6477 // +-------+ +---------+ +---------+
6480 // |---------------->| |
6482 // | RESTSubResp | |
6483 // |<----------------| |
6486 // | |------------->|
6488 // | | SubFail | No transaction for the response
6489 // | |<-------------| Ongoing transaction not found. This will result timer expiry and resending
6492 // | |------------->|
6494 // | | SubFail | Duplicated action
6495 // | |<-------------| Ongoing transaction not found. This will result timer expiry and sending delete
6496 // | RESTNotif (fail)| |
6497 // |<----------------| |
6499 // | |------------->|
6502 // | |<-------------| Ongoing transaction not found. This will result timer expiry and resending
6505 // | |------------->|
6508 // | |<-------------| Ongoing transaction not found.
6510 // | [SUBS DELETE] |
6513 //-----------------------------------------------------------------------------
6514 func TestRESTUnpackSubscriptionFailureNoTransaction(t *testing.T) {
6515 xapp.Logger.Debug("TEST: TestRESTUnpackSubscriptionFailureNoTransaction")
6516 const subReqCount int = 1
6518 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
6519 Counter{cRestSubReqFromXapp, 1},
6520 Counter{cRestSubRespToXapp, 1},
6521 Counter{cSubReqToE2, 1},
6522 Counter{cSubReqTimerExpiry, 2},
6523 Counter{cSubReReqToE2, 1},
6524 Counter{cSubFailFromE2, 2},
6525 Counter{cRestSubFailNotifToXapp, 1},
6526 Counter{cRestSubDelReqFromXapp, 1},
6527 Counter{cRestSubDelRespToXapp, 1},
6528 Counter{cSubDelReqToE2, 1},
6529 Counter{cSubDelReqTimerExpiry, 2},
6530 Counter{cSubDelReReqToE2, 1},
6531 Counter{cSubDelRespFromE2, 2},
6535 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
6536 restSubId := xappConn1.SendRESTSubsReq(t, params)
6538 crereq, cremsg := e2termConn1.RecvSubsReq(t)
6540 mainCtrl.MakeTransactionNil(t, crereq.RequestId.InstanceId)
6542 // No transaction exist for this response which will result resending original request
6543 fparams := &teststube2ap.E2StubSubsFailParams{}
6545 e2termConn1.SendSubsFail(t, fparams, cremsg)
6547 _, cremsg = e2termConn1.RecvSubsReq(t)
6549 xappConn1.ExpectRESTNotificationNok(t, restSubId, "allFail")
6551 // Subscription already created in E2 Node.
6552 fparams.SetCauseVal(0, 1, 3) // CauseRIC / duplicate-action
6553 e2termConn1.SendSubsFail(t, fparams, cremsg)
6555 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
6556 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
6558 // Resending happens because there no transaction
6559 delreq, delmsg = e2termConn1.RecvSubsDelReq(t)
6560 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
6562 instanceId := xappConn1.WaitRESTNotification(t, restSubId)
6563 xapp.Logger.Debug("TEST: REST notification received e2SubsId=%v", instanceId)
6565 xappConn1.SendRESTSubsDelReq(t, &restSubId)
6567 // Wait that subs is cleaned
6568 mainCtrl.wait_subs_clean(t, crereq.RequestId.InstanceId, 10)
6570 xappConn1.TestMsgChanEmpty(t)
6571 e2termConn1.TestMsgChanEmpty(t)
6572 mainCtrl.wait_registry_empty(t, 10)
6573 mainCtrl.VerifyAllClean(t)
6574 mainCtrl.VerifyCounterValues(t)
6577 //-----------------------------------------------------------------------------
6578 // TestRESTUnpackSubscriptionDeleteResponseDecodeFail
6581 // +-------+ +---------+ +---------+
6582 // | xapp | | submgr | | e2term |
6583 // +-------+ +---------+ +---------+
6585 // | [SUBS CREATE] |
6588 // | RESTSubDelReq | |
6589 // |---------------->| |
6591 // | RESTSubDelResp | |
6592 // |<----------------| |
6595 // | |------------->|
6597 // | | SubDelResp | ASN.1 decode fails.
6598 // | |<-------------| Decode failed. More data needed. This will result timer expiry and resending
6601 // | |------------->|
6603 // | | SubDelFail | Subscription does exist any more in E2 node
6604 // | |<-------------|
6606 // | [SUBS DELETE] |
6609 //-----------------------------------------------------------------------------
6610 func TestRESTUnpackSubscriptionDeleteResponseDecodeFail(t *testing.T) {
6611 xapp.Logger.Debug("TEST: TestRESTUnpackSubscriptionDeleteResponseDecodeFail")
6613 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
6614 Counter{cRestSubReqFromXapp, 1},
6615 Counter{cRestSubRespToXapp, 1},
6616 Counter{cSubReqToE2, 1},
6617 Counter{cSubRespFromE2, 1},
6618 Counter{cRestSubNotifToXapp, 1},
6619 Counter{cRestSubDelReqFromXapp, 1},
6620 Counter{cRestSubDelRespToXapp, 1},
6621 Counter{cSubDelReqToE2, 1},
6622 Counter{cSubDelReqTimerExpiry, 1},
6623 Counter{cSubDelReReqToE2, 1},
6624 Counter{cSubDelFailFromE2, 1},
6625 Counter{cSubDelRespFromE2, 1},
6629 var params *teststube2ap.RESTSubsReqParams = nil
6630 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
6633 xappConn1.SendRESTSubsDelReq(t, &restSubId)
6635 // E2t: Receive 1st SubsDelReq
6636 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
6638 // Decode of this response fails which will result resending original request
6639 e2termConn1.SendInvalidE2Asn1Resp(t, delmsg, xapp.RIC_SUB_DEL_RESP)
6641 // E2t: Receive 2nd SubsDelReq and send SubsDelResp
6642 delreq, delmsg = e2termConn1.RecvSubsDelReq(t)
6644 // Subscription does not exist in in E2 Node.
6645 e2termConn1.SendSubsDelFail(t, delreq, delmsg)
6647 // Wait that subs is cleaned
6648 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
6650 xappConn1.TestMsgChanEmpty(t)
6651 e2termConn1.TestMsgChanEmpty(t)
6652 mainCtrl.wait_registry_empty(t, 10)
6653 mainCtrl.VerifyAllClean(t)
6654 mainCtrl.VerifyCounterValues(t)
6657 //-----------------------------------------------------------------------------
6658 // TestRESTUnpackSubscriptionDeleteResponseUnknownInstanceId
6661 // +-------+ +---------+ +---------+
6662 // | xapp | | submgr | | e2term |
6663 // +-------+ +---------+ +---------+
6665 // | [SUBS CREATE] |
6668 // | RESTSubDelReq | |
6669 // |---------------->| |
6671 // | RESTSubDelResp | |
6672 // |<----------------| |
6675 // | |------------->|
6677 // | | SubDelResp | Unknown instanceId
6678 // | |<-------------| No valid subscription found with subIds [0]. This will result timer expiry and resending
6681 // | |------------->|
6683 // | | SubDelFail | Subscription does exist any more in E2 node
6684 // | |<-------------|
6686 // | [SUBS DELETE] |
6688 //-----------------------------------------------------------------------------
6689 func TestRESTUnpackSubscriptionDeleteResponseUnknownInstanceId(t *testing.T) {
6690 xapp.Logger.Debug("TEST: TestRESTUnpackSubscriptionDeleteResponseUnknownInstanceId")
6692 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
6693 Counter{cRestSubReqFromXapp, 1},
6694 Counter{cRestSubRespToXapp, 1},
6695 Counter{cSubReqToE2, 1},
6696 Counter{cSubRespFromE2, 1},
6697 Counter{cRestSubNotifToXapp, 1},
6698 Counter{cRestSubDelReqFromXapp, 1},
6699 Counter{cRestSubDelRespToXapp, 1},
6700 Counter{cSubDelReqToE2, 1},
6701 Counter{cSubDelReqTimerExpiry, 1},
6702 Counter{cSubDelReReqToE2, 1},
6703 Counter{cSubDelRespFromE2, 1},
6704 Counter{cSubDelFailFromE2, 1},
6708 var params *teststube2ap.RESTSubsReqParams = nil
6709 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
6712 xappConn1.SendRESTSubsDelReq(t, &restSubId)
6714 // E2t: Receive 1st SubsDelReq
6715 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
6717 // Unknown instanceId in this response which will result resending original request
6718 delreq.RequestId.InstanceId = 0
6719 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
6721 // E2t: Receive 2nd SubsDelReq
6722 delreq, delmsg = e2termConn1.RecvSubsDelReq(t)
6724 // Subscription does not exist in in E2 Node.
6725 e2termConn1.SendSubsDelFail(t, delreq, delmsg)
6727 // Wait that subs is cleaned
6728 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
6730 xappConn1.TestMsgChanEmpty(t)
6731 e2termConn1.TestMsgChanEmpty(t)
6732 mainCtrl.wait_registry_empty(t, 10)
6733 mainCtrl.VerifyAllClean(t)
6734 mainCtrl.VerifyCounterValues(t)
6737 //-----------------------------------------------------------------------------
6738 // TestRESTUnpackSubscriptionDeleteResponseNoTransaction
6741 // +-------+ +---------+ +---------+
6742 // | xapp | | submgr | | e2term |
6743 // +-------+ +---------+ +---------+
6745 // | [SUBS CREATE] |
6748 // | RESTSubDelReq | |
6749 // |---------------->| |
6751 // | RESTSubDelResp | |
6752 // |<----------------| |
6755 // | |------------->|
6757 // | | SubDelResp | No transaction for the response
6758 // | |<-------------| Ongoing transaction not found. This will result timer expiry and resending
6761 // | |------------->|
6763 // | | SubDelFail | Subscription does exist any more in E2 node
6764 // | |<-------------| Ongoing transaction not found. This will result timer expiry
6766 // | [SUBS DELETE] |
6768 //-----------------------------------------------------------------------------
6769 func TestRESTUnpackSubscriptionDeleteResponseNoTransaction(t *testing.T) {
6770 xapp.Logger.Debug("TEST: TestRESTUnpackSubscriptionDeleteResponseNoTransaction")
6772 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
6773 Counter{cRestSubReqFromXapp, 1},
6774 Counter{cRestSubRespToXapp, 1},
6775 Counter{cSubReqToE2, 1},
6776 Counter{cSubRespFromE2, 1},
6777 Counter{cRestSubNotifToXapp, 1},
6778 Counter{cRestSubDelReqFromXapp, 1},
6779 Counter{cRestSubDelRespToXapp, 1},
6780 Counter{cSubDelReqToE2, 1},
6781 Counter{cSubDelReqTimerExpiry, 2},
6782 Counter{cSubDelReReqToE2, 1},
6783 Counter{cSubDelRespFromE2, 1},
6784 Counter{cSubDelFailFromE2, 1},
6788 var params *teststube2ap.RESTSubsReqParams = nil
6789 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
6792 xappConn1.SendRESTSubsDelReq(t, &restSubId)
6794 // E2t: Receive 1st SubsDelReq
6795 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
6797 mainCtrl.MakeTransactionNil(t, e2SubsId)
6799 // No transaction exist for this response which will result resending original request
6800 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
6802 // E2t: Receive 2nd SubsDelReq
6803 delreq, delmsg = e2termConn1.RecvSubsDelReq(t)
6805 // Subscription does not exist in in E2 Node.
6806 e2termConn1.SendSubsDelFail(t, delreq, delmsg)
6808 // Wait that subs is cleaned
6809 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
6811 xappConn1.TestMsgChanEmpty(t)
6812 e2termConn1.TestMsgChanEmpty(t)
6813 mainCtrl.wait_registry_empty(t, 10)
6814 mainCtrl.VerifyAllClean(t)
6815 mainCtrl.VerifyCounterValues(t)
6818 //-----------------------------------------------------------------------------
6819 // TestRESTUnpackSubscriptionDeleteFailureDecodeFail
6822 // +-------+ +---------+ +---------+
6823 // | xapp | | submgr | | e2term |
6824 // +-------+ +---------+ +---------+
6826 // | [SUBS CREATE] |
6829 // | RESTSubDelReq | |
6830 // |---------------->| |
6832 // | RESTSubDelResp | |
6833 // |<----------------| |
6836 // | |------------->|
6838 // | | SubDelFail | ASN.1 decode fails
6839 // | |<-------------| Decode failed. More data needed. This will result timer expiry and resending
6842 // | |------------->|
6844 // | | SubDelFail | Subscription does exist any more in E2 node
6845 // | |<-------------|
6847 // | [SUBS DELETE] |
6849 //-----------------------------------------------------------------------------
6850 func TestRESTUnpackSubscriptionDeleteFailureDecodeFail(t *testing.T) {
6851 xapp.Logger.Debug("TEST: TestRESTUnpackSubscriptionDeleteFailureDecodeFail")
6853 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
6854 Counter{cRestSubReqFromXapp, 1},
6855 Counter{cRestSubRespToXapp, 1},
6856 Counter{cSubReqToE2, 1},
6857 Counter{cSubRespFromE2, 1},
6858 Counter{cRestSubNotifToXapp, 1},
6859 Counter{cRestSubDelReqFromXapp, 1},
6860 Counter{cRestSubDelRespToXapp, 1},
6861 Counter{cSubDelReqToE2, 1},
6862 Counter{cSubDelReqTimerExpiry, 1},
6863 Counter{cSubDelReReqToE2, 1},
6864 Counter{cSubDelFailFromE2, 2},
6868 var params *teststube2ap.RESTSubsReqParams = nil
6869 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
6872 xappConn1.SendRESTSubsDelReq(t, &restSubId)
6874 // E2t: Receive 1st SubsDelReq
6875 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
6877 // Decode of this response fails which will result resending original request
6878 e2termConn1.SendInvalidE2Asn1Resp(t, delmsg, xapp.RIC_SUB_DEL_FAILURE)
6880 // E2t: Receive 2nd SubsDelReq and send SubsDelResp
6881 delreq, delmsg = e2termConn1.RecvSubsDelReq(t)
6883 // Subscription does not exist in in E2 Node.
6884 e2termConn1.SendSubsDelFail(t, delreq, delmsg)
6886 // Wait that subs is cleaned
6887 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
6889 xappConn1.TestMsgChanEmpty(t)
6890 e2termConn1.TestMsgChanEmpty(t)
6891 mainCtrl.wait_registry_empty(t, 10)
6892 mainCtrl.VerifyAllClean(t)
6893 mainCtrl.VerifyCounterValues(t)
6896 //-----------------------------------------------------------------------------
6897 // TestRESTUnpackSubscriptionDeleteailureUnknownInstanceId
6900 // +-------+ +---------+ +---------+
6901 // | xapp | | submgr | | e2term |
6902 // +-------+ +---------+ +---------+
6904 // | [SUBS CREATE] |
6907 // | RESTSubDelReq | |
6908 // |---------------->| |
6910 // | RESTSubDelResp | |
6911 // |<----------------| |
6914 // | |------------->|
6916 // | | SubDelFail | Unknown instanceId
6917 // | |<-------------| No valid subscription found with subIds [0]. This will result timer expiry and resending
6920 // | |------------->|
6922 // | | SubDelFail | Subscription does exist any more in E2 node
6923 // | |<-------------| No valid subscription found with subIds [0].
6925 // | [SUBS DELETE] |
6927 //-----------------------------------------------------------------------------
6928 func TestRESTUnpackSubscriptionDeleteailureUnknownInstanceId(t *testing.T) {
6929 xapp.Logger.Debug("TEST: TestRESTUnpackSubscriptionDeleteailureUnknownInstanceId")
6931 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
6932 Counter{cRestSubReqFromXapp, 1},
6933 Counter{cRestSubRespToXapp, 1},
6934 Counter{cSubReqToE2, 1},
6935 Counter{cSubRespFromE2, 1},
6936 Counter{cRestSubNotifToXapp, 1},
6937 Counter{cRestSubDelReqFromXapp, 1},
6938 Counter{cRestSubDelRespToXapp, 1},
6939 Counter{cSubDelReqToE2, 1},
6940 Counter{cSubDelReqTimerExpiry, 1},
6941 Counter{cSubDelReReqToE2, 1},
6942 Counter{cSubDelFailFromE2, 2},
6946 var params *teststube2ap.RESTSubsReqParams = nil
6947 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
6950 xappConn1.SendRESTSubsDelReq(t, &restSubId)
6952 // E2t: Receive 1st SubsDelReq
6953 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
6955 // Unknown instanceId 0 in this response which will result resending original request
6956 delreq.RequestId.InstanceId = 0
6957 e2termConn1.SendSubsDelFail(t, delreq, delmsg)
6959 // E2t: Receive 2nd SubsDelReq
6960 delreq, delmsg = e2termConn1.RecvSubsDelReq(t)
6962 // Subscription does not exist in in E2 Node. E2 Node responds with failure but there is also same unknown instanceId 0
6963 e2termConn1.SendSubsDelFail(t, delreq, delmsg)
6965 // Wait that subs is cleaned
6966 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
6968 xappConn1.TestMsgChanEmpty(t)
6969 e2termConn1.TestMsgChanEmpty(t)
6970 mainCtrl.wait_registry_empty(t, 10)
6971 mainCtrl.VerifyAllClean(t)
6972 mainCtrl.VerifyCounterValues(t)
6975 //-----------------------------------------------------------------------------
6976 // TestRESTUnpackSubscriptionDeleteFailureNoTransaction
6979 // +-------+ +---------+ +---------+
6980 // | xapp | | submgr | | e2term |
6981 // +-------+ +---------+ +---------+
6983 // | [SUBS CREATE] |
6986 // | RESTSubDelReq | |
6987 // |---------------->| |
6989 // | RESTSubDelResp | |
6990 // |<----------------| |
6993 // | |------------->|
6995 // | | SubDelFail | No transaction for the response
6996 // | |<-------------| Ongoing transaction not found. This will result timer expiry and resending
6999 // | |------------->|
7001 // | | SubDelFail | Subscription does exist any more in E2 node
7002 // | |<-------------| Ongoing transaction not found. This will result timer expiry
7004 // | [SUBS DELETE] |
7006 //-----------------------------------------------------------------------------
7007 func TestRESTUnpackSubscriptionDeleteFailureNoTransaction(t *testing.T) {
7008 xapp.Logger.Debug("TEST: TestRESTUnpackSubscriptionDeleteFailureNoTransaction")
7010 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
7011 Counter{cRestSubReqFromXapp, 1},
7012 Counter{cRestSubRespToXapp, 1},
7013 Counter{cSubReqToE2, 1},
7014 Counter{cSubRespFromE2, 1},
7015 Counter{cRestSubNotifToXapp, 1},
7016 Counter{cRestSubDelReqFromXapp, 1},
7017 Counter{cRestSubDelRespToXapp, 1},
7018 Counter{cSubDelReqToE2, 1},
7019 Counter{cSubDelReqTimerExpiry, 2},
7020 Counter{cSubDelReReqToE2, 1},
7021 Counter{cSubDelFailFromE2, 2},
7025 var params *teststube2ap.RESTSubsReqParams = nil
7026 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
7029 xappConn1.SendRESTSubsDelReq(t, &restSubId)
7031 // E2t: Receive 1st SubsDelReq
7032 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
7034 mainCtrl.MakeTransactionNil(t, e2SubsId)
7036 // No transaction exist for this response which will result resending original request
7037 e2termConn1.SendSubsDelFail(t, delreq, delmsg)
7039 // E2t: Receive 2nd SubsDelReq
7040 delreq, delmsg = e2termConn1.RecvSubsDelReq(t)
7042 // Subscription does not exist in in E2 Node.
7043 e2termConn1.SendSubsDelFail(t, delreq, delmsg)
7045 // Wait that subs is cleaned
7046 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
7048 xappConn1.TestMsgChanEmpty(t)
7049 e2termConn1.TestMsgChanEmpty(t)
7050 mainCtrl.wait_registry_empty(t, 10)
7051 mainCtrl.VerifyAllClean(t)
7052 mainCtrl.VerifyCounterValues(t)
7055 //-----------------------------------------------------------------------------
7056 // TestRESTSubReqFailAsn1PackSubReqError
7059 // +-------+ +---------+ +---------+
7060 // | xapp | | submgr | | e2term |
7061 // +-------+ +---------+ +---------+
7064 // |---------------->| |
7066 // | RESTSubResp | |
7067 // |<----------------| |
7069 // | ASN.1 encode fails |
7072 // | |------------->|
7075 // | |<-------------|
7079 // |<----------------| |
7081 // | [SUBS DELETE] |
7084 //-----------------------------------------------------------------------------
7085 func TestRESTSubReqFailAsn1PackSubReqError(t *testing.T) {
7087 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
7088 Counter{cRestSubReqFromXapp, 1},
7089 Counter{cRestSubRespToXapp, 1},
7090 Counter{cRestSubFailNotifToXapp, 1},
7091 Counter{cRestSubDelReqFromXapp, 1},
7092 Counter{cRestSubDelRespToXapp, 1},
7095 const subReqCount int = 1
7097 var params *teststube2ap.RESTSubsReqParams = nil
7098 params = xappConn1.GetRESTSubsReqReportParams(subReqCount)
7099 e2ap_wrapper.AllowE2apToProcess(e2ap_wrapper.SUB_REQ, false)
7102 restSubId := xappConn1.SendRESTSubsReq(t, params)
7103 xapp.Logger.Debug("Send REST subscriber request for subscriberId : %v", restSubId)
7105 // E2t: Receive SubsDelReq
7106 xappConn1.ExpectRESTNotificationNok(t, restSubId, "allFail")
7108 e2SubsId := xappConn1.WaitRESTNotification(t, restSubId)
7109 xapp.Logger.Debug("TEST: REST notification received e2SubsId=%v", e2SubsId)
7111 e2ap_wrapper.AllowE2apToProcess(e2ap_wrapper.SUB_REQ, true)
7113 xappConn1.SendRESTSubsDelReq(t, &restSubId)
7115 // Wait that subs is cleaned
7116 waitSubsCleanup(t, e2SubsId, 10)
7117 mainCtrl.VerifyAllClean(t)
7118 mainCtrl.VerifyCounterValues(t)
7121 func TestRESTSubReqPolicyUpdateTimeoutAndSubDelOkSameAction(t *testing.T) {
7122 CaseBegin("TestRESTSubReqPolicyUpdateTimeoutAndSubDelOkSameAction")
7124 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
7125 Counter{cRestSubReqFromXapp, 2},
7126 Counter{cRestSubRespToXapp, 2},
7127 Counter{cSubReqToE2, 2},
7128 Counter{cSubReqTimerExpiry, 1},
7129 Counter{cSubRespFromE2, 1},
7130 Counter{cRestSubNotifToXapp, 1},
7131 Counter{cRestSubFailNotifToXapp, 1},
7132 Counter{cRestSubDelReqFromXapp, 1},
7133 Counter{cSubDelReqToE2, 1},
7134 Counter{cSubDelRespFromE2, 1},
7135 Counter{cRestSubDelRespToXapp, 1},
7138 const e2Timeout int64 = 1
7139 const e2RetryCount int64 = 0
7140 const routingNeeded bool = false
7143 params := xappConn1.GetRESTSubsReqPolicyParams(subReqCount)
7144 params.SetSubscriptionDirectives(e2Timeout, e2RetryCount, routingNeeded)
7147 restSubId := xappConn1.SendRESTSubsReq(t, params)
7148 xapp.Logger.Debug("Send REST subscribe request for subscriberId : %v", restSubId)
7150 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
7151 xappConn1.ExpectRESTNotification(t, restSubId)
7152 e2termConn1.SendSubsResp(t, crereq1, cremsg1)
7153 e2SubsId := xappConn1.WaitRESTNotification(t, restSubId)
7154 xapp.Logger.Debug("REST notification received e2SubsId=%v", e2SubsId)
7157 params = xappConn1.GetRESTSubsReqPolicyParams(subReqCount)
7158 params.SetSubscriptionDirectives(e2Timeout, e2RetryCount, routingNeeded)
7159 params.SetSubscriptionID(&restSubId)
7160 params.SetTimeToWait("w200ms")
7161 restSubId = xappConn1.SendRESTSubsReq(t, params)
7162 xapp.Logger.Debug("Send REST subscribe request for subscriberId : %v", restSubId)
7164 crereq1, cremsg1 = e2termConn1.RecvSubsReq(t)
7165 xappConn1.ExpectRESTNotification(t, restSubId)
7166 // SubsResp is missing, e2SubsId will be 0
7167 zeroE2SubsId := xappConn1.WaitRESTNotification(t, restSubId)
7168 xapp.Logger.Debug("TEST: REST notification received e2SubsId=%v", zeroE2SubsId)
7171 xappConn1.SendRESTSubsDelReq(t, &restSubId)
7172 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
7173 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
7175 waitSubsCleanup(t, e2SubsId, 10)
7176 mainCtrl.VerifyAllClean(t)
7177 mainCtrl.VerifyCounterValues(t)
7180 //-----------------------------------------------------------------------------
7181 // TestPolicyUpdateRESTSubReqAndSubDelOkWithRestartInMiddle
7184 // +-------+ +---------+ +---------+
7185 // | xapp | | submgr | | e2term |
7186 // +-------+ +---------+ +---------+
7189 // |---------------->| |
7191 // | RESTSubResp | |
7192 // |<----------------| |
7194 // | |------------->|
7197 // | |<-------------|
7200 // |<----------------| |
7203 // |---------------->| |
7205 // | RESTSubResp | |
7206 // |<----------------| |
7208 // | |------------->|
7210 // | Submgr restart |
7212 // | RESTSubDelReq | |
7213 // |---------------->| |
7216 // | |------------->|
7219 // | |<-------------|
7221 // | RESTSubDelResp | |
7222 // |<----------------| |
7224 //-----------------------------------------------------------------------------
7226 func TestPolicyUpdateRESTSubReqAndSubDelOkWithRestartInMiddle(t *testing.T) {
7227 CaseBegin("TestPolicyUpdateRESTSubReqAndSubDelOkWithRestartInMiddle")
7229 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
7230 Counter{cRestSubReqFromXapp, 2},
7231 Counter{cRestSubRespToXapp, 2},
7232 Counter{cSubReqToE2, 2},
7233 Counter{cSubRespFromE2, 1},
7234 Counter{cRestSubNotifToXapp, 1},
7235 Counter{cRestSubDelReqFromXapp, 1},
7236 Counter{cSubDelReqToE2, 1},
7237 Counter{cSubDelRespFromE2, 1},
7238 Counter{cRestSubDelRespToXapp, 1},
7241 const e2Timeout int64 = 1
7242 const e2RetryCount int64 = 0
7243 const routingNeeded bool = false
7246 params := xappConn1.GetRESTSubsReqPolicyParams(subReqCount)
7247 params.SetSubscriptionDirectives(e2Timeout, e2RetryCount, routingNeeded)
7248 // Create subscription
7249 restSubId := xappConn1.SendRESTSubsReq(t, params)
7250 xapp.Logger.Debug("Send REST subscribe request for subscriberId : %v", restSubId)
7252 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
7253 xappConn1.ExpectRESTNotification(t, restSubId)
7254 e2termConn1.SendSubsResp(t, crereq1, cremsg1)
7255 e2SubsId := xappConn1.WaitRESTNotification(t, restSubId)
7256 xapp.Logger.Debug("REST notification received e2SubsId=%v", e2SubsId)
7258 // Check subscription
7259 queryXappSubscription(t, int64(e2SubsId), "RAN_NAME_1", []string{"localhost:13560"})
7262 params = xappConn1.GetRESTSubsReqPolicyParams(subReqCount)
7263 params.SetSubscriptionDirectives(e2Timeout, e2RetryCount, routingNeeded)
7264 params.SetSubscriptionID(&restSubId)
7265 params.SetTimeToWait("w200ms")
7266 mainCtrl.SetResetTestFlag(t, true) // subs.DoNotWaitSubResp will be set TRUE for the subscription
7267 restSubId = xappConn1.SendRESTSubsReq(t, params)
7268 xapp.Logger.Debug("Send REST subscribe request for subscriberId : %v", restSubId)
7270 crereq1, cremsg1 = e2termConn1.RecvSubsReq(t)
7271 mainCtrl.SetResetTestFlag(t, false)
7273 // SubsResp is missing due to submgr restart
7275 mainCtrl.SimulateRestart(t)
7276 xapp.Logger.Debug("mainCtrl.SimulateRestart done")
7278 // ReadE2Subscriptions() for testing is running in own go routine (go mainCtrl.c.ReadE2Subscriptions())
7279 // That needs to be completed before successful subscription query is possible
7280 <-time.After(time.Second * 1)
7282 // Check subscription
7283 queryXappSubscription(t, int64(e2SubsId), "RAN_NAME_1", []string{"localhost:13560"})
7285 // Delete subscription
7286 xappConn1.SendRESTSubsDelReq(t, &restSubId)
7287 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
7288 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
7290 //Wait that subs is cleaned
7291 waitSubsCleanup(t, e2SubsId, 10)
7293 mainCtrl.VerifyCounterValues(t)
7294 mainCtrl.VerifyAllClean(t)
7297 ////////////////////////////////////////////////////////////////////////////////////
7298 // Services for UT cases
7299 ////////////////////////////////////////////////////////////////////////////////////
7300 const subReqCount int = 1
7301 const host string = "localhost"
7303 func createSubscription(t *testing.T, fromXappConn *teststube2ap.E2Stub, toE2termConn *teststube2ap.E2Stub, params *teststube2ap.RESTSubsReqParams) (string, uint32) {
7305 params = fromXappConn.GetRESTSubsReqReportParams(subReqCount)
7307 restSubId := fromXappConn.SendRESTSubsReq(t, params)
7308 xapp.Logger.Debug("Send REST subscriber request for subscriberId : %v", restSubId)
7310 crereq1, cremsg1 := toE2termConn.RecvSubsReq(t)
7311 fromXappConn.ExpectRESTNotification(t, restSubId)
7312 toE2termConn.SendSubsResp(t, crereq1, cremsg1)
7313 e2SubsId := fromXappConn.WaitRESTNotification(t, restSubId)
7314 xapp.Logger.Debug("REST notification received e2SubsId=%v", e2SubsId)
7316 return restSubId, e2SubsId
7319 func createXapp2MergedSubscription(t *testing.T, meid string) (string, uint32) {
7321 params := xappConn2.GetRESTSubsReqReportParams(subReqCount)
7323 params.SetMeid(meid)
7325 xapp.Subscription.SetResponseCB(xappConn2.SubscriptionRespHandler)
7326 restSubId := xappConn2.SendRESTSubsReq(t, params)
7327 xappConn2.ExpectRESTNotification(t, restSubId)
7328 xapp.Logger.Debug("Send REST subscriber request for subscriberId : %v", restSubId)
7329 e2SubsId := xappConn2.WaitRESTNotification(t, restSubId)
7330 xapp.Logger.Debug("REST notification received e2SubsId=%v", e2SubsId)
7332 return restSubId, e2SubsId
7335 func createXapp1PolicySubscription(t *testing.T) (string, uint32) {
7337 params := xappConn1.GetRESTSubsReqPolicyParams(subReqCount)
7338 restSubId := xappConn1.SendRESTSubsReq(t, params)
7339 xapp.Logger.Debug("Send REST Policy subscriber request for subscriberId : %v", restSubId)
7341 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
7342 xappConn1.ExpectRESTNotification(t, restSubId)
7343 e2termConn1.SendSubsResp(t, crereq1, cremsg1)
7344 e2SubsId := xappConn1.WaitRESTNotification(t, restSubId)
7345 xapp.Logger.Debug("REST notification received e2SubsId=%v", e2SubsId)
7347 return restSubId, e2SubsId
7350 func createXapp1ReportSubscriptionE2Fail(t *testing.T) (string, uint32) {
7351 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
7352 restSubId := xappConn1.SendRESTSubsReq(t, params)
7354 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
7355 fparams1 := &teststube2ap.E2StubSubsFailParams{}
7356 fparams1.Set(crereq1)
7357 e2termConn1.SendSubsFail(t, fparams1, cremsg1)
7359 delreq1, delmsg1 := e2termConn1.RecvSubsDelReq(t)
7360 xappConn1.ExpectRESTNotification(t, restSubId)
7361 e2termConn1.SendSubsDelResp(t, delreq1, delmsg1)
7362 e2SubsId := xappConn1.WaitRESTNotification(t, restSubId)
7363 xapp.Logger.Debug("TEST: REST notification received e2SubsId=%v", e2SubsId)
7365 return restSubId, e2SubsId
7368 func deleteSubscription(t *testing.T, fromXappConn *teststube2ap.E2Stub, toE2termConn *teststube2ap.E2Stub, restSubId *string) {
7369 fromXappConn.SendRESTSubsDelReq(t, restSubId)
7370 delreq, delmsg := toE2termConn.RecvSubsDelReq(t)
7371 toE2termConn.SendSubsDelResp(t, delreq, delmsg)
7374 func deleteXapp1Subscription(t *testing.T, restSubId *string) {
7375 xappConn1.SendRESTSubsDelReq(t, restSubId)
7376 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
7377 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
7380 func deleteXapp2Subscription(t *testing.T, restSubId *string) {
7381 xappConn2.SendRESTSubsDelReq(t, restSubId)
7382 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
7383 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
7386 func queryXappSubscription(t *testing.T, e2SubsId int64, meid string, endpoint []string) {
7387 resp, _ := xapp.Subscription.QuerySubscriptions()
7388 assert.Equal(t, e2SubsId, resp[0].SubscriptionID)
7389 assert.Equal(t, meid, resp[0].Meid)
7390 assert.Equal(t, endpoint, resp[0].ClientEndpoint)
7393 func waitSubsCleanup(t *testing.T, e2SubsId uint32, timeout int) {
7394 //Wait that subs is cleaned
7395 mainCtrl.wait_subs_clean(t, e2SubsId, timeout)
7397 xappConn1.TestMsgChanEmpty(t)
7398 xappConn2.TestMsgChanEmpty(t)
7399 e2termConn1.TestMsgChanEmpty(t)
7400 mainCtrl.wait_registry_empty(t, timeout)
7403 func sendAndReceiveMultipleE2SubReqs(t *testing.T, count int, fromXappConn *teststube2ap.E2Stub, toE2termConn *teststube2ap.E2Stub, restSubId string) []uint32 {
7405 var e2SubsId []uint32
7407 for i := 0; i < count; i++ {
7408 xapp.Logger.Debug("TEST: %d ===================================== BEGIN CRE ============================================", i+1)
7409 crereq, cremsg := toE2termConn.RecvSubsReq(t)
7410 fromXappConn.ExpectRESTNotification(t, restSubId)
7411 toE2termConn.SendSubsResp(t, crereq, cremsg)
7412 instanceId := fromXappConn.WaitRESTNotification(t, restSubId)
7413 e2SubsId = append(e2SubsId, instanceId)
7414 xapp.Logger.Debug("TEST: %v", e2SubsId)
7415 xapp.Logger.Debug("TEST: %d ===================================== END CRE ============================================", i+1)
7416 <-time.After(100 * time.Millisecond)
7421 func sendAndReceiveMultipleE2DelReqs(t *testing.T, e2SubsIds []uint32, toE2termConn *teststube2ap.E2Stub) {
7423 for i := 0; i < len(e2SubsIds); i++ {
7424 xapp.Logger.Debug("TEST: %d ===================================== BEGIN DEL ============================================", i+1)
7425 delreq, delmsg := toE2termConn.RecvSubsDelReq(t)
7426 toE2termConn.SendSubsDelResp(t, delreq, delmsg)
7427 <-time.After(1 * time.Second)
7428 xapp.Logger.Debug("TEST: %d ===================================== END DEL ============================================", i+1)
7429 <-time.After(100 * time.Millisecond)
7432 // Wait that subs is cleaned
7433 for i := 0; i < len(e2SubsIds); i++ {
7434 mainCtrl.wait_subs_clean(t, e2SubsIds[i], 10)