X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=pkg%2Fnbi%2Fhttprestful_test.go;h=e73f303774509d638d3f3356d4e06ddfa5249e67;hb=2f9b55c1a2aac9f0865beb73b6619b106b32edb2;hp=99dbe74110424ef668a3590eecffe11b1bf1b531;hpb=aaf8d396257a455247b24716a32b05fc3fd145c2;p=ric-plt%2Frtmgr.git diff --git a/pkg/nbi/httprestful_test.go b/pkg/nbi/httprestful_test.go index 99dbe74..e73f303 100644 --- a/pkg/nbi/httprestful_test.go +++ b/pkg/nbi/httprestful_test.go @@ -14,6 +14,11 @@ 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. + + + This source code is part of the near-RT RIC (RAN Intelligent Controller) + platform project (RICP). + ================================================================================== */ /* @@ -27,17 +32,20 @@ package nbi import ( "encoding/json" "fmt" - "github.com/go-openapi/swag" "io/ioutil" "net" "net/http" "net/http/httptest" "os" "routing-manager/pkg/models" + "routing-manager/pkg/rpe" + "routing-manager/pkg/rtmgr" "routing-manager/pkg/sdl" "routing-manager/pkg/stub" "testing" "time" + "sync" + "github.com/go-openapi/swag" ) var BasicXAppLists = []byte(`[ @@ -60,6 +68,457 @@ var SubscriptionResp = []byte(`{"ID":"deadbeef1234567890", "Version":0, "EventTy var InvalidSubResp = []byte(`{"Version":0, "EventType":all}`) +func TestValidateXappCallbackData_1(t *testing.T) { + data := models.XappCallbackData{ + XApps: *swag.String("[]"), + Version: *swag.Int64(1), + Event: *swag.String("someevent"), + ID: *swag.String("123456")} + + err := validateXappCallbackData(&data) + if err != nil { + t.Error("Invalid XApp callback data: " + err.Error()) + } +} + +func TestValidateXappCallbackDataInvalid (t *testing.T) { + data := models.XappCallbackData{} + err := validateXappCallbackData(&data) + t.Log(err) +} + + +func TestValidateXappSubscriptionsData(t *testing.T) { + + ep := make(map[string]*rtmgr.Endpoint) + ep["dummy"] = &rtmgr.Endpoint{Uuid: "10.0.0.1:0", Name: "E2TERM", XAppType: "app1", Ip: "", Port: 0, TxMessages: []string{"", ""}, RxMessages: []string{"", ""}, Socket: nil, IsReady: true, Keepalive: true} + p := uint16(1234) + data := models.XappSubscriptionData{ + Address: swag.String("10.1.1.1"), + Port: &p, + SubscriptionID: swag.Int32(123456)} + + var err error + err = validateXappSubscriptionData(&data) + t.Log(err) + + rtmgr.Eps = ep + p = uint16(0) + data1 := models.XappSubscriptionData{ + Address: swag.String(""), + Port: &p, + SubscriptionID: swag.Int32(123456)} + err = validateXappSubscriptionData(&data1) + t.Log(err) + + //Validate E2tData + data2 := models.E2tData{ + E2TAddress: swag.String(""), + } + /*err = validateE2tData(&data2)*/ + + e2tchannel := make(chan *models.E2tData, 10) + _ = createNewE2tHandleHandlerImpl(e2tchannel, &data2) + defer close(e2tchannel) + + //test case for provideXappSubscriptionHandleImp + datachannel := make(chan *models.XappSubscriptionData, 10) + _ = provideXappSubscriptionHandleImpl(datachannel, &data1) + defer close(datachannel) + + //test case for deleteXappSubscriptionHandleImpl + _ = deleteXappSubscriptionHandleImpl(datachannel, &data1) + + data3 := models.XappSubscriptionData{ + Address: swag.String("10.55.55.5"), + Port: &p, + SubscriptionID: swag.Int32(123456)} + //test case for deleteXappSubscriptionHandleImpl + _ = deleteXappSubscriptionHandleImpl(datachannel, &data3) +} + +func TestValidateE2tDataEmpty(t *testing.T) { + data := models.E2tData{ + E2TAddress: swag.String(""), + } + err := validateE2tData(&data) + t.Log(err) +} + +func TestValidateE2tDataDNSLookUPfails(t *testing.T) { + data := models.E2tData{ + E2TAddress: swag.String("e2t.1com:1234"), + } + err := validateE2tData(&data) + t.Log(err) +} + +func TestValidateE2tDataInvalid(t *testing.T) { + data := models.E2tData{ + E2TAddress: swag.String("10.101.01.1"), + } + err := validateE2tData(&data) + t.Log(err) +} + +func TestValidateE2tDatavalid(t *testing.T) { + data := models.E2tData{ + E2TAddress: swag.String("10.101.01.1:8098"), + } + + + err := validateE2tData(&data) + t.Log(err) + +} + +func TestValidateE2tDatavalidEndpointPresent(t *testing.T) { + data := models.E2tData{ + E2TAddress: swag.String("10.101.01.1:8098"), + } + + // insert endpoint for testing purpose + uuid := "10.101.01.1:8098" + ep := &rtmgr.Endpoint{ + Uuid: uuid, + } + rtmgr.Eps[uuid] = ep + + err := validateE2tData(&data) + t.Log(err) + + // delete endpoint for at end of test case + delete(rtmgr.Eps, uuid); + +} + + +func TestValidateDeleteE2tData(t *testing.T) { + +// test-1 + data := models.E2tDeleteData{ + E2TAddress: swag.String(""), + } + + err := validateDeleteE2tData(&data) + if (err.Error() != "E2TAddress is empty!!!") { + t.Log(err) + } + + +// test-2 + data = models.E2tDeleteData{ + E2TAddress: swag.String("10.101.01.1:8098"), + } + + err = validateDeleteE2tData(&data) + if (err != nil ) { + t.Log(err) + } + +// test-3 +//################ Create End Point dummy entry + uuid := "10.101.01.1:8098" + ep := &rtmgr.Endpoint{ + Uuid: uuid, + } + rtmgr.Eps[uuid] = ep +//##################### + + data = models.E2tDeleteData{ + E2TAddress: swag.String("10.101.01.1:8098"), + RanAssocList: models.RanE2tMap{ + {E2TAddress: swag.String("10.101.01.1:8098")}, + }, + } + + err = validateDeleteE2tData(&data) + if (err != nil ) { + t.Log(err) + } + + // delete endpoint for at end of test case +//################ Delete End Point dummy entry + delete(rtmgr.Eps, uuid); +//##################### + +// test-4 + +//################ Create End Point dummy entry + uuid = "10.101.01.1:9991" + ep = &rtmgr.Endpoint{ + Uuid: uuid, + } + rtmgr.Eps[uuid] = ep + + uuid = "10.101.01.1:9992" + ep = &rtmgr.Endpoint{ + Uuid: uuid, + } + rtmgr.Eps[uuid] = ep +//##################### + + data = models.E2tDeleteData{ + E2TAddress: swag.String("10.101.01:8098"), + RanAssocList: models.RanE2tMap{ + {E2TAddress: swag.String("10.101.01.1:9991")}, + {E2TAddress: swag.String("10.101.01.1:9992")}, + }, + } + + err = validateDeleteE2tData(&data) + if (err != nil ) { + t.Log(err) + } +//################ Delete End Point dummy entry + delete(rtmgr.Eps, "10.101.01.1:9991") + delete(rtmgr.Eps, "10.101.01.1:9992") +//##################### + +// test-5 + + data = models.E2tDeleteData{ + E2TAddress: swag.String("10.101.01:8098"), + RanAssocList: models.RanE2tMap{ + {E2TAddress: swag.String("10.101.01.19991")}, + }, + } + + err = validateDeleteE2tData(&data) + if ( err.Error() != "E2T Delete - RanAssocList E2TAddress is not a proper format like ip:port, 10.101.01.19991") { + t.Log(err) + } +} + + +func TestValidateE2TAddressRANListData(t *testing.T) { + + data := models.RanE2tMap{ + { + E2TAddress: swag.String(""), + }, + } + err := validateE2TAddressRANListData(data) + if (err != nil ) { + t.Log(err) + } + + data = models.RanE2tMap{ + { + E2TAddress: swag.String("10.101.01.1:8098"), + }, + } + err = validateE2TAddressRANListData(data) + if (err != nil ) { + t.Log(err) + } + +} + +func TestAssociateRanToE2THandlerImpl(t *testing.T) { + + associateranchan := make(chan models.RanE2tMap, 10) + data := models.RanE2tMap{ + { + E2TAddress: swag.String("10.101.01.1:8098"), + }, + } + err := associateRanToE2THandlerImpl(associateranchan, data) + if (err != nil ) { + t.Log(err) + } + +//################ Create End Point dummy entry + uuid := "10.101.01.1:8098" + ep := &rtmgr.Endpoint{ + Uuid: uuid, + } + rtmgr.Eps[uuid] = ep +//##################### + + data = models.RanE2tMap{ + { + E2TAddress: swag.String("10.101.01.1:8098"), + }, + } + err = associateRanToE2THandlerImpl(associateranchan, data) + if (err != nil ) { + t.Log(err) + } + data1 := <-associateranchan + + fmt.Println(data1) +//################ Delete End Point dummy entry + delete(rtmgr.Eps, uuid); +//##################### +} + +func TestDisassociateRanToE2THandlerImpl(t *testing.T) { + + disassranchan := make(chan models.RanE2tMap, 10) + + data := models.RanE2tMap{ + { + E2TAddress: swag.String("10.101.01.1:8098"), + }, + } + err := disassociateRanToE2THandlerImpl(disassranchan, data) + if (err != nil ) { + t.Log(err) + } +//################ Create End Point dummy entry + uuid := "10.101.01.1:8098" + ep := &rtmgr.Endpoint{ + Uuid: uuid, + } + rtmgr.Eps[uuid] = ep +//##################### + + data = models.RanE2tMap{ + { + E2TAddress: swag.String("10.101.01.1:8098"), + }, + } + err = disassociateRanToE2THandlerImpl(disassranchan, data) + if (err != nil ) { + t.Log(err) + } + data1 := <-disassranchan + + fmt.Println(data1) +//################ Delete End Point dummy entry + delete(rtmgr.Eps, uuid); +//##################### +} + +func TestDeleteE2tHandleHandlerImpl(t *testing.T) { + + e2tdelchan := make(chan *models.E2tDeleteData, 10) + data := models.E2tDeleteData{ + E2TAddress: swag.String(""), + } + err := deleteE2tHandleHandlerImpl(e2tdelchan, &data) + if (err != nil ) { + t.Log(err) + } + +//################ Create End Point dummy entry + uuid := "10.101.01.1:8098" + ep := &rtmgr.Endpoint{ + Uuid: uuid, + } + rtmgr.Eps[uuid] = ep +//##################### + + data = models.E2tDeleteData{ + E2TAddress: swag.String("10.101.01.1:8098"), + } + err = deleteE2tHandleHandlerImpl(e2tdelchan, &data) + if (err != nil ) { + t.Log(err) + } + data1 := <-e2tdelchan + + fmt.Println(data1) +//################ Delete End Point dummy entry + delete(rtmgr.Eps, uuid); +//##################### +} + +func TestSubscriptionExists(t *testing.T) { + p := uint16(0) + data := models.XappSubscriptionData{ + Address: swag.String("10.0.0.0"), + Port: &p, + SubscriptionID: swag.Int32(1234)} + + rtmgr.Subs = *stub.ValidSubscriptions + + yes_no := subscriptionExists(&data) + yes_no = addSubscription(&rtmgr.Subs, &data) + yes_no = addSubscription(&rtmgr.Subs, &data) + yes_no = delSubscription(&rtmgr.Subs, &data) + yes_no = delSubscription(&rtmgr.Subs, &data) + t.Log(yes_no) +} + +func TestAddSubscriptions(t *testing.T) { + p := uint16(1) + subdata := models.XappSubscriptionData{ + Address: swag.String("10.0.0.0"), + Port: &p, + SubscriptionID: swag.Int32(1234)} + + rtmgr.Subs = *stub.ValidSubscriptions + yes_no := addSubscription(&rtmgr.Subs, &subdata) + t.Log(yes_no) +} + + +func TestHttpInstance(t *testing.T) { + sdlEngine, _ := sdl.GetSdl("file") + rpeEngine, _ := rpe.GetRpe("rmrpush") + httpinstance := NewHttpRestful() + err := httpinstance.Terminate() + t.Log(err) + + triggerSBI := make(chan bool) + createMockPlatformComponents() + //ts := createMockAppmgrWithData("127.0.0.1:3000", BasicXAppLists, nil) + //ts.Start() + //defer ts.Close() + var m sync.Mutex + err = httpinstance.Initialize(XMURL, "httpgetter", "rt.json", "config.json", sdlEngine, rpeEngine, triggerSBI, &m) +} + +func TestXappCallbackDataChannelwithdata(t *testing.T) { + data := models.XappCallbackData{ + XApps: *swag.String("[]"), + Version: *swag.Int64(1), + Event: *swag.String("someevent"), + ID: *swag.String("123456")} + datach := make(chan *models.XappCallbackData, 1) + go func() { _, _ = recvXappCallbackData(datach) }() + defer close(datach) + datach <- &data +} +func TestXappCallbackDataChannelNodata(t *testing.T) { + datach := make(chan *models.XappCallbackData, 1) + go func() { _, _ = recvXappCallbackData(datach) }() + defer close(datach) +} + +func TestE2TChannelwithData(t *testing.T) { + data2 := models.E2tData{ + E2TAddress: swag.String("1.2.3.4"), + RanNamelist: []string{"ran1","ran2"}, + } + dataChannel := make(chan *models.E2tData, 10) + go func() { _, _,_ = recvNewE2Tdata(dataChannel) }() + defer close(dataChannel) + dataChannel <- &data2 +} + +func TestE2TChannelwithNoData(t *testing.T) { + dataChannel := make(chan *models.E2tData, 10) + go func() { _, _ ,_= recvNewE2Tdata(dataChannel) }() + defer close(dataChannel) +} + +func TestProvideXappSubscriptionHandleImpl(t *testing.T) { + p := uint16(0) + data := models.XappSubscriptionData{ + Address: swag.String("10.0.0.0"), + Port: &p, + SubscriptionID: swag.Int32(1234)} + datachannel := make(chan *models.XappSubscriptionData, 10) + go func() { _ = provideXappSubscriptionHandleImpl(datachannel, &data) }() + defer close(datachannel) + datachannel <- &data + + //subdel test +} + func createMockAppmgrWithData(url string, g []byte, p []byte) *httptest.Server { l, err := net.Listen("tcp", url) if err != nil { @@ -140,6 +599,10 @@ func TestProvideXappHandleHandlerImpl(t *testing.T) { } } } + + //Empty XappCallbackdata + data1 := models.XappCallbackData{} + err = httpRestful.(*HttpRestful).ProvideXappHandleHandlerImpl(datach, &data1) } func TestValidateXappCallbackData(t *testing.T) { @@ -191,6 +654,7 @@ func TestHttpGetXAppsWithValidData(t *testing.T) { } } + func TestRetrieveStartupDataTimeout(t *testing.T) { sdlEngine, _ := sdl.GetSdl("file") createMockPlatformComponents() @@ -232,3 +696,8 @@ func TestRetrieveStartupDataWithInvalidSubResp(t *testing.T) { os.Remove("rt.json") os.Remove("config.json") } + +func TestInvalidarguments(t *testing.T) { + _ = PostSubReq("\n","nbifinterface") + _ = PostSubReq("xmurl","\n") +}