X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=pkg%2Fcontrol%2Fmessaging_test.go;h=acd15448d66f6218f98382a4d76e136123f52c21;hb=0d064ecdb5239a875857b5910f7f6e83f827d7a6;hp=2d45ede85d8abb186ccd0021d0f0c54ece6d69f6;hpb=47b842bf6afc45313a0edadc78f87bff06ddf2b4;p=ric-plt%2Fsubmgr.git diff --git a/pkg/control/messaging_test.go b/pkg/control/messaging_test.go index 2d45ede..acd1544 100644 --- a/pkg/control/messaging_test.go +++ b/pkg/control/messaging_test.go @@ -395,7 +395,24 @@ func (e2termConn *testingE2termControl) handle_e2term_subs_del_resp(t *testing.T func (mc *testingMainControl) wait_subs_clean(t *testing.T, e2SubsId int, secs int) bool { i := 1 for ; i <= secs*2; i++ { - if mc.c.registry.IsValidSequenceNumber(uint16(e2SubsId)) == false { + if mc.c.registry.GetSubscription(uint16(e2SubsId)) == nil { + return true + } + time.Sleep(500 * time.Millisecond) + } + testError(t, "(general) no clean within %d secs", secs) + return false +} + +func (mc *testingMainControl) wait_subs_trans_clean(t *testing.T, e2SubsId int, secs int) bool { + i := 1 + for ; i <= secs*2; i++ { + subs := mc.c.registry.GetSubscription(uint16(e2SubsId)) + if subs == nil { + return true + } + trans := subs.GetTransaction() + if trans == nil { return true } time.Sleep(500 * time.Millisecond) @@ -563,6 +580,8 @@ func TestSubReqRetransmission(t *testing.T) { // | |------------->| // | | | // | SubDelReq | | +// | (same sub) | | +// | (same xid) | | // |------------->| | // | | | // | | SubDelResp | @@ -596,6 +615,60 @@ func TestSubDelReqRetransmission(t *testing.T) { mainCtrl.wait_subs_clean(t, e2SubsId, 10) } +//----------------------------------------------------------------------------- +// TestSubDelReqCollision +// +// stub stub +// +-------+ +---------+ +---------+ +// | xapp | | submgr | | e2term | +// +-------+ +---------+ +---------+ +// | | | +// | [SUBS CREATE] | +// | | | +// | | | +// | SubDelReq | | +// |------------->| | +// | | | +// | | SubDelReq | +// | |------------->| +// | | | +// | SubDelReq | | +// | (same sub) | | +// | (diff xid) | | +// |------------->| | +// | | | +// | | SubDelResp | +// | |<-------------| +// | | | +// | SubDelResp | | +// |<-------------| | +// +//----------------------------------------------------------------------------- +func TestSubDelReqCollision(t *testing.T) { + xapp.Logger.Info("TestSubDelReqCollision") + + //Subs Create + cretrans := xappConn1.handle_xapp_subs_req(t, nil) + crereq, cremsg := e2termConn.handle_e2term_subs_req(t) + e2termConn.handle_e2term_subs_resp(t, crereq, cremsg) + e2SubsId := xappConn1.handle_xapp_subs_resp(t, cretrans) + + //Subs Delete + deltrans := xappConn1.handle_xapp_subs_del_req(t, nil, e2SubsId) + delreq, delmsg := e2termConn.handle_e2term_subs_del_req(t) + + seqBef := mainCtrl.get_msgcounter(t) + deltranscol := xappConn1.newXappTransaction(nil, "RAN_NAME_1") + xappConn1.handle_xapp_subs_del_req(t, deltranscol, e2SubsId) //Colliding SubDelReq + mainCtrl.wait_msgcounter_change(t, seqBef, 10) + + e2termConn.handle_e2term_subs_del_resp(t, delreq, delmsg) + xappConn1.handle_xapp_subs_del_resp(t, deltrans) + + //Wait that subs is cleaned + mainCtrl.wait_subs_clean(t, e2SubsId, 10) +} + //----------------------------------------------------------------------------- // TestSubReqAndSubDelOkTwoParallel // @@ -746,3 +819,272 @@ func TestSameSubsDiffRan(t *testing.T) { //Wait that subs is cleaned mainCtrl.wait_subs_clean(t, e2SubsId2, 10) } + +//----------------------------------------------------------------------------- +// TestSubReqRetryInSubmgr +// +// stub stub +// +-------+ +---------+ +---------+ +// | xapp | | submgr | | e2term | +// +-------+ +---------+ +---------+ +// | | | +// | SubReq | | +// |------------->| | +// | | | +// | | SubReq | +// | |------------->| +// | | | +// | | | +// | | SubReq | +// | |------------->| +// | | | +// | | SubResp | +// | |<-------------| +// | | | +// | SubResp | | +// |<-------------| | +// | | | +// | [SUBS DELETE] | +// | | | +// +//----------------------------------------------------------------------------- + +func TestSubReqRetryInSubmgr(t *testing.T) { + + xapp.Logger.Info("TestSubReqRetryInSubmgr start") + + // Xapp: Send SubsReq + cretrans := xappConn1.handle_xapp_subs_req(t, nil) + + // E2t: Receive 1st SubsReq + e2termConn.handle_e2term_subs_req(t) + + // E2t: Receive 2nd SubsReq and send SubsResp + crereq, cremsg := e2termConn.handle_e2term_subs_req(t) + e2termConn.handle_e2term_subs_resp(t, crereq, cremsg) + + // Xapp: Receive SubsResp + e2SubsId := xappConn1.handle_xapp_subs_resp(t, cretrans) + + deltrans := xappConn1.handle_xapp_subs_del_req(t, nil, e2SubsId) + delreq, delmsg := e2termConn.handle_e2term_subs_del_req(t) + e2termConn.handle_e2term_subs_del_resp(t, delreq, delmsg) + xappConn1.handle_xapp_subs_del_resp(t, deltrans) + + // Wait that subs is cleaned + mainCtrl.wait_subs_clean(t, e2SubsId, 10) +} + +//----------------------------------------------------------------------------- +// TestSubReqTwoRetriesNoRespSubDelRespInSubmgr +// +// stub stub +// +-------+ +---------+ +---------+ +// | xapp | | submgr | | e2term | +// +-------+ +---------+ +---------+ +// | | | +// | SubReq | | +// |------------->| | +// | | | +// | | SubReq | +// | |------------->| +// | | | +// | | | +// | | SubReq | +// | |------------->| +// | | | +// | | SubDelReq | +// | |------------->| +// | | | +// | | | +// | | SubDelReq | +// | |------------->| +// | | | +// | | | +// | | SubDelResp | +// | |<-------------| +// | | | +// +//----------------------------------------------------------------------------- + +func TestSubReqRetryNoRespSubDelRespInSubmgr(t *testing.T) { + + xapp.Logger.Info("TestSubReqTwoRetriesNoRespSubDelRespInSubmgr start") + + // Xapp: Send SubsReq + xappConn1.handle_xapp_subs_req(t, nil) + + // E2t: Receive 1st SubsReq + e2termConn.handle_e2term_subs_req(t) + + // E2t: Receive 2nd SubsReq + e2termConn.handle_e2term_subs_req(t) + + // E2t: Send receive SubsReq and send SubsResp + delreq, delmsg := e2termConn.handle_e2term_subs_del_req(t) + e2termConn.handle_e2term_subs_del_resp(t, delreq, delmsg) + + // Wait that subs is cleaned + mainCtrl.wait_subs_clean(t, int(delreq.RequestId.Seq), 10) +} + +//----------------------------------------------------------------------------- +// TestSubReqTwoRetriesNoRespAtAllInSubmgr +// +// stub stub +// +-------+ +---------+ +---------+ +// | xapp | | submgr | | e2term | +// +-------+ +---------+ +---------+ +// | | | +// | SubReq | | +// |------------->| | +// | | | +// | | SubReq | +// | |------------->| +// | | | +// | | | +// | | SubReq | +// | |------------->| +// | | | +// | | SubDelReq | +// | |------------->| +// | | | +// | | | +// | | SubDelReq | +// | |------------->| +// | | | +// | | | +// +//----------------------------------------------------------------------------- + +func TestSubReqTwoRetriesNoRespAtAllInSubmgr(t *testing.T) { + + xapp.Logger.Info("TestSubReqTwoRetriesNoRespAtAllInSubmgr start") + + // Xapp: Send SubsReq + xappConn1.handle_xapp_subs_req(t, nil) + + // E2t: Receive 1st SubsReq + e2termConn.handle_e2term_subs_req(t) + + // E2t: Receive 2nd SubsReq + e2termConn.handle_e2term_subs_req(t) + + // E2t: Receive 1st SubsDelReq + e2termConn.handle_e2term_subs_del_req(t) + + // E2t: Receive 2nd SubsDelReq + delreq, _ := e2termConn.handle_e2term_subs_del_req(t) + + // Wait that subs is cleaned + mainCtrl.wait_subs_clean(t, int(delreq.RequestId.Seq), 10) +} + +//----------------------------------------------------------------------------- +// TestSubDelReqRetryInSubmgr +// +// stub stub +// +-------+ +---------+ +---------+ +// | xapp | | submgr | | e2term | +// +-------+ +---------+ +---------+ +// | | | +// | [SUBS CREATE] | +// | | | +// | | | +// | SubDelReq | | +// |------------->| | +// | | | +// | | SubDelReq | +// | |------------->| +// | | | +// | | SubDelReq | +// | |------------->| +// | | | +// | | SubDelResp | +// | |<-------------| +// | | | +// | SubDelResp | | +// |<-------------| | +// +//----------------------------------------------------------------------------- + +func TestSubDelReqRetryInSubmgr(t *testing.T) { + + xapp.Logger.Info("TestSubDelReqRetryInSubmgr start") + + // Subs Create + cretrans := xappConn1.handle_xapp_subs_req(t, nil) + crereq, cremsg := e2termConn.handle_e2term_subs_req(t) + e2termConn.handle_e2term_subs_resp(t, crereq, cremsg) + e2SubsId := xappConn1.handle_xapp_subs_resp(t, cretrans) + + // Subs Delete + // Xapp: Send SubsDelReq + deltrans := xappConn1.handle_xapp_subs_del_req(t, nil, e2SubsId) + + // E2t: Receive 1st SubsDelReq + e2termConn.handle_e2term_subs_del_req(t) + + // E2t: Receive 2nd SubsDelReq and send SubsDelResp + delreq, delmsg := e2termConn.handle_e2term_subs_del_req(t) + e2termConn.handle_e2term_subs_del_resp(t, delreq, delmsg) + + // Xapp: Receive SubsDelReq + xappConn1.handle_xapp_subs_del_resp(t, deltrans) + + // Wait that subs is cleaned + mainCtrl.wait_subs_clean(t, e2SubsId, 10) +} + +//----------------------------------------------------------------------------- +// TestSubDelReqTwoRetriesNoRespInSubmgr +// +// stub stub +// +-------+ +---------+ +---------+ +// | xapp | | submgr | | e2term | +// +-------+ +---------+ +---------+ +// | | | +// | [SUBS CREATE] | +// | | | +// | | | +// | SubDelReq | | +// |------------->| | +// | | | +// | | SubDelReq | +// | |------------->| +// | | | +// | | SubDelReq | +// | |------------->| +// | | | +// | | | +// | SubDelResp | | +// |<-------------| | +// +//----------------------------------------------------------------------------- + +func TestSubDelReqTwoRetriesNoRespInSubmgr(t *testing.T) { + + xapp.Logger.Info("TestSubDelReTwoRetriesNoRespInSubmgr start") + + // Subs Create + cretrans := xappConn1.handle_xapp_subs_req(t, nil) + crereq, cremsg := e2termConn.handle_e2term_subs_req(t) + e2termConn.handle_e2term_subs_resp(t, crereq, cremsg) + e2SubsId := xappConn1.handle_xapp_subs_resp(t, cretrans) + + // Subs Delete + // Xapp: Send SubsDelReq + deltrans := xappConn1.handle_xapp_subs_del_req(t, nil, e2SubsId) + + // E2t: Receive 1st SubsDelReq + e2termConn.handle_e2term_subs_del_req(t) + + // E2t: Receive 2nd SubsDelReq + e2termConn.handle_e2term_subs_del_req(t) + + // Xapp: Receive SubsDelReq + xappConn1.handle_xapp_subs_del_resp(t, deltrans) + + // Wait that subs is cleaned + mainCtrl.wait_subs_clean(t, e2SubsId, 10) +}