//
//-----------------------------------------------------------------------------
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
//-----------------------------------------------------------------------------
//
//-----------------------------------------------------------------------------
-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
}
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
}
//-----------------------------------------------------------------------------
//
//-----------------------------------------------------------------------------
-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
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
//-----------------------------------------------------------------------------
//
//-----------------------------------------------------------------------------
-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
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
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
//
//-----------------------------------------------------------------------------
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()
//---------------------------------
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())
}
}