From da939b20ceed5a703ba0b4e05cb87a17e5a00186 Mon Sep 17 00:00:00 2001 From: YannGarcia Date: Thu, 3 Oct 2019 01:44:45 -0700 Subject: [PATCH] Finalyze reviewing MEC 011 --- .../AtsMec_AppEnablementAPI_TestCases.ttcn | 207 +++++++++--------- .../AppEna/ttcn/AppEnablementAPI_Pics.ttcn | 6 +- .../AppEna/ttcn/AppEnablementAPI_Pixits.ttcn | 4 + .../ttcn/AppEnablementAPI_Templates.ttcn | 82 ++++++- .../ttcn/AppEnablementAPI_TypesAndValues.ttcn | 10 +- ttcn/LibMec/ttcn/LibMec_Functions.ttcn | 6 +- ttcn/LibMec/ttcn/LibMec_Pixits.ttcn | 2 + .../LibItsHttp_JsonMessageBodyTypes.ttcn | 5 +- .../LibItsHttp_JsonTemplates.ttcn | 52 ++++- 9 files changed, 255 insertions(+), 119 deletions(-) diff --git a/ttcn/AtsMec/AtsMec_AppEnablementAPI_TestCases.ttcn b/ttcn/AtsMec/AtsMec_AppEnablementAPI_TestCases.ttcn index c383f11..b458822 100644 --- a/ttcn/AtsMec/AtsMec_AppEnablementAPI_TestCases.ttcn +++ b/ttcn/AtsMec/AtsMec_AppEnablementAPI_TestCases.ttcn @@ -12,6 +12,7 @@ module AtsMec_AppEnablementAPI_TestCases { // Libcommon + import from LibCommon_BasicTypesAndValues all; import from LibCommon_Sync all; // LibHttp @@ -951,13 +952,13 @@ module AtsMec_AppEnablementAPI_TestCases { v_headers, m_http_message_body_json( m_body_json_app_termination_notif_subscription( - m_app_termination_notif_subscription( - PX_APP_TERM_NOTIF_CALLBACK_URI, - m_self( - { href := PX_HREF } - ), - PX_APP_INSTANCE_ID - ) + m_app_termination_notif_subscription_invalid( + PX_APP_TERM_NOTIF_CALLBACK_URI, + m_self( + { href := PX_HREF } + ), + PX_APP_INSTANCE_ID + ) ) ) ) @@ -1972,7 +1973,7 @@ module AtsMec_AppEnablementAPI_TestCases { alt { [] httpPort.receive( mw_http_response( - mw_http_response_404_not_found() + mw_http_response_404_not_found )) { tc_ac.stop; @@ -1996,6 +1997,7 @@ module AtsMec_AppEnablementAPI_TestCases { testcase TP_MEC_SRV_SRVSUB_002_OK() runs on HttpComponent system HttpTestAdapter { // Local variables var HeaderLines v_headers; + var HttpMessage v_response; // Test control if (not(PICS_MEC_PLAT) or not (PICS_SERVICES) or not(PICS_APP_ENABLEMENT_API_SUPPORTED)) { @@ -2019,10 +2021,9 @@ module AtsMec_AppEnablementAPI_TestCases { m_http_message_body_json( m_body_json_srv_avail_notif_subscription( m_srv_avail_notif_subscription( - PX_SRV_AVAIL_NOTIF_SUBSCRIPTION, - PX_SRV_AVAIL_NOTIF_CALLBACK_URIce - ) - ) + PX_SRV_AVAIL_NOTIF_CALLBACK_URI + ) + ) ) ) ) @@ -2035,20 +2036,20 @@ module AtsMec_AppEnablementAPI_TestCases { [] httpPort.receive( mw_http_response( mw_http_response_201_created( - mw_http_message_body_json( - mw_body_json_srv_avail_notif_subscription( - mw_srv_avail_notif_subscription( - PX_SRV_AVAIL_NOTIF_SUBSCRIPTION, //subscriptionType - PX_SRV_AVAIL_NOTIF_CALLBACK_URI // callbackReference - ) - ) - )))) { - // TODO Need to check Location header - + mw_http_message_body_json( + mw_body_json_srv_avail_notif_subscription( + mw_srv_avail_notif_subscription( + PX_SRV_AVAIL_NOTIF_CALLBACK_URI + )))))) -> value v_response { tc_ac.stop; - - log("*** " & testcasename() & ": PASS: IUT successfully responds with a SerAvailabilityNotificationSubscription ***"); - f_selfOrClientSyncAndVerdict(c_tbDone, e_success); + + if (f_check_headers(valueof(v_response.response.header)) == true) { + log("*** " & testcasename() & ": PASS: IUT successfully responds with a SerAvailabilityNotificationSubscription ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_success); + } else { + log("*** " & testcasename() & ": FAIL: Header 'Location' was not present in the response headers ***"); + f_selfOrClientSyncAndVerdict(c_tbDone, e_error); + } } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: Expected message not received ***"); @@ -2090,11 +2091,10 @@ module AtsMec_AppEnablementAPI_TestCases { v_headers, m_http_message_body_json( m_body_json_srv_avail_notif_subscription( - m_srv_avail_notif_subscription( - PX_INVALID_SUBSCRIPTION, //subscriptionType - PX_SRV_AVAIL_NOTIF_CALLBACK_URI // callbackReference - ) - ) + m_srv_avail_notif_subscription_invalid( + PX_SRV_AVAIL_NOTIF_CALLBACK_URI + ) + ) ) ) ) @@ -2106,7 +2106,7 @@ module AtsMec_AppEnablementAPI_TestCases { alt { [] httpPort.receive( mw_http_response( - mw_http_response_400_bad_request() + mw_http_response_400_bad_request )) { tc_ac.stop; @@ -2162,12 +2162,10 @@ module AtsMec_AppEnablementAPI_TestCases { mw_http_response( mw_http_response_ok( mw_http_message_body_json( - m_body_json_srv_avail_notif_subscription( - m_srv_avail_notif_subscription( - PX_SRV_AVAIL_NOTIF_SUBSCRIPTION //subscriptionType - ) - ) - )))) { + m_body_json_srv_avail_notif_subscription( + m_srv_avail_notif_subscription( + PX_SRV_AVAIL_NOTIF_CALLBACK_URI + )))))) { tc_ac.stop; log("*** " & testcasename() & ": PASS: IUT successfully responds with a SerAvailabilityNotificationSubscription ***"); @@ -2220,7 +2218,7 @@ module AtsMec_AppEnablementAPI_TestCases { alt { [] httpPort.receive( mw_http_response( - mw_http_response_404_not_found() + mw_http_response_404_not_found )) { tc_ac.stop; @@ -2274,7 +2272,7 @@ module AtsMec_AppEnablementAPI_TestCases { alt { [] httpPort.receive( mw_http_response( - mw_http_response_204_no_content() + mw_http_response_204_no_content )) { tc_ac.stop; @@ -2329,7 +2327,7 @@ module AtsMec_AppEnablementAPI_TestCases { alt { [] httpPort.receive( mw_http_response( - mw_http_response_404_not_found() + mw_http_response_404_not_found )) { tc_ac.stop; @@ -2391,9 +2389,10 @@ module AtsMec_AppEnablementAPI_TestCases { [] httpPort.receive( mw_http_response( mw_http_response_ok( - mw_body_json_timing_caps( - mw_timing_caps(*) // TODO don't care about the content - )))) { + mw_http_message_body_json( + mw_body_json_timing_caps( + mw_timing_caps + ))))) { tc_ac.stop; log("*** " & testcasename() & ": PASS: IUT successfully responds with a TimingCaps ***"); @@ -2416,6 +2415,7 @@ module AtsMec_AppEnablementAPI_TestCases { testcase TP_MEC_SRV_TIME_002_OK() runs on HttpComponent system HttpTestAdapter { // Local variables var HeaderLines v_headers; + var UInt64 v_current_time; // Test control if (not(PICS_MEC_PLAT) or not (PICS_SERVICES) or not(PICS_APP_ENABLEMENT_API_SUPPORTED)) { @@ -2439,6 +2439,7 @@ module AtsMec_AppEnablementAPI_TestCases { ) ) ); + v_current_time := f_get_current_time_utc(); f_selfOrClientSyncAndVerdict(c_prDone, e_success); // Test Body @@ -2447,10 +2448,12 @@ module AtsMec_AppEnablementAPI_TestCases { [] httpPort.receive( mw_http_response( mw_http_response_ok( - mw_body_json_current_time( - mw_current_time(*) // TODO don't care about the content - )))) { - + mw_http_message_body_json( + mw_body_json_current_time( + mw_current_time( + (v_current_time - 60 .. v_current_time + 60), + (v_current_time / 1000 - 60 .. v_current_time / 1000 + 60) + )))))) { tc_ac.stop; log("*** " & testcasename() & ": PASS: IUT successfully responds with a CurrentTime ***"); @@ -2511,9 +2514,9 @@ module AtsMec_AppEnablementAPI_TestCases { [] httpPort.receive( mw_http_response( mw_http_response_ok( - mw_body_json_traffic_rule_list( - mw_traffic_rule_list(*) // TODO don't care about the content - )))) { + mw_http_message_body_json( + mw_body_json_traffic_rule_list + )))) { tc_ac.stop; log("*** " & testcasename() & ": PASS: IUT successfully responds with a TrafficRuleList ***"); @@ -2566,7 +2569,7 @@ module AtsMec_AppEnablementAPI_TestCases { alt { [] httpPort.receive( mw_http_response( - mw_http_response_404_not_found() + mw_http_response_404_not_found )) { tc_ac.stop; @@ -2590,19 +2593,19 @@ module AtsMec_AppEnablementAPI_TestCases { testcase TC_MEC_SRV_TRAF_002_OK() runs on HttpComponent system HttpTestAdapter { // Local variables var HeaderLines v_headers; - + // Test control if (not(PICS_MEC_PLAT) or not(PICS_SERVICES) or not(PICS_APP_ENABLEMENT_API_SUPPORTED)) { log("*** " & testcasename() & ": PICS_MEC_PLAT and PICS_SERVICES and PICS_APP_ENABLEMENT_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( @@ -2627,7 +2630,7 @@ module AtsMec_AppEnablementAPI_TestCases { PX_TRAFFIC_RULE_ID )))))) { tc_ac.stop; - + log("*** " & testcasename() & ": PASS: IUT successfully responds with a UeIdentityTag ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } @@ -2636,31 +2639,31 @@ module AtsMec_AppEnablementAPI_TestCases { f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // End of 'alt' statement - + // Postamble f_cf_01_http_down(); } // End of testcase TC_MEC_SRV_TRAF_002_OK - - /** + + /** * @desc Check that the IUT updates a specific traffic rule when commanded by a MEC Application * @see https://forge.etsi.org/gitlab/mec/gs032p2-test-purposes/blob/master/Test%20Purposes/SRV/TRAF/TrafficRules.tplan2 */ testcase TC_MEC_SRV_TRAF_003_OK() runs on HttpComponent system HttpTestAdapter { // Local variables var HeaderLines v_headers; - + // Test control if (not(PICS_MEC_PLAT) or not(PICS_SERVICES) or not(PICS_APP_ENABLEMENT_API_SUPPORTED)) { log("*** " & testcasename() & ": PICS_MEC_PLAT and PICS_SERVICES and PICS_APP_ENABLEMENT_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( @@ -2683,7 +2686,7 @@ module AtsMec_AppEnablementAPI_TestCases { ) ); f_selfOrClientSyncAndVerdict(c_prDone, e_success); - + // Test Body tc_ac.start; alt { @@ -2696,7 +2699,7 @@ module AtsMec_AppEnablementAPI_TestCases { PX_TRAFFIC_RULE_ID )))))) { tc_ac.stop; - + log("*** " & testcasename() & ": PASS: IUT successfully responds with a UeIdentityTag ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } @@ -2705,11 +2708,11 @@ module AtsMec_AppEnablementAPI_TestCases { f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // End of 'alt' statement - + // Postamble f_cf_01_http_down(); } // End of testcase TC_MEC_SRV_TRAF_003_OK - + /** * @desc Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application * @see https://forge.etsi.org/gitlab/mec/gs032p2-test-purposes/blob/master/Test%20Purposes/SRV/TRAF/PlatTrafficRules.tplan2 @@ -2741,11 +2744,11 @@ module AtsMec_AppEnablementAPI_TestCases { "/" & PICS_ROOT_API & PX_ME_APP_SUPPORT_URI & oct2char(unichar2oct(PX_APP_INSTANCE_ID, "UTF-8")) & "/traffic_rules/" & oct2char(unichar2oct(PX_TRAFFIC_RULE_ID, "UTF-8")), v_headers, m_http_message_body_json( - m_body_traffic_rule( - m_traffic_rule( - PX_TRF_RULE_INVALID // action - ) - ) + m_body_json_traffic_rule( + m_traffic_rule( + PX_NON_EXISTENT_TRAFFIC_RULE_ID + ) + ) ) ) ) @@ -2757,7 +2760,7 @@ module AtsMec_AppEnablementAPI_TestCases { alt { [] httpPort.receive( mw_http_response( - mw_http_response_400_bad_request() + mw_http_response_400_bad_request )) { tc_ac.stop; @@ -2801,15 +2804,17 @@ module AtsMec_AppEnablementAPI_TestCases { m_http_request( m_http_request_put( "/" & PICS_ROOT_API & PX_ME_APP_SUPPORT_URI & oct2char(unichar2oct(PX_APP_INSTANCE_ID, "UTF-8")) & "/traffic_rules/" & oct2char(unichar2oct(PX_NON_EXISTENT_TRAFFIC_RULE_ID, "UTF-8")), - v_headers, - m_http_message_body_json( - m_body_traffic_rule( - m_traffic_rule( - PX_TRF_RULE_DROP // action - ) - ) - ) - ) + v_headers, + m_http_message_body_json( + m_body_json_traffic_rule( + m_traffic_rule( + PX_TRAFFIC_RULE_ID, + -, -, -, + DROP + ) + ) + ) + ) ) ); f_selfOrClientSyncAndVerdict(c_prDone, e_success); @@ -2819,7 +2824,7 @@ module AtsMec_AppEnablementAPI_TestCases { alt { [] httpPort.receive( mw_http_response( - mw_http_response_404_not_found() + mw_http_response_404_not_found )) { tc_ac.stop; @@ -2863,13 +2868,15 @@ module AtsMec_AppEnablementAPI_TestCases { m_http_request( m_http_request_put( "/" & PICS_ROOT_API & PX_ME_APP_SUPPORT_URI & oct2char(unichar2oct(PX_APP_INSTANCE_ID, "UTF-8")) & "/traffic_rules/" & oct2char(unichar2oct(PX_NON_EXISTENT_TRAFFIC_RULE_ID, "UTF-8")), - v_headers, - m_http_message_body_json( - m_body_traffic_rule( - m_traffic_rule( - PX_TRF_RULE_DROP // action - ) - ) + v_headers, + m_http_message_body_json( + m_body_json_traffic_rule( + m_traffic_rule( + PX_TRAFFIC_RULE_ID, + -, -, -, + DROP + ) + ) ) ) ) @@ -2881,7 +2888,7 @@ module AtsMec_AppEnablementAPI_TestCases { alt { [] httpPort.receive( mw_http_response( - mw_http_response_412_precondition_failed() + mw_http_response_412_precondition_failed )) { tc_ac.stop; @@ -2897,14 +2904,14 @@ module AtsMec_AppEnablementAPI_TestCases { // Postamble f_cf_01_http_down(); } // End of testcase TP_MEC_SRV_TRAF_003_PF - + } // End of group traffic_rules /* * Transport (TRANS) */ group transport_rules { - + /** * @desc Check that the IUT responds with a list of available transports when queried by a MEC Application * @see https://forge.etsi.org/gitlab/mec/gs032p2-test-purposes/blob/master/Test%20Purposes/SRV/TRANS/PlatTransport.tplan2 @@ -2919,12 +2926,12 @@ module AtsMec_AppEnablementAPI_TestCases { setverdict(inconc); stop; } - + // Test component configuration f_cf_01_http_up(); - + // Test adapter configuration - + // Preamble f_init_default_headers_list(-, -, v_headers); httpPort.send( @@ -2936,7 +2943,7 @@ module AtsMec_AppEnablementAPI_TestCases { ) ); f_selfOrClientSyncAndVerdict(c_prDone, e_success); - + // Test Body tc_ac.start; alt { @@ -2947,7 +2954,7 @@ module AtsMec_AppEnablementAPI_TestCases { mw_body_json_transport_info_list )))) { tc_ac.stop; - + log("*** " & testcasename() & ": PASS: IUT successfully responds with a UeIdentityTag ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } @@ -2956,11 +2963,11 @@ module AtsMec_AppEnablementAPI_TestCases { f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } } // End of 'alt' statement - + // Postamble f_cf_01_http_down(); } // End of testcase TC_MEC_SRV_TRANS_001_OK } // End of group transport_rules -} // End of module AtsMec_AppEnablementAPI_TestCases \ No newline at end of file +} // End of module AtsMec_AppEnablementAPI_TestCases diff --git a/ttcn/LibMec/AppEna/ttcn/AppEnablementAPI_Pics.ttcn b/ttcn/LibMec/AppEna/ttcn/AppEnablementAPI_Pics.ttcn index 87d1860..a16b810 100644 --- a/ttcn/LibMec/AppEna/ttcn/AppEnablementAPI_Pics.ttcn +++ b/ttcn/LibMec/AppEna/ttcn/AppEnablementAPI_Pics.ttcn @@ -1,5 +1,7 @@ module AppEnablementAPI_Pics { modulepar boolean PICS_APP_ENABLEMENT_API_SUPPORTED := true; - -} // End of module AppEnablementAPI_Pics + + modulepar boolean PICS_ME_APP_SUPPORT_TIMING_CAPS_URI := true; + +} // End of module AppEnablementAPI_Pics diff --git a/ttcn/LibMec/AppEna/ttcn/AppEnablementAPI_Pixits.ttcn b/ttcn/LibMec/AppEna/ttcn/AppEnablementAPI_Pixits.ttcn index 6738277..2f2d8be 100644 --- a/ttcn/LibMec/AppEna/ttcn/AppEnablementAPI_Pixits.ttcn +++ b/ttcn/LibMec/AppEna/ttcn/AppEnablementAPI_Pixits.ttcn @@ -49,6 +49,10 @@ module AppEnablementAPI_Pixits { modulepar DnsRule_State PX_DNS_INVALID_STATE := UNKNOWN_VALUE; + modulepar SerAvailabilityNotificationSubscription_CallbackReference PX_SRV_AVAIL_NOTIF_CALLBACK_URI := ""; + modulepar TrafficRule_Id PX_TRAFFIC_RULE_ID := "trafficRuleId01"; + + modulepar TrafficRule_Id PX_NON_EXISTENT_TRAFFIC_RULE_ID := "trafficRuleId99"; } // End of module AppEnablementAPI_Pixits diff --git a/ttcn/LibMec/AppEna/ttcn/AppEnablementAPI_Templates.ttcn b/ttcn/LibMec/AppEna/ttcn/AppEnablementAPI_Templates.ttcn index 23fc147..4325f1f 100644 --- a/ttcn/LibMec/AppEna/ttcn/AppEnablementAPI_Templates.ttcn +++ b/ttcn/LibMec/AppEna/ttcn/AppEnablementAPI_Templates.ttcn @@ -109,6 +109,14 @@ module AppEnablementAPI_Templates { appInstanceId := p_appInstanceId } // End of template m_app_termination_notif_subscription + template (value) AppTerminationNotificationSubscription m_app_termination_notif_subscription_invalid( + in template (value) AppTerminationNotificationSubscription_CallbackReference p_callbackReference, + in template (value) Self p_links, + in template (value) AppInstanceId p_appInstanceId + ) modifies m_app_termination_notif_subscription := { + subscriptionType := "InvalidAppTerminationNotificationSubscription" + } // End of template m_app_termination_notif_subscription_invalid + template (present) AppTerminationNotificationSubscription mw_app_termination_notif_subscription( template (present) AppTerminationNotificationSubscription_CallbackReference p_callbackReference := ?, template (present) Self p_links := ?, @@ -192,12 +200,82 @@ module AppEnablementAPI_Templates { state := p_state } // End of template mw_dns_rule + template (omit) SerAvailabilityNotificationSubscription m_srv_avail_notif_subscription( + in template (value) SerAvailabilityNotificationSubscription_CallbackReference p_callbackReference, + in template (omit) Self p_links := omit, + in template (omit) ServiceInfo p_filteringCriteria := omit + ) := { + subscriptionType := "SerAvailabilityNotificationSubscription", + callbackReference := p_callbackReference, + links := p_links, + filteringCriteria := p_filteringCriteria + } // End of template m_srv_avail_notif_subscription + + template (omit) SerAvailabilityNotificationSubscription m_srv_avail_notif_subscription_invalid( + in template (value) SerAvailabilityNotificationSubscription_CallbackReference p_callbackReference, + in template (omit) Self p_links := omit, + in template (omit) ServiceInfo p_filteringCriteria := omit + ) modifies m_srv_avail_notif_subscription := { + subscriptionType := "InvalidSerAvailabilityNotificationSubscription" + } // End of template m_srv_avail_notif_subscription_invalid + + template SerAvailabilityNotificationSubscription mw_srv_avail_notif_subscription( + template (present) SerAvailabilityNotificationSubscription_CallbackReference p_callbackReference := ?, + template Self p_links := *, + template ServiceInfo p_filteringCriteria := * + ) := { + subscriptionType := "SerAvailabilityNotificationSubscription", + callbackReference := p_callbackReference, + links := p_links, + filteringCriteria := p_filteringCriteria + } // End of template mw_srv_avail_notif_subscription + + template (omit) TimingCaps m_timing_caps( + in template (omit) TimeStamp p_timeStamp, + in template (omit) NtpServersList p_ntpServers := omit, + in template (omit) TimingCaps_PtpMastersList p_ptpMasters := omit + ) := { + timeStamp := p_timeStamp, + ntpServers := p_ntpServers, + ptpMasters := p_ptpMasters + } // End of template m_timing_caps + + template TimingCaps mw_timing_caps( + template TimeStamp p_timeStamp := *, + template NtpServersList p_ntpServers := *, + template TimingCaps_PtpMastersList p_ptpMasters := * + ) := { + timeStamp := p_timeStamp, + ntpServers := p_ntpServers, + ptpMasters := p_ptpMasters + } // End of template mw_timing_caps + + template (value) CurrentTime m_current_time( + in template (value) Seconds p_seconds, + in template (value) NanoSeconds p_nanoSeconds, + in template (value) TimeSourceStatus p_timeSourceStatus := TRACEABLE + ) := { + seconds := p_seconds, + nanoSeconds := p_nanoSeconds, + timeSourceStatus := p_timeSourceStatus + } // End of template m_current_time + + template (present) CurrentTime mw_current_time( + template (present) Seconds p_seconds := ?, + template (present) NanoSeconds p_nanoSeconds := ?, + template (present) TimeSourceStatus p_timeSourceStatus := TRACEABLE + ) := { + seconds := p_seconds, + nanoSeconds := p_nanoSeconds, + timeSourceStatus := p_timeSourceStatus + } // End of template mw_current_time + template (value) TrafficRule m_traffic_rule( in TrafficRule_Id p_trafficRuleId, in TrafficRule_FilterType p_filterType := FLOW, in TrafficRule_Priority p_priority := 1, in TrafficFilterList p_trafficFilter := {}, - in TrafficRule_Action p_action_, + in TrafficRule_Action p_action_ := FORWARD_AS_IS, in TrafficRule_State p_state := ACTIVE ) := { trafficRuleId := p_trafficRuleId, @@ -208,7 +286,7 @@ module AppEnablementAPI_Templates { dstInterface := omit, state := p_state } // End of template m_traffic_rule - + template (present) TrafficRule mw_traffic_rule( template (present) TrafficRule_Id p_trafficRuleId := ?, template (present) TrafficRule_FilterType p_filterType := ?, diff --git a/ttcn/LibMec/AppEna/ttcn/AppEnablementAPI_TypesAndValues.ttcn b/ttcn/LibMec/AppEna/ttcn/AppEnablementAPI_TypesAndValues.ttcn index 0b8ed2e..11dd7ae 100644 --- a/ttcn/LibMec/AppEna/ttcn/AppEnablementAPI_TypesAndValues.ttcn +++ b/ttcn/LibMec/AppEna/ttcn/AppEnablementAPI_TypesAndValues.ttcn @@ -393,8 +393,8 @@ module AppEnablementAPI_TypesAndValues { type record SerAvailabilityNotificationSubscription { SerAvailabilityNotificationSubscription_SubscriptionType subscriptionType, SerAvailabilityNotificationSubscription_CallbackReference callbackReference, - Self links, - ServiceInfo filteringCriteria + Self links optional, + ServiceInfo filteringCriteria optional } /** @@ -581,9 +581,9 @@ module AppEnablementAPI_TypesAndValues { * @desc This type represents the information provided by the mobile edge platform in response to the Timing capabilities Query message. */ type record TimingCaps { - TimeStamp timeStamp, - NtpServersList ntpServers, - TimingCaps_PtpMastersList ptpMasters + TimeStamp timeStamp optional, + NtpServersList ntpServers optional, + TimingCaps_PtpMastersList ptpMasters optional } /** diff --git a/ttcn/LibMec/ttcn/LibMec_Functions.ttcn b/ttcn/LibMec/ttcn/LibMec_Functions.ttcn index 5c1971d..8825851 100644 --- a/ttcn/LibMec/ttcn/LibMec_Functions.ttcn +++ b/ttcn/LibMec/ttcn/LibMec_Functions.ttcn @@ -210,9 +210,13 @@ module LibMec_Functions { return v_result; } // End of function f_check_user_register_state + function f_get_current_time_utc() return UInt64 { + return fx_get_current_time_utc(); + } // End of function f_get_current_time_utc + function f_get_current_timestamp_utc() return UInt64 { return fx_get_current_time_utc(); - } // End of function f_get_current_timestamp + } // End of function f_get_current_timestamp_utc } // End of group helpers diff --git a/ttcn/LibMec/ttcn/LibMec_Pixits.ttcn b/ttcn/LibMec/ttcn/LibMec_Pixits.ttcn index 40b96ac..a930875 100644 --- a/ttcn/LibMec/ttcn/LibMec_Pixits.ttcn +++ b/ttcn/LibMec/ttcn/LibMec_Pixits.ttcn @@ -56,4 +56,6 @@ module LibMec_Pixits { modulepar charstring PX_MEC_SVC_MGMT_SVC_URI := "/mec_service_mgmt/v1/services"; + modulepar charstring PX_ME_APP_SUPPORT_TIMING_CAPS_URI := ""; + } // End of module LibMec_Pixits diff --git a/ttcn/patch_lib_http/LibItsHttp_JsonMessageBodyTypes.ttcn b/ttcn/patch_lib_http/LibItsHttp_JsonMessageBodyTypes.ttcn index e032a83..e3a176c 100644 --- a/ttcn/patch_lib_http/LibItsHttp_JsonMessageBodyTypes.ttcn +++ b/ttcn/patch_lib_http/LibItsHttp_JsonMessageBodyTypes.ttcn @@ -116,12 +116,15 @@ module LibItsHttp_JsonMessageBodyTypes { AppTerminationNotificationSubscription appTerminationNotificationSubscription, DnsRuleList dnsRuleList, DnsRule dnsRule, + SerAvailabilityNotificationSubscription serAvailabilityNotificationSubscription, + TimingCaps timingCaps, + CurrentTime currentTime, AppEnablementAPI_TypesAndValues.ProblemDetails problemDetails_app_enablement, universal charstring raw } with { variant "" } - + } with { variant "" } // End of module LibItsHttp_JsonMessageBodyTypes diff --git a/ttcn/patch_lib_http/LibItsHttp_JsonTemplates.ttcn b/ttcn/patch_lib_http/LibItsHttp_JsonTemplates.ttcn index 58a0515..0abdf0d 100644 --- a/ttcn/patch_lib_http/LibItsHttp_JsonTemplates.ttcn +++ b/ttcn/patch_lib_http/LibItsHttp_JsonTemplates.ttcn @@ -775,6 +775,42 @@ group ams_api { dnsRuleList := p_dnsRuleList } // End of template mw_body_json_dns_rule_list + template (value) JsonBody m_body_json_srv_avail_notif_subscription( + in template (value) SerAvailabilityNotificationSubscription p_serAvailabilityNotificationSubscription + ) := { + serAvailabilityNotificationSubscription := p_serAvailabilityNotificationSubscription + } // End of template m_body_json_srv_avail_notif_subscription + + template (present) JsonBody mw_body_json_srv_avail_notif_subscription( + template (present) SerAvailabilityNotificationSubscription p_serAvailabilityNotificationSubscription := ? + ) := { + serAvailabilityNotificationSubscription := p_serAvailabilityNotificationSubscription + } // End of template mw_body_json_srv_avail_notif_subscription + + template (value) JsonBody m_body_json_timing_caps( + in template (value) TimingCaps p_timingCaps + ) := { + timingCaps := p_timingCaps + } // End of template m_body_json_timing_caps + + template (present) JsonBody mw_body_json_timing_caps( + template (present) TimingCaps p_timingCaps := ? + ) := { + timingCaps := p_timingCaps + } // End of template mw_body_json_timing_caps + + template (value) JsonBody m_body_json_current_time( + in template (value) CurrentTime p_currentTime + ) := { + currentTime := p_currentTime + } // End of template m_body_json_current_time + + template (present) JsonBody mw_body_json_current_time( + template (present) CurrentTime p_currentTime := ? + ) := { + currentTime := p_currentTime + } // End of template mw_body_json_current_time + template (value) JsonBody m_body_json_traffic_rule( in template (value) TrafficRule p_trafficRule ) := { @@ -787,17 +823,17 @@ group ams_api { trafficRule := p_trafficRule } // End of template mw_body_json_traffic_rule - template (value) JsonBody m_body_json_traffic_rules_list( - in template (value) TrafficRuleList p_trafficRuleList - ) := { + template (value) JsonBody m_body_json_traffic_rule_list( + in template (value) TrafficRuleList p_trafficRuleList + ) := { trafficRuleList := p_trafficRuleList - } // End of template m_body_json_traffic_rules_list + } // End of template m_body_json_traffic_rule_list - template (present) JsonBody mw_body_json_traffic_rules_list( - template (present) TrafficRuleList p_trafficRuleList := ? - ) := { + template (present) JsonBody mw_body_json_traffic_rule_list( + template (present) TrafficRuleList p_trafficRuleList := ? + ) := { trafficRuleList := p_trafficRuleList - } // End of template mw_body_json_traffic_rules_list + } // End of template mw_body_json_traffic_rule_list template (value) JsonBody m_body_json_app_enablement_problem_details( in template (value) AppEnablementAPI_TypesAndValues.ProblemDetails p_problemDetails -- GitLab