X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=pkg%2Fcontrol%2Fut_stub_xapp_test.go;h=c9c297df3b8a6428aea54f465e3fc6e0e2b706f6;hb=refs%2Fchanges%2F19%2F2419%2F3;hp=a524d9be0ff240cd8c502adc33861cd155eb6e63;hpb=fa0156680b0bd8f7300f49c65d2ee7bedaaa0e44;p=ric-plt%2Fsubmgr.git diff --git a/pkg/control/ut_stub_xapp_test.go b/pkg/control/ut_stub_xapp_test.go index a524d9b..c9c297d 100644 --- a/pkg/control/ut_stub_xapp_test.go +++ b/pkg/control/ut_stub_xapp_test.go @@ -39,11 +39,14 @@ var xapp_e2asnpacker e2ap.E2APPackerIf = e2ap_wrapper.NewAsn1E2Packer() // //----------------------------------------------------------------------------- type xappTransaction struct { - tc *testingXappStub xid string meid *xapp.RMRMeid } +func (trans *xappTransaction) String() string { + return "trans(" + trans.xid + "/" + trans.meid.RanName + ")" +} + type testingXappStub struct { testingRmrStubControl xid_seq uint64 @@ -62,25 +65,16 @@ func createNewXappStub(desc string, rtfile string, port string, stat string) *te //----------------------------------------------------------------------------- // //----------------------------------------------------------------------------- -func (tc *testingXappStub) newXid() string { - var xid string - xid = tc.desc + "_XID_" + strconv.FormatUint(uint64(tc.xid_seq), 10) - tc.xid_seq++ - return xid -} - -//----------------------------------------------------------------------------- -// -//----------------------------------------------------------------------------- -func (tc *testingXappStub) newXappTransaction(xid *string, ranname string) *xappTransaction { +func (tc *testingXappStub) newXappTransaction(xid string, ranname string) *xappTransaction { trans := &xappTransaction{} - trans.tc = tc - if xid == nil { - trans.xid = tc.newXid() + if len(xid) == 0 { + trans.xid = tc.GetDesc() + "_XID_" + strconv.FormatUint(uint64(tc.xid_seq), 10) + tc.xid_seq++ } else { - trans.xid = *xid + trans.xid = xid } trans.meid = &xapp.RMRMeid{RanName: ranname} + xapp.Logger.Info("(%s) New test %s", tc.GetDesc(), trans.String()) return trans } @@ -93,17 +87,17 @@ func (tc *testingXappStub) Consume(params *xapp.RMRParams) (err error) { msg := &RMRParams{params} if params.Mtype == 55555 { - xapp.Logger.Info("(%s) Testing message ignore %s", tc.desc, msg.String()) + xapp.Logger.Info("(%s) Testing message ignore %s", tc.GetDesc(), msg.String()) tc.active = true return } - if strings.Contains(msg.Xid, tc.desc) { - xapp.Logger.Info("(%s) Consume %s", tc.desc, msg.String()) + if strings.Contains(msg.Xid, tc.GetDesc()) { + xapp.Logger.Info("(%s) Consume %s", tc.GetDesc(), msg.String()) tc.IncMsgCnt() tc.rmrConChan <- msg } else { - xapp.Logger.Info("(%s) Ignore %s", tc.desc, msg.String()) + xapp.Logger.Info("(%s) Ignore %s", tc.GetDesc(), msg.String()) } return } @@ -111,55 +105,69 @@ func (tc *testingXappStub) Consume(params *xapp.RMRParams) (err error) { //----------------------------------------------------------------------------- // //----------------------------------------------------------------------------- -func (xappConn *testingXappStub) handle_xapp_subs_req(t *testing.T, oldTrans *xappTransaction) *xappTransaction { - xapp.Logger.Info("(%s) handle_xapp_subs_req", xappConn.desc) +type test_subs_req_params struct { + req *e2ap.E2APSubscriptionRequest +} + +func (p *test_subs_req_params) Init() { + p.req = &e2ap.E2APSubscriptionRequest{} + + p.req.RequestId.Id = 1 + p.req.RequestId.Seq = 0 + p.req.FunctionId = 1 + + p.req.EventTriggerDefinition.InterfaceId.GlobalEnbId.Present = true + p.req.EventTriggerDefinition.InterfaceId.GlobalEnbId.PlmnIdentity.StringPut("310150") + p.req.EventTriggerDefinition.InterfaceId.GlobalEnbId.NodeId.Id = 123 + p.req.EventTriggerDefinition.InterfaceId.GlobalEnbId.NodeId.Bits = e2ap.E2AP_ENBIDHomeBits28 + + // gnb -> enb outgoing + // enb -> gnb incoming + // X2 36423-f40.doc + p.req.EventTriggerDefinition.InterfaceDirection = e2ap.E2AP_InterfaceDirectionIncoming + p.req.EventTriggerDefinition.ProcedureCode = 5 //28 35 + p.req.EventTriggerDefinition.TypeOfMessage = e2ap.E2AP_InitiatingMessage + + p.req.ActionSetups = make([]e2ap.ActionToBeSetupItem, 1) + p.req.ActionSetups[0].ActionId = 0 + p.req.ActionSetups[0].ActionType = e2ap.E2AP_ActionTypeReport + p.req.ActionSetups[0].ActionDefinition.Present = false + //p.req.ActionSetups[index].ActionDefinition.StyleId = 255 + //p.req.ActionSetups[index].ActionDefinition.ParamId = 222 + p.req.ActionSetups[0].SubsequentAction.Present = true + p.req.ActionSetups[0].SubsequentAction.Type = e2ap.E2AP_SubSeqActionTypeContinue + p.req.ActionSetups[0].SubsequentAction.TimetoWait = e2ap.E2AP_TimeToWaitZero + +} + +func (xappConn *testingXappStub) handle_xapp_subs_req(t *testing.T, rparams *test_subs_req_params, oldTrans *xappTransaction) *xappTransaction { + + trans := oldTrans + if oldTrans == nil { + trans = xappConn.newXappTransaction("", "RAN_NAME_1") + } + + xapp.Logger.Info("(%s) handle_xapp_subs_req %s", xappConn.GetDesc(), trans.String()) e2SubsReq := xapp_e2asnpacker.NewPackerSubscriptionRequest() //--------------------------------- // xapp activity: Send Subs Req //--------------------------------- - xapp.Logger.Info("(%s) Send Subs Req", xappConn.desc) + xapp.Logger.Info("(%s) Send Subs Req %s", xappConn.GetDesc(), trans.String()) - req := &e2ap.E2APSubscriptionRequest{} - - req.RequestId.Id = 1 - req.RequestId.Seq = 0 - req.FunctionId = 1 + myparams := rparams - req.EventTriggerDefinition.InterfaceId.GlobalEnbId.Present = true - req.EventTriggerDefinition.InterfaceId.GlobalEnbId.PlmnIdentity.StringPut("310150") - req.EventTriggerDefinition.InterfaceId.GlobalEnbId.NodeId.Id = 123 - req.EventTriggerDefinition.InterfaceId.GlobalEnbId.NodeId.Bits = e2ap.E2AP_ENBIDHomeBits28 + if myparams == nil { + myparams = &test_subs_req_params{} + myparams.Init() + } - // gnb -> enb outgoing - // enb -> gnb incoming - // X2 36423-f40.doc - req.EventTriggerDefinition.InterfaceDirection = e2ap.E2AP_InterfaceDirectionIncoming - req.EventTriggerDefinition.ProcedureCode = 5 //28 35 - req.EventTriggerDefinition.TypeOfMessage = e2ap.E2AP_InitiatingMessage - - req.ActionSetups = make([]e2ap.ActionToBeSetupItem, 1) - req.ActionSetups[0].ActionId = 0 - req.ActionSetups[0].ActionType = e2ap.E2AP_ActionTypeReport - req.ActionSetups[0].ActionDefinition.Present = false - //req.ActionSetups[index].ActionDefinition.StyleId = 255 - //req.ActionSetups[index].ActionDefinition.ParamId = 222 - req.ActionSetups[0].SubsequentAction.Present = true - req.ActionSetups[0].SubsequentAction.Type = e2ap.E2AP_SubSeqActionTypeContinue - req.ActionSetups[0].SubsequentAction.TimetoWait = e2ap.E2AP_TimeToWaitZero - - e2SubsReq.Set(req) - xapp.Logger.Debug("%s", e2SubsReq.String()) - err, packedMsg := e2SubsReq.Pack(nil) + err, packedMsg := e2SubsReq.Pack(myparams.req) if err != nil { - testError(t, "(%s) pack NOK %s", xappConn.desc, err.Error()) + testError(t, "(%s) pack NOK %s %s", xappConn.GetDesc(), trans.String(), err.Error()) return nil } - - var trans *xappTransaction = oldTrans - if trans == nil { - trans = xappConn.newXappTransaction(nil, "RAN_NAME_1") - } + xapp.Logger.Debug("(%s) %s %s", xappConn.GetDesc(), trans.String(), e2SubsReq.String()) params := &RMRParams{&xapp.RMRParams{}} params.Mtype = xapp.RIC_SUB_REQ @@ -171,7 +179,7 @@ func (xappConn *testingXappStub) handle_xapp_subs_req(t *testing.T, oldTrans *xa snderr := xappConn.RmrSend(params) if snderr != nil { - testError(t, "(%s) RMR SEND FAILED: %s", xappConn.desc, snderr.Error()) + testError(t, "(%s) RMR SEND FAILED: %s %s", xappConn.GetDesc(), trans.String(), snderr.Error()) return nil } return trans @@ -180,10 +188,10 @@ func (xappConn *testingXappStub) handle_xapp_subs_req(t *testing.T, oldTrans *xa //----------------------------------------------------------------------------- // //----------------------------------------------------------------------------- -func (xappConn *testingXappStub) handle_xapp_subs_resp(t *testing.T, trans *xappTransaction) int { - xapp.Logger.Info("(%s) handle_xapp_subs_resp", xappConn.desc) +func (xappConn *testingXappStub) handle_xapp_subs_resp(t *testing.T, trans *xappTransaction) uint32 { + xapp.Logger.Info("(%s) handle_xapp_subs_resp", xappConn.GetDesc()) e2SubsResp := xapp_e2asnpacker.NewPackerSubscriptionResponse() - var e2SubsId int + var e2SubsId uint32 //--------------------------------- // xapp activity: Recv Subs Resp @@ -192,42 +200,40 @@ func (xappConn *testingXappStub) handle_xapp_subs_resp(t *testing.T, trans *xapp case msg := <-xappConn.rmrConChan: xappConn.DecMsgCnt() if msg.Mtype != xapp.RICMessageTypes["RIC_SUB_RESP"] { - testError(t, "(%s) Received RIC_SUB_RESP wrong mtype expected %s got %s, error", xappConn.desc, "RIC_SUB_RESP", xapp.RicMessageTypeToName[msg.Mtype]) - return -1 + testError(t, "(%s) Received RIC_SUB_RESP wrong mtype expected %s got %s, error", xappConn.GetDesc(), "RIC_SUB_RESP", xapp.RicMessageTypeToName[msg.Mtype]) + return 0 } else if msg.Xid != trans.xid { - testError(t, "(%s) Received RIC_SUB_RESP wrong xid expected %s got %s, error", xappConn.desc, trans.xid, msg.Xid) - return -1 + testError(t, "(%s) Received RIC_SUB_RESP wrong xid expected %s got %s, error", xappConn.GetDesc(), trans.xid, msg.Xid) + return 0 } else { packedData := &packer.PackedData{} packedData.Buf = msg.Payload - e2SubsId = msg.SubId - unpackerr := e2SubsResp.UnPack(packedData) - - if unpackerr != nil { - testError(t, "(%s) RIC_SUB_RESP unpack failed err: %s", xappConn.desc, unpackerr.Error()) + if msg.SubId > 0 { + e2SubsId = uint32(msg.SubId) + } else { + e2SubsId = 0 } - geterr, resp := e2SubsResp.Get() - if geterr != nil { - testError(t, "(%s) RIC_SUB_RESP get failed err: %s", xappConn.desc, geterr.Error()) + unpackerr, resp := e2SubsResp.UnPack(packedData) + if unpackerr != nil { + testError(t, "(%s) RIC_SUB_RESP unpack failed err: %s", xappConn.GetDesc(), unpackerr.Error()) } - - xapp.Logger.Info("(%s) Recv Subs Resp rmr: xid=%s subid=%d, asn: seqnro=%d", xappConn.desc, msg.Xid, msg.SubId, resp.RequestId.Seq) + xapp.Logger.Info("(%s) Recv Subs Resp rmr: xid=%s subid=%d, asn: seqnro=%d", xappConn.GetDesc(), msg.Xid, msg.SubId, resp.RequestId.Seq) return e2SubsId } case <-time.After(15 * time.Second): - testError(t, "(%s) Not Received RIC_SUB_RESP within 15 secs", xappConn.desc) - return -1 + testError(t, "(%s) Not Received RIC_SUB_RESP within 15 secs", xappConn.GetDesc()) + return 0 } - return -1 + return 0 } //----------------------------------------------------------------------------- // //----------------------------------------------------------------------------- -func (xappConn *testingXappStub) handle_xapp_subs_fail(t *testing.T, trans *xappTransaction) int { - xapp.Logger.Info("(%s) handle_xapp_subs_fail", xappConn.desc) +func (xappConn *testingXappStub) handle_xapp_subs_fail(t *testing.T, trans *xappTransaction) uint32 { + xapp.Logger.Info("(%s) handle_xapp_subs_fail", xappConn.GetDesc()) e2SubsFail := xapp_e2asnpacker.NewPackerSubscriptionFailure() - var e2SubsId int + var e2SubsId uint32 //------------------------------- // xapp activity: Recv Subs Fail @@ -236,76 +242,74 @@ func (xappConn *testingXappStub) handle_xapp_subs_fail(t *testing.T, trans *xapp case msg := <-xappConn.rmrConChan: xappConn.DecMsgCnt() if msg.Mtype != xapp.RICMessageTypes["RIC_SUB_FAILURE"] { - testError(t, "(%s) Received RIC_SUB_FAILURE wrong mtype expected %s got %s, error", xappConn.desc, "RIC_SUB_FAILURE", xapp.RicMessageTypeToName[msg.Mtype]) - return -1 + testError(t, "(%s) Received RIC_SUB_FAILURE wrong mtype expected %s got %s, error", xappConn.GetDesc(), "RIC_SUB_FAILURE", xapp.RicMessageTypeToName[msg.Mtype]) + return 0 } else if msg.Xid != trans.xid { - testError(t, "(%s) Received RIC_SUB_FAILURE wrong xid expected %s got %s, error", xappConn.desc, trans.xid, msg.Xid) - return -1 + testError(t, "(%s) Received RIC_SUB_FAILURE wrong xid expected %s got %s, error", xappConn.GetDesc(), trans.xid, msg.Xid) + return 0 } else { packedData := &packer.PackedData{} packedData.Buf = msg.Payload - e2SubsId = msg.SubId - unpackerr := e2SubsFail.UnPack(packedData) - - if unpackerr != nil { - testError(t, "(%s) RIC_SUB_FAILURE unpack failed err: %s", xappConn.desc, unpackerr.Error()) + if msg.SubId > 0 { + e2SubsId = uint32(msg.SubId) + } else { + e2SubsId = 0 } - geterr, resp := e2SubsFail.Get() - if geterr != nil { - testError(t, "(%s) RIC_SUB_FAILURE get failed err: %s", xappConn.desc, geterr.Error()) + unpackerr, resp := e2SubsFail.UnPack(packedData) + if unpackerr != nil { + testError(t, "(%s) RIC_SUB_FAILURE unpack failed err: %s", xappConn.GetDesc(), unpackerr.Error()) } - - xapp.Logger.Info("(%s) Recv Subs Fail rmr: xid=%s subid=%d, asn: seqnro=%d", xappConn.desc, msg.Xid, msg.SubId, resp.RequestId.Seq) + xapp.Logger.Info("(%s) Recv Subs Fail rmr: xid=%s subid=%d, asn: seqnro=%d", xappConn.GetDesc(), msg.Xid, msg.SubId, resp.RequestId.Seq) return e2SubsId } case <-time.After(15 * time.Second): - testError(t, "(%s) Not Received RIC_SUB_FAILURE within 15 secs", xappConn.desc) - return -1 + testError(t, "(%s) Not Received RIC_SUB_FAILURE within 15 secs", xappConn.GetDesc()) + return 0 } - return -1 + return 0 } //----------------------------------------------------------------------------- // //----------------------------------------------------------------------------- -func (xappConn *testingXappStub) handle_xapp_subs_del_req(t *testing.T, oldTrans *xappTransaction, e2SubsId int) *xappTransaction { - xapp.Logger.Info("(%s) handle_xapp_subs_del_req", xappConn.desc) - e2SubsDelReq := xapp_e2asnpacker.NewPackerSubscriptionDeleteRequest() +func (xappConn *testingXappStub) handle_xapp_subs_del_req(t *testing.T, oldTrans *xappTransaction, e2SubsId uint32) *xappTransaction { + trans := oldTrans + if oldTrans == nil { + trans = xappConn.newXappTransaction("", "RAN_NAME_1") + } + + xapp.Logger.Info("(%s) handle_xapp_subs_del_req %s", xappConn.GetDesc(), trans.String()) + e2SubsDelReq := xapp_e2asnpacker.NewPackerSubscriptionDeleteRequest() //--------------------------------- // xapp activity: Send Subs Del Req //--------------------------------- - xapp.Logger.Info("(%s) Send Subs Del Req", xappConn.desc) + xapp.Logger.Info("(%s) Send Subs Del Req %s", xappConn.GetDesc(), trans.String()) req := &e2ap.E2APSubscriptionDeleteRequest{} req.RequestId.Id = 1 - req.RequestId.Seq = uint32(e2SubsId) + req.RequestId.Seq = e2SubsId req.FunctionId = 1 - e2SubsDelReq.Set(req) - xapp.Logger.Debug("%s", e2SubsDelReq.String()) - err, packedMsg := e2SubsDelReq.Pack(nil) + err, packedMsg := e2SubsDelReq.Pack(req) if err != nil { - testError(t, "(%s) pack NOK %s", xappConn.desc, err.Error()) + testError(t, "(%s) pack NOK %s %s", xappConn.GetDesc(), trans.String(), err.Error()) return nil } - - var trans *xappTransaction = oldTrans - if trans == nil { - trans = xappConn.newXappTransaction(nil, "RAN_NAME_1") - } + xapp.Logger.Debug("(%s) %s %s", xappConn.GetDesc(), trans.String(), e2SubsDelReq.String()) params := &RMRParams{&xapp.RMRParams{}} params.Mtype = xapp.RIC_SUB_DEL_REQ - params.SubId = e2SubsId + params.SubId = int(e2SubsId) params.Payload = packedMsg.Buf params.Meid = trans.meid params.Xid = trans.xid params.Mbuf = nil snderr := xappConn.RmrSend(params) + if snderr != nil { - testError(t, "(%s) RMR SEND FAILED: %s", xappConn.desc, snderr.Error()) + testError(t, "(%s) RMR SEND FAILED: %s %s", xappConn.GetDesc(), trans.String(), snderr.Error()) return nil } return trans @@ -315,7 +319,7 @@ func (xappConn *testingXappStub) handle_xapp_subs_del_req(t *testing.T, oldTrans // //----------------------------------------------------------------------------- func (xappConn *testingXappStub) handle_xapp_subs_del_resp(t *testing.T, trans *xappTransaction) { - xapp.Logger.Info("(%s) handle_xapp_subs_del_resp", xappConn.desc) + xapp.Logger.Info("(%s) handle_xapp_subs_del_resp", xappConn.GetDesc()) e2SubsDelResp := xapp_e2asnpacker.NewPackerSubscriptionDeleteResponse() //--------------------------------- @@ -325,26 +329,22 @@ func (xappConn *testingXappStub) handle_xapp_subs_del_resp(t *testing.T, trans * case msg := <-xappConn.rmrConChan: xappConn.DecMsgCnt() if msg.Mtype != xapp.RICMessageTypes["RIC_SUB_DEL_RESP"] { - testError(t, "(%s) Received RIC_SUB_DEL_RESP wrong mtype expected %s got %s, error", xappConn.desc, "RIC_SUB_DEL_RESP", xapp.RicMessageTypeToName[msg.Mtype]) + testError(t, "(%s) Received RIC_SUB_DEL_RESP wrong mtype expected %s got %s, error", xappConn.GetDesc(), "RIC_SUB_DEL_RESP", xapp.RicMessageTypeToName[msg.Mtype]) return - } else if msg.Xid != trans.xid { - testError(t, "(%s) Received RIC_SUB_DEL_RESP wrong xid expected %s got %s, error", xappConn.desc, trans.xid, msg.Xid) + } else if trans != nil && msg.Xid != trans.xid { + testError(t, "(%s) Received RIC_SUB_DEL_RESP wrong xid expected %s got %s, error", xappConn.GetDesc(), trans.xid, msg.Xid) return } else { packedData := &packer.PackedData{} packedData.Buf = msg.Payload - unpackerr := e2SubsDelResp.UnPack(packedData) + unpackerr, resp := e2SubsDelResp.UnPack(packedData) if unpackerr != nil { - testError(t, "(%s) RIC_SUB_DEL_RESP unpack failed err: %s", xappConn.desc, unpackerr.Error()) - } - geterr, resp := e2SubsDelResp.Get() - if geterr != nil { - testError(t, "(%s) RIC_SUB_DEL_RESP get failed err: %s", xappConn.desc, geterr.Error()) + testError(t, "(%s) RIC_SUB_DEL_RESP unpack failed err: %s", xappConn.GetDesc(), unpackerr.Error()) } - xapp.Logger.Info("(%s) Recv Subs Del Resp rmr: xid=%s subid=%d, asn: seqnro=%d", xappConn.desc, msg.Xid, msg.SubId, resp.RequestId.Seq) + xapp.Logger.Info("(%s) Recv Subs Del Resp rmr: xid=%s subid=%d, asn: seqnro=%d", xappConn.GetDesc(), msg.Xid, msg.SubId, resp.RequestId.Seq) return } case <-time.After(15 * time.Second): - testError(t, "(%s) Not Received RIC_SUB_DEL_RESP within 15 secs", xappConn.desc) + testError(t, "(%s) Not Received RIC_SUB_DEL_RESP within 15 secs", xappConn.GetDesc()) } }