Commit cd1ad821 authored by YannGarcia's avatar YannGarcia
Browse files

Add support of getting time UTC, Start enhancement of RNIS

parent 65f0d13f
#include "LibMec_Functions.hh"
#include <math.h>
#include "base_time.hh"
#include "loggers.hh"
#ifndef M_PI
#define M_PI 3.14159265358979323846
#endif
#define earthRadius 6378137.0L
#define rbis = ((double)(earthRadius * M_PI / 180))
namespace LibMec__Functions {
/**
* @desc This external function gets the current time
* @return Timestamp - current time since 01/01/2004 in milliseconds
* @see fx_getCurrentTime() return TimestampIts
*/
INTEGER fx__getCurrentTime(
) {
INTEGER i;
i.set_long_long_val(base_time::get_instance().get_its_current_time_ms());
loggers::get_instance().log_msg("<<< fx__getCurrentTime: ", i);
return i;
}
/**
* @desc This external function gets the current time since 01/01/1970 in UTC format
* @return The current time since 01/01/1970 in UTC format
* @see fx_getCurrentTimeUtc() return UInt64
*/
INTEGER fx__get__current__time__utc() {
INTEGER i;
i.set_long_long_val(base_time::get_instance().get_current_time_ms());
return i;
}
} // end of Namespace
......@@ -13,6 +13,8 @@ LibCommon_Sync.PX_TSHUT_DOWN_TIME_LIMIT := 30.0;
LibItsHttp_Pics.PICS_HEADER_HOST := "192.168.1.34"
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_MEC_PLAT := true
LibMec_Pics.PICS_SERVICES := true
......
......@@ -9,138 +9,620 @@
* All rights reserved.
* @see ETSI GS MEC 003, Draft ETSI GS MEC 013 V2.0.3 (2018-10)
*/
module AtsMec_Ams_TestCases {
// Libcommon
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_LocationAPI
import from Ams_Templates all;
import from Ams_Pics all;
import from Ams_Pixits all;
// LibMec
import from LibMec_Functions all;
import from LibMec_Pics all;
import from LibMec_Pixits all;
group appMobilityServices {
/**
* @desc Check that the AMS service returns information about the registered application mobility services when requested
* @see ETSI GS MEC 021 2.0.8, clause 8.3.3.1
*/
testcase TP_MEC_SRV_AMS_001_OK() runs on HttpComponent system HttpTestAdapter {
// Local variables
module AtsMec_Ams_TestCases {
// Libcommon
import from LibCommon_BasicTypesAndValues 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_LocationAPI
import from Ams_Templates all;
import from Ams_Pics all;
import from Ams_Pixits all;
// LibMec
import from LibMec_Functions all;
import from LibMec_Pics all;
import from LibMec_Pixits all;
group appMobilityServices {
/**
* @desc Check that the AMS service returns information about the registered application mobility services when requested
* @see ETSI GS MEC 021 2.0.8, clause 8.3.3.1
*/
testcase TP_MEC_SRV_AMS_001_OK() runs on HttpComponent system HttpTestAdapter {
// Local variables
var HeaderLines v_headers;
var HttpMessage v_response;
// Test control
if (not(PICS_AMS) or not(PICS_AMS_API_SUPPORTED)){
log("*** " & testcasename() & ": PICS_AMS required for executing the TC ***");
setverdict(inconc);
stop;
}
// Test component configuration
f_cf_01_http_up();
// Preamble
f_init_default_headers_list(-, -, v_headers);
httpPort.send(
m_http_request(
m_http_request_get(
"/" & PICS_ROOT_API & PX_ME_APP_AMS_URI,
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_app_mobility_service_info(
mw_app_mobility_service_info(
{
mw_app_mobility_registration_info(
mw_service_consumer_id(
PX_APP_INS_ID,
PX_MEP_ID
)
)
}
)))))) -> value v_response {
tc_ac.stop;
if (f_check_headers(valueof(v_response.response.header)) == true) {
log("*** " & testcasename() & ": PASS: IUT successfully responds with a AppTerminationNotificationSubscription ***");
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 ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
} // End of 'alt' statement
} // End of testcase TP_MEC_SRV_AMS_001_OK
/**
* @desc Check that the AMS service returns an error when receives a query about a registered application mobility service with wrong parameters
* @see ETSI GS MEC 021 2.0.8, clause 8.3.3.1
*/
testcase TP_MEC_SRV_AMS_001_BR() runs on HttpComponent system HttpTestAdapter {
// Local variables
var HeaderLines v_headers;
// Test control
if (not(PICS_AMS) or not(PICS_AMS_API_SUPPORTED)){
log("*** " & testcasename() & ": PICS_AMS required for executing the TC ***");
setverdict(inconc);
stop;
}
// Test component configuration
f_cf_01_http_up();
// Preamble
f_init_default_headers_list(-, -, v_headers);
httpPort.send(
m_http_request(
m_http_request_get(
"/" & PICS_ROOT_API & PX_ME_APP_AMS_URI & "?appMobilityService=" & oct2char(unichar2oct(PX_APP_MOBILITY_SERVICE_ID, "UTF-8")),
v_headers
)));
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
tc_ac.start;
alt {
[] httpPort.receive(
mw_http_response(
mw_http_response_400_bad_request(
mw_http_message_body_json(
mw_body_json_ams_problem_details(
mw_problem_details(
-,
-,
400
)))))) {
tc_ac.stop;
log("*** " & testcasename() & ": PASS: IUT successfully responds with a ProblemDetails set to 400 Bad Request ***");
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
} // End of testcase TP_MEC_SRV_AMS_001_BR
/**
* @desc Check that the AMS service creates a new application mobility services when requested
* @see ETSI GS MEC 021 2.0.8, clause 8.3.3.4
*/
testcase TP_MEC_SRV_AMS_002_OK() runs on HttpComponent system HttpTestAdapter {
var HeaderLines v_headers;
if (not(PICS_AMS) or not(PICS_AMS_API_SUPPORTED)){
log("*** " & testcasename() & ": PICS_AMS required for executing the TC ***");
setverdict(inconc);
stop;
}
// Test component configuration
f_cf_01_http_up();
// Preamble
f_init_default_headers_list(-, -, v_headers);
httpPort.send(
m_http_request(
m_http_request_post(
"/" & PICS_ROOT_API & PX_ME_APP_AMS_URI,
v_headers,
m_http_message_body_json(
m_body_json_ams_registration_request(
m_registration_request(
m_service_consumer_id(
PX_APP_INS_ID,
-
),
-,
-
)
)
)
)
)
);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
tc_ac.start;
alt {
[] httpPort.receive(
mw_http_response(
mw_http_response_201_created(
mw_http_message_body_json(
mw_body_json_app_mobility_service_info(
mw_app_mobility_service_info(
mw_registration_info(
mw_service_consumer_id(
PX_APP_INS_ID,
-
),
-,
-
),
PX_APP_MOBILITY_SERVICE_ID
)
)
)
)
)
)
{
tc_ac.stop;
log("*** " & testcasename() & ": PASS: IUT successfully responds with a AppMobilityServiceInfo and status code set to 201 Created ***");
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
} // End of testcase TP_MEC_SRV_AMS_002_OK
/**
* @desc Check that the AMS service sends an error when it receives a malformed request to create a new application mobility service
* @see ETSI GS MEC 021 2.0.8, clause 8.3.3.4
*/
testcase TP_MEC_SRV_AMS_002_BR() runs on HttpComponent system HttpTestAdapter {
var HeaderLines v_headers;
if (not(PICS_AMS) or not(PICS_AMS_API_SUPPORTED)){
log("*** " & testcasename() & ": PICS_AMS required for executing the TC ***");
setverdict(inconc);
stop;
}
// Test component configuration
f_cf_01_http_up();
// Preamble
f_init_default_headers_list(-, -, v_headers);
httpPort.send(
m_http_request(
m_http_request_post(
"/" & PICS_ROOT_API & PX_ME_APP_AMS_URI,
v_headers,
m_http_message_body_json(
m_body_json_ams_registration_request(
m_registration_request_error(
m_service_consumer_error(
PX_APP_INS_ID,
-
)
)
)
)
)
)
);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
tc_ac.start;
alt {
[] httpPort.receive(
mw_http_response(
mw_http_response_400_bad_request(
mw_http_message_body_json(
mw_body_json_ams_problem_details(
mw_problem_details(
-, -, 400
)
)
)
)
)
)
{
tc_ac.stop;
log("*** " & testcasename() & ": PASS: IUT successfully responds with a Problem Details when bad request is performed ***");
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
} // End of testcase TP_MEC_SRV_AMS_002_BR
} // End of group appMobilityServices
group appMobilityServicesSubscriptions {
/**
* @desc Check that the AMS service returns information about the available subscriptions when requested.
* Permitted SUBSCRIPTION_TYPE are:
* - MobilityProcedureSubscription
* - AdjacentAppInfoSubscription
* @see ETSI GS MEC 021 2.0.8, clause 8.6.3.1
*/
testcase TP_MEC_SRV_AMS_003_OK() runs on HttpComponent system HttpTestAdapter {
var HeaderLines v_headers;
if (not(PICS_AMS) or not(PICS_AMS_API_SUPPORTED)){
log("*** " & testcasename() & ": PICS_AMS required for executing the TC ***");
setverdict(inconc);
stop;
}
// Test component configuration
f_cf_01_http_up();
// Preamble
f_init_default_headers_list(-, -, v_headers);
httpPort.send(
m_http_request(
m_http_request_get(
//@TODO: How can we convert enums in strings?
"/" & PICS_ROOT_API & PX_ME_APP_AMS_SUBS & "?subscriptionType=" & int2str(enum2int(PX_SUBSCRIPTION_TYPE)),
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_ams_subscriptions(
mw_ams_subscription(
PX_SUBSCRIPTION_TYPE,
-,
-,
-,
-
)
)
)
)
)
)
{
tc_ac.stop;
log("*** " & testcasename() & ": PASS: IUT successfully responds with the list of subscriptions type MobilityProcedureSubscription ***");
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
} // END TP_MEC_SRV_AMS_003_OK
/**
* @desc Check that the AMS service sends an error when it receives a malformed query about the available subscriptions
* @see ETSI GS MEC 021 2.0.8, clause 8.6.3.1
*/
testcase TP_MEC_SRV_AMS_003_BR() runs on HttpComponent system HttpTestAdapter {
var HeaderLines v_headers;
if (not(PICS_AMS) or not(PICS_AMS_API_SUPPORTED)){
log("*** " & testcasename() & ": PICS_AMS required for executing the TC ***");
setverdict(inconc);
stop;
}
// Test component configuration
f_cf_01_http_up();
// Preamble
f_init_default_headers_list(-, -, v_headers);
httpPort.send(
m_http_request(
m_http_request_get(
"/" & PICS_ROOT_API & PX_ME_APP_AMS_SUBS & "?subscriptionTyp=" & int2str(enum2int(PX_SUBSCRIPTION_TYPE)),
v_headers
)
)
);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
tc_ac.start;
alt {
[] httpPort.receive(
mw_http_response(
mw_http_response_400_bad_request(
mw_http_message_body_json(
mw_body_json_ams_problem_details(
mw_problem_details(
-, -, 400
)
)
)
)
)
)
{
tc_ac.stop;
log("*** " & testcasename() & ": PASS: IUT successfully responds with a ProblemDetails set to 400 Bad Request ***");
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
} // END of TP_MEC_SRV_AMS_003_BR
/**
* @desc Check that the AMS service creates a notification subscriptions when requested.
* Permitted SUBSCRIPTION_TYPE are:
* - MobilityProcedureSubscription
* - AdjacentAppInfoSubscription
* @see ETSI GS MEC 021 2.0.8, clause 8.6.3.4
*/
testcase TP_MEC_SRV_AMS_004_OK() runs on HttpComponent system HttpTestAdapter {
var HeaderLines v_headers;
if (not(PICS_AMS) or not(PICS_AMS_API_SUPPORTED)){
log("*** " & testcasename() & ": PICS_AMS required for executing the TC ***");
setverdict(inconc);
stop;
}
// Test component configuration
f_cf_01_http_up();
// Preamble
f_init_default_headers_list(-, -, v_headers);
httpPort.send(
m_http_request(
m_http_request_post(
"/" & PICS_ROOT_API & PX_ME_APP_AMS_SUBS,
v_headers,
m_http_message_body_json(
m_body_json_ams_subscriptions(
m_ams_subscription(
PX_SUBSCRIPTION_TYPE,
PX_CALLBACK_REFERENCE,
-,
-,
-
)
)
)
)
)
);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
tc_ac.start;
alt {
[] httpPort.receive(
mw_http_response(
mw_http_response_201_created(
mw_http_message_body_json(
mw_body_json_ams_subscriptions(
mw_ams_subscription(
PX_SUBSCRIPTION_TYPE,
PX_CALLBACK_REFERENCE,
-,
-,
-
)
)
)
)
)
)
{
tc_ac.stop;
log("*** " & testcasename() & ": PASS: IUT successfully responds with a AMS Subscription and 201 Created status code ***");
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
} // End of TP_MEC_SRV_AMS_004_OK
/**
* @desc Check that the AMS service sends an error when it receives a malformed request to create a notification subscription
* Permitted SUBSCRIPTION_TYPE are:
* - MobilityProcedureSubscription
* - AdjacentAppInfoSubscription
* @see ETSI GS MEC 021 2.0.8, clause 8.6.3.4
*/
testcase TP_MEC_SRV_AMS_004_BR() runs on HttpComponent system HttpTestAdapter {
var HeaderLines v_headers;
var HttpMessage v_response;
// Test control
if (not(PICS_AMS) or not(PICS_AMS_API_SUPPORTED)){
log("*** " & testcasename() & ": PICS_AMS required for executing the TC ***");
setverdict(inconc);
stop;
}
// Test component configuration
f_cf_01_http_up();
// Preamble
f_init_default_headers_list(-, -, v_headers);
httpPort.send(
m_http_request(
m_http_request_get(
"/" & PICS_ROOT_API & PX_ME_APP_AMS_URI,
v_headers
)));
m_http_request(
m_http_request_post(
"/" & PICS_ROOT_API & PX_ME_APP_AMS_SUBS,