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 ==================================================================================
26 "gerrit.o-ran-sc.org/r/ric-plt/e2ap/pkg/e2ap"
27 "gerrit.o-ran-sc.org/r/ric-plt/submgr/pkg/teststube2ap"
28 "gerrit.o-ran-sc.org/r/ric-plt/xapp-frame/pkg/xapp"
29 "github.com/stretchr/testify/assert"
32 //-----------------------------------------------------------------------------
33 // TestSubReqAndRouteNok
36 // +-------+ +---------+ +---------+
37 // | xapp | | submgr | | rtmgr |
38 // +-------+ +---------+ +---------+
50 // | [SUBS INT DELETE] |
53 //-----------------------------------------------------------------------------
55 func TestSubReqAndRouteNok(t *testing.T) {
56 CaseBegin("TestSubReqAndRouteNok")
59 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
60 Counter{cSubReqFromXapp, 1},
61 Counter{cRouteCreateFail, 1},
64 waiter := rtmgrHttp.AllocNextEvent(false)
65 newSubsId := mainCtrl.get_registry_next_subid(t)
66 xappConn1.SendSubsReq(t, nil, nil)
69 //Wait that subs is cleaned
70 mainCtrl.wait_subs_clean(t, newSubsId, 10)
72 xappConn1.TestMsgChanEmpty(t)
73 xappConn2.TestMsgChanEmpty(t)
74 e2termConn1.TestMsgChanEmpty(t)
75 mainCtrl.wait_registry_empty(t, 10)
77 <-time.After(1 * time.Second)
78 mainCtrl.VerifyCounterValues(t)
81 //-----------------------------------------------------------------------------
82 // TestSubReqAndRouteUpdateNok
85 // +-------+ +-------+ +---------+ +---------+
86 // | xapp2 | | xapp1 | | submgr | | rtmgr |
87 // +-------+ +-------+ +---------+ +---------+
89 // | [SUBS CREATE] | |
93 // | SubReq (mergeable) | |
94 // |--------------------------->| | |
96 // | | | RouteUpdate |
97 // | | |------------->|
99 // | | | RouteUpdate |
100 // | | | status:400 |
101 // | | |<-------------|
103 // | [SUBS INT DELETE] | |
106 // | [SUBS DELETE] | |
108 func TestSubReqAndRouteUpdateNok(t *testing.T) {
109 CaseBegin("TestSubReqAndRouteUpdateNok")
111 // Init counter check
112 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
113 Counter{cSubReqFromXapp, 2},
114 Counter{cSubReqToE2, 1},
115 Counter{cSubRespFromE2, 1},
116 Counter{cSubRespToXapp, 1},
117 Counter{cRouteCreateUpdateFail, 1},
118 Counter{cSubDelReqFromXapp, 1},
119 Counter{cSubDelReqToE2, 1},
120 Counter{cSubDelRespFromE2, 1},
121 Counter{cSubDelRespToXapp, 1},
124 cretrans := xappConn1.SendSubsReq(t, nil, nil)
125 crereq, cremsg := e2termConn1.RecvSubsReq(t)
126 e2termConn1.SendSubsResp(t, crereq, cremsg)
127 e2SubsId := xappConn1.RecvSubsResp(t, cretrans)
129 resp, _ := xapp.Subscription.QuerySubscriptions()
130 assert.Equal(t, resp[0].SubscriptionID, int64(e2SubsId))
131 assert.Equal(t, resp[0].Meid, "RAN_NAME_1")
132 assert.Equal(t, resp[0].Endpoint, []string{"localhost:13560"})
134 waiter := rtmgrHttp.AllocNextEvent(false)
135 newSubsId := mainCtrl.get_registry_next_subid(t)
136 xappConn2.SendSubsReq(t, nil, nil)
139 deltrans := xappConn1.SendSubsDelReq(t, nil, e2SubsId)
140 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
142 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
143 xappConn1.RecvSubsDelResp(t, deltrans)
145 //Wait that subs is cleaned
146 mainCtrl.wait_subs_clean(t, newSubsId, 10)
147 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
149 xappConn1.TestMsgChanEmpty(t)
150 xappConn2.TestMsgChanEmpty(t)
151 e2termConn1.TestMsgChanEmpty(t)
152 mainCtrl.wait_registry_empty(t, 10)
154 mainCtrl.VerifyCounterValues(t)
157 //-----------------------------------------------------------------------------
158 // TestSubDelReqAndRouteDeleteNok
161 // +-------+ +---------+ +---------+ +---------+
162 // | xapp | | submgr | | e2term | | rtmgr |
163 // +-------+ +---------+ +---------+ +---------+
165 // | [SUBS CREATE] | |
170 // |------------->| | |
172 // | |------------->| |
174 // | |<-------------| |
176 // |<-------------| | |
177 // | | RouteDelete | |
178 // | |---------------------------->|
180 // | | RouteDelete | |
181 // | | status:400 | |
182 // | |<----------------------------|
184 func TestSubDelReqAndRouteDeleteNok(t *testing.T) {
185 CaseBegin("TestSubDelReqAndRouteDeleteNok")
187 // Init counter check
188 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
189 Counter{cSubReqFromXapp, 1},
190 Counter{cSubReqToE2, 1},
191 Counter{cSubRespFromE2, 1},
192 Counter{cSubRespToXapp, 1},
193 Counter{cSubDelReqFromXapp, 1},
194 Counter{cRouteDeleteFail, 1},
195 Counter{cSubDelReqToE2, 1},
196 Counter{cSubDelRespFromE2, 1},
197 Counter{cSubDelRespToXapp, 1},
200 cretrans := xappConn1.SendSubsReq(t, nil, nil)
201 crereq, cremsg := e2termConn1.RecvSubsReq(t)
202 e2termConn1.SendSubsResp(t, crereq, cremsg)
203 e2SubsId := xappConn1.RecvSubsResp(t, cretrans)
205 resp, _ := xapp.Subscription.QuerySubscriptions()
206 assert.Equal(t, resp[0].SubscriptionID, int64(e2SubsId))
207 assert.Equal(t, resp[0].Meid, "RAN_NAME_1")
208 assert.Equal(t, resp[0].Endpoint, []string{"localhost:13560"})
210 deltrans := xappConn1.SendSubsDelReq(t, nil, e2SubsId)
211 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
213 waiter := rtmgrHttp.AllocNextEvent(false)
214 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
217 xappConn1.RecvSubsDelResp(t, deltrans)
219 //Wait that subs is cleaned
220 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
222 xappConn1.TestMsgChanEmpty(t)
223 xappConn2.TestMsgChanEmpty(t)
224 e2termConn1.TestMsgChanEmpty(t)
225 mainCtrl.wait_registry_empty(t, 10)
227 mainCtrl.VerifyCounterValues(t)
230 //-----------------------------------------------------------------------------
231 // TestSubMergeDelAndRouteUpdateNok
233 // +-------+ +-------+ +---------+ +---------+
234 // | xapp2 | | xapp1 | | submgr | | e2term |
235 // +-------+ +-------+ +---------+ +---------+
240 // | |------------->| |
243 // | | |------------->|
245 // | | |<-------------|
247 // | |<-------------| |
250 // |--------------------------->| |
253 // |<---------------------------| |
255 // | | SubDelReq 1 | |
256 // | |------------->| |
257 // | | | RouteUpdate |
258 // | | |-----> rtmgr |
260 // | | | RouteUpdate |
261 // | | | status:400 |
262 // | | |<----- rtmgr |
264 // | | SubDelResp 1 | |
265 // | |<-------------| |
268 // |--------------------------->| |
270 // | | | SubDelReq 2 |
271 // | | |------------->|
273 // | | | SubDelReq 2 |
274 // | | |------------->|
276 // | SubDelResp 2 | |
277 // |<---------------------------| |
279 //-----------------------------------------------------------------------------
280 func TestSubMergeDelAndRouteUpdateNok(t *testing.T) {
281 CaseBegin("TestSubMergeDelAndRouteUpdateNok")
283 // Init counter check
284 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
285 Counter{cSubReqFromXapp, 2},
286 Counter{cSubReqToE2, 1},
287 Counter{cSubRespFromE2, 1},
288 Counter{cSubRespToXapp, 2},
289 Counter{cSubDelReqFromXapp, 2},
290 Counter{cRouteDeleteUpdateFail, 1},
291 Counter{cSubDelReqToE2, 1},
292 Counter{cSubDelRespFromE2, 1},
293 Counter{cSubDelRespToXapp, 2},
297 rparams1 := &teststube2ap.E2StubSubsReqParams{}
299 cretrans1 := xappConn1.SendSubsReq(t, rparams1, nil)
300 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
301 e2termConn1.SendSubsResp(t, crereq1, cremsg1)
302 e2SubsId1 := xappConn1.RecvSubsResp(t, cretrans1)
305 rparams2 := &teststube2ap.E2StubSubsReqParams{}
307 cretrans2 := xappConn2.SendSubsReq(t, rparams2, nil)
308 e2SubsId2 := xappConn2.RecvSubsResp(t, cretrans2)
310 resp, _ := xapp.Subscription.QuerySubscriptions()
311 assert.Equal(t, resp[0].SubscriptionID, int64(e2SubsId1))
312 assert.Equal(t, resp[0].Meid, "RAN_NAME_1")
313 assert.Equal(t, resp[0].Endpoint, []string{"localhost:13560", "localhost:13660"})
316 waiter := rtmgrHttp.AllocNextEvent(false)
317 deltrans1 := xappConn1.SendSubsDelReq(t, nil, e2SubsId1)
320 xappConn1.RecvSubsDelResp(t, deltrans1)
323 deltrans2 := xappConn2.SendSubsDelReq(t, nil, e2SubsId2)
324 delreq2, delmsg2 := e2termConn1.RecvSubsDelReq(t)
325 e2termConn1.SendSubsDelResp(t, delreq2, delmsg2)
326 xappConn2.RecvSubsDelResp(t, deltrans2)
327 //Wait that subs is cleaned
328 mainCtrl.wait_subs_clean(t, e2SubsId2, 10)
330 xappConn1.TestMsgChanEmpty(t)
331 xappConn2.TestMsgChanEmpty(t)
332 e2termConn1.TestMsgChanEmpty(t)
333 mainCtrl.wait_registry_empty(t, 10)
335 mainCtrl.VerifyCounterValues(t)
338 //-----------------------------------------------------------------------------
340 //-----------------------------------------------------------------------------
341 // TestSubReqAndSubDelOk
344 // +-------+ +---------+ +---------+
345 // | xapp | | submgr | | e2term |
346 // +-------+ +---------+ +---------+
349 // |------------->| |
352 // | |------------->|
355 // | |<-------------|
358 // |<-------------| |
362 // |------------->| |
365 // | |------------->|
368 // | |<-------------|
371 // |<-------------| |
373 //-----------------------------------------------------------------------------
374 func TestSubReqAndSubDelOk(t *testing.T) {
375 CaseBegin("TestSubReqAndSubDelOk")
377 // Init counter check
378 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
379 Counter{cSubReqFromXapp, 1},
380 Counter{cSubReqToE2, 1},
381 Counter{cSubRespFromE2, 1},
382 Counter{cSubRespToXapp, 1},
383 Counter{cSubDelReqFromXapp, 1},
384 Counter{cSubDelReqToE2, 1},
385 Counter{cSubDelRespFromE2, 1},
386 Counter{cSubDelRespToXapp, 1},
389 cretrans := xappConn1.SendSubsReq(t, nil, nil)
390 crereq, cremsg := e2termConn1.RecvSubsReq(t)
391 e2termConn1.SendSubsResp(t, crereq, cremsg)
392 e2SubsId := xappConn1.RecvSubsResp(t, cretrans)
394 resp, _ := xapp.Subscription.QuerySubscriptions()
395 assert.Equal(t, resp[0].SubscriptionID, int64(e2SubsId))
396 assert.Equal(t, resp[0].Meid, "RAN_NAME_1")
397 assert.Equal(t, resp[0].Endpoint, []string{"localhost:13560"})
399 deltrans := xappConn1.SendSubsDelReq(t, nil, e2SubsId)
400 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
402 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
403 xappConn1.RecvSubsDelResp(t, deltrans)
405 //Wait that subs is cleaned
406 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
408 xappConn1.TestMsgChanEmpty(t)
409 xappConn2.TestMsgChanEmpty(t)
410 e2termConn1.TestMsgChanEmpty(t)
411 mainCtrl.wait_registry_empty(t, 10)
413 mainCtrl.VerifyCounterValues(t)
416 //-----------------------------------------------------------------------------
417 // TestSubReqRetransmission
420 // +-------+ +---------+ +---------+
421 // | xapp | | submgr | | e2term |
422 // +-------+ +---------+ +---------+
425 // |------------->| |
428 // | |------------->|
432 // |------------->| |
435 // | |<-------------|
438 // |<-------------| |
443 //-----------------------------------------------------------------------------
444 func TestSubReqRetransmission(t *testing.T) {
445 CaseBegin("TestSubReqRetransmission")
448 cretrans := xappConn1.SendSubsReq(t, nil, nil)
449 crereq, cremsg := e2termConn1.RecvSubsReq(t)
451 seqBef := mainCtrl.get_msgcounter(t)
452 xappConn1.SendSubsReq(t, nil, cretrans) //Retransmitted SubReq
453 mainCtrl.wait_msgcounter_change(t, seqBef, 10)
455 // hack as there is no real way to see has message be handled.
456 // Previuos counter check just tells that is has been received by submgr
457 // --> artificial delay
458 <-time.After(1 * time.Second)
459 e2termConn1.SendSubsResp(t, crereq, cremsg)
460 e2SubsId := xappConn1.RecvSubsResp(t, cretrans)
463 deltrans := xappConn1.SendSubsDelReq(t, nil, e2SubsId)
464 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
465 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
466 xappConn1.RecvSubsDelResp(t, deltrans)
468 //Wait that subs is cleaned
469 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
471 xappConn1.TestMsgChanEmpty(t)
472 xappConn2.TestMsgChanEmpty(t)
473 e2termConn1.TestMsgChanEmpty(t)
474 mainCtrl.wait_registry_empty(t, 10)
477 //-----------------------------------------------------------------------------
478 // TestSubDelReqRetransmission
481 // +-------+ +---------+ +---------+
482 // | xapp | | submgr | | e2term |
483 // +-------+ +---------+ +---------+
489 // |------------->| |
492 // | |------------->|
497 // |------------->| |
500 // | |<-------------|
503 // |<-------------| |
505 //-----------------------------------------------------------------------------
506 func TestSubDelReqRetransmission(t *testing.T) {
507 CaseBegin("TestSubDelReqRetransmission")
510 cretrans := xappConn1.SendSubsReq(t, nil, nil)
511 crereq, cremsg := e2termConn1.RecvSubsReq(t)
512 e2termConn1.SendSubsResp(t, crereq, cremsg)
513 e2SubsId := xappConn1.RecvSubsResp(t, cretrans)
516 deltrans := xappConn1.SendSubsDelReq(t, nil, e2SubsId)
517 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
519 seqBef := mainCtrl.get_msgcounter(t)
520 xappConn1.SendSubsDelReq(t, deltrans, e2SubsId) //Retransmitted SubDelReq
521 mainCtrl.wait_msgcounter_change(t, seqBef, 10)
523 // hack as there is no real way to see has message be handled.
524 // Previuos counter check just tells that is has been received by submgr
525 // --> artificial delay
526 <-time.After(1 * time.Second)
528 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
529 xappConn1.RecvSubsDelResp(t, deltrans)
531 //Wait that subs is cleaned
532 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
534 xappConn1.TestMsgChanEmpty(t)
535 xappConn2.TestMsgChanEmpty(t)
536 e2termConn1.TestMsgChanEmpty(t)
537 mainCtrl.wait_registry_empty(t, 10)
540 //-----------------------------------------------------------------------------
541 // TestSubDelReqCollision
544 // +-------+ +---------+ +---------+
545 // | xapp | | submgr | | e2term |
546 // +-------+ +---------+ +---------+
552 // |------------->| |
555 // | |------------->|
560 // |------------->| |
562 // | | SubDelResp 1 |
563 // | |<-------------|
565 // | SubDelResp 1 | |
566 // |<-------------| |
568 // | SubDelResp 2 | |
569 // |<-------------| |
571 //-----------------------------------------------------------------------------
573 func TestSubDelReqCollision(t *testing.T) {
574 CaseBegin("TestSubDelReqCollision")
577 cretrans := xappConn1.SendSubsReq(t, nil, nil)
578 crereq, cremsg := e2termConn1.RecvSubsReq(t)
579 e2termConn1.SendSubsResp(t, crereq, cremsg)
580 e2SubsId := xappConn1.RecvSubsResp(t, cretrans)
583 xappConn1.SendSubsDelReq(t, nil, e2SubsId)
584 delreq1, delmsg1 := e2termConn1.RecvSubsDelReq(t)
586 // Subs Delete colliding
587 seqBef := mainCtrl.get_msgcounter(t)
588 deltranscol2 := xappConn1.NewRmrTransactionId("", "RAN_NAME_1")
589 xappConn1.SendSubsDelReq(t, deltranscol2, e2SubsId) //Colliding SubDelReq
590 mainCtrl.wait_msgcounter_change(t, seqBef, 10)
592 // hack as there is no real way to see has message be handled.
593 // Previuos counter check just tells that is has been received by submgr
594 // --> artificial delay
595 <-time.After(1 * time.Second)
597 // Del resp for first and second
598 e2termConn1.SendSubsDelResp(t, delreq1, delmsg1)
600 // don't care in which order responses are received
601 xappConn1.RecvSubsDelResp(t, nil)
602 xappConn1.RecvSubsDelResp(t, nil)
604 //Wait that subs is cleaned
605 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
607 xappConn1.TestMsgChanEmpty(t)
608 xappConn2.TestMsgChanEmpty(t)
609 e2termConn1.TestMsgChanEmpty(t)
610 mainCtrl.wait_registry_empty(t, 10)
613 //-----------------------------------------------------------------------------
614 // TestSubReqAndSubDelOkTwoParallel
617 // +-------+ +-------+ +---------+ +---------+
618 // | xapp | | xapp | | submgr | | e2term |
619 // +-------+ +-------+ +---------+ +---------+
624 // | |------------->| |
627 // | | |------------->|
630 // |------------------------>| |
633 // | | |------------->|
636 // | | |<-------------|
638 // | |<-------------| |
641 // | | |<-------------|
643 // |<------------------------| |
645 // | | [SUBS 1 DELETE] |
647 // | | [SUBS 2 DELETE] |
650 //-----------------------------------------------------------------------------
651 func TestSubReqAndSubDelOkTwoParallel(t *testing.T) {
652 CaseBegin("TestSubReqAndSubDelOkTwoParallel")
655 rparams1 := &teststube2ap.E2StubSubsReqParams{}
657 cretrans1 := xappConn1.SendSubsReq(t, rparams1, nil)
658 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
661 rparams2 := &teststube2ap.E2StubSubsReqParams{}
664 rparams2.Req.EventTriggerDefinition.Data.Length = 1
665 rparams2.Req.EventTriggerDefinition.Data.Data = make([]uint8, rparams2.Req.EventTriggerDefinition.Data.Length)
666 rparams2.Req.EventTriggerDefinition.Data.Data[0] = 2
668 cretrans2 := xappConn2.SendSubsReq(t, rparams2, nil)
669 crereq2, cremsg2 := e2termConn1.RecvSubsReq(t)
672 e2termConn1.SendSubsResp(t, crereq1, cremsg1)
673 e2SubsId1 := xappConn1.RecvSubsResp(t, cretrans1)
676 e2termConn1.SendSubsResp(t, crereq2, cremsg2)
677 e2SubsId2 := xappConn2.RecvSubsResp(t, cretrans2)
680 deltrans1 := xappConn1.SendSubsDelReq(t, nil, e2SubsId1)
681 delreq1, delmsg1 := e2termConn1.RecvSubsDelReq(t)
682 e2termConn1.SendSubsDelResp(t, delreq1, delmsg1)
683 xappConn1.RecvSubsDelResp(t, deltrans1)
684 //Wait that subs is cleaned
685 mainCtrl.wait_subs_clean(t, e2SubsId1, 10)
688 deltrans2 := xappConn2.SendSubsDelReq(t, nil, e2SubsId2)
689 delreq2, delmsg2 := e2termConn1.RecvSubsDelReq(t)
690 e2termConn1.SendSubsDelResp(t, delreq2, delmsg2)
691 xappConn2.RecvSubsDelResp(t, deltrans2)
692 //Wait that subs is cleaned
693 mainCtrl.wait_subs_clean(t, e2SubsId2, 10)
695 xappConn1.TestMsgChanEmpty(t)
696 xappConn2.TestMsgChanEmpty(t)
697 e2termConn1.TestMsgChanEmpty(t)
698 mainCtrl.wait_registry_empty(t, 10)
701 //-----------------------------------------------------------------------------
702 // TestSameSubsDiffRan
703 // Same subscription to different RANs
706 // +-------+ +---------+ +---------+
707 // | xapp | | submgr | | e2term |
708 // +-------+ +---------+ +---------+
713 // |------------->| |
716 // | |------------->|
719 // | |<-------------|
722 // |<-------------| |
725 // |------------->| |
728 // | |------------->|
731 // | |<-------------|
734 // |<-------------| |
736 // | [SUBS r1 DELETE] |
738 // | [SUBS r2 DELETE] |
741 //-----------------------------------------------------------------------------
742 func TestSameSubsDiffRan(t *testing.T) {
743 CaseBegin("TestSameSubsDiffRan")
746 cretrans1 := xappConn1.NewRmrTransactionId("", "RAN_NAME_1")
747 xappConn1.SendSubsReq(t, nil, cretrans1)
748 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
749 e2termConn1.SendSubsResp(t, crereq1, cremsg1)
750 e2SubsId1 := xappConn1.RecvSubsResp(t, cretrans1)
753 cretrans2 := xappConn1.NewRmrTransactionId("", "RAN_NAME_2")
754 xappConn1.SendSubsReq(t, nil, cretrans2)
755 crereq2, cremsg2 := e2termConn1.RecvSubsReq(t)
756 e2termConn1.SendSubsResp(t, crereq2, cremsg2)
757 e2SubsId2 := xappConn1.RecvSubsResp(t, cretrans2)
760 deltrans1 := xappConn1.NewRmrTransactionId("", "RAN_NAME_1")
761 xappConn1.SendSubsDelReq(t, deltrans1, e2SubsId1)
762 delreq1, delmsg1 := e2termConn1.RecvSubsDelReq(t)
763 e2termConn1.SendSubsDelResp(t, delreq1, delmsg1)
764 xappConn1.RecvSubsDelResp(t, deltrans1)
765 //Wait that subs is cleaned
766 mainCtrl.wait_subs_clean(t, e2SubsId1, 10)
769 deltrans2 := xappConn1.NewRmrTransactionId("", "RAN_NAME_2")
770 xappConn1.SendSubsDelReq(t, deltrans2, e2SubsId2)
771 delreq2, delmsg2 := e2termConn1.RecvSubsDelReq(t)
772 e2termConn1.SendSubsDelResp(t, delreq2, delmsg2)
773 xappConn1.RecvSubsDelResp(t, deltrans2)
774 //Wait that subs is cleaned
775 mainCtrl.wait_subs_clean(t, e2SubsId2, 10)
777 xappConn1.TestMsgChanEmpty(t)
778 xappConn2.TestMsgChanEmpty(t)
779 e2termConn1.TestMsgChanEmpty(t)
780 mainCtrl.wait_registry_empty(t, 10)
783 //-----------------------------------------------------------------------------
784 // TestSubReqRetryInSubmgr
787 // +-------+ +---------+ +---------+
788 // | xapp | | submgr | | e2term |
789 // +-------+ +---------+ +---------+
792 // |------------->| |
795 // | |------------->|
799 // | |------------->|
802 // | |<-------------|
805 // |<-------------| |
810 //-----------------------------------------------------------------------------
812 func TestSubReqRetryInSubmgr(t *testing.T) {
813 CaseBegin("TestSubReqRetryInSubmgr start")
815 // Init counter check
816 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
817 Counter{cSubReqFromXapp, 1},
818 Counter{cSubReqToE2, 1},
819 Counter{cSubReReqToE2, 1},
820 Counter{cSubRespFromE2, 1},
821 Counter{cSubRespToXapp, 1},
822 Counter{cSubDelReqFromXapp, 1},
823 Counter{cSubDelReqToE2, 1},
824 Counter{cSubDelRespFromE2, 1},
825 Counter{cSubDelRespToXapp, 1},
828 // Xapp: Send SubsReq
829 cretrans := xappConn1.SendSubsReq(t, nil, nil)
831 // E2t: Receive 1st SubsReq
832 e2termConn1.RecvSubsReq(t)
834 // E2t: Receive 2nd SubsReq and send SubsResp
835 crereq, cremsg := e2termConn1.RecvSubsReq(t)
836 e2termConn1.SendSubsResp(t, crereq, cremsg)
838 // Xapp: Receive SubsResp
839 e2SubsId := xappConn1.RecvSubsResp(t, cretrans)
841 deltrans := xappConn1.SendSubsDelReq(t, nil, e2SubsId)
842 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
843 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
844 xappConn1.RecvSubsDelResp(t, deltrans)
846 // Wait that subs is cleaned
847 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
849 xappConn1.TestMsgChanEmpty(t)
850 xappConn2.TestMsgChanEmpty(t)
851 e2termConn1.TestMsgChanEmpty(t)
852 mainCtrl.wait_registry_empty(t, 10)
854 mainCtrl.VerifyCounterValues(t)
857 //-----------------------------------------------------------------------------
858 // TestSubReqTwoRetriesNoRespSubDelRespInSubmgr
861 // +-------+ +---------+ +---------+
862 // | xapp | | submgr | | e2term |
863 // +-------+ +---------+ +---------+
866 // |------------->| |
869 // | |------------->|
873 // | |------------->|
876 // | |------------->|
879 // | |<-------------|
882 //-----------------------------------------------------------------------------
884 func TestSubReqRetryNoRespSubDelRespInSubmgr(t *testing.T) {
885 CaseBegin("TestSubReqTwoRetriesNoRespSubDelRespInSubmgr start")
887 // Init counter check
888 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
889 Counter{cSubReqFromXapp, 1},
890 Counter{cSubReqToE2, 1},
891 Counter{cSubReReqToE2, 1},
892 Counter{cSubReqTimerExpiry, 2},
893 Counter{cSubDelReqToE2, 1},
894 Counter{cSubDelRespFromE2, 1},
897 // Xapp: Send SubsReq
898 xappConn1.SendSubsReq(t, nil, nil)
900 // E2t: Receive 1st SubsReq
901 e2termConn1.RecvSubsReq(t)
903 // E2t: Receive 2nd SubsReq
904 e2termConn1.RecvSubsReq(t)
906 // E2t: Send receive SubsDelReq and send SubsResp
907 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
908 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
910 // Wait that subs is cleaned
911 mainCtrl.wait_subs_clean(t, delreq.RequestId.InstanceId, 10)
913 xappConn1.TestMsgChanEmpty(t)
914 xappConn2.TestMsgChanEmpty(t)
915 e2termConn1.TestMsgChanEmpty(t)
916 mainCtrl.wait_registry_empty(t, 10)
918 mainCtrl.VerifyCounterValues(t)
921 //-----------------------------------------------------------------------------
922 // TestSubReqTwoRetriesNoRespAtAllInSubmgr
925 // +-------+ +---------+ +---------+
926 // | xapp | | submgr | | e2term |
927 // +-------+ +---------+ +---------+
930 // |------------->| |
933 // | |------------->|
937 // | |------------->|
940 // | |------------->|
944 // | |------------->|
948 //-----------------------------------------------------------------------------
950 func TestSubReqTwoRetriesNoRespAtAllInSubmgr(t *testing.T) {
951 CaseBegin("TestSubReqTwoRetriesNoRespAtAllInSubmgr start")
953 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
954 Counter{cSubReqFromXapp, 1},
955 Counter{cSubReqToE2, 1},
956 Counter{cSubReReqToE2, 1},
957 Counter{cSubReqTimerExpiry, 2},
958 Counter{cSubDelReqToE2, 1},
959 Counter{cSubDelReReqToE2, 1},
960 Counter{cSubDelReqTimerExpiry, 2},
963 // Xapp: Send SubsReq
964 xappConn1.SendSubsReq(t, nil, nil)
966 // E2t: Receive 1st SubsReq
967 e2termConn1.RecvSubsReq(t)
969 // E2t: Receive 2nd SubsReq
970 e2termConn1.RecvSubsReq(t)
972 // E2t: Receive 1st SubsDelReq
973 e2termConn1.RecvSubsDelReq(t)
975 // E2t: Receive 2nd SubsDelReq
976 delreq, _ := e2termConn1.RecvSubsDelReq(t)
978 // Wait that subs is cleaned
979 mainCtrl.wait_subs_clean(t, delreq.RequestId.InstanceId, 15)
981 xappConn1.TestMsgChanEmpty(t)
982 xappConn2.TestMsgChanEmpty(t)
983 e2termConn1.TestMsgChanEmpty(t)
984 mainCtrl.wait_registry_empty(t, 10)
986 mainCtrl.VerifyCounterValues(t)
989 //-----------------------------------------------------------------------------
990 // TestSubReqSubFailRespInSubmgr
993 // +-------+ +---------+ +---------+
994 // | xapp | | submgr | | e2term |
995 // +-------+ +---------+ +---------+
998 // |------------->| |
1001 // | |------------->|
1004 // | |<-------------|
1007 // | |------------->|
1010 // | |<-------------|
1013 // |<-------------| |
1016 //-----------------------------------------------------------------------------
1018 func TestSubReqSubFailRespInSubmgr(t *testing.T) {
1019 CaseBegin("TestSubReqSubFailRespInSubmgr start")
1021 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
1022 Counter{cSubReqFromXapp, 1},
1023 Counter{cSubReqToE2, 1},
1024 Counter{cSubFailFromE2, 1},
1025 Counter{cSubDelReqToE2, 1},
1026 Counter{cSubDelRespFromE2, 1},
1027 Counter{cSubFailToXapp, 1},
1030 // Xapp: Send SubsReq
1031 cretrans := xappConn1.SendSubsReq(t, nil, nil)
1033 // E2t: Receive SubsReq and send SubsFail (first)
1034 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
1035 fparams1 := &teststube2ap.E2StubSubsFailParams{}
1036 fparams1.Set(crereq1)
1037 e2termConn1.SendSubsFail(t, fparams1, cremsg1)
1039 // E2t: Receive SubsDelReq and send SubsDelResp (internal first)
1040 delreq1, delmsg1 := e2termConn1.RecvSubsDelReq(t)
1041 e2termConn1.SendSubsDelResp(t, delreq1, delmsg1)
1043 // Xapp: Receive SubsFail
1044 e2SubsId := xappConn1.RecvSubsFail(t, cretrans)
1046 // Wait that subs is cleaned
1047 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
1049 xappConn1.TestMsgChanEmpty(t)
1050 xappConn2.TestMsgChanEmpty(t)
1051 e2termConn1.TestMsgChanEmpty(t)
1052 mainCtrl.wait_registry_empty(t, 10)
1054 mainCtrl.VerifyCounterValues(t)
1057 //-----------------------------------------------------------------------------
1058 // TestSubDelReqRetryInSubmgr
1061 // +-------+ +---------+ +---------+
1062 // | xapp | | submgr | | e2term |
1063 // +-------+ +---------+ +---------+
1065 // | [SUBS CREATE] |
1069 // |------------->| |
1072 // | |------------->|
1075 // | |------------->|
1078 // | |<-------------|
1081 // |<-------------| |
1083 //-----------------------------------------------------------------------------
1085 func TestSubDelReqRetryInSubmgr(t *testing.T) {
1087 CaseBegin("TestSubDelReqRetryInSubmgr start")
1090 cretrans := xappConn1.SendSubsReq(t, nil, nil)
1091 crereq, cremsg := e2termConn1.RecvSubsReq(t)
1092 e2termConn1.SendSubsResp(t, crereq, cremsg)
1093 e2SubsId := xappConn1.RecvSubsResp(t, cretrans)
1096 // Xapp: Send SubsDelReq
1097 deltrans := xappConn1.SendSubsDelReq(t, nil, e2SubsId)
1099 // E2t: Receive 1st SubsDelReq
1100 e2termConn1.RecvSubsDelReq(t)
1102 // E2t: Receive 2nd SubsDelReq and send SubsDelResp
1103 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
1104 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
1106 // Xapp: Receive SubsDelResp
1107 xappConn1.RecvSubsDelResp(t, deltrans)
1109 // Wait that subs is cleaned
1110 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
1112 xappConn1.TestMsgChanEmpty(t)
1113 xappConn2.TestMsgChanEmpty(t)
1114 e2termConn1.TestMsgChanEmpty(t)
1115 mainCtrl.wait_registry_empty(t, 10)
1118 //-----------------------------------------------------------------------------
1119 // TestSubDelReqTwoRetriesNoRespInSubmgr
1122 // +-------+ +---------+ +---------+
1123 // | xapp | | submgr | | e2term |
1124 // +-------+ +---------+ +---------+
1126 // | [SUBS CREATE] |
1130 // |------------->| |
1133 // | |------------->|
1136 // | |------------->|
1140 // |<-------------| |
1142 //-----------------------------------------------------------------------------
1144 func TestSubDelReqTwoRetriesNoRespInSubmgr(t *testing.T) {
1146 CaseBegin("TestSubDelReTwoRetriesNoRespInSubmgr start")
1149 cretrans := xappConn1.SendSubsReq(t, nil, nil)
1150 crereq, cremsg := e2termConn1.RecvSubsReq(t)
1151 e2termConn1.SendSubsResp(t, crereq, cremsg)
1152 e2SubsId := xappConn1.RecvSubsResp(t, cretrans)
1155 // Xapp: Send SubsDelReq
1156 deltrans := xappConn1.SendSubsDelReq(t, nil, e2SubsId)
1158 // E2t: Receive 1st SubsDelReq
1159 e2termConn1.RecvSubsDelReq(t)
1161 // E2t: Receive 2nd SubsDelReq
1162 e2termConn1.RecvSubsDelReq(t)
1164 // Xapp: Receive SubsDelResp
1165 xappConn1.RecvSubsDelResp(t, deltrans)
1167 // Wait that subs is cleaned
1168 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
1170 xappConn1.TestMsgChanEmpty(t)
1171 xappConn2.TestMsgChanEmpty(t)
1172 e2termConn1.TestMsgChanEmpty(t)
1173 mainCtrl.wait_registry_empty(t, 10)
1176 //-----------------------------------------------------------------------------
1177 // TestSubDelReqSubDelFailRespInSubmgr
1180 // +-------+ +---------+ +---------+
1181 // | xapp | | submgr | | e2term |
1182 // +-------+ +---------+ +---------+
1184 // | [SUBS CREATE] |
1188 // |------------->| |
1191 // | |------------->|
1194 // | |<-------------|
1197 // |<-------------| |
1200 //-----------------------------------------------------------------------------
1202 func TestSubDelReqSubDelFailRespInSubmgr(t *testing.T) {
1203 CaseBegin("TestSubReqSubDelFailRespInSubmgr start")
1205 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
1206 Counter{cSubReqFromXapp, 1},
1207 Counter{cSubReqToE2, 1},
1208 Counter{cSubRespFromE2, 1},
1209 Counter{cSubRespToXapp, 1},
1210 Counter{cSubDelReqFromXapp, 1},
1211 Counter{cSubDelReqToE2, 1},
1212 Counter{cSubDelFailFromE2, 1},
1213 Counter{cSubDelRespToXapp, 1},
1217 cretrans := xappConn1.SendSubsReq(t, nil, nil)
1218 crereq, cremsg := e2termConn1.RecvSubsReq(t)
1219 e2termConn1.SendSubsResp(t, crereq, cremsg)
1220 e2SubsId := xappConn1.RecvSubsResp(t, cretrans)
1222 // Xapp: Send SubsDelReq
1223 deltrans := xappConn1.SendSubsDelReq(t, nil, e2SubsId)
1225 // E2t: Send receive SubsDelReq and send SubsDelFail
1226 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
1227 e2termConn1.SendSubsDelFail(t, delreq, delmsg)
1229 // Xapp: Receive SubsDelResp
1230 xappConn1.RecvSubsDelResp(t, deltrans)
1232 // Wait that subs is cleaned
1233 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
1235 xappConn1.TestMsgChanEmpty(t)
1236 xappConn2.TestMsgChanEmpty(t)
1237 e2termConn1.TestMsgChanEmpty(t)
1238 mainCtrl.wait_registry_empty(t, 10)
1240 mainCtrl.VerifyCounterValues(t)
1243 //-----------------------------------------------------------------------------
1244 // TestSubReqAndSubDelOkSameAction
1247 // +-------+ +-------+ +---------+ +---------+
1248 // | xapp2 | | xapp1 | | submgr | | e2term |
1249 // +-------+ +-------+ +---------+ +---------+
1254 // | |------------->| |
1257 // | | |------------->|
1259 // | | |<-------------|
1261 // | |<-------------| |
1264 // |--------------------------->| |
1267 // |<---------------------------| |
1269 // | | SubDelReq 1 | |
1270 // | |------------->| |
1272 // | | SubDelResp 1 | |
1273 // | |<-------------| |
1275 // | SubDelReq 2 | |
1276 // |--------------------------->| |
1278 // | | | SubDelReq 2 |
1279 // | | |------------->|
1281 // | | | SubDelReq 2 |
1282 // | | |------------->|
1284 // | SubDelResp 2 | |
1285 // |<---------------------------| |
1287 //-----------------------------------------------------------------------------
1288 func TestSubReqAndSubDelOkSameAction(t *testing.T) {
1289 CaseBegin("TestSubReqAndSubDelOkSameAction")
1291 // Init counter check
1292 mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{
1293 Counter{cSubReqFromXapp, 2},
1294 Counter{cSubReqToE2, 1},
1295 Counter{cSubRespFromE2, 1},
1296 Counter{cSubRespToXapp, 2},
1297 Counter{cMergedSubscriptions, 1},
1298 Counter{cUnmergedSubscriptions, 1},
1299 Counter{cSubDelReqFromXapp, 2},
1300 Counter{cSubDelReqToE2, 1},
1301 Counter{cSubDelRespFromE2, 1},
1302 Counter{cSubDelRespToXapp, 2},
1306 rparams1 := &teststube2ap.E2StubSubsReqParams{}
1308 cretrans1 := xappConn1.SendSubsReq(t, rparams1, nil)
1309 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
1310 e2termConn1.SendSubsResp(t, crereq1, cremsg1)
1311 e2SubsId1 := xappConn1.RecvSubsResp(t, cretrans1)
1314 rparams2 := &teststube2ap.E2StubSubsReqParams{}
1316 cretrans2 := xappConn2.SendSubsReq(t, rparams2, nil)
1317 //crereq2, cremsg2 := e2termConn1.RecvSubsReq(t)
1318 //e2termConn1.SendSubsResp(t, crereq2, cremsg2)
1319 e2SubsId2 := xappConn2.RecvSubsResp(t, cretrans2)
1321 resp, _ := xapp.Subscription.QuerySubscriptions()
1322 assert.Equal(t, resp[0].SubscriptionID, int64(e2SubsId1))
1323 assert.Equal(t, resp[0].Meid, "RAN_NAME_1")
1324 assert.Equal(t, resp[0].Endpoint, []string{"localhost:13560", "localhost:13660"})
1327 deltrans1 := xappConn1.SendSubsDelReq(t, nil, e2SubsId1)
1328 //e2termConn1.RecvSubsDelReq(t)
1329 //e2termConn1.SendSubsDelResp(t, delreq1, delmsg1)
1330 xappConn1.RecvSubsDelResp(t, deltrans1)
1331 //Wait that subs is cleaned
1332 //mainCtrl.wait_subs_clean(t, e2SubsId1, 10)
1335 deltrans2 := xappConn2.SendSubsDelReq(t, nil, e2SubsId2)
1336 delreq2, delmsg2 := e2termConn1.RecvSubsDelReq(t)
1337 e2termConn1.SendSubsDelResp(t, delreq2, delmsg2)
1338 xappConn2.RecvSubsDelResp(t, deltrans2)
1339 //Wait that subs is cleaned
1340 mainCtrl.wait_subs_clean(t, e2SubsId2, 10)
1342 xappConn1.TestMsgChanEmpty(t)
1343 xappConn2.TestMsgChanEmpty(t)
1344 e2termConn1.TestMsgChanEmpty(t)
1345 mainCtrl.wait_registry_empty(t, 10)
1347 mainCtrl.VerifyCounterValues(t)
1350 //-----------------------------------------------------------------------------
1351 // TestSubReqAndSubDelOkSameActionParallel
1354 // +-------+ +-------+ +---------+ +---------+
1355 // | xapp2 | | xapp1 | | submgr | | e2term |
1356 // +-------+ +-------+ +---------+ +---------+
1361 // | |------------->| |
1364 // | | |------------->|
1366 // |--------------------------->| |
1368 // | | |<-------------|
1370 // | |<-------------| |
1373 // |<---------------------------| |
1375 // | | SubDelReq 1 | |
1376 // | |------------->| |
1378 // | | SubDelResp 1 | |
1379 // | |<-------------| |
1381 // | SubDelReq 2 | |
1382 // |--------------------------->| |
1384 // | | | SubDelReq 2 |
1385 // | | |------------->|
1387 // | | | SubDelReq 2 |
1388 // | | |------------->|
1390 // | SubDelResp 2 | |
1391 // |<---------------------------| |
1393 //-----------------------------------------------------------------------------
1394 func TestSubReqAndSubDelOkSameActionParallel(t *testing.T) {
1395 CaseBegin("TestSubReqAndSubDelOkSameActionParallel")
1398 rparams1 := &teststube2ap.E2StubSubsReqParams{}
1400 cretrans1 := xappConn1.SendSubsReq(t, rparams1, nil)
1401 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
1404 rparams2 := &teststube2ap.E2StubSubsReqParams{}
1406 cretrans2 := xappConn2.SendSubsReq(t, rparams2, nil)
1409 e2termConn1.SendSubsResp(t, crereq1, cremsg1)
1410 e2SubsId1 := xappConn1.RecvSubsResp(t, cretrans1)
1413 e2SubsId2 := xappConn2.RecvSubsResp(t, cretrans2)
1416 deltrans1 := xappConn1.SendSubsDelReq(t, nil, e2SubsId1)
1417 xappConn1.RecvSubsDelResp(t, deltrans1)
1420 deltrans2 := xappConn2.SendSubsDelReq(t, nil, e2SubsId2)
1421 delreq2, delmsg2 := e2termConn1.RecvSubsDelReq(t)
1422 e2termConn1.SendSubsDelResp(t, delreq2, delmsg2)
1423 xappConn2.RecvSubsDelResp(t, deltrans2)
1425 //Wait that subs is cleaned
1426 mainCtrl.wait_subs_clean(t, e2SubsId2, 10)
1428 xappConn1.TestMsgChanEmpty(t)
1429 xappConn2.TestMsgChanEmpty(t)
1430 e2termConn1.TestMsgChanEmpty(t)
1431 mainCtrl.wait_registry_empty(t, 10)
1434 //-----------------------------------------------------------------------------
1435 // TestSubReqAndSubDelNokSameActionParallel
1438 // +-------+ +-------+ +---------+ +---------+
1439 // | xapp2 | | xapp1 | | submgr | | e2term |
1440 // +-------+ +-------+ +---------+ +---------+
1445 // | |------------->| |
1448 // | | |------------->|
1450 // |--------------------------->| |
1452 // | | |<-------------|
1454 // | | | SubDelReq |
1455 // | | |------------->|
1456 // | | | SubDelResp |
1457 // | | |<-------------|
1460 // | |<-------------| |
1463 // |<---------------------------| |
1465 //-----------------------------------------------------------------------------
1466 func TestSubReqAndSubDelNokSameActionParallel(t *testing.T) {
1467 CaseBegin("TestSubReqAndSubDelNokSameActionParallel")
1470 rparams1 := &teststube2ap.E2StubSubsReqParams{}
1472 cretrans1 := xappConn1.SendSubsReq(t, rparams1, nil)
1474 // E2t: Receive SubsReq (first)
1475 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
1478 rparams2 := &teststube2ap.E2StubSubsReqParams{}
1480 subepcnt2 := mainCtrl.get_subs_entrypoint_cnt(t, crereq1.RequestId.InstanceId)
1481 cretrans2 := xappConn2.SendSubsReq(t, rparams2, nil)
1482 mainCtrl.wait_subs_entrypoint_cnt_change(t, crereq1.RequestId.InstanceId, subepcnt2, 10)
1484 // E2t: send SubsFail (first)
1485 fparams1 := &teststube2ap.E2StubSubsFailParams{}
1486 fparams1.Set(crereq1)
1487 e2termConn1.SendSubsFail(t, fparams1, cremsg1)
1489 // E2t: internal delete
1490 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
1491 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
1494 e2SubsId1 := xappConn1.RecvSubsFail(t, cretrans1)
1496 xappConn2.RecvSubsFail(t, cretrans2)
1498 //Wait that subs is cleaned
1499 mainCtrl.wait_subs_clean(t, e2SubsId1, 15)
1501 xappConn1.TestMsgChanEmpty(t)
1502 xappConn2.TestMsgChanEmpty(t)
1503 e2termConn1.TestMsgChanEmpty(t)
1504 mainCtrl.wait_registry_empty(t, 10)
1507 //-----------------------------------------------------------------------------
1508 // TestSubReqAndSubDelNoAnswerSameActionParallel
1511 // +-------+ +-------+ +---------+ +---------+
1512 // | xapp2 | | xapp1 | | submgr | | e2term |
1513 // +-------+ +-------+ +---------+ +---------+
1518 // | |------------->| |
1521 // | | |------------->|
1523 // |--------------------------->| |
1526 // | | |------------->|
1529 // | | | SubDelReq |
1530 // | | |------------->|
1532 // | | | SubDelResp |
1533 // | | |<-------------|
1535 //-----------------------------------------------------------------------------
1536 func TestSubReqAndSubDelNoAnswerSameActionParallel(t *testing.T) {
1537 CaseBegin("TestSubReqAndSubDelNoAnswerSameActionParallel")
1540 rparams1 := &teststube2ap.E2StubSubsReqParams{}
1542 xappConn1.SendSubsReq(t, rparams1, nil)
1544 crereq1, _ := e2termConn1.RecvSubsReq(t)
1547 rparams2 := &teststube2ap.E2StubSubsReqParams{}
1549 subepcnt2 := mainCtrl.get_subs_entrypoint_cnt(t, crereq1.RequestId.InstanceId)
1550 xappConn2.SendSubsReq(t, rparams2, nil)
1551 mainCtrl.wait_subs_entrypoint_cnt_change(t, crereq1.RequestId.InstanceId, subepcnt2, 10)
1553 //Req1 (retransmitted)
1554 e2termConn1.RecvSubsReq(t)
1556 delreq1, delmsg1 := e2termConn1.RecvSubsDelReq(t)
1557 e2termConn1.SendSubsDelResp(t, delreq1, delmsg1)
1559 //Wait that subs is cleaned
1560 mainCtrl.wait_subs_clean(t, delreq1.RequestId.InstanceId, 10)
1562 xappConn1.TestMsgChanEmpty(t)
1563 xappConn2.TestMsgChanEmpty(t)
1564 e2termConn1.TestMsgChanEmpty(t)
1565 mainCtrl.wait_registry_empty(t, 15)
1568 //----------------------------- Policy cases ---------------------------------
1569 //-----------------------------------------------------------------------------
1570 // TestSubReqPolicyAndSubDelOk
1573 // +-------+ +---------+ +---------+
1574 // | xapp | | submgr | | e2term |
1575 // +-------+ +---------+ +---------+
1578 // |------------->| |
1581 // | |------------->|
1584 // | |<-------------|
1587 // |<-------------| |
1591 // |------------->| |
1594 // | |------------->|
1597 // | |<-------------|
1600 // |<-------------| |
1602 //-----------------------------------------------------------------------------
1603 func TestSubReqPolicyAndSubDelOk(t *testing.T) {
1604 CaseBegin("TestSubReqAndSubDelOk")
1606 rparams1 := &teststube2ap.E2StubSubsReqParams{}
1608 rparams1.Req.ActionSetups[0].ActionType = e2ap.E2AP_ActionTypePolicy
1609 cretrans := xappConn1.SendSubsReq(t, rparams1, nil)
1611 crereq, cremsg := e2termConn1.RecvSubsReq(t)
1612 e2termConn1.SendSubsResp(t, crereq, cremsg)
1613 e2SubsId := xappConn1.RecvSubsResp(t, cretrans)
1614 deltrans := xappConn1.SendSubsDelReq(t, nil, e2SubsId)
1615 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
1617 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
1618 xappConn1.RecvSubsDelResp(t, deltrans)
1620 //Wait that subs is cleaned
1621 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
1623 xappConn1.TestMsgChanEmpty(t)
1624 xappConn2.TestMsgChanEmpty(t)
1625 e2termConn1.TestMsgChanEmpty(t)
1626 mainCtrl.wait_registry_empty(t, 10)
1629 //-----------------------------------------------------------------------------
1630 // TestSubReqPolicyChangeAndSubDelOk
1633 // +-------+ +---------+ +---------+
1634 // | xapp | | submgr | | e2term |
1635 // +-------+ +---------+ +---------+
1638 // |------------->| |
1641 // | |------------->|
1644 // | |<-------------|
1647 // |<-------------| |
1650 // |------------->| |
1653 // | |------------->|
1656 // | |<-------------|
1659 // |<-------------| |
1662 // |------------->| |
1665 // | |------------->|
1668 // | |<-------------|
1671 // |<-------------| |
1673 //-----------------------------------------------------------------------------
1675 func TestSubReqPolicyChangeAndSubDelOk(t *testing.T) {
1676 CaseBegin("TestSubReqAndSubDelOk")
1678 rparams1 := &teststube2ap.E2StubSubsReqParams{}
1680 rparams1.Req.ActionSetups[0].ActionType = e2ap.E2AP_ActionTypePolicy
1681 cretrans := xappConn1.SendSubsReq(t, rparams1, nil)
1683 crereq, cremsg := e2termConn1.RecvSubsReq(t)
1684 e2termConn1.SendSubsResp(t, crereq, cremsg)
1685 e2SubsId := xappConn1.RecvSubsResp(t, cretrans)
1688 rparams1.Req.RequestId.InstanceId = e2SubsId
1689 rparams1.Req.ActionSetups[0].SubsequentAction.TimetoWait = e2ap.E2AP_TimeToWaitW200ms
1690 xappConn1.SendSubsReq(t, rparams1, cretrans)
1692 crereq, cremsg = e2termConn1.RecvSubsReq(t)
1693 e2termConn1.SendSubsResp(t, crereq, cremsg)
1694 e2SubsId = xappConn1.RecvSubsResp(t, cretrans)
1695 deltrans := xappConn1.SendSubsDelReq(t, nil, e2SubsId)
1696 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
1698 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
1699 xappConn1.RecvSubsDelResp(t, deltrans)
1701 //Wait that subs is cleaned
1702 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
1704 xappConn1.TestMsgChanEmpty(t)
1705 xappConn2.TestMsgChanEmpty(t)
1706 e2termConn1.TestMsgChanEmpty(t)
1707 mainCtrl.wait_registry_empty(t, 10)
1710 //-----------------------------------------------------------------------------
1711 // TestSubReqAndSubDelOkTwoE2termParallel
1714 // +-------+ +---------+ +---------+ +---------+
1715 // | xapp | | submgr | | e2term1 | | e2term2 |
1716 // +-------+ +---------+ +---------+ +---------+
1721 // |------------->| | |
1724 // | |------------->| |
1727 // |------------->| | |
1730 // | |---------------------------->|
1733 // | |<-------------| |
1735 // |<-------------| | |
1737 // | |<----------------------------|
1739 // |<-------------| | |
1741 // | [SUBS 1 DELETE] | |
1743 // | [SUBS 2 DELETE] | |
1746 //-----------------------------------------------------------------------------
1747 func TestSubReqAndSubDelOkTwoE2termParallel(t *testing.T) {
1748 CaseBegin("TestSubReqAndSubDelOkTwoE2termParallel")
1751 cretrans1 := xappConn1.NewRmrTransactionId("", "RAN_NAME_1")
1752 xappConn1.SendSubsReq(t, nil, cretrans1)
1753 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
1755 cretrans2 := xappConn1.NewRmrTransactionId("", "RAN_NAME_11")
1756 xappConn1.SendSubsReq(t, nil, cretrans2)
1757 crereq2, cremsg2 := e2termConn2.RecvSubsReq(t)
1760 e2termConn1.SendSubsResp(t, crereq1, cremsg1)
1761 e2SubsId1 := xappConn1.RecvSubsResp(t, cretrans1)
1764 e2termConn2.SendSubsResp(t, crereq2, cremsg2)
1765 e2SubsId2 := xappConn1.RecvSubsResp(t, cretrans2)
1768 deltrans1 := xappConn1.SendSubsDelReq(t, nil, e2SubsId1)
1769 delreq1, delmsg1 := e2termConn1.RecvSubsDelReq(t)
1770 e2termConn1.SendSubsDelResp(t, delreq1, delmsg1)
1771 xappConn1.RecvSubsDelResp(t, deltrans1)
1772 //Wait that subs is cleaned
1773 mainCtrl.wait_subs_clean(t, e2SubsId1, 10)
1776 deltrans2 := xappConn1.SendSubsDelReq(t, nil, e2SubsId2)
1777 delreq2, delmsg2 := e2termConn2.RecvSubsDelReq(t)
1778 e2termConn2.SendSubsDelResp(t, delreq2, delmsg2)
1779 xappConn1.RecvSubsDelResp(t, deltrans2)
1780 //Wait that subs is cleaned
1781 mainCtrl.wait_subs_clean(t, e2SubsId2, 10)
1783 xappConn1.TestMsgChanEmpty(t)
1784 xappConn2.TestMsgChanEmpty(t)
1785 e2termConn1.TestMsgChanEmpty(t)
1786 e2termConn2.TestMsgChanEmpty(t)
1787 mainCtrl.wait_registry_empty(t, 10)
1790 //-----------------------------------------------------------------------------
1791 // TestSubReqInsertAndSubDelOk
1794 // +-------+ +---------+ +---------+
1795 // | xapp | | submgr | | e2term |
1796 // +-------+ +---------+ +---------+
1799 // |------------->| |
1802 // | |------------->|
1805 // | |<-------------|
1808 // |<-------------| |
1812 // |------------->| |
1815 // | |------------->|
1818 // | |<-------------|
1821 // |<-------------| |
1823 //-----------------------------------------------------------------------------
1824 func TestSubReqInsertAndSubDelOk(t *testing.T) {
1825 CaseBegin("TestInsertSubReqAndSubDelOk")
1827 rparams1 := &teststube2ap.E2StubSubsReqParams{}
1829 rparams1.Req.ActionSetups[0].ActionType = e2ap.E2AP_ActionTypeInsert
1830 cretrans := xappConn1.SendSubsReq(t, rparams1, nil)
1832 crereq, cremsg := e2termConn1.RecvSubsReq(t)
1833 e2termConn1.SendSubsResp(t, crereq, cremsg)
1834 e2SubsId := xappConn1.RecvSubsResp(t, cretrans)
1835 deltrans := xappConn1.SendSubsDelReq(t, nil, e2SubsId)
1836 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
1838 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
1839 xappConn1.RecvSubsDelResp(t, deltrans)
1841 //Wait that subs is cleaned
1842 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
1844 xappConn1.TestMsgChanEmpty(t)
1845 xappConn2.TestMsgChanEmpty(t)
1846 e2termConn1.TestMsgChanEmpty(t)
1847 mainCtrl.wait_registry_empty(t, 10)
1850 //-----------------------------------------------------------------------------
1851 // TestSubReqRetransmissionWithSameSubIdDiffXid
1853 // This case simulates case where xApp restarts and starts sending same
1854 // subscription requests which have already subscribed successfully
1857 // +-------+ +---------+ +---------+
1858 // | xapp | | submgr | | e2term |
1859 // +-------+ +---------+ +---------+
1862 // |------------->| |
1865 // | |------------->|
1868 // | |<-------------|
1871 // |<-------------| |
1873 // | xApp restart | |
1876 // | (retrans with same xApp generated subid but diff xid)
1877 // |------------->| |
1880 // |<-------------| |
1882 // | [SUBS DELETE] |
1885 //-----------------------------------------------------------------------------
1886 func TestSubReqRetransmissionWithSameSubIdDiffXid(t *testing.T) {
1887 CaseBegin("TestSubReqRetransmissionWithSameSubIdDiffXid")
1890 cretrans := xappConn1.SendSubsReq(t, nil, nil)
1891 crereq, cremsg := e2termConn1.RecvSubsReq(t)
1892 e2termConn1.SendSubsResp(t, crereq, cremsg)
1893 e2SubsId := xappConn1.RecvSubsResp(t, cretrans)
1895 // xApp restart here
1896 // --> artificial delay
1897 <-time.After(1 * time.Second)
1900 cretrans = xappConn1.SendSubsReq(t, nil, nil) //Retransmitted SubReq
1901 e2SubsId = xappConn1.RecvSubsResp(t, cretrans)
1904 deltrans := xappConn1.SendSubsDelReq(t, nil, e2SubsId)
1905 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
1906 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
1907 xappConn1.RecvSubsDelResp(t, deltrans)
1909 //Wait that subs is cleaned
1910 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
1912 xappConn1.TestMsgChanEmpty(t)
1913 xappConn2.TestMsgChanEmpty(t)
1914 e2termConn1.TestMsgChanEmpty(t)
1915 mainCtrl.wait_registry_empty(t, 10)
1918 //-----------------------------------------------------------------------------
1919 // TestSubReqNokAndSubDelOkWithRestartInMiddle
1922 // +-------+ +---------+ +---------+
1923 // | xapp | | submgr | | e2term |
1924 // +-------+ +---------+ +---------+
1927 // |------------->| |
1930 // | |------------->|
1935 // | Submgr restart |
1939 // | |------------->|
1942 // | |<-------------|
1945 //-----------------------------------------------------------------------------
1947 func TestSubReqNokAndSubDelOkWithRestartInMiddle(t *testing.T) {
1948 CaseBegin("TestSubReqNokAndSubDelOkWithRestartInMiddle")
1950 // Remove possible existing subscrition
1951 mainCtrl.removeExistingSubscriptions(t)
1953 mainCtrl.SetResetTestFlag(t, true) // subs.DoNotWaitSubResp will be set TRUE for the subscription
1954 xappConn1.SendSubsReq(t, nil, nil)
1955 e2termConn1.RecvSubsReq(t)
1956 mainCtrl.SetResetTestFlag(t, false)
1958 resp, _ := xapp.Subscription.QuerySubscriptions()
1959 assert.Equal(t, resp[0].Meid, "RAN_NAME_1")
1960 assert.Equal(t, resp[0].Endpoint, []string{"localhost:13560"})
1961 e2SubsId := uint32(resp[0].SubscriptionID)
1962 t.Logf("e2SubsId = %v", e2SubsId)
1964 mainCtrl.SimulateRestart(t) // This will trigger sending of SubDelReq
1966 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
1967 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
1969 // Wait that subs is cleaned
1970 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
1972 xappConn1.TestMsgChanEmpty(t)
1973 xappConn2.TestMsgChanEmpty(t)
1974 e2termConn1.TestMsgChanEmpty(t)
1975 mainCtrl.wait_registry_empty(t, 10)
1978 //-----------------------------------------------------------------------------
1979 // TestSubReqAndSubDelOkWithRestartInMiddle
1982 // +-------+ +---------+ +---------+
1983 // | xapp | | submgr | | e2term |
1984 // +-------+ +---------+ +---------+
1987 // |------------->| |
1990 // | |------------->|
1993 // | |<-------------|
1996 // |<-------------| |
1999 // | Submgr restart |
2002 // |------------->| |
2005 // | |------------->|
2008 // | |<-------------|
2011 // |<-------------| |
2013 //-----------------------------------------------------------------------------
2015 func TestSubReqAndSubDelOkWithRestartInMiddle(t *testing.T) {
2016 CaseBegin("TestSubReqAndSubDelOkWithRestartInMiddle")
2018 cretrans := xappConn1.SendSubsReq(t, nil, nil)
2019 crereq, cremsg := e2termConn1.RecvSubsReq(t)
2020 e2termConn1.SendSubsResp(t, crereq, cremsg)
2021 e2SubsId := xappConn1.RecvSubsResp(t, cretrans)
2023 // Check subscription
2024 resp, _ := xapp.Subscription.QuerySubscriptions()
2025 assert.Equal(t, resp[0].SubscriptionID, int64(e2SubsId))
2026 assert.Equal(t, resp[0].Meid, "RAN_NAME_1")
2027 assert.Equal(t, resp[0].Endpoint, []string{"localhost:13560"})
2029 mainCtrl.SimulateRestart(t)
2031 // Check that subscription is restored correctly after restart
2032 resp, _ = xapp.Subscription.QuerySubscriptions()
2033 assert.Equal(t, resp[0].SubscriptionID, int64(e2SubsId))
2034 assert.Equal(t, resp[0].Meid, "RAN_NAME_1")
2035 assert.Equal(t, resp[0].Endpoint, []string{"localhost:13560"})
2037 deltrans := xappConn1.SendSubsDelReq(t, nil, e2SubsId)
2038 delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
2039 e2termConn1.SendSubsDelResp(t, delreq, delmsg)
2040 xappConn1.RecvSubsDelResp(t, deltrans)
2042 //Wait that subs is cleaned
2043 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
2045 xappConn1.TestMsgChanEmpty(t)
2046 xappConn2.TestMsgChanEmpty(t)
2047 e2termConn1.TestMsgChanEmpty(t)
2048 mainCtrl.wait_registry_empty(t, 10)
2051 //-----------------------------------------------------------------------------
2052 // TestSubReqAndSubDelOkSameActionWithRestartsInMiddle
2055 // +-------+ +-------+ +---------+ +---------+
2056 // | xapp2 | | xapp1 | | submgr | | e2term |
2057 // +-------+ +-------+ +---------+ +---------+
2062 // | |------------->| |
2065 // | | |------------->|
2067 // | | |<-------------|
2069 // | |<-------------| |
2072 // | submgr restart |
2077 // |--------------------------->| |
2080 // |<---------------------------| |
2082 // | | SubDelReq 1 | |
2083 // | |------------->| |
2085 // | | SubDelResp 1 | |
2086 // | |<-------------| |
2090 // | submgr restart |
2093 // | SubDelReq 2 | |
2094 // |--------------------------->| |
2096 // | | | SubDelReq 2 |
2097 // | | |------------->|
2099 // | | | SubDelReq 2 |
2100 // | | |------------->|
2102 // | SubDelResp 2 | |
2103 // |<---------------------------| |
2105 //-----------------------------------------------------------------------------
2107 func TestSubReqAndSubDelOkSameActionWithRestartsInMiddle(t *testing.T) {
2108 CaseBegin("TestSubReqAndSubDelOkSameActionWithRestartsInMiddle")
2111 rparams1 := &teststube2ap.E2StubSubsReqParams{}
2113 cretrans1 := xappConn1.SendSubsReq(t, rparams1, nil)
2114 crereq1, cremsg1 := e2termConn1.RecvSubsReq(t)
2115 e2termConn1.SendSubsResp(t, crereq1, cremsg1)
2116 e2SubsId1 := xappConn1.RecvSubsResp(t, cretrans1)
2119 rparams2 := &teststube2ap.E2StubSubsReqParams{}
2121 cretrans2 := xappConn2.SendSubsReq(t, rparams2, nil)
2122 e2SubsId2 := xappConn2.RecvSubsResp(t, cretrans2)
2124 // Check subscription
2125 resp, _ := xapp.Subscription.QuerySubscriptions() ////////////////////////////////
2126 assert.Equal(t, resp[0].SubscriptionID, int64(e2SubsId1))
2127 assert.Equal(t, resp[0].Meid, "RAN_NAME_1")
2128 assert.Equal(t, resp[0].Endpoint, []string{"localhost:13560", "localhost:13660"})
2130 mainCtrl.SimulateRestart(t)
2132 // Check that subscription is restored correctly after restart
2133 resp, _ = xapp.Subscription.QuerySubscriptions()
2134 assert.Equal(t, resp[0].SubscriptionID, int64(e2SubsId1))
2135 assert.Equal(t, resp[0].Meid, "RAN_NAME_1")
2136 assert.Equal(t, resp[0].Endpoint, []string{"localhost:13560", "localhost:13660"})
2139 deltrans1 := xappConn1.SendSubsDelReq(t, nil, e2SubsId1)
2140 xapp.Logger.Debug("xappConn1.RecvSubsDelResp")
2141 xappConn1.RecvSubsDelResp(t, deltrans1)
2142 xapp.Logger.Debug("xappConn1.RecvSubsDelResp received")
2144 mainCtrl.SimulateRestart(t)
2145 xapp.Logger.Debug("mainCtrl.SimulateRestart done")
2148 deltrans2 := xappConn2.SendSubsDelReq(t, nil, e2SubsId2)
2149 delreq2, delmsg2 := e2termConn1.RecvSubsDelReq(t)
2151 e2termConn1.SendSubsDelResp(t, delreq2, delmsg2)
2152 xappConn2.RecvSubsDelResp(t, deltrans2)
2154 //Wait that subs is cleaned
2155 mainCtrl.wait_subs_clean(t, e2SubsId2, 10)
2157 xappConn1.TestMsgChanEmpty(t)
2158 xappConn2.TestMsgChanEmpty(t)
2159 e2termConn1.TestMsgChanEmpty(t)
2160 mainCtrl.wait_registry_empty(t, 10)