X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=pkg%2Fcontrol%2Fmessaging_test.go;h=730856389b6863efb566c57eda2021b712af0fe4;hb=refs%2Fchanges%2F29%2F2129%2F4;hp=e5d426b27e6b1a929fbab6f6d5d8565e54fc28d4;hpb=ff8dccd02d76eebfccc0b509ce0b42a2c1760e12;p=ric-plt%2Fsubmgr.git diff --git a/pkg/control/messaging_test.go b/pkg/control/messaging_test.go index e5d426b..7308563 100644 --- a/pkg/control/messaging_test.go +++ b/pkg/control/messaging_test.go @@ -34,11 +34,14 @@ import ( var e2asnpacker e2ap.E2APPackerIf = e2ap_wrapper.NewAsn1E2Packer() +//----------------------------------------------------------------------------- +// +//----------------------------------------------------------------------------- func createSubsReq() *e2ap.E2APSubscriptionRequest { req := &e2ap.E2APSubscriptionRequest{} req.RequestId.Id = 1 - req.RequestId.Seq = 22 + req.RequestId.Seq = 0 req.FunctionId = 1 req.EventTriggerDefinition.InterfaceId.GlobalEnbId.Present = true @@ -66,6 +69,9 @@ func createSubsReq() *e2ap.E2APSubscriptionRequest { return req } +//----------------------------------------------------------------------------- +// +//----------------------------------------------------------------------------- func createSubsResp(req *e2ap.E2APSubscriptionRequest) *e2ap.E2APSubscriptionResponse { resp := &e2ap.E2APSubscriptionResponse{} @@ -91,70 +97,79 @@ func createSubsResp(req *e2ap.E2APSubscriptionRequest) *e2ap.E2APSubscriptionRes } //----------------------------------------------------------------------------- -// TestSubRequestSubResponseOk // -// +-------+ +---------+ +---------+ -// | xapp | | submgr | | e2term | -// +-------+ +---------+ +---------+ -// | | | -// | SubReq | | -// |------------->| | -// | | | -// | | SubReq | -// | |------------->| -// | | | -// | | SubResp | -// | |<-------------| -// | | | -// | SubResp | | -// |<-------------| | -// | | | +//----------------------------------------------------------------------------- +func createSubsDelReq(e2SubsId uint32) *e2ap.E2APSubscriptionDeleteRequest { + req := &e2ap.E2APSubscriptionDeleteRequest{} + req.RequestId.Id = 1 + req.RequestId.Seq = e2SubsId + req.FunctionId = 1 + return req +} + +//----------------------------------------------------------------------------- // //----------------------------------------------------------------------------- -func TestSubRequestSubResponseOk(t *testing.T) { +func createSubsDelResp(req *e2ap.E2APSubscriptionDeleteRequest) *e2ap.E2APSubscriptionDeleteResponse { + resp := &e2ap.E2APSubscriptionDeleteResponse{} + resp.RequestId.Id = req.RequestId.Id + resp.RequestId.Seq = req.RequestId.Seq + resp.FunctionId = req.FunctionId + return resp +} - xapp.Logger.Info("TestSimple start") +//----------------------------------------------------------------------------- +// +//----------------------------------------------------------------------------- +func handle_xapp_subs_req(t *testing.T) { + xapp.Logger.Info("handle_xapp_subs_req start") e2SubsReq := e2asnpacker.NewPackerSubscriptionRequest() - e2SubsResp := e2asnpacker.NewPackerSubscriptionResponse() //--------------------------------- - // xapp activity + // xapp activity: Send Subs Req //--------------------------------- - select { - case <-time.After(5 * time.Second): - req := createSubsReq() - e2SubsReq.Set(req) - xapp.Logger.Debug("%s", e2SubsReq.String()) - err, packedMsg := e2SubsReq.Pack(nil) - if err != nil { - testError(t, "(xappConn) pack NOK %s", err.Error()) - } else { - xapp.Logger.Info("(xappConn) pack OK") - } + //select { + //case <-time.After(1 * time.Second): + xapp.Logger.Info("(xappConn) Send Subs Req") + req := createSubsReq() + e2SubsReq.Set(req) + xapp.Logger.Debug("%s", e2SubsReq.String()) + err, packedMsg := e2SubsReq.Pack(nil) + if err != nil { + testError(t, "(xappConn) pack NOK %s", err.Error()) + } - params := &xapp.RMRParams{} - params.Mtype = xapp.RIC_SUB_REQ - params.SubId = -1 - params.Payload = packedMsg.Buf - params.Meid = &xapp.RMRMeid{RanName: "RAN_NAME_1"} - params.Xid = "XID_1" - params.Mbuf = nil - - snderr := xappConn.RmrSend(params) - if snderr != nil { - testError(t, "(xappConn) RMR SEND FAILED: %s", snderr.Error()) - } + params := &xapp.RMRParams{} + params.Mtype = xapp.RIC_SUB_REQ + params.SubId = -1 + params.Payload = packedMsg.Buf + params.Meid = &xapp.RMRMeid{RanName: "RAN_NAME_1"} + params.Xid = "XID_1" + params.Mbuf = nil + + snderr := xappConn.RmrSend(params) + if snderr != nil { + testError(t, "(xappConn) RMR SEND FAILED: %s", snderr.Error()) } + //} +} + +//----------------------------------------------------------------------------- +// +//----------------------------------------------------------------------------- +func handle_e2term_subs_req(t *testing.T) (*e2ap.E2APSubscriptionRequest, *xapp.RMRParams) { + xapp.Logger.Info("handle_e2term_subs_req start") + e2SubsReq := e2asnpacker.NewPackerSubscriptionRequest() //--------------------------------- - // e2term activity + // e2term activity: Recv Subs Req //--------------------------------- select { case msg := <-e2termConn.rmrConChan: if msg.Mtype != xapp.RICMessageTypes["RIC_SUB_REQ"] { testError(t, "(e2termConn) Received non RIC_SUB_REQ message") } else { - + xapp.Logger.Info("(e2termConn) Recv Subs Req") packedData := &packer.PackedData{} packedData.Buf = msg.Payload unpackerr := e2SubsReq.UnPack(packedData) @@ -165,47 +180,72 @@ func TestSubRequestSubResponseOk(t *testing.T) { if geterr != nil { testError(t, "(e2termConn) RIC_SUB_REQ get failed err: %s", geterr.Error()) } - - resp := createSubsResp(req) - e2SubsResp.Set(resp) - xapp.Logger.Debug("%s", e2SubsResp.String()) - packerr, packedMsg := e2SubsResp.Pack(nil) - if packerr != nil { - testError(t, "(e2termConn) pack NOK %s", packerr.Error()) - } else { - xapp.Logger.Info("(e2termConn) pack OK") - } - - params := &xapp.RMRParams{} - params.Mtype = xapp.RIC_SUB_RESP - params.SubId = msg.SubId - params.Payload = packedMsg.Buf - params.Meid = msg.Meid - params.Xid = msg.Xid - params.Mbuf = nil - - snderr := e2termConn.RmrSend(params) - if snderr != nil { - testError(t, "(e2termConn) RMR SEND FAILED: %s", snderr.Error()) - } - + return req, msg } case <-time.After(15 * time.Second): testError(t, "(e2termConn) Not Received RIC_SUB_REQ within 15 secs") } + return nil, nil +} + +func handle_e2term_subs_resp(t *testing.T, req *e2ap.E2APSubscriptionRequest, msg *xapp.RMRParams) { + xapp.Logger.Info("handle_e2term_subs_resp start") + e2SubsResp := e2asnpacker.NewPackerSubscriptionResponse() + + //--------------------------------- + // e2term activity: Send Subs Resp + //--------------------------------- + xapp.Logger.Info("(e2termConn) Send Subs Resp") + resp := createSubsResp(req) + e2SubsResp.Set(resp) + xapp.Logger.Debug("%s", e2SubsResp.String()) + packerr, packedMsg := e2SubsResp.Pack(nil) + if packerr != nil { + testError(t, "(e2termConn) pack NOK %s", packerr.Error()) + } + + params := &xapp.RMRParams{} + params.Mtype = xapp.RIC_SUB_RESP + params.SubId = msg.SubId + params.Payload = packedMsg.Buf + params.Meid = msg.Meid + params.Xid = msg.Xid + params.Mbuf = nil + + snderr := e2termConn.RmrSend(params) + if snderr != nil { + testError(t, "(e2termConn) RMR SEND FAILED: %s", snderr.Error()) + } +} + +func handle_e2term_subs_reqandresp(t *testing.T) { + req, msg := handle_e2term_subs_req(t) + handle_e2term_subs_resp(t, req, msg) +} + +//----------------------------------------------------------------------------- +// +//----------------------------------------------------------------------------- +func handle_xapp_subs_resp(t *testing.T) int { + xapp.Logger.Info("handle_xapp_subs_resp start") + e2SubsResp := e2asnpacker.NewPackerSubscriptionResponse() + var e2SubsId int //--------------------------------- - // xapp activity + // xapp activity: Recv Subs Resp //--------------------------------- select { case msg := <-xappConn.rmrConChan: if msg.Mtype != xapp.RICMessageTypes["RIC_SUB_RESP"] { testError(t, "(xappConn) Received non RIC_SUB_RESP message") } else { + xapp.Logger.Info("(xappConn) Recv Subs Resp") packedData := &packer.PackedData{} packedData.Buf = msg.Payload + e2SubsId = msg.SubId unpackerr := e2SubsResp.UnPack(packedData) + if unpackerr != nil { testError(t, "(xappConn) RIC_SUB_RESP unpack failed err: %s", unpackerr.Error()) } @@ -218,5 +258,305 @@ func TestSubRequestSubResponseOk(t *testing.T) { case <-time.After(15 * time.Second): testError(t, "(xappConn) Not Received RIC_SUB_RESP within 15 secs") } + return e2SubsId +} + +//----------------------------------------------------------------------------- +// +//----------------------------------------------------------------------------- +func handle_xapp_subs_del_req(t *testing.T, e2SubsId int) { + xapp.Logger.Info("handle_xapp_subs_del_req start") + e2SubsDelReq := e2asnpacker.NewPackerSubscriptionDeleteRequest() + + //--------------------------------- + // xapp activity: Send Subs Del Req + //--------------------------------- + //select { + //case <-time.After(1 * time.Second): + xapp.Logger.Info("(xappConn) Send Subs Del Req") + req := createSubsDelReq(uint32(e2SubsId)) + e2SubsDelReq.Set(req) + xapp.Logger.Debug("%s", e2SubsDelReq.String()) + err, packedMsg := e2SubsDelReq.Pack(nil) + if err != nil { + testError(t, "(xappConn) pack NOK %s", err.Error()) + } + + params := &xapp.RMRParams{} + params.Mtype = xapp.RIC_SUB_DEL_REQ + params.SubId = e2SubsId + params.Payload = packedMsg.Buf + params.Meid = &xapp.RMRMeid{RanName: "RAN_NAME_1"} + params.Xid = "XID_1" + params.Mbuf = nil + + snderr := xappConn.RmrSend(params) + if snderr != nil { + testError(t, "(xappConn) RMR SEND FAILED: %s", snderr.Error()) + } + //} +} + +//----------------------------------------------------------------------------- +// +//----------------------------------------------------------------------------- +func handle_e2term_subs_del_req(t *testing.T) (*e2ap.E2APSubscriptionDeleteRequest, *xapp.RMRParams) { + xapp.Logger.Info("handle_e2term_subs_del_req start") + e2SubsDelReq := e2asnpacker.NewPackerSubscriptionDeleteRequest() + + //--------------------------------- + // e2term activity: Recv Subs Del Req + //--------------------------------- + select { + case msg := <-e2termConn.rmrConChan: + if msg.Mtype != xapp.RICMessageTypes["RIC_SUB_DEL_REQ"] { + testError(t, "(e2termConn) Received non RIC_SUB_DEL_REQ message") + } else { + xapp.Logger.Info("(e2termConn) Recv Subs Del Req") + + packedData := &packer.PackedData{} + packedData.Buf = msg.Payload + unpackerr := e2SubsDelReq.UnPack(packedData) + if unpackerr != nil { + testError(t, "(e2termConn) RIC_SUB_DEL_REQ unpack failed err: %s", unpackerr.Error()) + } + geterr, req := e2SubsDelReq.Get() + if geterr != nil { + testError(t, "(e2termConn) RIC_SUB_DEL_REQ get failed err: %s", geterr.Error()) + } + return req, msg + } + case <-time.After(15 * time.Second): + testError(t, "(e2termConn) Not Received RIC_SUB_DEL_REQ within 15 secs") + } + return nil, nil +} + +func handle_e2term_subs_del_resp(t *testing.T, req *e2ap.E2APSubscriptionDeleteRequest, msg *xapp.RMRParams) { + xapp.Logger.Info("handle_e2term_subs_del_resp start") + e2SubsDelResp := e2asnpacker.NewPackerSubscriptionDeleteResponse() + + //--------------------------------- + // e2term activity: Send Subs Del Resp + //--------------------------------- + xapp.Logger.Info("(e2termConn) Send Subs Del Resp") + resp := createSubsDelResp(req) + e2SubsDelResp.Set(resp) + xapp.Logger.Debug("%s", e2SubsDelResp.String()) + packerr, packedMsg := e2SubsDelResp.Pack(nil) + if packerr != nil { + testError(t, "(e2termConn) pack NOK %s", packerr.Error()) + } + + params := &xapp.RMRParams{} + params.Mtype = xapp.RIC_SUB_DEL_RESP + params.SubId = msg.SubId + params.Payload = packedMsg.Buf + params.Meid = msg.Meid + params.Xid = msg.Xid + params.Mbuf = nil + + snderr := e2termConn.RmrSend(params) + if snderr != nil { + testError(t, "(e2termConn) RMR SEND FAILED: %s", snderr.Error()) + } + +} + +func handle_e2term_subs_del_reqandresp(t *testing.T) { + req, msg := handle_e2term_subs_del_req(t) + handle_e2term_subs_del_resp(t, req, msg) +} + +//----------------------------------------------------------------------------- +// +//----------------------------------------------------------------------------- +func handle_xapp_subs_del_resp(t *testing.T) { + xapp.Logger.Info("handle_xapp_subs_del_resp start") + e2SubsDelResp := e2asnpacker.NewPackerSubscriptionDeleteResponse() + + //--------------------------------- + // xapp activity: Recv Subs Del Resp + //--------------------------------- + select { + case msg := <-xappConn.rmrConChan: + if msg.Mtype != xapp.RICMessageTypes["RIC_SUB_DEL_RESP"] { + testError(t, "(xappConn) Received non RIC_SUB_DEL_RESP message") + } else { + xapp.Logger.Info("(xappConn) Recv Subs Del Resp") + + packedData := &packer.PackedData{} + packedData.Buf = msg.Payload + unpackerr := e2SubsDelResp.UnPack(packedData) + if unpackerr != nil { + testError(t, "(xappConn) RIC_SUB_DEL_RESP unpack failed err: %s", unpackerr.Error()) + } + geterr, _ := e2SubsDelResp.Get() + if geterr != nil { + testError(t, "(xappConn) RIC_SUB_DEL_RESP get failed err: %s", geterr.Error()) + } + + } + case <-time.After(15 * time.Second): + testError(t, "(xappConn) Not Received RIC_SUB_DEL_RESP within 15 secs") + } +} + +//----------------------------------------------------------------------------- +// +//----------------------------------------------------------------------------- +func handle_wait_subs_clean(t *testing.T, e2SubsId int) bool { + xapp.Logger.Info("handle_wait_subs_clean start") + if mainCtrl.wait_subs_clean(e2SubsId, 10) == false { + testError(t, "(general) no clean within 10 secs") + return false + } + return true +} + +//----------------------------------------------------------------------------- +// TestSubReqAndSubDelOk +// +// stub stub +// +-------+ +---------+ +---------+ +// | xapp | | submgr | | e2term | +// +-------+ +---------+ +---------+ +// | | | +// | SubReq | | +// |------------->| | +// | | | +// | | SubReq | +// | |------------->| +// | | | +// | | SubResp | +// | |<-------------| +// | | | +// | SubResp | | +// |<-------------| | +// | | | +// | | | +// | SubDelReq | | +// |------------->| | +// | | | +// | | SubDelReq | +// | |------------->| +// | | | +// | | SubDelResp | +// | |<-------------| +// | | | +// | SubDelResp | | +// |<-------------| | +// +//----------------------------------------------------------------------------- +func TestSubReqAndSubDelOk(t *testing.T) { + xapp.Logger.Info("TestSubReqAndSubDelOk start") + + handle_xapp_subs_req(t) + handle_e2term_subs_reqandresp(t) + e2SubsId := handle_xapp_subs_resp(t) + + handle_xapp_subs_del_req(t, e2SubsId) + handle_e2term_subs_del_reqandresp(t) + handle_xapp_subs_del_resp(t) + + //Wait that subs is cleaned + handle_wait_subs_clean(t, e2SubsId) +} + +//----------------------------------------------------------------------------- +// TestSubReqRetransmission +// +// stub stub +// +-------+ +---------+ +---------+ +// | xapp | | submgr | | e2term | +// +-------+ +---------+ +---------+ +// | | | +// | SubReq | | +// |------------->| | +// | | | +// | | SubReq | +// | |------------->| +// | | | +// | SubReq | | +// | (retrans) | | +// |------------->| | +// | | | +// | | SubResp | +// | |<-------------| +// | | | +// | SubResp | | +// |<-------------| | +// | | | +// | [SUBS DELETE] | +// | | | +// +//----------------------------------------------------------------------------- +func TestSubReqRetransmission(t *testing.T) { + xapp.Logger.Info("TestSubReqRetransmission start") + + //Subs Create + handle_xapp_subs_req(t) + req, msg := handle_e2term_subs_req(t) + handle_xapp_subs_req(t) + + handle_e2term_subs_resp(t, req, msg) + + e2SubsId := handle_xapp_subs_resp(t) + + //Subs Delete + handle_xapp_subs_del_req(t, e2SubsId) + handle_e2term_subs_del_reqandresp(t) + handle_xapp_subs_del_resp(t) + + //Wait that subs is cleaned + handle_wait_subs_clean(t, e2SubsId) +} + +//----------------------------------------------------------------------------- +// TestSubDelReqRetransmission +// +// stub stub +// +-------+ +---------+ +---------+ +// | xapp | | submgr | | e2term | +// +-------+ +---------+ +---------+ +// | | | +// | [SUBS CREATE] | +// | | | +// | | | +// | SubDelReq | | +// |------------->| | +// | | | +// | | SubDelReq | +// | |------------->| +// | | | +// | SubDelReq | | +// |------------->| | +// | | | +// | | SubDelResp | +// | |<-------------| +// | | | +// | SubDelResp | | +// |<-------------| | +// +//----------------------------------------------------------------------------- +func TestSubDelReqRetransmission(t *testing.T) { + xapp.Logger.Info("TestSubDelReqRetransmission start") + + //Subs Create + handle_xapp_subs_req(t) + handle_e2term_subs_reqandresp(t) + e2SubsId := handle_xapp_subs_resp(t) + + //Subs Delete + handle_xapp_subs_del_req(t, e2SubsId) + req, msg := handle_e2term_subs_del_req(t) + + <-time.After(2 * time.Second) + + handle_xapp_subs_del_req(t, e2SubsId) + + handle_e2term_subs_del_resp(t, req, msg) + //Wait that subs is cleaned + handle_wait_subs_clean(t, e2SubsId) }