X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=pkg%2Fcontrol%2Fut_messaging_test.go;h=a9339c2a0302b8561c53fce5a3657cb66b2cc357;hb=7348625b9ef03d41dd5a0ca0f6c508376259717e;hp=53d8a85e6be6d498760e7fdfc88175a2b08951e3;hpb=896c3acac45d9e23300072e0cf544bf728396066;p=ric-plt%2Fsubmgr.git diff --git a/pkg/control/ut_messaging_test.go b/pkg/control/ut_messaging_test.go index 53d8a85..a9339c2 100644 --- a/pkg/control/ut_messaging_test.go +++ b/pkg/control/ut_messaging_test.go @@ -22,6 +22,8 @@ package control import ( "gerrit.o-ran-sc.org/r/ric-plt/e2ap/pkg/e2ap" "gerrit.o-ran-sc.org/r/ric-plt/submgr/pkg/teststube2ap" + "gerrit.o-ran-sc.org/r/ric-plt/xapp-frame/pkg/xapp" + "github.com/stretchr/testify/assert" "testing" ) @@ -102,20 +104,22 @@ func TestSubReqAndRouteNok(t *testing.T) { func TestSubReqAndSubDelOk(t *testing.T) { CaseBegin("TestSubReqAndSubDelOk") - waiter := rtmgrHttp.AllocNextEvent(true) cretrans := xappConn1.SendSubsReq(t, nil, nil) - waiter.WaitResult(t) crereq, cremsg := e2termConn1.RecvSubsReq(t) e2termConn1.SendSubsResp(t, crereq, cremsg) e2SubsId := xappConn1.RecvSubsResp(t, cretrans) + + resp, _ := xapp.Subscription.QuerySubscriptions() + assert.Equal(t, resp[0].SubscriptionID, int64(e2SubsId)) + assert.Equal(t, resp[0].Meid, "RAN_NAME_1") + assert.Equal(t, resp[0].Endpoint, []string{"localhost:13560"}) + deltrans := xappConn1.SendSubsDelReq(t, nil, e2SubsId) delreq, delmsg := e2termConn1.RecvSubsDelReq(t) - waiter = rtmgrHttp.AllocNextEvent(true) e2termConn1.SendSubsDelResp(t, delreq, delmsg) xappConn1.RecvSubsDelResp(t, deltrans) - waiter.WaitResult(t) //Wait that subs is cleaned mainCtrl.wait_subs_clean(t, e2SubsId, 10) @@ -668,6 +672,12 @@ func TestSubReqTwoRetriesNoRespAtAllInSubmgr(t *testing.T) { // | | SubFail | // | |<-------------| // | | | +// | | SubDelReq | +// | |------------->| +// | | | +// | | SubDelResp | +// | |<-------------| +// | | | // | SubFail | | // |<-------------| | // | | | @@ -681,11 +691,173 @@ func TestSubReqSubFailRespInSubmgr(t *testing.T) { // Xapp: Send SubsReq cretrans := xappConn1.SendSubsReq(t, nil, nil) - // E2t: Receive SubsReq and send SubsFail - crereq, cremsg := e2termConn1.RecvSubsReq(t) - fparams := &teststube2ap.E2StubSubsFailParams{} - fparams.Set(crereq) - e2termConn1.SendSubsFail(t, fparams, cremsg) + // E2t: Receive SubsReq and send SubsFail (first) + crereq1, cremsg1 := e2termConn1.RecvSubsReq(t) + fparams1 := &teststube2ap.E2StubSubsFailParams{} + fparams1.Set(crereq1) + e2termConn1.SendSubsFail(t, fparams1, cremsg1) + + // E2t: Receive SubsDelReq and send SubsDelResp (internal first) + delreq1, delmsg1 := e2termConn1.RecvSubsDelReq(t) + e2termConn1.SendSubsDelResp(t, delreq1, delmsg1) + + // Xapp: Receive SubsFail + e2SubsId := xappConn1.RecvSubsFail(t, cretrans) + + // Wait that subs is cleaned + mainCtrl.wait_subs_clean(t, e2SubsId, 10) + + xappConn1.TestMsgChanEmpty(t) + xappConn2.TestMsgChanEmpty(t) + e2termConn1.TestMsgChanEmpty(t) + mainCtrl.wait_registry_empty(t, 10) +} + +//----------------------------------------------------------------------------- +// TestSubReqSubFailRespInSubmgrWithDuplicate +// +// stub stub +// +-------+ +---------+ +---------+ +// | xapp | | submgr | | e2term | +// +-------+ +---------+ +---------+ +// | | | +// | SubReq | | +// |------------->| | +// | | | +// | | SubReq | +// | |------------->| +// | | | +// | | SubFail | +// | |<-------------| +// | | | +// | | SubDelReq | +// | |------------->| +// | | | +// | | SubDelResp | +// | |<-------------| +// | | | +// | | SubReq | +// | |------------->| +// | | | +// | | SubResp | +// | |<-------------| +// | | | +// | SubResp | | +// |<-------------| | +// | | | +// | [SUBS DELETE] | +// | | | +// +//----------------------------------------------------------------------------- + +func TestSubReqSubFailRespInSubmgrWithDuplicate(t *testing.T) { + + CaseBegin("TestSubReqSubFailRespInSubmgrWithDuplicate start") + + // Xapp: Send SubsReq + cretrans := xappConn1.SendSubsReq(t, nil, nil) + + // E2t: Receive SubsReq and send SubsFail (first) + crereq1, cremsg1 := e2termConn1.RecvSubsReq(t) + fparams1 := &teststube2ap.E2StubSubsFailParams{} + fparams1.Set(crereq1) + fparams1.SetCauseVal(-1, 5, 3) + e2termConn1.SendSubsFail(t, fparams1, cremsg1) + + // E2t: Receive SubsDelReq and send SubsDelResp (internal) + delreq1, delmsg1 := e2termConn1.RecvSubsDelReq(t) + e2termConn1.SendSubsDelResp(t, delreq1, delmsg1) + + // E2t: Receive SubsReq and send SubsResp (second) + crereq2, cremsg2 := e2termConn1.RecvSubsReq(t) + e2termConn1.SendSubsResp(t, crereq2, cremsg2) + + // XAPP: Receive SubsResp + e2SubsId := xappConn1.RecvSubsResp(t, cretrans) + + // Delete + deltrans2 := xappConn1.SendSubsDelReq(t, nil, e2SubsId) + delreq2, delmsg2 := e2termConn1.RecvSubsDelReq(t) + e2termConn1.SendSubsDelResp(t, delreq2, delmsg2) + xappConn1.RecvSubsDelResp(t, deltrans2) + + // Wait that subs is cleaned + mainCtrl.wait_subs_clean(t, e2SubsId, 10) + + xappConn1.TestMsgChanEmpty(t) + xappConn2.TestMsgChanEmpty(t) + e2termConn1.TestMsgChanEmpty(t) + mainCtrl.wait_registry_empty(t, 10) +} + +//----------------------------------------------------------------------------- +// TestSubReqSubFailRespInSubmgrWithDuplicateFail +// +// stub stub +// +-------+ +---------+ +---------+ +// | xapp | | submgr | | e2term | +// +-------+ +---------+ +---------+ +// | | | +// | SubReq | | +// |------------->| | +// | | | +// | | SubReq | +// | |------------->| +// | | | +// | | SubFail | +// | |<-------------| +// | | | +// | | SubDelReq | +// | |------------->| +// | | | +// | | SubDelResp | +// | |<-------------| +// | | | +// | | SubReq | +// | |------------->| +// | | | +// | | SubFail | +// | |<-------------| +// | | | +// | | SubDelReq | +// | |------------->| +// | | | +// | | SubDelResp | +// | |<-------------| +// | SubFail | | +// |<-------------| | +// | | | +// +//----------------------------------------------------------------------------- + +func TestSubReqSubFailRespInSubmgrWithDuplicateFail(t *testing.T) { + + CaseBegin("TestSubReqSubFailRespInSubmgrWithDuplicateFail start") + + // Xapp: Send SubsReq + cretrans := xappConn1.SendSubsReq(t, nil, nil) + + // E2t: Receive SubsReq and send SubsFail (first) + crereq1, cremsg1 := e2termConn1.RecvSubsReq(t) + fparams1 := &teststube2ap.E2StubSubsFailParams{} + fparams1.Set(crereq1) + fparams1.SetCauseVal(-1, 5, 3) + e2termConn1.SendSubsFail(t, fparams1, cremsg1) + + // E2t: Receive SubsDelReq and send SubsDelResp (internal first) + delreq1, delmsg1 := e2termConn1.RecvSubsDelReq(t) + e2termConn1.SendSubsDelResp(t, delreq1, delmsg1) + + // E2t: Receive SubsReq and send SubsFail (second) + crereq2, cremsg2 := e2termConn1.RecvSubsReq(t) + fparams2 := &teststube2ap.E2StubSubsFailParams{} + fparams2.Set(crereq2) + fparams2.SetCauseVal(-1, 5, 3) + e2termConn1.SendSubsFail(t, fparams2, cremsg2) + + // E2t: Receive SubsDelReq and send SubsDelResp (internal second) + delreq2, delmsg2 := e2termConn1.RecvSubsDelReq(t) + e2termConn1.SendSubsDelResp(t, delreq2, delmsg2) // Xapp: Receive SubsFail e2SubsId := xappConn1.RecvSubsFail(t, cretrans) @@ -937,6 +1109,11 @@ func TestSubReqAndSubDelOkSameAction(t *testing.T) { //e2termConn1.SendSubsResp(t, crereq2, cremsg2) e2SubsId2 := xappConn2.RecvSubsResp(t, cretrans2) + resp, _ := xapp.Subscription.QuerySubscriptions() + assert.Equal(t, resp[0].SubscriptionID, int64(e2SubsId1)) + assert.Equal(t, resp[0].Meid, "RAN_NAME_1") + assert.Equal(t, resp[0].Endpoint, []string{"localhost:13560", "localhost:13660"}) + //Del1 deltrans1 := xappConn1.SendSubsDelReq(t, nil, e2SubsId1) //e2termConn1.RecvSubsDelReq(t) @@ -1062,6 +1239,12 @@ func TestSubReqAndSubDelOkSameActionParallel(t *testing.T) { // |--------------------------->| | // | | | SubFail1 | // | | |<-------------| +// | | | | +// | | | SubDelReq | +// | | |------------->| +// | | | SubDelResp | +// | | |<-------------| +// | | | | // | | SubFail1 | | // | |<-------------| | // | | | | @@ -1076,6 +1259,8 @@ func TestSubReqAndSubDelNokSameActionParallel(t *testing.T) { rparams1 := &teststube2ap.E2StubSubsReqParams{} rparams1.Init() cretrans1 := xappConn1.SendSubsReq(t, rparams1, nil) + + // E2t: Receive SubsReq (first) crereq1, cremsg1 := e2termConn1.RecvSubsReq(t) //Req2 @@ -1085,10 +1270,14 @@ func TestSubReqAndSubDelNokSameActionParallel(t *testing.T) { cretrans2 := xappConn2.SendSubsReq(t, rparams2, nil) mainCtrl.wait_msgcounter_change(t, seqBef2, 10) - //E2T Fail - fparams := &teststube2ap.E2StubSubsFailParams{} - fparams.Set(crereq1) - e2termConn1.SendSubsFail(t, fparams, cremsg1) + // E2t: send SubsFail (first) + fparams1 := &teststube2ap.E2StubSubsFailParams{} + fparams1.Set(crereq1) + e2termConn1.SendSubsFail(t, fparams1, cremsg1) + + // E2t: internal delete + delreq, delmsg := e2termConn1.RecvSubsDelReq(t) + e2termConn1.SendSubsDelResp(t, delreq, delmsg) //Fail1 e2SubsId1 := xappConn1.RecvSubsFail(t, cretrans1)