Commit 5cc073c0 authored by YannGarcia's avatar YannGarcia
Browse files

Add V2XInformationServiceAPI structures

parent 7e73130a
......@@ -68,6 +68,10 @@ int json_codec::encode (const LibItsHttp__JsonMessageBodyTypes::JsonBody& msg, O
const TrafficManagementAPI__TypesAndValues::BwInfo& bw_info = msg.bwInfo();
bw_info.encode(TrafficManagementAPI__TypesAndValues::BwInfo_descr_, encoding_buffer, TTCN_EncDec::CT_JSON);
data = /*char2oct(CHARSTRING("{\"TrafficRule\": ")) + */OCTETSTRING(encoding_buffer.get_len(), encoding_buffer.get_data())/* + char2oct(CHARSTRING("}"))*/;
} else if (msg.ischosen(LibItsHttp__JsonMessageBodyTypes::JsonBody::ALT_mtsSessionInfo)) {
const TrafficManagementAPI__TypesAndValues::MtsSessionInfo& mts_session_info = msg.mtsSessionInfo();
mts_session_info.encode(TrafficManagementAPI__TypesAndValues::MtsSessionInfo_descr_, encoding_buffer, TTCN_EncDec::CT_JSON);
data = /*char2oct(CHARSTRING("{\"TrafficRule\": ")) + */OCTETSTRING(encoding_buffer.get_len(), encoding_buffer.get_data())/* + char2oct(CHARSTRING("}"))*/;
} else {
loggers::get_instance().error("json_codec::encode: Not supported");
}
......@@ -395,6 +399,16 @@ int json_codec::decode (const OCTETSTRING& p_data, LibItsHttp__JsonMessageBodyTy
bw_info.decode(TrafficManagementAPI__TypesAndValues::BwInfo_descr_, decoding_buffer_, TTCN_EncDec::CT_JSON);
msg.bwInfo() = bw_info;
}
} else if ((it->second.find("\"mtsCapabilityInfo\"") != std::string::npos) || (it->second.find("\"mtsAccessInfo\"") != std::string::npos)) {
TrafficManagementAPI__TypesAndValues::MtsCapabilityInfo mts_cap_info;
TTCN_Buffer decoding_buffer_(OCTETSTRING(str.length(), (const unsigned char*)str.c_str()));
mts_cap_info.decode(TrafficManagementAPI__TypesAndValues::MtsCapabilityInfo_descr_, decoding_buffer_, TTCN_EncDec::CT_JSON);
msg.mtsCapabilityInfo() = mts_cap_info;
} else if ((it->second.find("\"mtsSessionInfo\"") != std::string::npos) || (it->second.find("\"mtsMode\"") != std::string::npos)) {
TrafficManagementAPI__TypesAndValues::MtsSessionInfo mts_session_info;
TTCN_Buffer decoding_buffer_(OCTETSTRING(str.length(), (const unsigned char*)str.c_str()));
mts_session_info.decode(TrafficManagementAPI__TypesAndValues::MtsSessionInfo_descr_, decoding_buffer_, TTCN_EncDec::CT_JSON);
msg.mtsSessionInfo() = mts_session_info;
} else if (it->second.find("\"detail\"") != std::string::npos) {
LibMec__TypesAndValues::ProblemDetails problem_details;
problem_details.decode(LibMec__TypesAndValues::ProblemDetails_descr_, decoding_buffer, TTCN_EncDec::CT_JSON);
......
/**
* @author ETSI / TTF T012
* @version $URL:$
* $ID:$
* @desc This module provides the MEC test cases.
* @copyright ETSI Copyright Notification
* No part may be reproduced except as authorized by written permission.
* The copyright and the foregoing restriction extend to reproduction in all media.
* All rights reserved.
* @see ETSI GS MEC 002, Draft ETSI GS MEC 030 V2.1.1 (2020-04)
*/
module AtsMec_V2XInformationServiceAPI_TestCases {
// JSON
import from JSON all;
// Libcommon
import from LibCommon_Time all;
import from LibCommon_VerdictControl all;
import from LibCommon_Sync all;
// LibHttp
import from LibItsHttp_TypesAndValues all;
import from LibItsHttp_Functions all;
import from LibItsHttp_Templates all;
import from LibItsHttp_JsonTemplates all;
import from LibItsHttp_TestSystem all;
// LibMec/V2XInformationServiceAPI
import from V2XInformationServiceAPI_TypesAndValues all;
import from V2XInformationServiceAPI_Pics all;
import from V2XInformationServiceAPI_Pixits all;
import from V2XInformationServiceAPI_Templates all;
// LibMec
import from LibMec_Templates all;
import from LibMec_Functions all;
import from LibMec_Pics all;
import from LibMec_Pixits all;
group me_app_role {
/**
* @desc Check that the IUT responds with a configured provisioning information over Uu unicast when queried by a MEC Application
* @see https://forge.etsi.org/rep/mec/gs030-vis-api/blob/master/MEC030_V2XInformationService.yaml
* @see https://forge.etsi.org/rep/mec/gs032p2-test-purposes/blob/v2.2.1-dev/Test%20Purposes/MEC030/SRV/V2XInformationService.tplan2
*/
testcase TC_MEC_MEC030_SRV_V2X_001_OK_01() runs on HttpComponent system HttpTestAdapter {
// Local variables
var Headers v_headers;
var HttpMessage v_response;
// Test control
if (not(PICS_MEC_PLAT) or not(PICS_V2X_INFORMATION_SERVICE_API_SUPPORTED)) {
log("*** " & testcasename() & ": PICS_MEC_PLAT and PICS_V2X_INFORMATION_SERVICE_API_SUPPORTED required for executing the TC ***");
setverdict(inconc);
stop;
}
// Test component configuration
f_cf_01_http_up();
// Test adapter configuration
// Preamble
f_init_default_headers_list(-, -, v_headers);
httpPort.send(
m_http_request(
m_http_request_get(
PX_ME_V2X_QUERIES_URI & "/uu_unicast_provisioning_info?location_info=" & PX_V2X_ECGI,
v_headers
)
)
);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
tc_ac.start;
alt {
[] httpPort.receive(
mw_http_response(
mw_http_response_ok(
mw_http_message_body_json(
mw_body_json_uu_unicast_provisioning_info(
mw_uu_unicast_provisioning_info
))))) -> value v_response {
tc_ac.stop;
log("*** " & testcasename() & ": PASS: IUT successfully responds with a UuUnicastProvisioningInfo ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": INCONC: Expected message not received ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
} // End of 'alt' statement
// Postamble
f_cf_01_http_down();
} // End of testcase TC_MEC_MEC030_SRV_V2X_001_OK_01
} // End of group me_app_role
} // End of module AtsMec_V2XInformationServiceAPI_TestCases
......@@ -13,6 +13,7 @@ sources := \
AtsMec_TestControl.ttcn \
AtsMec_UEAppInterfaceAPI_TestCases.ttcn \
AtsMec_UEidentityAPI_TestCases.ttcn \
AtsMec_V2XInformationServiceAPI_TestCases.ttcn \
# AtsMec_MeoPkgm_TestCases.ttcn \
# AtsMec_MepmPkgm_TestCases.ttcn \
# AtsMec_FixedAccessInfoAPI_TestCases.ttcn \
......
module TrafficManagementAPI_Pics {
/**
* @desc Does the IUT support TrafficManagementAPI?
*/
modulepar boolean PICS_BWMANAGEMENT_API_SUPPORTED := true;
} // End of module TrafficManagementAPI_Pics
} // End of module TrafficManagementAPI_Pics
sources := \
ttcn/V2XInformationService_TypesAndValues.ttcn
ttcn/V2XInformationServiceAPI_TypesAndValues.ttcn \
ttcn/V2XInformationServiceAPI_Pics.ttcn \
ttcn/V2XInformationServiceAPI_Pixits.ttcn \
ttcn/V2XInformationServiceAPI_Templates.ttcn \
module V2XInformationServiceAPI_Pics {
/**
* @desc Does the IUT support V2XInformationServiceAPI?
*/
modulepar boolean PICS_V2X_INFORMATION_SERVICE_API_SUPPORTED := true;
} // End of module V2XInformationServiceAPI_Pics
module V2XInformationServiceAPI_Pixits {
// LibCommon
import from LibCommon_BasicTypesAndValues all;
modulepar charstring PX_V2X_ECGI := "0";
} // End of module V2XInformationServiceAPI_Pixits
/**
* @author ETSI / TTF T012
* @version $Url$
* $Id$
* @desc Types ANd Values for ETSI GS MEC 030 V2.1.1 (2020-04)
* @copyright ETSI Copyright Notification
* No part may be reproduced except as authorized by written permission.
* The copyright and the foregoing restriction extend to reproduction in all media.
* All rights reserved.
*/
module V2XInformationServiceAPI_Templates {
// JSON
import from JSON all;
// LibCommon
import from LibCommon_BasicTypesAndValues all;
// LibMec/V2XInformationServiceAPI
import from V2XInformationServiceAPI_TypesAndValues all;
import from V2XInformationServiceAPI_Pixits all;
template (omit) UuUnicastProvisioningInfo m_uu_unicast_provisioning_info(
in template (value) ProInfoUuUnicastList p_proInfoUuUnicast,
in template (omit) TimeStamp p_timeStamp := omit
) := {
proInfoUuUnicast := p_proInfoUuUnicast,
timeStamp := p_timeStamp
} // End of template m_uu_unicast_provisioning_info
template (present) UuUnicastProvisioningInfo mw_uu_unicast_provisioning_info(
template (present) ProInfoUuUnicastList p_proInfoUuUnicast := ?,
template TimeStamp p_timeStamp := *
) := {
proInfoUuUnicast := p_proInfoUuUnicast,
timeStamp := p_timeStamp
} // End of template mw_uu_unicast_provisioning_info
} // End of module V2XInformationServiceAPI_Templates
......@@ -8,7 +8,7 @@
* The copyright and the foregoing restriction extend to reproduction in all media.
* All rights reserved.
*/
module V2XInformationService_TypesAndValues {
module V2XInformationServiceAPI_TypesAndValues {
// JSON
import from JSON all;
......@@ -16,7 +16,6 @@ module V2XInformationService_TypesAndValues {
// LibCommon
import from LibCommon_BasicTypesAndValues all;
/**
* @desc E-UTRAN Cell Identity as a bit string (size (28))
* @see ETSI TS 136 413
......@@ -648,4 +647,4 @@ module V2XInformationService_TypesAndValues {
} with {
encode "JSON"
} // End of module V2XInformationService_TypesAndValues
} // End of module V2XInformationServiceAPI_TypesAndValues
......@@ -7,14 +7,3 @@ sources := \
ttcn/LibMec_TypesAndValues.ttcn \
# Ams \
# AppEna \
# AppLCM \
# BwManagementAPI \
# Grant \
# LocationAPI \
# MeoPkgm \
# MepmPkgm \
# RnisAPI \
# UEAppInterfaceAPI \
# UEidentityAPI \
......@@ -30,6 +30,8 @@ module LibMec_Pixits {
modulepar charstring PX_ME_MTS_SESSIONS_URI := "/mts/v1/mts_sessions";
modulepar charstring PX_ME_V2X_QUERIES_URI := "/vis/v1/queries";
modulepar charstring PX_ME_APP_AMS_URI := "/amsi/v1/appMobilityServices"
modulepar charstring PX_ME_APP_AMS_SUBS := "/amsi/v1/subscriptions"
......
......@@ -22,10 +22,10 @@ module LibItsHttp_JsonMessageBodyTypes {
import from MepmPkgm_TypesAndValues all;
// LibMec/AppLCMAPI
import from AppLCM_TypesAndValues all;
// LibMec/UEAppInterfaceAPI
import from UEAppInterfaceAPI_TypesAndValues all;
// LibMec/V2XInformationServiceAPI
import from V2XInformationServiceAPI_TypesAndValues all;
/**
* This file volontary contains a trivial declaration of the type JsonBody.
......@@ -126,6 +126,7 @@ module LibItsHttp_JsonMessageBodyTypes {
SerAvailabilityNotificationSubscription serAvailabilityNotificationSubscription,
TimingCaps timingCaps,
CurrentTime currentTime,
UuUnicastProvisioningInfo uuUnicastProvisioningInfo,
universal charstring raw
} with {
variant ""
......
......@@ -46,6 +46,8 @@ module LibItsHttp_JsonTemplates {
// LibMec/UEAppInterfaceAPI
import from UEAppInterfaceAPI_TypesAndValues all;
import from UEAppInterfaceAPI_Templates all;
// LibMec/V2XInformationServiceAPI
import from V2XInformationServiceAPI_TypesAndValues all;
// TODO Add here your custom RFCs import
......@@ -951,5 +953,21 @@ group ams_api {
} // End of template mw_body_json_app_info
} // End of group ue_app_ctx
group v2x_information_service {
template (value) JsonBody m_body_json_uu_unicast_provisioning_info(
in template (value) UuUnicastProvisioningInfo p_uuUnicastProvisioningInfo
) := {
uuUnicastProvisioningInfo := p_uuUnicastProvisioningInfo
} // End of template m_body_json_uu_unicast_provisioning_info
template (present) JsonBody mw_body_json_uu_unicast_provisioning_info(
template (present) UuUnicastProvisioningInfo p_uuUnicastProvisioningInfo := ?
) := {
uuUnicastProvisioningInfo := p_uuUnicastProvisioningInfo
} // End of template mw_body_json_uu_unicast_provisioning_info
} // End of group v2x_information_service
} // End of module LibItsHttp_JsonTemplates
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment