Add support for Insert type subscriptions
Signed-off-by: Anssi Mannila <anssi.mannila@nokia.com>
Change-Id: Ie629ddc4c01ff4394a0f322f48108b02ed94075d
diff --git a/pkg/control/registry.go b/pkg/control/registry.go
index 275d572..9e4eaaa 100644
--- a/pkg/control/registry.go
+++ b/pkg/control/registry.go
@@ -196,6 +196,7 @@
func (r *Registry) CheckActionTypes(subReqMsg *e2ap.E2APSubscriptionRequest) (uint64, error) {
var reportFound bool = false
var policyFound bool = false
+ var insertFound bool = false
for _, acts := range subReqMsg.ActionSetups {
if acts.ActionType == e2ap.E2AP_ActionTypeReport {
@@ -204,9 +205,12 @@
if acts.ActionType == e2ap.E2AP_ActionTypePolicy {
policyFound = true
}
+ if acts.ActionType == e2ap.E2AP_ActionTypeInsert {
+ insertFound = true
+ }
}
- if reportFound == true && policyFound == true {
- return e2ap.E2AP_ActionTypeInvalid, fmt.Errorf("Report and Policy in same RICactions-ToBeSetup-List")
+ if reportFound == true && policyFound == true || reportFound == true && insertFound == true || policyFound == true && insertFound == true {
+ return e2ap.E2AP_ActionTypeInvalid, fmt.Errorf("Different action types (Report, Policy or Insert) in same RICactions-ToBeSetup-List")
}
if reportFound == true {
return e2ap.E2AP_ActionTypeReport, nil
@@ -214,6 +218,9 @@
if policyFound == true {
return e2ap.E2AP_ActionTypePolicy, nil
}
+ if insertFound == true {
+ return e2ap.E2AP_ActionTypeInsert, nil
+ }
return e2ap.E2AP_ActionTypeInvalid, fmt.Errorf("Invalid action type in RICactions-ToBeSetup-List")
}
diff --git a/pkg/control/ut_messaging_test.go b/pkg/control/ut_messaging_test.go
index 548950a..36e4f29 100644
--- a/pkg/control/ut_messaging_test.go
+++ b/pkg/control/ut_messaging_test.go
@@ -1593,3 +1593,63 @@
e2termConn2.TestMsgChanEmpty(t)
mainCtrl.wait_registry_empty(t, 10)
}
+
+//-----------------------------------------------------------------------------
+// TestSubReqInsertAndSubDelOk
+//
+// stub stub
+// +-------+ +---------+ +---------+
+// | xapp | | submgr | | e2term |
+// +-------+ +---------+ +---------+
+// | | |
+// | SubReq | |
+// |------------->| |
+// | | |
+// | | SubReq |
+// | |------------->|
+// | | |
+// | | SubResp |
+// | |<-------------|
+// | | |
+// | SubResp | |
+// |<-------------| |
+// | | |
+// | | |
+// | SubDelReq | |
+// |------------->| |
+// | | |
+// | | SubDelReq |
+// | |------------->|
+// | | |
+// | | SubDelResp |
+// | |<-------------|
+// | | |
+// | SubDelResp | |
+// |<-------------| |
+//
+//-----------------------------------------------------------------------------
+func TestSubReqInsertAndSubDelOk(t *testing.T) {
+ CaseBegin("TestInsertSubReqAndSubDelOk")
+
+ rparams1 := &teststube2ap.E2StubSubsReqParams{}
+ rparams1.Init()
+ rparams1.Req.ActionSetups[0].ActionType = e2ap.E2AP_ActionTypeInsert
+ cretrans := xappConn1.SendSubsReq(t, rparams1, nil)
+
+ crereq, cremsg := e2termConn1.RecvSubsReq(t)
+ e2termConn1.SendSubsResp(t, crereq, cremsg)
+ e2SubsId := xappConn1.RecvSubsResp(t, cretrans)
+ deltrans := xappConn1.SendSubsDelReq(t, nil, e2SubsId)
+ delreq, delmsg := e2termConn1.RecvSubsDelReq(t)
+
+ e2termConn1.SendSubsDelResp(t, delreq, delmsg)
+ xappConn1.RecvSubsDelResp(t, deltrans)
+
+ //Wait that subs is cleaned
+ mainCtrl.wait_subs_clean(t, e2SubsId, 10)
+
+ xappConn1.TestMsgChanEmpty(t)
+ xappConn2.TestMsgChanEmpty(t)
+ e2termConn1.TestMsgChanEmpty(t)
+ mainCtrl.wait_registry_empty(t, 10)
+}