From: wahidw Date: Sun, 12 Jan 2020 04:24:29 +0000 (+0000) Subject: MEID tableupdated incrementally rather than full update X-Git-Tag: 0.4.9~1 X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=commitdiff_plain;h=51db0122302c9d72e1de6f8a8e250d219b8b44d8;p=ric-plt%2Frtmgr.git MEID tableupdated incrementally rather than full update Change-Id: I9c58deb0ed79ddb0a3692427248469794581361a Signed-off-by: wahidw --- diff --git a/RELNOTES b/RELNOTES index f0b7a43..9371ae0 100644 --- a/RELNOTES +++ b/RELNOTES @@ -1,3 +1,6 @@ +### v0.4.8 +* Entry in meid map will only contain the delta change + ### v0.4.7 * Check DNS lookup for E2T address, RED Button and KEEP alive message routes added for new E2T Address diff --git a/container-tag.yaml b/container-tag.yaml index 449899c..7286906 100644 --- a/container-tag.yaml +++ b/container-tag.yaml @@ -2,4 +2,4 @@ # By default this file is in the docker build directory, # but the location can configured in the JJB template. --- -tag: 0.4.7 +tag: 0.4.8 diff --git a/pkg/nbi/httprestful.go b/pkg/nbi/httprestful.go index 81384c0..1d5e1fa 100644 --- a/pkg/nbi/httprestful.go +++ b/pkg/nbi/httprestful.go @@ -99,8 +99,9 @@ func recvXappCallbackData(dataChannel <-chan *models.XappCallbackData) (*[]rtmgr return nil, nil } -func recvNewE2Tdata(dataChannel <-chan *models.E2tData) (*rtmgr.E2TInstance, error) { +func recvNewE2Tdata(dataChannel <-chan *models.E2tData) (*rtmgr.E2TInstance,string,error) { var e2tData *models.E2tData + var str string xapp.Logger.Info("data received") e2tData = <-dataChannel @@ -111,18 +112,24 @@ func recvNewE2Tdata(dataChannel <-chan *models.E2tData) (*rtmgr.E2TInstance, err Ranlist : make([]string, len(e2tData.RanNamelist)), } - e2tinst.Fqdn = *e2tData.E2TAddress - e2tinst.Name = "E2TERMINST" - copy(e2tinst.Ranlist, e2tData.RanNamelist) - - return &e2tinst,nil + e2tinst.Fqdn = *e2tData.E2TAddress + e2tinst.Name = "E2TERMINST" + copy(e2tinst.Ranlist, e2tData.RanNamelist) + if (len(e2tData.RanNamelist) > 0) { + var meidar string + for _, meid := range e2tData.RanNamelist { + meidar += meid + " " + } + str = "mme_ar|" + *e2tData.E2TAddress + "|" + strings.TrimSuffix(meidar," ") + } + return &e2tinst,str,nil } else { xapp.Logger.Info("No data") } xapp.Logger.Debug("Nothing received on the Http interface") - return nil, nil + return nil,str,nil } func validateXappCallbackData(callbackData *models.XappCallbackData) error { @@ -552,10 +559,10 @@ func (r *HttpRestful) Initialize(xmurl string, nbiif string, fileName string, co for { xapp.Logger.Debug("received create New E2T data") - data, _ := r.RecvNewE2Tdata(e2taddchan) + data, meiddata,_ := r.RecvNewE2Tdata(e2taddchan) if data != nil { m.Lock() - sdlEngine.WriteNewE2TInstance(fileName, data) + sdlEngine.WriteNewE2TInstance(fileName, data,meiddata) m.Unlock() triggerSBI <- true } diff --git a/pkg/nbi/httprestful_test.go b/pkg/nbi/httprestful_test.go index e1a3ae3..e0bfb28 100644 --- a/pkg/nbi/httprestful_test.go +++ b/pkg/nbi/httprestful_test.go @@ -477,14 +477,14 @@ func TestE2TChannelwithData(t *testing.T) { E2TAddress: swag.String(""), } dataChannel := make(chan *models.E2tData, 10) - go func() { _, _ = recvNewE2Tdata(dataChannel) }() + go func() { _, _,_ = recvNewE2Tdata(dataChannel) }() defer close(dataChannel) dataChannel <- &data2 } func TestE2TChannelwithNoData(t *testing.T) { dataChannel := make(chan *models.E2tData, 10) - go func() { _, _ = recvNewE2Tdata(dataChannel) }() + go func() { _, _ ,_= recvNewE2Tdata(dataChannel) }() defer close(dataChannel) } diff --git a/pkg/nbi/types.go b/pkg/nbi/types.go index 085486c..1acf09c 100644 --- a/pkg/nbi/types.go +++ b/pkg/nbi/types.go @@ -39,7 +39,7 @@ import ( type FetchAllXAppsHandler func(string) (*[]rtmgr.XApp, error) type RecvXappCallbackDataHandler func(<-chan *models.XappCallbackData) (*[]rtmgr.XApp, error) -type RecvNewE2TdataHandler func(<-chan *models.E2tData) (*rtmgr.E2TInstance, error) +type RecvNewE2TdataHandler func(<-chan *models.E2tData) (*rtmgr.E2TInstance, string, error) type LaunchRestHandler func(*string, chan<- *models.XappCallbackData, chan<- *models.XappSubscriptionData, chan<- *models.XappSubscriptionData, chan<- *models.E2tData, chan<- models.RanE2tMap, chan<- models.RanE2tMap, chan<- *models.E2tDeleteData) type ProvideXappHandleHandlerImpl func(chan<- *models.XappCallbackData, *models.XappCallbackData) error type RetrieveStartupDataHandler func(string, string, string, string, sdl.Engine) error diff --git a/pkg/rpe/rmr.go b/pkg/rpe/rmr.go index 80323a3..860c1eb 100644 --- a/pkg/rpe/rmr.go +++ b/pkg/rpe/rmr.go @@ -34,7 +34,7 @@ import ( "gerrit.o-ran-sc.org/r/ric-plt/xapp-frame/pkg/xapp" "routing-manager/pkg/rtmgr" "strconv" - "strings" + //"strings" ) type Rmr struct { @@ -88,7 +88,7 @@ func (r *Rmr) generateRMRPolicies(eps rtmgr.Endpoints, rcs *rtmgr.RicComponents, } rawrt = append(rawrt, key+"newrt|end\n") count := 0 - meidrt := key +"meid_map|start\n" +/* meidrt := key +"meid_map|start\n" for e2tkey, value := range rcs.E2Ts { xapp.Logger.Debug("rmr.E2T Key: %v", e2tkey) xapp.Logger.Debug("rmr.E2T Value: %v", value) @@ -101,6 +101,12 @@ func (r *Rmr) generateRMRPolicies(eps rtmgr.Endpoints, rcs *rtmgr.RicComponents, xapp.Logger.Debug("rmr.E2T Empty RAN LIST for FQDN: %v", e2tkey) } } + meidrt += key+"meid_map|end|" + strconv.Itoa(count) +"\n" */ + meidrt := key +"meid_map|start\n" + for _, value := range rcs.MeidMap { + meidrt += key + value + "\n" + count++ + } meidrt += key+"meid_map|end|" + strconv.Itoa(count) +"\n" rawrt = append(rawrt, meidrt) diff --git a/pkg/rtmgr/types.go b/pkg/rtmgr/types.go index 9378656..91a8aeb 100644 --- a/pkg/rtmgr/types.go +++ b/pkg/rtmgr/types.go @@ -99,6 +99,7 @@ type ConfigRtmgr struct { type RicComponents struct { XApps []XApp E2Ts map [string]E2TInstance + MeidMap []string Pcs PlatformComponents } diff --git a/pkg/sdl/file.go b/pkg/sdl/file.go index 969f7bd..7ac6594 100644 --- a/pkg/sdl/file.go +++ b/pkg/sdl/file.go @@ -34,6 +34,7 @@ import ( "gerrit.o-ran-sc.org/r/ric-plt/xapp-frame/pkg/xapp" "io/ioutil" "os" + "strings" "routing-manager/pkg/rtmgr" "routing-manager/pkg/models" ) @@ -112,7 +113,7 @@ func (f *File) WriteXApps(file string, xApps *[]rtmgr.XApp) error { return nil } -func (f *File) WriteNewE2TInstance(file string, E2TInst *rtmgr.E2TInstance) error { +func (f *File) WriteNewE2TInstance(file string, E2TInst *rtmgr.E2TInstance,meiddata string) error { xapp.Logger.Debug("Invoked sdl.WriteNewE2TInstance") xapp.Logger.Debug("file.WriteNewE2TInstance writes into file: " + file) xapp.Logger.Debug("file.WriteNewE2TInstance writes data: %v", *E2TInst) @@ -123,6 +124,12 @@ func (f *File) WriteNewE2TInstance(file string, E2TInst *rtmgr.E2TInstance) erro return errors.New("cannot read full ric data to modify xApps data, due to: " + err.Error()) } ricData.E2Ts[E2TInst.Fqdn] = *E2TInst + if (len(meiddata) > 0){ + ricData.MeidMap = []string {meiddata} + } else { + ricData.MeidMap = []string {} + } + byteValue, err := json.Marshal(ricData) if err != nil { @@ -145,8 +152,17 @@ func (f *File) WriteAssRANToE2TInstance(file string, rane2tmap models.RanE2tMap) xapp.Logger.Error("cannot get data from sdl interface due to: " + err.Error()) return errors.New("cannot read full ric data to modify xApps data, due to: " + err.Error()) } + + ricData.MeidMap = []string{} for _, element := range rane2tmap { xapp.Logger.Info("data received") + var str,meidar string + for _, meid := range element.RanNamelist { + meidar += meid + " " + } + str = "mme_ar|" + *element.E2TAddress + "|" + strings.TrimSuffix(meidar," ") + ricData.MeidMap = append(ricData.MeidMap,str) + for key, _ := range ricData.E2Ts { if key == *element.E2TAddress { var estObj rtmgr.E2TInstance @@ -178,8 +194,18 @@ func (f *File) WriteDisAssRANFromE2TInstance(file string, disassranmap models.Ra xapp.Logger.Error("cannot get data from sdl interface due to: " + err.Error()) return errors.New("cannot read full ric data to modify xApps data, due to: " + err.Error()) } + + var str,meiddel,meiddisdel string + ricData.MeidMap = []string{} for _, element := range disassranmap { xapp.Logger.Info("data received") + for _, meid := range element.RanNamelist { + meiddisdel += meid + " " + } + if ( len(element.RanNamelist) > 0 ) { + str = "mme_del|" + strings.TrimSuffix(meiddisdel," ") + ricData.MeidMap = append(ricData.MeidMap,str) + } e2taddress_key := *element.E2TAddress //Check whether the provided E2T Address is available in SDL as a key. //If exist, proceed further to check RAN list, Otherwise move to next E2T Instance @@ -189,7 +215,13 @@ func (f *File) WriteDisAssRANFromE2TInstance(file string, disassranmap models.Ra // If RAN list is empty, then routing manager assumes that all RANs attached associated to the particular E2T Instance to be removed. if len(element.RanNamelist) == 0 { xapp.Logger.Debug("RAN List is empty. So disassociating all RANs from the E2T Instance: %v ", *element.E2TAddress) - estObj.Ranlist = []string{} + for _, meid := range estObj.Ranlist { + meiddel += meid + " " + } + str = "mme_del|" + strings.TrimSuffix(meiddel," ") + ricData.MeidMap = append(ricData.MeidMap,str) + + estObj.Ranlist = []string{} } else { xapp.Logger.Debug("Remove only selected rans from E2T Instance: %v and %v ", ricData.E2Ts[e2taddress_key].Ranlist, element.RanNamelist) for _, disRanValue := range element.RanNamelist { @@ -230,11 +262,35 @@ func (f *File) WriteDeleteE2TInstance(file string, E2TInst *models.E2tDeleteData return errors.New("cannot read full ric data to modify xApps data, due to: " + err.Error()) } - delete(ricData.E2Ts, *E2TInst.E2TAddress) + ricData.MeidMap = []string {} + var delrow,meiddel string + if(len(E2TInst.RanNamelistTobeDissociated)>0) { + for _, meid := range E2TInst.RanNamelistTobeDissociated { + meiddel += meid + " " + } + delrow = "mme_del|" + strings.TrimSuffix(meiddel," ") + ricData.MeidMap = append(ricData.MeidMap,delrow) + } else { + if(len(ricData.E2Ts[*E2TInst.E2TAddress].Ranlist) > 0) { + for _, meid := range ricData.E2Ts[*E2TInst.E2TAddress].Ranlist { + meiddel += meid + " " + } + delrow = "mme_del|" + strings.TrimSuffix(meiddel," ") + ricData.MeidMap = append(ricData.MeidMap,delrow) + } + } + + delete(ricData.E2Ts, *E2TInst.E2TAddress) for _, element := range E2TInst.RanAssocList { + var str,meidar string xapp.Logger.Info("data received") + for _, meid := range element.RanNamelist { + meidar = meid + " " + } + str = "mme_ar|" + *element.E2TAddress + "|" + strings.TrimSuffix(meidar," ") + ricData.MeidMap = append(ricData.MeidMap,str) key := *element.E2TAddress if val, ok := ricData.E2Ts[key]; ok { diff --git a/pkg/sdl/sdl_test.go b/pkg/sdl/sdl_test.go index ff3bf50..5a675e0 100644 --- a/pkg/sdl/sdl_test.go +++ b/pkg/sdl/sdl_test.go @@ -97,9 +97,9 @@ WriteNewE2TInstance func TestWriteNewE2TInstance(t *testing.T) { var err error var file = File{} - file.WriteNewE2TInstance("", &stub.ValidE2TInstance) + file.WriteNewE2TInstance("", &stub.ValidE2TInstance,"") t.Log(err) - file.WriteNewE2TInstance("ut.rt", &stub.ValidE2TInstance) + file.WriteNewE2TInstance("ut.rt", &stub.ValidE2TInstance,"meid_arr") t.Log(err) } @@ -112,7 +112,7 @@ func TestWriteAssRANToE2TInstance(t *testing.T) { // File is not provided as argument file.WriteAssRANToE2TInstance("",stub.Rane2tmap) t.Log(err) - file.WriteNewE2TInstance("ut.rt", &stub.ValidE2TInstance) + file.WriteNewE2TInstance("ut.rt", &stub.ValidE2TInstance,"") file.WriteAssRANToE2TInstance("ut.rt",stub.Rane2tmap) t.Log(err) } @@ -127,11 +127,11 @@ func TestWriteDisAssRANFromE2TInstance(t *testing.T) { file.WriteDisAssRANFromE2TInstance("",stub.Rane2tmap) t.Log(err) //RAN list is empty - file.WriteNewE2TInstance("ut.rt", &stub.ValidE2TInstance) + file.WriteNewE2TInstance("ut.rt", &stub.ValidE2TInstance,"") file.WriteAssRANToE2TInstance("ut.rt",stub.Rane2tmap) file.WriteDisAssRANFromE2TInstance("ut.rt",stub.Rane2tmaponlyE2t) //RAN list is present - file.WriteNewE2TInstance("ut.rt", &stub.ValidE2TInstance) + file.WriteNewE2TInstance("ut.rt", &stub.ValidE2TInstance,"") file.WriteAssRANToE2TInstance("ut.rt",stub.Rane2tmap) file.WriteDisAssRANFromE2TInstance("ut.rt",stub.Rane2tmap) t.Log(err) @@ -151,17 +151,31 @@ func TestWriteDeleteE2TInstance(t *testing.T) { Name: "E2Tinstance1", Fqdn: "10.10.10.10:100", Ranlist: []string{"1", "2"}, - }, + },"meid_del|test", ) file.WriteNewE2TInstance("ut.rt", &rtmgr.E2TInstance{ Name: "E2Tinstance2", Fqdn: "11.11.11.11:100", Ranlist: []string{"3", "4"}, - }, + },"", ) file.WriteDeleteE2TInstance("ut.rt",&models.E2tDeleteData{ E2TAddress: swag.String("10.10.10.10:100"), - RanAssocList: models.RanE2tMap{ + //RanNamelistTobeDissociated: []string{"1","2"}, + RanAssocList: models.RanE2tMap{ + {E2TAddress: swag.String("11.11.11.11:100"),RanNamelist: []string{"5","6"}}, + {E2TAddress: swag.String("doesntexist"),RanNamelist: []string{}}, }, + }) + file.WriteNewE2TInstance("ut.rt", &rtmgr.E2TInstance{ + Name: "E2Tinstance1", + Fqdn: "10.10.10.10:100", + Ranlist: []string{"1", "2"}, + },"meid_del|test", + ) + file.WriteDeleteE2TInstance("ut.rt",&models.E2tDeleteData{ + E2TAddress: swag.String("10.10.10.10:100"), + RanNamelistTobeDissociated: []string{"1","2"}, + RanAssocList: models.RanE2tMap{ {E2TAddress: swag.String("11.11.11.11:100"),RanNamelist: []string{"5","6"}}, {E2TAddress: swag.String("doesntexist"),RanNamelist: []string{}}, }, }) diff --git a/pkg/sdl/types.go b/pkg/sdl/types.go index f4a9125..821f8e5 100644 --- a/pkg/sdl/types.go +++ b/pkg/sdl/types.go @@ -45,7 +45,7 @@ type Engine interface { ReadAll(string) (*rtmgr.RicComponents, error) WriteAll(string, *rtmgr.RicComponents) error WriteXApps(string, *[]rtmgr.XApp) error - WriteNewE2TInstance(string, *rtmgr.E2TInstance) error + WriteNewE2TInstance(string, *rtmgr.E2TInstance,string) error WriteAssRANToE2TInstance(string, models.RanE2tMap) error WriteDisAssRANFromE2TInstance(string, models.RanE2tMap) error WriteDeleteE2TInstance(string, *models.E2tDeleteData) error diff --git a/tst/robot/Multiple_E2T_tests.txt b/tst/robot/Multiple_E2T_tests.txt new file mode 100644 index 0000000..45fe861 --- /dev/null +++ b/tst/robot/Multiple_E2T_tests.txt @@ -0,0 +1,433 @@ +*** Settings *** +Suite Setup Suite Setup +Suite Teardown Suite Teardown +Test Timeout 6 minutes +Library SSHLibrary +Library String +Library Collections + +*** Variables *** +${NEAR_RT_RIC_PLT_VM_USERNAME} root # User name of Near-RT RIC Platform VM +${NEAR_RT_RIC_PLT_VM_PASSWORD} root # Password of Near-RT RIC Platform VM +${NEAR_RT_RIC_PLT_VM_IP} 10.53.73.29 # IP Address of the Near-RT RIC Platform VM +${NEAR_RT_RIC_PLT_HOST_IP} 10.43.8.136 +${NEAR_RT_RIC_PLT_RTMGR_POD_NAME} deployment-ricplt-rtmgr-994cd9b46-x4bf2 +${NEAR_RT_RIC_PLT_E2MGR_POD_NAME} deployment-ricplt-e2mgr-7596586d98-vpxbp +${NEAR_RT_RIC_PLT_RTMGR_SERVICE_NAME} service-ricplt-rtmgr-http +${NEAR_RT_RIC_PLT_E2MGR_SERVICE_NAME} service-ricplt-e2mgr-http + +*** Test Cases *** +r3_multiple_e2t_instances_support_scenario1 + [Documentation] This Test case covers the checks of Multiple E2T instance support feature + ... + ... Scenario 1 [ Positive Case] : + ... + ... Step1 : \ Create a standalone E2T instance and verify whether its added in datastore(SDL file) + ... Check also routes for 1090 and 1101 are mapped + ... + ... Step2 : \ Associate R1,R2 and R3 to newly created E2T instance one and verify whether its updated in RanList. + ... + ... Step3 : \ Disassociate R1 and R3 only from E2T instance and verify R2 exists & R1 and R3 removed from RanList + ... + ... Step4 : \ Delete E2T instance once and verify the instance and R2 is removed from datastore(SDL file) + ... Check also routes are demapped for message types 1090 and 1101 + [Tags] RICPLT_MultipleE2T + ##Scenario1 execution + ##1: Create one E2T Instnace + Log "1. Create one E2T instance " + ##Delete If it exists already + ${cmd_output} Execute command kubectl exec -n ricplt ${NEAR_RT_RIC_PLT_E2MGR_POD_NAME} \ -- curl -X DELETE "http://service-ricplt-rtmgr-http:3800/ric/v1/handles/e2t" -H "accept: application/json" -H "Content-Type: application/json" -d "{ \\"E2TAddress\\": \\"10.105.143.108:38000\\"}" + ${cmd_output} Execute command kubectl exec -n ricplt ${NEAR_RT_RIC_PLT_E2MGR_POD_NAME} \ -- curl -X POST "http://service-ricplt-rtmgr-http:3800/ric/v1/handles/e2t" -H "accept: application/json" -H "Content-Type: application/json" -d "{ \\"E2TAddress\\": \\"10.105.143.108:38000\\"}" + log ${cmd_output} + ##2: Verify the file /db/rt.json file whether E2T instance is updated with proper details. + Log "2. Verify the file /db/rt.json file whether E2T instance is updated with proper details." + ${cmd_output} Execute command kubectl exec -n ricplt ${NEAR_RT_RIC_PLT_RTMGR_POD_NAME} cat /db/rt.json | json_pp + log ${cmd_output} + ${cmd_output1} Execute command kubectl logs -n ricplt ${NEAR_RT_RIC_PLT_RTMGR_POD_NAME} --tail=12 | grep meid + log ${cmd_output1} + Run Keyword Should Contain ${cmd_output} "name" : "E2TERMINST" + Run Keyword Should Contain ${cmd_output} "ranlist" : [] + Run Keyword Should Contain ${cmd_output} "fqdn" : "10.105.143.108:38000" + Run Keyword Should Contain ${cmd_output1} mse|1090,service-ricplt-e2mgr-rmr.ricplt:3801|-1|10.105.143.108:38000 + Run Keyword Should Contain ${cmd_output1} mse|1101,service-ricplt-e2mgr-rmr.ricplt:3801|-1|10.105.143.108:38000 + Run Keyword Should Contain ${cmd_output1} meid_map|end|0 + + ##3: Associate R1,R2,R3 to E2T1 + Log "3. Associate R1,R2,R3 to E2T1" + ${cmd_output} Execute command kubectl exec -n ricplt ${NEAR_RT_RIC_PLT_E2MGR_POD_NAME} -- curl -X POST "http://service-ricplt-rtmgr-http:3800/ric/v1/handles/associate-ran-to-e2t" -H "accept: application/json" -H "Content-Type: application/json" -d "[ { \\"E2TAddress\\": \\"10.105.143.108:38000\\", \\"ranNamelist\\": [ \\"R1\\", \\"R2\\", \\"R3\\" ] }]" + log ${cmd_output} + ##4: Verify the file /db/rt.json whether RANs are associated succsessfully. + Log "4. Verify the file /db/rt.json whether RANs are associated succsessfully. " + ${cmd_output} Execute command kubectl exec -n ricplt ${NEAR_RT_RIC_PLT_RTMGR_POD_NAME} cat /db/rt.json + log ${cmd_output} + ${cmd_output1} Execute command kubectl logs -n ricplt ${NEAR_RT_RIC_PLT_RTMGR_POD_NAME} --tail=12 | grep meid + log ${cmd_output1} + Run Keyword Should Contain ${cmd_output} "name":"E2TERMINST" + Run Keyword Should Contain ${cmd_output} "fqdn":"10.105.143.108:38000" + Run Keyword Should Contain ${cmd_output} "ranlist":["R1","R2","R3"] + Run Keyword Should Contain ${cmd_output1} mme_ar|10.105.143.108:38000|R1 R2 R3 + Run Keyword Should Contain ${cmd_output1} meid_map|end|1 + ##5: Disassociate R1, R3 from E2T1 + Log "5. Disassociate R1 and R3 from E2T1" + ${cmd_output} Execute command kubectl exec -n ricplt ${NEAR_RT_RIC_PLT_E2MGR_POD_NAME} -- curl -X POST "http://service-ricplt-rtmgr-http:3800/ric/v1/handles/dissociate-ran" -H "accept: application/json" -H "Content-Type: application/json" -d "[ { \\"E2TAddress\\": \\"10.105.143.108:38000\\", \\"ranNamelist\\": [ \\"R1\\", \\"R3\\" ] }]" + log ${cmd_output} + ##6: Verify the file /db/rt.json whether R1 and R3 are removed & R2 exists in Ran List. + Log "6: Verify the file /db/rt.json whether R1 and R3 are removed & R2 exists in Ran List." + ${cmd_output} Execute command kubectl exec -n ricplt ${NEAR_RT_RIC_PLT_RTMGR_POD_NAME} cat /db/rt.json + log ${cmd_output} + ${cmd_output1} Execute command kubectl logs -n ricplt ${NEAR_RT_RIC_PLT_RTMGR_POD_NAME} --tail=12 | grep meid + log ${cmd_output1} + Run Keyword Should Contain ${cmd_output} "name":"E2TERMINST" + Run Keyword Should Contain ${cmd_output} "fqdn":"10.105.143.108:38000" + Run Keyword Should Contain ${cmd_output} "ranlist":["R2"] + Run Keyword Should Contain ${cmd_output1} mme_del|R1 R3 + Run Keyword Should Contain ${cmd_output1} meid_map|end|1 + ##7: Delete E2T Instance + Log "7. Delete E2T instance " + ${cmd_output} Execute command kubectl exec -n ricplt ${NEAR_RT_RIC_PLT_E2MGR_POD_NAME} -- curl -X DELETE "http://service-ricplt-rtmgr-http:3800/ric/v1/handles/e2t" -H "accept: application/json" -H "Content-Type: application/json" -d "{ \\"E2TAddress\\": \\"10.105.143.108:38000\\"}" + ##8: Verify the file /db/rt.json file whether E2T instance is removed. + Log "8. Verify the file /db/rt.json file whether E2T instance is removed" + ${cmd_output} Execute command kubectl exec -n ricplt ${NEAR_RT_RIC_PLT_RTMGR_POD_NAME} cat /db/rt.json | json_pp + log ${cmd_output} + ${cmd_output1} Execute command kubectl logs -n ricplt ${NEAR_RT_RIC_PLT_RTMGR_POD_NAME} --tail=12 | grep meid + log ${cmd_output1} + Run Keyword Should Not Contain ${cmd_output} "ranlist" : [] + Run Keyword Should Not Contain ${cmd_output} "fqdn" : "10.105.143.108:38000" + Run Keyword Should Contain ${cmd_output1} mme_del|R2 + Run Keyword Should Contain ${cmd_output1} meid_map|end|1 + Run Keyword Should Not Contain ${cmd_output1} mse|1090,service-ricplt-e2mgr-rmr.ricplt:3801|-1|10.105.143.108:38000 + Run Keyword Should Not Contain ${cmd_output1} mse|1101,service-ricplt-e2mgr-rmr.ricplt:3801|-1|10.105.143.108:38000 + +r3_multiple_e2t_instances_support_scenario2 + [Documentation] This Test case covers the checks of Multiple E2T instance support feature + ... + ... Scenario 2 [ Positive Case] : + ... + ... Step1 : \ Create an E2T instance along with RANList R1,R2 and verify whether its added in datastore(SDL file) + ... + ... Step2 : \ Associate R3 and R4 to newly created E2T instance one and verify whether its updated in RanList. + ... + ... Step3 : \ Disassociate all the RAN's from E2T instance and verify the same + ... + ... Step4 : \ Delete E2T instance once and verify the instance removed from datastore(SDL file) + [Tags] RICPLT_MultipleE2T + ##Scenario1 execution + ##1: Create one E2T Instnace + Log "1. Create one E2T instance " + ##Delete If it exists already + ${cmd_output} Execute command kubectl exec -n ricplt ${NEAR_RT_RIC_PLT_E2MGR_POD_NAME} \ -- curl -X DELETE "http://service-ricplt-rtmgr-http:3800/ric/v1/handles/e2t" -H "accept: application/json" -H "Content-Type: application/json" -d "{ \\"E2TAddress\\": \\"10.105.143.108:38000\\"}" + ${cmd_output} Execute command kubectl exec -n ricplt ${NEAR_RT_RIC_PLT_E2MGR_POD_NAME} \ -- curl -X POST "http://service-ricplt-rtmgr-http:3800/ric/v1/handles/e2t" -H "accept: application/json" -H "Content-Type: application/json" -d "{ \\"E2TAddress\\": \\"10.105.143.108:38000\\", \\"ranNamelist\\": [ \\"R1\\", \\"R2\\" ]}" + log ${cmd_output} + ##2: Verify the file /db/rt.json file whether E2T instance is updated with proper details. + Log "2. Verify the file /db/rt.json file whether E2T instance is updated with proper details." + ${cmd_output} Execute command kubectl exec -n ricplt ${NEAR_RT_RIC_PLT_RTMGR_POD_NAME} cat /db/rt.json + log ${cmd_output} + ${cmd_output1} Execute command kubectl logs -n ricplt ${NEAR_RT_RIC_PLT_RTMGR_POD_NAME} --tail=12 | grep meid + log ${cmd_output1} + Run Keyword Should Contain ${cmd_output} "name":"E2TERMINST" + Run Keyword Should Contain ${cmd_output} "ranlist":["R1","R2"] + Run Keyword Should Contain ${cmd_output} "fqdn":"10.105.143.108:38000" + Run Keyword Should Contain ${cmd_output1} mse|1090,service-ricplt-e2mgr-rmr.ricplt:3801|-1|10.105.143.108:38000 + Run Keyword Should Contain ${cmd_output1} mse|1101,service-ricplt-e2mgr-rmr.ricplt:3801|-1|10.105.143.108:38000 + Run Keyword Should Contain ${cmd_output1} mme_ar|10.105.143.108:38000|R1 R2 + Run Keyword Should Contain ${cmd_output1} meid_map|end|1 + ##3.Associate new RAN's R3,R4 to E2T1" + Log "3. Associate R3,R4 to E2T1" + ${cmd_output} Execute command kubectl exec -n ricplt ${NEAR_RT_RIC_PLT_E2MGR_POD_NAME} -- curl -X POST "http://service-ricplt-rtmgr-http:3800/ric/v1/handles/associate-ran-to-e2t" -H "accept: application/json" -H "Content-Type: application/json" -d "[ { \\"E2TAddress\\": \\"10.105.143.108:38000\\", \\"ranNamelist\\": [ \\"R3\\", \\"R4\\" ] }]" + log ${cmd_output} + ##4: Verify the file /db/rt.json whether RANs are associated succsessfully. + Log "4. Verify the file /db/rt.json whether RANs are associated succsessfully. " + ${cmd_output} Execute command kubectl exec -n ricplt ${NEAR_RT_RIC_PLT_RTMGR_POD_NAME} cat /db/rt.json + log ${cmd_output} + ${cmd_output1} Execute command kubectl logs -n ricplt ${NEAR_RT_RIC_PLT_RTMGR_POD_NAME} --tail=12 | grep meid + log ${cmd_output1} + Run Keyword Should Contain ${cmd_output} "name":"E2TERMINST" + Run Keyword Should Contain ${cmd_output} "name":"E2TERMINST" + Run Keyword Should Contain ${cmd_output} "fqdn":"10.105.143.108:38000" + Run Keyword Should Contain ${cmd_output} "ranlist":["R1","R2","R3","R4"] + Run Keyword Should Contain ${cmd_output1} mme_ar|10.105.143.108:38000|R3 R4 + Run Keyword Should Contain ${cmd_output1} meid_map|end|1 + ##5: Disassociate all RAN's from E2T1 + Log "5. Disassociate all RAN's from E2T1" + ${cmd_output} Execute command kubectl exec -n ricplt ${NEAR_RT_RIC_PLT_E2MGR_POD_NAME} -- curl -X POST "http://service-ricplt-rtmgr-http:3800/ric/v1/handles/dissociate-ran" -H "accept: application/json" -H "Content-Type: application/json" -d "[ { \\"E2TAddress\\": \\"10.105.143.108:38000\\" }]" + log ${cmd_output} + ##6: Verify the file /db/rt.json whether R1,R2,R3 and R4 are removed. + Log "6: Verify the file /db/rt.json whether R1 R2 R3 and R4 are removed in Ran List." + ${cmd_output} Execute command kubectl exec -n ricplt ${NEAR_RT_RIC_PLT_RTMGR_POD_NAME} cat /db/rt.json + log ${cmd_output} + ${cmd_output1} Execute command kubectl logs -n ricplt ${NEAR_RT_RIC_PLT_RTMGR_POD_NAME} --tail=12 | grep meid + log ${cmd_output1} + Run Keyword Should Contain ${cmd_output} "name":"E2TERMINST" + Run Keyword Should Contain ${cmd_output} "fqdn":"10.105.143.108:38000" + Run Keyword Should Contain ${cmd_output} "ranlist":[] + Run Keyword Should Contain ${cmd_output1} mme_del|R1 R2 R3 R4 + Run Keyword Should Contain ${cmd_output1} meid_map|end|1 + ##7: Delete E2T Instance + Log "7. Delete E2T instance " + ${cmd_output} Execute command kubectl exec -n ricplt ${NEAR_RT_RIC_PLT_E2MGR_POD_NAME} -- curl -X DELETE "http://service-ricplt-rtmgr-http:3800/ric/v1/handles/e2t" -H "accept: application/json" -H "Content-Type: application/json" -d "{ \\"E2TAddress\\": \\"10.105.143.108:38000\\"}" + ##8: Verify the file /db/rt.json file whether E2T instance is removed. + Log "8. Verify the file /db/rt.json file whether E2T instance is removed" + ${cmd_output} Execute command kubectl exec -n ricplt ${NEAR_RT_RIC_PLT_RTMGR_POD_NAME} cat /db/rt.json | json_pp + log ${cmd_output} + ${cmd_output1} Execute command kubectl logs -n ricplt ${NEAR_RT_RIC_PLT_RTMGR_POD_NAME} --tail=12 | grep meid + log ${cmd_output1} + Run Keyword Should Not Contain ${cmd_output} "ranlist" : [] + Run Keyword Should Not Contain ${cmd_output} "fqdn" : "10.105.143.108:38000" + Run Keyword Should Contain ${cmd_output1} meid_map|end|0 + Run Keyword Should Not Contain ${cmd_output1} mse|1090,service-ricplt-e2mgr-rmr.ricplt:3801|-1|10.105.143.108:38000 + Run Keyword Should Not Contain ${cmd_output1} mse|1101,service-ricplt-e2mgr-rmr.ricplt:3801|-1|10.105.143.108:38000 + +r3_multiple_e2t_instances_support_scenario3 + [Documentation] This Test case covers the checks of Multiple E2T instance support feature + ... + ... Scenario 3 [ Positive Case] : + ... + ... Step1 : \ Create an E2T instance along with RANList R1,R2 and verify whether its added in datastore(SDL file) + ... + ... Step2 : \ Delete E2T instance by providing the RAN list and verify the instance removed from datastore(SDL file) + [Tags] RICPLT_MultipleE2T + ##Scenario1 execution + ##1: Create one E2T Instnace + Log "1. Create one E2T instance " + ##Delete If it exists already + ${cmd_output} Execute command kubectl exec -n ricplt ${NEAR_RT_RIC_PLT_E2MGR_POD_NAME} \ -- curl -X DELETE "http://service-ricplt-rtmgr-http:3800/ric/v1/handles/e2t" -H "accept: application/json" -H "Content-Type: application/json" -d "{ \\"E2TAddress\\":\\"10.105.143.108:38000\\"}" + ${cmd_output} Execute command kubectl exec -n ricplt ${NEAR_RT_RIC_PLT_E2MGR_POD_NAME} \ -- curl -X POST "http://service-ricplt-rtmgr-http:3800/ric/v1/handles/e2t" -H "accept: application/json" -H "Content-Type: application/json" -d "{ \\"E2TAddress\\": \\"10.105.143.108:38000\\", \\"ranNamelist\\": [ \\"R1\\", \\"R2\\" ]}" + log ${cmd_output} + ##2: Verify the file /db/rt.json file whether E2T instance is updated with proper details. + Log "2. Verify the file /db/rt.json file whether E2T instance is updated with proper details." + ${cmd_output} Execute command kubectl exec -n ricplt ${NEAR_RT_RIC_PLT_RTMGR_POD_NAME} cat /db/rt.json + log ${cmd_output} + ${cmd_output1} Execute command kubectl logs -n ricplt ${NEAR_RT_RIC_PLT_RTMGR_POD_NAME} --tail=12 | grep meid + log ${cmd_output1} + Run Keyword Should Contain ${cmd_output} "name":"E2TERMINST" + Run Keyword Should Contain ${cmd_output} "ranlist":["R1","R2"] + Run Keyword Should Contain ${cmd_output} "fqdn":"10.105.143.108:38000" + Run Keyword Should Contain ${cmd_output1} mse|1090,service-ricplt-e2mgr-rmr.ricplt:3801|-1|10.105.143.108:38000 + Run Keyword Should Contain ${cmd_output1} mme_ar|10.105.143.108:38000|R1 R2 + Run Keyword Should Contain ${cmd_output1} meid_map|end|1 + ##3: Delete E2T Instance + Log "7. Delete E2T instance " + ${cmd_output} Execute command kubectl exec -n ricplt ${NEAR_RT_RIC_PLT_E2MGR_POD_NAME} -- curl -X DELETE "http://service-ricplt-rtmgr-http:3800/ric/v1/handles/e2t" -H "accept: application/json" -H "Content-Type: application/json" -d "{ \\"E2TAddress\\": \\"10.105.143.108:38000\\", \\"ranNamelistTobeDissociated\\": [ \\"R1\\", \\"R2\\" ]}" + ##8: Verify the file /db/rt.json file whether E2T instance is removed. + Log "8. Verify the file /db/rt.json file whether E2T instance is removed" + ${cmd_output} Execute command kubectl exec -n ricplt ${NEAR_RT_RIC_PLT_RTMGR_POD_NAME} cat /db/rt.json | json_pp + log ${cmd_output} + ${cmd_output1} Execute command kubectl logs -n ricplt ${NEAR_RT_RIC_PLT_RTMGR_POD_NAME} --tail=12 | grep meid + log ${cmd_output1} + Run Keyword Should Not Contain ${cmd_output} "ranlist" : [] + Run Keyword Should Not Contain ${cmd_output} "fqdn" : "10.105.143.108:38000" + Run Keyword Should Contain ${cmd_output1} meid_map|end|1 + Run Keyword Should Contain ${cmd_output1} mme_del|R1 R2 + Run Keyword Should Not Contain ${cmd_output1} mse|1090,service-ricplt-e2mgr-rmr.ricplt:3801|-1|10.105.143.108:38000 + Run Keyword Should Not Contain ${cmd_output1} mse|1101,service-ricplt-e2mgr-rmr.ricplt:3801|-1|10.105.143.108:38000 + + +r3_multiple_e2t_instances_support_scenario4 + [Documentation] This Test case covers the checks of Multiple E2T instance support feature + ... + ... Scenario 4 [ Positive Case] : + ... + ... Step1 : \ Create two E2T instances E2T1 and E2T2 along with RANList R11 and R21 respectively, verify whether its added in datastore(SDL file) + ... + ... Step2 : \ Associate R12 and R22 to newly created E2T1 and E2T2 instance respectively and verify whether its updated in RanList. + ... + ... Step3 : \ Disassociate all the RAN's from E2T1 instance and R23 R21 from E2T2 instance and verify the same + ... + ... Step4 : \ Delete E2T2 instance and associate R22 to E2T1 instance and verify the from datastore(SDL file) + [Tags] RICPLT_MultipleE2T + ##Scenario1 execution + ##1: Create one E2T Instnace + Log "1. Create E2T instances " + ##Delete If it exists already + ${cmd_output} Execute command kubectl exec -n ricplt ${NEAR_RT_RIC_PLT_E2MGR_POD_NAME} \ -- curl -X DELETE "http://service-ricplt-rtmgr-http:3800/ric/v1/handles/e2t" -H "accept: application/json" -H "Content-Type: application/json" -d "{ \\"E2TAddress\\": \\"10.105.143.108:38000\\"}" + ${cmd_output} Execute command kubectl exec -n ricplt ${NEAR_RT_RIC_PLT_E2MGR_POD_NAME} \ -- curl -X DELETE "http://service-ricplt-rtmgr-http:3800/ric/v1/handles/e2t" -H "accept: application/json" -H "Content-Type: application/json" -d "{ \\"E2TAddress\\": \\"10.105.143.108:38001\\"}" + ${cmd_output} Execute command kubectl exec -n ricplt ${NEAR_RT_RIC_PLT_E2MGR_POD_NAME} \ -- curl -X POST "http://service-ricplt-rtmgr-http:3800/ric/v1/handles/e2t" -H "accept: application/json" -H "Content-Type: application/json" -d "{ \\"E2TAddress\\": \\"10.105.143.108:38000\\", \\"ranNamelist\\": [ \\"R11\\" ]}" + ${cmd_output} Execute command kubectl exec -n ricplt ${NEAR_RT_RIC_PLT_E2MGR_POD_NAME} \ -- curl -X POST "http://service-ricplt-rtmgr-http:3800/ric/v1/handles/e2t" -H "accept: application/json" -H "Content-Type: application/json" -d "{ \\"E2TAddress\\": \\"10.105.143.108:38001\\", \\"ranNamelist\\": [ \\"R21\\" ]}" + log ${cmd_output} + ##2: Verify the file /db/rt.json file whether E2T instance is updated with proper details. + Log "2. Verify the file /db/rt.json file whether E2T instance is updated with proper details." + ${cmd_output} Execute command kubectl exec -n ricplt ${NEAR_RT_RIC_PLT_RTMGR_POD_NAME} cat /db/rt.json + log ${cmd_output} + ${cmd_output1} Execute command kubectl logs -n ricplt ${NEAR_RT_RIC_PLT_RTMGR_POD_NAME} --tail=35 | grep meid + log ${cmd_output1} + Run Keyword Should Contain ${cmd_output} "name":"E2TERMINST" + Run Keyword Should Contain ${cmd_output} "ranlist":["R11"] + Run Keyword Should Contain ${cmd_output} "fqdn":"10.105.143.108:38000" + Run Keyword Should Contain ${cmd_output} "ranlist":["R21"] + Run Keyword Should Contain ${cmd_output} "fqdn":"10.105.143.108:38001" +#Run Keyword Should Contain ${cmd_output1} mse|1090,service-ricplt-e2mgr-rmr.ricplt:3801|-1|10.105.143.108:38001,10.105.143.108:38000 +#Run Keyword Should Contain ${cmd_output1} mse|1101,service-ricplt-e2mgr-rmr.ricplt:3801|-1|10.105.143.108:38001,10.105.143.108:38000 + Run Keyword Should Contain X Times ${cmd_output1} 10.105.143.108:38000 4 + Run Keyword Should Contain X Times ${cmd_output1} 10.105.143.108:38001 6 + Run Keyword Should Contain ${cmd_output1} mme_ar|10.105.143.108:38001|R21 + Run Keyword Should Contain ${cmd_output1} meid_map|end|1 + ##3.Associate RAN's R12 to E2T1 and R22 to E2T2" + Log "3. Associate R12 to E2T1 and R22 to E2T2" + ${cmd_output} Execute command kubectl exec -n ricplt ${NEAR_RT_RIC_PLT_E2MGR_POD_NAME} -- curl -X POST "http://service-ricplt-rtmgr-http:3800/ric/v1/handles/associate-ran-to-e2t" -H "accept: application/json" -H "Content-Type: application/json" -d "[ { \\"E2TAddress\\": \\"10.105.143.108:38000\\", \\"ranNamelist\\": [ \\"R12\\" ] }]" + log ${cmd_output} + ${cmd_output} Execute command kubectl exec -n ricplt ${NEAR_RT_RIC_PLT_E2MGR_POD_NAME} -- curl -X POST "http://service-ricplt-rtmgr-http:3800/ric/v1/handles/associate-ran-to-e2t" -H "accept: application/json" -H "Content-Type: application/json" -d "[ { \\"E2TAddress\\": \\"10.105.143.108:38001\\", \\"ranNamelist\\": [ \\"R22\\" ] }]" + log ${cmd_output} + ##4: Verify the file /db/rt.json whether RANs are associated succsessfully. + Log "4. Verify the file /db/rt.json whether RANs are associated succsessfully. " + ${cmd_output} Execute command kubectl exec -n ricplt ${NEAR_RT_RIC_PLT_RTMGR_POD_NAME} cat /db/rt.json + log ${cmd_output} + ##5. Associate R13 and R23 in a single curl command to E2T1 and E2T2 respectively + Log "5. Associate R13 and R23 in a single curl command to E2T1 and E2T2 respectively" + ${cmd_output} Execute command kubectl exec -n ricplt ${NEAR_RT_RIC_PLT_E2MGR_POD_NAME} -- curl -X POST "http://service-ricplt-rtmgr-http:3800/ric/v1/handles/associate-ran-to-e2t" -H "accept: application/json" -H "Content-Type: application/json" -d "[ { \\"E2TAddress\\": \\"10.105.143.108:38000\\", \\"ranNamelist\\": [ \\"R13\\"] }, { \\"E2TAddress\\": \\"10.105.143.108:38001\\",\\"ranNamelist\\": [ \\"R23\\"] }]" + ${cmd_output} Execute command kubectl exec -n ricplt ${NEAR_RT_RIC_PLT_RTMGR_POD_NAME} cat /db/rt.json + log ${cmd_output} + ${cmd_output1} Execute command kubectl logs -n ricplt ${NEAR_RT_RIC_PLT_RTMGR_POD_NAME} --tail=25 | grep meid + log ${cmd_output1} + Run Keyword Should Contain ${cmd_output} "name":"E2TERMINST" + Run Keyword Should Contain ${cmd_output} "ranlist":["R11","R12","R13"] + Run Keyword Should Contain ${cmd_output} "fqdn":"10.105.143.108:38000" + Run Keyword Should Contain ${cmd_output} "ranlist":["R21","R22","R23"] + Run Keyword Should Contain ${cmd_output} "fqdn":"10.105.143.108:38001" + Run Keyword Should Contain ${cmd_output1} mme_ar|10.105.143.108:38000|R13 + Run Keyword Should Contain ${cmd_output1} mme_ar|10.105.143.108:38001|R23 + Run Keyword Should Contain ${cmd_output1} meid_map|end|2 + ##6: Disassociate all RAN's from E2T1 R21 and R23 from E2T2 + Log "6: Disassociate all RAN's from E2T1 R21 and R23 from E2T2" + ${cmd_output} Execute command kubectl exec -n ricplt ${NEAR_RT_RIC_PLT_E2MGR_POD_NAME} -- curl -X POST "http://service-ricplt-rtmgr-http:3800/ric/v1/handles/dissociate-ran" -H "accept: application/json" -H "Content-Type: application/json" -d "[ { \\"E2TAddress\\": \\"10.105.143.108:38000\\" } ,{ \\"E2TAddress\\": \\"10.105.143.108:38001\\", \\"ranNamelist\\": [ \\"R21\\", \\"R23\\" ] }]" + log ${cmd_output} + ##7: Verify the file /db/rt.json whether R1,R2,R3 and R4 are removed. + Log "7: Verify the file /db/rt.json whether R1 R2 R3 and R4 are removed in Ran List." + ${cmd_output} Execute command kubectl exec -n ricplt ${NEAR_RT_RIC_PLT_RTMGR_POD_NAME} cat /db/rt.json + log ${cmd_output} + ${cmd_output1} Execute command kubectl logs -n ricplt ${NEAR_RT_RIC_PLT_RTMGR_POD_NAME} --tail=20 | grep meid + log ${cmd_output1} + Run Keyword Should Contain ${cmd_output} "name":"E2TERMINST" + Run Keyword Should Contain ${cmd_output} "fqdn":"10.105.143.108:38000" + Run Keyword Should Contain ${cmd_output} "ranlist":[] + Run Keyword Should Contain ${cmd_output} "fqdn":"10.105.143.108:38001" + Run Keyword Should Contain ${cmd_output} "ranlist":["R22"] + Run Keyword Should Contain ${cmd_output1} mme_del|R11 R12 R13 + Run Keyword Should Contain ${cmd_output1} mme_del|R21 R23 + Run Keyword Should Contain ${cmd_output1} meid_map|end|2 + ##8: Delete E2T2 Instance and Associate R22 to E2T1 + Log "8. Delete E2T2 instance and Associate R22 to E2T1" + ${cmd_output} Execute command kubectl exec -n ricplt ${NEAR_RT_RIC_PLT_E2MGR_POD_NAME} -- curl -X DELETE "http://service-ricplt-rtmgr-http:3800/ric/v1/handles/e2t" -H "accept: application/json" -H "Content-Type: application/json" -d "{ \\"E2TAddress\\": \\"10.105.143.108:38001\\", \\"ranAssocList\\": [ { \\"E2TAddress\\": \\"10.105.143.108:38000\\", \\"ranNamelist\\": [ \\"R22\\" ] } ]}" + sleep 1 + ##9: Verify the file /db/rt.json file whether E2T instance is removed. + Log "9. Verify the file /db/rt.json file whether E2T instance is removed" + ${cmd_output} Execute command kubectl exec -n ricplt ${NEAR_RT_RIC_PLT_RTMGR_POD_NAME} cat /db/rt.json + log ${cmd_output} + ${cmd_output1} Execute command kubectl logs -n ricplt ${NEAR_RT_RIC_PLT_RTMGR_POD_NAME} --tail=12 | grep meid + log ${cmd_output1} + Run Keyword Should Not Contain ${cmd_output} "ranlist" : [] + Run Keyword Should Contain ${cmd_output} "fqdn":"10.105.143.108:38000" + Run Keyword Should Not Contain ${cmd_output} "fqdn" : "10.105.143.108:38001" + Run Keyword Should Contain ${cmd_output} "ranlist":["R22"] + Run Keyword Should Contain ${cmd_output1} mme_del|R22 + Run Keyword Should Contain ${cmd_output1} mme_ar|10.105.143.108:38000|R22 + Run Keyword Should Contain ${cmd_output1} meid_map|end|2 + + +r3_multiple_e2t_instances_support_scenario5 + [Documentation] This Test case covers the checks of Multiple E2T instance support feature + ... + ... Scenario 5 [ Positive Case] : + ... + ... Step1 : \ Create two E2T instance and verify whether its added in datastore(SDL file) + ... Check also routes for 1090 and 1101 are mapped + ... + ... Step2 : \ Remove one E2T instance and check that message types 1090 and 1101 still present. + ... + ... Step3 : \ Remove second E2T and verify message types 1090 and 1101 are also removed + ... + [Tags] RICPLT_MultipleE2T + ##Scenario1 execution + ##1: Create one E2T Instnace + Log "1. Create E2T instances " + ##Delete If it exists already + ${cmd_output} Execute command kubectl exec -n ricplt ${NEAR_RT_RIC_PLT_E2MGR_POD_NAME} \ -- curl -X DELETE "http://service-ricplt-rtmgr-http:3800/ric/v1/handles/e2t" -H "accept: application/json" -H "Content-Type: application/json" -d "{ \\"E2TAddress\\": \\"10.105.143.108:38000\\"}" + ${cmd_output} Execute command kubectl exec -n ricplt ${NEAR_RT_RIC_PLT_E2MGR_POD_NAME} \ -- curl -X DELETE "http://service-ricplt-rtmgr-http:3800/ric/v1/handles/e2t" -H "accept: application/json" -H "Content-Type: application/json" -d "{ \\"E2TAddress\\": \\"10.105.143.108:38001\\"}" + ${cmd_output} Execute command kubectl exec -n ricplt ${NEAR_RT_RIC_PLT_E2MGR_POD_NAME} \ -- curl -X POST "http://service-ricplt-rtmgr-http:3800/ric/v1/handles/e2t" -H "accept: application/json" -H "Content-Type: application/json" -d "{ \\"E2TAddress\\": \\"10.105.143.108:38000\\" }" + ${cmd_output} Execute command kubectl exec -n ricplt ${NEAR_RT_RIC_PLT_E2MGR_POD_NAME} \ -- curl -X POST "http://service-ricplt-rtmgr-http:3800/ric/v1/handles/e2t" -H "accept: application/json" -H "Content-Type: application/json" -d "{ \\"E2TAddress\\": \\"10.105.143.108:38001\\" }" + log ${cmd_output} + ##2: Verify the file /db/rt.json file whether E2T instance is updated with proper details. + Log "2. Verify the file /db/rt.json file whether E2T instance is updated with proper details." + ${cmd_output} Execute command kubectl exec -n ricplt ${NEAR_RT_RIC_PLT_RTMGR_POD_NAME} cat /db/rt.json + log ${cmd_output} + ${cmd_output1} Execute command kubectl logs -n ricplt ${NEAR_RT_RIC_PLT_RTMGR_POD_NAME} --tail=35 | grep meid + log ${cmd_output1} + Run Keyword Should Contain X Times ${cmd_output1} 10.105.143.108:38000 4 + Run Keyword Should Contain X Times ${cmd_output1} 10.105.143.108:38001 4 + ##3: Delete E2T1 Instance + Log "3. Delete E2T1 instance" + ${cmd_output} Execute command kubectl exec -n ricplt ${NEAR_RT_RIC_PLT_E2MGR_POD_NAME} -- curl -X DELETE "http://service-ricplt-rtmgr-http:3800/ric/v1/handles/e2t" -H "accept: application/json" -H "Content-Type: application/json" -d "{ \\"E2TAddress\\": \\"10.105.143.108:38000\\"}" + ##4: Verify the file /db/rt.json file whether E2T instance is removed. + Log "3. Verify the file /db/rt.json file whether E2T instance is removed" + ${cmd_output} Execute command kubectl exec -n ricplt ${NEAR_RT_RIC_PLT_RTMGR_POD_NAME} cat /db/rt.json + log ${cmd_output} + ${cmd_output1} Execute command kubectl logs -n ricplt ${NEAR_RT_RIC_PLT_RTMGR_POD_NAME} --tail=12 | grep meid + log ${cmd_output1} + Run Keyword Should Contain ${cmd_output1} mse|1090,service-ricplt-e2mgr-rmr.ricplt:3801|-1|10.105.143.108:38001 + Run Keyword Should Contain ${cmd_output1} mse|1101,service-ricplt-e2mgr-rmr.ricplt:3801|-1|10.105.143.108:38001 + ##4: Delete E2T2 Instance + Log "4. Delete E2T2 instance" + ${cmd_output} Execute command kubectl exec -n ricplt ${NEAR_RT_RIC_PLT_E2MGR_POD_NAME} -- curl -X DELETE "http://service-ricplt-rtmgr-http:3800/ric/v1/handles/e2t" -H "accept: application/json" -H "Content-Type: application/json" -d "{ \\"E2TAddress\\": \\"10.105.143.108:38001\\"}" + ##4: Verify the file /db/rt.json file whether E2T instance is removed. + Log "4. Verify the file /db/rt.json file whether E2T instance is removed" + ${cmd_output} Execute command kubectl exec -n ricplt ${NEAR_RT_RIC_PLT_RTMGR_POD_NAME} cat /db/rt.json + log ${cmd_output} + ${cmd_output1} Execute command kubectl logs -n ricplt ${NEAR_RT_RIC_PLT_RTMGR_POD_NAME} --tail=12 | grep meid + log ${cmd_output1} + Run Keyword Should Not Contain ${cmd_output1} mse|1090 + Run Keyword Should Not Contain ${cmd_output1} mse|1101 + +r3_multiple_e2t_instances_support_scenario6 + [Documentation] This Test case covers the checks of Multiple E2T instance support feature + ... + ... Scenario 6 [ Positive Case] : + ... + ... Step1 : \ Create of E2T instance with invalid fqdn fails + ... + [Tags] RICPLT_MultipleE2T + ##Scenario1 execution + ##1: Create one E2T Instnace + Log "1. Create E2T instances " + ##Delete If it exists already + ${cmd_output} Execute command kubectl exec -n ricplt ${NEAR_RT_RIC_PLT_E2MGR_POD_NAME} \ -- curl -i POST "http://service-ricplt-rtmgr-http:3800/ric/v1/handles/e2t" -H "accept: application/json" -H "Content-Type: application/json" -d "{ \\"E2TAddress\\": \\"dummy.e2t.com:12345\\" }" + log ${cmd_output} + Run Keyword Should Contain ${cmd_output} 400 Bad Request + +*** Keywords *** +Login_RIC_Platform_VM + [Arguments] ${alias_name}=ricplt + SSHLibrary.Open Connection ${NEAR_RT_RIC_PLT_VM_IP} 22 + SSHLibrary.Login ${NEAR_RT_RIC_PLT_VM_USERNAME} ${NEAR_RT_RIC_PLT_VM_PASSWORD} + +Suite Setup + ##Added place holder now + Login_RIC_Platform_VM + check_ric_platform_services + +Suite Teardown + Close Connection + +Wait For routing manager service + [Arguments] ${maxcount}=10 ${count}=1 + FOR ${count} IN RANGE 1 ${maxcount} + ${cmd_output} Execute command kubectl get pod -n ricplt | grep -i deployment-ricplt-rtmgr + ${status}= Run Keyword And Ignore Error Should Contain ${cmd_output} Running + ${ready}= Run Keyword And Ignore Error Should Contain ${cmd_output} 1/1 + Log ${status} + Log ${ready} + Run Keyword If ("${status[0]}" == "PASS") and ("${ready[0]}" == "PASS") Exit For Loop + ##Run Keyword And Ignore Error Execute command + Sleep 2 + END + Log "Max retry count reached, seems routing manager is not running successfully" + Run Keyword Should Contain ${cmd_output} Running + Run Keyword Should Contain ${cmd_output} 1/1 + +check_ric_platform_services + ##check whether required servcies are up and running. + Log "Checking the status of Routing manager POD" + Wait For routing manager service 10 1 + ${NEAR_RT_RIC_PLT_RTMGR_POD_NAME} Execute command kubectl get pod -n ricplt | grep -i deployment-ricplt-rtmgr | awk '{ print $1}' + ${NEAR_RT_RIC_PLT_E2MGR_POD_NAME} Execute command kubectl get pod -n ricplt | grep -i deployment-ricplt-e2mgr | awk '{ print $1}' + Set Suite Variable ${NEAR_RT_RIC_PLT_RTMGR_POD_NAME} + Set Suite Variable ${NEAR_RT_RIC_PLT_E2MGR_POD_NAME} +