| /* |
| ================================================================================== |
| Copyright (c) 2019 AT&T Intellectual Property. |
| Copyright (c) 2019 Nokia |
| |
| Licensed under the Apache License, Version 2.0 (the "License"); |
| you may not use this file except in compliance with the License. |
| You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, software |
| distributed under the License is distributed on an "AS IS" BASIS, |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| See the License for the specific language governing permissions and |
| limitations under the License. |
| ================================================================================== |
| */ |
| |
| package teststube2ap |
| |
| import ( |
| "gerrit.o-ran-sc.org/r/ric-plt/e2ap/pkg/e2ap" |
| "gerrit.o-ran-sc.org/r/ric-plt/e2ap/pkg/e2ap_wrapper" |
| "gerrit.o-ran-sc.org/r/ric-plt/submgr/pkg/teststub" |
| "gerrit.o-ran-sc.org/r/ric-plt/submgr/pkg/xapptweaks" |
| "gerrit.o-ran-sc.org/r/ric-plt/xapp-frame/pkg/xapp" |
| "strconv" |
| "testing" |
| ) |
| |
| //----------------------------------------------------------------------------- |
| // |
| //----------------------------------------------------------------------------- |
| var e2asnpacker e2ap.E2APPackerIf = e2ap_wrapper.NewAsn1E2Packer() |
| |
| //----------------------------------------------------------------------------- |
| // |
| //----------------------------------------------------------------------------- |
| type RmrTransactionId struct { |
| xid string |
| meid *xapp.RMRMeid |
| } |
| |
| func (trans *RmrTransactionId) String() string { |
| return "trans(" + trans.xid + "/" + trans.meid.RanName + ")" |
| } |
| |
| type E2Stub struct { |
| teststub.RmrStubControl |
| xid_seq uint64 |
| } |
| |
| //----------------------------------------------------------------------------- |
| // |
| //----------------------------------------------------------------------------- |
| func CreateNewE2Stub(desc string, rtfile string, port string, stat string, mtypeseed int) *E2Stub { |
| tc := &E2Stub{} |
| tc.RmrStubControl.Init(desc, rtfile, port, stat, mtypeseed) |
| tc.xid_seq = 1 |
| tc.SetCheckXid(true) |
| return tc |
| } |
| |
| //----------------------------------------------------------------------------- |
| // |
| //----------------------------------------------------------------------------- |
| func CreateNewE2termStub(desc string, rtfile string, port string, stat string, mtypeseed int) *E2Stub { |
| tc := &E2Stub{} |
| tc.RmrStubControl.Init(desc, rtfile, port, stat, mtypeseed) |
| tc.xid_seq = 1 |
| tc.SetCheckXid(false) |
| return tc |
| } |
| |
| //----------------------------------------------------------------------------- |
| // |
| //----------------------------------------------------------------------------- |
| func (tc *E2Stub) NewRmrTransactionId(xid string, ranname string) *RmrTransactionId { |
| trans := &RmrTransactionId{} |
| if len(xid) == 0 { |
| trans.xid = tc.GetDesc() + "_XID_" + strconv.FormatUint(uint64(tc.xid_seq), 10) |
| tc.xid_seq++ |
| } else { |
| trans.xid = xid |
| } |
| trans.meid = &xapp.RMRMeid{RanName: ranname} |
| tc.Logger.Info("New test %s", trans.String()) |
| return trans |
| } |
| |
| //----------------------------------------------------------------------------- |
| // |
| //----------------------------------------------------------------------------- |
| type E2StubSubsReqParams struct { |
| Req *e2ap.E2APSubscriptionRequest |
| } |
| |
| func (p *E2StubSubsReqParams) Init() { |
| p.Req = &e2ap.E2APSubscriptionRequest{} |
| |
| p.Req.RequestId.Id = 1 |
| p.Req.RequestId.InstanceId = 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].RicActionDefinitionPresent = true |
| p.Req.ActionSetups[0].ActionDefinitionChoice.ActionDefinitionFormat1Present = false |
| p.Req.ActionSetups[0].ActionDefinitionChoice.ActionDefinitionFormat2Present = true |
| |
| // 1..15 |
| for index2 := 0; index2 < 1; index2++ { |
| ranUEgroupItem := e2ap.RANueGroupItem{} |
| // 1..255 |
| for index2 := 0; index2 < 1; index2++ { |
| ranUEGroupDefItem := e2ap.RANueGroupDefItem{} |
| ranUEGroupDefItem.RanParameterID = 22 |
| ranUEGroupDefItem.RanParameterTest = e2ap.RANParameterTest_equal |
| ranUEGroupDefItem.RanParameterValue.ValueIntPresent = true |
| ranUEGroupDefItem.RanParameterValue.ValueInt = 100 |
| ranUEgroupItem.RanUEgroupDefinition.RanUEGroupDefItems = append(ranUEgroupItem.RanUEgroupDefinition.RanUEGroupDefItems, ranUEGroupDefItem) |
| } |
| // 1..255 |
| for index3 := 0; index3 < 1; index3++ { |
| ranParameterItem := e2ap.RANParameterItem{} |
| ranParameterItem.RanParameterID = 33 |
| ranParameterItem.RanParameterValue.ValueIntPresent = true |
| ranParameterItem.RanParameterValue.ValueInt = 100 |
| ranUEgroupItem.RanPolicy.RanParameterItems = append(ranUEgroupItem.RanPolicy.RanParameterItems, ranParameterItem) |
| } |
| ranUEgroupItem.RanUEgroupID = 2 |
| p.Req.ActionSetups[0].ActionDefinitionChoice.ActionDefinitionFormat2.RanUEgroupItems = |
| append(p.Req.ActionSetups[0].ActionDefinitionChoice.ActionDefinitionFormat2.RanUEgroupItems, ranUEgroupItem) |
| } |
| 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 |
| } |
| |
| //----------------------------------------------------------------------------- |
| // |
| //----------------------------------------------------------------------------- |
| |
| type E2StubSubsFailParams struct { |
| Req *e2ap.E2APSubscriptionRequest |
| Fail *e2ap.E2APSubscriptionFailure |
| } |
| |
| func (p *E2StubSubsFailParams) Set(req *e2ap.E2APSubscriptionRequest) { |
| p.Req = req |
| |
| p.Fail = &e2ap.E2APSubscriptionFailure{} |
| p.Fail.RequestId.Id = p.Req.RequestId.Id |
| p.Fail.RequestId.InstanceId = p.Req.RequestId.InstanceId |
| p.Fail.FunctionId = p.Req.FunctionId |
| p.Fail.ActionNotAdmittedList.Items = make([]e2ap.ActionNotAdmittedItem, len(p.Req.ActionSetups)) |
| for index := int(0); index < len(p.Fail.ActionNotAdmittedList.Items); index++ { |
| p.Fail.ActionNotAdmittedList.Items[index].ActionId = p.Req.ActionSetups[index].ActionId |
| p.SetCauseVal(index, 5, 1) |
| } |
| } |
| |
| func (p *E2StubSubsFailParams) SetCauseVal(ind int, content uint8, causeval uint8) { |
| |
| if ind < 0 { |
| for index := int(0); index < len(p.Fail.ActionNotAdmittedList.Items); index++ { |
| p.Fail.ActionNotAdmittedList.Items[index].Cause.Content = content |
| p.Fail.ActionNotAdmittedList.Items[index].Cause.CauseVal = causeval |
| } |
| return |
| } |
| p.Fail.ActionNotAdmittedList.Items[ind].Cause.Content = content |
| p.Fail.ActionNotAdmittedList.Items[ind].Cause.CauseVal = causeval |
| } |
| |
| //----------------------------------------------------------------------------- |
| // |
| //----------------------------------------------------------------------------- |
| |
| func (tc *E2Stub) SendSubsReq(t *testing.T, rparams *E2StubSubsReqParams, oldTrans *RmrTransactionId) *RmrTransactionId { |
| |
| trans := oldTrans |
| if oldTrans == nil { |
| trans = tc.NewRmrTransactionId("", "RAN_NAME_1") |
| } |
| |
| tc.Logger.Info("SendSubsReq %s", trans.String()) |
| e2SubsReq := e2asnpacker.NewPackerSubscriptionRequest() |
| |
| //--------------------------------- |
| // xapp activity: Send Subs Req |
| //--------------------------------- |
| myparams := rparams |
| |
| if myparams == nil { |
| myparams = &E2StubSubsReqParams{} |
| myparams.Init() |
| } |
| |
| err, packedMsg := e2SubsReq.Pack(myparams.Req) |
| if err != nil { |
| tc.TestError(t, "pack NOK %s %s", trans.String(), err.Error()) |
| return nil |
| } |
| tc.Logger.Debug("%s %s", trans.String(), e2SubsReq.String()) |
| |
| params := xapptweaks.NewParams(nil) |
| params.Mtype = xapp.RIC_SUB_REQ |
| params.SubId = -1 |
| params.Payload = packedMsg.Buf |
| params.PayloadLen = len(packedMsg.Buf) |
| params.Meid = trans.meid |
| params.Xid = trans.xid |
| params.Mbuf = nil |
| |
| tc.Logger.Info("SEND SUB REQ: %s", params.String()) |
| snderr := tc.RmrSend(params) |
| if snderr != nil { |
| tc.TestError(t, "RMR SEND FAILED: %s %s", trans.String(), snderr.Error()) |
| return nil |
| } |
| return trans |
| } |
| |
| //----------------------------------------------------------------------------- |
| // |
| //----------------------------------------------------------------------------- |
| func (tc *E2Stub) RecvSubsReq(t *testing.T) (*e2ap.E2APSubscriptionRequest, *xapptweaks.RMRParams) { |
| tc.Logger.Info("RecvSubsReq") |
| e2SubsReq := e2asnpacker.NewPackerSubscriptionRequest() |
| |
| //--------------------------------- |
| // e2term activity: Recv Subs Req |
| //--------------------------------- |
| msg := tc.WaitMsg(15) |
| if msg != nil { |
| if msg.Mtype != xapp.RICMessageTypes["RIC_SUB_REQ"] { |
| tc.TestError(t, "Received wrong mtype expected %s got %s, error", "RIC_SUB_REQ", xapp.RicMessageTypeToName[msg.Mtype]) |
| } else { |
| tc.Logger.Info("Recv Subs Req") |
| packedData := &e2ap.PackedData{} |
| packedData.Buf = msg.Payload |
| unpackerr, req := e2SubsReq.UnPack(packedData) |
| if unpackerr != nil { |
| tc.TestError(t, "RIC_SUB_REQ unpack failed err: %s", unpackerr.Error()) |
| } |
| return req, msg |
| } |
| } else { |
| tc.TestError(t, "Not Received msg within %d secs", 15) |
| } |
| |
| return nil, nil |
| } |
| |
| //----------------------------------------------------------------------------- |
| // |
| //----------------------------------------------------------------------------- |
| func (tc *E2Stub) SendSubsResp(t *testing.T, req *e2ap.E2APSubscriptionRequest, msg *xapptweaks.RMRParams) { |
| tc.Logger.Info("SendSubsResp") |
| e2SubsResp := e2asnpacker.NewPackerSubscriptionResponse() |
| |
| //--------------------------------- |
| // e2term activity: Send Subs Resp |
| //--------------------------------- |
| resp := &e2ap.E2APSubscriptionResponse{} |
| |
| resp.RequestId.Id = req.RequestId.Id |
| resp.RequestId.InstanceId = req.RequestId.InstanceId |
| resp.FunctionId = req.FunctionId |
| |
| resp.ActionAdmittedList.Items = make([]e2ap.ActionAdmittedItem, len(req.ActionSetups)) |
| for index := int(0); index < len(req.ActionSetups); index++ { |
| resp.ActionAdmittedList.Items[index].ActionId = req.ActionSetups[index].ActionId |
| } |
| |
| for index := uint64(0); index < 1; index++ { |
| item := e2ap.ActionNotAdmittedItem{} |
| item.ActionId = index |
| item.Cause.Content = 1 |
| item.Cause.CauseVal = 1 |
| resp.ActionNotAdmittedList.Items = append(resp.ActionNotAdmittedList.Items, item) |
| } |
| |
| packerr, packedMsg := e2SubsResp.Pack(resp) |
| if packerr != nil { |
| tc.TestError(t, "pack NOK %s", packerr.Error()) |
| } |
| tc.Logger.Debug("%s", e2SubsResp.String()) |
| |
| params := xapptweaks.NewParams(nil) |
| params.Mtype = xapp.RIC_SUB_RESP |
| //params.SubId = msg.SubId |
| params.SubId = -1 |
| params.Payload = packedMsg.Buf |
| params.PayloadLen = len(packedMsg.Buf) |
| params.Meid = msg.Meid |
| //params.Xid = msg.Xid |
| params.Mbuf = nil |
| |
| tc.Logger.Info("SEND SUB RESP: %s", params.String()) |
| snderr := tc.RmrSend(params) |
| if snderr != nil { |
| tc.TestError(t, "RMR SEND FAILED: %s", snderr.Error()) |
| } |
| } |
| |
| //----------------------------------------------------------------------------- |
| // |
| //----------------------------------------------------------------------------- |
| func (tc *E2Stub) RecvSubsResp(t *testing.T, trans *RmrTransactionId) uint32 { |
| tc.Logger.Info("RecvSubsResp") |
| e2SubsResp := e2asnpacker.NewPackerSubscriptionResponse() |
| var e2SubsId uint32 |
| |
| //--------------------------------- |
| // xapp activity: Recv Subs Resp |
| //--------------------------------- |
| msg := tc.WaitMsg(15) |
| if msg != nil { |
| if msg.Mtype != xapp.RICMessageTypes["RIC_SUB_RESP"] { |
| tc.TestError(t, "Received RIC_SUB_RESP wrong mtype expected %s got %s, error", "RIC_SUB_RESP", xapp.RicMessageTypeToName[msg.Mtype]) |
| return 0 |
| } else if msg.Xid != trans.xid { |
| tc.TestError(t, "Received RIC_SUB_RESP wrong xid expected %s got %s, error", trans.xid, msg.Xid) |
| return 0 |
| } else { |
| packedData := &e2ap.PackedData{} |
| packedData.Buf = msg.Payload |
| if msg.SubId > 0 { |
| e2SubsId = uint32(msg.SubId) |
| } else { |
| e2SubsId = 0 |
| } |
| unpackerr, resp := e2SubsResp.UnPack(packedData) |
| if unpackerr != nil { |
| tc.TestError(t, "RIC_SUB_RESP unpack failed err: %s", unpackerr.Error()) |
| } |
| tc.Logger.Info("Recv Subs Resp rmr: xid=%s subid=%d, asn: instanceid=%d", msg.Xid, msg.SubId, resp.RequestId.InstanceId) |
| return e2SubsId |
| } |
| } else { |
| tc.TestError(t, "Not Received msg within %d secs", 15) |
| } |
| return 0 |
| } |
| |
| //----------------------------------------------------------------------------- |
| // |
| //----------------------------------------------------------------------------- |
| |
| func (tc *E2Stub) SendSubsFail(t *testing.T, fparams *E2StubSubsFailParams, msg *xapptweaks.RMRParams) { |
| tc.Logger.Info("SendSubsFail") |
| e2SubsFail := e2asnpacker.NewPackerSubscriptionFailure() |
| |
| //--------------------------------- |
| // e2term activity: Send Subs Fail |
| //--------------------------------- |
| packerr, packedMsg := e2SubsFail.Pack(fparams.Fail) |
| if packerr != nil { |
| tc.TestError(t, "pack NOK %s", packerr.Error()) |
| } |
| tc.Logger.Debug("%s", e2SubsFail.String()) |
| |
| params := xapptweaks.NewParams(nil) |
| params.Mtype = xapp.RIC_SUB_FAILURE |
| params.SubId = msg.SubId |
| params.Payload = packedMsg.Buf |
| params.PayloadLen = len(packedMsg.Buf) |
| params.Meid = msg.Meid |
| params.Xid = msg.Xid |
| params.Mbuf = nil |
| |
| tc.Logger.Info("SEND SUB FAIL: %s", params.String()) |
| snderr := tc.RmrSend(params) |
| if snderr != nil { |
| tc.TestError(t, "RMR SEND FAILED: %s", snderr.Error()) |
| } |
| } |
| |
| //----------------------------------------------------------------------------- |
| // |
| //----------------------------------------------------------------------------- |
| func (tc *E2Stub) RecvSubsFail(t *testing.T, trans *RmrTransactionId) uint32 { |
| tc.Logger.Info("RecvSubsFail") |
| e2SubsFail := e2asnpacker.NewPackerSubscriptionFailure() |
| var e2SubsId uint32 |
| |
| //------------------------------- |
| // xapp activity: Recv Subs Fail |
| //------------------------------- |
| msg := tc.WaitMsg(15) |
| if msg != nil { |
| if msg.Mtype != xapp.RICMessageTypes["RIC_SUB_FAILURE"] { |
| tc.TestError(t, "Received RIC_SUB_FAILURE wrong mtype expected %s got %s, error", "RIC_SUB_FAILURE", xapp.RicMessageTypeToName[msg.Mtype]) |
| return 0 |
| } else if msg.Xid != trans.xid { |
| tc.TestError(t, "Received RIC_SUB_FAILURE wrong xid expected %s got %s, error", trans.xid, msg.Xid) |
| return 0 |
| } else { |
| packedData := &e2ap.PackedData{} |
| packedData.Buf = msg.Payload |
| if msg.SubId > 0 { |
| e2SubsId = uint32(msg.SubId) |
| } else { |
| e2SubsId = 0 |
| } |
| unpackerr, resp := e2SubsFail.UnPack(packedData) |
| if unpackerr != nil { |
| tc.TestError(t, "RIC_SUB_FAILURE unpack failed err: %s", unpackerr.Error()) |
| } |
| tc.Logger.Info("Recv Subs Fail rmr: xid=%s subid=%d, asn: instanceid=%d", msg.Xid, msg.SubId, resp.RequestId.InstanceId) |
| return e2SubsId |
| } |
| } else { |
| tc.TestError(t, "Not Received msg within %d secs", 15) |
| } |
| return 0 |
| } |
| |
| //----------------------------------------------------------------------------- |
| // |
| //----------------------------------------------------------------------------- |
| func (tc *E2Stub) SendSubsDelReq(t *testing.T, oldTrans *RmrTransactionId, e2SubsId uint32) *RmrTransactionId { |
| |
| trans := oldTrans |
| if oldTrans == nil { |
| trans = tc.NewRmrTransactionId("", "RAN_NAME_1") |
| } |
| |
| tc.Logger.Info("SendSubsDelReq %s", trans.String()) |
| e2SubsDelReq := e2asnpacker.NewPackerSubscriptionDeleteRequest() |
| //--------------------------------- |
| // xapp activity: Send Subs Del Req |
| //--------------------------------- |
| req := &e2ap.E2APSubscriptionDeleteRequest{} |
| req.RequestId.Id = 1 |
| req.RequestId.InstanceId = e2SubsId |
| req.FunctionId = 1 |
| |
| err, packedMsg := e2SubsDelReq.Pack(req) |
| if err != nil { |
| tc.TestError(t, "pack NOK %s %s", trans.String(), err.Error()) |
| return nil |
| } |
| tc.Logger.Debug("%s %s", trans.String(), e2SubsDelReq.String()) |
| |
| params := xapptweaks.NewParams(nil) |
| params.Mtype = xapp.RIC_SUB_DEL_REQ |
| params.SubId = int(e2SubsId) |
| params.Payload = packedMsg.Buf |
| params.PayloadLen = len(packedMsg.Buf) |
| params.Meid = trans.meid |
| params.Xid = trans.xid |
| params.Mbuf = nil |
| |
| tc.Logger.Info("SEND SUB DEL REQ: %s", params.String()) |
| snderr := tc.RmrSend(params) |
| if snderr != nil { |
| tc.TestError(t, "RMR SEND FAILED: %s %s", trans.String(), snderr.Error()) |
| return nil |
| } |
| return trans |
| } |
| |
| //----------------------------------------------------------------------------- |
| // |
| //----------------------------------------------------------------------------- |
| func (tc *E2Stub) RecvSubsDelReq(t *testing.T) (*e2ap.E2APSubscriptionDeleteRequest, *xapptweaks.RMRParams) { |
| tc.Logger.Info("RecvSubsDelReq") |
| e2SubsDelReq := e2asnpacker.NewPackerSubscriptionDeleteRequest() |
| |
| //--------------------------------- |
| // e2term activity: Recv Subs Del Req |
| //--------------------------------- |
| msg := tc.WaitMsg(15) |
| if msg != nil { |
| if msg.Mtype != xapp.RICMessageTypes["RIC_SUB_DEL_REQ"] { |
| tc.TestError(t, "Received wrong mtype expected %s got %s, error", "RIC_SUB_DEL_REQ", xapp.RicMessageTypeToName[msg.Mtype]) |
| } else { |
| tc.Logger.Info("Recv Subs Del Req") |
| |
| packedData := &e2ap.PackedData{} |
| packedData.Buf = msg.Payload |
| unpackerr, req := e2SubsDelReq.UnPack(packedData) |
| if unpackerr != nil { |
| tc.TestError(t, "RIC_SUB_DEL_REQ unpack failed err: %s", unpackerr.Error()) |
| } |
| return req, msg |
| } |
| } else { |
| tc.TestError(t, "Not Received msg within %d secs", 15) |
| } |
| return nil, nil |
| } |
| |
| //----------------------------------------------------------------------------- |
| // |
| //----------------------------------------------------------------------------- |
| func (tc *E2Stub) SendSubsDelResp(t *testing.T, req *e2ap.E2APSubscriptionDeleteRequest, msg *xapptweaks.RMRParams) { |
| tc.Logger.Info("SendSubsDelResp") |
| e2SubsDelResp := e2asnpacker.NewPackerSubscriptionDeleteResponse() |
| |
| //--------------------------------- |
| // e2term activity: Send Subs Del Resp |
| //--------------------------------- |
| resp := &e2ap.E2APSubscriptionDeleteResponse{} |
| resp.RequestId.Id = req.RequestId.Id |
| resp.RequestId.InstanceId = req.RequestId.InstanceId |
| resp.FunctionId = req.FunctionId |
| |
| packerr, packedMsg := e2SubsDelResp.Pack(resp) |
| if packerr != nil { |
| tc.TestError(t, "pack NOK %s", packerr.Error()) |
| } |
| tc.Logger.Debug("%s", e2SubsDelResp.String()) |
| |
| params := xapptweaks.NewParams(nil) |
| params.Mtype = xapp.RIC_SUB_DEL_RESP |
| params.SubId = msg.SubId |
| params.Payload = packedMsg.Buf |
| params.PayloadLen = len(packedMsg.Buf) |
| params.Meid = msg.Meid |
| params.Xid = msg.Xid |
| params.Mbuf = nil |
| |
| tc.Logger.Info("SEND SUB DEL RESP: %s", params.String()) |
| snderr := tc.RmrSend(params) |
| if snderr != nil { |
| tc.TestError(t, "RMR SEND FAILED: %s", snderr.Error()) |
| } |
| } |
| |
| //----------------------------------------------------------------------------- |
| // |
| //----------------------------------------------------------------------------- |
| func (tc *E2Stub) RecvSubsDelResp(t *testing.T, trans *RmrTransactionId) { |
| tc.Logger.Info("RecvSubsDelResp") |
| e2SubsDelResp := e2asnpacker.NewPackerSubscriptionDeleteResponse() |
| |
| //--------------------------------- |
| // xapp activity: Recv Subs Del Resp |
| //--------------------------------- |
| msg := tc.WaitMsg(15) |
| if msg != nil { |
| if msg.Mtype != xapp.RICMessageTypes["RIC_SUB_DEL_RESP"] { |
| tc.TestError(t, "Received RIC_SUB_DEL_RESP wrong mtype expected %s got %s, error", "RIC_SUB_DEL_RESP", xapp.RicMessageTypeToName[msg.Mtype]) |
| return |
| } else if trans != nil && msg.Xid != trans.xid { |
| tc.TestError(t, "Received RIC_SUB_DEL_RESP wrong xid expected %s got %s, error", trans.xid, msg.Xid) |
| return |
| } else { |
| packedData := &e2ap.PackedData{} |
| packedData.Buf = msg.Payload |
| unpackerr, resp := e2SubsDelResp.UnPack(packedData) |
| if unpackerr != nil { |
| tc.TestError(t, "RIC_SUB_DEL_RESP unpack failed err: %s", unpackerr.Error()) |
| } |
| tc.Logger.Info("Recv Subs Del Resp rmr: xid=%s subid=%d, asn: instanceid=%d", msg.Xid, msg.SubId, resp.RequestId.InstanceId) |
| return |
| } |
| } else { |
| tc.TestError(t, "Not Received msg within %d secs", 15) |
| } |
| } |
| |
| //----------------------------------------------------------------------------- |
| // |
| //----------------------------------------------------------------------------- |
| func (tc *E2Stub) SendSubsDelFail(t *testing.T, req *e2ap.E2APSubscriptionDeleteRequest, msg *xapptweaks.RMRParams) { |
| tc.Logger.Info("SendSubsDelFail") |
| e2SubsDelFail := e2asnpacker.NewPackerSubscriptionDeleteFailure() |
| |
| //--------------------------------- |
| // e2term activity: Send Subs Del Fail |
| //--------------------------------- |
| resp := &e2ap.E2APSubscriptionDeleteFailure{} |
| resp.RequestId.Id = req.RequestId.Id |
| resp.RequestId.InstanceId = req.RequestId.InstanceId |
| resp.FunctionId = req.FunctionId |
| resp.Cause.Content = 4 // CauseMisc |
| resp.Cause.CauseVal = 3 // unspecified |
| |
| packerr, packedMsg := e2SubsDelFail.Pack(resp) |
| if packerr != nil { |
| tc.TestError(t, "pack NOK %s", packerr.Error()) |
| } |
| tc.Logger.Debug("%s", e2SubsDelFail.String()) |
| |
| params := xapptweaks.NewParams(nil) |
| params.Mtype = xapp.RIC_SUB_DEL_FAILURE |
| params.SubId = msg.SubId |
| params.Payload = packedMsg.Buf |
| params.PayloadLen = len(packedMsg.Buf) |
| params.Meid = msg.Meid |
| params.Xid = msg.Xid |
| params.Mbuf = nil |
| |
| tc.Logger.Info("SEND SUB DEL FAIL: %s", params.String()) |
| snderr := tc.RmrSend(params) |
| if snderr != nil { |
| tc.TestError(t, "RMR SEND FAILED: %s", snderr.Error()) |
| } |
| } |