X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;ds=sidebyside;f=pkg%2Fcontrol%2Fut_messaging_test.go;h=79eccd2efffea041626e16e3e379b5b692e0a44b;hb=4b1ff2caedf6814946263792275b027f824f9b69;hp=6ce7b5106e0b513787e3786a481f4d9d1337849f;hpb=b43397e236303243729347b327d9ace8262469d9;p=ric-plt%2Fsubmgr.git diff --git a/pkg/control/ut_messaging_test.go b/pkg/control/ut_messaging_test.go index 6ce7b51..79eccd2 100644 --- a/pkg/control/ut_messaging_test.go +++ b/pkg/control/ut_messaging_test.go @@ -46,6 +46,10 @@ func TestSuiteSetup(t *testing.T) { } func TestRanStatusChangeViaSDLNotification(t *testing.T) { + mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{ + Counter{cE2StateChangedToUp, 3}, + }) + // Current UT test cases use these ran names xappRnibMock.CreateGnb("RAN_NAME_1", entities.ConnectionStatus_DISCONNECTED) xappRnibMock.CreateGnb("RAN_NAME_11", entities.ConnectionStatus_DISCONNECTED) @@ -57,6 +61,8 @@ func TestRanStatusChangeViaSDLNotification(t *testing.T) { mainCtrl.SetE2State(t, "RAN_NAME_1_CONNECTED") mainCtrl.SetE2State(t, "RAN_NAME_2_CONNECTED") mainCtrl.SetE2State(t, "RAN_NAME_11_CONNECTED") + + mainCtrl.VerifyCounterValues(t) } //----------------------------------------------------------------------------- @@ -83,6 +89,8 @@ func TestRESTSubReqAfterE2ConnBreak(t *testing.T) { mainCtrl.CounterValuesToBeVeriefied(t, CountersToBeAdded{ Counter{cRestSubReqFromXapp, 1}, Counter{cRestReqRejDueE2Down, 1}, + Counter{cE2StateChangedToDown, 1}, + Counter{cE2StateChangedToUp, 1}, }) // E2 disconnect after E2term has received response @@ -95,9 +103,9 @@ func TestRESTSubReqAfterE2ConnBreak(t *testing.T) { // Restore E2 connection for following test cases mainCtrl.SetE2State(t, "RAN_NAME_1_CONNECTED") - mainCtrl.VerifyCounterValues(t) mainCtrl.VerifyAllClean(t) - //os.Exit(1) + mainCtrl.VerifyCounterValues(t) + //os.Exit(0) } //----------------------------------------------------------------------------- @@ -135,6 +143,8 @@ func TestRESTSubReqE2ConnBreak(t *testing.T) { Counter{cSubReqToE2, 1}, Counter{cSubRespFromE2, 1}, Counter{cRestSubFailNotifToXapp, 1}, + Counter{cE2StateChangedToDown, 1}, + Counter{cE2StateChangedToUp, 1}, }) // Req @@ -212,6 +222,8 @@ func TestRESTSubscriptionDeleteAfterE2ConnectionBreak(t *testing.T) { Counter{cRestSubNotifToXapp, 1}, Counter{cRestSubDelReqFromXapp, 1}, Counter{cRestSubDelRespToXapp, 1}, + Counter{cE2StateChangedToDown, 1}, + Counter{cE2StateChangedToUp, 1}, }) // Req @@ -289,6 +301,7 @@ func TestRESTOtherE2ConnectionChanges(t *testing.T) { Counter{cSubDelReqToE2, 1}, Counter{cSubDelRespFromE2, 1}, Counter{cRestSubDelRespToXapp, 1}, + Counter{cE2StateChangedToUp, 1}, }) // Req @@ -300,7 +313,7 @@ func TestRESTOtherE2ConnectionChanges(t *testing.T) { e2termConn1.SendSubsResp(t, crereq, cremsg) e2SubsId := xappConn1.WaitRESTNotification(t, restSubId) - // Submgr should not react any other connection state changes than CONNECTED and DISCONNECTED + // Submgr should not react to any other connection state changes than CONNECTED and DISCONNECTED mainCtrl.SetE2State(t, "RAN_NAME_1_CONNECTED_SETUP_FAILED") mainCtrl.SetE2State(t, "RAN_NAME_1_CONNECTING") mainCtrl.SetE2State(t, "RAN_NAME_1_SHUTTING_DOWN") @@ -2375,9 +2388,6 @@ func TestSubReqRetransmissionWithSameSubIdDiffXid(t *testing.T) { func TestSubReqNokAndSubDelOkWithRestartInMiddle(t *testing.T) { CaseBegin("TestSubReqNokAndSubDelOkWithRestartInMiddle") - // Remove possible existing subscrition - mainCtrl.removeExistingSubscriptions(t) - mainCtrl.SetResetTestFlag(t, true) // subs.DoNotWaitSubResp will be set TRUE for the subscription xappConn1.SendSubsReq(t, nil, nil) e2termConn1.RecvSubsReq(t) @@ -2459,6 +2469,10 @@ func TestSubReqAndSubDelOkWithRestartInMiddle(t *testing.T) { mainCtrl.SimulateRestart(t) xapp.Logger.Debug("mainCtrl.SimulateRestart done") + // ReadE2Subscriptions() for testing is running in own go routine (go mainCtrl.c.ReadE2Subscriptions()) + // That needs to be completed before successful subscription query is possible + <-time.After(time.Second * 1) + // Check that subscription is restored correctly after restart resp, _ = xapp.Subscription.QuerySubscriptions() assert.Equal(t, resp[0].SubscriptionID, int64(e2SubsId)) @@ -2553,7 +2567,7 @@ func TestSubReqAndSubDelOkSameActionWithRestartsInMiddle(t *testing.T) { e2SubsId2 := xappConn2.RecvSubsResp(t, cretrans2) // Check subscription - resp, _ := xapp.Subscription.QuerySubscriptions() //////////////////////////////// + resp, _ := xapp.Subscription.QuerySubscriptions() assert.Equal(t, resp[0].SubscriptionID, int64(e2SubsId1)) assert.Equal(t, resp[0].Meid, "RAN_NAME_1") assert.Equal(t, resp[0].ClientEndpoint, []string{"localhost:13560", "localhost:13660"}) @@ -2561,6 +2575,10 @@ func TestSubReqAndSubDelOkSameActionWithRestartsInMiddle(t *testing.T) { mainCtrl.SimulateRestart(t) xapp.Logger.Debug("mainCtrl.SimulateRestart done") + // ReadE2Subscriptions() for testing is running in own go routine (go mainCtrl.c.ReadE2Subscriptions()) + // That needs to be completed before successful subscription query is possible + <-time.After(time.Second * 1) + // Check that subscription is restored correctly after restart resp, _ = xapp.Subscription.QuerySubscriptions() assert.Equal(t, resp[0].SubscriptionID, int64(e2SubsId1)) @@ -2576,6 +2594,10 @@ func TestSubReqAndSubDelOkSameActionWithRestartsInMiddle(t *testing.T) { mainCtrl.SimulateRestart(t) xapp.Logger.Debug("mainCtrl.SimulateRestart done") + // ReadE2Subscriptions() for testing is running in own go routine (go mainCtrl.c.ReadE2Subscriptions()) + // Submgr need be ready before successful subscription deletion is possible + <-time.After(time.Second * 1) + //Del2 deltrans2 := xappConn2.SendSubsDelReq(t, nil, e2SubsId2) delreq2, delmsg2 := e2termConn1.RecvSubsDelReq(t) @@ -2974,19 +2996,21 @@ func TestRESTSubReqRetransmissionV2(t *testing.T) { queryXappSubscription(t, int64(e2SubsId), "RAN_NAME_1", []string{"localhost:13560"}) + mainCtrl.WaitOngoingRequestMapEmpty() + //1.st resend restSubId_resend := xappConn1.SendRESTSubsReq(t, params) assert.Equal(t, restSubId_resend, restSubId) - <-time.After(100 * time.Millisecond) + mainCtrl.WaitOngoingRequestMapEmpty() //2.nd resend restSubId_resend2 := xappConn1.SendRESTSubsReq(t, params) assert.Equal(t, restSubId_resend2, restSubId) - <-time.After(100 * time.Millisecond) + mainCtrl.WaitOngoingRequestMapEmpty() deleteSubscription(t, xappConn1, e2termConn1, &restSubId) @@ -3058,7 +3082,7 @@ func TestRESTSubReqRetransmissionV3(t *testing.T) { queryXappSubscription(t, int64(e2SubsId), "RAN_NAME_1", []string{"localhost:13560"}) - <-time.After(100 * time.Millisecond) + mainCtrl.WaitOngoingRequestMapEmpty() //1.st resend with subscription ID params.SetSubscriptionID(&restSubId) @@ -3066,7 +3090,7 @@ func TestRESTSubReqRetransmissionV3(t *testing.T) { assert.Equal(t, restSubId_resend, restSubId) - <-time.After(100 * time.Millisecond) + mainCtrl.WaitOngoingRequestMapEmpty() //2.nd resend without subscription ID (faking app restart) params = xappConn1.GetRESTSubsReqReportParams(subReqCount) @@ -3074,7 +3098,7 @@ func TestRESTSubReqRetransmissionV3(t *testing.T) { assert.Equal(t, restSubId_resend2, restSubId) - <-time.After(100 * time.Millisecond) + mainCtrl.WaitOngoingRequestMapEmpty() deleteSubscription(t, xappConn1, e2termConn1, &restSubId) @@ -3160,7 +3184,7 @@ func TestRESTSubReqRetransmissionV4(t *testing.T) { restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params) - <-time.After(100 * time.Millisecond) + mainCtrl.WaitOngoingRequestMapEmpty() // Send modified requst, this time with e2 subscriptions. params2 := xappConn1.GetRESTSubsReqReportParams(subReqCount + 1) @@ -3181,7 +3205,7 @@ func TestRESTSubReqRetransmissionV4(t *testing.T) { e2SubsId2 := xappConn1.WaitRESTNotification(t, restSubId_resend) assert.NotEqual(t, e2SubsId2, 0) - <-time.After(100 * time.Millisecond) + mainCtrl.WaitOngoingRequestMapEmpty() xapp.Subscription.SetResponseCB(xappConn1.SubscriptionRespHandler) params = xappConn1.GetRESTSubsReqReportParams(subReqCount) @@ -3194,6 +3218,8 @@ func TestRESTSubReqRetransmissionV4(t *testing.T) { e2SubsId1 = xappConn1.WaitAnyRESTNotification(t) assert.Equal(t, e2SubsId, e2SubsId1) + mainCtrl.WaitOngoingRequestMapEmpty() + // Delete both e2 subscriptions xappConn1.SendRESTSubsDelReq(t, &restSubId) e2SubsIds := []uint32{e2SubsId, e2SubsId2} @@ -3281,7 +3307,7 @@ func TestRESTSubReqRetransmissionV5(t *testing.T) { restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params) - <-time.After(100 * time.Millisecond) + mainCtrl.WaitOngoingRequestMapEmpty() // Send modified requst, this time with e2 subscriptions. params2 := xappConn1.GetRESTSubsReqReportParams(subReqCount + 1) @@ -3304,7 +3330,7 @@ func TestRESTSubReqRetransmissionV5(t *testing.T) { e2SubsId2 := xappConn1.WaitRESTNotification(t, restSubId_resend) assert.NotEqual(t, e2SubsId2, 0) - <-time.After(100 * time.Millisecond) + mainCtrl.WaitOngoingRequestMapEmpty() xapp.Subscription.SetResponseCB(xappConn1.SubscriptionRespHandler) params = xappConn1.GetRESTSubsReqReportParams(subReqCount) @@ -3317,6 +3343,8 @@ func TestRESTSubReqRetransmissionV5(t *testing.T) { e2SubsId1 = xappConn1.WaitAnyRESTNotification(t) assert.Equal(t, e2SubsId, e2SubsId1) + mainCtrl.WaitOngoingRequestMapEmpty() + // Delete both e2 subscriptions xappConn1.SendRESTSubsDelReq(t, &restSubId) e2SubsIds := []uint32{e2SubsId, e2SubsId2} @@ -3413,7 +3441,7 @@ func TestRESTSubReqRetransmissionV6(t *testing.T) { restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params) - <-time.After(100 * time.Millisecond) + mainCtrl.WaitOngoingRequestMapEmpty() // Send modified requst, this time with e2 subscriptions. params2 := xappConn1.GetRESTSubsReqReportParams(subReqCount + 1) @@ -3434,7 +3462,7 @@ func TestRESTSubReqRetransmissionV6(t *testing.T) { e2SubsId2 := xappConn1.WaitRESTNotification(t, restSubId_resend) assert.NotEqual(t, e2SubsId2, 0) - <-time.After(100 * time.Millisecond) + mainCtrl.WaitOngoingRequestMapEmpty() // Delete both e2 subscriptions xappConn1.SendRESTSubsDelReq(t, &restSubId) @@ -3448,7 +3476,7 @@ func TestRESTSubReqRetransmissionV6(t *testing.T) { // fresh create. restSubId, e2SubsId = createSubscription(t, xappConn1, e2termConn1, params) - <-time.After(100 * time.Millisecond) + mainCtrl.WaitOngoingRequestMapEmpty() deleteSubscription(t, xappConn1, e2termConn1, &restSubId) @@ -4358,7 +4386,6 @@ func TestRESTSubReqAndSubDelOkSameActionParallel(t *testing.T) { mainCtrl.VerifyAllClean(t) } -/* //----------------------------------------------------------------------------- // TestRESTSubReqAndSubDelNoAnswerSameActionParallel // @@ -4421,6 +4448,7 @@ func TestRESTSubReqAndSubDelNoAnswerSameActionParallel(t *testing.T) { Counter{cSubReqTimerExpiry, 2}, Counter{cSubReReqToE2, 1}, Counter{cRestSubFailNotifToXapp, 2}, + Counter{cUnmergedSubscriptions, 1}, Counter{cRestSubDelReqFromXapp, 2}, Counter{cSubDelReqToE2, 1}, Counter{cSubDelRespFromE2, 1}, @@ -4522,6 +4550,7 @@ func TestRESTSubReqAndSubDelNokSameActionParallel(t *testing.T) { Counter{cSubReqToE2, 1}, Counter{cSubFailFromE2, 1}, Counter{cRestSubFailNotifToXapp, 2}, + Counter{cUnmergedSubscriptions, 1}, Counter{cRestSubDelReqFromXapp, 2}, Counter{cRestSubDelRespToXapp, 2}, }) @@ -4563,7 +4592,7 @@ func TestRESTSubReqAndSubDelNokSameActionParallel(t *testing.T) { mainCtrl.VerifyCounterValues(t) mainCtrl.VerifyAllClean(t) } -*/ + func TestRESTSubReqPolicyAndSubDelOk(t *testing.T) { CaseBegin("TestRESTSubReqPolicyAndSubDelOk") @@ -5030,16 +5059,12 @@ func TestRESTSubReqNokAndSubDelOkWithRestartInMiddle(t *testing.T) { Counter{cSubDelReqFromXapp, 1}, Counter{cSubDelReqToE2, 1}, Counter{cSubDelRespFromE2, 1}, - Counter{cRestSubFailNotifToXapp, 1}, Counter{cRestSubDelReqFromXapp, 1}, Counter{cRestSubDelRespToXapp, 1}, }) const subReqCount int = 1 - // Remove possible existing subscription - mainCtrl.removeExistingSubscriptions(t) - params := xappConn1.GetRESTSubsReqReportParams(subReqCount) //Req @@ -5122,12 +5147,9 @@ func TestRESTSubReqAndSubDelOkWithRestartInMiddle(t *testing.T) { Counter{cSubDelRespFromE2, 1}, Counter{cRestSubDelRespToXapp, 1}, }) - // Remove possible existing subscription - mainCtrl.removeExistingSubscriptions(t) - - var params *teststube2ap.RESTSubsReqParams = nil // Create subscription + var params *teststube2ap.RESTSubsReqParams = nil restSubId, e2SubsId := createSubscription(t, xappConn1, e2termConn1, params) xapp.Logger.Debug("Send REST subscriber request for subscriber : %v", restSubId) @@ -5137,6 +5159,10 @@ func TestRESTSubReqAndSubDelOkWithRestartInMiddle(t *testing.T) { mainCtrl.SimulateRestart(t) xapp.Logger.Debug("mainCtrl.SimulateRestart done") + // ReadE2Subscriptions() for testing is running in own go routine (go mainCtrl.c.ReadE2Subscriptions()) + // That needs to be completed before successful subscription query is possible + <-time.After(time.Second * 1) + // Check subscription queryXappSubscription(t, int64(e2SubsId), "RAN_NAME_1", []string{"localhost:13560"}) @@ -5204,7 +5230,6 @@ func TestRESTSubReqAndSubDelOkWithRestartInMiddle(t *testing.T) { // | | | | // //----------------------------------------------------------------------------- - func TestRESTSubReqAndSubDelOkSameActionWithRestartsInMiddle(t *testing.T) { CaseBegin("TestRESTSubReqAndSubDelOkSameActionWithRestartsInMiddle") @@ -5222,12 +5247,8 @@ func TestRESTSubReqAndSubDelOkSameActionWithRestartsInMiddle(t *testing.T) { Counter{cRestSubDelRespToXapp, 2}, }) - // Remove possible existing subscription - mainCtrl.removeExistingSubscriptions(t) - - var params *teststube2ap.RESTSubsReqParams = nil - // Create subscription 1 + var params *teststube2ap.RESTSubsReqParams = nil restSubId1, e2SubsId1 := createSubscription(t, xappConn1, e2termConn1, params) xapp.Logger.Debug("Send REST subscriber request for subscriber 1 : %v", restSubId1) @@ -5244,15 +5265,24 @@ func TestRESTSubReqAndSubDelOkSameActionWithRestartsInMiddle(t *testing.T) { queryXappSubscription(t, int64(e2SubsId1), "RAN_NAME_1", []string{"localhost:13560", "localhost:13660"}) mainCtrl.SimulateRestart(t) - xapp.Logger.Debug("mainCtrl.SimulateRestart done") + xapp.Logger.Debug("mainCtrl.SimulateRestart done 1") + + // ReadE2Subscriptions() for testing is running in own go routine (go mainCtrl.c.ReadE2Subscriptions()) + // That needs to be completed before successful subscription delete is possible + <-time.After(time.Second * 1) // Delete subscription 1, and wait until it has removed the first endpoint - subepcnt := mainCtrl.get_subs_entrypoint_cnt(t, e2SubsId1) xappConn1.SendRESTSubsDelReq(t, &restSubId1) - mainCtrl.wait_subs_entrypoint_cnt_change(t, e2SubsId1, subepcnt, 10) + mainCtrl.WaitRESTSubscriptionDelete(restSubId1) + // Above wait does not work correctly anymore as this delay makes this test case work mainCtrl.SimulateRestart(t) - xapp.Logger.Debug("mainCtrl.SimulateRestart done") + xapp.Logger.Debug("mainCtrl.SimulateRestart done 2") + + // ReadE2Subscriptions() for testing is running in own go routine (go mainCtrl.c.ReadE2Subscriptions()) + // That needs to be completed before successful subscription query is possible + <-time.After(time.Second * 1) + queryXappSubscription(t, int64(e2SubsId1), "RAN_NAME_1", []string{"localhost:13660"}) // Delete subscription 2 @@ -5360,7 +5390,7 @@ func RESTReportSubReqAndSubDelOk(t *testing.T, subReqCount int, testIndex int) { } /* -func TestRESTPolicySubReqAndSubDelOk(t *testing.T) { +func TestRESTPolicySubReqAndSubDelOk(t *testing.T) { was in comments already CaseBegin("TestRESTPolicySubReqAndSubDelOk") subReqCount := 2 @@ -6970,16 +7000,12 @@ func TestPolicyUpdateRESTSubReqAndSubDelOkWithRestartInMiddle(t *testing.T) { Counter{cSubReqToE2, 2}, Counter{cSubRespFromE2, 1}, Counter{cRestSubNotifToXapp, 1}, - Counter{cRestSubFailNotifToXapp, 1}, Counter{cRestSubDelReqFromXapp, 1}, Counter{cSubDelReqToE2, 1}, Counter{cSubDelRespFromE2, 1}, Counter{cRestSubDelRespToXapp, 1}, }) - // Remove possible existing subscription - mainCtrl.removeExistingSubscriptions(t) - const e2Timeout int64 = 1 const e2RetryCount int64 = 0 const routingNeeded bool = false @@ -7017,6 +7043,10 @@ func TestPolicyUpdateRESTSubReqAndSubDelOkWithRestartInMiddle(t *testing.T) { mainCtrl.SimulateRestart(t) xapp.Logger.Debug("mainCtrl.SimulateRestart done") + // ReadE2Subscriptions() for testing is running in own go routine (go mainCtrl.c.ReadE2Subscriptions()) + // That needs to be completed before successful subscription query is possible + <-time.After(time.Second * 1) + // Check subscription queryXappSubscription(t, int64(e2SubsId), "RAN_NAME_1", []string{"localhost:13560"}) @@ -7123,9 +7153,9 @@ func deleteXapp2Subscription(t *testing.T, restSubId *string) { func queryXappSubscription(t *testing.T, e2SubsId int64, meid string, endpoint []string) { resp, _ := xapp.Subscription.QuerySubscriptions() - assert.Equal(t, resp[0].SubscriptionID, e2SubsId) - assert.Equal(t, resp[0].Meid, meid) - assert.Equal(t, resp[0].ClientEndpoint, endpoint) + assert.Equal(t, e2SubsId, resp[0].SubscriptionID) + assert.Equal(t, meid, resp[0].Meid) + assert.Equal(t, endpoint, resp[0].ClientEndpoint) } func waitSubsCleanup(t *testing.T, e2SubsId uint32, timeout int) {