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

Add V2XInformationServiceAPI structures

parent 7e73130a
Loading
Loading
Loading
Loading
+14 −0
Original line number Original line Diff line number Diff line
@@ -68,6 +68,10 @@ int json_codec::encode (const LibItsHttp__JsonMessageBodyTypes::JsonBody& msg, O
    const TrafficManagementAPI__TypesAndValues::BwInfo& bw_info = msg.bwInfo();
    const TrafficManagementAPI__TypesAndValues::BwInfo& bw_info = msg.bwInfo();
    bw_info.encode(TrafficManagementAPI__TypesAndValues::BwInfo_descr_, encoding_buffer, TTCN_EncDec::CT_JSON);
    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("}"))*/;
    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 {
  } else {
    loggers::get_instance().error("json_codec::encode: Not supported");
    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);
      bw_info.decode(TrafficManagementAPI__TypesAndValues::BwInfo_descr_, decoding_buffer_, TTCN_EncDec::CT_JSON);
      msg.bwInfo() = bw_info;
      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) {
  } else if (it->second.find("\"detail\"") != std::string::npos) {
    LibMec__TypesAndValues::ProblemDetails problem_details;
    LibMec__TypesAndValues::ProblemDetails problem_details;
    problem_details.decode(LibMec__TypesAndValues::ProblemDetails_descr_, decoding_buffer, TTCN_EncDec::CT_JSON);
    problem_details.decode(LibMec__TypesAndValues::ProblemDetails_descr_, decoding_buffer, TTCN_EncDec::CT_JSON);
+104 −0
Original line number Original line Diff line number Diff line
/**
 *    @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
+1 −0
Original line number Original line Diff line number Diff line
@@ -13,6 +13,7 @@ sources := \
    AtsMec_TestControl.ttcn  \
    AtsMec_TestControl.ttcn  \
    AtsMec_UEAppInterfaceAPI_TestCases.ttcn  \
    AtsMec_UEAppInterfaceAPI_TestCases.ttcn  \
    AtsMec_UEidentityAPI_TestCases.ttcn  \
    AtsMec_UEidentityAPI_TestCases.ttcn  \
    AtsMec_V2XInformationServiceAPI_TestCases.ttcn \
#    AtsMec_MeoPkgm_TestCases.ttcn  \
#    AtsMec_MeoPkgm_TestCases.ttcn  \
#    AtsMec_MepmPkgm_TestCases.ttcn  \
#    AtsMec_MepmPkgm_TestCases.ttcn  \
#    AtsMec_FixedAccessInfoAPI_TestCases.ttcn  \
#    AtsMec_FixedAccessInfoAPI_TestCases.ttcn  \
+5 −1
Original line number Original line Diff line number Diff line
sources := \
sources := \
    ttcn/V2XInformationService_TypesAndValues.ttcn
    ttcn/V2XInformationServiceAPI_TypesAndValues.ttcn \
    ttcn/V2XInformationServiceAPI_Pics.ttcn \
    ttcn/V2XInformationServiceAPI_Pixits.ttcn \
    ttcn/V2XInformationServiceAPI_Templates.ttcn \
+8 −0
Original line number Original line Diff line number Diff line
module V2XInformationServiceAPI_Pics {
  
  /**
   * @desc Does the IUT support V2XInformationServiceAPI?
   */
  modulepar boolean PICS_V2X_INFORMATION_SERVICE_API_SUPPORTED := true;
  
} // End of module V2XInformationServiceAPI_Pics
Loading