RICPLT-2910
[ric-plt/submgr.git] / e2ap / pkg / e2ap / e2ap_tests / msg_e2ap_subscription.go
diff --git a/e2ap/pkg/e2ap/e2ap_tests/msg_e2ap_subscription.go b/e2ap/pkg/e2ap/e2ap_tests/msg_e2ap_subscription.go
new file mode 100644 (file)
index 0000000..348fe4e
--- /dev/null
@@ -0,0 +1,233 @@
+/*
+==================================================================================
+  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 e2ap_tests
+
+import (
+       "gerrit.o-ran-sc.org/r/ric-plt/e2ap/pkg/e2ap"
+       "testing"
+)
+
+//-----------------------------------------------------------------------------
+//
+//-----------------------------------------------------------------------------
+
+func (testCtxt *E2ApTests) E2ApTestMsgSubscriptionRequestWithData(t *testing.T, areqenc *e2ap.E2APSubscriptionRequest) {
+
+       e2SubsReq := testCtxt.packerif.NewPackerSubscriptionRequest()
+
+       testCtxt.testPrint("########## ##########")
+       testCtxt.testPrint("init")
+       seterr := e2SubsReq.Set(areqenc)
+       if seterr != nil {
+               testCtxt.testError(t, "set err: %s", seterr.Error())
+               return
+       }
+       testCtxt.testPrint("print:\n%s", e2SubsReq.String())
+       testCtxt.testPrint("pack")
+       err, packedMsg := e2SubsReq.Pack(nil)
+       if err != nil {
+               testCtxt.testError(t, "Pack failed: %s", err.Error())
+               return
+       }
+       testCtxt.testPrint("unpack")
+       err = e2SubsReq.UnPack(packedMsg)
+       if err != nil {
+               testCtxt.testError(t, "UnPack failed: %s", err.Error())
+               return
+       }
+       testCtxt.testPrint("print:\n%s", e2SubsReq.String())
+       geterr, areqdec := e2SubsReq.Get()
+       if geterr != nil {
+               testCtxt.testError(t, "get nil: %s", geterr.Error())
+               return
+       }
+       testCtxt.testValueEquality(t, "msg", areqenc, areqdec)
+       testCtxt.testValueEquality(t, "EventTriggerDefinition", &areqenc.EventTriggerDefinition, &areqdec.EventTriggerDefinition)
+}
+
+func (testCtxt *E2ApTests) E2ApTestMsgSubscriptionRequest(t *testing.T) {
+
+       areqenc := e2ap.E2APSubscriptionRequest{}
+       areqenc.RequestId.Id = 1
+       areqenc.RequestId.Seq = 22
+       areqenc.FunctionId = 33
+       //Bits 20, 28(works), 18, 21 (asn1 problems)
+       areqenc.EventTriggerDefinition.InterfaceDirection = e2ap.E2AP_InterfaceDirectionIncoming
+       areqenc.EventTriggerDefinition.ProcedureCode = 35
+       areqenc.EventTriggerDefinition.TypeOfMessage = e2ap.E2AP_InitiatingMessage
+       for index := 0; index < 16; index++ {
+               item := e2ap.ActionToBeSetupItem{}
+               item.ActionId = uint64(index)
+               item.ActionType = e2ap.E2AP_ActionTypeInsert
+               // NOT SUPPORTED CURRENTLY
+               //item.ActionDefinition.Present = true
+               //item.ActionDefinition.StyleId = 255
+               //item.ActionDefinition.ParamId = 222
+               item.SubsequentAction.Present = true
+               item.SubsequentAction.Type = e2ap.E2AP_SubSeqActionTypeContinue
+               item.SubsequentAction.TimetoWait = e2ap.E2AP_TimeToWaitW100ms
+               areqenc.ActionSetups = append(areqenc.ActionSetups, item)
+       }
+
+       areqenc.EventTriggerDefinition.InterfaceId.GlobalEnbId.Present = true
+       areqenc.EventTriggerDefinition.InterfaceId.GlobalEnbId.PlmnIdentity.StringPut("310150")
+       areqenc.EventTriggerDefinition.InterfaceId.GlobalEnbId.NodeId.Bits = e2ap.E2AP_ENBIDHomeBits28
+       areqenc.EventTriggerDefinition.InterfaceId.GlobalEnbId.NodeId.Id = 202251
+       testCtxt.SetDesc("SubsReq-28bit")
+       testCtxt.E2ApTestMsgSubscriptionRequestWithData(t, &areqenc)
+
+       //areqenc.EventTriggerDefinition.InterfaceId.GlobalEnbId.Present = true
+       //areqenc.EventTriggerDefinition.InterfaceId.GlobalEnbId.PlmnIdentity.StringPut("310150")
+       //areqenc.EventTriggerDefinition.InterfaceId.GlobalEnbId.NodeId.Bits = e2ap.E2AP_ENBIDShortMacroits18
+       //areqenc.EventTriggerDefinition.InterfaceId.GlobalEnbId.NodeId.Id = 55
+       //testCtxt.SetDesc("SubsReq-18bit")
+       //testCtxt.E2ApTestMsgSubscriptionRequestWithData(t,&areqenc)
+
+       //areqenc.EventTriggerDefinition.InterfaceId.GlobalEnbId.Present = true
+       //areqenc.EventTriggerDefinition.InterfaceId.GlobalEnbId.PlmnIdentity.StringPut("310150")
+       //areqenc.EventTriggerDefinition.InterfaceId.GlobalEnbId.NodeId.Bits = e2ap.E2AP_ENBIDMacroPBits20
+       //areqenc.EventTriggerDefinition.InterfaceId.GlobalEnbId.NodeId.Id = 55
+       //testCtxt.SetDesc("SubsReq-20bit")
+       //testCtxt.E2ApTestMsgSubscriptionRequestWithData(t,&areqenc)
+
+       //areqenc.EventTriggerDefinition.InterfaceId.GlobalEnbId.Present = true
+       //areqenc.EventTriggerDefinition.InterfaceId.GlobalEnbId.PlmnIdentity.StringPut("310150")
+       //areqenc.EventTriggerDefinition.InterfaceId.GlobalEnbId.NodeId.Bits = e2ap.E2AP_ENBIDlongMacroBits21
+       //areqenc.EventTriggerDefinition.InterfaceId.GlobalEnbId.NodeId.Id = 55
+       //testCtxt.SetDesc("SubsReq-21bit")
+       //testCtxt.E2ApTestMsgSubscriptionRequestWithData(t,&areqenc)
+
+}
+
+func (testCtxt *E2ApTests) E2ApTestMsgSubscriptionResponse(t *testing.T) {
+
+       testCtxt.SetDesc("SubsResp")
+
+       e2SubsResp := testCtxt.packerif.NewPackerSubscriptionResponse()
+
+       testCtxt.testPrint("########## ##########")
+       testCtxt.testPrint("init")
+
+       arespenc := e2ap.E2APSubscriptionResponse{}
+       arespenc.RequestId.Id = 1
+       arespenc.RequestId.Seq = 22
+       arespenc.FunctionId = 33
+       for index := uint64(0); index < 16; index++ {
+               item := e2ap.ActionAdmittedItem{}
+               item.ActionId = index
+               arespenc.ActionAdmittedList.Items = append(arespenc.ActionAdmittedList.Items, item)
+       }
+       for index := uint64(0); index < 16; index++ {
+               item := e2ap.ActionNotAdmittedItem{}
+               item.ActionId = index
+               item.Cause.Content = 1
+               item.Cause.CauseVal = 1
+               arespenc.ActionNotAdmittedList.Items = append(arespenc.ActionNotAdmittedList.Items, item)
+       }
+
+       seterr := e2SubsResp.Set(&arespenc)
+       if seterr != nil {
+               testCtxt.testError(t, "set err: %s", seterr.Error())
+               return
+       }
+       testCtxt.testPrint("print:\n%s", e2SubsResp.String())
+       testCtxt.testPrint("pack")
+       err, packedMsg := e2SubsResp.Pack(nil)
+       if err != nil {
+               testCtxt.testError(t, "Pack failed: %s", err.Error())
+               return
+       }
+       testCtxt.testPrint("unpack")
+       err = e2SubsResp.UnPack(packedMsg)
+       if err != nil {
+               testCtxt.testError(t, "UnPack failed: %s", err.Error())
+               return
+       }
+       testCtxt.testPrint("print:\n%s", e2SubsResp.String())
+       geterr, arespdec := e2SubsResp.Get()
+       if geterr != nil {
+               testCtxt.testError(t, "get nil: %s", geterr.Error())
+               return
+       }
+       testCtxt.testValueEquality(t, "msg", &arespenc, arespdec)
+}
+
+func (testCtxt *E2ApTests) E2ApTestMsgSubscriptionFailure(t *testing.T) {
+
+       testCtxt.SetDesc("SubsFail")
+
+       e2SubsFail := testCtxt.packerif.NewPackerSubscriptionFailure()
+
+       testCtxt.testPrint("########## ##########")
+       testCtxt.testPrint("init")
+
+       afailenc := e2ap.E2APSubscriptionFailure{}
+       afailenc.RequestId.Id = 1
+       afailenc.RequestId.Seq = 22
+       afailenc.FunctionId = 33
+       for index := uint64(0); index < 16; index++ {
+               item := e2ap.ActionNotAdmittedItem{}
+               item.ActionId = index
+               item.Cause.Content = 1
+               item.Cause.CauseVal = 1
+               afailenc.ActionNotAdmittedList.Items = append(afailenc.ActionNotAdmittedList.Items, item)
+       }
+       // NOT SUPPORTED CURRENTLY
+       afailenc.CriticalityDiagnostics.Present = false
+       //      afailenc.CriticalityDiagnostics.ProcCodePresent = true
+       //      afailenc.CriticalityDiagnostics.ProcCode = 1
+       //      afailenc.CriticalityDiagnostics.TrigMsgPresent = true
+       //      afailenc.CriticalityDiagnostics.TrigMsg = 2
+       //      afailenc.CriticalityDiagnostics.ProcCritPresent = true
+       //      afailenc.CriticalityDiagnostics.ProcCrit = e2ap.E2AP_CriticalityReject
+       //      for index := uint32(0); index < 256; index++ {
+       //              ieitem := e2ap.CriticalityDiagnosticsIEListItem{}
+       //              ieitem.IeCriticality = e2ap.E2AP_CriticalityReject
+       //              ieitem.IeID = index
+       //              ieitem.TypeOfError = 1
+       //              afailenc.CriticalityDiagnostics.CriticalityDiagnosticsIEList.Items = append(afailenc.CriticalityDiagnostics.CriticalityDiagnosticsIEList.Items, ieitem)
+       //      }
+
+       seterr := e2SubsFail.Set(&afailenc)
+       if seterr != nil {
+               testCtxt.testError(t, "set err: %s", seterr.Error())
+               return
+       }
+       testCtxt.testPrint("print:\n%s", e2SubsFail.String())
+       testCtxt.testPrint("pack")
+       err, packedMsg := e2SubsFail.Pack(nil)
+       if err != nil {
+               testCtxt.testError(t, "Pack failed: %s", err.Error())
+               return
+       }
+       testCtxt.testPrint("unpack")
+       err = e2SubsFail.UnPack(packedMsg)
+       if err != nil {
+               testCtxt.testError(t, "UnPack failed: %s", err.Error())
+               return
+       }
+       testCtxt.testPrint("print:\n%s", e2SubsFail.String())
+       geterr, afaildec := e2SubsFail.Get()
+       if geterr != nil {
+               testCtxt.testError(t, "get nil: %s", geterr.Error())
+               return
+       }
+       testCtxt.testValueEquality(t, "msg", &afailenc, afaildec)
+}