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)
679 mainCtrl.VerifyCounterValues(t)
682 //-----------------------------------------------------------------------------
683 // TestSubMergeDelAndRouteUpdateNok
685 // +-------+ +-------+ +---------+ +---------+
686 // | xapp2 | | xapp1 | | submgr | | e2term |
687 // +-------+ +-------+ +---------+ +---------+
692 // | |------------->| |
695 // | | |------------->|
697 // | | |<-------------|
699 // | |<-------------| |
702 // |--------------------------->| |
705 // |<---------------------------| |
707 // | | SubDelReq 1 | |
708 // | |------------->| |
709 // | | | RouteUpdate |
710 // | | |-----> rtmgr |
712 // | | | RouteUpdate |
713 // | | | status:400 |
714 // | | |<----- rtmgr |
716 // | | SubDelResp 1 | |
717 // | |<-------------| |
720 // |--------------------------->| |
722 // | | | SubDelReq 2 |
723 // | | |------------->|
725 // | | | SubDelReq 2 |
726 // | | |------------->|
728 // | SubDelResp 2 | |
729 // |<---------------------------| |
731 //-----------------------------------------------------------------------------
732 func TestSubMergeDelAndRouteUpdateNok(t *testing.T) {
733 CaseBegin("TestSubMergeDelAndRouteUpdateNok")
735 // Init counter check
736 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
737 Counter{cSubReqFromXapp, 2},
738 Counter{cMergedSubscriptions, 1},
739 Counter{cSubReqToE2, 1},
740 Counter{cSubRespFromE2, 1},
741 Counter{cSubRespToXapp, 2},
742 Counter{cSubDelReqFromXapp, 2},
743 Counter{cRouteDeleteUpdateFail, 1},
744 Counter{cSubDelReqToE2, 1},
745 Counter{cSubDelRespFromE2, 1},
746 Counter{cSubDelRespToXapp, 2},
747 Counter{cUnmergedSubscriptions, 1},
751 rparams1 := &teststube2ap.E2StubSubsReqParams{}
753 cretrans1 := xappConn1.SendSubsReq(t, rparams1, nil)
754 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
755 e2termConn1.SendSubsResp(t, crereq1, cremsg1)
756 e2SubsId1 := xappConn1.RecvSubsResp(t, cretrans1)
759 rparams2 := &teststube2ap.E2StubSubsReqParams{}
761 cretrans2 := xappConn2.SendSubsReq(t, rparams2, nil)
762 e2SubsId2 := xappConn2.RecvSubsResp(t, cretrans2)
764 resp, _ := xapp.Subscription.QuerySubscriptions()
765 assert.Equal(t, resp[0].SubscriptionID, int64(e2SubsId1))
766 assert.Equal(t, resp[0].Meid, "RAN_NAME_1")
767 assert.Equal(t, resp[0].ClientEndpoint, []string{"localhost:13560", "localhost:13660"})
770 waiter := rtmgrHttp.AllocNextEvent(false)
771 deltrans1 := xappConn1.SendSubsDelReq(t, nil, e2SubsId1)
774 xappConn1.RecvSubsDelResp(t, deltrans1)
777 deltrans2 := xappConn2.SendSubsDelReq(t, nil, e2SubsId2)
778 delreq2, delmsg2 := e2termConn1.RecvSubsDelReq(t)
779 e2termConn1.SendSubsDelResp(t, delreq2, delmsg2)
780 xappConn2.RecvSubsDelResp(t, deltrans2)
781 //Wait that subs is cleaned
782 mainCtrl.wait_subs_clean(t, e2SubsId2, 10)
784 xappConn1.TestMsgChanEmpty(t)
785 xappConn2.TestMsgChanEmpty(t)
786 e2termConn1.TestMsgChanEmpty(t)
787 mainCtrl.wait_registry_empty(t, 10)
789 mainCtrl.VerifyCounterValues(t)
792 //-----------------------------------------------------------------------------
794 //-----------------------------------------------------------------------------
795 // TestSubReqAndSubDelOk
798 // +-------+ +---------+ +---------+
799 // | xapp | | submgr | | e2term |
800 // +-------+ +---------+ +---------+
803 // |------------->| |
806 // | |------------->|
809 // | |<-------------|
812 // |<-------------| |
816 // |------------->| |
819 // | |------------->|
822 // | |<-------------|
825 // |<-------------| |
827 //-----------------------------------------------------------------------------
828 func TestSubReqAndSubDelOk(t *testing.T) {
829 CaseBegin("TestSubReqAndSubDelOk")
831 // Init counter check
832 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
833 Counter{cSubReqFromXapp, 1},
834 Counter{cSubReqToE2, 1},
835 Counter{cSubRespFromE2, 1},
836 Counter{cSubRespToXapp, 1},
837 Counter{cSubDelReqFromXapp, 1},
838 Counter{cSubDelReqToE2, 1},
839 Counter{cSubDelRespFromE2, 1},
840 Counter{cSubDelRespToXapp, 1},
843 cretrans := xappConn1.SendSubsReq(t, nil, nil)
844 crereq, cremsg := e2termConn1.RecvSubsReq(t)
845 e2termConn1.SendSubsResp(t, crereq, cremsg)
846 e2SubsId := xappConn1.RecvSubsResp(t, cretrans)
848 resp, _ := xapp.Subscription.QuerySubscriptions()
849 assert.Equal(t, resp[0].SubscriptionID, int64(e2SubsId))
850 assert.Equal(t, resp[0].Meid, "RAN_NAME_1")
851 assert.Equal(t, resp[0].ClientEndpoint, []string{"localhost:13560"})
853 deltrans := xappConn1.SendSubsDelReq(t, nil, e2SubsId)
854 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
856 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
857 xappConn1.RecvSubsDelResp(t, deltrans)
859 //Wait that subs is cleaned
860 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
862 xappConn1.TestMsgChanEmpty(t)
863 xappConn2.TestMsgChanEmpty(t)
864 e2termConn1.TestMsgChanEmpty(t)
865 mainCtrl.wait_registry_empty(t, 10)
867 mainCtrl.VerifyCounterValues(t)
870 //-----------------------------------------------------------------------------
871 // TestSubReqRetransmission
874 // +-------+ +---------+ +---------+
875 // | xapp | | submgr | | e2term |
876 // +-------+ +---------+ +---------+
879 // |------------->| |
882 // | |------------->|
886 // |------------->| |
889 // | |<-------------|
892 // |<-------------| |
897 //-----------------------------------------------------------------------------
898 func TestSubReqRetransmission(t *testing.T) {
899 CaseBegin("TestSubReqRetransmission")
902 cretrans := xappConn1.SendSubsReq(t, nil, nil)
903 crereq, cremsg := e2termConn1.RecvSubsReq(t)
905 seqBef := mainCtrl.get_msgcounter(t)
906 xappConn1.SendSubsReq(t, nil, cretrans) //Retransmitted SubReq
907 mainCtrl.wait_msgcounter_change(t, seqBef, 10)
909 // hack as there is no real way to see has message be handled.
910 // Previuos counter check just tells that is has been received by submgr
911 // --> artificial delay
912 <-time.After(1 * time.Second)
913 e2termConn1.SendSubsResp(t, crereq, cremsg)
914 e2SubsId := xappConn1.RecvSubsResp(t, cretrans)
917 deltrans := xappConn1.SendSubsDelReq(t, nil, e2SubsId)
918 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
919 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
920 xappConn1.RecvSubsDelResp(t, deltrans)
922 //Wait that subs is cleaned
923 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
925 xappConn1.TestMsgChanEmpty(t)
926 xappConn2.TestMsgChanEmpty(t)
927 e2termConn1.TestMsgChanEmpty(t)
928 mainCtrl.wait_registry_empty(t, 10)
931 //-----------------------------------------------------------------------------
932 // TestSubDelReqRetransmission
935 // +-------+ +---------+ +---------+
936 // | xapp | | submgr | | e2term |
937 // +-------+ +---------+ +---------+
943 // |------------->| |
946 // | |------------->|
951 // |------------->| |
954 // | |<-------------|
957 // |<-------------| |
959 //-----------------------------------------------------------------------------
960 func TestSubDelReqRetransmission(t *testing.T) {
961 CaseBegin("TestSubDelReqRetransmission")
964 cretrans := xappConn1.SendSubsReq(t, nil, nil)
965 crereq, cremsg := e2termConn1.RecvSubsReq(t)
966 e2termConn1.SendSubsResp(t, crereq, cremsg)
967 e2SubsId := xappConn1.RecvSubsResp(t, cretrans)
970 deltrans := xappConn1.SendSubsDelReq(t, nil, e2SubsId)
971 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
973 seqBef := mainCtrl.get_msgcounter(t)
974 xappConn1.SendSubsDelReq(t, deltrans, e2SubsId) //Retransmitted SubDelReq
975 mainCtrl.wait_msgcounter_change(t, seqBef, 10)
977 // hack as there is no real way to see has message be handled.
978 // Previuos counter check just tells that is has been received by submgr
979 // --> artificial delay
980 <-time.After(1 * time.Second)
982 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
983 xappConn1.RecvSubsDelResp(t, deltrans)
985 //Wait that subs is cleaned
986 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
988 xappConn1.TestMsgChanEmpty(t)
989 xappConn2.TestMsgChanEmpty(t)
990 e2termConn1.TestMsgChanEmpty(t)
991 mainCtrl.wait_registry_empty(t, 10)
994 //-----------------------------------------------------------------------------
995 // TestSubDelReqCollision
998 // +-------+ +---------+ +---------+
999 // | xapp | | submgr | | e2term |
1000 // +-------+ +---------+ +---------+
1002 // | [SUBS CREATE] |
1005 // | SubDelReq 1 | |
1006 // |------------->| |
1008 // | | SubDelReq 1 |
1009 // | |------------->|
1011 // | SubDelReq 2 | |
1014 // |------------->| |
1016 // | | SubDelResp 1 |
1017 // | |<-------------|
1019 // | SubDelResp 1 | |
1020 // |<-------------| |
1022 // | SubDelResp 2 | |
1023 // |<-------------| |
1025 //-----------------------------------------------------------------------------
1027 func TestSubDelReqCollision(t *testing.T) {
1028 CaseBegin("TestSubDelReqCollision")
1031 cretrans := xappConn1.SendSubsReq(t, nil, nil)
1032 crereq, cremsg := e2termConn1.RecvSubsReq(t)
1033 e2termConn1.SendSubsResp(t, crereq, cremsg)
1034 e2SubsId := xappConn1.RecvSubsResp(t, cretrans)
1037 xappConn1.SendSubsDelReq(t, nil, e2SubsId)
1038 delreq1, delmsg1 := e2termConn1.RecvSubsDelReq(t)
1040 // Subs Delete colliding
1041 seqBef := mainCtrl.get_msgcounter(t)
1042 deltranscol2 := xappConn1.NewRmrTransactionId("", "RAN_NAME_1")
1043 xappConn1.SendSubsDelReq(t, deltranscol2, e2SubsId) //Colliding SubDelReq
1044 mainCtrl.wait_msgcounter_change(t, seqBef, 10)
1046 // hack as there is no real way to see has message be handled.
1047 // Previuos counter check just tells that is has been received by submgr
1048 // --> artificial delay
1049 <-time.After(1 * time.Second)
1051 // Del resp for first and second
1052 e2termConn1.SendSubsDelResp(t, delreq1, delmsg1)
1054 // don't care in which order responses are received
1055 xappConn1.RecvSubsDelResp(t, nil)
1056 xappConn1.RecvSubsDelResp(t, nil)
1058 //Wait that subs is cleaned
1059 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
1061 xappConn1.TestMsgChanEmpty(t)
1062 xappConn2.TestMsgChanEmpty(t)
1063 e2termConn1.TestMsgChanEmpty(t)
1064 mainCtrl.wait_registry_empty(t, 10)
1067 //-----------------------------------------------------------------------------
1068 // TestSubReqAndSubDelOkTwoParallel
1071 // +-------+ +-------+ +---------+ +---------+
1072 // | xapp | | xapp | | submgr | | e2term |
1073 // +-------+ +-------+ +---------+ +---------+
1078 // | |------------->| |
1081 // | | |------------->|
1084 // |------------------------>| |
1087 // | | |------------->|
1090 // | | |<-------------|
1092 // | |<-------------| |
1095 // | | |<-------------|
1097 // |<------------------------| |
1099 // | | [SUBS 1 DELETE] |
1101 // | | [SUBS 2 DELETE] |
1104 //-----------------------------------------------------------------------------
1106 func TestSubReqAndSubDelOkTwoParallel(t *testing.T) {
1107 CaseBegin("TestSubReqAndSubDelOkTwoParallel")
1110 rparams1 := &teststube2ap.E2StubSubsReqParams{}
1112 cretrans1 := xappConn1.SendSubsReq(t, rparams1, nil)
1113 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
1116 rparams2 := &teststube2ap.E2StubSubsReqParams{}
1119 rparams2.Req.EventTriggerDefinition.Data.Length = 1
1120 rparams2.Req.EventTriggerDefinition.Data.Data = make([]uint8, rparams2.Req.EventTriggerDefinition.Data.Length)
1121 rparams2.Req.EventTriggerDefinition.Data.Data[0] = 2
1123 cretrans2 := xappConn2.SendSubsReq(t, rparams2, nil)
1124 crereq2, cremsg2 := e2termConn1.RecvSubsReq(t)
1127 e2termConn1.SendSubsResp(t, crereq1, cremsg1)
1128 e2SubsId1 := xappConn1.RecvSubsResp(t, cretrans1)
1131 e2termConn1.SendSubsResp(t, crereq2, cremsg2)
1132 e2SubsId2 := xappConn2.RecvSubsResp(t, cretrans2)
1135 deltrans1 := xappConn1.SendSubsDelReq(t, nil, e2SubsId1)
1136 delreq1, delmsg1 := e2termConn1.RecvSubsDelReq(t)
1137 e2termConn1.SendSubsDelResp(t, delreq1, delmsg1)
1138 xappConn1.RecvSubsDelResp(t, deltrans1)
1139 //Wait that subs is cleaned
1140 mainCtrl.wait_subs_clean(t, e2SubsId1, 10)
1143 deltrans2 := xappConn2.SendSubsDelReq(t, nil, e2SubsId2)
1144 delreq2, delmsg2 := e2termConn1.RecvSubsDelReq(t)
1145 e2termConn1.SendSubsDelResp(t, delreq2, delmsg2)
1146 xappConn2.RecvSubsDelResp(t, deltrans2)
1147 //Wait that subs is cleaned
1148 mainCtrl.wait_subs_clean(t, e2SubsId2, 10)
1150 xappConn1.TestMsgChanEmpty(t)
1151 xappConn2.TestMsgChanEmpty(t)
1152 e2termConn1.TestMsgChanEmpty(t)
1153 mainCtrl.wait_registry_empty(t, 10)
1156 //-----------------------------------------------------------------------------
1157 // TestSameSubsDiffRan
1158 // Same subscription to different RANs
1161 // +-------+ +---------+ +---------+
1162 // | xapp | | submgr | | e2term |
1163 // +-------+ +---------+ +---------+
1168 // |------------->| |
1171 // | |------------->|
1173 // | | SubResp(r1) |
1174 // | |<-------------|
1176 // | SubResp(r1) | |
1177 // |<-------------| |
1180 // |------------->| |
1183 // | |------------->|
1185 // | | SubResp(r2) |
1186 // | |<-------------|
1188 // | SubResp(r2) | |
1189 // |<-------------| |
1191 // | [SUBS r1 DELETE] |
1193 // | [SUBS r2 DELETE] |
1196 //-----------------------------------------------------------------------------
1197 func TestSameSubsDiffRan(t *testing.T) {
1198 CaseBegin("TestSameSubsDiffRan")
1201 cretrans1 := xappConn1.NewRmrTransactionId("", "RAN_NAME_1")
1202 xappConn1.SendSubsReq(t, nil, cretrans1)
1203 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
1204 e2termConn1.SendSubsResp(t, crereq1, cremsg1)
1205 e2SubsId1 := xappConn1.RecvSubsResp(t, cretrans1)
1208 cretrans2 := xappConn1.NewRmrTransactionId("", "RAN_NAME_2")
1209 xappConn1.SendSubsReq(t, nil, cretrans2)
1210 crereq2, cremsg2 := e2termConn1.RecvSubsReq(t)
1211 e2termConn1.SendSubsResp(t, crereq2, cremsg2)
1212 e2SubsId2 := xappConn1.RecvSubsResp(t, cretrans2)
1215 deltrans1 := xappConn1.NewRmrTransactionId("", "RAN_NAME_1")
1216 xappConn1.SendSubsDelReq(t, deltrans1, e2SubsId1)
1217 delreq1, delmsg1 := e2termConn1.RecvSubsDelReq(t)
1218 e2termConn1.SendSubsDelResp(t, delreq1, delmsg1)
1219 xappConn1.RecvSubsDelResp(t, deltrans1)
1220 //Wait that subs is cleaned
1221 mainCtrl.wait_subs_clean(t, e2SubsId1, 10)
1224 deltrans2 := xappConn1.NewRmrTransactionId("", "RAN_NAME_2")
1225 xappConn1.SendSubsDelReq(t, deltrans2, e2SubsId2)
1226 delreq2, delmsg2 := e2termConn1.RecvSubsDelReq(t)
1227 e2termConn1.SendSubsDelResp(t, delreq2, delmsg2)
1228 xappConn1.RecvSubsDelResp(t, deltrans2)
1229 //Wait that subs is cleaned
1230 mainCtrl.wait_subs_clean(t, e2SubsId2, 10)
1232 xappConn1.TestMsgChanEmpty(t)
1233 xappConn2.TestMsgChanEmpty(t)
1234 e2termConn1.TestMsgChanEmpty(t)
1235 mainCtrl.wait_registry_empty(t, 10)
1238 //-----------------------------------------------------------------------------
1239 // TestSubReqRetryInSubmgr
1242 // +-------+ +---------+ +---------+
1243 // | xapp | | submgr | | e2term |
1244 // +-------+ +---------+ +---------+
1247 // |------------->| |
1250 // | |------------->|
1254 // | |------------->|
1257 // | |<-------------|
1260 // |<-------------| |
1262 // | [SUBS DELETE] |
1265 //-----------------------------------------------------------------------------
1267 func TestSubReqRetryInSubmgr(t *testing.T) {
1268 CaseBegin("TestSubReqRetryInSubmgr start")
1270 // Init counter check
1271 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
1272 Counter{cSubReqFromXapp, 1},
1273 Counter{cSubReqToE2, 1},
1274 Counter{cSubReqTimerExpiry, 1},
1275 Counter{cSubReReqToE2, 1},
1276 Counter{cSubRespFromE2, 1},
1277 Counter{cSubRespToXapp, 1},
1278 Counter{cSubDelReqFromXapp, 1},
1279 Counter{cSubDelReqToE2, 1},
1280 Counter{cSubDelRespFromE2, 1},
1281 Counter{cSubDelRespToXapp, 1},
1284 // Xapp: Send SubsReq
1285 cretrans := xappConn1.SendSubsReq(t, nil, nil)
1287 // E2t: Receive 1st SubsReq
1288 e2termConn1.RecvSubsReq(t)
1290 // E2t: Receive 2nd SubsReq and send SubsResp
1291 crereq, cremsg := e2termConn1.RecvSubsReq(t)
1292 e2termConn1.SendSubsResp(t, crereq, cremsg)
1294 // Xapp: Receive SubsResp
1295 e2SubsId := xappConn1.RecvSubsResp(t, cretrans)
1297 deltrans := xappConn1.SendSubsDelReq(t, nil, e2SubsId)
1298 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
1299 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
1300 xappConn1.RecvSubsDelResp(t, deltrans)
1302 // Wait that subs is cleaned
1303 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
1305 xappConn1.TestMsgChanEmpty(t)
1306 xappConn2.TestMsgChanEmpty(t)
1307 e2termConn1.TestMsgChanEmpty(t)
1308 mainCtrl.wait_registry_empty(t, 10)
1310 mainCtrl.VerifyCounterValues(t)
1313 //-----------------------------------------------------------------------------
1314 // TestSubReqTwoRetriesNoRespSubDelRespInSubmgr
1317 // +-------+ +---------+ +---------+
1318 // | xapp | | submgr | | e2term |
1319 // +-------+ +---------+ +---------+
1322 // |------------->| |
1325 // | |------------->|
1329 // | |------------->|
1332 // | |------------->|
1335 // | |<-------------|
1338 //-----------------------------------------------------------------------------
1339 func TestSubReqRetryNoRespSubDelRespInSubmgr(t *testing.T) {
1340 CaseBegin("TestSubReqTwoRetriesNoRespSubDelRespInSubmgr start")
1342 // Init counter check
1343 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
1344 Counter{cSubReqFromXapp, 1},
1345 Counter{cSubReqToE2, 1},
1346 Counter{cSubReReqToE2, 1},
1347 Counter{cSubReqTimerExpiry, 2},
1348 Counter{cSubDelReqToE2, 1},
1349 Counter{cSubDelRespFromE2, 1},
1352 // Xapp: Send SubsReq
1353 xappConn1.SendSubsReq(t, nil, nil)
1355 // E2t: Receive 1st SubsReq
1356 e2termConn1.RecvSubsReq(t)
1358 // E2t: Receive 2nd SubsReq
1359 e2termConn1.RecvSubsReq(t)
1361 // E2t: Send receive SubsDelReq and send SubsResp
1362 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
1363 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
1365 // Wait that subs is cleaned
1366 mainCtrl.wait_subs_clean(t, delreq.RequestId.InstanceId, 10)
1368 xappConn1.TestMsgChanEmpty(t)
1369 xappConn2.TestMsgChanEmpty(t)
1370 e2termConn1.TestMsgChanEmpty(t)
1371 mainCtrl.wait_registry_empty(t, 10)
1373 mainCtrl.VerifyCounterValues(t)
1376 //-----------------------------------------------------------------------------
1377 // TestSubReqTwoRetriesNoRespAtAllInSubmgr
1380 // +-------+ +---------+ +---------+
1381 // | xapp | | submgr | | e2term |
1382 // +-------+ +---------+ +---------+
1385 // |------------->| |
1388 // | |------------->|
1392 // | |------------->|
1395 // | |------------->|
1399 // | |------------->|
1403 //-----------------------------------------------------------------------------
1405 func TestSubReqTwoRetriesNoRespAtAllInSubmgr(t *testing.T) {
1406 CaseBegin("TestSubReqTwoRetriesNoRespAtAllInSubmgr start")
1408 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
1409 Counter{cSubReqFromXapp, 1},
1410 Counter{cSubReqToE2, 1},
1411 Counter{cSubReReqToE2, 1},
1412 Counter{cSubReqTimerExpiry, 2},
1413 Counter{cSubDelReqToE2, 1},
1414 Counter{cSubDelReReqToE2, 1},
1415 Counter{cSubDelReqTimerExpiry, 2},
1418 // Xapp: Send SubsReq
1419 xappConn1.SendSubsReq(t, nil, nil)
1421 // E2t: Receive 1st SubsReq
1422 e2termConn1.RecvSubsReq(t)
1424 // E2t: Receive 2nd SubsReq
1425 e2termConn1.RecvSubsReq(t)
1427 // E2t: Receive 1st SubsDelReq
1428 e2termConn1.RecvSubsDelReq(t)
1430 // E2t: Receive 2nd SubsDelReq
1431 delreq, _ := e2termConn1.RecvSubsDelReq(t)
1433 // Wait that subs is cleaned
1434 mainCtrl.wait_subs_clean(t, delreq.RequestId.InstanceId, 15)
1436 xappConn1.TestMsgChanEmpty(t)
1437 xappConn2.TestMsgChanEmpty(t)
1438 e2termConn1.TestMsgChanEmpty(t)
1439 mainCtrl.wait_registry_empty(t, 10)
1441 mainCtrl.VerifyCounterValues(t)
1444 //-----------------------------------------------------------------------------
1445 // TestSubReqSubFailRespInSubmgr
1448 // +-------+ +---------+ +---------+
1449 // | xapp | | submgr | | e2term |
1450 // +-------+ +---------+ +---------+
1453 // |------------->| |
1456 // | |------------->|
1459 // | |<-------------|
1462 // |<-------------| |
1465 //-----------------------------------------------------------------------------
1467 func TestSubReqSubFailRespInSubmgr(t *testing.T) {
1468 CaseBegin("TestSubReqSubFailRespInSubmgr start")
1470 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
1471 Counter{cSubReqFromXapp, 1},
1472 Counter{cSubReqToE2, 1},
1473 Counter{cSubFailFromE2, 1},
1474 Counter{cSubFailToXapp, 1},
1477 // Xapp: Send SubsReq
1478 cretrans := xappConn1.SendSubsReq(t, nil, nil)
1480 // E2t: Receive SubsReq and send SubsFail (first)
1481 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
1482 fparams1 := &teststube2ap.E2StubSubsFailParams{}
1483 fparams1.Set(crereq1)
1484 e2termConn1.SendSubsFail(t, fparams1, cremsg1)
1486 // Xapp: Receive SubsFail
1487 e2SubsId := xappConn1.RecvSubsFail(t, cretrans)
1489 // Wait that subs is cleaned
1490 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
1492 xappConn1.TestMsgChanEmpty(t)
1493 xappConn2.TestMsgChanEmpty(t)
1494 e2termConn1.TestMsgChanEmpty(t)
1495 mainCtrl.wait_registry_empty(t, 10)
1497 mainCtrl.VerifyCounterValues(t)
1500 //-----------------------------------------------------------------------------
1501 // TestSubDelReqRetryInSubmgr
1504 // +-------+ +---------+ +---------+
1505 // | xapp | | submgr | | e2term |
1506 // +-------+ +---------+ +---------+
1508 // | [SUBS CREATE] |
1512 // |------------->| |
1515 // | |------------->|
1518 // | |------------->|
1521 // | |<-------------|
1524 // |<-------------| |
1526 //-----------------------------------------------------------------------------
1528 func TestSubDelReqRetryInSubmgr(t *testing.T) {
1530 CaseBegin("TestSubDelReqRetryInSubmgr start")
1533 cretrans := xappConn1.SendSubsReq(t, nil, nil)
1534 crereq, cremsg := e2termConn1.RecvSubsReq(t)
1535 e2termConn1.SendSubsResp(t, crereq, cremsg)
1536 e2SubsId := xappConn1.RecvSubsResp(t, cretrans)
1539 // Xapp: Send SubsDelReq
1540 deltrans := xappConn1.SendSubsDelReq(t, nil, e2SubsId)
1542 // E2t: Receive 1st SubsDelReq
1543 e2termConn1.RecvSubsDelReq(t)
1545 // E2t: Receive 2nd SubsDelReq and send SubsDelResp
1546 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
1547 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
1549 // Xapp: Receive SubsDelResp
1550 xappConn1.RecvSubsDelResp(t, deltrans)
1552 // Wait that subs is cleaned
1553 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
1555 xappConn1.TestMsgChanEmpty(t)
1556 xappConn2.TestMsgChanEmpty(t)
1557 e2termConn1.TestMsgChanEmpty(t)
1558 mainCtrl.wait_registry_empty(t, 10)
1561 //-----------------------------------------------------------------------------
1562 // TestSubDelReqTwoRetriesNoRespInSubmgr
1565 // +-------+ +---------+ +---------+
1566 // | xapp | | submgr | | e2term |
1567 // +-------+ +---------+ +---------+
1569 // | [SUBS CREATE] |
1573 // |------------->| |
1576 // | |------------->|
1579 // | |------------->|
1583 // |<-------------| |
1585 //-----------------------------------------------------------------------------
1587 func TestSubDelReqTwoRetriesNoRespInSubmgr(t *testing.T) {
1589 CaseBegin("TestSubDelReTwoRetriesNoRespInSubmgr start")
1592 cretrans := xappConn1.SendSubsReq(t, nil, nil)
1593 crereq, cremsg := e2termConn1.RecvSubsReq(t)
1594 e2termConn1.SendSubsResp(t, crereq, cremsg)
1595 e2SubsId := xappConn1.RecvSubsResp(t, cretrans)
1598 // Xapp: Send SubsDelReq
1599 deltrans := xappConn1.SendSubsDelReq(t, nil, e2SubsId)
1601 // E2t: Receive 1st SubsDelReq
1602 e2termConn1.RecvSubsDelReq(t)
1604 // E2t: Receive 2nd SubsDelReq
1605 e2termConn1.RecvSubsDelReq(t)
1607 // Xapp: Receive SubsDelResp
1608 xappConn1.RecvSubsDelResp(t, deltrans)
1610 // Wait that subs is cleaned
1611 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
1613 xappConn1.TestMsgChanEmpty(t)
1614 xappConn2.TestMsgChanEmpty(t)
1615 e2termConn1.TestMsgChanEmpty(t)
1616 mainCtrl.wait_registry_empty(t, 10)
1619 //-----------------------------------------------------------------------------
1620 // TestSubDelReqSubDelFailRespInSubmgr
1623 // +-------+ +---------+ +---------+
1624 // | xapp | | submgr | | e2term |
1625 // +-------+ +---------+ +---------+
1627 // | [SUBS CREATE] |
1631 // |------------->| |
1634 // | |------------->|
1637 // | |<-------------|
1640 // |<-------------| |
1643 //-----------------------------------------------------------------------------
1645 func TestSubDelReqSubDelFailRespInSubmgr(t *testing.T) {
1646 CaseBegin("TestSubReqSubDelFailRespInSubmgr start")
1648 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
1649 Counter{cSubReqFromXapp, 1},
1650 Counter{cSubReqToE2, 1},
1651 Counter{cSubRespFromE2, 1},
1652 Counter{cSubRespToXapp, 1},
1653 Counter{cSubDelReqFromXapp, 1},
1654 Counter{cSubDelReqToE2, 1},
1655 Counter{cSubDelFailFromE2, 1},
1656 Counter{cSubDelRespToXapp, 1},
1660 cretrans := xappConn1.SendSubsReq(t, nil, nil)
1661 crereq, cremsg := e2termConn1.RecvSubsReq(t)
1662 e2termConn1.SendSubsResp(t, crereq, cremsg)
1663 e2SubsId := xappConn1.RecvSubsResp(t, cretrans)
1665 // Xapp: Send SubsDelReq
1666 deltrans := xappConn1.SendSubsDelReq(t, nil, e2SubsId)
1668 // E2t: Send receive SubsDelReq and send SubsDelFail
1669 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
1670 e2termConn1.SendSubsDelFail(t, delreq, delmsg)
1672 // Xapp: Receive SubsDelResp
1673 xappConn1.RecvSubsDelResp(t, deltrans)
1675 // Wait that subs is cleaned
1676 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
1678 xappConn1.TestMsgChanEmpty(t)
1679 xappConn2.TestMsgChanEmpty(t)
1680 e2termConn1.TestMsgChanEmpty(t)
1681 mainCtrl.wait_registry_empty(t, 10)
1683 mainCtrl.VerifyCounterValues(t)
1686 //-----------------------------------------------------------------------------
1687 // TestSubReqAndSubDelOkSameAction
1690 // +-------+ +-------+ +---------+ +---------+
1691 // | xapp2 | | xapp1 | | submgr | | e2term |
1692 // +-------+ +-------+ +---------+ +---------+
1697 // | |------------->| |
1700 // | | |------------->|
1702 // | | |<-------------|
1704 // | |<-------------| |
1707 // |--------------------------->| |
1710 // |<---------------------------| |
1712 // | | SubDelReq 1 | |
1713 // | |------------->| |
1715 // | | SubDelResp 1 | |
1716 // | |<-------------| |
1718 // | SubDelReq 2 | |
1719 // |--------------------------->| |
1721 // | | | SubDelReq 2 |
1722 // | | |------------->|
1724 // | | | SubDelReq 2 |
1725 // | | |------------->|
1727 // | SubDelResp 2 | |
1728 // |<---------------------------| |
1730 //-----------------------------------------------------------------------------
1731 func TestSubReqAndSubDelOkSameAction(t *testing.T) {
1732 CaseBegin("TestSubReqAndSubDelOkSameAction")
1734 // Init counter check
1735 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
1736 Counter{cSubReqFromXapp, 2},
1737 Counter{cSubReqToE2, 1},
1738 Counter{cSubRespFromE2, 1},
1739 Counter{cSubRespToXapp, 2},
1740 Counter{cMergedSubscriptions, 1},
1741 Counter{cUnmergedSubscriptions, 1},
1742 Counter{cSubDelReqFromXapp, 2},
1743 Counter{cSubDelReqToE2, 1},
1744 Counter{cSubDelRespFromE2, 1},
1745 Counter{cSubDelRespToXapp, 2},
1749 rparams1 := &teststube2ap.E2StubSubsReqParams{}
1751 cretrans1 := xappConn1.SendSubsReq(t, rparams1, nil)
1752 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
1753 e2termConn1.SendSubsResp(t, crereq1, cremsg1)
1754 e2SubsId1 := xappConn1.RecvSubsResp(t, cretrans1)
1757 rparams2 := &teststube2ap.E2StubSubsReqParams{}
1759 cretrans2 := xappConn2.SendSubsReq(t, rparams2, nil)
1760 e2SubsId2 := xappConn2.RecvSubsResp(t, cretrans2)
1762 resp, _ := xapp.Subscription.QuerySubscriptions()
1763 assert.Equal(t, resp[0].SubscriptionID, int64(e2SubsId1))
1764 assert.Equal(t, resp[0].Meid, "RAN_NAME_1")
1765 assert.Equal(t, resp[0].ClientEndpoint, []string{"localhost:13560", "localhost:13660"})
1768 deltrans1 := xappConn1.SendSubsDelReq(t, nil, e2SubsId1)
1769 xappConn1.RecvSubsDelResp(t, deltrans1)
1772 deltrans2 := xappConn2.SendSubsDelReq(t, nil, e2SubsId2)
1773 delreq2, delmsg2 := e2termConn1.RecvSubsDelReq(t)
1774 e2termConn1.SendSubsDelResp(t, delreq2, delmsg2)
1775 xappConn2.RecvSubsDelResp(t, deltrans2)
1776 //Wait that subs is cleaned
1777 mainCtrl.wait_subs_clean(t, e2SubsId2, 10)
1779 xappConn1.TestMsgChanEmpty(t)
1780 xappConn2.TestMsgChanEmpty(t)
1781 e2termConn1.TestMsgChanEmpty(t)
1782 mainCtrl.wait_registry_empty(t, 10)
1784 mainCtrl.VerifyCounterValues(t)
1787 //-----------------------------------------------------------------------------
1788 // TestSubReqAndSubDelOkSameActionParallel
1791 // +-------+ +-------+ +---------+ +---------+
1792 // | xapp2 | | xapp1 | | submgr | | e2term |
1793 // +-------+ +-------+ +---------+ +---------+
1798 // | |------------->| |
1801 // | | |------------->|
1803 // |--------------------------->| |
1805 // | | |<-------------|
1807 // | |<-------------| |
1810 // |<---------------------------| |
1812 // | | SubDelReq 1 | |
1813 // | |------------->| |
1815 // | | SubDelResp 1 | |
1816 // | |<-------------| |
1818 // | SubDelReq 2 | |
1819 // |--------------------------->| |
1821 // | | | SubDelReq 2 |
1822 // | | |------------->|
1824 // | | | SubDelReq 2 |
1825 // | | |------------->|
1827 // | SubDelResp 2 | |
1828 // |<---------------------------| |
1830 //-----------------------------------------------------------------------------
1831 func TestSubReqAndSubDelOkSameActionParallel(t *testing.T) {
1832 CaseBegin("TestSubReqAndSubDelOkSameActionParallel")
1835 rparams1 := &teststube2ap.E2StubSubsReqParams{}
1837 cretrans1 := xappConn1.SendSubsReq(t, rparams1, nil)
1838 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
1841 rparams2 := &teststube2ap.E2StubSubsReqParams{}
1843 cretrans2 := xappConn2.SendSubsReq(t, rparams2, nil)
1846 e2termConn1.SendSubsResp(t, crereq1, cremsg1)
1847 e2SubsId1 := xappConn1.RecvSubsResp(t, cretrans1)
1850 e2SubsId2 := xappConn2.RecvSubsResp(t, cretrans2)
1853 deltrans1 := xappConn1.SendSubsDelReq(t, nil, e2SubsId1)
1854 xappConn1.RecvSubsDelResp(t, deltrans1)
1857 deltrans2 := xappConn2.SendSubsDelReq(t, nil, e2SubsId2)
1858 delreq2, delmsg2 := e2termConn1.RecvSubsDelReq(t)
1859 e2termConn1.SendSubsDelResp(t, delreq2, delmsg2)
1860 xappConn2.RecvSubsDelResp(t, deltrans2)
1862 //Wait that subs is cleaned
1863 mainCtrl.wait_subs_clean(t, e2SubsId2, 10)
1865 xappConn1.TestMsgChanEmpty(t)
1866 xappConn2.TestMsgChanEmpty(t)
1867 e2termConn1.TestMsgChanEmpty(t)
1868 mainCtrl.wait_registry_empty(t, 10)
1871 //-----------------------------------------------------------------------------
1872 // TestSubReqAndSubDelNokSameActionParallel
1875 // +-------+ +-------+ +---------+ +---------+
1876 // | xapp2 | | xapp1 | | submgr | | e2term |
1877 // +-------+ +-------+ +---------+ +---------+
1882 // | |------------->| |
1885 // | | |------------->|
1887 // |--------------------------->| |
1889 // | | |<-------------|
1892 // | |<-------------| |
1895 // |<---------------------------| |
1897 //-----------------------------------------------------------------------------
1898 func TestSubReqAndSubDelNokSameActionParallel(t *testing.T) {
1899 CaseBegin("TestSubReqAndSubDelNokSameActionParallel")
1902 rparams1 := &teststube2ap.E2StubSubsReqParams{}
1904 cretrans1 := xappConn1.SendSubsReq(t, rparams1, nil)
1906 // E2t: Receive SubsReq (first)
1907 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
1910 rparams2 := &teststube2ap.E2StubSubsReqParams{}
1912 subepcnt2 := mainCtrl.get_subs_entrypoint_cnt(t, crereq1.RequestId.InstanceId)
1913 cretrans2 := xappConn2.SendSubsReq(t, rparams2, nil)
1914 mainCtrl.wait_subs_entrypoint_cnt_change(t, crereq1.RequestId.InstanceId, subepcnt2, 10)
1916 // E2t: send SubsFail (first)
1917 fparams1 := &teststube2ap.E2StubSubsFailParams{}
1918 fparams1.Set(crereq1)
1919 e2termConn1.SendSubsFail(t, fparams1, cremsg1)
1922 e2SubsId1 := xappConn1.RecvSubsFail(t, cretrans1)
1924 xappConn2.RecvSubsFail(t, cretrans2)
1926 //Wait that subs is cleaned
1927 mainCtrl.wait_subs_clean(t, e2SubsId1, 15)
1929 xappConn1.TestMsgChanEmpty(t)
1930 xappConn2.TestMsgChanEmpty(t)
1931 e2termConn1.TestMsgChanEmpty(t)
1932 mainCtrl.wait_registry_empty(t, 10)
1935 //-----------------------------------------------------------------------------
1936 // TestSubReqAndSubDelNoAnswerSameActionParallel
1939 // +-------+ +-------+ +---------+ +---------+
1940 // | xapp2 | | xapp1 | | submgr | | e2term |
1941 // +-------+ +-------+ +---------+ +---------+
1946 // | |------------->| |
1949 // | | |------------->|
1951 // |--------------------------->| |
1954 // | | |------------->|
1957 // | | | SubDelReq |
1958 // | | |------------->|
1960 // | | | SubDelResp |
1961 // | | |<-------------|
1963 //-----------------------------------------------------------------------------
1964 func TestSubReqAndSubDelNoAnswerSameActionParallel(t *testing.T) {
1965 CaseBegin("TestSubReqAndSubDelNoAnswerSameActionParallel")
1968 rparams1 := &teststube2ap.E2StubSubsReqParams{}
1970 xappConn1.SendSubsReq(t, rparams1, nil)
1972 crereq1, _ := e2termConn1.RecvSubsReq(t)
1975 rparams2 := &teststube2ap.E2StubSubsReqParams{}
1977 subepcnt2 := mainCtrl.get_subs_entrypoint_cnt(t, crereq1.RequestId.InstanceId)
1978 xappConn2.SendSubsReq(t, rparams2, nil)
1979 mainCtrl.wait_subs_entrypoint_cnt_change(t, crereq1.RequestId.InstanceId, subepcnt2, 10)
1981 //Req1 (retransmitted)
1982 e2termConn1.RecvSubsReq(t)
1984 delreq1, delmsg1 := e2termConn1.RecvSubsDelReq(t)
1985 e2termConn1.SendSubsDelResp(t, delreq1, delmsg1)
1987 //Wait that subs is cleaned
1988 mainCtrl.wait_subs_clean(t, delreq1.RequestId.InstanceId, 10)
1990 xappConn1.TestMsgChanEmpty(t)
1991 xappConn2.TestMsgChanEmpty(t)
1992 e2termConn1.TestMsgChanEmpty(t)
1993 mainCtrl.wait_registry_empty(t, 15)
1996 //----------------------------- Policy cases ---------------------------------
1997 //-----------------------------------------------------------------------------
1998 // TestSubReqPolicyAndSubDelOk
2001 // +-------+ +---------+ +---------+
2002 // | xapp | | submgr | | e2term |
2003 // +-------+ +---------+ +---------+
2006 // |------------->| |
2009 // | |------------->|
2012 // | |<-------------|
2015 // |<-------------| |
2019 // |------------->| |
2022 // | |------------->|
2025 // | |<-------------|
2028 // |<-------------| |
2030 //-----------------------------------------------------------------------------
2031 func TestSubReqPolicyAndSubDelOk(t *testing.T) {
2032 CaseBegin("TestSubReqAndSubDelOk")
2034 rparams1 := &teststube2ap.E2StubSubsReqParams{}
2036 rparams1.Req.ActionSetups[0].ActionType = e2ap.E2AP_ActionTypePolicy
2037 cretrans := xappConn1.SendSubsReq(t, rparams1, nil)
2039 crereq, cremsg := e2termConn1.RecvSubsReq(t)
2040 e2termConn1.SendSubsResp(t, crereq, cremsg)
2041 e2SubsId := xappConn1.RecvSubsResp(t, cretrans)
2042 deltrans := xappConn1.SendSubsDelReq(t, nil, e2SubsId)
2043 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
2045 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
2046 xappConn1.RecvSubsDelResp(t, deltrans)
2048 //Wait that subs is cleaned
2049 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
2051 xappConn1.TestMsgChanEmpty(t)
2052 xappConn2.TestMsgChanEmpty(t)
2053 e2termConn1.TestMsgChanEmpty(t)
2054 mainCtrl.wait_registry_empty(t, 10)
2057 //-----------------------------------------------------------------------------
2058 // TestSubReqPolicyChangeAndSubDelOk
2061 // +-------+ +---------+ +---------+
2062 // | xapp | | submgr | | e2term |
2063 // +-------+ +---------+ +---------+
2066 // |------------->| |
2069 // | |------------->|
2072 // | |<-------------|
2075 // |<-------------| |
2078 // |------------->| |
2081 // | |------------->|
2084 // | |<-------------|
2087 // |<-------------| |
2090 // |------------->| |
2093 // | |------------->|
2096 // | |<-------------|
2099 // |<-------------| |
2101 //-----------------------------------------------------------------------------
2103 func TestSubReqPolicyChangeAndSubDelOk(t *testing.T) {
2104 CaseBegin("TestSubReqAndSubDelOk")
2106 rparams1 := &teststube2ap.E2StubSubsReqParams{}
2108 rparams1.Req.ActionSetups[0].ActionType = e2ap.E2AP_ActionTypePolicy
2109 cretrans := xappConn1.SendSubsReq(t, rparams1, nil)
2111 crereq, cremsg := e2termConn1.RecvSubsReq(t)
2112 e2termConn1.SendSubsResp(t, crereq, cremsg)
2113 e2SubsId := xappConn1.RecvSubsResp(t, cretrans)
2116 rparams1.Req.RequestId.InstanceId = e2SubsId
2117 rparams1.Req.ActionSetups[0].SubsequentAction.TimetoWait = e2ap.E2AP_TimeToWaitW200ms
2118 xappConn1.SendSubsReq(t, rparams1, cretrans)
2120 crereq, cremsg = e2termConn1.RecvSubsReq(t)
2121 e2termConn1.SendSubsResp(t, crereq, cremsg)
2122 e2SubsId = xappConn1.RecvSubsResp(t, cretrans)
2123 deltrans := xappConn1.SendSubsDelReq(t, nil, e2SubsId)
2124 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
2126 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
2127 xappConn1.RecvSubsDelResp(t, deltrans)
2129 //Wait that subs is cleaned
2130 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
2132 xappConn1.TestMsgChanEmpty(t)
2133 xappConn2.TestMsgChanEmpty(t)
2134 e2termConn1.TestMsgChanEmpty(t)
2135 mainCtrl.wait_registry_empty(t, 10)
2138 //-----------------------------------------------------------------------------
2139 // TestSubReqAndSubDelOkTwoE2termParallel
2142 // +-------+ +---------+ +---------+ +---------+
2143 // | xapp | | submgr | | e2term1 | | e2term2 |
2144 // +-------+ +---------+ +---------+ +---------+
2149 // |------------->| | |
2152 // | |------------->| |
2155 // |------------->| | |
2158 // | |---------------------------->|
2161 // | |<-------------| |
2163 // |<-------------| | |
2165 // | |<----------------------------|
2167 // |<-------------| | |
2169 // | [SUBS 1 DELETE] | |
2171 // | [SUBS 2 DELETE] | |
2174 //-----------------------------------------------------------------------------
2175 func TestSubReqAndSubDelOkTwoE2termParallel(t *testing.T) {
2176 CaseBegin("TestSubReqAndSubDelOkTwoE2termParallel")
2179 cretrans1 := xappConn1.NewRmrTransactionId("", "RAN_NAME_1")
2180 xappConn1.SendSubsReq(t, nil, cretrans1)
2181 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
2183 cretrans2 := xappConn1.NewRmrTransactionId("", "RAN_NAME_11")
2184 xappConn1.SendSubsReq(t, nil, cretrans2)
2185 crereq2, cremsg2 := e2termConn2.RecvSubsReq(t)
2188 e2termConn1.SendSubsResp(t, crereq1, cremsg1)
2189 e2SubsId1 := xappConn1.RecvSubsResp(t, cretrans1)
2192 e2termConn2.SendSubsResp(t, crereq2, cremsg2)
2193 e2SubsId2 := xappConn1.RecvSubsResp(t, cretrans2)
2196 deltrans1 := xappConn1.SendSubsDelReq(t, nil, e2SubsId1)
2197 delreq1, delmsg1 := e2termConn1.RecvSubsDelReq(t)
2198 e2termConn1.SendSubsDelResp(t, delreq1, delmsg1)
2199 xappConn1.RecvSubsDelResp(t, deltrans1)
2200 //Wait that subs is cleaned
2201 mainCtrl.wait_subs_clean(t, e2SubsId1, 10)
2204 deltrans2 := xappConn1.SendSubsDelReq(t, nil, e2SubsId2)
2205 delreq2, delmsg2 := e2termConn2.RecvSubsDelReq(t)
2206 e2termConn2.SendSubsDelResp(t, delreq2, delmsg2)
2207 xappConn1.RecvSubsDelResp(t, deltrans2)
2208 //Wait that subs is cleaned
2209 mainCtrl.wait_subs_clean(t, e2SubsId2, 10)
2211 xappConn1.TestMsgChanEmpty(t)
2212 xappConn2.TestMsgChanEmpty(t)
2213 e2termConn1.TestMsgChanEmpty(t)
2214 e2termConn2.TestMsgChanEmpty(t)
2215 mainCtrl.wait_registry_empty(t, 10)
2218 //-----------------------------------------------------------------------------
2219 // TestSubReqInsertAndSubDelOk
2222 // +-------+ +---------+ +---------+
2223 // | xapp | | submgr | | e2term |
2224 // +-------+ +---------+ +---------+
2227 // |------------->| |
2230 // | |------------->|
2233 // | |<-------------|
2236 // |<-------------| |
2240 // |------------->| |
2243 // | |------------->|
2246 // | |<-------------|
2249 // |<-------------| |
2251 //-----------------------------------------------------------------------------
2252 func TestSubReqInsertAndSubDelOk(t *testing.T) {
2253 CaseBegin("TestInsertSubReqAndSubDelOk")
2255 rparams1 := &teststube2ap.E2StubSubsReqParams{}
2257 rparams1.Req.ActionSetups[0].ActionType = e2ap.E2AP_ActionTypeInsert
2258 cretrans := xappConn1.SendSubsReq(t, rparams1, nil)
2260 crereq, cremsg := e2termConn1.RecvSubsReq(t)
2261 e2termConn1.SendSubsResp(t, crereq, cremsg)
2262 e2SubsId := xappConn1.RecvSubsResp(t, cretrans)
2263 deltrans := xappConn1.SendSubsDelReq(t, nil, e2SubsId)
2264 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
2266 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
2267 xappConn1.RecvSubsDelResp(t, deltrans)
2269 //Wait that subs is cleaned
2270 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
2272 xappConn1.TestMsgChanEmpty(t)
2273 xappConn2.TestMsgChanEmpty(t)
2274 e2termConn1.TestMsgChanEmpty(t)
2275 mainCtrl.wait_registry_empty(t, 10)
2278 //-----------------------------------------------------------------------------
2279 // TestSubReqRetransmissionWithSameSubIdDiffXid
2281 // This case simulates case where xApp restarts and starts sending same
2282 // subscription requests which have already subscribed successfully
2285 // +-------+ +---------+ +---------+
2286 // | xapp | | submgr | | e2term |
2287 // +-------+ +---------+ +---------+
2290 // |------------->| |
2293 // | |------------->|
2296 // | |<-------------|
2299 // |<-------------| |
2301 // | xApp restart | |
2304 // | (retrans with same xApp generated subid but diff xid)
2305 // |------------->| |
2308 // |<-------------| |
2310 // | [SUBS DELETE] |
2313 //-----------------------------------------------------------------------------
2314 func TestSubReqRetransmissionWithSameSubIdDiffXid(t *testing.T) {
2315 CaseBegin("TestSubReqRetransmissionWithSameSubIdDiffXid")
2318 cretrans := xappConn1.SendSubsReq(t, nil, nil)
2319 crereq, cremsg := e2termConn1.RecvSubsReq(t)
2320 e2termConn1.SendSubsResp(t, crereq, cremsg)
2321 e2SubsId := xappConn1.RecvSubsResp(t, cretrans)
2323 // xApp restart here
2324 // --> artificial delay
2325 <-time.After(1 * time.Second)
2328 cretrans = xappConn1.SendSubsReq(t, nil, nil) //Retransmitted SubReq
2329 e2SubsId = xappConn1.RecvSubsResp(t, cretrans)
2332 deltrans := xappConn1.SendSubsDelReq(t, nil, e2SubsId)
2333 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
2334 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
2335 xappConn1.RecvSubsDelResp(t, deltrans)
2337 //Wait that subs is cleaned
2338 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
2340 xappConn1.TestMsgChanEmpty(t)
2341 xappConn2.TestMsgChanEmpty(t)
2342 e2termConn1.TestMsgChanEmpty(t)
2343 mainCtrl.wait_registry_empty(t, 10)
2346 //-----------------------------------------------------------------------------
2347 // TestSubReqNokAndSubDelOkWithRestartInMiddle
2350 // +-------+ +---------+ +---------+
2351 // | xapp | | submgr | | e2term |
2352 // +-------+ +---------+ +---------+
2355 // |------------->| |
2358 // | |------------->|
2363 // | Submgr restart |
2367 // | |------------->|
2370 // | |<-------------|
2373 //-----------------------------------------------------------------------------
2375 func TestSubReqNokAndSubDelOkWithRestartInMiddle(t *testing.T) {
2376 CaseBegin("TestSubReqNokAndSubDelOkWithRestartInMiddle")
2378 // Remove possible existing subscrition
2379 mainCtrl.removeExistingSubscriptions(t)
2381 mainCtrl.SetResetTestFlag(t, true) // subs.DoNotWaitSubResp will be set TRUE for the subscription
2382 xappConn1.SendSubsReq(t, nil, nil)
2383 e2termConn1.RecvSubsReq(t)
2384 mainCtrl.SetResetTestFlag(t, false)
2386 resp, _ := xapp.Subscription.QuerySubscriptions()
2387 assert.Equal(t, resp[0].Meid, "RAN_NAME_1")
2388 assert.Equal(t, resp[0].ClientEndpoint, []string{"localhost:13560"})
2389 e2SubsId := uint32(resp[0].SubscriptionID)
2390 t.Logf("e2SubsId = %v", e2SubsId)
2392 mainCtrl.SimulateRestart(t)
2393 xapp.Logger.Debug("mainCtrl.SimulateRestart done")
2395 // Submgr send delete for uncompleted subscription
2396 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
2397 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
2399 // Wait that subs is cleaned
2400 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
2402 xappConn1.TestMsgChanEmpty(t)
2403 xappConn2.TestMsgChanEmpty(t)
2404 e2termConn1.TestMsgChanEmpty(t)
2405 mainCtrl.wait_registry_empty(t, 10)
2408 //-----------------------------------------------------------------------------
2409 // TestSubReqAndSubDelOkWithRestartInMiddle
2412 // +-------+ +---------+ +---------+
2413 // | xapp | | submgr | | e2term |
2414 // +-------+ +---------+ +---------+
2417 // |------------->| |
2420 // | |------------->|
2423 // | |<-------------|
2426 // |<-------------| |
2429 // | Submgr restart |
2432 // |------------->| |
2435 // | |------------->|
2438 // | |<-------------|
2441 // |<-------------| |
2443 //-----------------------------------------------------------------------------
2445 func TestSubReqAndSubDelOkWithRestartInMiddle(t *testing.T) {
2446 CaseBegin("TestSubReqAndSubDelOkWithRestartInMiddle")
2448 cretrans := xappConn1.SendSubsReq(t, nil, nil)
2449 crereq, cremsg := e2termConn1.RecvSubsReq(t)
2450 e2termConn1.SendSubsResp(t, crereq, cremsg)
2451 e2SubsId := xappConn1.RecvSubsResp(t, cretrans)
2453 // Check subscription
2454 resp, _ := xapp.Subscription.QuerySubscriptions()
2455 assert.Equal(t, resp[0].SubscriptionID, int64(e2SubsId))
2456 assert.Equal(t, resp[0].Meid, "RAN_NAME_1")
2457 assert.Equal(t, resp[0].ClientEndpoint, []string{"localhost:13560"})
2459 mainCtrl.SimulateRestart(t)
2460 xapp.Logger.Debug("mainCtrl.SimulateRestart done")
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 // Check that subscription is restored correctly after restart
2565 resp, _ = xapp.Subscription.QuerySubscriptions()
2566 assert.Equal(t, resp[0].SubscriptionID, int64(e2SubsId1))
2567 assert.Equal(t, resp[0].Meid, "RAN_NAME_1")
2568 assert.Equal(t, resp[0].ClientEndpoint, []string{"localhost:13560", "localhost:13660"})
2571 deltrans1 := xappConn1.SendSubsDelReq(t, nil, e2SubsId1)
2572 xapp.Logger.Debug("xappConn1.RecvSubsDelResp")
2573 xappConn1.RecvSubsDelResp(t, deltrans1)
2574 xapp.Logger.Debug("xappConn1.RecvSubsDelResp received")
2576 mainCtrl.SimulateRestart(t)
2577 xapp.Logger.Debug("mainCtrl.SimulateRestart done")
2580 deltrans2 := xappConn2.SendSubsDelReq(t, nil, e2SubsId2)
2581 delreq2, delmsg2 := e2termConn1.RecvSubsDelReq(t)
2583 e2termConn1.SendSubsDelResp(t, delreq2, delmsg2)
2584 xappConn2.RecvSubsDelResp(t, deltrans2)
2586 //Wait that subs is cleaned
2587 mainCtrl.wait_subs_clean(t, e2SubsId2, 10)
2589 xappConn1.TestMsgChanEmpty(t)
2590 xappConn2.TestMsgChanEmpty(t)
2591 e2termConn1.TestMsgChanEmpty(t)
2592 mainCtrl.wait_registry_empty(t, 10)
2595 //*****************************************************************************
2596 // REST interface test cases
2597 //*****************************************************************************
2599 //-----------------------------------------------------------------------------
2600 // Test debug GET and POST requests
2603 // +-------+ +---------+
2604 // | user | | submgr |
2605 // +-------+ +---------+
2612 func TestGetSubscriptions(t *testing.T) {
2614 mainCtrl.sendGetRequest(t, "localhost:8088", "/ric/v1/subscriptions")
2617 func TestGetSymptomData(t *testing.T) {
2619 mainCtrl.sendGetRequest(t, "localhost:8080", "/ric/v1/symptomdata")
2622 func TestPostdeleteSubId(t *testing.T) {
2624 mainCtrl.sendPostRequest(t, "localhost:8080", "/ric/v1/test/deletesubid=1")
2627 func TestPostEmptyDb(t *testing.T) {
2629 mainCtrl.sendPostRequest(t, "localhost:8080", "/ric/v1/test/emptydb")
2632 func TestGetRestSubscriptions(t *testing.T) {
2634 mainCtrl.sendGetRequest(t, "localhost:8080", "/ric/v1/restsubscriptions")
2637 //-----------------------------------------------------------------------------
2638 // TestRESTSubReqAndRouteNok
2641 // +-------+ +---------+ +---------+
2642 // | xapp | | submgr | | rtmgr |
2643 // +-------+ +---------+ +---------+
2646 // |---------------->| |
2648 // | RESTSubResp | |
2649 // |<----------------| |
2650 // | | RouteCreate |
2651 // | |------------->|
2653 // | | RouteCreate |
2655 // | |(Bad request) |
2656 // | |<-------------|
2658 // |<----------------| |
2660 // | [SUBS INT DELETE] |
2662 // | RESTSubDelReq | |
2663 // |---------------->| |
2664 // | RESTSubDelResp | |
2665 // |<----------------| |
2667 //-----------------------------------------------------------------------------
2668 func TestRESTSubReqAndRouteNok(t *testing.T) {
2669 CaseBegin("TestRESTSubReqAndRouteNok")
2671 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
2672 Counter{cRestSubReqFromXapp, 1},
2673 Counter{cRestSubRespToXapp, 1},
2674 Counter{cRouteCreateFail, 1},
2675 Counter{cRestSubFailNotifToXapp, 1},
2676 Counter{cRestSubDelReqFromXapp, 1},
2677 Counter{cRestSubDelRespToXapp, 1},
2680 const subReqCount int = 1
2682 // Add delay for rtmgt HTTP handling so that HTTP response is received before notify on XAPP side
2683 waiter := rtmgrHttp.AllocNextSleep(50, false)
2684 newSubsId := mainCtrl.get_registry_next_subid(t)
2687 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
2688 restSubId := xappConn1.SendRESTSubsReq(t, params)
2689 xappConn1.ExpectRESTNotificationNok(t, restSubId, "failAll")
2690 waiter.WaitResult(t)
2692 e2SubsId := xappConn1.WaitRESTNotification(t, restSubId)
2693 xapp.Logger.Debug("TEST: REST notification received e2SubsId=%v", e2SubsId)
2696 xappConn1.SendRESTSubsDelReq(t, &restSubId)
2698 // Wait that subs is cleaned
2699 mainCtrl.wait_subs_clean(t, newSubsId, 10)
2700 waitSubsCleanup(t, e2SubsId, 10)
2701 mainCtrl.VerifyCounterValues(t)
2702 mainCtrl.VerifyAllClean(t)
2705 func TestRESTSubReqAndRouteUpdateNok(t *testing.T) {
2706 CaseBegin("TestSubReqAndRouteUpdateNok")
2708 //Init counter check
2709 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
2710 Counter{cRestSubReqFromXapp, 2},
2711 Counter{cRestSubRespToXapp, 2},
2712 Counter{cSubReqToE2, 1},
2713 Counter{cSubRespFromE2, 1},
2714 Counter{cRestSubNotifToXapp, 1},
2715 Counter{cRestSubFailNotifToXapp, 1},
2716 Counter{cRouteCreateUpdateFail, 1},
2717 Counter{cRestSubDelReqFromXapp, 2},
2718 Counter{cSubDelReqToE2, 1},
2719 Counter{cSubDelRespFromE2, 1},
2720 Counter{cRestSubDelRespToXapp, 2},
2723 var params *teststube2ap.RESTSubsReqParams = nil
2726 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
2728 queryXappSubscription(t, int64(e2SubsId), "RAN_NAME_1", []string{"localhost:13560"})
2730 // xapp2 ROUTE creation shall fail with 400 from rtmgr -> submgr
2731 waiter := rtmgrHttp.AllocNextEvent(false)
2732 newSubsId := mainCtrl.get_registry_next_subid(t)
2733 params = xappConn2.GetRESTSubsReqReportParams(subReqCount)
2734 params.SetMeid("RAN_NAME_1")
2735 restSubId2 := xappConn2.SendRESTSubsReq(t, params)
2736 xapp.Logger.Debug("Send REST subscriber request for second subscriber : %v", restSubId2)
2737 xappConn2.ExpectRESTNotificationNok(t, restSubId2, "allFail")
2738 waiter.WaitResult(t)
2739 xappConn2.WaitRESTNotification(t, restSubId2)
2741 queryXappSubscription(t, int64(e2SubsId), "RAN_NAME_1", []string{"localhost:13560"})
2743 deleteSubscription(t, xappConn1, e2termConn1, &restSubId)
2744 xappConn2.SendRESTSubsDelReq(t, &restSubId2)
2746 mainCtrl.wait_subs_clean(t, newSubsId, 10)
2747 //Wait that subs is cleaned
2748 waitSubsCleanup(t, e2SubsId, 10)
2750 mainCtrl.VerifyCounterValues(t)
2751 mainCtrl.VerifyAllClean(t)
2754 func TestRESTSubDelReqAndRouteDeleteNok(t *testing.T) {
2755 CaseBegin("TestRESTSubDelReqAndRouteDeleteNok")
2757 // Init counter check
2758 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
2759 Counter{cRestSubReqFromXapp, 1},
2760 Counter{cRestSubRespToXapp, 1},
2761 Counter{cSubReqToE2, 1},
2762 Counter{cSubRespFromE2, 1},
2763 Counter{cRestSubNotifToXapp, 1},
2764 Counter{cRestSubDelReqFromXapp, 1},
2765 Counter{cRouteDeleteFail, 1},
2766 Counter{cSubDelReqToE2, 1},
2767 Counter{cSubDelRespFromE2, 1},
2768 Counter{cRestSubDelRespToXapp, 1},
2771 var params *teststube2ap.RESTSubsReqParams = nil
2774 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
2776 queryXappSubscription(t, int64(e2SubsId), "RAN_NAME_1", []string{"localhost:13560"})
2778 waiter := rtmgrHttp.AllocNextEvent(false)
2779 xappConn1.SendRESTSubsDelReq(t, &restSubId)
2780 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
2781 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
2782 waiter.WaitResult(t)
2784 waitSubsCleanup(t, e2SubsId, 10)
2785 mainCtrl.VerifyCounterValues(t)
2786 mainCtrl.VerifyAllClean(t)
2789 func TestRESTSubMergeDelAndRouteUpdateNok(t *testing.T) {
2790 CaseBegin("TestRESTSubMergeDelAndRouteUpdateNok")
2792 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
2793 Counter{cRestSubReqFromXapp, 2},
2794 Counter{cMergedSubscriptions, 1},
2795 Counter{cRestSubRespToXapp, 2},
2796 Counter{cSubReqToE2, 1},
2797 Counter{cSubRespFromE2, 1},
2798 Counter{cRestSubNotifToXapp, 2},
2799 Counter{cRestSubDelReqFromXapp, 2},
2800 Counter{cRouteDeleteUpdateFail, 1},
2801 Counter{cSubDelReqToE2, 1},
2802 Counter{cSubDelRespFromE2, 1},
2803 Counter{cRestSubDelRespToXapp, 2},
2804 Counter{cUnmergedSubscriptions, 1},
2807 var params *teststube2ap.RESTSubsReqParams = nil
2810 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
2812 queryXappSubscription(t, int64(e2SubsId), "RAN_NAME_1", []string{"localhost:13560"})
2813 restSubId2, e2SubsId2 := createXapp2MergedSubscription(t, "RAN_NAME_1")
2815 queryXappSubscription(t, int64(e2SubsId), "RAN_NAME_1", []string{"localhost:13560", "localhost:13660"})
2817 //Del1, this shall fail on rtmgr side
2818 waiter := rtmgrHttp.AllocNextEvent(false)
2819 xappConn1.SendRESTSubsDelReq(t, &restSubId)
2820 waiter.WaitResult(t)
2822 queryXappSubscription(t, int64(e2SubsId), "RAN_NAME_1", []string{"localhost:13660"})
2825 deleteXapp2Subscription(t, &restSubId2)
2827 waitSubsCleanup(t, e2SubsId2, 10)
2828 mainCtrl.VerifyCounterValues(t)
2829 mainCtrl.VerifyAllClean(t)
2832 //-----------------------------------------------------------------------------
2833 // TestRESTSubReqRetransmission
2836 // +-------+ +---------+ +---------+
2837 // | xapp | | submgr | | e2term |
2838 // +-------+ +---------+ +---------+
2840 // | RESTSubReq1 | |
2841 // |---------------->| |
2843 // | RESTSubResp | |
2844 // |<----------------| |
2846 // | |------------->|
2848 // | RESTSubReq2 | |
2850 // |---------------->| |
2851 // | RESTSubResp(201)| |
2852 // |<----------------| |
2855 // | |<-------------|
2857 // |<----------------| |
2859 // | [SUBS DELETE] |
2862 //-----------------------------------------------------------------------------
2864 func TestRESTSubReqRetransmission(t *testing.T) {
2865 CaseBegin("TestRESTSubReqRetransmission")
2867 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
2868 Counter{cRestSubReqFromXapp, 2},
2869 Counter{cRestSubRespToXapp, 2},
2870 Counter{cSubReqToE2, 1},
2871 Counter{cSubRespFromE2, 1},
2872 Counter{cRestSubNotifToXapp, 1},
2873 Counter{cRestSubDelReqFromXapp, 1},
2874 Counter{cSubDelReqToE2, 1},
2875 Counter{cSubDelRespFromE2, 1},
2876 Counter{cRestSubDelRespToXapp, 1},
2878 // Retry/duplicate will get the same way as the first request.
2879 // Contianed duplicate messages from same xapp will not be merged. Here we use xappConn2 to simulate sending
2880 // second request from same xapp as doing it from xappConn1 would not work as notification would not be received
2883 const subReqCount int = 1
2885 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
2886 restSubId := xappConn1.SendRESTSubsReq(t, params)
2888 xappConn1.SendRESTSubsReq(t, params)
2889 <-time.After(time.Second * 1)
2891 xappConn1.WaitListedRestNotifications(t, []string{restSubId})
2893 // Depending one goroutine scheduling order, we cannot say for sure which xapp reaches e2term first. Thus
2894 // the order is not significant here.
2895 crereq, cremsg := e2termConn1.RecvSubsReq(t)
2896 e2termConn1.SendSubsResp(t, crereq, cremsg)
2898 e2SubsId := <-xappConn1.ListedRESTNotifications
2900 xapp.Logger.Debug("TEST: XAPP notification received e2SubsId=%v", e2SubsId)
2903 xappConn1.SendRESTSubsDelReq(t, &restSubId)
2904 delreq1, delmsg1 := e2termConn1.RecvSubsDelReq(t)
2905 e2termConn1.SendSubsDelResp(t, delreq1, delmsg1)
2907 mainCtrl.wait_multi_subs_clean(t, []uint32{e2SubsId.E2SubsId}, 10)
2909 mainCtrl.VerifyCounterValues(t)
2910 mainCtrl.VerifyAllClean(t)
2913 //-----------------------------------------------------------------------------
2915 // +-------+ +---------+ +---------+ +---------+
2916 // | xapp | | submgr | | e2term | | rtmgr |
2917 // +-------+ +---------+ +---------+ +---------+
2919 // | RESTSubReq | | |
2920 // |---------------->| | |
2921 // | RESTSubResp | | |
2922 // |<----------------| | |
2923 // | | RouteCreate | |
2924 // | |--------------------------->|
2925 // | | RouteResponse| |
2926 // | |<---------------------------| // The order of these events may vary
2928 // | |------------->| | // The order of these events may vary
2930 // | |<-------------| |
2931 // | RESTNotif1 | | |
2932 // |<----------------| | |
2933 // | RESTSubReq | | |
2934 // | [RETRANS1] | | |
2935 // |---------------->| | |
2936 // | RESTNotif1 | | |
2937 // |<----------------| | |
2938 // | RESTSubReq | | |
2939 // | [RETRANS2] | | |
2940 // |---------------->| | |
2941 // | RESTNotif1 | | |
2942 // |<----------------| | |
2943 // | RESTSubDelReq | | |
2944 // |---------------->| | |
2945 // | | SubDelReq | |
2946 // | |------------->| |
2947 // | RESTSubDelResp| | |
2948 // |<----------------| | |
2949 // | | SubDelResp | |
2950 // | |<-------------| |
2953 //-----------------------------------------------------------------------------
2955 func TestRESTSubReqRetransmissionV2(t *testing.T) {
2956 CaseBegin("TestRESTSubReqRetransmissionV2")
2958 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
2959 Counter{cRestSubReqFromXapp, 3},
2960 Counter{cDuplicateE2SubReq, 2},
2961 Counter{cRestSubRespToXapp, 3},
2962 Counter{cSubReqToE2, 1},
2963 Counter{cSubRespFromE2, 1},
2964 Counter{cRestSubNotifToXapp, 3},
2965 Counter{cRestSubDelReqFromXapp, 1},
2966 Counter{cSubDelReqToE2, 1},
2967 Counter{cSubDelRespFromE2, 1},
2968 Counter{cRestSubDelRespToXapp, 1},
2971 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
2973 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
2975 queryXappSubscription(t, int64(e2SubsId), "RAN_NAME_1", []string{"localhost:13560"})
2978 restSubId_resend := xappConn1.SendRESTSubsReq(t, params)
2980 assert.Equal(t, restSubId_resend, restSubId)
2982 <-time.After(100 * time.Millisecond)
2985 restSubId_resend2 := xappConn1.SendRESTSubsReq(t, params)
2987 assert.Equal(t, restSubId_resend2, restSubId)
2989 <-time.After(100 * time.Millisecond)
2991 deleteSubscription(t, xappConn1, e2termConn1, &restSubId)
2993 waitSubsCleanup(t, e2SubsId, 10)
2994 mainCtrl.VerifyCounterValues(t)
2995 mainCtrl.VerifyAllClean(t)
2998 //-----------------------------------------------------------------------------
3000 // +-------+ +---------+ +---------+ +---------+
3001 // | xapp | | submgr | | e2term | | rtmgr |
3002 // +-------+ +---------+ +---------+ +---------+
3004 // | RESTSubReq | | |
3005 // |---------------->| | |
3006 // | RESTSubResp | | |
3007 // |<----------------| | |
3008 // | | RouteCreate | |
3009 // | |--------------------------->|
3010 // | | RouteResponse| |
3011 // | |<---------------------------| // The order of these events may vary
3013 // | |------------->| | // The order of these events may vary
3015 // | |<-------------| |
3016 // | RESTNotif1 | | |
3017 // |<----------------| | |
3018 // | RESTSubReq | | |
3019 // | [RETRANS, with RESTsubsId] | |
3020 // |---------------->| | |
3021 // | RESTNotif1 | | |
3022 // |<----------------| | |
3023 // | RESTSubReq | | |
3024 // | [RETRANS, without RESTsubsId] | |
3025 // |---------------->| | |
3026 // | RESTNotif1 | | |
3027 // |<----------------| | |
3028 // | RESTSubDelReq | | |
3029 // |---------------->| | |
3030 // | | SubDelReq | |
3031 // | |------------->| |
3032 // | RESTSubDelResp| | |
3033 // |<----------------| | |
3034 // | | SubDelResp | |
3035 // | |<-------------| |
3038 //-----------------------------------------------------------------------------
3039 func TestRESTSubReqRetransmissionV3(t *testing.T) {
3040 CaseBegin("TestRESTSubReqRetransmissionV3")
3042 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
3043 Counter{cRestSubReqFromXapp, 3},
3044 Counter{cDuplicateE2SubReq, 2},
3045 Counter{cRestSubRespToXapp, 3},
3046 Counter{cSubReqToE2, 1},
3047 Counter{cSubRespFromE2, 1},
3048 Counter{cRestSubNotifToXapp, 3},
3049 Counter{cRestSubDelReqFromXapp, 1},
3050 Counter{cSubDelReqToE2, 1},
3051 Counter{cSubDelRespFromE2, 1},
3052 Counter{cRestSubDelRespToXapp, 1},
3055 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
3057 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
3059 queryXappSubscription(t, int64(e2SubsId), "RAN_NAME_1", []string{"localhost:13560"})
3061 <-time.After(100 * time.Millisecond)
3063 //1.st resend with subscription ID
3064 params.SetSubscriptionID(&restSubId)
3065 restSubId_resend := xappConn1.SendRESTSubsReq(t, params)
3067 assert.Equal(t, restSubId_resend, restSubId)
3069 <-time.After(100 * time.Millisecond)
3071 //2.nd resend without subscription ID (faking app restart)
3072 params = xappConn1.GetRESTSubsReqReportParams(subReqCount)
3073 restSubId_resend2 := xappConn1.SendRESTSubsReq(t, params)
3075 assert.Equal(t, restSubId_resend2, restSubId)
3077 <-time.After(100 * time.Millisecond)
3079 deleteSubscription(t, xappConn1, e2termConn1, &restSubId)
3081 waitSubsCleanup(t, e2SubsId, 10)
3082 mainCtrl.VerifyCounterValues(t)
3083 mainCtrl.VerifyAllClean(t)
3086 //-----------------------------------------------------------------------------
3088 // +-------+ +---------+ +---------+ +---------+
3089 // | xapp | | submgr | | e2term | | rtmgr |
3090 // +-------+ +---------+ +---------+ +---------+
3092 // | RESTSubReq | | |
3093 // |---------------->| | |
3094 // | RESTSubResp | | |
3095 // |<----------------| | |
3096 // | | RouteCreate | |
3097 // | |--------------------------->|
3098 // | | RouteResponse| |
3099 // | |<---------------------------|
3101 // | |------------->| |
3103 // | |<-------------| |
3104 // | RESTNotif1 | | |
3105 // |<----------------| | |
3106 // | RESTSubReq | | |
3107 // | [with RestSUbsId + one additional e2 subDetail]
3108 // |---------------->| | |
3109 // | RESTNotif1 | | |
3110 // | [for initial e2 subDetail] | |
3111 // |<----------------| | |
3112 // | | RouteCreate | |
3113 // | |--------------------------->|
3114 // | | RouteResponse| |
3115 // | |<---------------------------|
3117 // | |------------->| |
3119 // | |<-------------| |
3120 // | RESTNotif1 | | |
3121 // |<----------------| | |
3122 // | RESTSubReq | | |
3123 // | [with RESTsubsId initial request] |
3124 // |---------------->| | |
3125 // | RESTNotif1 | | |
3126 // |<----------------| | |
3127 // | RESTSubDelReq | | |
3128 // |---------------->| | |
3129 // | RESTSubDelResp| | |
3130 // |<----------------| | |
3131 // | | SubDelReq | |
3132 // | |------------->| |
3133 // | | SubDelResp | |
3134 // | |<-------------| |
3135 // | | SubDelReq | |
3136 // | |------------->| |
3137 // | | SubDelResp | |
3138 // | |<-------------| |
3141 //-----------------------------------------------------------------------------
3143 func TestRESTSubReqRetransmissionV4(t *testing.T) {
3144 CaseBegin("TestRESTSubReqRetransmissionV4")
3146 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
3147 Counter{cRestSubReqFromXapp, 3},
3148 Counter{cDuplicateE2SubReq, 2},
3149 Counter{cRestSubRespToXapp, 3},
3150 Counter{cSubReqToE2, 2},
3151 Counter{cSubRespFromE2, 2},
3152 Counter{cRestSubNotifToXapp, 4},
3153 Counter{cRestSubDelReqFromXapp, 1},
3154 Counter{cSubDelReqToE2, 2},
3155 Counter{cSubDelRespFromE2, 2},
3156 Counter{cRestSubDelRespToXapp, 1},
3159 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
3161 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
3163 <-time.After(100 * time.Millisecond)
3165 // Send modified requst, this time with e2 subscriptions.
3166 params2 := xappConn1.GetRESTSubsReqReportParams(subReqCount + 1)
3167 params2.SetSubscriptionID(&restSubId)
3169 xapp.Subscription.SetResponseCB(xappConn1.SubscriptionRespHandler)
3170 xappConn1.ExpectAnyNotification(t)
3171 // Resend the original request with an additional e2 subscription (detail), this time with restsubsid
3172 restSubId_resend := xappConn1.SendRESTSubsReq(t, params2)
3173 e2SubsId1 := xappConn1.WaitAnyRESTNotification(t)
3174 assert.Equal(t, e2SubsId, e2SubsId1)
3176 crereq2, cremsg2 := e2termConn1.RecvSubsReq(t)
3178 xappConn1.DecrementRequestCount()
3179 xappConn1.ExpectRESTNotification(t, restSubId_resend)
3180 e2termConn1.SendSubsResp(t, crereq2, cremsg2)
3181 e2SubsId2 := xappConn1.WaitRESTNotification(t, restSubId_resend)
3182 assert.NotEqual(t, e2SubsId2, 0)
3184 <-time.After(100 * time.Millisecond)
3186 xapp.Subscription.SetResponseCB(xappConn1.SubscriptionRespHandler)
3187 params = xappConn1.GetRESTSubsReqReportParams(subReqCount)
3188 params.SetSubscriptionID(&restSubId)
3189 xappConn1.ExpectAnyNotification(t)
3190 // Resend the original request again with only one e2 subscription (detail), this time with restsubsid
3191 restSubId_resend2 := xappConn1.SendRESTSubsReq(t, params)
3192 assert.Equal(t, restSubId_resend, restSubId_resend2)
3194 e2SubsId1 = xappConn1.WaitAnyRESTNotification(t)
3195 assert.Equal(t, e2SubsId, e2SubsId1)
3197 // Delete both e2 subscriptions
3198 xappConn1.SendRESTSubsDelReq(t, &restSubId)
3199 e2SubsIds := []uint32{e2SubsId, e2SubsId2}
3200 sendAndReceiveMultipleE2DelReqs(t, e2SubsIds, e2termConn1)
3202 waitSubsCleanup(t, e2SubsId, 10)
3203 mainCtrl.VerifyCounterValues(t)
3204 mainCtrl.VerifyAllClean(t)
3207 //-----------------------------------------------------------------------------
3209 // +-------+ +---------+ +---------+ +---------+
3210 // | xapp | | submgr | | e2term | | rtmgr |
3211 // +-------+ +---------+ +---------+ +---------+
3213 // | RESTSubReq | | |
3214 // |---------------->| | |
3215 // | RESTSubResp | | |
3216 // |<----------------| | |
3217 // | | RouteCreate | |
3218 // | |--------------------------->|
3219 // | | RouteResponse| |
3220 // | |<---------------------------|
3222 // | |------------->| |
3224 // | |<-------------| |
3225 // | RESTNotif1 | | |
3226 // |<----------------| | |
3227 // | RESTSubReq | | |
3228 // | [with RestSUbsId + one additional e2 subDetail]
3229 // |---------------->| | |
3230 // | RESTNotif1 | | |
3231 // | [for initial e2 subDetail] | |
3232 // |<----------------| | |
3233 // | | RouteCreate | |
3234 // | |--------------------------->|
3235 // | | RouteResponse| |
3236 // | |<---------------------------|
3238 // | |------------->| |
3240 // | |<-------------| |
3241 // | RESTNotif1 | | |
3242 // |<----------------| | |
3243 // | RESTSubReq | | |
3244 // | [without RESTsubsId initial request] |
3245 // |---------------->| | |
3246 // | RESTNotif1 | | |
3247 // |<----------------| | |
3248 // | RESTSubDelReq | | |
3249 // |---------------->| | |
3250 // | RESTSubDelResp| | |
3251 // |<----------------| | |
3252 // | | SubDelReq | |
3253 // | |------------->| |
3254 // | | SubDelResp | |
3255 // | |<-------------| |
3256 // | | SubDelReq | |
3257 // | |------------->| |
3258 // | | SubDelResp | |
3259 // | |<-------------| |
3262 //-----------------------------------------------------------------------------
3264 func TestRESTSubReqRetransmissionV5(t *testing.T) {
3265 CaseBegin("TestRESTSubReqRetransmissionV5")
3267 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
3268 Counter{cRestSubReqFromXapp, 3},
3269 Counter{cDuplicateE2SubReq, 2},
3270 Counter{cRestSubRespToXapp, 3},
3271 Counter{cSubReqToE2, 2},
3272 Counter{cSubRespFromE2, 2},
3273 Counter{cRestSubNotifToXapp, 4},
3274 Counter{cRestSubDelReqFromXapp, 1},
3275 Counter{cSubDelReqToE2, 2},
3276 Counter{cSubDelRespFromE2, 2},
3277 Counter{cRestSubDelRespToXapp, 1},
3280 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
3282 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
3284 <-time.After(100 * time.Millisecond)
3286 // Send modified requst, this time with e2 subscriptions.
3287 params2 := xappConn1.GetRESTSubsReqReportParams(subReqCount + 1)
3288 params2.SetSubscriptionID(&restSubId)
3290 xapp.Subscription.SetResponseCB(xappConn1.SubscriptionRespHandler)
3291 xappConn1.ExpectAnyNotification(t)
3292 // Resend the original request with an additional e2 subscription (detail), this time with restsubsid
3293 restSubId_resend := xappConn1.SendRESTSubsReq(t, params2)
3295 e2SubsId1 := xappConn1.WaitAnyRESTNotification(t)
3296 assert.Equal(t, e2SubsId, e2SubsId1)
3297 // The first E2 subscription returns immediately, manually decrement expected request count for the remaining request handling
3298 xappConn1.DecrementRequestCount()
3300 crereq2, cremsg2 := e2termConn1.RecvSubsReq(t)
3302 xappConn1.ExpectRESTNotification(t, restSubId_resend)
3303 e2termConn1.SendSubsResp(t, crereq2, cremsg2)
3304 e2SubsId2 := xappConn1.WaitRESTNotification(t, restSubId_resend)
3305 assert.NotEqual(t, e2SubsId2, 0)
3307 <-time.After(100 * time.Millisecond)
3309 xapp.Subscription.SetResponseCB(xappConn1.SubscriptionRespHandler)
3310 params = xappConn1.GetRESTSubsReqReportParams(subReqCount)
3311 xappConn1.ExpectAnyNotification(t)
3312 // Resend the original request again with only one e2 subscription (detail), WITHOUT restsubsid
3313 // md5sum shall find the original request
3314 restSubId_resend2 := xappConn1.SendRESTSubsReq(t, params)
3315 assert.Equal(t, restSubId_resend, restSubId_resend2)
3317 e2SubsId1 = xappConn1.WaitAnyRESTNotification(t)
3318 assert.Equal(t, e2SubsId, e2SubsId1)
3320 // Delete both e2 subscriptions
3321 xappConn1.SendRESTSubsDelReq(t, &restSubId)
3322 e2SubsIds := []uint32{e2SubsId, e2SubsId2}
3323 sendAndReceiveMultipleE2DelReqs(t, e2SubsIds, e2termConn1)
3325 waitSubsCleanup(t, e2SubsId, 10)
3326 mainCtrl.VerifyCounterValues(t)
3327 mainCtrl.VerifyAllClean(t)
3330 //-----------------------------------------------------------------------------
3332 // +-------+ +---------+ +---------+ +---------+
3333 // | xapp | | submgr | | e2term | | rtmgr |
3334 // +-------+ +---------+ +---------+ +---------+
3336 // | RESTSubReq | | |
3337 // |---------------->| | |
3338 // | RESTSubResp | | |
3339 // |<----------------| | |
3340 // | | RouteCreate | |
3341 // | |--------------------------->|
3342 // | | RouteResponse| |
3343 // | |<---------------------------|
3345 // | |------------->| |
3347 // | |<-------------| |
3348 // | RESTNotif1 | | |
3349 // |<----------------| | |
3350 // | RESTSubReq | | |
3351 // | [with RestSUbsId + one additional e2 subDetail]
3352 // |---------------->| | |
3353 // | RESTNotif1 | | |
3354 // | [for initial e2 subDetail] | |
3355 // |<----------------| | |
3356 // | | RouteCreate | |
3357 // | |--------------------------->|
3358 // | | RouteResponse| |
3359 // | |<---------------------------|
3361 // | |------------->| |
3363 // | |<-------------| |
3364 // | RESTNotif1 | | |
3365 // |<----------------| | |
3366 // | RESTSubDelReq | | |
3367 // |---------------->| | |
3368 // | RESTSubDelResp| | |
3369 // |<----------------| | |
3370 // | | SubDelReq | |
3371 // | |------------->| |
3372 // | | SubDelResp | |
3373 // | |<-------------| |
3374 // | | SubDelReq | |
3375 // | |------------->| |
3376 // | | SubDelResp | |
3377 // | |<-------------| |
3378 // | RESTSubReq | | |
3379 // | [with RESTsubsId initial request] |
3380 // |---------------->| | |
3381 // | RESTSubResp | | |
3382 // |<----------------| | |
3383 // | | RouteCreate | |
3384 // | |--------------------------->|
3385 // | | RouteResponse| |
3386 // | |<---------------------------|
3388 // | |------------->| |
3390 // | |<-------------| |
3391 // | RESTNotif1 | | |
3392 // |<----------------| | |
3395 //-----------------------------------------------------------------------------
3396 func TestRESTSubReqRetransmissionV6(t *testing.T) {
3397 CaseBegin("TestRESTSubReqRetransmissionV6")
3399 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
3400 Counter{cRestSubReqFromXapp, 3},
3401 Counter{cDuplicateE2SubReq, 1},
3402 Counter{cRestSubRespToXapp, 3},
3403 Counter{cSubReqToE2, 3},
3404 Counter{cSubRespFromE2, 3},
3405 Counter{cRestSubNotifToXapp, 4},
3406 Counter{cRestSubDelReqFromXapp, 2},
3407 Counter{cSubDelReqToE2, 3},
3408 Counter{cSubDelRespFromE2, 3},
3409 Counter{cRestSubDelRespToXapp, 2},
3412 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
3414 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
3416 <-time.After(100 * time.Millisecond)
3418 // Send modified requst, this time with e2 subscriptions.
3419 params2 := xappConn1.GetRESTSubsReqReportParams(subReqCount + 1)
3420 params2.SetSubscriptionID(&restSubId)
3422 xapp.Subscription.SetResponseCB(xappConn1.SubscriptionRespHandler)
3423 xappConn1.ExpectAnyNotification(t)
3424 // Resend the original request with an additional e2 subscription (detail), this time with restsubsid
3425 restSubId_resend := xappConn1.SendRESTSubsReq(t, params2)
3427 e2SubsId1 := xappConn1.WaitAnyRESTNotification(t)
3428 assert.Equal(t, e2SubsId, e2SubsId1)
3430 crereq2, cremsg2 := e2termConn1.RecvSubsReq(t)
3432 xappConn1.ExpectRESTNotification(t, restSubId_resend)
3433 e2termConn1.SendSubsResp(t, crereq2, cremsg2)
3434 e2SubsId2 := xappConn1.WaitRESTNotification(t, restSubId_resend)
3435 assert.NotEqual(t, e2SubsId2, 0)
3437 <-time.After(100 * time.Millisecond)
3439 // Delete both e2 subscriptions
3440 xappConn1.SendRESTSubsDelReq(t, &restSubId)
3441 e2SubsIds := []uint32{e2SubsId, e2SubsId2}
3442 sendAndReceiveMultipleE2DelReqs(t, e2SubsIds, e2termConn1)
3444 waitSubsCleanup(t, e2SubsId, 10)
3446 // Resend the original request, we shall find it's previous md5sum/restsubs
3447 // but the restsubscription has been already removed. This shall trigger a
3449 restSubId, e2SubsId = createSubscription(t, xappConn1, e2termConn1, params)
3451 <-time.After(100 * time.Millisecond)
3453 deleteSubscription(t, xappConn1, e2termConn1, &restSubId)
3455 waitSubsCleanup(t, e2SubsId, 10)
3456 mainCtrl.VerifyCounterValues(t)
3457 mainCtrl.VerifyAllClean(t)
3460 func TestRESTSubDelReqRetransmission(t *testing.T) {
3461 CaseBegin("TestRESTSubDelReqRetransmission")
3463 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
3464 Counter{cRestSubReqFromXapp, 1},
3465 Counter{cRestSubRespToXapp, 1},
3466 Counter{cSubReqToE2, 1},
3467 Counter{cSubRespFromE2, 1},
3468 Counter{cRestSubNotifToXapp, 1},
3469 Counter{cRestSubDelReqFromXapp, 2},
3470 Counter{cSubDelReqToE2, 1},
3471 Counter{cSubDelRespFromE2, 1},
3472 Counter{cRestSubDelRespToXapp, 2},
3475 var params *teststube2ap.RESTSubsReqParams = nil
3478 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
3480 queryXappSubscription(t, int64(e2SubsId), "RAN_NAME_1", []string{"localhost:13560"})
3483 xappConn1.SendRESTSubsDelReq(t, &restSubId)
3484 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
3486 seqBef := mainCtrl.get_msgcounter(t)
3487 xappConn1.SendRESTSubsDelReq(t, &restSubId)
3488 mainCtrl.wait_msgcounter_change(t, seqBef, 10)
3490 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
3492 waitSubsCleanup(t, e2SubsId, 10)
3493 mainCtrl.VerifyCounterValues(t)
3494 mainCtrl.VerifyAllClean(t)
3497 //-----------------------------------------------------------------------------
3498 // TestRESTSubReqDelReq
3501 // +-------+ +---------+ +---------+
3502 // | xapp | | submgr | | e2term |
3503 // +-------+ +---------+ +---------+
3506 // |---------------->| |
3508 // | RESTSubResp | |
3509 // |<----------------| |
3511 // | |------------->|
3512 // | RESTSubDelReq | |
3513 // |---------------->| |
3514 // | RESTSubDelResp | |
3516 // |<----------------| |
3518 // | |<-------------|
3520 // |<----------------| |
3522 // | [SUBS DELETE] |
3525 //-----------------------------------------------------------------------------
3526 func TestRESTSubReqDelReq(t *testing.T) {
3527 CaseBegin("TestRESTSubReqDelReq")
3529 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
3530 Counter{cRestSubReqFromXapp, 1},
3531 Counter{cRestSubRespToXapp, 1},
3532 Counter{cSubReqToE2, 1},
3533 Counter{cSubRespFromE2, 1},
3534 Counter{cRestSubNotifToXapp, 1},
3535 Counter{cRestSubDelReqFromXapp, 2},
3536 Counter{cRestSubDelFailToXapp, 1},
3537 Counter{cSubDelReqToE2, 1},
3538 Counter{cSubDelRespFromE2, 1},
3539 Counter{cRestSubDelRespToXapp, 1},
3542 const subReqCount int = 1
3545 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
3546 restSubId := xappConn1.SendRESTSubsReq(t, params)
3548 // Del. This will fail as processing of the subscription
3549 // is still ongoing in submgr. Deletion is not allowed before
3550 // subscription creation has been completed.
3551 xappConn1.SendRESTSubsDelReq(t, &restSubId)
3552 crereq, cremsg := e2termConn1.RecvSubsReq(t)
3553 xappConn1.ExpectRESTNotification(t, restSubId)
3554 e2termConn1.SendSubsResp(t, crereq, cremsg)
3555 e2SubsId := xappConn1.WaitRESTNotification(t, restSubId)
3558 xappConn1.SendRESTSubsDelReq(t, &restSubId)
3560 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
3561 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
3563 // Wait that subs is cleaned
3564 waitSubsCleanup(t, e2SubsId, 10)
3565 mainCtrl.VerifyCounterValues(t)
3566 mainCtrl.VerifyAllClean(t)
3569 func TestRESTSubDelReqCollision(t *testing.T) {
3570 CaseBegin("TestRESTSubDelReqCollision - not relevant for REST API")
3573 func TestRESTSubReqAndSubDelOkTwoParallel(t *testing.T) {
3574 CaseBegin("TestRESTSubReqAndSubDelOkTwoParallel")
3576 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
3577 Counter{cRestSubReqFromXapp, 2},
3578 Counter{cRestSubRespToXapp, 2},
3579 Counter{cSubReqToE2, 2},
3580 Counter{cSubRespFromE2, 2},
3581 Counter{cRestSubNotifToXapp, 2},
3582 Counter{cRestSubDelReqFromXapp, 2},
3583 Counter{cSubDelReqToE2, 2},
3584 Counter{cSubDelRespFromE2, 2},
3585 Counter{cRestSubDelRespToXapp, 2},
3589 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
3590 restSubId1 := xappConn1.SendRESTSubsReq(t, params)
3591 xapp.Logger.Debug("Send 1st REST subscriber request for subscriberId : %v", restSubId1)
3594 params = xappConn2.GetRESTSubsReqReportParams(subReqCount)
3595 restSubId2 := xappConn2.SendRESTSubsReq(t, params)
3596 xapp.Logger.Debug("Send 2nd REST subscriber request for subscriberId : %v", restSubId2)
3598 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
3599 crereq2, cremsg2 := e2termConn1.RecvSubsReq(t)
3601 //XappConn1 receives both of the responses
3602 xappConn1.WaitListedRestNotifications(t, []string{restSubId1, restSubId2})
3605 e2termConn1.SendSubsResp(t, crereq1, cremsg1)
3607 e2termConn1.SendSubsResp(t, crereq2, cremsg2)
3609 e2SubsIdA := <-xappConn1.ListedRESTNotifications
3610 xapp.Logger.Debug("TEST: 1.st XAPP notification received e2SubsId=%v", e2SubsIdA)
3611 e2SubsIdB := <-xappConn1.ListedRESTNotifications
3612 xapp.Logger.Debug("TEST: 2.nd XAPP notification received e2SubsId=%v", e2SubsIdB)
3615 deleteSubscription(t, xappConn1, e2termConn1, &restSubId1)
3617 deleteSubscription(t, xappConn2, e2termConn1, &restSubId2)
3619 //Wait that subs is cleaned
3620 mainCtrl.wait_subs_clean(t, e2SubsIdA.E2SubsId, 10)
3621 waitSubsCleanup(t, e2SubsIdB.E2SubsId, 10)
3623 mainCtrl.VerifyCounterValues(t)
3624 mainCtrl.VerifyAllClean(t)
3627 func TestRESTSameSubsDiffRan(t *testing.T) {
3628 CaseBegin("TestRESTSameSubsDiffRan")
3630 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
3631 Counter{cRestSubReqFromXapp, 2},
3632 Counter{cRestSubRespToXapp, 2},
3633 Counter{cSubReqToE2, 2},
3634 Counter{cSubRespFromE2, 2},
3635 Counter{cRestSubNotifToXapp, 2},
3636 Counter{cRestSubDelReqFromXapp, 2},
3637 Counter{cSubDelReqToE2, 2},
3638 Counter{cSubDelRespFromE2, 2},
3639 Counter{cRestSubDelRespToXapp, 2},
3642 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
3643 restSubId1, e2SubsId1 := createSubscription(t, xappConn1, e2termConn1, params)
3644 xapp.Logger.Debug("Send 1st REST subscriber request for subscriberId : %v", restSubId1)
3646 params = xappConn1.GetRESTSubsReqReportParams(subReqCount)
3647 params.SetMeid("RAN_NAME_2")
3648 restSubId2, e2SubsId2 := createSubscription(t, xappConn1, e2termConn1, params)
3649 xapp.Logger.Debug("Send 2nd REST subscriber request for subscriberId : %v", restSubId2)
3652 deleteSubscription(t, xappConn1, e2termConn1, &restSubId1)
3654 deleteSubscription(t, xappConn1, e2termConn1, &restSubId2)
3656 //Wait that subs is cleaned
3657 mainCtrl.wait_subs_clean(t, e2SubsId1, 10)
3658 waitSubsCleanup(t, e2SubsId2, 10)
3660 mainCtrl.VerifyCounterValues(t)
3661 mainCtrl.VerifyAllClean(t)
3664 func TestRESTSubReqRetryInSubmgr(t *testing.T) {
3665 CaseBegin("TestRESTSubReqRetryInSubmgr start")
3667 // Init counter check
3668 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
3669 Counter{cRestSubReqFromXapp, 1},
3670 Counter{cRestSubRespToXapp, 1},
3671 Counter{cSubReqToE2, 1},
3672 Counter{cSubReqTimerExpiry, 1},
3673 Counter{cSubReReqToE2, 1},
3674 Counter{cSubRespFromE2, 1},
3675 Counter{cRestSubNotifToXapp, 1},
3676 Counter{cRestSubDelReqFromXapp, 1},
3677 Counter{cSubDelReqToE2, 1},
3678 Counter{cSubDelRespFromE2, 1},
3679 Counter{cRestSubDelRespToXapp, 1},
3682 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
3683 restSubId := xappConn1.SendRESTSubsReq(t, params)
3685 xapp.Logger.Debug("Send REST subscriber request for subscriber : %v", restSubId)
3687 // Catch the first message and ignore it
3688 crereq, cremsg := e2termConn1.RecvSubsReq(t)
3689 xapp.Logger.Debug("Ignore REST subscriber request for subscriber : %v", restSubId)
3691 // The second request is being handled normally
3692 crereq, cremsg = e2termConn1.RecvSubsReq(t)
3693 xappConn1.ExpectRESTNotification(t, restSubId)
3694 e2termConn1.SendSubsResp(t, crereq, cremsg)
3695 e2SubsId := xappConn1.WaitRESTNotification(t, restSubId)
3697 queryXappSubscription(t, int64(e2SubsId), "RAN_NAME_1", []string{"localhost:13560"})
3699 deleteSubscription(t, xappConn1, e2termConn1, &restSubId)
3701 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
3702 //Wait that subs is cleaned
3703 waitSubsCleanup(t, e2SubsId, 10)
3705 mainCtrl.VerifyCounterValues(t)
3706 mainCtrl.VerifyAllClean(t)
3709 //-----------------------------------------------------------------------------
3710 // TestRESTSubReqTwoRetriesNoRespSubDelRespInSubmgr
3713 // +-------+ +---------+ +---------+
3714 // | xapp | | submgr | | e2term |
3715 // +-------+ +---------+ +---------+
3718 // |---------------->| |
3720 // | RESTSubResp | |
3721 // |<----------------| |
3723 // | |------------->|
3727 // | |------------->|
3730 // | |------------->|
3734 // | |------------->|
3738 // | |<-------------|
3741 // |<----------------| |
3743 // | [SUBS DELETE] |
3746 //-----------------------------------------------------------------------------
3748 func TestRESTSubReqRetryNoRespSubDelRespInSubmgr(t *testing.T) {
3749 CaseBegin("TestRESTSubReqTwoRetriesNoRespSubDelRespInSubmgr start")
3751 // Init counter check
3752 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
3753 Counter{cRestSubReqFromXapp, 1},
3754 Counter{cRestSubRespToXapp, 1},
3755 Counter{cSubReqToE2, 1},
3756 Counter{cSubReReqToE2, 1},
3757 Counter{cSubReqTimerExpiry, 2},
3758 Counter{cRestSubFailNotifToXapp, 1},
3759 Counter{cSubDelReqToE2, 1},
3760 Counter{cSubDelRespFromE2, 1},
3761 Counter{cRestSubDelReqFromXapp, 1},
3762 Counter{cRestSubDelRespToXapp, 1},
3765 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
3766 restSubId := xappConn1.SendRESTSubsReq(t, params)
3767 xapp.Logger.Debug("Send REST subscriber request for subscriber : %v", restSubId)
3769 e2termConn1.RecvSubsReq(t)
3770 xapp.Logger.Debug("Ignore 1st REST subscriber request for subscriber : %v", restSubId)
3772 e2termConn1.RecvSubsReq(t)
3773 xapp.Logger.Debug("Ignore 2nd REST subscriber request for subscriber : %v", restSubId)
3775 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
3776 xappConn1.ExpectRESTNotificationNok(t, restSubId, "allFail")
3777 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
3778 xappConn1.WaitRESTNotification(t, restSubId)
3780 xappConn1.SendRESTSubsDelReq(t, &restSubId)
3782 // Wait that subs is cleaned
3783 waitSubsCleanup(t, delreq.RequestId.InstanceId, 10)
3784 mainCtrl.VerifyCounterValues(t)
3785 mainCtrl.VerifyAllClean(t)
3788 func TestREST2eTermNotRespondingToSubReq(t *testing.T) {
3789 CaseBegin("TestREST2eTermNotRespondingToSubReq start")
3791 // Init counter check
3792 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
3793 Counter{cRestSubReqFromXapp, 1},
3794 Counter{cRestSubRespToXapp, 1},
3795 Counter{cSubReqToE2, 1},
3796 Counter{cSubReReqToE2, 1},
3797 Counter{cSubReqTimerExpiry, 2},
3798 Counter{cSubDelReReqToE2, 1},
3799 Counter{cRestSubFailNotifToXapp, 1},
3800 Counter{cSubDelReqToE2, 1},
3801 Counter{cSubDelReqTimerExpiry, 2},
3802 Counter{cRestSubDelReqFromXapp, 1},
3803 Counter{cRestSubDelRespToXapp, 1},
3806 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
3807 restSubId := xappConn1.SendRESTSubsReq(t, params)
3808 xapp.Logger.Debug("Send REST subscriber request for subscriber : %v", restSubId)
3810 e2termConn1.RecvSubsReq(t)
3811 xapp.Logger.Debug("Ignore 1st REST subscriber request for subscriber : %v", restSubId)
3813 e2termConn1.RecvSubsReq(t)
3814 xapp.Logger.Debug("Ignore 2nd REST subscriber request for subscriber : %v", restSubId)
3816 e2termConn1.RecvSubsDelReq(t)
3817 xapp.Logger.Debug("Ignore 1st INTERNAL delete request for subscriber : %v", restSubId)
3819 xappConn1.ExpectRESTNotificationNok(t, restSubId, "allFail")
3820 e2termConn1.RecvSubsDelReq(t)
3821 xapp.Logger.Debug("Ignore 2nd INTERNAL delete request for subscriber : %v", restSubId)
3823 e2SubsId := xappConn1.WaitRESTNotification(t, restSubId)
3825 xappConn1.SendRESTSubsDelReq(t, &restSubId)
3827 waitSubsCleanup(t, e2SubsId, 10)
3828 mainCtrl.VerifyCounterValues(t)
3829 mainCtrl.VerifyAllClean(t)
3832 //-----------------------------------------------------------------------------
3833 // TestRESTSubReqTwoRetriesNoRespSubDelRespInSubmgr
3836 // +-------+ +---------+ +---------+
3837 // | xapp | | submgr | | e2term |
3838 // +-------+ +---------+ +---------+
3841 // |---------------->| |
3843 // | RESTSubResp | |
3844 // |<----------------| |
3846 // | |------------->|
3850 // | |------------->|
3853 // | |------------->|
3857 // | |------------->|
3861 // | |<-------------|
3864 // |<----------------| |
3866 // | [SUBS DELETE] |
3869 //-----------------------------------------------------------------------------
3870 func TestRESTSubReqTwoRetriesNoRespAtAllInSubmgr(t *testing.T) {
3871 CaseBegin("TestRESTSubReqTwoRetriesNoRespAtAllInSubmgr start")
3873 // Init counter check
3874 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
3875 Counter{cRestSubReqFromXapp, 1},
3876 Counter{cRestSubRespToXapp, 1},
3877 Counter{cSubReqToE2, 1},
3878 Counter{cSubReReqToE2, 1},
3879 Counter{cSubReqTimerExpiry, 2},
3880 Counter{cRestSubFailNotifToXapp, 1},
3881 Counter{cSubDelReqToE2, 1},
3882 Counter{cSubDelReReqToE2, 1},
3883 Counter{cSubDelReqTimerExpiry, 2},
3884 Counter{cRestSubDelReqFromXapp, 1},
3885 Counter{cRestSubDelRespToXapp, 1},
3888 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
3889 restSubId := xappConn1.SendRESTSubsReq(t, params)
3890 xapp.Logger.Debug("Send REST subscriber request for subscriber : %v", restSubId)
3892 e2termConn1.RecvSubsReq(t)
3893 xapp.Logger.Debug("Ignore 1st REST subscriber request for subscriber : %v", restSubId)
3895 e2termConn1.RecvSubsReq(t)
3896 xapp.Logger.Debug("Ignore 2nd REST subscriber request for subscriber : %v", restSubId)
3898 e2termConn1.RecvSubsDelReq(t)
3899 xapp.Logger.Debug("Ignore 1st INTERNAL delete request for subscriber : %v", restSubId)
3901 xappConn1.ExpectRESTNotificationNok(t, restSubId, "allFail")
3902 e2termConn1.RecvSubsDelReq(t)
3903 xapp.Logger.Debug("Ignore 2nd INTERNAL delete request for subscriber : %v", restSubId)
3905 e2SubsId := xappConn1.WaitRESTNotification(t, restSubId)
3907 xappConn1.SendRESTSubsDelReq(t, &restSubId)
3909 waitSubsCleanup(t, e2SubsId, 10)
3910 mainCtrl.VerifyCounterValues(t)
3911 mainCtrl.VerifyAllClean(t)
3914 //-----------------------------------------------------------------------------
3915 // TestRESTSubReqSubFailRespInSubmgr
3918 // +-------+ +---------+ +---------+
3919 // | xapp | | submgr | | e2term |
3920 // +-------+ +---------+ +---------+
3923 // |---------------->| |
3925 // | RESTSubResp | |
3926 // |<----------------| |
3928 // | |------------->|
3931 // | |<-------------|
3935 // |<----------------| |
3937 // | [SUBS DELETE] |
3940 //-----------------------------------------------------------------------------
3941 func TestRESTSubReqSubFailRespInSubmgr(t *testing.T) {
3942 CaseBegin("TestRESTSubReqSubFailRespInSubmgr")
3944 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
3945 Counter{cRestSubReqFromXapp, 1},
3946 Counter{cRestSubRespToXapp, 1},
3947 Counter{cSubReqToE2, 1},
3948 Counter{cSubFailFromE2, 1},
3949 Counter{cRestSubFailNotifToXapp, 1},
3950 Counter{cRestSubDelReqFromXapp, 1},
3951 Counter{cRestSubDelRespToXapp, 1},
3954 const subReqCount int = 1
3955 const e2Timeout int64 = 2
3956 const e2RetryCount int64 = 1
3957 const routingNeeded bool = true
3959 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
3960 params.SetSubscriptionDirectives(e2Timeout, e2RetryCount, routingNeeded)
3961 restSubId := xappConn1.SendRESTSubsReq(t, params)
3963 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
3964 fparams1 := &teststube2ap.E2StubSubsFailParams{}
3965 fparams1.Set(crereq1)
3966 xappConn1.ExpectRESTNotificationNok(t, restSubId, "allFail")
3967 e2termConn1.SendSubsFail(t, fparams1, cremsg1)
3969 e2SubsId := xappConn1.WaitRESTNotification(t, restSubId)
3970 xapp.Logger.Debug("TEST: REST notification received e2SubsId=%v", e2SubsId)
3972 // REST subscription sill there to be deleted
3973 xappConn1.SendRESTSubsDelReq(t, &restSubId)
3975 // Wait that subs is cleaned
3976 waitSubsCleanup(t, e2SubsId, 10)
3978 mainCtrl.VerifyCounterValues(t)
3979 mainCtrl.VerifyAllClean(t)
3982 //-----------------------------------------------------------------------------
3983 // TestRESTSubDelReqRetryInSubmgr
3986 // +-------+ +---------+ +---------+
3987 // | xapp | | submgr | | e2term |
3988 // +-------+ +---------+ +---------+
3990 // | [SUBS CREATE] |
3993 // | RESTSubDelReq | |
3994 // |---------------->| |
3996 // | RESTSubDelResp | |
3997 // |<----------------| |
3999 // | |------------->|
4002 // | |------------->|
4005 // | |<-------------|
4008 //-----------------------------------------------------------------------------
4009 func TestRESTSubDelReqRetryInSubmgr(t *testing.T) {
4010 CaseBegin("TestRESTSubDelReqRetryInSubmgr")
4012 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
4013 Counter{cRestSubReqFromXapp, 1},
4014 Counter{cRestSubRespToXapp, 1},
4015 Counter{cSubReqToE2, 1},
4016 Counter{cSubRespFromE2, 1},
4017 Counter{cRestSubNotifToXapp, 1},
4018 Counter{cRestSubDelReqFromXapp, 1},
4019 Counter{cSubDelReqToE2, 1},
4020 Counter{cSubDelReqTimerExpiry, 1},
4021 Counter{cSubDelReReqToE2, 1},
4022 Counter{cSubDelRespFromE2, 1},
4023 Counter{cRestSubDelRespToXapp, 1},
4026 var params *teststube2ap.RESTSubsReqParams = nil
4027 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
4030 xappConn1.SendRESTSubsDelReq(t, &restSubId)
4032 // E2t: Receive 1st SubsDelReq
4033 e2termConn1.RecvSubsDelReq(t)
4035 // E2t: Receive 2nd SubsDelReq and send SubsDelResp
4036 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
4037 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
4039 //Wait that subs is cleaned
4040 waitSubsCleanup(t, e2SubsId, 10)
4042 mainCtrl.VerifyCounterValues(t)
4043 mainCtrl.VerifyAllClean(t)
4046 //-----------------------------------------------------------------------------
4047 // TestRESTSubDelReqTwoRetriesNoRespInSubmgr
4050 // +-------+ +---------+ +---------+
4051 // | xapp | | submgr | | e2term |
4052 // +-------+ +---------+ +---------+
4054 // | [SUBS CREATE] |
4057 // | RESTSubDelReq | |
4058 // |---------------->| |
4060 // | RESTSubDelResp | |
4061 // |<----------------| |
4063 // | |------------->|
4066 // | |------------->|
4070 //-----------------------------------------------------------------------------
4071 func TestRESTSubDelReqTwoRetriesNoRespInSubmgr(t *testing.T) {
4072 CaseBegin("TestRESTSubDelReTwoRetriesNoRespInSubmgr")
4074 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
4075 Counter{cRestSubReqFromXapp, 1},
4076 Counter{cRestSubRespToXapp, 1},
4077 Counter{cSubReqToE2, 1},
4078 Counter{cSubRespFromE2, 1},
4079 Counter{cRestSubNotifToXapp, 1},
4080 Counter{cRestSubDelReqFromXapp, 1},
4081 Counter{cSubDelReqToE2, 1},
4082 Counter{cSubDelReqTimerExpiry, 1},
4083 Counter{cSubDelReReqToE2, 1},
4084 Counter{cSubDelRespFromE2, 1},
4085 Counter{cRestSubDelRespToXapp, 1},
4089 var params *teststube2ap.RESTSubsReqParams = nil
4090 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
4093 xappConn1.SendRESTSubsDelReq(t, &restSubId)
4095 // E2t: Receive 1st SubsDelReq
4096 e2termConn1.RecvSubsDelReq(t)
4098 // E2t: Receive 2nd SubsDelReq and send SubsDelResp
4099 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
4100 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
4102 //Wait that subs is cleaned
4103 waitSubsCleanup(t, e2SubsId, 10)
4105 mainCtrl.VerifyCounterValues(t)
4106 mainCtrl.VerifyAllClean(t)
4109 //-----------------------------------------------------------------------------
4110 // TestRESTSubDelReqSubDelFailRespInSubmgr
4113 // +-------+ +---------+ +---------+
4114 // | xapp | | submgr | | e2term |
4115 // +-------+ +---------+ +---------+
4117 // | [SUBS CREATE] |
4120 // | RESTSubDelReq | |
4121 // |---------------->| |
4123 // | RESTSubDelResp | |
4124 // |<----------------| |
4126 // | |------------->|
4129 // | |<-------------|
4132 //-----------------------------------------------------------------------------
4133 func TestRESTSubDelReqSubDelFailRespInSubmgr(t *testing.T) {
4134 CaseBegin("TestRESTSubDelReqSubDelFailRespInSubmgr")
4136 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
4137 Counter{cRestSubReqFromXapp, 1},
4138 Counter{cRestSubRespToXapp, 1},
4139 Counter{cSubReqToE2, 1},
4140 Counter{cSubRespFromE2, 1},
4141 Counter{cRestSubNotifToXapp, 1},
4142 Counter{cRestSubDelReqFromXapp, 1},
4143 Counter{cSubDelReqToE2, 1},
4144 Counter{cSubDelFailFromE2, 1},
4145 Counter{cRestSubDelRespToXapp, 1},
4149 var params *teststube2ap.RESTSubsReqParams = nil
4150 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
4153 xappConn1.SendRESTSubsDelReq(t, &restSubId)
4155 // E2t: Send receive SubsDelReq and send SubsDelFail
4156 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
4157 e2termConn1.SendSubsDelFail(t, delreq, delmsg)
4159 //Wait that subs is cleaned
4160 waitSubsCleanup(t, e2SubsId, 10)
4162 mainCtrl.VerifyCounterValues(t)
4163 mainCtrl.VerifyAllClean(t)
4166 //-----------------------------------------------------------------------------
4167 // TestRESTSubReqAndSubDelOkSameAction
4170 // +-------+ +-------+ +---------+ +---------+
4171 // | xapp2 | | xapp1 | | submgr | | e2term |
4172 // +-------+ +-------+ +---------+ +---------+
4174 // | | RESTSubReq1 | |
4175 // | |---------------->| |
4177 // | | RESTSubResp1 | |
4178 // | |<----------------| |
4181 // | | |------------->|
4183 // | | |<-------------|
4184 // | | RESTNotif1 | |
4185 // | |<----------------| |
4187 // | RESTSubReq2 | |
4188 // |------------------------------>| |
4190 // | RESTSubResp2 | |
4191 // |<------------------------------| |
4193 // | | RESTNotif2 | |
4194 // |<------------------------------| |
4196 // | | RESTSubDelReq1 | |
4197 // | |---------------->| |
4199 // | | RESTSubDelResp1 | |
4200 // | |<----------------| |
4202 // | RESTSubDelReq2 | |
4203 // |------------------------------>| |
4205 // | RESTSubDelResp2 | |
4206 // |<------------------------------| |
4208 // | | | SubDelReq2 |
4209 // | | |------------->|
4211 // | | | SubDelResp2 |
4212 // | | |<-------------|
4215 //-----------------------------------------------------------------------------
4216 func TestRESTSubReqAndSubDelOkSameAction(t *testing.T) {
4217 CaseBegin("TestRESTSubReqAndSubDelOkSameAction")
4219 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
4220 Counter{cRestSubReqFromXapp, 2},
4221 Counter{cRestSubRespToXapp, 2},
4222 Counter{cSubReqToE2, 1},
4223 Counter{cSubRespFromE2, 1},
4224 Counter{cRestSubNotifToXapp, 2},
4225 Counter{cMergedSubscriptions, 1},
4226 Counter{cUnmergedSubscriptions, 1},
4227 Counter{cRestSubDelReqFromXapp, 2},
4228 Counter{cSubDelReqToE2, 1},
4229 Counter{cSubDelRespFromE2, 1},
4230 Counter{cRestSubDelRespToXapp, 2},
4234 var params *teststube2ap.RESTSubsReqParams = nil
4237 restSubId1, e2SubsId1 := createSubscription(t, xappConn1, e2termConn1, params)
4238 queryXappSubscription(t, int64(e2SubsId1), "RAN_NAME_1", []string{"localhost:13560"})
4241 params = xappConn2.GetRESTSubsReqReportParams(subReqCount)
4242 params.SetMeid("RAN_NAME_1")
4244 xapp.Subscription.SetResponseCB(xappConn2.SubscriptionRespHandler)
4245 xappConn2.ExpectAnyNotification(t)
4246 waiter := rtmgrHttp.AllocNextSleep(10, true)
4247 restSubId2 := xappConn2.SendRESTSubsReq(t, params)
4248 waiter.WaitResult(t)
4249 xapp.Logger.Debug("Send REST subscriber request for subscriberId : %v", restSubId2)
4250 e2SubsId2 := xappConn2.WaitAnyRESTNotification(t)
4251 xapp.Logger.Debug("REST notification received e2SubsId=%v", e2SubsId2)
4253 queryXappSubscription(t, int64(e2SubsId1), "RAN_NAME_1", []string{"localhost:13560", "localhost:13660"})
4256 xappConn1.SendRESTSubsDelReq(t, &restSubId1)
4259 deleteXapp2Subscription(t, &restSubId2)
4261 //Wait that subs is cleaned
4262 waitSubsCleanup(t, e2SubsId2, 10)
4263 mainCtrl.VerifyCounterValues(t)
4264 mainCtrl.VerifyAllClean(t)
4267 //-----------------------------------------------------------------------------
4268 // TestSubReqAndSubDelOkSameActionParallel
4271 // +-------+ +-------+ +---------+ +---------+
4272 // | xapp2 | | xapp1 | | submgr | | e2term |
4273 // +-------+ +-------+ +---------+ +---------+
4278 // | |------------->| |
4281 // | | |------------->|
4283 // |--------------------------->| |
4285 // | | |<-------------|
4287 // | |<-------------| |
4289 // | | |------------->|
4292 // | | |<-------------|
4294 // |<---------------------------| |
4296 // | | SubDelReq 1 | |
4297 // | |------------->| |
4299 // | | SubDelResp 1 | |
4300 // | |<-------------| |
4302 // | SubDelReq 2 | |
4303 // |--------------------------->| |
4305 // | | | SubDelReq 2 |
4306 // | | |------------->|
4308 // | | | SubDelReq 2 |
4309 // | | |------------->|
4311 // | SubDelResp 2 | |
4312 // |<---------------------------| |
4314 func TestRESTSubReqAndSubDelOkSameActionParallel(t *testing.T) {
4315 CaseBegin("TestRESTSubReqAndSubDelOkSameActionParallel")
4317 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
4318 Counter{cRestSubReqFromXapp, 2},
4319 Counter{cRestSubRespToXapp, 2},
4320 Counter{cSubReqToE2, 2},
4321 Counter{cSubRespFromE2, 2},
4322 Counter{cRestSubNotifToXapp, 2},
4323 Counter{cRestSubDelReqFromXapp, 2},
4324 Counter{cSubDelReqToE2, 2},
4325 Counter{cSubDelRespFromE2, 2},
4326 Counter{cRestSubDelRespToXapp, 2},
4329 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
4330 restSubId1 := xappConn1.SendRESTSubsReq(t, params)
4331 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
4333 params2 := xappConn2.GetRESTSubsReqReportParams(subReqCount)
4334 restSubId2 := xappConn2.SendRESTSubsReq(t, params2)
4336 xappConn1.ExpectRESTNotification(t, restSubId1)
4337 e2termConn1.SendSubsResp(t, crereq1, cremsg1)
4338 e2SubsId1 := xappConn1.WaitRESTNotification(t, restSubId1)
4340 xappConn2.ExpectRESTNotification(t, restSubId2)
4341 crereq2, cremsg2 := e2termConn1.RecvSubsReq(t)
4342 e2termConn1.SendSubsResp(t, crereq2, cremsg2)
4343 e2SubsId2 := xappConn2.WaitRESTNotification(t, restSubId2)
4346 xappConn1.SendRESTSubsDelReq(t, &restSubId1)
4347 delreq1, delmsg1 := e2termConn1.RecvSubsDelReq(t)
4348 e2termConn1.SendSubsDelResp(t, delreq1, delmsg1)
4349 mainCtrl.wait_subs_clean(t, e2SubsId1, 10)
4352 xappConn2.SendRESTSubsDelReq(t, &restSubId2)
4353 delreq2, delmsg2 := e2termConn1.RecvSubsDelReq(t)
4354 e2termConn1.SendSubsDelResp(t, delreq2, delmsg2)
4356 waitSubsCleanup(t, e2SubsId2, 10)
4357 mainCtrl.VerifyCounterValues(t)
4358 mainCtrl.VerifyAllClean(t)
4362 //-----------------------------------------------------------------------------
4363 // TestRESTSubReqAndSubDelNoAnswerSameActionParallel
4366 // +-------+ +-------+ +---------+ +---------+
4367 // | xapp2 | | xapp1 | | submgr | | e2term |
4368 // +-------+ +-------+ +---------+ +---------+
4372 // | | RESTSubReq1 | |
4373 // | |---------------->| |
4375 // | | RESTSubResp1 | |
4376 // | |<----------------| |
4378 // | | |------------->|
4379 // | RESTSubReq2 | |
4380 // |------------------------------>| |
4382 // | RESTSubResp2 | |
4383 // |<------------------------------| |
4385 // | | |------------->|
4388 // | | | SubDelReq |
4389 // | | |------------->|
4391 // | | | SubDelResp |
4392 // | | |<-------------|
4393 // | | RESTNotif1 | |
4394 // | | unsuccess | |
4395 // | |<----------------| |
4397 // | | unsuccess | |
4398 // |<------------------------------| |
4400 // | | RESTSubDelReq1 | |
4401 // | |---------------->| |
4403 // | | RESTSubDelResp1 | |
4404 // | |<----------------| |
4406 // | RESTSubDelReq2 | |
4407 // |------------------------------>| |
4409 // | RESTSubDelResp2 | |
4410 // |<------------------------------| |
4412 //-----------------------------------------------------------------------------
4413 func TestRESTSubReqAndSubDelNoAnswerSameActionParallel(t *testing.T) {
4414 CaseBegin("TestRESTSubReqAndSubDelNoAnswerSameActionParallel")
4416 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
4417 Counter{cRestSubReqFromXapp, 2},
4418 Counter{cMergedSubscriptions, 1},
4419 Counter{cRestSubRespToXapp, 2},
4420 Counter{cSubReqToE2, 1},
4421 Counter{cSubReqTimerExpiry, 2},
4422 Counter{cSubReReqToE2, 1},
4423 Counter{cRestSubFailNotifToXapp, 2},
4424 Counter{cRestSubDelReqFromXapp, 2},
4425 Counter{cSubDelReqToE2, 1},
4426 Counter{cSubDelRespFromE2, 1},
4427 Counter{cRestSubDelRespToXapp, 2},
4429 const subReqCount int = 1
4432 params1 := xappConn1.GetRESTSubsReqReportParams(subReqCount)
4433 restSubId1 := xappConn1.SendRESTSubsReq(t, params1)
4434 crereq1, _ := e2termConn1.RecvSubsReq(t)
4437 subepcnt2 := mainCtrl.get_subs_entrypoint_cnt(t, crereq1.RequestId.InstanceId)
4438 params2 := xappConn2.GetRESTSubsReqReportParams(subReqCount)
4439 params2.SetMeid("RAN_NAME_1")
4440 restSubId2 := xappConn2.SendRESTSubsReq(t, params2)
4441 mainCtrl.wait_subs_entrypoint_cnt_change(t, crereq1.RequestId.InstanceId, subepcnt2, 10)
4443 //Req1 (retransmitted)
4444 e2termConn1.RecvSubsReq(t)
4446 delreq1, delmsg1 := e2termConn1.RecvSubsDelReq(t)
4448 xappConn1.WaitListedRestNotifications(t, []string{restSubId1, restSubId2})
4449 e2termConn1.SendSubsDelResp(t, delreq1, delmsg1)
4451 e2SubsIdA := <-xappConn1.ListedRESTNotifications
4452 xapp.Logger.Debug("TEST: 1.st XAPP notification received e2SubsId=%v", e2SubsIdA)
4453 e2SubsIdB := <-xappConn1.ListedRESTNotifications
4454 xapp.Logger.Debug("TEST: 2.nd XAPP notification received e2SubsId=%v", e2SubsIdB)
4457 xappConn1.SendRESTSubsDelReq(t, &restSubId1)
4460 xappConn2.SendRESTSubsDelReq(t, &restSubId2)
4462 mainCtrl.wait_multi_subs_clean(t, []uint32{e2SubsIdA.E2SubsId, e2SubsIdB.E2SubsId}, 10)
4464 //Wait that subs is cleaned
4465 waitSubsCleanup(t, e2SubsIdA.E2SubsId, 10)
4466 mainCtrl.VerifyCounterValues(t)
4467 mainCtrl.VerifyAllClean(t)
4470 //-----------------------------------------------------------------------------
4471 // TestRESTSubReqAndSubDelNokSameActionParallel
4474 // +-------+ +-------+ +---------+ +---------+
4475 // | xapp2 | | xapp1 | | submgr | | e2term |
4476 // +-------+ +-------+ +---------+ +---------+
4480 // | | RESTSubReq1 | |
4481 // | |---------------->| |
4483 // | | RESTSubResp1 | |
4484 // | |<----------------| |
4486 // | | |------------->|
4487 // | RESTSubReq2 | |
4488 // |------------------------------>| |
4490 // | RESTSubDelResp2 | |
4491 // |<------------------------------| |
4493 // | | |<-------------|
4495 // | | RESTNotif1 | |
4496 // | | unsuccess | |
4497 // | |<----------------| |
4499 // | | unsuccess | |
4500 // |<------------------------------| |
4502 // | | RESTSubDelReq1 | | There is no need for xApp to send delete for failed subscriptions but some xApp might do so.
4503 // | |---------------->| |
4505 // | | RESTSubDelResp1 | |
4506 // | |<----------------| |
4508 // | RESTSubDelReq2 | |
4509 // |------------------------------>| |
4511 // | RESTSubDelResp2 | |
4512 // |<------------------------------| |
4514 //-----------------------------------------------------------------------------
4515 func TestRESTSubReqAndSubDelNokSameActionParallel(t *testing.T) {
4516 CaseBegin("TestRESTSubReqAndSubDelNokSameActionParallel")
4518 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
4519 Counter{cRestSubReqFromXapp, 2},
4520 Counter{cMergedSubscriptions, 1},
4521 Counter{cRestSubRespToXapp, 2},
4522 Counter{cSubReqToE2, 1},
4523 Counter{cSubFailFromE2, 1},
4524 Counter{cRestSubFailNotifToXapp, 2},
4525 Counter{cRestSubDelReqFromXapp, 2},
4526 Counter{cRestSubDelRespToXapp, 2},
4529 const subReqCount int = 1
4532 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
4533 restSubId1 := xappConn1.SendRESTSubsReq(t, params)
4534 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
4537 subepcnt2 := mainCtrl.get_subs_entrypoint_cnt(t, crereq1.RequestId.InstanceId)
4538 params2 := xappConn2.GetRESTSubsReqReportParams(subReqCount)
4539 params2.SetMeid("RAN_NAME_1")
4540 restSubId2 := xappConn2.SendRESTSubsReq(t, params2)
4541 mainCtrl.wait_subs_entrypoint_cnt_change(t, crereq1.RequestId.InstanceId, subepcnt2, 10)
4543 // E2t: send SubsFail (first)
4544 fparams1 := &teststube2ap.E2StubSubsFailParams{}
4545 fparams1.Set(crereq1)
4546 e2termConn1.SendSubsFail(t, fparams1, cremsg1)
4548 xappConn1.WaitListedRestNotifications(t, []string{restSubId1, restSubId2})
4549 e2SubsIdA := <-xappConn1.ListedRESTNotifications
4550 xapp.Logger.Debug("TEST: 1.st XAPP notification received e2SubsId=%v", e2SubsIdA)
4551 e2SubsIdB := <-xappConn1.ListedRESTNotifications
4552 xapp.Logger.Debug("TEST: 2.nd XAPP notification received e2SubsId=%v", e2SubsIdB)
4555 xappConn1.SendRESTSubsDelReq(t, &restSubId1)
4558 xappConn2.SendRESTSubsDelReq(t, &restSubId2)
4560 //Wait that subs is cleaned
4561 waitSubsCleanup(t, e2SubsIdA.E2SubsId, 10)
4562 waitSubsCleanup(t, e2SubsIdB.E2SubsId, 10)
4563 mainCtrl.VerifyCounterValues(t)
4564 mainCtrl.VerifyAllClean(t)
4567 func TestRESTSubReqPolicyAndSubDelOk(t *testing.T) {
4568 CaseBegin("TestRESTSubReqPolicyAndSubDelOk")
4570 // Init counter check
4571 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
4572 Counter{cRestSubReqFromXapp, 1},
4573 Counter{cRestSubRespToXapp, 1},
4574 Counter{cSubReqToE2, 1},
4575 Counter{cSubRespFromE2, 1},
4576 Counter{cRestSubNotifToXapp, 1},
4577 Counter{cRestSubDelReqFromXapp, 1},
4578 Counter{cSubDelReqToE2, 1},
4579 Counter{cSubDelRespFromE2, 1},
4580 Counter{cRestSubDelRespToXapp, 1},
4583 params := xappConn1.GetRESTSubsReqPolicyParams(subReqCount)
4584 restSubId := xappConn1.SendRESTSubsReq(t, params)
4585 xapp.Logger.Debug("Send REST Policy subscriber request for subscriberId : %v", restSubId)
4587 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
4588 xappConn1.ExpectRESTNotification(t, restSubId)
4589 e2termConn1.SendSubsResp(t, crereq1, cremsg1)
4590 e2SubsId := xappConn1.WaitRESTNotification(t, restSubId)
4591 xapp.Logger.Debug("REST notification received e2SubsId=%v", e2SubsId)
4593 xappConn1.SendRESTSubsDelReq(t, &restSubId)
4594 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
4595 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
4597 // Wait that subs is cleaned
4598 waitSubsCleanup(t, e2SubsId, 10)
4599 mainCtrl.VerifyCounterValues(t)
4600 mainCtrl.VerifyAllClean(t)
4603 //-----------------------------------------------------------------------------
4604 // TestRESTSubReqPolicyChangeAndSubDelOk
4607 // +-------+ +---------+ +---------+
4608 // | xapp | | submgr | | e2term |
4609 // +-------+ +---------+ +---------+
4612 // |---------------->| |
4614 // | RESTSubResp | |
4615 // |<----------------| |
4617 // | |------------->|
4620 // | |<-------------|
4623 // |<----------------| |
4626 // |---------------->| |
4628 // | RESTSubResp | |
4629 // |<----------------| |
4631 // | |------------->|
4634 // | |<-------------|
4637 // |<----------------| |
4639 // | RESTSubDelReq | |
4640 // |---------------->| |
4643 // | |------------->|
4646 // | |<-------------|
4648 // | RESTSubDelResp | |
4649 // |<----------------| |
4651 //-----------------------------------------------------------------------------
4652 func TestRESTSubReqPolicyChangeAndSubDelOk(t *testing.T) {
4653 CaseBegin("TestRESTSubReqPolicyAndSubDelOk")
4655 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
4656 Counter{cRestSubReqFromXapp, 2},
4657 Counter{cRestSubRespToXapp, 2},
4658 Counter{cSubReqToE2, 2},
4659 Counter{cSubRespFromE2, 2},
4660 Counter{cRestSubNotifToXapp, 2},
4661 Counter{cRestSubDelReqFromXapp, 1},
4662 Counter{cSubDelReqToE2, 1},
4663 Counter{cSubDelRespFromE2, 1},
4664 Counter{cRestSubDelRespToXapp, 1},
4667 const subReqCount int = 1
4668 const e2Timeout int64 = 1
4669 const e2RetryCount int64 = 0
4670 const routingNeeded bool = true
4673 params := xappConn1.GetRESTSubsReqPolicyParams(subReqCount)
4674 params.SetSubscriptionDirectives(e2Timeout, e2RetryCount, routingNeeded)
4675 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
4678 // GetRESTSubsReqPolicyParams sets some counters on tc side.
4680 params = xappConn1.GetRESTSubsReqPolicyParams(subReqCount)
4681 params.SetSubscriptionDirectives(e2Timeout, e2RetryCount, routingNeeded)
4682 params.SetSubscriptionID(&restSubId)
4683 params.SetTimeToWait("w200ms")
4684 restSubId, e2SubsId = createSubscription(t, xappConn1, e2termConn1, params)
4687 xappConn1.SendRESTSubsDelReq(t, &restSubId)
4689 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
4690 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
4692 // Wait that subs is cleaned
4693 waitSubsCleanup(t, e2SubsId, 10)
4694 mainCtrl.VerifyCounterValues(t)
4695 mainCtrl.VerifyAllClean(t)
4698 //-----------------------------------------------------------------------------
4699 // TestRESTSubReqPolicyChangeNOk
4702 // +-------+ +---------+ +---------+
4703 // | xapp | | submgr | | e2term |
4704 // +-------+ +---------+ +---------+
4707 // |---------------->| |
4709 // | RESTSubResp | |
4710 // |<----------------| |
4712 // | |------------->|
4715 // | |<-------------|
4718 // |<----------------| |
4721 // |---------------->| |
4723 // | RESTSubUpdateFail(400 Bad request)
4725 // | RESTSubDelReq | |
4726 // |---------------->| |
4729 // | |------------->|
4732 // | |<-------------|
4734 // | RESTSubDelResp | |
4735 // |<----------------| |
4737 //-----------------------------------------------------------------------------
4738 func TestRESTSubReqPolicyChangeNOk(t *testing.T) {
4739 CaseBegin("TestRESTSubReqPolicyChangeNOk")
4741 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
4742 Counter{cRestSubReqFromXapp, 2},
4743 Counter{cRestSubRespToXapp, 1},
4744 Counter{cSubReqToE2, 1},
4745 Counter{cSubRespFromE2, 1},
4746 Counter{cRestSubNotifToXapp, 1},
4747 Counter{cRestSubFailToXapp, 1},
4748 Counter{cRestSubDelReqFromXapp, 1},
4749 Counter{cSubDelReqToE2, 1},
4750 Counter{cSubDelRespFromE2, 1},
4751 Counter{cRestSubDelRespToXapp, 1},
4755 params := xappConn1.GetRESTSubsReqPolicyParams(subReqCount)
4756 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
4759 params = xappConn1.GetRESTSubsReqPolicyParams(subReqCount)
4761 restSubIdUpd := strings.ToUpper(restSubId) // This makes RESTSubReq to fail
4762 params.SetSubscriptionID(&restSubIdUpd)
4763 params.SetTimeToWait("w200ms")
4765 restSubId2 := xappConn1.SendRESTSubsReq(t, params)
4766 assert.Equal(t, restSubId2, "")
4769 xappConn1.SendRESTSubsDelReq(t, &restSubId)
4771 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
4772 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
4774 // Wait that subs is cleaned
4775 waitSubsCleanup(t, e2SubsId, 10)
4776 mainCtrl.VerifyCounterValues(t)
4777 mainCtrl.VerifyAllClean(t)
4780 //-----------------------------------------------------------------------------
4781 // TestRESTSubReqAndSubDelOkTwoE2termParallel
4784 // +-------+ +---------+ +---------+ +---------+
4785 // | xapp | | submgr | | e2term1 | | e2term2 |
4786 // +-------+ +---------+ +---------+ +---------+
4790 // | RESTSubReq1 | | |
4791 // |---------------->| | |
4793 // | RESTSubResp1 | | |
4794 // |<----------------| | |
4796 // | |------------->| |
4798 // | RESTSubReq2 | | |
4799 // |---------------->| | |
4801 // | RESTSubResp2 | | |
4802 // |<----------------| | |
4804 // | |---------------------------->|
4807 // | |<-------------| |
4808 // | RESTNotif1 | | |
4809 // |<----------------| | |
4811 // | |<----------------------------|
4812 // | RESTNotif2 | | |
4813 // |<----------------| | |
4815 // | [SUBS 1 DELETE] | |
4817 // | [SUBS 2 DELETE] | |
4820 //-----------------------------------------------------------------------------
4821 func TestRESTSubReqAndSubDelOkTwoE2termParallel(t *testing.T) {
4822 CaseBegin("TestRESTSubReqAndSubDelOkTwoE2termParallel")
4824 // Init counter check
4825 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
4826 Counter{cRestSubReqFromXapp, 2},
4827 Counter{cRestSubRespToXapp, 2},
4828 Counter{cSubReqToE2, 2},
4829 Counter{cSubRespFromE2, 2},
4830 Counter{cRestSubNotifToXapp, 2},
4831 Counter{cRestSubDelReqFromXapp, 2},
4832 Counter{cSubDelReqToE2, 2},
4833 Counter{cSubDelRespFromE2, 2},
4834 Counter{cRestSubDelRespToXapp, 2},
4837 const subReqCount int = 1
4840 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
4841 restSubId1 := xappConn1.SendRESTSubsReq(t, params)
4842 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
4845 params = xappConn2.GetRESTSubsReqReportParams(subReqCount)
4846 params.SetMeid("RAN_NAME_11")
4847 // Here we use xappConn2 to simulate sending second request from same xapp as doing it from xappConn1
4848 // would not work as notification would not be received
4849 restSubId2 := xappConn2.SendRESTSubsReq(t, params)
4850 crereq2, cremsg2 := e2termConn2.RecvSubsReq(t)
4853 xappConn1.ExpectRESTNotification(t, restSubId1)
4854 e2termConn1.SendSubsResp(t, crereq1, cremsg1)
4855 e2SubsId1 := xappConn1.WaitRESTNotification(t, restSubId1)
4856 xapp.Logger.Debug("TEST: REST notification received e2SubsId1=%v", e2SubsId1)
4859 xappConn2.ExpectRESTNotification(t, restSubId2)
4860 e2termConn2.SendSubsResp(t, crereq2, cremsg2)
4861 e2SubsId2 := xappConn2.WaitRESTNotification(t, restSubId2)
4862 xapp.Logger.Debug("TEST: REST notification received e2SubsId2=%v", e2SubsId2)
4865 xappConn1.SendRESTSubsDelReq(t, &restSubId1)
4866 delreq1, delmsg1 := e2termConn1.RecvSubsDelReq(t)
4867 e2termConn1.SendSubsDelResp(t, delreq1, delmsg1)
4869 // Wait that subs is cleaned
4870 mainCtrl.wait_subs_clean(t, e2SubsId1, 10)
4873 xappConn1.SendRESTSubsDelReq(t, &restSubId2)
4874 delreq2, delmsg2 := e2termConn2.RecvSubsDelReq(t)
4875 e2termConn2.SendSubsDelResp(t, delreq2, delmsg2)
4877 // Wait that subs is cleaned
4878 waitSubsCleanup(t, e2SubsId2, 10)
4880 mainCtrl.VerifyCounterValues(t)
4881 mainCtrl.VerifyAllClean(t)
4884 //-----------------------------------------------------------------------------
4885 // TestRESTSubReqAsn1EncodeFail
4887 // In this case submgr send RICSubscriptionDeleteRequest after encode failure which should not happen!
4889 // +-------+ +---------+ +---------+
4890 // | xapp | | submgr | | e2term |
4891 // +-------+ +---------+ +---------+
4894 // |---------------->| |
4896 // | RESTSubResp | |
4897 // |<----------------| |
4898 // | RESTSubDelReq | |
4899 // |---------------->| |
4900 // | RESTSubDelResp | |
4902 // |<----------------| |
4905 //-----------------------------------------------------------------------------
4906 func TestRESTSubReqAsn1EncodeFail(t *testing.T) {
4907 CaseBegin("TestRESTSubReqAsn1EncodeFail")
4909 xapp.Logger.Debug("Xapp-frame, v0.8.1 sufficient REST API validation")
4913 //-----------------------------------------------------------------------------
4914 // TestRESTSubReqInsertAndSubDelOk
4917 // +-------+ +---------+ +---------+
4918 // | xapp | | submgr | | e2term |
4919 // +-------+ +---------+ +---------+
4922 // |---------------->| |
4924 // | RESTSubResp | |
4925 // |<----------------| |
4928 // | |------------->|
4931 // | |<-------------|
4933 // |<----------------| |
4936 // | RESTSubDelReq | |
4937 // |---------------->| |
4940 // | |------------->|
4943 // | |<-------------|
4945 // | RESTSubDelResp| |
4946 // |<----------------| |
4948 //-----------------------------------------------------------------------------
4949 func TestRESTSubReqInsertAndSubDelOk(t *testing.T) {
4950 CaseBegin("TestRESTInsertSubReqAndSubDelOk")
4952 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
4953 Counter{cRestSubReqFromXapp, 1},
4954 Counter{cRestSubRespToXapp, 1},
4955 Counter{cSubReqToE2, 1},
4956 Counter{cSubRespFromE2, 1},
4957 Counter{cRestSubNotifToXapp, 1},
4958 Counter{cRestSubDelReqFromXapp, 1},
4959 Counter{cSubDelReqToE2, 1},
4960 Counter{cSubDelRespFromE2, 1},
4961 Counter{cRestSubDelRespToXapp, 1},
4964 const subReqCount int = 1
4966 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
4967 params.SetSubActionTypes("insert")
4970 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
4973 xappConn1.SendRESTSubsDelReq(t, &restSubId)
4975 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
4976 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
4978 // Wait that subs is cleaned
4979 waitSubsCleanup(t, e2SubsId, 10)
4980 mainCtrl.VerifyCounterValues(t)
4981 mainCtrl.VerifyAllClean(t)
4984 //-----------------------------------------------------------------------------
4985 // TestRESTSubReqNokAndSubDelOkWithRestartInMiddle
4988 // +-------+ +---------+ +---------+
4989 // | xapp | | submgr | | e2term |
4990 // +-------+ +---------+ +---------+
4993 // |------------->| |
4995 // | RESTSubResp | |
4996 // |<-------------| |
4998 // | |------------->|
5003 // | Submgr restart |
5007 // | |------------->|
5010 // | |<-------------|
5014 // |<-------------| |
5016 // | RESTSubDelReq| |
5017 // |------------->| |
5019 // |RESTSubDelResp| |
5020 // |<-------------| |
5022 //-----------------------------------------------------------------------------
5023 func TestRESTSubReqNokAndSubDelOkWithRestartInMiddle(t *testing.T) {
5024 CaseBegin("TestRESTSubReqNokAndSubDelOkWithRestartInMiddle")
5026 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
5027 Counter{cRestSubReqFromXapp, 1},
5028 Counter{cRestSubRespToXapp, 1},
5029 Counter{cSubReqToE2, 1},
5030 Counter{cSubDelReqFromXapp, 1},
5031 Counter{cSubDelReqToE2, 1},
5032 Counter{cSubDelRespFromE2, 1},
5033 Counter{cRestSubFailNotifToXapp, 1},
5034 Counter{cRestSubDelReqFromXapp, 1},
5035 Counter{cRestSubDelRespToXapp, 1},
5038 const subReqCount int = 1
5040 // Remove possible existing subscription
5041 mainCtrl.removeExistingSubscriptions(t)
5043 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
5046 mainCtrl.SetResetTestFlag(t, true) // subs.DoNotWaitSubResp will be set TRUE for the subscription
5047 restSubId := xappConn1.SendRESTSubsReq(t, params)
5048 xapp.Logger.Debug("Send REST subscriber request for subscriber : %v", restSubId)
5050 e2termConn1.RecvSubsReq(t)
5052 mainCtrl.SetResetTestFlag(t, false)
5054 mainCtrl.SimulateRestart(t)
5055 xapp.Logger.Debug("mainCtrl.SimulateRestart done")
5057 // Deleletion of uncompleted subscription
5058 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
5059 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
5062 xappConn1.SendRESTSubsDelReq(t, &restSubId)
5064 xappConn1.TestMsgChanEmpty(t)
5065 e2termConn1.TestMsgChanEmpty(t)
5066 mainCtrl.wait_registry_empty(t, 10)
5068 mainCtrl.VerifyCounterValues(t)
5069 mainCtrl.VerifyAllClean(t)
5072 //-----------------------------------------------------------------------------
5073 // TestRESTSubReqAndSubDelOkWithRestartInMiddle
5076 // +-------+ +---------+ +---------+
5077 // | xapp | | submgr | | e2term |
5078 // +-------+ +---------+ +---------+
5081 // |---------------->| |
5083 // | RESTSubResp | |
5084 // |<----------------| |
5086 // | |------------->|
5089 // | |<-------------|
5092 // |<----------------| |
5095 // | Submgr restart |
5097 // | RESTSubDelReq | |
5098 // |---------------->| |
5101 // | |------------->|
5104 // | |<-------------|
5106 // | RESTSubDelResp | |
5107 // |<----------------| |
5109 //-----------------------------------------------------------------------------
5111 func TestRESTSubReqAndSubDelOkWithRestartInMiddle(t *testing.T) {
5112 CaseBegin("TestRESTSubReqAndSubDelOkWithRestartInMiddle")
5114 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
5115 Counter{cRestSubReqFromXapp, 1},
5116 Counter{cRestSubRespToXapp, 1},
5117 Counter{cSubReqToE2, 1},
5118 Counter{cSubRespFromE2, 1},
5119 Counter{cRestSubNotifToXapp, 1},
5120 Counter{cRestSubDelReqFromXapp, 1},
5121 Counter{cSubDelReqToE2, 1},
5122 Counter{cSubDelRespFromE2, 1},
5123 Counter{cRestSubDelRespToXapp, 1},
5125 // Remove possible existing subscription
5126 mainCtrl.removeExistingSubscriptions(t)
5128 var params *teststube2ap.RESTSubsReqParams = nil
5130 // Create subscription
5131 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
5132 xapp.Logger.Debug("Send REST subscriber request for subscriber : %v", restSubId)
5134 // Check subscription
5135 queryXappSubscription(t, int64(e2SubsId), "RAN_NAME_1", []string{"localhost:13560"})
5137 mainCtrl.SimulateRestart(t)
5138 xapp.Logger.Debug("mainCtrl.SimulateRestart done")
5140 // Check subscription
5141 queryXappSubscription(t, int64(e2SubsId), "RAN_NAME_1", []string{"localhost:13560"})
5143 // Delete subscription
5144 deleteSubscription(t, xappConn1, e2termConn1, &restSubId)
5146 //Wait that subs is cleaned
5147 waitSubsCleanup(t, e2SubsId, 10)
5149 mainCtrl.VerifyCounterValues(t)
5150 mainCtrl.VerifyAllClean(t)
5153 //-----------------------------------------------------------------------------
5154 // TestRESTSubReqAndSubDelOkSameActionWithRestartsInMiddle
5157 // +-------+ +-------+ +---------+ +---------+
5158 // | xapp2 | | xapp1 | | submgr | | e2term |
5159 // +-------+ +-------+ +---------+ +---------+
5161 // | | RESTSubReq1 | |
5162 // | |---------------->| |
5164 // | | RESTSubResp1 | |
5165 // | |<----------------| |
5168 // | | |------------->|
5170 // | | |<-------------|
5171 // | | RESTNotif1 | |
5172 // | |<----------------| |
5174 // | RESTSubReq2 | |
5175 // |------------------------------>| |
5177 // | RESTSubResp2 | |
5178 // |<------------------------------| |
5180 // | | RESTNotif2 | |
5181 // |<------------------------------| |
5183 // | | Submgr restart |
5185 // | | RESTSubDelReq1 | |
5186 // | |---------------->| |
5188 // | | RESTSubDelResp1 | |
5189 // | |<----------------| |
5191 // | | Submgr restart |
5193 // | RESTSubDelReq2 | |
5194 // |------------------------------>| |
5196 // | RESTSubDelResp2 | |
5197 // |<------------------------------| |
5199 // | | | SubDelReq2 |
5200 // | | |------------->|
5202 // | | | SubDelResp2 |
5203 // | | |<-------------|
5206 //-----------------------------------------------------------------------------
5208 func TestRESTSubReqAndSubDelOkSameActionWithRestartsInMiddle(t *testing.T) {
5209 CaseBegin("TestRESTSubReqAndSubDelOkSameActionWithRestartsInMiddle")
5211 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
5212 Counter{cRestSubReqFromXapp, 2},
5213 Counter{cRestSubRespToXapp, 2},
5214 Counter{cSubReqToE2, 1},
5215 Counter{cSubRespFromE2, 1},
5216 Counter{cRestSubNotifToXapp, 2},
5217 Counter{cMergedSubscriptions, 1},
5218 Counter{cUnmergedSubscriptions, 1},
5219 Counter{cRestSubDelReqFromXapp, 2},
5220 Counter{cSubDelReqToE2, 1},
5221 Counter{cSubDelRespFromE2, 1},
5222 Counter{cRestSubDelRespToXapp, 2},
5225 // Remove possible existing subscription
5226 mainCtrl.removeExistingSubscriptions(t)
5228 var params *teststube2ap.RESTSubsReqParams = nil
5230 // Create subscription 1
5231 restSubId1, e2SubsId1 := createSubscription(t, xappConn1, e2termConn1, params)
5232 xapp.Logger.Debug("Send REST subscriber request for subscriber 1 : %v", restSubId1)
5234 // Create subscription 2 with same action
5235 params = xappConn2.GetRESTSubsReqReportParams(subReqCount)
5236 params.SetMeid("RAN_NAME_1")
5237 xapp.Subscription.SetResponseCB(xappConn2.SubscriptionRespHandler)
5238 xappConn2.ExpectAnyNotification(t)
5239 restSubId2 := xappConn2.SendRESTSubsReq(t, params)
5240 xapp.Logger.Debug("Send REST subscriber request for subscriberId : %v", restSubId2)
5241 e2SubsId2 := xappConn2.WaitAnyRESTNotification(t)
5242 xapp.Logger.Debug("REST notification received e2SubsId=%v", e2SubsId2)
5244 queryXappSubscription(t, int64(e2SubsId1), "RAN_NAME_1", []string{"localhost:13560", "localhost:13660"})
5246 mainCtrl.SimulateRestart(t)
5247 xapp.Logger.Debug("mainCtrl.SimulateRestart done")
5249 // Delete subscription 1, and wait until it has removed the first endpoint
5250 subepcnt := mainCtrl.get_subs_entrypoint_cnt(t, e2SubsId1)
5251 xappConn1.SendRESTSubsDelReq(t, &restSubId1)
5252 mainCtrl.wait_subs_entrypoint_cnt_change(t, e2SubsId1, subepcnt, 10)
5254 mainCtrl.SimulateRestart(t)
5255 xapp.Logger.Debug("mainCtrl.SimulateRestart done")
5256 queryXappSubscription(t, int64(e2SubsId1), "RAN_NAME_1", []string{"localhost:13660"})
5258 // Delete subscription 2
5259 deleteXapp2Subscription(t, &restSubId2)
5261 //Wait that subs is cleaned
5262 waitSubsCleanup(t, e2SubsId2, 10)
5264 mainCtrl.VerifyCounterValues(t)
5265 mainCtrl.VerifyAllClean(t)
5268 //-----------------------------------------------------------------------------
5269 // TestRESTReportSubReqAndSubDelOk
5272 // +-------+ +---------+ +---------+
5273 // | xapp | | submgr | | e2term |
5274 // +-------+ +---------+ +---------+
5277 // |---------------->| |
5279 // | RESTSubResp | |
5280 // |<----------------| |
5283 // | |------------->|
5286 // | |<-------------|
5288 // |<----------------| |
5290 // | |------------->|
5293 // | |<-------------|
5295 // |<----------------| |
5299 // | RESTSubDelReq | |
5300 // |---------------->| |
5303 // | |------------->|
5306 // | |<-------------|
5308 // | RESTSubDelResp| |
5309 // |<----------------| |
5311 //-----------------------------------------------------------------------------
5313 func TestRESTReportSubReqAndSubDelOk(t *testing.T) {
5314 CaseBegin("TestRESTReportSubReqAndSubDelOk")
5315 const subReqCount int = 1
5317 RESTReportSubReqAndSubDelOk(t, subReqCount, testIndex)
5320 func RESTReportSubReqAndSubDelOk(t *testing.T, subReqCount int, testIndex int) {
5321 xapp.Logger.Debug("TEST: TestRESTReportSubReqAndSubDelOk with testIndex %v", testIndex)
5324 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
5325 restSubId := xappConn1.SendRESTSubsReq(t, params)
5327 var e2SubsId []uint32
5328 for i := 0; i < subReqCount; i++ {
5329 crereq, cremsg := e2termConn1.RecvSubsReq(t)
5330 xappConn1.ExpectRESTNotification(t, restSubId)
5332 e2termConn1.SendSubsResp(t, crereq, cremsg)
5333 instanceId := xappConn1.WaitRESTNotification(t, restSubId)
5334 xapp.Logger.Debug("TEST: REST notification received e2SubsId=%v", instanceId)
5335 e2SubsId = append(e2SubsId, instanceId)
5336 resp, _ := xapp.Subscription.QuerySubscriptions()
5337 assert.Equal(t, resp[i].SubscriptionID, (int64)(instanceId))
5338 assert.Equal(t, resp[i].Meid, "RAN_NAME_1")
5339 assert.Equal(t, resp[i].ClientEndpoint, []string{"localhost:13560"})
5344 xappConn1.SendRESTSubsDelReq(t, &restSubId)
5346 for i := 0; i < subReqCount; i++ {
5347 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
5348 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
5351 // Wait that subs is cleaned
5352 for i := 0; i < subReqCount; i++ {
5353 mainCtrl.wait_subs_clean(t, e2SubsId[i], 10)
5356 xappConn1.TestMsgChanEmpty(t)
5357 e2termConn1.TestMsgChanEmpty(t)
5358 mainCtrl.wait_registry_empty(t, 10)
5359 mainCtrl.VerifyAllClean(t)
5363 func TestRESTPolicySubReqAndSubDelOk(t *testing.T) {
5364 CaseBegin("TestRESTPolicySubReqAndSubDelOk")
5368 RESTPolicySubReqAndSubDelOk(t, subReqCount, testIndex)
5372 RESTPolicySubReqAndSubDelOk(t, subReqCount, testIndex)
5375 func RESTPolicySubReqAndSubDelOk(t *testing.T, subReqCount int, testIndex int) {
5376 xapp.Logger.Debug("TEST: TestRESTPolicySubReqAndSubDelOk with testIndex %v", testIndex)
5379 params := xappConn1.GetRESTSubsReqPolicyParams(subReqCount)
5380 restSubId := xappConn1.SendRESTSubsReq(t, params)
5382 var e2SubsId []uint32
5383 for i := 0; i < subReqCount; i++ {
5384 crereq, cremsg := e2termConn1.RecvSubsReq(t)
5385 xappConn1.ExpectRESTNotification(t, restSubId)
5386 e2termConn1.SendSubsResp(t, crereq, cremsg)
5387 instanceId := xappConn1.WaitRESTNotification(t, restSubId)
5388 xapp.Logger.Debug("TEST: REST notification received e2SubsId=%v", instanceId)
5389 e2SubsId = append(e2SubsId, instanceId)
5393 xappConn1.SendRESTSubsDelReq(t, &restSubId)
5395 for i := 0; i < subReqCount; i++ {
5396 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
5397 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
5400 // Wait that subs is cleaned
5401 for i := 0; i < subReqCount; i++ {
5402 mainCtrl.wait_subs_clean(t, e2SubsId[i], 10)
5404 xappConn1.TestMsgChanEmpty(t)
5405 e2termConn1.TestMsgChanEmpty(t)
5406 mainCtrl.wait_registry_empty(t, 10)
5407 mainCtrl.VerifyAllClean(t)
5410 func TestRESTTwoPolicySubReqAndSubDelOk(t *testing.T) {
5412 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
5413 Counter{cRestSubReqFromXapp, 1},
5414 Counter{cRestSubRespToXapp, 1},
5415 Counter{cSubReqToE2, 2},
5416 Counter{cSubRespFromE2, 2},
5417 Counter{cRestSubNotifToXapp, 2},
5418 Counter{cRestSubDelReqFromXapp, 1},
5419 Counter{cSubDelReqToE2, 2},
5420 Counter{cSubDelRespFromE2, 2},
5421 Counter{cRestSubDelRespToXapp, 1},
5424 const subReqCount int = 2
5427 params := xappConn1.GetRESTSubsReqPolicyParams(subReqCount)
5428 restSubId := xappConn1.SendRESTSubsReq(t, params)
5429 e2SubsIds := sendAndReceiveMultipleE2SubReqs(t, subReqCount, xappConn1, e2termConn1, restSubId)
5431 assert.Equal(t, len(e2SubsIds), 2)
5434 xappConn1.SendRESTSubsDelReq(t, &restSubId)
5435 sendAndReceiveMultipleE2DelReqs(t, e2SubsIds, e2termConn1)
5437 xappConn1.TestMsgChanEmpty(t)
5438 e2termConn1.TestMsgChanEmpty(t)
5439 mainCtrl.wait_registry_empty(t, 10)
5441 mainCtrl.VerifyCounterValues(t)
5442 mainCtrl.VerifyAllClean(t)
5444 func TestRESTPolicySubReqAndSubDelOkFullAmount(t *testing.T) {
5446 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
5447 Counter{cRestSubReqFromXapp, 1},
5448 Counter{cRestSubRespToXapp, 1},
5449 Counter{cSubReqToE2, 19},
5450 Counter{cSubRespFromE2, 19},
5451 Counter{cRestSubNotifToXapp, 19},
5452 Counter{cRestSubDelReqFromXapp, 1},
5453 Counter{cSubDelReqToE2, 19},
5454 Counter{cSubDelRespFromE2, 19},
5455 Counter{cRestSubDelRespToXapp, 1},
5458 const subReqCount int = 19
5460 params := xappConn1.GetRESTSubsReqPolicyParams(subReqCount)
5461 restSubId := xappConn1.SendRESTSubsReq(t, params)
5462 e2SubsIds := sendAndReceiveMultipleE2SubReqs(t, subReqCount, xappConn1, e2termConn1, restSubId)
5464 assert.Equal(t, len(e2SubsIds), 19)
5466 xappConn1.SendRESTSubsDelReq(t, &restSubId)
5467 sendAndReceiveMultipleE2DelReqs(t, e2SubsIds, e2termConn1)
5469 xappConn1.TestMsgChanEmpty(t)
5470 e2termConn1.TestMsgChanEmpty(t)
5471 mainCtrl.wait_registry_empty(t, 10)
5473 mainCtrl.VerifyCounterValues(t)
5474 mainCtrl.VerifyAllClean(t)
5477 func TestRESTTwoReportSubReqAndSubDelOk(t *testing.T) {
5481 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
5482 Counter{cRestSubReqFromXapp, 1},
5483 Counter{cRestSubRespToXapp, 1},
5484 Counter{cSubReqToE2, uint64(subReqCount)},
5485 Counter{cSubRespFromE2, uint64(subReqCount)},
5486 Counter{cRestSubNotifToXapp, uint64(subReqCount)},
5487 Counter{cRestSubDelReqFromXapp, 1},
5488 Counter{cSubDelReqToE2, uint64(subReqCount)},
5489 Counter{cSubDelRespFromE2, uint64(subReqCount)},
5490 Counter{cRestSubDelRespToXapp, 1},
5494 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
5495 restSubId := xappConn1.SendRESTSubsReq(t, params)
5496 e2SubsIds := sendAndReceiveMultipleE2SubReqs(t, subReqCount, xappConn1, e2termConn1, restSubId)
5498 assert.Equal(t, len(e2SubsIds), subReqCount)
5501 xappConn1.SendRESTSubsDelReq(t, &restSubId)
5502 sendAndReceiveMultipleE2DelReqs(t, e2SubsIds, e2termConn1)
5504 xappConn1.TestMsgChanEmpty(t)
5505 e2termConn1.TestMsgChanEmpty(t)
5506 mainCtrl.wait_registry_empty(t, 10)
5508 mainCtrl.VerifyCounterValues(t)
5509 mainCtrl.VerifyAllClean(t)
5512 func TestRESTTwoReportSubReqAndSubDelOkNoActParams(t *testing.T) {
5516 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
5517 Counter{cRestSubReqFromXapp, 1},
5518 Counter{cRestSubRespToXapp, 1},
5519 Counter{cSubReqToE2, uint64(subReqCount)},
5520 Counter{cSubRespFromE2, uint64(subReqCount)},
5521 Counter{cRestSubNotifToXapp, uint64(subReqCount)},
5522 Counter{cRestSubDelReqFromXapp, 1},
5523 Counter{cSubDelReqToE2, uint64(subReqCount)},
5524 Counter{cSubDelRespFromE2, uint64(subReqCount)},
5525 Counter{cRestSubDelRespToXapp, 1},
5529 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
5530 restSubId := xappConn1.SendRESTSubsReq(t, params)
5531 e2SubsIds := sendAndReceiveMultipleE2SubReqs(t, subReqCount, xappConn1, e2termConn1, restSubId)
5533 assert.Equal(t, len(e2SubsIds), subReqCount)
5536 xappConn1.SendRESTSubsDelReq(t, &restSubId)
5537 sendAndReceiveMultipleE2DelReqs(t, e2SubsIds, e2termConn1)
5539 xappConn1.TestMsgChanEmpty(t)
5540 e2termConn1.TestMsgChanEmpty(t)
5541 mainCtrl.wait_registry_empty(t, 10)
5543 mainCtrl.VerifyCounterValues(t)
5544 mainCtrl.VerifyAllClean(t)
5547 func TestRESTFullAmountReportSubReqAndSubDelOk(t *testing.T) {
5551 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
5552 Counter{cRestSubReqFromXapp, 1},
5553 Counter{cRestSubRespToXapp, 1},
5554 Counter{cSubReqToE2, uint64(subReqCount)},
5555 Counter{cSubRespFromE2, uint64(subReqCount)},
5556 Counter{cRestSubNotifToXapp, uint64(subReqCount)},
5557 Counter{cRestSubDelReqFromXapp, 1},
5558 Counter{cSubDelReqToE2, uint64(subReqCount)},
5559 Counter{cSubDelRespFromE2, uint64(subReqCount)},
5560 Counter{cRestSubDelRespToXapp, 1},
5564 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
5565 restSubId := xappConn1.SendRESTSubsReq(t, params)
5566 e2SubsIds := sendAndReceiveMultipleE2SubReqs(t, subReqCount, xappConn1, e2termConn1, restSubId)
5568 assert.Equal(t, len(e2SubsIds), subReqCount)
5571 xappConn1.SendRESTSubsDelReq(t, &restSubId)
5572 sendAndReceiveMultipleE2DelReqs(t, e2SubsIds, e2termConn1)
5574 xappConn1.TestMsgChanEmpty(t)
5575 e2termConn1.TestMsgChanEmpty(t)
5576 mainCtrl.wait_registry_empty(t, 10)
5578 mainCtrl.VerifyCounterValues(t)
5579 mainCtrl.VerifyAllClean(t)
5582 func TestRESTSubReqReportSameActionDiffEventTriggerDefinitionLen(t *testing.T) {
5583 CaseBegin("TestRESTSubReqReportSameActionDiffEventTriggerDefinitionLen")
5585 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
5586 Counter{cRestSubReqFromXapp, 2},
5587 Counter{cRestSubRespToXapp, 2},
5588 Counter{cSubReqToE2, 2},
5589 Counter{cSubRespFromE2, 2},
5590 Counter{cRestSubNotifToXapp, 2},
5591 Counter{cRestSubDelReqFromXapp, 2},
5592 Counter{cSubDelReqToE2, 2},
5593 Counter{cSubDelRespFromE2, 2},
5594 Counter{cRestSubDelRespToXapp, 2},
5598 var params *teststube2ap.RESTSubsReqParams = nil
5601 restSubId1, e2SubsId1 := createSubscription(t, xappConn1, e2termConn1, params)
5602 xapp.Logger.Debug("Send REST subscriber request for subscriberId : %v", restSubId1)
5604 queryXappSubscription(t, int64(e2SubsId1), "RAN_NAME_1", []string{"localhost:13560"})
5607 params = xappConn2.GetRESTSubsReqReportParams(subReqCount)
5608 params.SetMeid("RAN_NAME_1")
5609 eventTriggerDefinition := []int64{1234, 1}
5610 params.SetSubEventTriggerDefinition(eventTriggerDefinition)
5612 restSubId2 := xappConn2.SendRESTSubsReq(t, params)
5613 xapp.Logger.Debug("Send REST subscriber request for subscriberId : %v", restSubId2)
5614 crereq, cremsg := e2termConn1.RecvSubsReq(t)
5615 xappConn2.ExpectRESTNotification(t, restSubId2)
5616 e2termConn1.SendSubsResp(t, crereq, cremsg)
5617 e2SubsId2 := xappConn2.WaitRESTNotification(t, restSubId2)
5619 deleteXapp1Subscription(t, &restSubId1)
5620 deleteXapp2Subscription(t, &restSubId2)
5622 waitSubsCleanup(t, e2SubsId1, 10)
5623 waitSubsCleanup(t, e2SubsId2, 10)
5625 mainCtrl.VerifyCounterValues(t)
5626 mainCtrl.VerifyAllClean(t)
5629 func TestRESTSubReqReportSameActionDiffActionListLen(t *testing.T) {
5630 CaseBegin("TestRESTSubReqReportSameActionDiffActionListLen")
5632 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
5633 Counter{cRestSubReqFromXapp, 2},
5634 Counter{cRestSubRespToXapp, 2},
5635 Counter{cSubReqToE2, 2},
5636 Counter{cSubRespFromE2, 2},
5637 Counter{cRestSubNotifToXapp, 2},
5638 Counter{cRestSubDelReqFromXapp, 2},
5639 Counter{cSubDelReqToE2, 2},
5640 Counter{cSubDelRespFromE2, 2},
5641 Counter{cRestSubDelRespToXapp, 2},
5645 var params *teststube2ap.RESTSubsReqParams = nil
5648 restSubId1, e2SubsId1 := createSubscription(t, xappConn1, e2termConn1, params)
5649 xapp.Logger.Debug("Send REST subscriber request for subscriberId : %v", restSubId1)
5651 queryXappSubscription(t, int64(e2SubsId1), "RAN_NAME_1", []string{"localhost:13560"})
5654 params = xappConn2.GetRESTSubsReqReportParams(subReqCount)
5655 params.SetMeid("RAN_NAME_1")
5657 actionId := int64(1)
5658 actionType := "report"
5659 actionDefinition := []int64{5678, 1}
5660 subsequestActionType := "continue"
5661 timeToWait := "w10ms"
5662 params.AppendActionToActionToBeSetupList(actionId, actionType, actionDefinition, subsequestActionType, timeToWait)
5664 restSubId2 := xappConn2.SendRESTSubsReq(t, params)
5665 xapp.Logger.Debug("Send REST subscriber request for subscriberId : %v", restSubId2)
5666 crereq, cremsg := e2termConn1.RecvSubsReq(t)
5667 xappConn2.ExpectRESTNotification(t, restSubId2)
5668 e2termConn1.SendSubsResp(t, crereq, cremsg)
5669 e2SubsId2 := xappConn2.WaitRESTNotification(t, restSubId2)
5671 deleteXapp1Subscription(t, &restSubId1)
5672 deleteXapp2Subscription(t, &restSubId2)
5674 waitSubsCleanup(t, e2SubsId1, 10)
5675 waitSubsCleanup(t, e2SubsId2, 10)
5677 mainCtrl.VerifyCounterValues(t)
5678 mainCtrl.VerifyAllClean(t)
5681 func TestRESTSubReqReportSameActionDiffActionID(t *testing.T) {
5682 CaseBegin("TestRESTSubReqReportSameActionDiffActionID")
5684 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
5685 Counter{cRestSubReqFromXapp, 2},
5686 Counter{cRestSubRespToXapp, 2},
5687 Counter{cSubReqToE2, 2},
5688 Counter{cSubRespFromE2, 2},
5689 Counter{cRestSubNotifToXapp, 2},
5690 Counter{cRestSubDelReqFromXapp, 2},
5691 Counter{cSubDelReqToE2, 2},
5692 Counter{cSubDelRespFromE2, 2},
5693 Counter{cRestSubDelRespToXapp, 2},
5697 var params *teststube2ap.RESTSubsReqParams = nil
5700 restSubId1, e2SubsId1 := createSubscription(t, xappConn1, e2termConn1, params)
5701 xapp.Logger.Debug("Send REST subscriber request for subscriberId : %v", restSubId1)
5703 queryXappSubscription(t, int64(e2SubsId1), "RAN_NAME_1", []string{"localhost:13560"})
5706 params = xappConn2.GetRESTSubsReqReportParams(subReqCount)
5707 params.SetMeid("RAN_NAME_1")
5708 params.SetSubActionIDs(int64(2))
5710 restSubId2 := xappConn2.SendRESTSubsReq(t, params)
5711 xapp.Logger.Debug("Send REST subscriber request for subscriberId : %v", restSubId2)
5712 crereq, cremsg := e2termConn1.RecvSubsReq(t)
5713 xappConn2.ExpectRESTNotification(t, restSubId2)
5714 e2termConn1.SendSubsResp(t, crereq, cremsg)
5715 e2SubsId2 := xappConn2.WaitRESTNotification(t, restSubId2)
5717 deleteXapp1Subscription(t, &restSubId1)
5718 deleteXapp2Subscription(t, &restSubId2)
5720 waitSubsCleanup(t, e2SubsId1, 10)
5721 waitSubsCleanup(t, e2SubsId2, 10)
5723 mainCtrl.VerifyCounterValues(t)
5724 mainCtrl.VerifyAllClean(t)
5727 func TestRESTSubReqDiffActionType(t *testing.T) {
5728 CaseBegin("TestRESTSubReqDiffActionType")
5730 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
5731 Counter{cRestSubReqFromXapp, 2},
5732 Counter{cRestSubRespToXapp, 2},
5733 Counter{cSubReqToE2, 2},
5734 Counter{cSubRespFromE2, 2},
5735 Counter{cRestSubNotifToXapp, 2},
5736 Counter{cRestSubDelReqFromXapp, 2},
5737 Counter{cSubDelReqToE2, 2},
5738 Counter{cSubDelRespFromE2, 2},
5739 Counter{cRestSubDelRespToXapp, 2},
5742 const e2Timeout int64 = 2
5743 const e2RetryCount int64 = 2
5744 const routingNeeded bool = true
5747 params := xappConn1.GetRESTSubsReqPolicyParams(subReqCount)
5748 params.SetSubscriptionDirectives(e2Timeout, e2RetryCount, routingNeeded)
5751 restSubId1, e2SubsId1 := createSubscription(t, xappConn1, e2termConn1, params)
5752 xapp.Logger.Debug("Send REST subscriber request for subscriberId : %v", restSubId1)
5754 queryXappSubscription(t, int64(e2SubsId1), "RAN_NAME_1", []string{"localhost:13560"})
5757 params = xappConn2.GetRESTSubsReqReportParams(subReqCount)
5758 params.SetSubscriptionDirectives(e2Timeout, e2RetryCount, routingNeeded)
5759 params.SetMeid("RAN_NAME_1")
5761 restSubId2 := xappConn2.SendRESTSubsReq(t, params)
5762 xapp.Logger.Debug("Send REST subscriber request for subscriberId : %v", restSubId2)
5763 crereq, cremsg := e2termConn1.RecvSubsReq(t)
5764 xappConn2.ExpectRESTNotification(t, restSubId2)
5765 e2termConn1.SendSubsResp(t, crereq, cremsg)
5766 e2SubsId2 := xappConn2.WaitRESTNotification(t, restSubId2)
5768 deleteXapp1Subscription(t, &restSubId1)
5769 deleteXapp2Subscription(t, &restSubId2)
5771 waitSubsCleanup(t, e2SubsId1, 10)
5772 waitSubsCleanup(t, e2SubsId2, 10)
5774 mainCtrl.VerifyCounterValues(t)
5775 mainCtrl.VerifyAllClean(t)
5778 func TestRESTSubReqPolicyAndSubDelOkSameAction(t *testing.T) {
5779 CaseBegin("TestRESTSubReqPolicyAndSubDelOkSameAction")
5781 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
5782 Counter{cRestSubReqFromXapp, 2},
5783 Counter{cRestSubRespToXapp, 2},
5784 Counter{cSubReqToE2, 2},
5785 Counter{cSubRespFromE2, 2},
5786 Counter{cRestSubNotifToXapp, 2},
5787 Counter{cRestSubDelReqFromXapp, 2},
5788 Counter{cSubDelReqToE2, 2},
5789 Counter{cSubDelRespFromE2, 2},
5790 Counter{cRestSubDelRespToXapp, 2},
5793 const e2Timeout int64 = 2
5794 const e2RetryCount int64 = 2
5795 const routingNeeded bool = true
5798 params := xappConn1.GetRESTSubsReqPolicyParams(subReqCount)
5799 params.SetSubscriptionDirectives(e2Timeout, e2RetryCount, routingNeeded)
5802 restSubId1, e2SubsId1 := createSubscription(t, xappConn1, e2termConn1, params)
5803 xapp.Logger.Debug("Send REST subscriber request for subscriberId : %v", restSubId1)
5805 queryXappSubscription(t, int64(e2SubsId1), "RAN_NAME_1", []string{"localhost:13560"})
5808 params = xappConn2.GetRESTSubsReqPolicyParams(subReqCount)
5809 params.SetSubscriptionDirectives(e2Timeout, e2RetryCount, routingNeeded)
5810 params.SetMeid("RAN_NAME_1")
5812 restSubId2 := xappConn2.SendRESTSubsReq(t, params)
5813 xapp.Logger.Debug("Send REST subscriber request for subscriberId : %v", restSubId2)
5814 crereq, cremsg := e2termConn1.RecvSubsReq(t)
5815 xappConn2.ExpectRESTNotification(t, restSubId2)
5816 e2termConn1.SendSubsResp(t, crereq, cremsg)
5817 e2SubsId2 := xappConn2.WaitRESTNotification(t, restSubId2)
5819 deleteXapp1Subscription(t, &restSubId1)
5820 deleteXapp2Subscription(t, &restSubId2)
5822 waitSubsCleanup(t, e2SubsId1, 10)
5823 waitSubsCleanup(t, e2SubsId2, 10)
5825 mainCtrl.VerifyCounterValues(t)
5826 mainCtrl.VerifyAllClean(t)
5829 func TestRESTSubReqReportSameActionDiffActionDefinitionLen(t *testing.T) {
5830 CaseBegin("TestRESTSubReqReportSameActionDiffActionDefinitionLen")
5832 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
5833 Counter{cRestSubReqFromXapp, 2},
5834 Counter{cRestSubRespToXapp, 2},
5835 Counter{cSubReqToE2, 2},
5836 Counter{cSubRespFromE2, 2},
5837 Counter{cRestSubNotifToXapp, 2},
5838 Counter{cRestSubDelReqFromXapp, 2},
5839 Counter{cSubDelReqToE2, 2},
5840 Counter{cSubDelRespFromE2, 2},
5841 Counter{cRestSubDelRespToXapp, 2},
5845 var params *teststube2ap.RESTSubsReqParams = nil
5848 restSubId1, e2SubsId1 := createSubscription(t, xappConn1, e2termConn1, params)
5849 xapp.Logger.Debug("Send REST subscriber request for subscriberId : %v", restSubId1)
5851 queryXappSubscription(t, int64(e2SubsId1), "RAN_NAME_1", []string{"localhost:13560"})
5854 params = xappConn2.GetRESTSubsReqReportParams(subReqCount)
5855 params.SetMeid("RAN_NAME_1")
5856 actionDefinition := []int64{5678, 1}
5857 params.SetSubActionDefinition(actionDefinition)
5859 restSubId2 := xappConn2.SendRESTSubsReq(t, params)
5860 xapp.Logger.Debug("Send REST subscriber request for subscriberId : %v", restSubId2)
5861 crereq, cremsg := e2termConn1.RecvSubsReq(t)
5862 xappConn2.ExpectRESTNotification(t, restSubId2)
5863 e2termConn1.SendSubsResp(t, crereq, cremsg)
5864 e2SubsId2 := xappConn2.WaitRESTNotification(t, restSubId2)
5866 deleteXapp1Subscription(t, &restSubId1)
5867 deleteXapp2Subscription(t, &restSubId2)
5869 waitSubsCleanup(t, e2SubsId1, 10)
5870 waitSubsCleanup(t, e2SubsId2, 10)
5872 mainCtrl.VerifyCounterValues(t)
5873 mainCtrl.VerifyAllClean(t)
5876 func TestRESTSubReqReportSameActionDiffActionDefinitionContents(t *testing.T) {
5877 CaseBegin("TestRESTSubReqReportSameActionDiffActionDefinitionContents")
5879 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
5880 Counter{cRestSubReqFromXapp, 2},
5881 Counter{cRestSubRespToXapp, 2},
5882 Counter{cSubReqToE2, 2},
5883 Counter{cSubRespFromE2, 2},
5884 Counter{cRestSubNotifToXapp, 2},
5885 Counter{cRestSubDelReqFromXapp, 2},
5886 Counter{cSubDelReqToE2, 2},
5887 Counter{cSubDelRespFromE2, 2},
5888 Counter{cRestSubDelRespToXapp, 2},
5892 var params *teststube2ap.RESTSubsReqParams = nil
5895 restSubId1, e2SubsId1 := createSubscription(t, xappConn1, e2termConn1, params)
5896 xapp.Logger.Debug("Send REST subscriber request for subscriberId : %v", restSubId1)
5898 queryXappSubscription(t, int64(e2SubsId1), "RAN_NAME_1", []string{"localhost:13560"})
5901 params = xappConn2.GetRESTSubsReqReportParams(subReqCount)
5902 params.SetMeid("RAN_NAME_1")
5903 actionDefinition := []int64{56782}
5904 params.SetSubActionDefinition(actionDefinition)
5906 restSubId2 := xappConn2.SendRESTSubsReq(t, params)
5907 xapp.Logger.Debug("Send REST subscriber request for subscriberId : %v", restSubId2)
5908 crereq, cremsg := e2termConn1.RecvSubsReq(t)
5909 xappConn2.ExpectRESTNotification(t, restSubId2)
5910 e2termConn1.SendSubsResp(t, crereq, cremsg)
5911 e2SubsId2 := xappConn2.WaitRESTNotification(t, restSubId2)
5913 deleteXapp1Subscription(t, &restSubId1)
5914 deleteXapp2Subscription(t, &restSubId2)
5916 waitSubsCleanup(t, e2SubsId1, 10)
5917 waitSubsCleanup(t, e2SubsId2, 10)
5919 mainCtrl.VerifyCounterValues(t)
5920 mainCtrl.VerifyAllClean(t)
5923 func TestRESTSubReqReportSameActionDiffSubsAction(t *testing.T) {
5924 CaseBegin("TestRESTSubReqReportSameActionDiffSubsAction")
5926 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
5927 Counter{cRestSubReqFromXapp, 2},
5928 Counter{cRestSubRespToXapp, 2},
5929 Counter{cSubReqToE2, 2},
5930 Counter{cSubRespFromE2, 2},
5931 Counter{cRestSubNotifToXapp, 2},
5932 Counter{cRestSubDelReqFromXapp, 2},
5933 Counter{cSubDelReqToE2, 2},
5934 Counter{cSubDelRespFromE2, 2},
5935 Counter{cRestSubDelRespToXapp, 2},
5939 var params *teststube2ap.RESTSubsReqParams = nil
5942 restSubId1, e2SubsId1 := createSubscription(t, xappConn1, e2termConn1, params)
5943 xapp.Logger.Debug("Send REST subscriber request for subscriberId : %v", restSubId1)
5945 queryXappSubscription(t, int64(e2SubsId1), "RAN_NAME_1", []string{"localhost:13560"})
5948 params = xappConn2.GetRESTSubsReqReportParams(subReqCount)
5949 params.SetMeid("RAN_NAME_1")
5950 params.SetTimeToWait("w200ms")
5951 restSubId2 := xappConn2.SendRESTSubsReq(t, params)
5952 xapp.Logger.Debug("Send REST subscriber request for subscriberId : %v", restSubId2)
5953 crereq, cremsg := e2termConn1.RecvSubsReq(t)
5954 xappConn2.ExpectRESTNotification(t, restSubId2)
5955 e2termConn1.SendSubsResp(t, crereq, cremsg)
5956 e2SubsId2 := xappConn2.WaitRESTNotification(t, restSubId2)
5958 deleteXapp1Subscription(t, &restSubId1)
5959 deleteXapp2Subscription(t, &restSubId2)
5961 waitSubsCleanup(t, e2SubsId1, 10)
5962 waitSubsCleanup(t, e2SubsId2, 10)
5964 mainCtrl.VerifyCounterValues(t)
5965 mainCtrl.VerifyAllClean(t)
5968 //-----------------------------------------------------------------------------
5969 // TestRESTUnpackSubscriptionResponseDecodeFail
5972 // +-------+ +---------+ +---------+
5973 // | xapp | | submgr | | e2term |
5974 // +-------+ +---------+ +---------+
5977 // |---------------->| |
5979 // | RESTSubResp | |
5980 // |<----------------| |
5983 // | |------------->|
5985 // | | SubResp | ASN.1 decode fails
5986 // | |<-------------|
5989 // | |------------->|
5991 // | | SubFail | Duplicated action
5992 // | |<-------------|
5993 // | RESTNotif (fail)| |
5994 // |<----------------| |
5997 //-----------------------------------------------------------------------------
5999 func TestRESTUnpackSubscriptionResponseDecodeFail(t *testing.T) {
6000 xapp.Logger.Debug("TEST: TestRESTUnpackSubscriptionResponseDecodeFail")
6001 const subReqCount int = 1
6004 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
6005 restSubId := xappConn1.SendRESTSubsReq(t, params)
6007 crereq, cremsg := e2termConn1.RecvSubsReq(t)
6008 // Decode of this response fails which will result resending original request
6009 e2termConn1.SendInvalidE2Asn1Resp(t, cremsg, xapp.RIC_SUB_RESP)
6011 _, cremsg = e2termConn1.RecvSubsReq(t)
6013 xappConn1.ExpectRESTNotificationNok(t, restSubId, "allFail")
6015 // Subscription already created in E2 Node.
6016 fparams := &teststube2ap.E2StubSubsFailParams{}
6018 fparams.SetCauseVal(0, 1, 3) // CauseRIC / duplicate-action
6019 e2termConn1.SendSubsFail(t, fparams, cremsg)
6021 instanceId := xappConn1.WaitRESTNotification(t, restSubId)
6022 xapp.Logger.Debug("TEST: REST notification received e2SubsId=%v", instanceId)
6024 xappConn1.SendRESTSubsDelReq(t, &restSubId)
6026 // Wait that subs is cleaned
6027 mainCtrl.wait_subs_clean(t, crereq.RequestId.InstanceId, 10)
6029 xappConn1.TestMsgChanEmpty(t)
6030 e2termConn1.TestMsgChanEmpty(t)
6031 mainCtrl.wait_registry_empty(t, 10)
6032 mainCtrl.VerifyAllClean(t)
6035 //-----------------------------------------------------------------------------
6036 // TestRESTUnpackSubscriptionResponseUnknownInstanceId
6039 // +-------+ +---------+ +---------+
6040 // | xapp | | submgr | | e2term |
6041 // +-------+ +---------+ +---------+
6044 // |---------------->| |
6046 // | RESTSubResp | |
6047 // |<----------------| |
6050 // | |------------->|
6052 // | | SubResp | Unknown instanceId
6053 // | |<-------------|
6056 // | |------------->|
6058 // | | SubFail | Duplicated action
6059 // | |<-------------|
6060 // | RESTNotif (fail)| |
6061 // |<----------------| |
6063 // | |------------->|
6066 // | |<-------------|
6068 //-----------------------------------------------------------------------------
6070 func TestRESTUnpackSubscriptionResponseUnknownInstanceId(t *testing.T) {
6071 xapp.Logger.Debug("TEST: TestRESTUnpackSubscriptionResponseUnknownInstanceId")
6072 const subReqCount int = 1
6075 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
6076 restSubId := xappConn1.SendRESTSubsReq(t, params)
6078 crereq, cremsg := e2termConn1.RecvSubsReq(t)
6080 // Unknown instanceId in this response which will result resending original request
6081 orgInstanceId := crereq.RequestId.InstanceId
6082 crereq.RequestId.InstanceId = 0
6083 e2termConn1.SendSubsResp(t, crereq, cremsg)
6085 _, cremsg = e2termConn1.RecvSubsReq(t)
6087 xappConn1.ExpectRESTNotificationNok(t, restSubId, "allFail")
6089 // Subscription already created in E2 Node.
6090 fparams := &teststube2ap.E2StubSubsFailParams{}
6092 fparams.SetCauseVal(0, 1, 3) // CauseRIC / duplicate-action
6093 e2termConn1.SendSubsFail(t, fparams, cremsg)
6095 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
6096 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
6098 instanceId := xappConn1.WaitRESTNotification(t, restSubId)
6099 xapp.Logger.Debug("TEST: REST notification received e2SubsId=%v", instanceId)
6101 xappConn1.SendRESTSubsDelReq(t, &restSubId)
6103 // Wait that subs is cleaned
6104 mainCtrl.wait_subs_clean(t, orgInstanceId, 10)
6106 xappConn1.TestMsgChanEmpty(t)
6107 e2termConn1.TestMsgChanEmpty(t)
6108 mainCtrl.wait_registry_empty(t, 10)
6109 mainCtrl.VerifyAllClean(t)
6112 //-----------------------------------------------------------------------------
6113 // TestRESTUnpackSubscriptionResponseNoTransaction
6116 // +-------+ +---------+ +---------+
6117 // | xapp | | submgr | | e2term |
6118 // +-------+ +---------+ +---------+
6121 // |---------------->| |
6123 // | RESTSubResp | |
6124 // |<----------------| |
6127 // | |------------->|
6129 // | | SubResp | No transaction for the response
6130 // | |<-------------|
6133 // | |------------->|
6135 // | | SubFail | Duplicated action
6136 // | |<-------------|
6137 // | RESTNotif (fail)| |
6138 // |<----------------| |
6140 // | |------------->|
6143 // | |<-------------|
6146 // | |------------->|
6149 // | |<-------------|
6151 //-----------------------------------------------------------------------------
6152 func TestRESTUnpackSubscriptionResponseNoTransaction(t *testing.T) {
6153 xapp.Logger.Debug("TEST: TestRESTUnpackSubscriptionResponseNoTransaction")
6154 const subReqCount int = 1
6157 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
6158 restSubId := xappConn1.SendRESTSubsReq(t, params)
6160 crereq, cremsg := e2termConn1.RecvSubsReq(t)
6162 mainCtrl.MakeTransactionNil(t, crereq.RequestId.InstanceId)
6163 // No transaction exist for this response which will result resending original request
6164 e2termConn1.SendSubsResp(t, crereq, cremsg)
6166 _, cremsg = e2termConn1.RecvSubsReq(t)
6168 xappConn1.ExpectRESTNotificationNok(t, restSubId, "allFail")
6170 // Subscription already created in E2 Node.
6171 fparams := &teststube2ap.E2StubSubsFailParams{}
6173 fparams.SetCauseVal(0, 1, 3) // CauseRIC / duplicate-action
6174 e2termConn1.SendSubsFail(t, fparams, cremsg)
6176 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
6177 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
6179 // Resending happens because there no transaction
6180 delreq, delmsg = e2termConn1.RecvSubsDelReq(t)
6181 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
6183 instanceId := xappConn1.WaitRESTNotification(t, restSubId)
6184 xapp.Logger.Debug("TEST: REST notification received e2SubsId=%v", instanceId)
6186 xappConn1.SendRESTSubsDelReq(t, &restSubId)
6188 // Wait that subs is cleaned
6189 mainCtrl.wait_subs_clean(t, crereq.RequestId.InstanceId, 10)
6191 xappConn1.TestMsgChanEmpty(t)
6192 e2termConn1.TestMsgChanEmpty(t)
6193 mainCtrl.wait_registry_empty(t, 10)
6194 mainCtrl.VerifyAllClean(t)
6197 //-----------------------------------------------------------------------------
6198 // TestRESTUnpackSubscriptionFailureDecodeFail
6201 // +-------+ +---------+ +---------+
6202 // | xapp | | submgr | | e2term |
6203 // +-------+ +---------+ +---------+
6206 // |---------------->| |
6208 // | RESTSubResp | |
6209 // |<----------------| |
6212 // | |------------->|
6214 // | | SubFail | ASN.1 decode fails
6215 // | |<-------------|
6218 // | |------------->|
6220 // | | SubFail | Duplicated action
6221 // | |<-------------|
6222 // | RESTNotif (fail)| |
6223 // |<----------------| |
6226 //-----------------------------------------------------------------------------
6227 func TestRESTUnpackSubscriptionFailureDecodeFail(t *testing.T) {
6228 xapp.Logger.Debug("TEST: TestRESTUnpackSubscriptionFailureDecodeFail")
6229 const subReqCount int = 1
6232 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
6233 restSubId := xappConn1.SendRESTSubsReq(t, params)
6235 crereq, cremsg := e2termConn1.RecvSubsReq(t)
6237 // Decode of this response fails which will result resending original request
6238 e2termConn1.SendInvalidE2Asn1Resp(t, cremsg, xapp.RIC_SUB_FAILURE)
6240 _, cremsg = e2termConn1.RecvSubsReq(t)
6242 xappConn1.ExpectRESTNotificationNok(t, restSubId, "allFail")
6244 // Subscription already created in E2 Node.
6245 fparams := &teststube2ap.E2StubSubsFailParams{}
6247 fparams.SetCauseVal(0, 1, 3) // CauseRIC / duplicate-action
6248 e2termConn1.SendSubsFail(t, fparams, cremsg)
6250 instanceId := xappConn1.WaitRESTNotification(t, restSubId)
6251 xapp.Logger.Debug("TEST: REST notification received e2SubsId=%v", instanceId)
6253 xappConn1.SendRESTSubsDelReq(t, &restSubId)
6255 // Wait that subs is cleaned
6256 mainCtrl.wait_subs_clean(t, crereq.RequestId.InstanceId, 10)
6258 xappConn1.TestMsgChanEmpty(t)
6259 e2termConn1.TestMsgChanEmpty(t)
6260 mainCtrl.wait_registry_empty(t, 10)
6261 mainCtrl.VerifyAllClean(t)
6264 //-----------------------------------------------------------------------------
6265 // TestRESTUnpackSubscriptionResponseUnknownInstanceId
6268 // +-------+ +---------+ +---------+
6269 // | xapp | | submgr | | e2term |
6270 // +-------+ +---------+ +---------+
6273 // |---------------->| |
6275 // | RESTSubResp | |
6276 // |<----------------| |
6279 // | |------------->|
6281 // | | SubFail | Unknown instanceId
6282 // | |<-------------|
6285 // | |------------->|
6287 // | | SubFail | Duplicated action
6288 // | |<-------------|
6289 // | RESTNotif (fail)| |
6290 // |<----------------| |
6292 // | |------------->|
6295 // | |<-------------|
6297 //-----------------------------------------------------------------------------
6298 func TestRESTUnpackSubscriptionFailureUnknownInstanceId(t *testing.T) {
6299 xapp.Logger.Debug("TEST: TestRESTUnpackSubscriptionFailureUnknownInstanceId")
6300 const subReqCount int = 1
6303 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
6304 restSubId := xappConn1.SendRESTSubsReq(t, params)
6306 crereq, cremsg := e2termConn1.RecvSubsReq(t)
6308 // Unknown instanceId in this response which will result resending original request
6309 fparams := &teststube2ap.E2StubSubsFailParams{}
6311 fparams.Fail.RequestId.InstanceId = 0
6312 e2termConn1.SendSubsFail(t, fparams, cremsg)
6314 _, cremsg = e2termConn1.RecvSubsReq(t)
6316 xappConn1.ExpectRESTNotificationNok(t, restSubId, "allFail")
6318 // Subscription already created in E2 Node.
6319 fparams.SetCauseVal(0, 1, 3) // CauseRIC / duplicate-action
6320 e2termConn1.SendSubsFail(t, fparams, cremsg)
6322 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
6323 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
6325 instanceId := xappConn1.WaitRESTNotification(t, restSubId)
6326 xapp.Logger.Debug("TEST: REST notification received e2SubsId=%v", instanceId)
6328 xappConn1.SendRESTSubsDelReq(t, &restSubId)
6330 // Wait that subs is cleaned
6331 mainCtrl.wait_subs_clean(t, crereq.RequestId.InstanceId, 10)
6333 xappConn1.TestMsgChanEmpty(t)
6334 e2termConn1.TestMsgChanEmpty(t)
6335 mainCtrl.wait_registry_empty(t, 10)
6336 mainCtrl.VerifyAllClean(t)
6339 //-----------------------------------------------------------------------------
6340 // TestRESTUnpackSubscriptionFailureNoTransaction
6343 // +-------+ +---------+ +---------+
6344 // | xapp | | submgr | | e2term |
6345 // +-------+ +---------+ +---------+
6348 // |---------------->| |
6350 // | RESTSubResp | |
6351 // |<----------------| |
6354 // | |------------->|
6356 // | | SubFail | No transaction for the response
6357 // | |<-------------|
6360 // | |------------->|
6362 // | | SubFail | Duplicated action
6363 // | |<-------------|
6364 // | RESTNotif (fail)| |
6365 // |<----------------| |
6367 // | |------------->|
6370 // | |<-------------|
6372 //-----------------------------------------------------------------------------
6373 func TestRESTUnpackSubscriptionFailureNoTransaction(t *testing.T) {
6374 xapp.Logger.Debug("TEST: TestRESTUnpackSubscriptionFailureNoTransaction")
6375 const subReqCount int = 1
6378 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
6379 restSubId := xappConn1.SendRESTSubsReq(t, params)
6381 crereq, cremsg := e2termConn1.RecvSubsReq(t)
6383 mainCtrl.MakeTransactionNil(t, crereq.RequestId.InstanceId)
6385 // No transaction exist for this response which will result resending original request
6386 fparams := &teststube2ap.E2StubSubsFailParams{}
6388 e2termConn1.SendSubsFail(t, fparams, cremsg)
6390 _, cremsg = e2termConn1.RecvSubsReq(t)
6392 xappConn1.ExpectRESTNotificationNok(t, restSubId, "allFail")
6394 // Subscription already created in E2 Node.
6395 fparams.SetCauseVal(0, 1, 3) // CauseRIC / duplicate-action
6396 e2termConn1.SendSubsFail(t, fparams, cremsg)
6398 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
6399 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
6401 // Resending happens because there no transaction
6402 delreq, delmsg = e2termConn1.RecvSubsDelReq(t)
6403 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
6405 instanceId := xappConn1.WaitRESTNotification(t, restSubId)
6406 xapp.Logger.Debug("TEST: REST notification received e2SubsId=%v", instanceId)
6408 xappConn1.SendRESTSubsDelReq(t, &restSubId)
6410 // Wait that subs is cleaned
6411 mainCtrl.wait_subs_clean(t, crereq.RequestId.InstanceId, 10)
6413 xappConn1.TestMsgChanEmpty(t)
6414 e2termConn1.TestMsgChanEmpty(t)
6415 mainCtrl.wait_registry_empty(t, 10)
6416 mainCtrl.VerifyAllClean(t)
6419 //-----------------------------------------------------------------------------
6420 // TestRESTUnpackSubscriptionDeleteResponseDecodeFail
6423 // +-------+ +---------+ +---------+
6424 // | xapp | | submgr | | e2term |
6425 // +-------+ +---------+ +---------+
6427 // | [SUBS CREATE] |
6430 // | RESTSubDelReq | |
6431 // |---------------->| |
6433 // | RESTSubDelResp | |
6434 // |<----------------| |
6437 // | |------------->|
6439 // | | SubDelResp | ASN.1 decode fails
6440 // | |<-------------|
6443 // | |------------->|
6445 // | | SubDelFail | Subscription does exist any more
6446 // | |<-------------|
6449 //-----------------------------------------------------------------------------
6450 func TestRESTUnpackSubscriptionDeleteResponseDecodeFail(t *testing.T) {
6451 xapp.Logger.Debug("TEST: TestRESTUnpackSubscriptionDeleteResponseDecodeFail")
6454 var params *teststube2ap.RESTSubsReqParams = nil
6455 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
6458 xappConn1.SendRESTSubsDelReq(t, &restSubId)
6460 // E2t: Receive 1st SubsDelReq
6461 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
6463 // Decode of this response fails which will result resending original request
6464 e2termConn1.SendInvalidE2Asn1Resp(t, delmsg, xapp.RIC_SUB_DEL_REQ)
6466 // E2t: Receive 2nd SubsDelReq and send SubsDelResp
6467 delreq, delmsg = e2termConn1.RecvSubsDelReq(t)
6469 // Subscription does not exist in in E2 Node.
6470 e2termConn1.SendSubsDelFail(t, delreq, delmsg)
6472 // Wait that subs is cleaned
6473 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
6475 xappConn1.TestMsgChanEmpty(t)
6476 e2termConn1.TestMsgChanEmpty(t)
6477 mainCtrl.wait_registry_empty(t, 10)
6478 mainCtrl.VerifyAllClean(t)
6481 //-----------------------------------------------------------------------------
6482 // TestRESTUnpackSubscriptionDeleteResponseUnknownInstanceId
6485 // +-------+ +---------+ +---------+
6486 // | xapp | | submgr | | e2term |
6487 // +-------+ +---------+ +---------+
6489 // | [SUBS CREATE] |
6492 // | RESTSubDelReq | |
6493 // |---------------->| |
6495 // | RESTSubDelResp | |
6496 // |<----------------| |
6499 // | |------------->|
6501 // | | SubDelResp | Unknown instanceId
6502 // | |<-------------|
6505 // | |------------->|
6507 // | | SubDelFail | Subscription does exist any more
6508 // | |<-------------|
6510 //-----------------------------------------------------------------------------
6511 func TestRESTUnpackSubscriptionDeleteResponseUnknownInstanceId(t *testing.T) {
6512 xapp.Logger.Debug("TEST: TestRESTUnpackSubscriptionDeleteResponseUnknownInstanceId")
6515 var params *teststube2ap.RESTSubsReqParams = nil
6516 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
6519 xappConn1.SendRESTSubsDelReq(t, &restSubId)
6521 // E2t: Receive 1st SubsDelReq
6522 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
6524 // Unknown instanceId in this response which will result resending original request
6525 delreq.RequestId.InstanceId = 0
6526 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
6528 // E2t: Receive 2nd SubsDelReq
6529 delreq, delmsg = e2termConn1.RecvSubsDelReq(t)
6531 // Subscription does not exist in in E2 Node.
6532 e2termConn1.SendSubsDelFail(t, delreq, delmsg)
6534 // Wait that subs is cleaned
6535 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
6537 xappConn1.TestMsgChanEmpty(t)
6538 e2termConn1.TestMsgChanEmpty(t)
6539 mainCtrl.wait_registry_empty(t, 10)
6540 mainCtrl.VerifyAllClean(t)
6543 //-----------------------------------------------------------------------------
6544 // TestRESTUnpackSubscriptionDeleteResponseNoTransaction
6547 // +-------+ +---------+ +---------+
6548 // | xapp | | submgr | | e2term |
6549 // +-------+ +---------+ +---------+
6551 // | [SUBS CREATE] |
6554 // | RESTSubDelReq | |
6555 // |---------------->| |
6557 // | RESTSubDelResp | |
6558 // |<----------------| |
6561 // | |------------->|
6563 // | | SubDelResp | No transaction for the response
6564 // | |<-------------|
6567 // | |------------->|
6569 // | | SubDelFail | Subscription does exist any more
6570 // | |<-------------|
6572 //-----------------------------------------------------------------------------
6573 func TestRESTUnpackSubscriptionDeleteResponseNoTransaction(t *testing.T) {
6574 xapp.Logger.Debug("TEST: TestRESTUnpackSubscriptionDeleteResponseNoTransaction")
6577 var params *teststube2ap.RESTSubsReqParams = nil
6578 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
6581 xappConn1.SendRESTSubsDelReq(t, &restSubId)
6583 // E2t: Receive 1st SubsDelReq
6584 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
6586 mainCtrl.MakeTransactionNil(t, e2SubsId)
6588 // No transaction exist for this response which will result resending original request
6589 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
6591 // E2t: Receive 2nd SubsDelReq
6592 delreq, delmsg = e2termConn1.RecvSubsDelReq(t)
6594 // Subscription does not exist in in E2 Node.
6595 e2termConn1.SendSubsDelFail(t, delreq, delmsg)
6597 // Wait that subs is cleaned
6598 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
6600 xappConn1.TestMsgChanEmpty(t)
6601 e2termConn1.TestMsgChanEmpty(t)
6602 mainCtrl.wait_registry_empty(t, 10)
6603 mainCtrl.VerifyAllClean(t)
6606 //-----------------------------------------------------------------------------
6607 // TestRESTUnpackSubscriptionDeleteFailureDecodeFail
6610 // +-------+ +---------+ +---------+
6611 // | xapp | | submgr | | e2term |
6612 // +-------+ +---------+ +---------+
6614 // | [SUBS CREATE] |
6617 // | RESTSubDelReq | |
6618 // |---------------->| |
6620 // | RESTSubDelResp | |
6621 // |<----------------| |
6624 // | |------------->|
6626 // | | SubDelFail | ASN.1 decode fails
6627 // | |<-------------|
6630 // | |------------->|
6632 // | | SubDelFail | Subscription does exist any more
6633 // | |<-------------|
6635 //-----------------------------------------------------------------------------
6636 func TestRESTUnpackSubscriptionDeleteFailureDecodeFail(t *testing.T) {
6637 xapp.Logger.Debug("TEST: TestRESTUnpackSubscriptionDeleteFailureDecodeFail")
6640 var params *teststube2ap.RESTSubsReqParams = nil
6641 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
6644 xappConn1.SendRESTSubsDelReq(t, &restSubId)
6646 // E2t: Receive 1st SubsDelReq
6647 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
6649 // Decode of this response fails which will result resending original request
6650 e2termConn1.SendInvalidE2Asn1Resp(t, delmsg, xapp.RIC_SUB_DEL_FAILURE)
6652 // E2t: Receive 2nd SubsDelReq and send SubsDelResp
6653 delreq, delmsg = e2termConn1.RecvSubsDelReq(t)
6655 // Subscription does not exist in in E2 Node.
6656 e2termConn1.SendSubsDelFail(t, delreq, delmsg)
6658 // Wait that subs is cleaned
6659 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
6661 xappConn1.TestMsgChanEmpty(t)
6662 e2termConn1.TestMsgChanEmpty(t)
6663 mainCtrl.wait_registry_empty(t, 10)
6664 mainCtrl.VerifyAllClean(t)
6667 //-----------------------------------------------------------------------------
6668 // TestRESTUnpackSubscriptionDeleteailureUnknownInstanceId
6671 // +-------+ +---------+ +---------+
6672 // | xapp | | submgr | | e2term |
6673 // +-------+ +---------+ +---------+
6675 // | [SUBS CREATE] |
6678 // | RESTSubDelReq | |
6679 // |---------------->| |
6681 // | RESTSubDelResp | |
6682 // |<----------------| |
6685 // | |------------->|
6687 // | | SubDelFail | Unknown instanceId
6688 // | |<-------------|
6691 // | |------------->|
6693 // | | SubDelFail | Subscription does exist any more
6694 // | |<-------------|
6696 //-----------------------------------------------------------------------------
6697 func TestRESTUnpackSubscriptionDeleteailureUnknownInstanceId(t *testing.T) {
6698 xapp.Logger.Debug("TEST: TestRESTUnpackSubscriptionDeleteailureUnknownInstanceId")
6701 var params *teststube2ap.RESTSubsReqParams = nil
6702 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
6705 xappConn1.SendRESTSubsDelReq(t, &restSubId)
6707 // E2t: Receive 1st SubsDelReq
6708 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
6710 // Unknown instanceId in this response which will result resending original request
6711 delreq.RequestId.InstanceId = 0
6712 e2termConn1.SendSubsDelFail(t, delreq, delmsg)
6714 // E2t: Receive 2nd SubsDelReq
6715 delreq, delmsg = e2termConn1.RecvSubsDelReq(t)
6717 // Subscription does not exist in in E2 Node.
6718 e2termConn1.SendSubsDelFail(t, delreq, delmsg)
6720 // Wait that subs is cleaned
6721 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
6723 xappConn1.TestMsgChanEmpty(t)
6724 e2termConn1.TestMsgChanEmpty(t)
6725 mainCtrl.wait_registry_empty(t, 10)
6726 mainCtrl.VerifyAllClean(t)
6729 //-----------------------------------------------------------------------------
6730 // TestRESTUnpackSubscriptionDeleteFailureNoTransaction
6733 // +-------+ +---------+ +---------+
6734 // | xapp | | submgr | | e2term |
6735 // +-------+ +---------+ +---------+
6737 // | [SUBS CREATE] |
6740 // | RESTSubDelReq | |
6741 // |---------------->| |
6743 // | RESTSubDelResp | |
6744 // |<----------------| |
6747 // | |------------->|
6749 // | | SubDelFail | No transaction for the response
6750 // | |<-------------|
6753 // | |------------->|
6755 // | | SubDelFail | Subscription does exist any more
6756 // | |<-------------|
6758 //-----------------------------------------------------------------------------
6759 func TestRESTUnpackSubscriptionDeleteFailureNoTransaction(t *testing.T) {
6760 xapp.Logger.Debug("TEST: TestRESTUnpackSubscriptionDeleteFailureNoTransaction")
6763 var params *teststube2ap.RESTSubsReqParams = nil
6764 restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params)
6767 xappConn1.SendRESTSubsDelReq(t, &restSubId)
6769 // E2t: Receive 1st SubsDelReq
6770 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
6772 mainCtrl.MakeTransactionNil(t, e2SubsId)
6774 // No transaction exist for this response which will result resending original request
6775 e2termConn1.SendSubsDelFail(t, delreq, delmsg)
6777 // E2t: Receive 2nd SubsDelReq
6778 delreq, delmsg = e2termConn1.RecvSubsDelReq(t)
6780 // Subscription does not exist in in E2 Node.
6781 e2termConn1.SendSubsDelFail(t, delreq, delmsg)
6783 // Wait that subs is cleaned
6784 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
6786 xappConn1.TestMsgChanEmpty(t)
6787 e2termConn1.TestMsgChanEmpty(t)
6788 mainCtrl.wait_registry_empty(t, 10)
6789 mainCtrl.VerifyAllClean(t)
6792 //-----------------------------------------------------------------------------
6793 // TestRESTSubReqFailAsn1PackSubReqError
6796 // +-------+ +---------+ +---------+
6797 // | xapp | | submgr | | e2term |
6798 // +-------+ +---------+ +---------+
6801 // |---------------->| |
6803 // | RESTSubResp | |
6804 // |<----------------| |
6806 // | ASN.1 encode fails |
6809 // | |------------->|
6812 // | |<-------------|
6816 // |<----------------| |
6818 // | [SUBS DELETE] |
6821 //-----------------------------------------------------------------------------
6822 func TestRESTSubReqFailAsn1PackSubReqError(t *testing.T) {
6824 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
6825 Counter{cRestSubReqFromXapp, 1},
6826 Counter{cRestSubRespToXapp, 1},
6827 Counter{cRestSubFailNotifToXapp, 1},
6828 Counter{cRestSubDelReqFromXapp, 1},
6829 Counter{cRestSubDelRespToXapp, 1},
6832 const subReqCount int = 1
6834 var params *teststube2ap.RESTSubsReqParams = nil
6835 params = xappConn1.GetRESTSubsReqReportParams(subReqCount)
6836 e2ap_wrapper.AllowE2apToProcess(e2ap_wrapper.SUB_REQ, false)
6839 restSubId := xappConn1.SendRESTSubsReq(t, params)
6840 xapp.Logger.Debug("Send REST subscriber request for subscriberId : %v", restSubId)
6842 // E2t: Receive SubsDelReq
6843 xappConn1.ExpectRESTNotificationNok(t, restSubId, "allFail")
6845 e2SubsId := xappConn1.WaitRESTNotification(t, restSubId)
6846 xapp.Logger.Debug("TEST: REST notification received e2SubsId=%v", e2SubsId)
6848 e2ap_wrapper.AllowE2apToProcess(e2ap_wrapper.SUB_REQ, true)
6850 xappConn1.SendRESTSubsDelReq(t, &restSubId)
6852 // Wait that subs is cleaned
6853 waitSubsCleanup(t, e2SubsId, 10)
6854 mainCtrl.VerifyCounterValues(t)
6855 mainCtrl.VerifyAllClean(t)
6858 func TestRESTSubReqPolicyUpdateTimeoutAndSubDelOkSameAction(t *testing.T) {
6859 CaseBegin("TestRESTSubReqPolicyUpdateTimeoutAndSubDelOkSameAction")
6861 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
6862 Counter{cRestSubReqFromXapp, 2},
6863 Counter{cRestSubRespToXapp, 2},
6864 Counter{cSubReqToE2, 2},
6865 Counter{cSubReqTimerExpiry, 1},
6866 Counter{cSubRespFromE2, 1},
6867 Counter{cRestSubNotifToXapp, 1},
6868 Counter{cRestSubFailNotifToXapp, 1},
6869 Counter{cRestSubDelReqFromXapp, 1},
6870 Counter{cSubDelReqToE2, 1},
6871 Counter{cSubDelRespFromE2, 1},
6872 Counter{cRestSubDelRespToXapp, 1},
6875 const e2Timeout int64 = 1
6876 const e2RetryCount int64 = 0
6877 const routingNeeded bool = false
6880 params := xappConn1.GetRESTSubsReqPolicyParams(subReqCount)
6881 params.SetSubscriptionDirectives(e2Timeout, e2RetryCount, routingNeeded)
6884 restSubId := xappConn1.SendRESTSubsReq(t, params)
6885 xapp.Logger.Debug("Send REST subscribe request for subscriberId : %v", restSubId)
6887 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
6888 xappConn1.ExpectRESTNotification(t, restSubId)
6889 e2termConn1.SendSubsResp(t, crereq1, cremsg1)
6890 e2SubsId := xappConn1.WaitRESTNotification(t, restSubId)
6891 xapp.Logger.Debug("REST notification received e2SubsId=%v", e2SubsId)
6894 params = xappConn1.GetRESTSubsReqPolicyParams(subReqCount)
6895 params.SetSubscriptionDirectives(e2Timeout, e2RetryCount, routingNeeded)
6896 params.SetSubscriptionID(&restSubId)
6897 params.SetTimeToWait("w200ms")
6898 restSubId = xappConn1.SendRESTSubsReq(t, params)
6899 xapp.Logger.Debug("Send REST subscribe request for subscriberId : %v", restSubId)
6901 crereq1, cremsg1 = e2termConn1.RecvSubsReq(t)
6902 xappConn1.ExpectRESTNotification(t, restSubId)
6903 // SubsResp is missing, e2SubsId will be 0
6904 zeroE2SubsId := xappConn1.WaitRESTNotification(t, restSubId)
6905 xapp.Logger.Debug("TEST: REST notification received e2SubsId=%v", zeroE2SubsId)
6908 xappConn1.SendRESTSubsDelReq(t, &restSubId)
6909 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
6910 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
6912 waitSubsCleanup(t, e2SubsId, 10)
6914 mainCtrl.VerifyCounterValues(t)
6915 mainCtrl.VerifyAllClean(t)
6918 //-----------------------------------------------------------------------------
6919 // TestPolicyUpdateRESTSubReqAndSubDelOkWithRestartInMiddle
6922 // +-------+ +---------+ +---------+
6923 // | xapp | | submgr | | e2term |
6924 // +-------+ +---------+ +---------+
6927 // |---------------->| |
6929 // | RESTSubResp | |
6930 // |<----------------| |
6932 // | |------------->|
6935 // | |<-------------|
6938 // |<----------------| |
6941 // |---------------->| |
6943 // | RESTSubResp | |
6944 // |<----------------| |
6946 // | |------------->|
6948 // | Submgr restart |
6950 // | RESTSubDelReq | |
6951 // |---------------->| |
6954 // | |------------->|
6957 // | |<-------------|
6959 // | RESTSubDelResp | |
6960 // |<----------------| |
6962 //-----------------------------------------------------------------------------
6964 func TestPolicyUpdateRESTSubReqAndSubDelOkWithRestartInMiddle(t *testing.T) {
6965 CaseBegin("TestPolicyUpdateRESTSubReqAndSubDelOkWithRestartInMiddle")
6967 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
6968 Counter{cRestSubReqFromXapp, 2},
6969 Counter{cRestSubRespToXapp, 2},
6970 Counter{cSubReqToE2, 2},
6971 Counter{cSubRespFromE2, 1},
6972 Counter{cRestSubNotifToXapp, 1},
6973 Counter{cRestSubFailNotifToXapp, 1},
6974 Counter{cRestSubDelReqFromXapp, 1},
6975 Counter{cSubDelReqToE2, 1},
6976 Counter{cSubDelRespFromE2, 1},
6977 Counter{cRestSubDelRespToXapp, 1},
6980 // Remove possible existing subscription
6981 mainCtrl.removeExistingSubscriptions(t)
6983 const e2Timeout int64 = 1
6984 const e2RetryCount int64 = 0
6985 const routingNeeded bool = false
6988 params := xappConn1.GetRESTSubsReqPolicyParams(subReqCount)
6989 params.SetSubscriptionDirectives(e2Timeout, e2RetryCount, routingNeeded)
6990 // Create subscription
6991 restSubId := xappConn1.SendRESTSubsReq(t, params)
6992 xapp.Logger.Debug("Send REST subscribe request for subscriberId : %v", restSubId)
6994 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
6995 xappConn1.ExpectRESTNotification(t, restSubId)
6996 e2termConn1.SendSubsResp(t, crereq1, cremsg1)
6997 e2SubsId := xappConn1.WaitRESTNotification(t, restSubId)
6998 xapp.Logger.Debug("REST notification received e2SubsId=%v", e2SubsId)
7000 // Check subscription
7001 queryXappSubscription(t, int64(e2SubsId), "RAN_NAME_1", []string{"localhost:13560"})
7004 params = xappConn1.GetRESTSubsReqPolicyParams(subReqCount)
7005 params.SetSubscriptionDirectives(e2Timeout, e2RetryCount, routingNeeded)
7006 params.SetSubscriptionID(&restSubId)
7007 params.SetTimeToWait("w200ms")
7008 mainCtrl.SetResetTestFlag(t, true) // subs.DoNotWaitSubResp will be set TRUE for the subscription
7009 restSubId = xappConn1.SendRESTSubsReq(t, params)
7010 xapp.Logger.Debug("Send REST subscribe request for subscriberId : %v", restSubId)
7012 crereq1, cremsg1 = e2termConn1.RecvSubsReq(t)
7013 mainCtrl.SetResetTestFlag(t, false)
7015 // SubsResp is missing due to submgr restart
7017 mainCtrl.SimulateRestart(t)
7018 xapp.Logger.Debug("mainCtrl.SimulateRestart done")
7020 // Check subscription
7021 queryXappSubscription(t, int64(e2SubsId), "RAN_NAME_1", []string{"localhost:13560"})
7023 // Delete subscription
7024 xappConn1.SendRESTSubsDelReq(t, &restSubId)
7025 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
7026 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
7028 //Wait that subs is cleaned
7029 waitSubsCleanup(t, e2SubsId, 10)
7031 mainCtrl.VerifyCounterValues(t)
7032 mainCtrl.VerifyAllClean(t)
7035 ////////////////////////////////////////////////////////////////////////////////////
7036 // Services for UT cases
7037 ////////////////////////////////////////////////////////////////////////////////////
7038 const subReqCount int = 1
7039 const host string = "localhost"
7041 func createSubscription(t *testing.T, fromXappConn *teststube2ap.E2Stub, toE2termConn *teststube2ap.E2Stub, params *teststube2ap.RESTSubsReqParams) (string, uint32) {
7043 params = fromXappConn.GetRESTSubsReqReportParams(subReqCount)
7045 restSubId := fromXappConn.SendRESTSubsReq(t, params)
7046 xapp.Logger.Debug("Send REST subscriber request for subscriberId : %v", restSubId)
7048 crereq1, cremsg1 := toE2termConn.RecvSubsReq(t)
7049 fromXappConn.ExpectRESTNotification(t, restSubId)
7050 toE2termConn.SendSubsResp(t, crereq1, cremsg1)
7051 e2SubsId := fromXappConn.WaitRESTNotification(t, restSubId)
7052 xapp.Logger.Debug("REST notification received e2SubsId=%v", e2SubsId)
7054 return restSubId, e2SubsId
7057 func createXapp2MergedSubscription(t *testing.T, meid string) (string, uint32) {
7059 params := xappConn2.GetRESTSubsReqReportParams(subReqCount)
7061 params.SetMeid(meid)
7063 xapp.Subscription.SetResponseCB(xappConn2.SubscriptionRespHandler)
7064 restSubId := xappConn2.SendRESTSubsReq(t, params)
7065 xappConn2.ExpectRESTNotification(t, restSubId)
7066 xapp.Logger.Debug("Send REST subscriber request for subscriberId : %v", restSubId)
7067 e2SubsId := xappConn2.WaitRESTNotification(t, restSubId)
7068 xapp.Logger.Debug("REST notification received e2SubsId=%v", e2SubsId)
7070 return restSubId, e2SubsId
7073 func createXapp1PolicySubscription(t *testing.T) (string, uint32) {
7075 params := xappConn1.GetRESTSubsReqPolicyParams(subReqCount)
7076 restSubId := xappConn1.SendRESTSubsReq(t, params)
7077 xapp.Logger.Debug("Send REST Policy subscriber request for subscriberId : %v", restSubId)
7079 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
7080 xappConn1.ExpectRESTNotification(t, restSubId)
7081 e2termConn1.SendSubsResp(t, crereq1, cremsg1)
7082 e2SubsId := xappConn1.WaitRESTNotification(t, restSubId)
7083 xapp.Logger.Debug("REST notification received e2SubsId=%v", e2SubsId)
7085 return restSubId, e2SubsId
7088 func createXapp1ReportSubscriptionE2Fail(t *testing.T) (string, uint32) {
7089 params := xappConn1.GetRESTSubsReqReportParams(subReqCount)
7090 restSubId := xappConn1.SendRESTSubsReq(t, params)
7092 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
7093 fparams1 := &teststube2ap.E2StubSubsFailParams{}
7094 fparams1.Set(crereq1)
7095 e2termConn1.SendSubsFail(t, fparams1, cremsg1)
7097 delreq1, delmsg1 := e2termConn1.RecvSubsDelReq(t)
7098 xappConn1.ExpectRESTNotification(t, restSubId)
7099 e2termConn1.SendSubsDelResp(t, delreq1, delmsg1)
7100 e2SubsId := xappConn1.WaitRESTNotification(t, restSubId)
7101 xapp.Logger.Debug("TEST: REST notification received e2SubsId=%v", e2SubsId)
7103 return restSubId, e2SubsId
7106 func deleteSubscription(t *testing.T, fromXappConn *teststube2ap.E2Stub, toE2termConn *teststube2ap.E2Stub, restSubId *string) {
7107 fromXappConn.SendRESTSubsDelReq(t, restSubId)
7108 delreq, delmsg := toE2termConn.RecvSubsDelReq(t)
7109 toE2termConn.SendSubsDelResp(t, delreq, delmsg)
7112 func deleteXapp1Subscription(t *testing.T, restSubId *string) {
7113 xappConn1.SendRESTSubsDelReq(t, restSubId)
7114 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
7115 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
7118 func deleteXapp2Subscription(t *testing.T, restSubId *string) {
7119 xappConn2.SendRESTSubsDelReq(t, restSubId)
7120 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
7121 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
7124 func queryXappSubscription(t *testing.T, e2SubsId int64, meid string, endpoint []string) {
7125 resp, _ := xapp.Subscription.QuerySubscriptions()
7126 assert.Equal(t, resp[0].SubscriptionID, e2SubsId)
7127 assert.Equal(t, resp[0].Meid, meid)
7128 assert.Equal(t, resp[0].ClientEndpoint, endpoint)
7131 func waitSubsCleanup(t *testing.T, e2SubsId uint32, timeout int) {
7132 //Wait that subs is cleaned
7133 mainCtrl.wait_subs_clean(t, e2SubsId, timeout)
7135 xappConn1.TestMsgChanEmpty(t)
7136 xappConn2.TestMsgChanEmpty(t)
7137 e2termConn1.TestMsgChanEmpty(t)
7138 mainCtrl.wait_registry_empty(t, timeout)
7141 func sendAndReceiveMultipleE2SubReqs(t *testing.T, count int, fromXappConn *teststube2ap.E2Stub, toE2termConn *teststube2ap.E2Stub, restSubId string) []uint32 {
7143 var e2SubsId []uint32
7145 for i := 0; i < count; i++ {
7146 xapp.Logger.Debug("TEST: %d ===================================== BEGIN CRE ============================================", i+1)
7147 crereq, cremsg := toE2termConn.RecvSubsReq(t)
7148 fromXappConn.ExpectRESTNotification(t, restSubId)
7149 toE2termConn.SendSubsResp(t, crereq, cremsg)
7150 instanceId := fromXappConn.WaitRESTNotification(t, restSubId)
7151 e2SubsId = append(e2SubsId, instanceId)
7152 xapp.Logger.Debug("TEST: %v", e2SubsId)
7153 xapp.Logger.Debug("TEST: %d ===================================== END CRE ============================================", i+1)
7154 <-time.After(100 * time.Millisecond)
7159 func sendAndReceiveMultipleE2DelReqs(t *testing.T, e2SubsIds []uint32, toE2termConn *teststube2ap.E2Stub) {
7161 for i := 0; i < len(e2SubsIds); i++ {
7162 xapp.Logger.Debug("TEST: %d ===================================== BEGIN DEL ============================================", i+1)
7163 delreq, delmsg := toE2termConn.RecvSubsDelReq(t)
7164 toE2termConn.SendSubsDelResp(t, delreq, delmsg)
7165 <-time.After(1 * time.Second)
7166 xapp.Logger.Debug("TEST: %d ===================================== END DEL ============================================", i+1)
7167 <-time.After(100 * time.Millisecond)
7170 // Wait that subs is cleaned
7171 for i := 0; i < len(e2SubsIds); i++ {
7172 mainCtrl.wait_subs_clean(t, e2SubsIds[i], 10)