From 835ae35e70f79aa52e75f8cdc5c1716ee2e3b89c Mon Sep 17 00:00:00 2001 From: YannGarcia Date: Sun, 20 Oct 2019 00:43:58 -0700 Subject: [PATCH] Validation of LocationAPI (GS 013) --- ccsrc/Protocols/Json/json_codec.cc | 3 +- etc/AtsMec/AtsMec_AdvantEDGE.cfg | 152 ++++++++++++++++++ .../ttcn/BwManagementAPI_Pixits.ttcn | 2 - .../LocationAPI/ttcn/LocationAPI_Pixits.ttcn | 10 +- ttcn/LibMec/ttcn/LibMec_Functions.ttcn | 4 +- ttcn/LibMec/ttcn/LibMec_Pixits.ttcn | 28 ++-- 6 files changed, 174 insertions(+), 25 deletions(-) create mode 100644 etc/AtsMec/AtsMec_AdvantEDGE.cfg diff --git a/ccsrc/Protocols/Json/json_codec.cc b/ccsrc/Protocols/Json/json_codec.cc index 74af4c6..0793b41 100644 --- a/ccsrc/Protocols/Json/json_codec.cc +++ b/ccsrc/Protocols/Json/json_codec.cc @@ -64,6 +64,7 @@ int json_codec::decode (const OCTETSTRING& p_data, LibItsHttp__JsonMessageBodyTy int idx_end = it->second.rfind("}") - 1; // Remove the last '}' std::string str = it->second.substr(idx_begin + 1, idx_end - idx_begin); // ..and create the decoding buffer + loggers::get_instance().log("json_codec::decode: decoding_buffer=%s", str.c_str()); TTCN_Buffer decoding_buffer(OCTETSTRING(str.length(), (const unsigned char*)str.c_str())); if (it->second.find("\"userList\"") != std::string::npos) { // Be careful to the order @@ -71,7 +72,7 @@ int json_codec::decode (const OCTETSTRING& p_data, LibItsHttp__JsonMessageBodyTy LocationAPI__TypesAndValues::UserList user_list; user_list.decode(LocationAPI__TypesAndValues::UserList_descr_, decoding_buffer, TTCN_EncDec::CT_JSON); msg.userList() = user_list; - } else if (it->second.find("\"accessPointList\"") != std::string::npos) { // Be careful to the order + } else if (it->second.find("\"accessPointList\"") != std::string::npos) { // Be careful to the order // TODO To be refined, find("\"accessPointList\"") is not optimal LocationAPI__TypesAndValues::AccessPointList access_point_list; access_point_list.decode(LocationAPI__TypesAndValues::AccessPointList_descr_, decoding_buffer, TTCN_EncDec::CT_JSON); diff --git a/etc/AtsMec/AtsMec_AdvantEDGE.cfg b/etc/AtsMec/AtsMec_AdvantEDGE.cfg new file mode 100644 index 0000000..e5906b7 --- /dev/null +++ b/etc/AtsMec/AtsMec_AdvantEDGE.cfg @@ -0,0 +1,152 @@ +[MODULE_PARAMETERS] +# This section shall contain the values of all parameters that are defined in your TTCN-3 modules. + +# IUT roles + +LibCommon_Time.PX_TAC := 30.0 +#LibCommon_Time.PX_TWAIT := 30.0 +LibCommon_Sync.PX_TSYNC_TIME_LIMIT := 30.0; +LibCommon_Sync.PX_TSHUT_DOWN_TIME_LIMIT := 30.0; + +LibItsHttp_Pics.PICS_HEADER_HOST := "172.22.1.6" + +LibItsHttp_Pics.PICS_HEADER_CONTENT_TYPE := "application/json" +LibItsHttp_Pics.PICS_USE_TOKEN_HEADER := true +#LibItsHttp_Pics.PICS_TOKEN_HEADER := "Basic WrongToken" + +LibMec_Pics.PICS_ROOT_API := "etsi-013" +LibMec_Pics.PICS_MEC_PLAT := true +LibMec_Pics.PICS_SERVICES := true +LibMec_Pics.PICS_RNIS := true +LibMec_Pics.PICS_RNIS_QUERY := true +LibMec_Pics.PICS_RNIS_ALL_SUBSCRIPTIONS := true +LibMec_Pics.PICS_RNIS_NOTIFICATIONS := true + +LocationAPI_Pics.PICS_LOCATION_API_SUPPORTED := true + +UEidentityAPI_Pics.PICS_UE_IDENTITY_API_SUPPORTED := false + +BwManagementAPI_Pics.PICS_BWMANAGEMENT_API_SUPPORTED := false + +#AppEnablementAPI_Pics.PICS_APP_ENABLEMENT_API_SUPPORTED := true +#AppEnablementAPI_Pics.PICS_ME_APP_SUPPORT_TIMING_CAPS_URI + + +[LOGGING] +# In this section you can specify the name of the log file and the classes of events +# you want to log into the file or display on console (standard error). + +LogFile := "../logs/%e.%h-%r.%s" +FileMask := LOG_ALL | USER | DEBUG | MATCHING +ConsoleMask := LOG_ALL | USER | DEBUG | MATCHING +#FileMask := ERROR | WARNING | USER | MATCHING | EXECUTOR_RUNTIME | VERDICTOP +#ConsoleMask := ERROR | WARNING | USER | MATCHING | EXECUTOR_RUNTIME | VERDICTOP +LogSourceInfo := Stack +LogEntityName:= Yes +LogEventTypes:= Yes +#TimeStampFormat := DateTime + +[TESTPORT_PARAMETERS] +# In this section you can specify parameters that are passed to Test Ports. +system.httpPort.params := "HTTP(codecs=json:json_codec)/TCP(debug=1,server=172.22.1.6,port=31007,use_ssl=0)" +system.httpPort_notif.params := "HTTP(codecs=json:json_codec)/TCP(debug=1,server_mode=1,local_port=8081,use_ssl=0)" + +[DEFINE] +# In this section you can create macro definitions, +# that can be used in other configuration file sections except [INCLUDE] and [ORDERED_INCLUDE]. + +[INCLUDE] +# To use configuration settings given in other configuration files, +# the configuration files just need to be listed in this section, with their full or relative pathnames. + +[ORDERED_INCLUDE] +# To use configuration settings given in other configuration files, +# the configuration files just need to be listed in this section, with their full or relative pathnames. + +[EXTERNAL_COMMANDS] +# This section can define external commands (shell scripts) to be executed by the ETS +# whenever a control part or test case is started or terminated. + +#BeginTestCase := "" +#EndTestCase := "" +#BeginControlPart := "" +#EndControlPart := "" + +[EXECUTE] +# In this section you can specify what parts of your test suite you want to execute. +#AtsMec_TestControl.control +#AtsMec_UEidentityAPI_TestCases.TC_MEC_SRV_UETAG_001_OK +#AtsMec_UEidentityAPI_TestCases.TC_MEC_SRV_UETAG_001_BR +#AtsMec_UEidentityAPI_TestCases.TC_MEC_SRV_UETAG_001_NF +#AtsMec_UEidentityAPI_TestCases.TC_MEC_SRV_UETAG_002_OK +#AtsMec_UEidentityAPI_TestCases.TC_MEC_SRV_UETAG_002_BR +#AtsMec_UEidentityAPI_TestCases.TC_MEC_SRV_UETAG_002_PF + +#AtsMec_LocationAPI_TestCases.TC_MEC_SRV_UELOCLOOK_001_OK +#AtsMec_LocationAPI_TestCases.TC_MEC_SRV_UELOCLOOK_001_BR +AtsMec_LocationAPI_TestCases.TC_MEC_SRV_UELOCLOOK_001_NF + + +#AtsMec_LocationAPI_TestCases.TC_MEC_SRV_UELOCSUB_001_OK +#AtsMec_LocationAPI_TestCases.TC_MEC_SRV_UELOCSUB_001_BR +#AtsMec_LocationAPI_TestCases.TC_MEC_SRV_UELOCSUB_002_OK +#AtsMec_LocationAPI_TestCases.TC_MEC_SRV_UELOCSUB_002_NF + +#AtsMec_LocationAPI_TestCases.TC_MEC_SRV_UETRACKSUB_001_OK +#AtsMec_LocationAPI_TestCases.TC_MEC_SRV_UETRACKSUB_001_BR +#AtsMec_LocationAPI_TestCases.TC_MEC_SRV_UETRACKSUB_002_OK +#AtsMec_LocationAPI_TestCases.TC_MEC_SRV_UETRACKSUB_002_NF + +#AtsMec_LocationAPI_TestCases.TC_MEC_SRV_UEINFLOOK_001_OK +#AtsMec_LocationAPI_TestCases.TC_MEC_SRV_UEINFLOOK_001_BR +#AtsMec_LocationAPI_TestCases.TC_MEC_SRV_UEINFLOOK_001_NF + +#AtsMec_LocationAPI_TestCases.TC_MEC_SRV_UEINFSUB_001_OK +#AtsMec_LocationAPI_TestCases.TC_MEC_SRV_UEINFSUB_001_BR +#AtsMec_LocationAPI_TestCases.TC_MEC_SRV_UEINFSUB_002_OK +#AtsMec_LocationAPI_TestCases.TC_MEC_SRV_UEINFSUB_002_NF + +#AtsMec_RnisAPI_TestCases.TC_MEC_SRV_RNIS_011_OK +#AtsMec_RnisAPI_TestCases.TC_MEC_SRV_RNIS_012_OK +#AtsMec_RnisAPI_TestCases.TC_MEC_SRV_RNIS_011_BR +#AtsMec_RnisAPI_TestCases.TC_MEC_SRV_RNIS_012_BR +#AtsMec_RnisAPI_TestCases.TC_MEC_SRV_RNIS_016_OK +#AtsMec_RnisAPI_TestCases.TC_MEC_SRV_RNIS_017_OK +#AtsMec_RnisAPI_TestCases.TC_MEC_SRV_RNIS_018_OK +#AtsMec_RnisAPI_TestCases.TC_MEC_SRV_RNIS_019_OK +#AtsMec_RnisAPI_TestCases.TC_MEC_SRV_RNIS_016_BR +#AtsMec_RnisAPI_TestCases.TC_MEC_SRV_RNIS_016_NF +#AtsMec_RnisAPI_TestCases.TC_MEC_SRV_RNIS_017_BR +#AtsMec_RnisAPI_TestCases.TC_MEC_SRV_RNIS_017_NF +#AtsMec_RnisAPI_TestCases.TC_MEC_SRV_RNIS_018_BR +#AtsMec_RnisAPI_TestCases.TC_MEC_SRV_RNIS_018_NF +#AtsMec_RnisAPI_TestCases.TC_MEC_SRV_RNIS_019_BR +#AtsMec_RnisAPI_TestCases.TC_MEC_SRV_RNIS_019_NF + +#AtsMec_RnisAPI_TestCases.TC_MEC_SRV_RNIS_001_OK +#AtsMec_RnisAPI_TestCases.TC_MEC_SRV_RNIS_002_OK +#AtsMec_RnisAPI_TestCases.TC_MEC_SRV_RNIS_003_OK +#AtsMec_RnisAPI_TestCases.TC_MEC_SRV_RNIS_004_OK +#AtsMec_RnisAPI_TestCases.TC_MEC_SRV_RNIS_005_OK +#AtsMec_RnisAPI_TestCases.TC_MEC_SRV_RNIS_006_OK +#AtsMec_RnisAPI_TestCases.TC_MEC_SRV_RNIS_007_OK +#AtsMec_RnisAPI_TestCases.TC_MEC_SRV_RNIS_008_OK + +#AtsMec_AppEnablementAPI_TestCases.TC_MEC_SRV_TRANS_001_OK +#AtsMec_AppEnablementAPI_TestCases.TC_MEC_SRV_TRAF_001_OK +#AtsMec_AppEnablementAPI_TestCases.TC_MEC_SRV_TRAF_002_OK +#AtsMec_AppEnablementAPI_TestCases.TC_MEC_SRV_TRAF_001_NF + +[GROUPS] +# In this section you can specify groups of hosts. These groups can be used inside the +# [COMPONENTS] section to restrict the creation of certain PTCs to a given set of hosts. + +[COMPONENTS] +# This section consists of rules restricting the location of created PTCs. + +[MAIN_CONTROLLER] +# The options herein control the behavior of MC. +KillTimer := 10.0 +LocalAddress := 127.0.0.1 +TCPPort := 12000 +NumHCs := 1 diff --git a/ttcn/LibMec/BwManagementAPI/ttcn/BwManagementAPI_Pixits.ttcn b/ttcn/LibMec/BwManagementAPI/ttcn/BwManagementAPI_Pixits.ttcn index 6c3b8d5..ff8445d 100644 --- a/ttcn/LibMec/BwManagementAPI/ttcn/BwManagementAPI_Pixits.ttcn +++ b/ttcn/LibMec/BwManagementAPI/ttcn/BwManagementAPI_Pixits.ttcn @@ -10,6 +10,4 @@ module BwManagementAPI_Pixits { modulepar ResourceURL PX_RESOURCE_URL := "http://example.com/exampleAPI/location/v2/users?address:acr:192.0.0.1"; - modulepar TimeStamp PX_TIME_STAMP := { seconds := 1483231138, nanoSeconds := 0 }; - } // End of module BwManagementAPI_Pixits diff --git a/ttcn/LibMec/LocationAPI/ttcn/LocationAPI_Pixits.ttcn b/ttcn/LibMec/LocationAPI/ttcn/LocationAPI_Pixits.ttcn index 6152ceb..71e61c0 100644 --- a/ttcn/LibMec/LocationAPI/ttcn/LocationAPI_Pixits.ttcn +++ b/ttcn/LibMec/LocationAPI/ttcn/LocationAPI_Pixits.ttcn @@ -6,7 +6,7 @@ module LocationAPI_Pixits { // LibMec/LocationAPI import from LocationAPI_TypesAndValues all; - modulepar Address PX_USER := "acr:192.0.0.1"; + modulepar Address PX_USER := "ue1"; modulepar Address PX_USER_UNKNOWN := "acr:192.0.0.200"; @@ -18,16 +18,14 @@ module LocationAPI_Pixits { modulepar charstring PX_SUBSCRIPTION_ID_UNKNOWN := "subscription0666"; - modulepar AccessPointId PX_ACCESS_POINT_ID := "001010000000000000000000000000001"; + modulepar AccessPointId PX_ACCESS_POINT_ID := "zone1-poa1"; - modulepar ZoneId PX_ZONE_ID := "zone01"; + modulepar ZoneId PX_ZONE_ID := "zone1"; modulepar ZoneId NON_EXISTENT_ZONE_ID := "zone51"; - modulepar ResourceURL PX_RESOURCE_URL := "http://example.com/exampleAPI/location/v2/users?address:acr:192.0.0.1"; + modulepar ResourceURL PX_RESOURCE_URL := "http://meep-loc-serv/etsi-013/location/v1/users/ue1"; - modulepar TimeStamp PX_TIME_STAMP := { seconds := 1483231138, nanoSeconds := 0 }; - modulepar NumberOfAccessPoints PX_NB_ACCESS_POINTS := 3; modulepar UInt32 PX_NB_UNSERVICABLEL_ACCESS_POINTS := 1; diff --git a/ttcn/LibMec/ttcn/LibMec_Functions.ttcn b/ttcn/LibMec/ttcn/LibMec_Functions.ttcn index 8825851..8d38786 100644 --- a/ttcn/LibMec/ttcn/LibMec_Functions.ttcn +++ b/ttcn/LibMec/ttcn/LibMec_Functions.ttcn @@ -350,7 +350,7 @@ module LibMec_Functions { )) -> value v_response { tc_ac.stop; log("*** " & testcasename() & ": PASS: Received HTTP error message in case of non authenticated HTTP request ***"); - f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); } [] httpPort.receive( mw_http_response( @@ -358,7 +358,7 @@ module LibMec_Functions { )) -> value v_response { tc_ac.stop; log("*** " & testcasename() & ": FAIL: Server error: " & int2str(v_response.response.statuscode) & "/" & v_response.response.statustext & " ***"); - f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); // Do not repeat! } [] httpPort.receive(mw_http_response) -> value v_response { diff --git a/ttcn/LibMec/ttcn/LibMec_Pixits.ttcn b/ttcn/LibMec/ttcn/LibMec_Pixits.ttcn index a930875..8e5b5a9 100644 --- a/ttcn/LibMec/ttcn/LibMec_Pixits.ttcn +++ b/ttcn/LibMec/ttcn/LibMec_Pixits.ttcn @@ -1,28 +1,28 @@ module LibMec_Pixits { - modulepar charstring PX_ME_APP_Q_ZONE_ID_URI := "/location/v2/zones"; + modulepar charstring PX_ME_APP_Q_ZONE_ID_URI := "/location/v1/zones"; - modulepar charstring PX_ME_APP_Q_USERS_LIST_URI := "/location/v2/users"; + modulepar charstring PX_ME_APP_Q_USERS_LIST_URI := "/location/v1/users"; - modulepar charstring PX_ME_APP_Q_DIST_URI := "/location/v2/subscriptions/distance"; + modulepar charstring PX_ME_APP_Q_DIST_URI := "/location/v1/subscriptions/distance"; - modulepar charstring PX_ME_APP_Q_USERS_LOC_SUB_URI := "/location/v2/subscriptions/userTracking"; + modulepar charstring PX_ME_APP_Q_USERS_LOC_SUB_URI := "/location/v1/subscriptions/userTracking"; - modulepar charstring PX_ME_APP_Q_USERS_TRACK_SUB_URI := "/location/v2/subscriptions/periodic"; + modulepar charstring PX_ME_APP_Q_USERS_TRACK_SUB_URI := "/location/v1/subscriptions/periodic"; - modulepar charstring PX_ME_APP_Q_USERS_INF_SUB_URI := "/location/v2/subscriptions/zonalTraffic"; + modulepar charstring PX_ME_APP_Q_USERS_INF_SUB_URI := "/location/v1/subscriptions/zonalTraffic"; - modulepar charstring PX_ME_APP_Q_UE_IDENTITY_ID_URI := "/ui/v2/"; + modulepar charstring PX_ME_APP_Q_UE_IDENTITY_ID_URI := "/ui/v1/"; - modulepar charstring PX_SVC_MGMT_TRANS_URI := "/mec_app_support/v2/transports"; + modulepar charstring PX_SVC_MGMT_TRANS_URI := "/mec_app_support/v1/transports"; - modulepar charstring PX_SVC_MGMT_APP_URI := "/mec_service_mgmt/v2/application"; + modulepar charstring PX_SVC_MGMT_APP_URI := "/mec_service_mgmt/v1/application"; - modulepar charstring PX_RNIS_SUBSCRITIONS_URI := "/rni/v2/subscriptions"; + modulepar charstring PX_RNIS_SUBSCRITIONS_URI := "/rni/v1/subscriptions"; - modulepar charstring PX_RNIS_QUERIES_URI := "/rni/v2/queries"; + modulepar charstring PX_RNIS_QUERIES_URI := "/rni/v1/queries"; - modulepar charstring PX_ME_BWM_URI := "/bwm/v2/bw_allocations"; + modulepar charstring PX_ME_BWM_URI := "/bwm/v1/bw_allocations"; modulepar charstring PX_ME_APP_AMS_URI := "/amsi/v1/appMobilityServices" @@ -44,9 +44,9 @@ module LibMec_Pixits { modulepar charstring PX_MEX_LCM_OP_OCC_URI := "/alcmi/v1/app_lcm_op_occs" - modulepar charstring PX_UE_APP_CTX_URI := "/mx2/v2/app_contexts"; + modulepar charstring PX_UE_APP_CTX_URI := "/mx2/v1/app_contexts"; - modulepar charstring PX_UE_APPS_URI := "/mx2/v2/app_list"; + modulepar charstring PX_UE_APPS_URI := "/mx2/v1/app_list"; modulepar charstring PX_MEC_SVC_MGMT_APPS_URI := "/mec_service_mgmt/v1/applications"; -- GitLab