Merge newe2 into master
[ric-plt/submgr.git] / pkg / teststube2ap / stubE2.go
index dbd518b..c99df73 100644 (file)
@@ -43,7 +43,7 @@ type RmrTransactionId struct {
 }
 
 func (trans *RmrTransactionId) String() string {
-       return "trans(" + trans.xid + "/" + trans.meid.RanName + ")"
+       return "trans(" + trans.xid + "/" + (&xapptweaks.RMRMeid{trans.meid}).String() + ")"
 }
 
 type E2Stub struct {
@@ -54,9 +54,9 @@ type E2Stub struct {
 //-----------------------------------------------------------------------------
 //
 //-----------------------------------------------------------------------------
-func CreateNewE2Stub(desc string, rtfile string, port string, stat string, mtypeseed int) *E2Stub {
+func CreateNewE2Stub(desc string, rtfile string, port uint16, rtport uint16, stat string, mtypeseed int) *E2Stub {
        tc := &E2Stub{}
-       tc.RmrStubControl.Init(desc, rtfile, port, stat, mtypeseed)
+       tc.RmrStubControl.Init(desc, rtfile, port, rtport, stat, mtypeseed)
        tc.xid_seq = 1
        tc.SetCheckXid(true)
        return tc
@@ -65,9 +65,9 @@ func CreateNewE2Stub(desc string, rtfile string, port string, stat string, mtype
 //-----------------------------------------------------------------------------
 //
 //-----------------------------------------------------------------------------
-func CreateNewE2termStub(desc string, rtfile string, port string, stat string, mtypeseed int) *E2Stub {
+func CreateNewE2termStub(desc string, rtfile string, port uint16, rtport uint16, stat string, mtypeseed int) *E2Stub {
        tc := &E2Stub{}
-       tc.RmrStubControl.Init(desc, rtfile, port, stat, mtypeseed)
+       tc.RmrStubControl.Init(desc, rtfile, port, rtport, stat, mtypeseed)
        tc.xid_seq = 1
        tc.SetCheckXid(false)
        return tc
@@ -100,28 +100,83 @@ func (p *E2StubSubsReqParams) Init() {
        p.Req = &e2ap.E2APSubscriptionRequest{}
 
        p.Req.RequestId.Id = 1
-       p.Req.RequestId.Seq = 0
+       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.EventTriggerDefinition.NBX2EventTriggerDefinitionPresent = true
+       p.Req.EventTriggerDefinition.NBNRTEventTriggerDefinitionPresent = false
+       if p.Req.EventTriggerDefinition.NBX2EventTriggerDefinitionPresent == true {
+               p.Req.EventTriggerDefinition.InterfaceId.GlobalEnbId.Present = true
+               p.Req.EventTriggerDefinition.InterfaceId.GlobalEnbId.PlmnIdentity.Set("310150")
+               p.Req.EventTriggerDefinition.InterfaceId.GlobalEnbId.NodeId.Id = 123
+               p.Req.EventTriggerDefinition.InterfaceId.GlobalEnbId.NodeId.Bits = e2ap.E2AP_ENBIDHomeBits28
+
+               p.Req.EventTriggerDefinition.InterfaceDirection = e2ap.E2AP_InterfaceDirectionIncoming
+               p.Req.EventTriggerDefinition.ProcedureCode = 5 //28 35
+               p.Req.EventTriggerDefinition.TypeOfMessage = e2ap.E2AP_InitiatingMessage
+       } else if p.Req.EventTriggerDefinition.NBNRTEventTriggerDefinitionPresent == true {
+               p.Req.EventTriggerDefinition.NBNRTEventTriggerDefinition.TriggerNature = e2ap.NRTTriggerNature_now
+       }
 
        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 // Not supported
-       //p.Req.ActionSetups[index].ActionDefinition.StyleId = 255
-       //p.Req.ActionSetups[index].ActionDefinition.ParamId = 222
+       p.Req.ActionSetups[0].RicActionDefinitionPresent = true
+       p.Req.ActionSetups[0].ActionDefinitionChoice.ActionDefinitionX2Format1Present = false
+       p.Req.ActionSetups[0].ActionDefinitionChoice.ActionDefinitionX2Format2Present = true
+       p.Req.ActionSetups[0].ActionDefinitionChoice.ActionDefinitionNRTFormat1Present = false
+
+       if p.Req.ActionSetups[0].ActionDefinitionChoice.ActionDefinitionX2Format1Present {
+               p.Req.ActionSetups[0].ActionDefinitionChoice.ActionDefinitionX2Format1.StyleID = 99
+               // 1..255
+               for index := 0; index < 1; index++ {
+                       actionParameterItem := e2ap.ActionParameterItem{}
+                       actionParameterItem.ParameterID = 11
+                       actionParameterItem.ActionParameterValue.ValueIntPresent = true
+                       actionParameterItem.ActionParameterValue.ValueInt = 100
+                       p.Req.ActionSetups[0].ActionDefinitionChoice.ActionDefinitionX2Format1.ActionParameterItems =
+                               append(p.Req.ActionSetups[0].ActionDefinitionChoice.ActionDefinitionX2Format1.ActionParameterItems, actionParameterItem)
+               }
+       } else if p.Req.ActionSetups[0].ActionDefinitionChoice.ActionDefinitionX2Format2Present {
+               // 1..15
+               for index := 0; index < 1; index++ {
+                       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.ActionDefinitionX2Format2.RanUEgroupItems =
+                               append(p.Req.ActionSetups[0].ActionDefinitionChoice.ActionDefinitionX2Format2.RanUEgroupItems, ranUEgroupItem)
+               }
+       } else if p.Req.ActionSetups[0].ActionDefinitionChoice.ActionDefinitionNRTFormat1Present {
+               // 1..255
+               for index := 0; index < 1; index++ {
+                       ranParameterItem := e2ap.RANParameterItem{}
+                       ranParameterItem.RanParameterID = 33
+                       ranParameterItem.RanParameterValue.ValueIntPresent = true
+                       ranParameterItem.RanParameterValue.ValueInt = 100
+                       p.Req.ActionSetups[0].ActionDefinitionChoice.ActionDefinitionNRTFormat1.RanParameterList =
+                               append(p.Req.ActionSetups[0].ActionDefinitionChoice.ActionDefinitionNRTFormat1.RanParameterList, ranParameterItem)
+               }
+       }
        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
@@ -141,7 +196,7 @@ func (p *E2StubSubsFailParams) Set(req *e2ap.E2APSubscriptionRequest) {
 
        p.Fail = &e2ap.E2APSubscriptionFailure{}
        p.Fail.RequestId.Id = p.Req.RequestId.Id
-       p.Fail.RequestId.Seq = p.Req.RequestId.Seq
+       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++ {
@@ -155,12 +210,12 @@ func (p *E2StubSubsFailParams) SetCauseVal(ind int, content uint8, causeval uint
        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
+                       p.Fail.ActionNotAdmittedList.Items[index].Cause.Value = causeval
                }
                return
        }
        p.Fail.ActionNotAdmittedList.Items[ind].Cause.Content = content
-       p.Fail.ActionNotAdmittedList.Items[ind].Cause.CauseVal = causeval
+       p.Fail.ActionNotAdmittedList.Items[ind].Cause.Value = causeval
 }
 
 //-----------------------------------------------------------------------------
@@ -198,12 +253,13 @@ func (tc *E2Stub) SendSubsReq(t *testing.T, rparams *E2StubSubsReqParams, oldTra
        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)
+       snderr := tc.RmrSend(params, 5)
        if snderr != nil {
                tc.TestError(t, "RMR SEND FAILED: %s %s", trans.String(), snderr.Error())
                return nil
@@ -255,7 +311,7 @@ func (tc *E2Stub) SendSubsResp(t *testing.T, req *e2ap.E2APSubscriptionRequest,
        resp := &e2ap.E2APSubscriptionResponse{}
 
        resp.RequestId.Id = req.RequestId.Id
-       resp.RequestId.Seq = req.RequestId.Seq
+       resp.RequestId.InstanceId = req.RequestId.InstanceId
        resp.FunctionId = req.FunctionId
 
        resp.ActionAdmittedList.Items = make([]e2ap.ActionAdmittedItem, len(req.ActionSetups))
@@ -267,7 +323,7 @@ func (tc *E2Stub) SendSubsResp(t *testing.T, req *e2ap.E2APSubscriptionRequest,
                item := e2ap.ActionNotAdmittedItem{}
                item.ActionId = index
                item.Cause.Content = 1
-               item.Cause.CauseVal = 1
+               item.Cause.Value = 1
                resp.ActionNotAdmittedList.Items = append(resp.ActionNotAdmittedList.Items, item)
        }
 
@@ -282,12 +338,13 @@ func (tc *E2Stub) SendSubsResp(t *testing.T, req *e2ap.E2APSubscriptionRequest,
        //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)
+       snderr := tc.RmrSend(params, 5)
        if snderr != nil {
                tc.TestError(t, "RMR SEND FAILED: %s", snderr.Error())
        }
@@ -324,7 +381,7 @@ func (tc *E2Stub) RecvSubsResp(t *testing.T, trans *RmrTransactionId) uint32 {
                        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: seqnro=%d", msg.Xid, msg.SubId, resp.RequestId.Seq)
+                       tc.Logger.Info("Recv Subs Resp rmr: xid=%s subid=%d, asn: instanceid=%d", msg.Xid, msg.SubId, resp.RequestId.InstanceId)
                        return e2SubsId
                }
        } else {
@@ -354,12 +411,13 @@ func (tc *E2Stub) SendSubsFail(t *testing.T, fparams *E2StubSubsFailParams, msg
        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)
+       snderr := tc.RmrSend(params, 5)
        if snderr != nil {
                tc.TestError(t, "RMR SEND FAILED: %s", snderr.Error())
        }
@@ -396,7 +454,7 @@ func (tc *E2Stub) RecvSubsFail(t *testing.T, trans *RmrTransactionId) uint32 {
                        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: seqnro=%d", msg.Xid, msg.SubId, resp.RequestId.Seq)
+                       tc.Logger.Info("Recv Subs Fail rmr: xid=%s subid=%d, asn: instanceid=%d", msg.Xid, msg.SubId, resp.RequestId.InstanceId)
                        return e2SubsId
                }
        } else {
@@ -422,7 +480,7 @@ func (tc *E2Stub) SendSubsDelReq(t *testing.T, oldTrans *RmrTransactionId, e2Sub
        //---------------------------------
        req := &e2ap.E2APSubscriptionDeleteRequest{}
        req.RequestId.Id = 1
-       req.RequestId.Seq = e2SubsId
+       req.RequestId.InstanceId = e2SubsId
        req.FunctionId = 1
 
        err, packedMsg := e2SubsDelReq.Pack(req)
@@ -436,12 +494,13 @@ func (tc *E2Stub) SendSubsDelReq(t *testing.T, oldTrans *RmrTransactionId, e2Sub
        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)
+       snderr := tc.RmrSend(params, 5)
        if snderr != nil {
                tc.TestError(t, "RMR SEND FAILED: %s %s", trans.String(), snderr.Error())
                return nil
@@ -492,7 +551,7 @@ func (tc *E2Stub) SendSubsDelResp(t *testing.T, req *e2ap.E2APSubscriptionDelete
        //---------------------------------
        resp := &e2ap.E2APSubscriptionDeleteResponse{}
        resp.RequestId.Id = req.RequestId.Id
-       resp.RequestId.Seq = req.RequestId.Seq
+       resp.RequestId.InstanceId = req.RequestId.InstanceId
        resp.FunctionId = req.FunctionId
 
        packerr, packedMsg := e2SubsDelResp.Pack(resp)
@@ -505,12 +564,13 @@ func (tc *E2Stub) SendSubsDelResp(t *testing.T, req *e2ap.E2APSubscriptionDelete
        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)
+       snderr := tc.RmrSend(params, 5)
        if snderr != nil {
                tc.TestError(t, "RMR SEND FAILED: %s", snderr.Error())
        }
@@ -541,7 +601,7 @@ func (tc *E2Stub) RecvSubsDelResp(t *testing.T, trans *RmrTransactionId) {
                        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: seqnro=%d", msg.Xid, msg.SubId, resp.RequestId.Seq)
+                       tc.Logger.Info("Recv Subs Del Resp rmr: xid=%s subid=%d, asn: instanceid=%d", msg.Xid, msg.SubId, resp.RequestId.InstanceId)
                        return
                }
        } else {
@@ -561,10 +621,10 @@ func (tc *E2Stub) SendSubsDelFail(t *testing.T, req *e2ap.E2APSubscriptionDelete
        //---------------------------------
        resp := &e2ap.E2APSubscriptionDeleteFailure{}
        resp.RequestId.Id = req.RequestId.Id
-       resp.RequestId.Seq = req.RequestId.Seq
+       resp.RequestId.InstanceId = req.RequestId.InstanceId
        resp.FunctionId = req.FunctionId
-       resp.Cause.Content =  // CauseMisc
-       resp.Cause.CauseVal = 4 // unspecified
+       resp.Cause.Content = 4 // CauseMisc
+       resp.Cause.Value = 3   // unspecified
 
        packerr, packedMsg := e2SubsDelFail.Pack(resp)
        if packerr != nil {
@@ -576,12 +636,13 @@ func (tc *E2Stub) SendSubsDelFail(t *testing.T, req *e2ap.E2APSubscriptionDelete
        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)
+       snderr := tc.RmrSend(params, 5)
        if snderr != nil {
                tc.TestError(t, "RMR SEND FAILED: %s", snderr.Error())
        }