Commits (59)
...@@ -10,8 +10,16 @@ cd $(dirname $0) ...@@ -10,8 +10,16 @@ cd $(dirname $0)
run_dir=`pwd` run_dir=`pwd`
# Docker version 2 # Docker version 2
cd ./virtualization/docker cd ./virtualization/docker-dev
./build.sh #--force-stfubuntu ./build.sh #--force-stfubuntu
ret_code=`echo $?`
if [ $ret_code != 0 ]
then
cd $run_dir
exit -1
fi
#./run.sh #./run.sh
if [ "$1" == "--remove" ] if [ "$1" == "--remove" ]
...@@ -19,4 +27,6 @@ then ...@@ -19,4 +27,6 @@ then
docker rmi --force mec_devel:latest docker rmi --force mec_devel:latest
fi fi
cd - cd $run_dir
exit 0
...@@ -123,7 +123,7 @@ $(cc_objects) : $(outdir)/%.o : %.cc ...@@ -123,7 +123,7 @@ $(cc_objects) : $(outdir)/%.o : %.cc
$(gen_sources): $(outdir)/.generate $(gen_sources): $(outdir)/.generate
$(outdir)/.generate: Makefile $(tt_sources) $(outdir)/.generate: Makefile $(tt_sources)
$(TTCN3_DIR)/bin/compiler -b -d -e -f -g -l -L -M -n -O -r -R -U none -x -X -o $(outdir) $(tt_sources) $(TTCN3_DIR)/bin/compiler $(TTCN3_COMPILER_OPTIONS) -o $(outdir) $(tt_sources)
touch $@ touch $@
$(foreach S, $(ttcn_sources), $(eval $(outdir)/$(notdir $(patsubst %.ttcn, %.cc, $(S))): $(S))) $(foreach S, $(ttcn_sources), $(eval $(outdir)/$(notdir $(patsubst %.ttcn, %.cc, $(S))): $(S)))
......
...@@ -95,7 +95,7 @@ $ ln -sf module_mec.mk module.mk ...@@ -95,7 +95,7 @@ $ ln -sf module_mec.mk module.mk
```sh ```sh
$ cd ../../.. $ cd ../../..
$ cp ./ttcn/patch_lib_common_titan/module.mk ./ttcn/LibCommon/ $ cp ./ttcn/patch_lib_common_titan/module.mk ./ttcn/LibCommon/
$ cp ./ttcn/patch_lib_common_titan/*.ttcn ./ttcn/LibCommon/ttcn $ cp ./ttcn/patch_lib_common_titan/ttcn/*.ttcn ./ttcn/LibCommon/ttcn
``` ```
- From the ETSI MEC Test System root directory, build the Docker image executing the following commands: - From the ETSI MEC Test System root directory, build the Docker image executing the following commands:
...@@ -301,7 +301,7 @@ $ ln -sf module_mec.mk module.mk ...@@ -301,7 +301,7 @@ $ ln -sf module_mec.mk module.mk
```sh ```sh
$ cd /home/etsi/dev/gs032p3-ttcn-test-suite $ cd /home/etsi/dev/gs032p3-ttcn-test-suite
$ cp ./ttcn/patch_lib_common_titan/module.mk ./ttcn/LibCommon/ $ cp ./ttcn/patch_lib_common_titan/module.mk ./ttcn/LibCommon/
$ cp ./ttcn/patch_lib_common_titan/*.ttcn ./ttcn/LibCommon/ $ cp ./ttcn/patch_lib_common_titan/ttcn/*.ttcn ./ttcn/LibCommon/ttcn
``` ```
- Update your default environment with the content of the script $HOME/dev/gs032p3-ttcn-test-suite/scripts/devenv.bash.ubuntu - Update your default environment with the content of the script $HOME/dev/gs032p3-ttcn-test-suite/scripts/devenv.bash.ubuntu
......
...@@ -28,13 +28,16 @@ bool http_codec_mec::decode_body_json(const OCTETSTRING &p_data, LibHttp__JsonMe ...@@ -28,13 +28,16 @@ bool http_codec_mec::decode_body_json(const OCTETSTRING &p_data, LibHttp__JsonMe
loggers::get_instance().log(">>> http_codec_mec::decode_body_json"); loggers::get_instance().log(">>> http_codec_mec::decode_body_json");
if (_codecs["json"].get() != nullptr) { if (_codecs["json"].get() != nullptr) {
loggers::get_instance().log("http_codec::decode_body: Call 'json_codec'"); loggers::get_instance().log("http_codec::decode_body_json: Call 'json_codec'");
if (_codecs["json"]->decode(p_data, (Record_Type&)p_json_body, p_params) == -1) { if (_codecs["json"]->decode(p_data, (Record_Type&)p_json_body, p_params) == -1) {
loggers::get_instance().warning("http_codec::decode_body: Failed to decode JSON message"); loggers::get_instance().warning("http_codec::decode_body_json: Failed to decode JSON message");
p_json_body.raw() = CHARSTRING(p_data.lengthof(), (char*)static_cast<const unsigned char*>(p_data)); p_json_body.raw() = CHARSTRING(p_data.lengthof(), (char*)static_cast<const unsigned char*>(p_data));
} else { } else {
loggers::get_instance().log_msg("http_codec::decode_body: Decoded message:", p_json_body); loggers::get_instance().log_msg("http_codec::decode_body_json: Decoded message:", p_json_body);
} }
} else {
loggers::get_instance().error("http_codec::decode_body_json: Codec not found");
return false;
} }
return true; return true;
......
...@@ -20,26 +20,26 @@ int json_codec::encode (const LibHttp__JsonMessageBodyTypes::JsonBody& msg, OCTE ...@@ -20,26 +20,26 @@ int json_codec::encode (const LibHttp__JsonMessageBodyTypes::JsonBody& msg, OCTE
const UEidentityAPI__TypesAndValues::UeIdentityTagInfo& ue_identity_tag_info = msg.ueIdentityTagInfo(); const UEidentityAPI__TypesAndValues::UeIdentityTagInfo& ue_identity_tag_info = msg.ueIdentityTagInfo();
ue_identity_tag_info.encode(UEidentityAPI__TypesAndValues::UeIdentityTagInfo_descr_, encoding_buffer, TTCN_EncDec::CT_JSON); ue_identity_tag_info.encode(UEidentityAPI__TypesAndValues::UeIdentityTagInfo_descr_, encoding_buffer, TTCN_EncDec::CT_JSON);
data = OCTETSTRING(encoding_buffer.get_len(), encoding_buffer.get_data()); data = OCTETSTRING(encoding_buffer.get_len(), encoding_buffer.get_data());
} else if (msg.ischosen(LibHttp__JsonMessageBodyTypes::JsonBody::ALT_userTrackingSubscription)) { } else if (msg.ischosen(LibHttp__JsonMessageBodyTypes::JsonBody::ALT_userLocationEventSubscription)) {
const LocationAPI__TypesAndValues::UserTrackingSubscription& user_tracking_subscription = msg.userTrackingSubscription(); const LocationAPI__TypesAndValues::UserLocationEventSubscription& user_location_event_subscription = msg.userLocationEventSubscription();
user_tracking_subscription.encode(LocationAPI__TypesAndValues::UserTrackingSubscription_descr_, encoding_buffer, TTCN_EncDec::CT_JSON); user_location_event_subscription.encode(LocationAPI__TypesAndValues::UserLocationEventSubscription_descr_, encoding_buffer, TTCN_EncDec::CT_JSON);
data = char2oct(CHARSTRING("{\"userTrackingSubscription\": ")) + OCTETSTRING(encoding_buffer.get_len(), encoding_buffer.get_data()) + char2oct(CHARSTRING("}")); data = char2oct(CHARSTRING("{\"userLocationEventSubscription\": ")) + OCTETSTRING(encoding_buffer.get_len(), encoding_buffer.get_data()) + char2oct(CHARSTRING("}"));
} else if (msg.ischosen(LibHttp__JsonMessageBodyTypes::JsonBody::ALT_periodicNotificationSubscription)) { } else if (msg.ischosen(LibHttp__JsonMessageBodyTypes::JsonBody::ALT_userLocationPeriodicSubscription)) {
const LocationAPI__TypesAndValues::PeriodicNotificationSubscription& periodic_notification_subscription = msg.periodicNotificationSubscription(); const LocationAPI__TypesAndValues::UserLocationPeriodicSubscription& user_location_periodic_subscription = msg.userLocationPeriodicSubscription();
periodic_notification_subscription.encode(LocationAPI__TypesAndValues::PeriodicNotificationSubscription_descr_, encoding_buffer, TTCN_EncDec::CT_JSON); user_location_periodic_subscription.encode(LocationAPI__TypesAndValues::UserLocationPeriodicSubscription_descr_, encoding_buffer, TTCN_EncDec::CT_JSON);
data = char2oct(CHARSTRING("{\"periodicNotificationSubscription\": ")) + OCTETSTRING(encoding_buffer.get_len(), encoding_buffer.get_data()) + char2oct(CHARSTRING("}")); data = char2oct(CHARSTRING("{\"userLocationPeriodicSubscription\": ")) + OCTETSTRING(encoding_buffer.get_len(), encoding_buffer.get_data()) + char2oct(CHARSTRING("}"));
} else if (msg.ischosen(LibHttp__JsonMessageBodyTypes::JsonBody::ALT_zonalTrafficSubscription)) { } else if (msg.ischosen(LibHttp__JsonMessageBodyTypes::JsonBody::ALT_zoneLocationEventSubscription)) {
const LocationAPI__TypesAndValues::ZonalTrafficSubscription& zonal_traffic_subscription = msg.zonalTrafficSubscription(); const LocationAPI__TypesAndValues::ZoneLocationEventSubscription& zone_location_event_subscription = msg.zoneLocationEventSubscription();
zonal_traffic_subscription.encode(LocationAPI__TypesAndValues::ZonalTrafficSubscription_descr_, encoding_buffer, TTCN_EncDec::CT_JSON); zone_location_event_subscription.encode(LocationAPI__TypesAndValues::ZoneLocationEventSubscription_descr_, encoding_buffer, TTCN_EncDec::CT_JSON);
data = char2oct(CHARSTRING("{\"zonalTrafficSubscription\": ")) + OCTETSTRING(encoding_buffer.get_len(), encoding_buffer.get_data()) + char2oct(CHARSTRING("}")); data = char2oct(CHARSTRING("{\"zoneLocationEventSubscription\": ")) + OCTETSTRING(encoding_buffer.get_len(), encoding_buffer.get_data()) + char2oct(CHARSTRING("}"));
} else if (msg.ischosen(LibHttp__JsonMessageBodyTypes::JsonBody::ALT_circleNotificationSubscription)) { } else if (msg.ischosen(LibHttp__JsonMessageBodyTypes::JsonBody::ALT_userAreaSubscription)) {
const LocationAPI__TypesAndValues::CircleNotificationSubscription& notif = msg.circleNotificationSubscription(); const LocationAPI__TypesAndValues::UserAreaSubscription& notif = msg.userAreaSubscription();
notif.encode(LocationAPI__TypesAndValues::CircleNotificationSubscription_descr_, encoding_buffer, TTCN_EncDec::CT_JSON); notif.encode(LocationAPI__TypesAndValues::UserAreaSubscription_descr_, encoding_buffer, TTCN_EncDec::CT_JSON);
data = char2oct(CHARSTRING("{\"circleNotificationSubscription\": ")) + OCTETSTRING(encoding_buffer.get_len(), encoding_buffer.get_data()) + char2oct(CHARSTRING("}")); data = char2oct(CHARSTRING("{\"userAreaSubscription\": ")) + OCTETSTRING(encoding_buffer.get_len(), encoding_buffer.get_data()) + char2oct(CHARSTRING("}"));
} else if (msg.ischosen(LibHttp__JsonMessageBodyTypes::JsonBody::ALT_distanceNotificationSubscription)) { } else if (msg.ischosen(LibHttp__JsonMessageBodyTypes::JsonBody::ALT_userDistanceSubscription)) {
const LocationAPI__TypesAndValues::DistanceNotificationSubscription& notif = msg.distanceNotificationSubscription(); const LocationAPI__TypesAndValues::UserDistanceSubscription& notif = msg.userDistanceSubscription();
notif.encode(LocationAPI__TypesAndValues::DistanceNotificationSubscription_descr_, encoding_buffer, TTCN_EncDec::CT_JSON); notif.encode(LocationAPI__TypesAndValues::UserDistanceSubscription_descr_, encoding_buffer, TTCN_EncDec::CT_JSON);
data = char2oct(CHARSTRING("{\"distanceNotificationSubscription\": ")) + OCTETSTRING(encoding_buffer.get_len(), encoding_buffer.get_data()) + char2oct(CHARSTRING("}")); data = char2oct(CHARSTRING("{\"userDistanceSubscription\": ")) + OCTETSTRING(encoding_buffer.get_len(), encoding_buffer.get_data()) + char2oct(CHARSTRING("}"));
} else if (msg.ischosen(LibHttp__JsonMessageBodyTypes::JsonBody::ALT_cellChangeSubscription)) { } else if (msg.ischosen(LibHttp__JsonMessageBodyTypes::JsonBody::ALT_cellChangeSubscription)) {
const RnisAPI__TypesAndValues::CellChangeSubscription& cell_change_subscription = msg.cellChangeSubscription(); const RnisAPI__TypesAndValues::CellChangeSubscription& cell_change_subscription = msg.cellChangeSubscription();
cell_change_subscription.encode(RnisAPI__TypesAndValues::CellChangeSubscription_descr_, encoding_buffer, TTCN_EncDec::CT_JSON); cell_change_subscription.encode(RnisAPI__TypesAndValues::CellChangeSubscription_descr_, encoding_buffer, TTCN_EncDec::CT_JSON);
...@@ -52,10 +52,22 @@ int json_codec::encode (const LibHttp__JsonMessageBodyTypes::JsonBody& msg, OCTE ...@@ -52,10 +52,22 @@ int json_codec::encode (const LibHttp__JsonMessageBodyTypes::JsonBody& msg, OCTE
const EdgePlatformApplicationEnablementAPI__TypesAndValues::ServiceInfo& service_info = msg.serviceInfo(); const EdgePlatformApplicationEnablementAPI__TypesAndValues::ServiceInfo& service_info = msg.serviceInfo();
service_info.encode(EdgePlatformApplicationEnablementAPI__TypesAndValues::ServiceInfo_descr_, encoding_buffer, TTCN_EncDec::CT_JSON); service_info.encode(EdgePlatformApplicationEnablementAPI__TypesAndValues::ServiceInfo_descr_, encoding_buffer, TTCN_EncDec::CT_JSON);
data = /*char2oct(CHARSTRING("{\"ServiceInfo\": ")) + */OCTETSTRING(encoding_buffer.get_len(), encoding_buffer.get_data())/* + char2oct(CHARSTRING("}"))*/; data = /*char2oct(CHARSTRING("{\"ServiceInfo\": ")) + */OCTETSTRING(encoding_buffer.get_len(), encoding_buffer.get_data())/* + char2oct(CHARSTRING("}"))*/;
} else if (msg.ischosen(LibHttp__JsonMessageBodyTypes::JsonBody::ALT_appInfo__regapps)) {
const EdgePlatformApplicationEnablementAPI__TypesAndValues::AppInfo& app_info = msg.appInfo__regapps();
app_info.encode(EdgePlatformApplicationEnablementAPI__TypesAndValues::AppInfo_descr_, encoding_buffer, TTCN_EncDec::CT_JSON);
data = /*char2oct(CHARSTRING("{\"AppInfo\": ")) + */OCTETSTRING(encoding_buffer.get_len(), encoding_buffer.get_data())/* + char2oct(CHARSTRING("}"))*/;
} else if (msg.ischosen(LibHttp__JsonMessageBodyTypes::JsonBody::ALT_appTerminationNotificationSubscription)) { } else if (msg.ischosen(LibHttp__JsonMessageBodyTypes::JsonBody::ALT_appTerminationNotificationSubscription)) {
const EdgePlatformApplicationEnablementAPI__TypesAndValues::AppTerminationNotificationSubscription& app = msg.appTerminationNotificationSubscription(); const EdgePlatformApplicationEnablementAPI__TypesAndValues::AppTerminationNotificationSubscription& app = msg.appTerminationNotificationSubscription();
app.encode(EdgePlatformApplicationEnablementAPI__TypesAndValues::AppTerminationNotificationSubscription_descr_, encoding_buffer, TTCN_EncDec::CT_JSON); app.encode(EdgePlatformApplicationEnablementAPI__TypesAndValues::AppTerminationNotificationSubscription_descr_, encoding_buffer, TTCN_EncDec::CT_JSON);
data = /*char2oct(CHARSTRING("{\"AppTerminationNotificationSubscription\": ")) + */OCTETSTRING(encoding_buffer.get_len(), encoding_buffer.get_data())/* + char2oct(CHARSTRING("}"))*/; data = /*char2oct(CHARSTRING("{\"AppTerminationNotificationSubscription\": ")) + */OCTETSTRING(encoding_buffer.get_len(), encoding_buffer.get_data())/* + char2oct(CHARSTRING("}"))*/;
} else if (msg.ischosen(LibHttp__JsonMessageBodyTypes::JsonBody::ALT_appTerminationConfirmation)) {
const EdgePlatformApplicationEnablementAPI__TypesAndValues::AppTerminationConfirmation& app = msg.appTerminationConfirmation();
app.encode(EdgePlatformApplicationEnablementAPI__TypesAndValues::AppTerminationConfirmation_descr_, encoding_buffer, TTCN_EncDec::CT_JSON);
data = /*char2oct(CHARSTRING("{\"AppTerminationConfirmation\": ")) + */OCTETSTRING(encoding_buffer.get_len(), encoding_buffer.get_data())/* + char2oct(CHARSTRING("}"))*/;
} else if (msg.ischosen(LibHttp__JsonMessageBodyTypes::JsonBody::ALT_appReadyConfirmation)) {
const EdgePlatformApplicationEnablementAPI__TypesAndValues::AppReadyConfirmation& app = msg.appReadyConfirmation();
app.encode(EdgePlatformApplicationEnablementAPI__TypesAndValues::AppReadyConfirmation_descr_, encoding_buffer, TTCN_EncDec::CT_JSON);
data = /*char2oct(CHARSTRING("{\"AppTerminationConfirmation\": ")) + */OCTETSTRING(encoding_buffer.get_len(), encoding_buffer.get_data())/* + char2oct(CHARSTRING("}"))*/;
} else if (msg.ischosen(LibHttp__JsonMessageBodyTypes::JsonBody::ALT_dnsRule)) { } else if (msg.ischosen(LibHttp__JsonMessageBodyTypes::JsonBody::ALT_dnsRule)) {
const EdgePlatformApplicationEnablementAPI__TypesAndValues::DnsRule& dns_rule = msg.dnsRule(); const EdgePlatformApplicationEnablementAPI__TypesAndValues::DnsRule& dns_rule = msg.dnsRule();
dns_rule.encode(EdgePlatformApplicationEnablementAPI__TypesAndValues::DnsRule_descr_, encoding_buffer, TTCN_EncDec::CT_JSON); dns_rule.encode(EdgePlatformApplicationEnablementAPI__TypesAndValues::DnsRule_descr_, encoding_buffer, TTCN_EncDec::CT_JSON);
...@@ -67,27 +79,49 @@ int json_codec::encode (const LibHttp__JsonMessageBodyTypes::JsonBody& msg, OCTE ...@@ -67,27 +79,49 @@ int json_codec::encode (const LibHttp__JsonMessageBodyTypes::JsonBody& msg, OCTE
} else if (msg.ischosen(LibHttp__JsonMessageBodyTypes::JsonBody::ALT_trafficRule)) { } else if (msg.ischosen(LibHttp__JsonMessageBodyTypes::JsonBody::ALT_trafficRule)) {
const EdgePlatformApplicationEnablementAPI__TypesAndValues::TrafficRule& traffic_rule = msg.trafficRule(); const EdgePlatformApplicationEnablementAPI__TypesAndValues::TrafficRule& traffic_rule = msg.trafficRule();
traffic_rule.encode(EdgePlatformApplicationEnablementAPI__TypesAndValues::TrafficRule_descr_, encoding_buffer, TTCN_EncDec::CT_JSON); traffic_rule.encode(EdgePlatformApplicationEnablementAPI__TypesAndValues::TrafficRule_descr_, encoding_buffer, TTCN_EncDec::CT_JSON);
data = /*char2oct(CHARSTRING("{\"TrafficRule\": ")) + */OCTETSTRING(encoding_buffer.get_len(), encoding_buffer.get_data())/* + char2oct(CHARSTRING("}"))*/; data = OCTETSTRING(encoding_buffer.get_len(), encoding_buffer.get_data())/* + char2oct(CHARSTRING("}"))*/;
} else if (msg.ischosen(LibHttp__JsonMessageBodyTypes::JsonBody::ALT_bwInfo)) { } else if (msg.ischosen(LibHttp__JsonMessageBodyTypes::JsonBody::ALT_bwInfo)) {
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 = OCTETSTRING(encoding_buffer.get_len(), encoding_buffer.get_data())/* + char2oct(CHARSTRING("}"))*/;
} else if (msg.ischosen(LibHttp__JsonMessageBodyTypes::JsonBody::ALT_mtsSessionInfo)) { } else if (msg.ischosen(LibHttp__JsonMessageBodyTypes::JsonBody::ALT_mtsSessionInfo)) {
const TrafficManagementAPI__TypesAndValues::MtsSessionInfo& mts_session_info = msg.mtsSessionInfo(); const TrafficManagementAPI__TypesAndValues::MtsSessionInfo& mts_session_info = msg.mtsSessionInfo();
mts_session_info.encode(TrafficManagementAPI__TypesAndValues::MtsSessionInfo_descr_, encoding_buffer, TTCN_EncDec::CT_JSON); 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("}"))*/; data = OCTETSTRING(encoding_buffer.get_len(), encoding_buffer.get_data())/* + char2oct(CHARSTRING("}"))*/;
} else if (msg.ischosen(LibHttp__JsonMessageBodyTypes::JsonBody::ALT_predictedQos)) { } else if (msg.ischosen(LibHttp__JsonMessageBodyTypes::JsonBody::ALT_predictedQos)) {
const V2XInformationServiceAPI__TypesAndValues::PredictedQos& predicted_qos = msg.predictedQos(); const V2XInformationServiceAPI__TypesAndValues::PredictedQos& predicted_qos = msg.predictedQos();
predicted_qos.encode(V2XInformationServiceAPI__TypesAndValues::PredictedQos_descr_, encoding_buffer, TTCN_EncDec::CT_JSON); predicted_qos.encode(V2XInformationServiceAPI__TypesAndValues::PredictedQos_descr_, encoding_buffer, TTCN_EncDec::CT_JSON);
data = /*char2oct(CHARSTRING("{\"TrafficRule\": ")) + */OCTETSTRING(encoding_buffer.get_len(), encoding_buffer.get_data())/* + char2oct(CHARSTRING("}"))*/; data = OCTETSTRING(encoding_buffer.get_len(), encoding_buffer.get_data())/* + char2oct(CHARSTRING("}"))*/;
} else if (msg.ischosen(LibHttp__JsonMessageBodyTypes::JsonBody::ALT_v2xMsgDistributionServerInfo)) {
const V2XInformationServiceAPI__TypesAndValues::V2xMsgDistributionServerInfo& v2x_msg_distribution_server_info = msg.v2xMsgDistributionServerInfo();
v2x_msg_distribution_server_info.encode(V2XInformationServiceAPI__TypesAndValues::V2xMsgDistributionServerInfo_descr_, encoding_buffer, TTCN_EncDec::CT_JSON);
data = OCTETSTRING(encoding_buffer.get_len(), encoding_buffer.get_data())/* + char2oct(CHARSTRING("}"))*/;
} else if (msg.ischosen(LibHttp__JsonMessageBodyTypes::JsonBody::ALT_provChgUuUniSubscription)) {
const V2XInformationServiceAPI__TypesAndValues::ProvChgUuUniSubscription& prov_chg_uu_uni_subscription = msg.provChgUuUniSubscription();
prov_chg_uu_uni_subscription.encode(V2XInformationServiceAPI__TypesAndValues::ProvChgUuUniSubscription_descr_, encoding_buffer, TTCN_EncDec::CT_JSON);
data = OCTETSTRING(encoding_buffer.get_len(), encoding_buffer.get_data())/* + char2oct(CHARSTRING("}"))*/;
} else if (msg.ischosen(LibHttp__JsonMessageBodyTypes::JsonBody::ALT_provChgUuMbmsSubscription)) {
const V2XInformationServiceAPI__TypesAndValues::ProvChgUuMbmsSubscription& prov_chg_uu_mbms_subscription = msg.provChgUuMbmsSubscription();
prov_chg_uu_mbms_subscription.encode(V2XInformationServiceAPI__TypesAndValues::ProvChgUuMbmsSubscription_descr_, encoding_buffer, TTCN_EncDec::CT_JSON);
data = OCTETSTRING(encoding_buffer.get_len(), encoding_buffer.get_data())/* + char2oct(CHARSTRING("}"))*/;
} else if (msg.ischosen(LibHttp__JsonMessageBodyTypes::JsonBody::ALT_provChgPc5Subscription)) {
const V2XInformationServiceAPI__TypesAndValues::ProvChgPc5Subscription& prov_chg_pc5_subscription = msg.provChgPc5Subscription();
prov_chg_pc5_subscription.encode(V2XInformationServiceAPI__TypesAndValues::ProvChgPc5Subscription_descr_, encoding_buffer, TTCN_EncDec::CT_JSON);
data = OCTETSTRING(encoding_buffer.get_len(), encoding_buffer.get_data())/* + char2oct(CHARSTRING("}"))*/;
} else if (msg.ischosen(LibHttp__JsonMessageBodyTypes::JsonBody::ALT_v2xMsgSubscription)) {
const V2XInformationServiceAPI__TypesAndValues::V2xMsgSubscription& v2x_msg_subscription = msg.v2xMsgSubscription();
v2x_msg_subscription.encode(V2XInformationServiceAPI__TypesAndValues::V2xMsgSubscription_descr_, encoding_buffer, TTCN_EncDec::CT_JSON);
data = OCTETSTRING(encoding_buffer.get_len(), encoding_buffer.get_data())/* + char2oct(CHARSTRING("}"))*/;
} else if (msg.ischosen(LibHttp__JsonMessageBodyTypes::JsonBody::ALT_assocStaSubscription)) { } else if (msg.ischosen(LibHttp__JsonMessageBodyTypes::JsonBody::ALT_assocStaSubscription)) {
const WlanInformationAPI__TypesAndValues::AssocStaSubscription& assoc_sta_subscription = msg.assocStaSubscription(); const WlanInformationAPI__TypesAndValues::AssocStaSubscription& assoc_sta_subscription = msg.assocStaSubscription();
assoc_sta_subscription.encode(WlanInformationAPI__TypesAndValues::AssocStaSubscription_descr_, encoding_buffer, TTCN_EncDec::CT_JSON); assoc_sta_subscription.encode(WlanInformationAPI__TypesAndValues::AssocStaSubscription_descr_, encoding_buffer, TTCN_EncDec::CT_JSON);
data = /*char2oct(CHARSTRING("{\"TrafficRule\": ")) + */OCTETSTRING(encoding_buffer.get_len(), encoding_buffer.get_data())/* + char2oct(CHARSTRING("}"))*/; data = OCTETSTRING(encoding_buffer.get_len(), encoding_buffer.get_data())/* + char2oct(CHARSTRING("}"))*/;
} else if (msg.ischosen(LibHttp__JsonMessageBodyTypes::JsonBody::ALT_staDataRateSubscription)) { } else if (msg.ischosen(LibHttp__JsonMessageBodyTypes::JsonBody::ALT_staDataRateSubscription)) {
const WlanInformationAPI__TypesAndValues::StaDataRateSubscription& sta_data_rate_subscription = msg.staDataRateSubscription(); const WlanInformationAPI__TypesAndValues::StaDataRateSubscription& sta_data_rate_subscription = msg.staDataRateSubscription();
sta_data_rate_subscription.encode(WlanInformationAPI__TypesAndValues::StaDataRateSubscription_descr_, encoding_buffer, TTCN_EncDec::CT_JSON); sta_data_rate_subscription.encode(WlanInformationAPI__TypesAndValues::StaDataRateSubscription_descr_, encoding_buffer, TTCN_EncDec::CT_JSON);
data = /*char2oct(CHARSTRING("{\"TrafficRule\": ")) + */OCTETSTRING(encoding_buffer.get_len(), encoding_buffer.get_data())/* + char2oct(CHARSTRING("}"))*/; data = 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");
} }
...@@ -146,44 +180,44 @@ int json_codec::decode (const OCTETSTRING& p_data, LibHttp__JsonMessageBodyTypes ...@@ -146,44 +180,44 @@ int json_codec::decode (const OCTETSTRING& p_data, LibHttp__JsonMessageBodyTypes
LocationAPI__TypesAndValues::AccessPointList access_point_list; LocationAPI__TypesAndValues::AccessPointList access_point_list;
access_point_list.decode(LocationAPI__TypesAndValues::AccessPointList_descr_, decoding_buffer, TTCN_EncDec::CT_JSON); access_point_list.decode(LocationAPI__TypesAndValues::AccessPointList_descr_, decoding_buffer, TTCN_EncDec::CT_JSON);
msg.accessPointList() = access_point_list; msg.accessPointList() = access_point_list;
} else if (it->second.find("\"userTrackingSubscription\"") != std::string::npos) { } else if (it->second.find("\"userLocationEventSubscription\"") != std::string::npos) {
int idx_begin = it->second.find(":"); int idx_begin = it->second.find(":");
int idx_end = it->second.rfind("}") - 1; // Remove the last '}' int idx_end = it->second.rfind("}") - 1; // Remove the last '}'
str = it->second.substr(idx_begin + 1, idx_end - idx_begin); str = it->second.substr(idx_begin + 1, idx_end - idx_begin);
TTCN_Buffer decoding_buffer(OCTETSTRING(str.length(), (const unsigned char*)str.c_str())); TTCN_Buffer decoding_buffer(OCTETSTRING(str.length(), (const unsigned char*)str.c_str()));
LocationAPI__TypesAndValues::UserTrackingSubscription user_tracking_subscription; LocationAPI__TypesAndValues::UserLocationEventSubscription user_location_event_subscription;
user_tracking_subscription.decode(LocationAPI__TypesAndValues::UserTrackingSubscription_descr_, decoding_buffer, TTCN_EncDec::CT_JSON); user_location_event_subscription.decode(LocationAPI__TypesAndValues::UserLocationEventSubscription_descr_, decoding_buffer, TTCN_EncDec::CT_JSON);
msg.userTrackingSubscription() = user_tracking_subscription; msg.userLocationEventSubscription() = user_location_event_subscription;
} else if (it->second.find("\"periodicNotificationSubscription\"") != std::string::npos) { } else if (it->second.find("\"userLocationPeriodicSubscription\"") != std::string::npos) {
int idx_begin = it->second.find(":"); int idx_begin = it->second.find(":");
int idx_end = it->second.rfind("}") - 1; // Remove the last '}' int idx_end = it->second.rfind("}") - 1; // Remove the last '}'
str = it->second.substr(idx_begin + 1, idx_end - idx_begin); str = it->second.substr(idx_begin + 1, idx_end - idx_begin);
TTCN_Buffer decoding_buffer(OCTETSTRING(str.length(), (const unsigned char*)str.c_str())); TTCN_Buffer decoding_buffer(OCTETSTRING(str.length(), (const unsigned char*)str.c_str()));
LocationAPI__TypesAndValues::PeriodicNotificationSubscription periodic_notification_subscription; LocationAPI__TypesAndValues::UserLocationPeriodicSubscription user_location_periodic_subscription;
periodic_notification_subscription.decode(LocationAPI__TypesAndValues::PeriodicNotificationSubscription_descr_, decoding_buffer, TTCN_EncDec::CT_JSON); user_location_periodic_subscription.decode(LocationAPI__TypesAndValues::UserLocationPeriodicSubscription_descr_, decoding_buffer, TTCN_EncDec::CT_JSON);
msg.periodicNotificationSubscription() = periodic_notification_subscription; msg.userLocationPeriodicSubscription() = user_location_periodic_subscription;
} else if (it->second.find("\"zonalTrafficSubscription\"") != std::string::npos) { } else if (it->second.find("\"zoneLocationEventSubscription\"") != std::string::npos) {
int idx_begin = it->second.find(":"); int idx_begin = it->second.find(":");
int idx_end = it->second.rfind("}") - 1; // Remove the last '}' int idx_end = it->second.rfind("}") - 1; // Remove the last '}'
str = it->second.substr(idx_begin + 1, idx_end - idx_begin); str = it->second.substr(idx_begin + 1, idx_end - idx_begin);
TTCN_Buffer decoding_buffer(OCTETSTRING(str.length(), (const unsigned char*)str.c_str())); TTCN_Buffer decoding_buffer(OCTETSTRING(str.length(), (const unsigned char*)str.c_str()));
LocationAPI__TypesAndValues::ZonalTrafficSubscription zonal_traffic_subscription; LocationAPI__TypesAndValues::ZoneLocationEventSubscription zone_location_event_subscription;
zonal_traffic_subscription.decode(LocationAPI__TypesAndValues::ZonalTrafficSubscription_descr_, decoding_buffer, TTCN_EncDec::CT_JSON); zone_location_event_subscription.decode(LocationAPI__TypesAndValues::ZoneLocationEventSubscription_descr_, decoding_buffer, TTCN_EncDec::CT_JSON);
msg.zonalTrafficSubscription() = zonal_traffic_subscription; msg.zoneLocationEventSubscription() = zone_location_event_subscription;
} else if (it->second.find("\"periodicTrackingSubscription\"") != std::string::npos) { } else if (it->second.find("\"userLocationPeriodicSubscription\"") != std::string::npos) {
int idx_begin = it->second.find(":"); int idx_begin = it->second.find(":");
int idx_end = it->second.rfind("}") - 1; // Remove the last '}' int idx_end = it->second.rfind("}") - 1; // Remove the last '}'
str = it->second.substr(idx_begin + 1, idx_end - idx_begin); str = it->second.substr(idx_begin + 1, idx_end - idx_begin);
TTCN_Buffer decoding_buffer(OCTETSTRING(str.length(), (const unsigned char*)str.c_str())); TTCN_Buffer decoding_buffer(OCTETSTRING(str.length(), (const unsigned char*)str.c_str()));
LocationAPI__TypesAndValues::PeriodicTrackingSubscription periodic_tracking_subscription; LocationAPI__TypesAndValues::UserLocationPeriodicSubscription periodic_tracking_subscription;
periodic_tracking_subscription.decode(LocationAPI__TypesAndValues::PeriodicTrackingSubscription_descr_, decoding_buffer, TTCN_EncDec::CT_JSON); periodic_tracking_subscription.decode(LocationAPI__TypesAndValues::UserLocationPeriodicSubscription_descr_, decoding_buffer, TTCN_EncDec::CT_JSON);
msg.periodicTrackingSubscription() = periodic_tracking_subscription; msg.userLocationPeriodicSubscription() = periodic_tracking_subscription;
} else if (it->second.find("\"accessPointId\"") != std::string::npos) { } else if (it->second.find("\"accessPointId\"") != std::string::npos) {
LocationAPI__TypesAndValues::UserInfo user_info; LocationAPI__TypesAndValues::UserInfo user_info;
user_info.decode(LocationAPI__TypesAndValues::UserInfo_descr_, decoding_buffer, TTCN_EncDec::CT_JSON); user_info.decode(LocationAPI__TypesAndValues::UserInfo_descr_, decoding_buffer, TTCN_EncDec::CT_JSON);
...@@ -201,17 +235,17 @@ int json_codec::decode (const OCTETSTRING& p_data, LibHttp__JsonMessageBodyTypes ...@@ -201,17 +235,17 @@ int json_codec::decode (const OCTETSTRING& p_data, LibHttp__JsonMessageBodyTypes
int idx_end = it->second.rfind("}") - 1; // Remove the last '}' int idx_end = it->second.rfind("}") - 1; // Remove the last '}'
str = it->second.substr(idx_begin + 1, idx_end - idx_begin); str = it->second.substr(idx_begin + 1, idx_end - idx_begin);
TTCN_Buffer decoding_buffer(OCTETSTRING(str.length(), (const unsigned char*)str.c_str())); TTCN_Buffer decoding_buffer(OCTETSTRING(str.length(), (const unsigned char*)str.c_str()));
LocationAPI__TypesAndValues::CircleNotificationSubscription notif; LocationAPI__TypesAndValues::UserAreaSubscription notif;
notif.decode(LocationAPI__TypesAndValues::CircleNotificationSubscription_descr_, decoding_buffer, TTCN_EncDec::CT_JSON); notif.decode(LocationAPI__TypesAndValues::UserAreaSubscription_descr_, decoding_buffer, TTCN_EncDec::CT_JSON);
msg.circleNotificationSubscription() = notif; msg.userAreaSubscription() = notif;
} else if (it->second.find("\"distanceNotificationSubscription\"") != std::string::npos) { } else if (it->second.find("\"userDistanceSubscription\"") != std::string::npos) {
int idx_begin = it->second.find(":"); int idx_begin = it->second.find(":");
int idx_end = it->second.rfind("}") - 1; // Remove the last '}' int idx_end = it->second.rfind("}") - 1; // Remove the last '}'
str = it->second.substr(idx_begin + 1, idx_end - idx_begin); str = it->second.substr(idx_begin + 1, idx_end - idx_begin);
TTCN_Buffer decoding_buffer(OCTETSTRING(str.length(), (const unsigned char*)str.c_str())); TTCN_Buffer decoding_buffer(OCTETSTRING(str.length(), (const unsigned char*)str.c_str()));
LocationAPI__TypesAndValues::DistanceNotificationSubscription notif; LocationAPI__TypesAndValues::UserDistanceSubscription notif;
notif.decode(LocationAPI__TypesAndValues::DistanceNotificationSubscription_descr_, decoding_buffer, TTCN_EncDec::CT_JSON); notif.decode(LocationAPI__TypesAndValues::UserDistanceSubscription_descr_, decoding_buffer, TTCN_EncDec::CT_JSON);
msg.distanceNotificationSubscription() = notif; msg.userDistanceSubscription() = notif;
} else if (it->second.find("\"ueIdentityTagInfo\"") != std::string::npos) { } else if (it->second.find("\"ueIdentityTagInfo\"") != std::string::npos) {
UEidentityAPI__TypesAndValues::UeIdentityTagInfo ue_identity_tag_info; UEidentityAPI__TypesAndValues::UeIdentityTagInfo ue_identity_tag_info;
ue_identity_tag_info.decode(UEidentityAPI__TypesAndValues::UeIdentityTagInfo_descr_, decoding_buffer, TTCN_EncDec::CT_JSON); ue_identity_tag_info.decode(UEidentityAPI__TypesAndValues::UeIdentityTagInfo_descr_, decoding_buffer, TTCN_EncDec::CT_JSON);
...@@ -226,7 +260,11 @@ int json_codec::decode (const OCTETSTRING& p_data, LibHttp__JsonMessageBodyTypes ...@@ -226,7 +260,11 @@ int json_codec::decode (const OCTETSTRING& p_data, LibHttp__JsonMessageBodyTypes
std::size_t it_stop = it_start + 4; std::size_t it_stop = it_start + 4;
loggers::get_instance().log("json_codec::decode: id_stop=%d", it_stop); loggers::get_instance().log("json_codec::decode: id_stop=%d", it_stop);
loggers::get_instance().log("json_codec::decode: segment=%s", str.substr(it_start, it_stop - it_start).c_str()); loggers::get_instance().log("json_codec::decode: segment=%s", str.substr(it_start, it_stop - it_start).c_str());
str = str.substr(0, it_start) + "{}" + str.substr(it_stop); if ((str[it_start - 3] == 'n') || (str[it_start - 3] == 's')) { // fqdn or uris or addresses
str = str.substr(0, it_start) + "[]" + str.substr(it_stop);
} else {
str = str.substr(0, it_start) + "{}" + str.substr(it_stop);
}
loggers::get_instance().log("json_codec::decode: After, str=%s", str.c_str()); loggers::get_instance().log("json_codec::decode: After, str=%s", str.c_str());
} // End of 'while' statement } // End of 'while' statement
decoding_buffer.clear(); decoding_buffer.clear();
...@@ -329,19 +367,23 @@ int json_codec::decode (const OCTETSTRING& p_data, LibHttp__JsonMessageBodyTypes ...@@ -329,19 +367,23 @@ int json_codec::decode (const OCTETSTRING& p_data, LibHttp__JsonMessageBodyTypes
RnisAPI__TypesAndValues::RabRelSubscription rab_rel_subscription; RnisAPI__TypesAndValues::RabRelSubscription rab_rel_subscription;
rab_rel_subscription.decode(RnisAPI__TypesAndValues::RabRelSubscription_descr_, decoding_buffer, TTCN_EncDec::CT_JSON); rab_rel_subscription.decode(RnisAPI__TypesAndValues::RabRelSubscription_descr_, decoding_buffer, TTCN_EncDec::CT_JSON);
msg.rabRelSubscription() = rab_rel_subscription; msg.rabRelSubscription() = rab_rel_subscription;
} else if ((it->second.find("\"_links\"") != std::string::npos) && (it->second.find("subscriptions") != std::string::npos)) { // SubscriptionLinkList } else if ((it->second.find("\"_links\"") != std::string::npos) && (it->second.find("subscriptions\"") != std::string::npos)) { // SubscriptionLinkList
// FIXME Conflict with MEC-028 SubscriptionLinkList data type // FIXME Conflict with MEC-028 SubscriptionLinkList data type
RnisAPI__TypesAndValues::SubscriptionLinkList subscription_link_list; RnisAPI__TypesAndValues::SubscriptionLinkList subscription_link_list;
subscription_link_list.decode(RnisAPI__TypesAndValues::SubscriptionLinkList_descr_, decoding_buffer, TTCN_EncDec::CT_JSON); subscription_link_list.decode(RnisAPI__TypesAndValues::SubscriptionLinkList_descr_, decoding_buffer, TTCN_EncDec::CT_JSON);
msg.subscriptionLinkList() = subscription_link_list; msg.subscriptionLinkList() = subscription_link_list;
} else if (it->second.find("\"AppContext\"") != std::string::npos) { } else if (it->second.find("\"associateDevAppId\"") != std::string::npos) {
UEAppInterfaceAPI__TypesAndValues::AppContext appContext; UEAppInterfaceAPI__TypesAndValues::AppContext appContext;
appContext.decode(UEAppInterfaceAPI__TypesAndValues::AppContext_descr_, decoding_buffer, TTCN_EncDec::CT_JSON); appContext.decode(UEAppInterfaceAPI__TypesAndValues::AppContext_descr_, decoding_buffer, TTCN_EncDec::CT_JSON);
msg.appContext() = appContext; msg.appContext() = appContext;
} else if (it->second.find("\"AppInfo\"") != std::string::npos) { } else if (it->second.find("\"appInfo\"") != std::string::npos) {
UEAppInterfaceAPI__TypesAndValues::AppInfo appInfo; UEAppInterfaceAPI__TypesAndValues::AppInfo appInfo;
appInfo.decode(UEAppInterfaceAPI__TypesAndValues::AppInfo_descr_, decoding_buffer, TTCN_EncDec::CT_JSON); appInfo.decode(UEAppInterfaceAPI__TypesAndValues::AppInfo_descr_, decoding_buffer, TTCN_EncDec::CT_JSON);
msg.appInfo() = appInfo; msg.appInfo() = appInfo;
} else if (it->second.find("\"appName\"") != std::string::npos) {
EdgePlatformApplicationEnablementAPI__TypesAndValues::AppInfo appInfo;
appInfo.decode(EdgePlatformApplicationEnablementAPI__TypesAndValues::AppInfo_descr_, decoding_buffer, TTCN_EncDec::CT_JSON);
msg.appInfo__regapps() = appInfo;
} else if ((it->second.find("\"bwInfo\"") != std::string::npos) || (it->second.find("\"fixedBWPriority\"") != std::string::npos)) { } else if ((it->second.find("\"bwInfo\"") != std::string::npos) || (it->second.find("\"fixedBWPriority\"") != std::string::npos)) {
// Need to change some enumerated string not supported by TTCN-3 language // Need to change some enumerated string not supported by TTCN-3 language
while (true) { while (true) {
...@@ -413,6 +455,11 @@ int json_codec::decode (const OCTETSTRING& p_data, LibHttp__JsonMessageBodyTypes ...@@ -413,6 +455,11 @@ int json_codec::decode (const OCTETSTRING& p_data, LibHttp__JsonMessageBodyTypes
TTCN_Buffer decoding_buffer_(OCTETSTRING(str.length(), (const unsigned char*)str.c_str())); TTCN_Buffer decoding_buffer_(OCTETSTRING(str.length(), (const unsigned char*)str.c_str()));
prov_chg_pc5_subscription.decode(V2XInformationServiceAPI__TypesAndValues::ProvChgPc5Subscription_descr_, decoding_buffer_, TTCN_EncDec::CT_JSON); prov_chg_pc5_subscription.decode(V2XInformationServiceAPI__TypesAndValues::ProvChgPc5Subscription_descr_, decoding_buffer_, TTCN_EncDec::CT_JSON);
msg.provChgPc5Subscription() = prov_chg_pc5_subscription; msg.provChgPc5Subscription() = prov_chg_pc5_subscription;
} else if (it->second.find("\"V2xMsgSubscription\"") != std::string::npos) {
V2XInformationServiceAPI__TypesAndValues::V2xMsgSubscription v2x_msg_subscription;
TTCN_Buffer decoding_buffer_(OCTETSTRING(str.length(), (const unsigned char*)str.c_str()));
v2x_msg_subscription.decode(V2XInformationServiceAPI__TypesAndValues::V2xMsgSubscription_descr_, decoding_buffer_, TTCN_EncDec::CT_JSON);
msg.v2xMsgSubscription() = v2x_msg_subscription;
} else if (it->second.find("\"ProvChgUuUniNotification\"") != std::string::npos) { } else if (it->second.find("\"ProvChgUuUniNotification\"") != std::string::npos) {
...@@ -430,7 +477,11 @@ int json_codec::decode (const OCTETSTRING& p_data, LibHttp__JsonMessageBodyTypes ...@@ -430,7 +477,11 @@ int json_codec::decode (const OCTETSTRING& p_data, LibHttp__JsonMessageBodyTypes
TTCN_Buffer decoding_buffer_(OCTETSTRING(str.length(), (const unsigned char*)str.c_str())); TTCN_Buffer decoding_buffer_(OCTETSTRING(str.length(), (const unsigned char*)str.c_str()));
prov_chg_pc5_notification.decode(V2XInformationServiceAPI__TypesAndValues::ProvChgPc5Notification_descr_, decoding_buffer_, TTCN_EncDec::CT_JSON); prov_chg_pc5_notification.decode(V2XInformationServiceAPI__TypesAndValues::ProvChgPc5Notification_descr_, decoding_buffer_, TTCN_EncDec::CT_JSON);
msg.provChgPc5Notification() = prov_chg_pc5_notification; msg.provChgPc5Notification() = prov_chg_pc5_notification;
} else if (it->second.find("\"v2xMsgDistributionServer\"") != std::string::npos) {
V2XInformationServiceAPI__TypesAndValues::V2xMsgDistributionServerInfo v2x_msg_distribution_server_info;
TTCN_Buffer decoding_buffer_(OCTETSTRING(str.length(), (const unsigned char*)str.c_str()));
v2x_msg_distribution_server_info.decode(V2XInformationServiceAPI__TypesAndValues::V2xMsgDistributionServerInfo_descr_, decoding_buffer_, TTCN_EncDec::CT_JSON);
msg.v2xMsgDistributionServerInfo() = v2x_msg_distribution_server_info;
} else if (it->second.find("\"AssocStaSubscription\"") != std::string::npos) { } else if (it->second.find("\"AssocStaSubscription\"") != std::string::npos) {
if (it->second.find("\"subscription\"") != std::string::npos) { // SubscriptionLinkList if (it->second.find("\"subscription\"") != std::string::npos) { // SubscriptionLinkList
......
#TTCN3_DIR := /cygdrive/c/Tools/Titan TTCN3_COMPILER_OPTIONS := -b -d -e -f -g -l -L -M -n -O -r -R -U none -x -X
#TTCN3_DIR := $(HOME)/frameworks/titan/titan.core/Install
#WPCAP_DLL_PATH := /cygdrive/c/windows/system32/npcap/wpcap.dll #WPCAP_DLL_PATH := /cygdrive/c/windows/system32/npcap/wpcap.dll
#NPCAP_INCLUDE := /cygdrive/c/PROGRA~1/Npcap/sdk/include #NPCAP_INCLUDE := /cygdrive/c/PROGRA~1/Npcap/sdk/include
T3Q_PATH=./tools/t3q-v2.0.0b30 T3Q_PATH=./tools/t3q-v2.0.0b30
......
...@@ -8,25 +8,26 @@ LibCommon_Time.PX_TAC := 30.0 ...@@ -8,25 +8,26 @@ LibCommon_Time.PX_TAC := 30.0
LibCommon_Sync.PX_TSYNC_TIME_LIMIT := 30.0; LibCommon_Sync.PX_TSYNC_TIME_LIMIT := 30.0;
LibCommon_Sync.PX_TSHUT_DOWN_TIME_LIMIT := 30.0; LibCommon_Sync.PX_TSHUT_DOWN_TIME_LIMIT := 30.0;
LibHttp_Pics.PICS_HEADER_HOST := "sandbox-mec.etsi.org" #"192.168.1.39" LibHttp_Pics.PICS_HEADER_HOST := "try-mec.etsi.org" #"192.168.1.39"
LibHttp_Pics.PICS_HEADER_CONTENT_TYPE := "application/json" LibHttp_Pics.PICS_HEADER_CONTENT_TYPE := "application/json"
LibHttp_Pics.PICS_USE_TOKEN_HEADER := true LibHttp_Pics.PICS_USE_TOKEN_HEADER := true
#LibHttp_Pics.PICS_TOKEN_HEADER := "Basic WrongToken" #LibHttp_Pics.PICS_TOKEN_HEADER := "Basic WrongToken"
LibMec_Pics.PICS_ROOT_API := "/sbx8tunqyy/mep1" # Need to sign in on https://sandbox-mec.etsi.org/, section 'Try-it from your MEC application' LibMec_Pics.PICS_ROOT_API := "/sbx1y8q0x9/mep1" # Need to sign in on https://try-mec.etsi.org/, section 'Try-it from your MEC application'
# LibMec_Pixits
LibMec_Pics.PICS_MEC_PLAT := true
[LOGGING] [LOGGING]
# In this section you can specify the name of the log file and the classes of events # 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). # you want to log into the file or display on console (standard error).
LogFile := "../logs/AtsMec_V2XInformationService/%e.%h-%r.%s" LogFile := "../logs/AtsMec/%e.%h-%r.%s"
#FileMask := LOG_ALL | USER | DEBUG | MATCHING FileMask := LOG_ALL | USER | DEBUG | MATCHING
#ConsoleMask := LOG_ALL | USER | DEBUG | MATCHING ConsoleMask := LOG_ALL | USER | DEBUG | MATCHING
FileMask := ERROR | WARNING | USER | MATCHING | EXECUTOR_RUNTIME | VERDICTOP | PORTEVENT #FileMask := ERROR | WARNING | USER | MATCHING | EXECUTOR_RUNTIME | VERDICTOP | PORTEVENT | TESTCASE
ConsoleMask := ERROR | WARNING | USER | MATCHING | EXECUTOR_RUNTIME | VERDICTOP | PORTEVENT #ConsoleMask := ERROR | WARNING | USER | MATCHING | EXECUTOR_RUNTIME | VERDICTOP | PORTEVENT | TESTCASE
LogSourceInfo := Stack LogSourceInfo := Stack
LogEntityName:= Yes LogEntityName:= Yes
LogEventTypes:= Yes LogEventTypes:= Yes
...@@ -34,8 +35,10 @@ LogEventTypes:= Yes ...@@ -34,8 +35,10 @@ LogEventTypes:= Yes
[TESTPORT_PARAMETERS] [TESTPORT_PARAMETERS]
# In this section you can specify parameters that are passed to Test Ports. # 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=sandbox-mec.etsi.org,port=443,use_ssl=1,trusted_ca_list=/home/yann/var/ssl/archive/yanngarcia.ddns.net/fullchain1.pem,privkey=/home/yann/var/ssl/archive/yanngarcia.ddns.net/privkey1.pem,certificate=/home/yann/var/ssl/archive/yanngarcia.ddns.net/fullchain1.pem)" #system.httpPort.params := "HTTP(codecs=json:json_codec)/TCP(debug=1,server=192.168.1.39,port=30030,use_ssl=0)"
system.httpPort_notif.params := "HTTP(codecs=json:json_codec)/TCP(debug=1,server_mode=1,local_port=443,use_ssl=1,mutual_auth=1,mutual_tls=1,trusted_ca_list=/home/yann/var/ssl/archive/yanngarcia.ddns.net/fullchain1.pem,privkey=/home/yann/var/ssl/archive/yanngarcia.ddns.net/privkey1.pem,certificate=/home/yann/var/ssl/archive/yanngarcia.ddns.net/fullchain1.pem)" system.httpPort.params := "HTTP(codecs=json:json_codec)/TCP(debug=1,server=try-mec.etsi.org,port=443,use_ssl=1)"
#system.httpPort_notif.params := "HTTP(codecs=json:json_codec)/TCP(debug=1,server_mode=1,local_port=443,use_ssl=1)"
system.httpPort_notif.params := "HTTP(codecs=json:json_codec)/TCP(debug=1,server_mode=1,local_port=80,use_ssl=0)"
[DEFINE] [DEFINE]
# In this section you can create macro definitions, # In this section you can create macro definitions,
...@@ -60,7 +63,8 @@ system.httpPort_notif.params := "HTTP(codecs=json:json_codec)/TCP(debug=1,server ...@@ -60,7 +63,8 @@ system.httpPort_notif.params := "HTTP(codecs=json:json_codec)/TCP(debug=1,server
[EXECUTE] [EXECUTE]
# In this section you can specify what parts of your test suite you want to execute. # In this section you can specify what parts of your test suite you want to execute.
AtsMec_TestControl.control #AtsMec_TestControl.control
[GROUPS] [GROUPS]
# In this section you can specify groups of hosts. These groups can be used inside the # In this section you can specify groups of hosts. These groups can be used inside the
......
[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;
LibHttp_Pics.PICS_HEADER_HOST := "try-mec.etsi.org" #"192.168.1.39"
LibHttp_Pics.PICS_HEADER_CONTENT_TYPE := "application/json"
LibHttp_Pics.PICS_USE_TOKEN_HEADER := true
#LibHttp_Pics.PICS_TOKEN_HEADER := "Basic WrongToken"
LibMec_Pics.PICS_ROOT_API := "/sbx1y8q0x9/mep1" # Need to sign in on https://try-mec.etsi.org/, section 'Try-it from your MEC application'
# LibMec_Pixits
[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/AtsMec/%e.%h-%r.%s"
FileMask := LOG_ALL | USER | DEBUG | MATCHING
ConsoleMask := LOG_ALL | USER | DEBUG | MATCHING
#FileMask := ERROR | WARNING | USER | MATCHING | EXECUTOR_RUNTIME | VERDICTOP | PORTEVENT | TESTCASE
#ConsoleMask := ERROR | WARNING | USER | MATCHING | EXECUTOR_RUNTIME | VERDICTOP | PORTEVENT | TESTCASE
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=192.168.1.39,port=30030,use_ssl=0)"
system.httpPort.params := "HTTP(codecs=json:json_codec)/TCP(debug=1,server=try-mec.etsi.org,port=443,use_ssl=1)"
#system.httpPort_notif.params := "HTTP(codecs=json:json_codec)/TCP(debug=1,server_mode=1,local_port=443,use_ssl=1)"
system.httpPort_notif.params := "HTTP(codecs=json:json_codec)/TCP(debug=1,server_mode=1,local_port=80,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
[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
...@@ -17,8 +17,8 @@ LibHttp_Pics.PICS_USE_TOKEN_HEADER := true ...@@ -17,8 +17,8 @@ LibHttp_Pics.PICS_USE_TOKEN_HEADER := true
LibMec_Pics.PICS_ROOT_API := "etsi-013" LibMec_Pics.PICS_ROOT_API := "etsi-013"
# LibMex_Pixits # LibMex_Pixits
LibMec_Pixits.PX_ME_APP_Q_ZONE_ID_URI := "/location/v2/zones" LibMec_Pixits.PX_ME_APP_Q_ZONE_ID_URI := "/location/v3/zones"
LibMec_Pixits.PX_ME_APP_Q_USERS_LIST_URI := "/location/v2/users" LibMec_Pixits.PX_ME_APP_Q_USERS_LIST_URI := "/location/v3/users"
LibMec_Pixits.PX_RNIS_SUBSCRITIONS_URI := "/rni/v1/subscriptions" LibMec_Pixits.PX_RNIS_SUBSCRITIONS_URI := "/rni/v1/subscriptions"
LibMec_Pixits.PX_RNIS_QUERIES_URI := "/rni/v1/queries" LibMec_Pixits.PX_RNIS_QUERIES_URI := "/rni/v1/queries"
LibMec_Pixits.PX_MEC_SVC_MGMT_APPS_URI := "/mec_service_mgmt/v1/applications" LibMec_Pixits.PX_MEC_SVC_MGMT_APPS_URI := "/mec_service_mgmt/v1/applications"
......
...@@ -63,9 +63,9 @@ LocationAPI_Pixits.PX_USER := "4005C0A640001" ...@@ -63,9 +63,9 @@ LocationAPI_Pixits.PX_USER := "4005C0A640001"
LocationAPI_Pixits.PX_IP_ADDRESS := "10.100.0.1" LocationAPI_Pixits.PX_IP_ADDRESS := "10.100.0.1"
LocationAPI_Pixits.PX_CLIENT_ID := "0123" LocationAPI_Pixits.PX_CLIENT_ID := "0123"
LocationAPI_Pixits.PX_SUBSCRIPTION_ID := "1" LocationAPI_Pixits.PX_SUBSCRIPTION_ID := "1"
LocationAPI_Pixits.PX_CALLBACK_REF_URL := { notifyURL := "http://yanngarcia.ddns.net/location/v2/notif/1", callbackData := omit, notificationFormat := omit } LocationAPI_Pixits.PX_CALLBACK_REF_URL := { notifyURL := "http://yanngarcia.ddns.net/location/v3/notif/1", callbackData := omit, notificationFormat := omit }
LocationAPI_Pixits.PX_AREA_SUB_CALLBACK_URI := { notifyURL := "http://yanngarcia.ddns.net/location/v2/notif/1", callbackData := omit, notificationFormat := omit } LocationAPI_Pixits.PX_AREA_SUB_CALLBACK_URI := { notifyURL := "http://yanngarcia.ddns.net/location/v3/notif/1", callbackData := omit, notificationFormat := omit }
LocationAPI_Pixits.PX_UE_DIST_SUB_CALLBACK_URI := { notifyURL := "http://yanngarcia.ddns.net/location/v2/notif/1", callbackData := omit, notificationFormat := omit } LocationAPI_Pixits.PX_UE_DIST_SUB_CALLBACK_URI := { notifyURL := "http://yanngarcia.ddns.net/location/v3/notif/1", callbackData := omit, notificationFormat := omit }
LocationAPI_Pixits.PX_UE_COORD_LAT := 43.729538 LocationAPI_Pixits.PX_UE_COORD_LAT := 43.729538
LocationAPI_Pixits.PX_UE_COORD_LONG := 7.413819 LocationAPI_Pixits.PX_UE_COORD_LONG := 7.413819
...@@ -313,16 +313,16 @@ AtsMec_EdgePlatformApplicationEnablementAPI_TestCases.TC_MEC_MEC011_SRV_APPSAQ_0 ...@@ -313,16 +313,16 @@ AtsMec_EdgePlatformApplicationEnablementAPI_TestCases.TC_MEC_MEC011_SRV_APPSAQ_0
#AtsMec_LocationAPI_TestCases.TC_MEC_MEC013_SRV_UELOCLOOK_001_BR #AtsMec_LocationAPI_TestCases.TC_MEC_MEC013_SRV_UELOCLOOK_001_BR
# Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application # Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application
#AtsMec_LocationAPI_TestCases.TC_MEC_MEC013_SRV_UELOCLOOK_001_NF #AtsMec_LocationAPI_TestCases.TC_MEC_MEC013_SRV_UELOCLOOK_001_NF
# Check that the IUT acknowledges the UE location change subscription request when commanded by a MEC Application and notifies it when the location changes # Check that the IUT acknowledges the subscription by a MEC Application to notifications user location event
#AtsMec_LocationAPI_TestCases.TC_MEC_MEC013_SRV_UELOCSUB_001_OK #AtsMec_LocationAPI_TestCases.TC_MEC_MEC013_SRV_UELOCSUB_001_OK_01
# Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application # Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application - Neither callbackReference nor websockNotifConfig provided
#AtsMec_LocationAPI_TestCases.TC_MEC_MEC013_SRV_UELOCSUB_001_BR #AtsMec_LocationAPI_TestCases.TC_MEC_MEC013_SRV_UELOCSUB_001_BR_01
# Check that the IUT acknowledges the cancellation of UE location change notifications when commanded by a MEC Application # Check that the IUT acknowledges the cancellation of UE location change notifications when commanded by a MEC Application
#AtsMec_LocationAPI_TestCases.TC_MEC_MEC013_SRV_UELOCSUB_002_OK #AtsMec_LocationAPI_TestCases.TC_MEC_MEC013_SRV_UELOCSUB_002_OK
# Check that the IUT responds with an error when a request for an URI that cannot be mapped to a valid resource URI is sent by a MEC Application # Check that the IUT responds with an error when a request for an URI that cannot be mapped to a valid resource URI is sent by a MEC Application
#AtsMec_LocationAPI_TestCases.TC_MEC_MEC013_SRV_UELOCSUB_002_NF #AtsMec_LocationAPI_TestCases.TC_MEC_MEC013_SRV_UELOCSUB_002_NF
# Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application # Check that the IUT acknowledges the subscription by a MEC Application to notifications user location periodic
#AtsMec_LocationAPI_TestCases.TC_MEC_MEC013_SRV_UETRACKSUB_001_OK #AtsMec_LocationAPI_TestCases.TC_MEC_MEC013_SRV_UELOCSUB_001_OK_02
# Check that the IUT acknowledges the UE location change subscription request when commanded by a MEC Application and notifies it when the UE changes location # Check that the IUT acknowledges the UE location change subscription request when commanded by a MEC Application and notifies it when the UE changes location
#AtsMec_LocationAPI_TestCases.TC_MEC_MEC013_SRV_UETRACKSUB_001_BR #AtsMec_LocationAPI_TestCases.TC_MEC_MEC013_SRV_UETRACKSUB_001_BR
# Check that the IUT acknowledges the cancellation of UE location change notifications when commanded by a MEC Application # Check that the IUT acknowledges the cancellation of UE location change notifications when commanded by a MEC Application
...@@ -335,7 +335,7 @@ AtsMec_EdgePlatformApplicationEnablementAPI_TestCases.TC_MEC_MEC011_SRV_APPSAQ_0 ...@@ -335,7 +335,7 @@ AtsMec_EdgePlatformApplicationEnablementAPI_TestCases.TC_MEC_MEC011_SRV_APPSAQ_0
#AtsMec_LocationAPI_TestCases.TC_MEC_MEC013_SRV_UEINFLOOK_001_BR #AtsMec_LocationAPI_TestCases.TC_MEC_MEC013_SRV_UEINFLOOK_001_BR
# Check that the IUT responds with an error when a request for an unknown URI is sent by a MEC Application # Check that the IUT responds with an error when a request for an unknown URI is sent by a MEC Application
#AtsMec_LocationAPI_TestCases.TC_MEC_MEC013_SRV_UEINFLOOK_001_NF #AtsMec_LocationAPI_TestCases.TC_MEC_MEC013_SRV_UEINFLOOK_001_NF
# Check that the IUT acknowledges the UE information change subscription request when commanded by a MEC Application and notifies it when the location changes # Check that the IUT responds with a list zones when queried by a MEC Application
#AtsMec_LocationAPI_TestCases.TC_MEC_MEC013_SRV_UEINFSUB_001_OK #AtsMec_LocationAPI_TestCases.TC_MEC_MEC013_SRV_UEINFSUB_001_OK
# Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application # Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application
#AtsMec_LocationAPI_TestCases.TC_MEC_MEC013_SRV_UEINFSUB_001_BR #AtsMec_LocationAPI_TestCases.TC_MEC_MEC013_SRV_UEINFSUB_001_BR
...@@ -348,7 +348,7 @@ AtsMec_EdgePlatformApplicationEnablementAPI_TestCases.TC_MEC_MEC011_SRV_APPSAQ_0 ...@@ -348,7 +348,7 @@ AtsMec_EdgePlatformApplicationEnablementAPI_TestCases.TC_MEC_MEC011_SRV_APPSAQ_0
# Check that the IUT responds with an error when a request for an URI that cannot be mapped to a valid resource URI is sent by a MEC Application # Check that the IUT responds with an error when a request for an URI that cannot be mapped to a valid resource URI is sent by a MEC Application
#AtsMec_LocationAPI_TestCases.TC_MEC_MEC013_SRV_RLOCLOOK_001_NF #AtsMec_LocationAPI_TestCases.TC_MEC_MEC013_SRV_RLOCLOOK_001_NF
# Check that the IUT acknowledges the UE area change subscription request when commanded by a MEC Application and notifies it when the UE enters the specified circle # Check that the IUT acknowledges the UE area change subscription request when commanded by a MEC Application and notifies it when the UE enters the specified circle
#AtsMec_LocationAPI_TestCases.TC_MEC_MEC013_SRV_UEAREASUB_001_OK #AtsMec_LocationAPI_TestCases.TP_MEC_MEC013_SRV_UEAREASUB_001_OK
# Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application # Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application
#AtsMec_LocationAPI_TestCases.TC_MEC_MEC013_SRV_UEAREASUB_001_BR #AtsMec_LocationAPI_TestCases.TC_MEC_MEC013_SRV_UEAREASUB_001_BR
# Check that the IUT acknowledges the cancellation of UE area change notifications when commanded by a MEC Application # Check that the IUT acknowledges the cancellation of UE area change notifications when commanded by a MEC Application
......
...@@ -26,9 +26,9 @@ LocationAPI_Pixits.PX_USER := "4005C0A640001" ...@@ -26,9 +26,9 @@ LocationAPI_Pixits.PX_USER := "4005C0A640001"
LocationAPI_Pixits.PX_IP_ADDRESS := "10.100.0.1" LocationAPI_Pixits.PX_IP_ADDRESS := "10.100.0.1"
LocationAPI_Pixits.PX_CLIENT_ID := "0123" LocationAPI_Pixits.PX_CLIENT_ID := "0123"
LocationAPI_Pixits.PX_SUBSCRIPTION_ID := "1" LocationAPI_Pixits.PX_SUBSCRIPTION_ID := "1"
LocationAPI_Pixits.PX_CALLBACK_REF_URL := { notifyURL := "http://yanngarcia.ddns.net/location/v2/notif/1", callbackData := omit, notificationFormat := omit } LocationAPI_Pixits.PX_CALLBACK_REF_URL := { notifyURL := "http://yanngarcia.ddns.net/location/v3/notif/1", callbackData := omit, notificationFormat := omit }
LocationAPI_Pixits.PX_AREA_SUB_CALLBACK_URI := { notifyURL := "http://yanngarcia.ddns.net/location/v2/notif/1", callbackData := omit, notificationFormat := omit } LocationAPI_Pixits.PX_AREA_SUB_CALLBACK_URI := { notifyURL := "http://yanngarcia.ddns.net/location/v3/notif/1", callbackData := omit, notificationFormat := omit }
LocationAPI_Pixits.PX_UE_DIST_SUB_CALLBACK_URI := { notifyURL := "http://yanngarcia.ddns.net/location/v2/notif/1", callbackData := omit, notificationFormat := omit } LocationAPI_Pixits.PX_UE_DIST_SUB_CALLBACK_URI := { notifyURL := "http://yanngarcia.ddns.net/location/v3/notif/1", callbackData := omit, notificationFormat := omit }
LocationAPI_Pixits.PX_UE_COORD_LAT := 43.729538 LocationAPI_Pixits.PX_UE_COORD_LAT := 43.729538
LocationAPI_Pixits.PX_UE_COORD_LONG := 7.413819 LocationAPI_Pixits.PX_UE_COORD_LONG := 7.413819
...@@ -82,16 +82,16 @@ AtsMec_LocationAPI_TestCases.TC_MEC_MEC013_SRV_UELOCLOOK_001_OK ...@@ -82,16 +82,16 @@ AtsMec_LocationAPI_TestCases.TC_MEC_MEC013_SRV_UELOCLOOK_001_OK
#AtsMec_LocationAPI_TestCases.TC_MEC_MEC013_SRV_UELOCLOOK_001_BR #AtsMec_LocationAPI_TestCases.TC_MEC_MEC013_SRV_UELOCLOOK_001_BR
# Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application # Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application
#AtsMec_LocationAPI_TestCases.TC_MEC_MEC013_SRV_UELOCLOOK_001_NF #AtsMec_LocationAPI_TestCases.TC_MEC_MEC013_SRV_UELOCLOOK_001_NF
# Check that the IUT acknowledges the UE location change subscription request when commanded by a MEC Application and notifies it when the location changes # Check that the IUT acknowledges the subscription by a MEC Application to notifications user location event
#AtsMec_LocationAPI_TestCases.TC_MEC_MEC013_SRV_UELOCSUB_001_OK #AtsMec_LocationAPI_TestCases.TC_MEC_MEC013_SRV_UELOCSUB_001_OK
# Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application # Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application - Neither callbackReference nor websockNotifConfig provided
#AtsMec_LocationAPI_TestCases.TC_MEC_MEC013_SRV_UELOCSUB_001_BR #AtsMec_LocationAPI_TestCases.TC_MEC_MEC013_SRV_UELOCSUB_001_BR_01
# Check that the IUT acknowledges the cancellation of UE location change notifications when commanded by a MEC Application # Check that the IUT acknowledges the cancellation of UE location change notifications when commanded by a MEC Application
#AtsMec_LocationAPI_TestCases.TC_MEC_MEC013_SRV_UELOCSUB_002_OK #AtsMec_LocationAPI_TestCases.TC_MEC_MEC013_SRV_UELOCSUB_002_OK
# Check that the IUT responds with an error when a request for an URI that cannot be mapped to a valid resource URI is sent by a MEC Application # Check that the IUT responds with an error when a request for an URI that cannot be mapped to a valid resource URI is sent by a MEC Application
#AtsMec_LocationAPI_TestCases.TC_MEC_MEC013_SRV_UELOCSUB_002_NF #AtsMec_LocationAPI_TestCases.TC_MEC_MEC013_SRV_UELOCSUB_002_NF
# Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application # Check that the IUT acknowledges the subscription by a MEC Application to notifications user location periodic
#AtsMec_LocationAPI_TestCases.TC_MEC_MEC013_SRV_UETRACKSUB_001_OK #AtsMec_LocationAPI_TestCases.TC_MEC_MEC013_SRV_UELOCSUB_001_OK_02
# Check that the IUT acknowledges the UE location change subscription request when commanded by a MEC Application and notifies it when the UE changes location # Check that the IUT acknowledges the UE location change subscription request when commanded by a MEC Application and notifies it when the UE changes location
#AtsMec_LocationAPI_TestCases.TC_MEC_MEC013_SRV_UETRACKSUB_001_BR #AtsMec_LocationAPI_TestCases.TC_MEC_MEC013_SRV_UETRACKSUB_001_BR
# Check that the IUT acknowledges the cancellation of UE location change notifications when commanded by a MEC Application # Check that the IUT acknowledges the cancellation of UE location change notifications when commanded by a MEC Application
...@@ -104,7 +104,7 @@ AtsMec_LocationAPI_TestCases.TC_MEC_MEC013_SRV_UELOCLOOK_001_OK ...@@ -104,7 +104,7 @@ AtsMec_LocationAPI_TestCases.TC_MEC_MEC013_SRV_UELOCLOOK_001_OK
#AtsMec_LocationAPI_TestCases.TC_MEC_MEC013_SRV_UEINFLOOK_001_BR #AtsMec_LocationAPI_TestCases.TC_MEC_MEC013_SRV_UEINFLOOK_001_BR
# Check that the IUT responds with an error when a request for an unknown URI is sent by a MEC Application # Check that the IUT responds with an error when a request for an unknown URI is sent by a MEC Application
#AtsMec_LocationAPI_TestCases.TC_MEC_MEC013_SRV_UEINFLOOK_001_NF #AtsMec_LocationAPI_TestCases.TC_MEC_MEC013_SRV_UEINFLOOK_001_NF
# Check that the IUT acknowledges the UE information change subscription request when commanded by a MEC Application and notifies it when the location changes # Check that the IUT responds with a list zones when queried by a MEC Application
#AtsMec_LocationAPI_TestCases.TC_MEC_MEC013_SRV_UEINFSUB_001_OK #AtsMec_LocationAPI_TestCases.TC_MEC_MEC013_SRV_UEINFSUB_001_OK
# Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application # Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application
#AtsMec_LocationAPI_TestCases.TC_MEC_MEC013_SRV_UEINFSUB_001_BR #AtsMec_LocationAPI_TestCases.TC_MEC_MEC013_SRV_UEINFSUB_001_BR
...@@ -117,7 +117,7 @@ AtsMec_LocationAPI_TestCases.TC_MEC_MEC013_SRV_UELOCLOOK_001_OK ...@@ -117,7 +117,7 @@ AtsMec_LocationAPI_TestCases.TC_MEC_MEC013_SRV_UELOCLOOK_001_OK
# Check that the IUT responds with an error when a request for an URI that cannot be mapped to a valid resource URI is sent by a MEC Application # Check that the IUT responds with an error when a request for an URI that cannot be mapped to a valid resource URI is sent by a MEC Application
#AtsMec_LocationAPI_TestCases.TC_MEC_MEC013_SRV_RLOCLOOK_001_NF #AtsMec_LocationAPI_TestCases.TC_MEC_MEC013_SRV_RLOCLOOK_001_NF
# Check that the IUT acknowledges the UE area change subscription request when commanded by a MEC Application and notifies it when the UE enters the specified circle # Check that the IUT acknowledges the UE area change subscription request when commanded by a MEC Application and notifies it when the UE enters the specified circle
#AtsMec_LocationAPI_TestCases.TC_MEC_MEC013_SRV_UEAREASUB_001_OK #AtsMec_LocationAPI_TestCases.TP_MEC_MEC013_SRV_UEAREASUB_001_OK
# Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application # Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application
#AtsMec_LocationAPI_TestCases.TC_MEC_MEC013_SRV_UEAREASUB_001_BR #AtsMec_LocationAPI_TestCases.TC_MEC_MEC013_SRV_UEAREASUB_001_BR
# Check that the IUT acknowledges the cancellation of UE area change notifications when commanded by a MEC Application # Check that the IUT acknowledges the cancellation of UE area change notifications when commanded by a MEC Application
......
[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;
LibHttp_Pics.PICS_HEADER_HOST := "mec-platform.etsi.org" #"192.168.1.39"
LibHttp_Pics.PICS_HEADER_CONTENT_TYPE := "application/json"
LibHttp_Pics.PICS_USE_TOKEN_HEADER := true
#LibHttp_Pics.PICS_TOKEN_HEADER := "Basic WrongToken"
LibMec_Pics.PICS_ROOT_API := "/sbxykqjr17/mep1/" # Need to sign in on https://mec-platform.etsi.org/, section 'Try-it from your MEC application'
LibMec_Pics.PICS_MEC_PLAT := true
# 5g-small-cell-1
V2XInformationServiceAPI_Pixits.PX_V2X_ECGI := "268804901557"
V2XInformationServiceAPI_Pixits.PX_V2X_CELL_ID := "101010101"
V2XInformationServiceAPI_Pixits.PX_V2X_ECGI_LAT := 43.730846
V2XInformationServiceAPI_Pixits.PX_V2X_ECGI_LONG := 7.415385
# Callbacks
V2XInformationServiceAPI_Pixits.PX_PROV_UU_UNI_SUB_CALLBACK := "https://yanngarcia.ddns.net:36001/vis/v2/"
V2XInformationServiceAPI_Pixits.PX_PROV_V2X_SUB_CALLBACK := "https://yanngarcia.ddns.net:36001/vis/v2/"
[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/AtsMec_V2XInformationService/%e.%h-%r.%s"
FileMask := LOG_ALL | USER | DEBUG | MATCHING
ConsoleMask := LOG_ALL | USER | DEBUG | MATCHING
#FileMask := ERROR | WARNING | USER | MATCHING | EXECUTOR_RUNTIME | VERDICTOP | PORTEVENT
#ConsoleMask := ERROR | WARNING | USER | MATCHING | EXECUTOR_RUNTIME | VERDICTOP | PORTEVENT
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=mec-platform.etsi.org,port=443,use_ssl=1,trusted_ca_list=/home/yann/var/ssl/archive/yanngarcia.ddns.net/fullchain1.pem,privkey=/home/yann/var/ssl/archive/yanngarcia.ddns.net/privkey1.pem,certificate=/home/yann/var/ssl/archive/yanngarcia.ddns.net/fullchain1.pem)"
system.httpPort_notif.params := "HTTP(codecs=json:json_codec)/TCP(debug=1,server_mode=1,local_port=443,use_ssl=1,mutual_auth=1,mutual_tls=1,trusted_ca_list=/home/yann/var/ssl/archive/yanngarcia.ddns.net/fullchain1.pem,privkey=/home/yann/var/ssl/archive/yanngarcia.ddns.net/privkey1.pem,certificate=/home/yann/var/ssl/archive/yanngarcia.ddns.net/fullchain1.pem)"
[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_V2XInformationServiceAPI_TestControl.control
# Check that the IUT responds with a configured provisioning information over Uu unicast when queried by a MEC Application
#AtsMec_V2XInformationServiceAPI_TestCases.TC_MEC_MEC030_SRV_V2X_001_OK_01
# Check that the IUT responds with a configured provisioning information over Uu unicast when queried by a MEC Application
#AtsMec_V2XInformationServiceAPI_TestCases.TC_MEC_MEC030_SRV_V2X_001_OK_02
# Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application
#AtsMec_V2XInformationServiceAPI_TestCases.TC_MEC_MEC030_SRV_V2X_001_BR
# Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application
#AtsMec_V2XInformationServiceAPI_TestCases.TC_MEC_MEC030_SRV_V2X_001_NF
# Check that the IUT responds with a configured provisioning information over Uu MBMS when queried by a MEC Application
AtsMec_V2XInformationServiceAPI_TestCases.TC_MEC_MEC030_SRV_V2X_002_OK_01
#AtsMec_V2XInformationServiceAPI_TestCases.TC_MEC_MEC030_SRV_V2X_002_OK_02
#AtsMec_V2XInformationServiceAPI_TestCases.TC_MEC_MEC030_SRV_V2X_002_BR
#AtsMec_V2XInformationServiceAPI_TestCases.TC_MEC_MEC030_SRV_V2X_002_NF
#AtsMec_V2XInformationServiceAPI_TestCases.TC_MEC_MEC030_SRV_V2X_003_OK_01
#AtsMec_V2XInformationServiceAPI_TestCases.TC_MEC_MEC030_SRV_V2X_003_OK_02
#AtsMec_V2XInformationServiceAPI_TestCases.TC_MEC_MEC030_SRV_V2X_003_BR
#AtsMec_V2XInformationServiceAPI_TestCases.TC_MEC_MEC030_SRV_V2X_003_NF
# Check that the IUT processes properly a request to information of V2X Message Distribution servers
#AtsMec_V2XInformationServiceAPI_TestCases.TC_MEC_MEC030_SRV_V2X_004_OK
# Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application
#AtsMec_V2XInformationServiceAPI_TestCases.TC_MEC_MEC030_SRV_V2X_004_BR
# Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application
#AtsMec_V2XInformationServiceAPI_TestCases.TC_MEC_MEC030_SRV_V2X_004_NF
#AtsMec_V2XInformationServiceAPI_TestCases.TC_MEC_MEC030_SRV_V2X_005_OK
#AtsMec_V2XInformationServiceAPI_TestCases.TC_MEC_MEC030_SRV_V2X_005_BR
#AtsMec_V2XInformationServiceAPI_TestCases.TC_MEC_MEC030_SRV_V2X_005_NF
#AtsMec_V2XInformationServiceAPI_TestCases.TC_MEC_MEC030_SRV_V2X_006_OK
#AtsMec_V2XInformationServiceAPI_TestCases.TC_MEC_MEC030_SRV_V2X_006_BR
#AtsMec_V2XInformationServiceAPI_TestCases.TC_MEC_MEC030_SRV_V2X_007_OK_01
#AtsMec_V2XInformationServiceAPI_TestCases.TC_MEC_MEC030_SRV_V2X_007_OK_02
#AtsMec_V2XInformationServiceAPI_TestCases.TC_MEC_MEC030_SRV_V2X_007_OK_03
#AtsMec_V2XInformationServiceAPI_TestCases.TC_MEC_MEC030_SRV_V2X_007_OK_04
#AtsMec_V2XInformationServiceAPI_TestCases.TC_MEC_MEC030_SRV_V2X_007_OK_05
#AtsMec_V2XInformationServiceAPI_TestCases.TC_MEC_MEC030_SRV_V2X_007_BR
# Check that the IUT responds with the requested to create a subscription - ProvChgUuUniSubscription
#AtsMec_V2XInformationServiceAPI_TestCases.TC_MEC_MEC030_SRV_V2X_008_OK_01
# Check that the IUT responds with the requested to create a subscription - ProvChgUuMbmsSubscription
#AtsMec_V2XInformationServiceAPI_TestCases.TC_MEC_MEC030_SRV_V2X_008_OK_02
# Check that the IUT responds with the requested to create a subscription - ProvChgPc5Subscription
#AtsMec_V2XInformationServiceAPI_TestCases.TC_MEC_MEC030_SRV_V2X_008_OK_03
# Check that the IUT responds with the requested to create a subscription - V2xMsgSubscription
#AtsMec_V2XInformationServiceAPI_TestCases.TC_MEC_MEC030_SRV_V2X_008_OK_04
# Check that the IUT responds with the requested to create a subscription - PredQosSubscription
#AtsMec_V2XInformationServiceAPI_TestCases.TC_MEC_MEC030_SRV_V2X_008_OK_05
# Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application - Wrong SubscriptionType
#AtsMec_V2XInformationServiceAPI_TestCases.TC_MEC_MEC030_SRV_V2X_008_BR_01
# Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application - No Callback neitheir WebSocket
#AtsMec_V2XInformationServiceAPI_TestCases.TC_MEC_MEC030_SRV_V2X_008_BR_02
# Check that the IUT responds with the requested of subscription information when queried by a MEC Application - ProvChgUuUniSubscription
#AtsMec_V2XInformationServiceAPI_TestCases.TC_MEC_MEC030_SRV_V2X_009_OK_01
# Check that the IUT responds with the requested of subscription information when queried by a MEC Application - ProvChgUuMbmsSubscription
#AtsMec_V2XInformationServiceAPI_TestCases.TC_MEC_MEC030_SRV_V2X_009_OK_02
# Check that the IUT responds with the requested of subscription information when queried by a MEC Application - ProvChgPc5Subscription
#AtsMec_V2XInformationServiceAPI_TestCases.TC_MEC_MEC030_SRV_V2X_009_OK_03
# Check that the IUT responds with the requested of subscription information when queried by a MEC Application - V2xMsgSubscription
#AtsMec_V2XInformationServiceAPI_TestCases.TC_MEC_MEC030_SRV_V2X_009_OK_04
# Check that the IUT responds with the requested of subscription information when queried by a MEC Application - PredQosSubscription
#AtsMec_V2XInformationServiceAPI_TestCases.TC_MEC_MEC030_SRV_V2X_009_OK_05
# Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application
#AtsMec_V2XInformationServiceAPI_TestCases.TC_MEC_MEC030_SRV_V2X_009_BR
# Check that the IUT responds with an error when a request with incorrect parameters is sent by a MEC Application
#AtsMec_V2XInformationServiceAPI_TestCases.TC_MEC_MEC030_SRV_V2X_009_NF
#AtsMec_V2XInformationServiceAPI_TestCases.TC_MEC_MEC030_SRV_V2X_010_OK_01
#AtsMec_V2XInformationServiceAPI_TestCases.TC_MEC_MEC030_SRV_V2X_010_OK_02
#AtsMec_V2XInformationServiceAPI_TestCases.TC_MEC_MEC030_SRV_V2X_010_OK_03
#AtsMec_V2XInformationServiceAPI_TestCases.TC_MEC_MEC030_SRV_V2X_010_OK_04
#AtsMec_V2XInformationServiceAPI_TestCases.TC_MEC_MEC030_SRV_V2X_010_OK_05
#AtsMec_V2XInformationServiceAPI_TestCases.TC_MEC_MEC030_SRV_V2X_010_BR
#AtsMec_V2XInformationServiceAPI_TestCases.TC_MEC_MEC030_SRV_V2X_010_NF
# Check that the IUT responds with the requested of removing subscription when queried by a MEC Application - ProvChgUuUniSubscription
#AtsMec_V2XInformationServiceAPI_TestCases.TC_MEC_MEC030_SRV_V2X_011_OK_01
# Check that the IUT responds with the requested of removing subscription when queried by a MEC Application - ProvChgUuMbmsSubscription
#AtsMec_V2XInformationServiceAPI_TestCases.TC_MEC_MEC030_SRV_V2X_011_OK_02
# Check that the IUT responds with the requested of removing subscription when queried by a MEC Application - ProvChgPc5Subscription
#AtsMec_V2XInformationServiceAPI_TestCases.TC_MEC_MEC030_SRV_V2X_011_OK_03
# Check that the IUT responds with the requested of removing subscription when queried by a MEC Application - V2xMsgSubscription
#AtsMec_V2XInformationServiceAPI_TestCases.TC_MEC_MEC030_SRV_V2X_011_OK_04
# Check that the IUT responds with the requested of removing subscription when queried by a MEC Application - PredQosSubscription
#AtsMec_V2XInformationServiceAPI_TestCases.TC_MEC_MEC030_SRV_V2X_011_OK_05
#AtsMec_V2XInformationServiceAPI_TestCases.TC_MEC_MEC030_SRV_V2X_011_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
...@@ -2,6 +2,12 @@ ...@@ -2,6 +2,12 @@
"folders": [ "folders": [
{ {
"path": "." "path": "."
},
{
"path": "../gs032p2-test-purposes"
},
{
"path": "../eurecom"
} }
], ],
"settings": { "settings": {
......
#!/bin/bash
#set -e
set -vx
BASE_PATH=`pwd`
git submodule update --init --recursive --remote
if [ ! -d ./titan-test-system-framework ]
then
git clone --recurse-submodules --branch devel https://labs.etsi.org/rep/cti-tools/titan-test-system-framework.git
cd ./titan-test-system-framework
else
cd ./titan-test-system-framework
git checkout devel
fi
cd ./ttcn/LibHttp
ln -f module_mec.mk module.mk
cd $BASE_PATH
ln -f ./ttcn/patch_lib_common_titan/module.mk ./ttcn/LibCommon/
exit 0
...@@ -171,7 +171,11 @@ def main(): ...@@ -171,7 +171,11 @@ def main():
# End of 'with' statement # End of 'with' statement
# End of 'with' statement # End of 'with' statement
os.system('java -DPLANTUML_LIMIT_SIZE=8192 -jar ./plantuml.jar -svg {}'.format(OUT_FILE_PATH)) # Check if file is not empty
if os.path.getsize(OUT_FILE_PATH) == 0:
logger.error(f'Empty result, please check that FileMask is properly set: ERROR | WARNING | USER | MATCHING | EXECUTOR_RUNTIME | VERDICTOP | PORTEVENT | TIMEROP | TESTCASE')
else:
os.system('java -DPLANTUML_LIMIT_SIZE=8192 -jar ./plantuml.jar -svg {}'.format(OUT_FILE_PATH))
# End of main function # End of main function
if __name__ == "__main__": if __name__ == "__main__":
......
#!/bin/bash #!/bin/bash
#set -e #set -e
set -vx #set -vx
clear clear
......
Subproject commit 07e483b6f5f83ea55de07fe84eaa924c7f401724 Subproject commit 6959b8be419f3755de6f888e24bfdc8de07383a7
/**
* @author ETSI / STF569
* @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 003, Draft ETSI GS MEC 021 V2.1.1
*/
module AtsMec_Ams_TestCases {
// Libcommon
import from LibCommon_BasicTypesAndValues all;
import from LibCommon_Sync all;
// LibHttp
import from LibHttp_TypesAndValues all;
import from LibHttp_Functions all;
import from LibHttp_Templates all;
import from LibHttp_JsonTemplates all;
import from LibHttp_TestSystem all;
// LibMec_LocationAPI
import from Ams_Templates all;
import from Ams_Pics all;
import from Ams_Pixits all;
// LibMec
import from LibMec_TypesAndValues all;
import from LibMec_Templates all;
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.1.1, clause 8.3.3.1
*/
testcase TC_MEC_MEC012_SRV_AMS_001_OK() runs on HttpComponent system HttpTestAdapter {
// Local variables
var Headers 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 TC_MEC_MEC012_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.1.1, clause 8.3.3.1
*/
testcase TC_MEC_MEC012_SRV_AMS_001_BR() runs on HttpComponent system HttpTestAdapter {
// Local variables
var Headers 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_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 TC_MEC_MEC012_SRV_AMS_001_BR
/**
* @desc Check that the AMS service creates a new application mobility services when requested
* @see ETSI GS MEC 021 2.1.1, clause 8.3.3.4
*/
testcase TC_MEC_MEC012_SRV_AMS_002_OK() runs on HttpComponent system HttpTestAdapter {
var Headers 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 TC_MEC_MEC012_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.1.1, clause 8.3.3.4
*/
testcase TC_MEC_MEC012_SRV_AMS_002_BR() runs on HttpComponent system HttpTestAdapter {
var Headers 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_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 TC_MEC_MEC012_SRV_AMS_002_BR
} // End of group appMobilityServices
group individualAppMobilityService{
/**
* @desc Check that the AMS service returns information about this individual application mobility service
* @see ETSI GS MEC 021 2.0.10, clause 8.4.3.1
*/
testcase TC_MEC_MEC012_SRV_AMS_011_OK() runs on HttpComponent system HttpTestAdapter {
// Local variables
var Headers 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 & 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_ok(
mw_http_message_body_json(
mw_body_json_app_mobility_service_info(
mw_app_mobility_service_info(
-,
PX_APP_MOBILITY_SERVICE_ID
)))))) -> value v_response {
tc_ac.stop;
log("*** " & testcasename() & ": PASS: IUT successfully responds with a AppMobilityServiceInfo***");
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 TC_MEC_MEC012_SRV_AMS_011_OK
/**
* @desc Check that the AMS service sends an error when receives a query about a not existing individual application mobility service
* @see ETSI GS MEC 021 2.0.10, clause 8.4.3.1
*/
testcase TC_MEC_MEC012_SRV_AMS_011_NF() runs on HttpComponent system HttpTestAdapter {
// Local variables
var Headers 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 & "/" & oct2char(unichar2oct(PX_NON_EXISTENT_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_404_not_found(
))) {
tc_ac.stop;
log("*** " & testcasename() & ": PASS: IUT successfully responds with a 404 Not Found ***");
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 TC_MEC_MEC012_SRV_AMS_011_NF
/**
* @desc Check that the AMS service modifies the individual application mobility service when requested
* @see ETSI GS MEC 021 2.0.10, clause 8.4.3.2
*/
testcase TC_MEC_MEC012_SRV_AMS_012_OK() runs on HttpComponent system HttpTestAdapter {
// Local variables
var Headers 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_put(
"/" & PICS_ROOT_API & PX_ME_APP_AMS_URI & oct2char(unichar2oct(PX_APP_MOBILITY_SERVICE_ID, "UTF-8")),
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_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,
-
),
-,
-
),
*},
-
)
)
)
))) -> value v_response {
tc_ac.stop;
log("*** " & testcasename() & ": PASS: IUT successfully responds with a AppMobilityServiceInfo***");
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 TC_MEC_MEC012_SRV_AMS_012_OK
/**
* @desc Check that the AMS service sends an error when receives a request to modify a not existing individual application mobility service
* @see ETSI GS MEC 021 2.0.10, clause 8.4.3.2
*/
testcase TC_MEC_MEC012_SRV_AMS_012_NF() runs on HttpComponent system HttpTestAdapter {
// Local variables
var Headers 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_put(
"/" & PICS_ROOT_API & PX_ME_APP_AMS_URI & "/" & oct2char(unichar2oct(PX_NON_EXISTENT_APP_MOBILITY_SERVICE_ID, "UTF-8")),
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_404_not_found(
))) {
tc_ac.stop;
log("*** " & testcasename() & ": PASS: IUT successfully responds with a 404 Not Found ***");
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 TC_MEC_MEC012_SRV_AMS_012_NF
/**
* @desc Check that the AMS service sends an error when receives a request to modify a individual application mobility service using bad parameters
* @see ETSI GS MEC 021 2.0.10, clause 8.4.3.2
*/
testcase TC_MEC_MEC012_SRV_AMS_012_BR() runs on HttpComponent system HttpTestAdapter {
// Local variables
var Headers 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_put(
"/" & PICS_ROOT_API & PX_ME_APP_AMS_URI & "/" & oct2char(unichar2oct(PX_APP_MOBILITY_SERVICE_ID, "UTF-8")),
v_headers,
m_http_message_body_json(
m_body_json_ams_registration_request_with_error(
m_registration_request_with_error(
m_service_consumer_id_with_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(
))) {
tc_ac.stop;
log("*** " & testcasename() & ": PASS: IUT successfully responds with a 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 TC_MEC_MEC012_SRV_AMS_012_BR
/**
* @desc Check that the AMS service de-register the individual application mobility service and delete the resource
* that represents the individual application mobility service
* @see ETSI GS MEC 021 2.0.10, clause 8.4.3.5
*/
testcase TC_MEC_MEC012_SRV_AMS_013_OK() runs on HttpComponent system HttpTestAdapter {
// Local variables
var Headers 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_delete(
"/" & PICS_ROOT_API & PX_ME_APP_AMS_URI & 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_204_no_content(
))) -> value v_response {
tc_ac.stop;
log("*** " & testcasename() & ": PASS: IUT successfully responds with a 204 No Content ***");
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 TC_MEC_MEC012_SRV_AMS_013_OK
/**
* @desc Check that the AMS service sends an error when is requested to delete the resource
* that represents the individual application mobility service
* @see ETSI GS MEC 021 2.0.10, clause 8.4.3.5
*/
testcase TC_MEC_MEC012_SRV_AMS_013_NF() runs on HttpComponent system HttpTestAdapter {
// Local variables
var Headers 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_delete(
"/" & PICS_ROOT_API & PX_ME_APP_AMS_URI & "/" & oct2char(unichar2oct(PX_NON_EXISTENT_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_404_not_found(
))) {
tc_ac.stop;
log("*** " & testcasename() & ": PASS: IUT successfully responds with a 404 Not Found ***");
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 TC_MEC_MEC012_SRV_AMS_013_NF
}
group appMobilityServiceDeregisterTask {
/**
* @desc Check that the AMS service deregister an individual application mobility service on expiry of the timer associated with the service
* @see ETSI GS MEC 021 2.0.10, clause 8.5.3.4
*/
testcase TC_MEC_MEC012_SRV_AMS_014_OK() runs on HttpComponent system HttpTestAdapter {
// Local variables
var Headers 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_post(
"/" & PICS_ROOT_API & PX_ME_APP_AMS_URI & oct2char(unichar2oct(PX_APP_MOBILITY_SERVICE_ID, "UTF-8")) & "/deregisterTask",
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,
-
),
-,
-
),
*},
-
)
)
)
))) -> value v_response {
tc_ac.stop;
log("*** " & testcasename() & ": PASS: IUT successfully responds with a AppMobilityServiceInfo***");
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 TC_MEC_MEC012_SRV_AMS_014_OK
/**
* @desc Check that the AMS service send an error when is requested to deregister a not existent individual application mobility service
* @see ETSI GS MEC 021 2.0.10, clause 8.5.3.4
*/
testcase TC_MEC_MEC012_SRV_AMS_014_NF() runs on HttpComponent system HttpTestAdapter {
// Local variables
var Headers 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_post(
"/" & PICS_ROOT_API & PX_ME_APP_AMS_URI & oct2char(unichar2oct(PX_NON_EXISTENT_APP_MOBILITY_SERVICE_ID, "UTF-8")) & "/deregisterTask",
v_headers
)));
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
tc_ac.start;
alt {
[] httpPort.receive(
mw_http_response(
mw_http_response_404_not_found(
))) -> value v_response {
tc_ac.stop;
log("*** " & testcasename() & ": PASS: IUT successfully responds with a 404 Not Found***");
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 TC_MEC_MEC012_SRV_AMS_012_OK
}
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.1.1, clause 8.6.3.1
*/
testcase TC_MEC_MEC012_SRV_AMS_003_OK() runs on HttpComponent system HttpTestAdapter {
var Headers 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 TC_MEC_MEC012_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.1.1, clause 8.6.3.1
*/
testcase TC_MEC_MEC012_SRV_AMS_003_BR() runs on HttpComponent system HttpTestAdapter {
var Headers 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_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 TC_MEC_MEC012_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.1.1, clause 8.6.3.4
*/
testcase TC_MEC_MEC012_SRV_AMS_004_OK() runs on HttpComponent system HttpTestAdapter {
var Headers 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 TC_MEC_MEC012_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.1.1, clause 8.6.3.4
*/
testcase TC_MEC_MEC012_SRV_AMS_004_BR() runs on HttpComponent system HttpTestAdapter {
var Headers 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_error(
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_400_bad_request(
mw_http_message_body_json(
mw_body_json_problem_details(
mw_problem_details(
-, -, 400
)
)
)
)
)
)
{
tc_ac.stop;
log("*** " & testcasename() & ": PASS: IUT successfully responds with a Problem Details and 400 Bad request 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 TC_MEC_MEC012_SRV_AMS_004_BR
/**
* @desc Check that the AMS service returns information about a given subscription when requested.
* Permitted SUBSCRIPTION_TYPE are:
* - MobilityProcedureSubscription
* - AdjacentAppInfoSubscription
* @see ETSI GS MEC 021 2.1.1, clause 8.7.3.1
*/
testcase TC_MEC_MEC012_SRV_AMS_005_OK() runs on HttpComponent system HttpTestAdapter {
var Headers 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 & "/" & oct2char(unichar2oct(PX_SUBSCRIPTION_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_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 of TC_MEC_MEC012_SRV_AMS_005_OK
/**
* @desc Check that the AMS service returns an error when receives a query about a not existing subscription
* @see ETSI GS MEC 021 2.1.1, clause 8.7.3.1
*/
testcase TC_MEC_MEC012_SRV_AMS_005_NF() runs on HttpComponent system HttpTestAdapter {
var Headers 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 & "/" & oct2char(unichar2oct(PX_NON_EXISTENT_SUBSCRIPTION_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_404_not_found(
mw_http_message_body_json(
mw_body_json_problem_details(
mw_problem_details(
-, -, 404
)
)
)
)
)
)
{
tc_ac.stop;
log("*** " & testcasename() & ": PASS: IUT successfully responds with a ProblemDetails set to 404 Not Found ***");
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 TC_MEC_MEC012_SRV_AMS_005_NF
/**
* @desc Check that the AMS service deletes a given subscription when requested
* @see ETSI GS MEC 021 2.1.1, clause 8.7.3.5
*/
testcase TC_MEC_MEC012_SRV_AMS_006_OK() runs on HttpComponent system HttpTestAdapter {
var Headers 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_delete(
"/" & PICS_ROOT_API & PX_ME_APP_AMS_SUBS & "/" & oct2char(unichar2oct(PX_SUBSCRIPTION_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_204_no_content
)
)
{
tc_ac.stop;
log("*** " & testcasename() & ": PASS: IUT successfully responds with 204 No Content on deletion 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 TC_MEC_MEC012_SRV_AMS_006_OK
/**
* @desc Check that the AMS service sends an error when it receives a delete request for a not existing subscription
* @see ETSI GS MEC 021 2.1.1, clause 8.7.3.5
*/
testcase TC_MEC_MEC012_SRV_AMS_006_NF() runs on HttpComponent system HttpTestAdapter {
var Headers 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_delete(
"/" & PICS_ROOT_API & PX_ME_APP_AMS_SUBS & "/" & oct2char(unichar2oct(PX_NON_EXISTENT_SUBSCRIPTION_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_404_not_found(
mw_http_message_body_json(
mw_body_json_problem_details(
)
)
)
)
)
{
tc_ac.stop;
log("*** " & testcasename() & ": PASS: IUT successfully responds with a 404 Not Found ***");
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 TC_MEC_MEC012_SRV_AMS_006_NF
/**
* @desc Check that the AMS service modifies a given subscription when requested.
* Permitted SUBSCRIPTION_TYPE are:
* - MobilityProcedureSubscription
* - AdjacentAppInfoSubscription
* @see ETSI GS MEC 021 2.1.1, clause 8.7.3.2
*/
testcase TC_MEC_MEC012_SRV_AMS_007_OK() runs on HttpComponent system HttpTestAdapter {
var Headers 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_put(
"/" & PICS_ROOT_API & PX_ME_APP_AMS_SUBS & "/" & oct2char(unichar2oct(PX_SUBSCRIPTION_ID, "UTF-8")),
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_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 a AppMobilityServiceInfo ***");
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 TC_MEC_MEC012_SRV_AMS_007_OK
/**
* @desc Check that the AMS service sends an error when it receives a malformed modify request for a given subscription.
* Permitted SUBSCRIPTION_TYPE are:
* - MobilityProcedureSubscription
* - AdjacentAppInfoSubscription
* @see ETSI GS MEC 021 2.1.1, clause 8.7.3.2
*/
testcase TC_MEC_MEC012_SRV_AMS_007_BR() runs on HttpComponent system HttpTestAdapter {
var Headers 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_put(
"/" & PICS_ROOT_API & PX_ME_APP_AMS_SUBS & "/" & oct2char(unichar2oct(PX_SUBSCRIPTION_ID, "UTF-8")),
v_headers,
m_http_message_body_json(
m_body_json_ams_registration_request(
m_registration_request(
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_problem_details(
)
)
)
)
)
{
tc_ac.stop;
log("*** " & testcasename() & ": PASS: IUT successfully responds with a 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 TC_MEC_MEC012_SRV_AMS_007_BR
/**
* @desc Check that the AMS service sends an error when it receives a modify request for a not existing subscription
* @see ETSI GS MEC 021 2.1.1, clause 8.7.3.2
*/
testcase TC_MEC_MEC012_SRV_AMS_007_NF() runs on HttpComponent system HttpTestAdapter {
var Headers 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_put(
"/" & PICS_ROOT_API & PX_ME_APP_AMS_SUBS & "/" & oct2char(unichar2oct(PX_NON_EXISTENT_SUBSCRIPTION_ID, "UTF-8")),
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_404_not_found(
mw_http_message_body_json(
mw_body_json_problem_details(
)
)
)
)
)
{
tc_ac.stop;
log("*** " & testcasename() & ": PASS: IUT successfully responds with a 404 Not Found ***");
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 TC_MEC_MEC012_SRV_AMS_007_NF
} // End of group appMobilityServicesSubscriptions
group ams_notifications {
/**
* @desc Check that the AMS service sends an AMS notification about a mobility procedure if the AMS service has an associated subscription and the event is generated
* @see ETSI GS MEC 021 2.1.1, clause 7.4.2
*/
testcase TC_MEC_MEC012_SRV_AMS_008_OK() runs on HttpComponent system HttpTestAdapter {
// Local variables
var Headers v_headers;
// Test control
if (not(PICS_AMS) or not(PICS_AMS_NOTIFICATIONS)) {
log("*** " & testcasename() & ": PICS_AMS and PICS_AMS_NOTIFICATIONS required for executing the TC ***");
setverdict(inconc);
stop;
}
// Test component configuration
f_cf_01_http_notif_up();
// Test adapter configuration
// Preamble
f_init_default_headers_list(-, -, v_headers);
action("Trigger a mobility procedure event");
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
tc_wait.start;
alt {
[] httpPort_notif.receive(
mw_http_request(
mw_http_request_post(
PX_CALLBACK_URI,
-,
mw_http_message_body_json(
mw_body_json_mobility_procedure_notification(
mw_mobility_procedure_notification(
-,
PX_CALLBACK_REFERENCE,
-,
-,
-
)
)
)
)
)
) {
tc_wait.stop;
log("*** " & testcasename() & ": INFO: IUT successfully sends mobility procedure notification ***");
// Send 204 No Content
httpPort_notif.send(m_http_response(m_http_response_204_no_content(v_headers)));
log("*** " & testcasename() & ": PASS: IUT successfully sends mobility procedure notification ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] tc_wait.timeout {
log("*** " & testcasename() & ": INCONC: Expected message not received ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
} // End of 'alt' statement
// Postamble
f_cf_01_http_notif_down();
} // End of TC_MEC_MEC012_SRV_AMS_008_OK
/**
* @desc Check that the AMS service sends an AMS notification about adjacent application instances if the AMS service has an associated subscription and the event is generated
* @see ETSI GS MEC 021 2.1.1, clause 7.4.3
*/
testcase TC_MEC_MEC012_SRV_AMS_009_OK() runs on HttpComponent system HttpTestAdapter {
// Local variables
var Headers v_headers;
// Test control
if (not(PICS_AMS) or not(PICS_AMS_NOTIFICATIONS)) {
log("*** " & testcasename() & ": PICS_AMS and PICS_AMS_NOTIFICATIONS required for executing the TC ***");
setverdict(inconc);
stop;
}
// Test component configuration
f_cf_01_http_notif_up();
// Test adapter configuration
// Preamble
f_init_default_headers_list(-, -, v_headers);
action("Trigger a adjacent application info event");
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
tc_wait.start;
alt {
[] httpPort_notif.receive(
mw_http_request(
mw_http_request_post(
PX_CALLBACK_URI,
-,
mw_http_message_body_json(
mw_body_json_adjacent_application_info_notification(
mw_adjacent_application_info_notification(
-,
PX_CALLBACK_REFERENCE,
-,
-,
-
)
)
)
)
)
) {
tc_wait.stop;
log("*** " & testcasename() & ": INFO: IUT successfully sends adjacent application info notification ***");
// Send 204 No Content
httpPort_notif.send(m_http_response(m_http_response_204_no_content(v_headers)));
log("*** " & testcasename() & ": PASS: IUT successfully sends adjacent application info notification ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] tc_wait.timeout {
log("*** " & testcasename() & ": INCONC: Expected message not received ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
} // End of 'alt' statement
// Postamble
f_cf_01_http_notif_down();
}
/**
* @desc Check that the AMS service sends an AMS notification on subscription expiration if the AMS service has an associated subscription and the event is generated
* @see ETSI GS MEC 021 2.1.1, clause 7.4.4
*/
testcase TC_MEC_MEC012_SRV_AMS_010_OK() runs on HttpComponent system HttpTestAdapter {
// Local variables
var Headers v_headers;
var UInt64 v_timestamp;
// Test control
if (not(PICS_AMS) or not(PICS_AMS_NOTIFICATIONS)) {
log("*** " & testcasename() & ": PICS_AMS and PICS_AMS_NOTIFICATIONS required for executing the TC ***");
setverdict(inconc);
stop;
}
// Test component configuration
f_cf_01_http_notif_up();
// Test adapter configuration
// Preamble
f_init_default_headers_list(-, -, v_headers);
action("Trigger a expire notification event");
v_timestamp := f_get_current_timestamp_utc();
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
tc_wait.start;
alt {
[] httpPort_notif.receive(
mw_http_request(
mw_http_request_post(
PX_CALLBACK_URI,
-,
mw_http_message_body_json(
mw_body_json_expire_notification(
mw_expire_notification(
-,
-,
{ seconds := v_timestamp / 1000, nanoSeconds := 1000 * v_timestamp mod 1000 }
)
)
)
)
)
) {
tc_wait.stop;
log("*** " & testcasename() & ": INFO: IUT successfully sends adjacent application info notification ***");
// Send 204 No Content
httpPort_notif.send(m_http_response(m_http_response_204_no_content(v_headers)));
log("*** " & testcasename() & ": PASS: IUT successfully sends adjacent applicationinfo notification ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] tc_wait.timeout {
log("*** " & testcasename() & ": INCONC: Expected message not received ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
} // End of 'alt' statement
// Postamble
f_cf_01_http_notif_down();
}
} // End of group ams_notifications
} // End of module AtsMec_Ams_TestCases
module AtsMec_TestControl {
// LibMec/LocationAPI
import from LocationAPI_Pics all;
// LibMec/UEidentityAPI
import from UEidentityAPI_Pics all;
// LibMec/RnisAPI
import from RnisAPI_Pics all;
// LibMec/TrafficManagementAPI
import from TrafficManagementAPI_Pics all;
// LibMec/AppEnablementAPI
import from EdgePlatformApplicationEnablementAPI_Pics all;
// LibMec/UEAppInterfaceAPI
import from UEAppInterfaceAPI_Pics all;
// LibMec
import from LibMec_Pics all;
// AtsMec
import from AtsMec_LocationAPI_TestCases all;
import from AtsMec_UEidentityAPI_TestCases all;
// import from AtsMec_RadioNodeLocationAPI_TestCases all;
import from AtsMec_RnisAPI_TestCases all;
import from AtsMec_TrafficManagementAPI_TestCases all;
import from AtsMec_EdgePlatformApplicationEnablementAPI_TestCases all;
import from AtsMec_UEAppInterfaceAPI_TestCases all;
control {
if (PICS_MEC_PLAT and PICS_SERVICES) {
if (PICS_UE_IDENTITY_API_SUPPORTED) {
execute(TC_MEC_MEC014_SRV_UETAG_001_OK());
execute(TC_MEC_MEC014_SRV_UETAG_001_BR());
execute(TC_MEC_MEC014_SRV_UETAG_001_NF());
execute(TC_MEC_MEC014_SRV_UETAG_002_OK());
execute(TC_MEC_MEC014_SRV_UETAG_002_BR());
execute(TC_MEC_MEC014_SRV_UETAG_002_PF());
}
if (PICS_LOCATION_API_SUPPORTED) {
execute(TC_MEC_MEC013_SRV_UELOCLOOK_001_OK());
execute(TC_MEC_MEC013_SRV_UELOCLOOK_001_BR());
execute(TC_MEC_MEC013_SRV_UELOCLOOK_001_NF());
execute(TC_MEC_MEC013_SRV_UELOCSUB_001_OK());
execute(TC_MEC_MEC013_SRV_UELOCSUB_001_BR());
execute(TC_MEC_MEC013_SRV_UELOCSUB_002_OK());
execute(TC_MEC_MEC013_SRV_UELOCSUB_002_NF());
execute(TC_MEC_MEC013_SRV_UETRACKSUB_001_OK());
execute(TC_MEC_MEC013_SRV_UETRACKSUB_001_BR());
execute(TC_MEC_MEC013_SRV_UETRACKSUB_002_OK());
execute(TC_MEC_MEC013_SRV_UETRACKSUB_002_NF());
execute(TC_MEC_MEC013_SRV_UEINFLOOK_001_OK());
execute(TC_MEC_MEC013_SRV_UEINFLOOK_001_BR());
execute(TC_MEC_MEC013_SRV_UEINFLOOK_001_NF());
execute(TC_MEC_MEC013_SRV_UEINFSUB_001_OK());
execute(TC_MEC_MEC013_SRV_UEINFSUB_001_BR());
execute(TC_MEC_MEC013_SRV_UEINFSUB_002_OK());
execute(TC_MEC_MEC013_SRV_UEINFSUB_002_NF());
// execute(TC_MEC_PLAT_RLOC_001_OK());
// execute(TC_MEC_PLAT_RLOC_001_NF());
}
if (PICS_APP_ENABLEMENT_API_SUPPORTED) {
/*execute(TC_MEC_SRV_TRANS_001_OK());
execute(TC_MEC_SRV_TRAF_001_OK());
execute(TC_MEC_SRV_TRAF_002_OK());
execute(TC_MEC_SRV_TRAF_003_OK());
execute(TC_MEC_SRV_TRAF_001_NF());*/
}
if (PICS_ENABLE_UE_APP_CTX) {
execute(TC_MEC_MEC016_MEO_UEAPPCTX_001_OK());
execute(TC_MEC_MEC016_MEO_UEAPPCTX_001_BR());
execute(TC_MEC_MEC016_MEO_UEAPPCTX_002_OK());
execute(TC_MEC_MEC016_MEO_UEAPPCTX_002_BR());
execute(TC_MEC_MEC016_MEO_UEAPPCTX_002_NF());
execute(TC_MEC_MEC016_MEO_UEAPPCTX_003_OK());
execute(TC_MEC_MEC016_MEO_UEAPPCTX_003_NF());
execute(TC_MEC_MEC016_MEO_UEAPPS_001_OK());
execute(TC_MEC_MEC016_MEO_UEAPPS_001_BR());
execute(TC_MEC_MEC016_MEO_UEAPPS_001_NF());
}
}
/*if (PICS_RNIS) {
if (PICS_RNIS_NOTIFICATIONS) {
execute(TC_MEC_MEC012_SRV_RNIS_001_OK());
execute(TC_MEC_MEC012_SRV_RNIS_002_OK());
execute(TC_MEC_MEC012_SRV_RNIS_003_OK());
execute(TC_MEC_MEC012_SRV_RNIS_004_OK());
}
if (PICS_RNIS_ALL_SUBSCRIPTIONS) {
execute(TC_MEC_MEC012_SRV_RNIS_011_OK());
execute(TC_MEC_MEC012_SRV_RNIS_012_OK());
execute(TC_MEC_MEC012_SRV_RNIS_011_BR());
execute(TC_MEC_MEC012_SRV_RNIS_012_BR());
}
if (PICS_RNIS_QUERY) {
execute(TC_MEC_MEC012_SRV_RNIS_016_OK());
execute(TC_MEC_MEC012_SRV_RNIS_016_BR());
execute(TC_MEC_MEC012_SRV_RNIS_016_NF());
execute(TC_MEC_MEC012_SRV_RNIS_017_OK());
execute(TC_MEC_MEC012_SRV_RNIS_017_BR());
execute(TC_MEC_MEC012_SRV_RNIS_017_NF());
execute(TC_MEC_MEC012_SRV_RNIS_018_OK());
execute(TC_MEC_MEC012_SRV_RNIS_018_BR());
execute(TC_MEC_MEC012_SRV_RNIS_018_NF());
execute(TC_MEC_MEC012_SRV_RNIS_019_OK());
execute(TC_MEC_MEC012_SRV_RNIS_019_BR());
execute(TC_MEC_MEC012_SRV_RNIS_019_NF());
}
}*/
if (PICS_MEC_PLAT and PICS_BWMANAGEMENT_API_SUPPORTED) {
execute(TC_MEC_MEC015_SRV_TM_001_OK());
execute(TC_MEC_MEC015_SRV_TM_002_OK());
execute(TC_MEC_MEC015_SRV_TM_002_BR());
execute(TC_MEC_MEC015_SRV_TM_002_NF());
}
} // End of 'control' statement
} // End of module AtsMec_TestControl
module AtsMec_TestControl {
// LibMec/LocationAPI
import from LocationAPI_Pics all;
// LibMec/UEidentityAPI
import from UEidentityAPI_Pics all;
// LibMec/RnisAPI
import from RnisAPI_Pics all;
// LibMec/TrafficManagementAPI
import from TrafficManagementAPI_Pics all;
// LibMec/AppEnablementAPI
import from EdgePlatformApplicationEnablementAPI_Pics all;
// LibMec/UEAppInterfaceAPI
import from UEAppInterfaceAPI_Pics all;
// LibMec
import from LibMec_Pics all;
// AtsMec
import from AtsMec_LocationAPI_TestCases all;
import from AtsMec_UEidentityAPI_TestCases all;
// import from AtsMec_RadioNodeLocationAPI_TestCases all;
import from AtsMec_RnisAPI_TestCases all;
import from AtsMec_TrafficManagementAPI_TestCases all;
import from AtsMec_EdgePlatformApplicationEnablementAPI_TestCases all;
import from AtsMec_UEAppInterfaceAPI_TestCases all;
control {
if (PICS_MEC_PLAT and PICS_SERVICES) {
if (PICS_UE_IDENTITY_API_SUPPORTED) {
execute(TC_MEC_MEC014_SRV_UETAG_001_OK());
execute(TC_MEC_MEC014_SRV_UETAG_001_BR());
execute(TC_MEC_MEC014_SRV_UETAG_001_NF());
execute(TC_MEC_MEC014_SRV_UETAG_002_OK());
execute(TC_MEC_MEC014_SRV_UETAG_002_BR());
execute(TC_MEC_MEC014_SRV_UETAG_002_PF());
}
if (PICS_LOCATION_API_SUPPORTED) {
execute(TC_MEC_MEC013_SRV_UELOCLOOK_001_OK());
execute(TC_MEC_MEC013_SRV_UELOCLOOK_001_BR());
execute(TC_MEC_MEC013_SRV_UELOCLOOK_001_NF());
execute(TC_MEC_MEC013_SRV_UELOCSUB_001_OK());
execute(TC_MEC_MEC013_SRV_UELOCSUB_001_BR());
execute(TC_MEC_MEC013_SRV_UELOCSUB_002_OK());
execute(TC_MEC_MEC013_SRV_UELOCSUB_002_NF());
execute(TC_MEC_MEC013_SRV_UETRACKSUB_001_OK());
execute(TC_MEC_MEC013_SRV_UETRACKSUB_001_BR());
execute(TC_MEC_MEC013_SRV_UETRACKSUB_002_OK());
execute(TC_MEC_MEC013_SRV_UETRACKSUB_002_NF());
execute(TC_MEC_MEC013_SRV_UEINFLOOK_001_OK());
execute(TC_MEC_MEC013_SRV_UEINFLOOK_001_BR());
execute(TC_MEC_MEC013_SRV_UEINFLOOK_001_NF());
execute(TC_MEC_MEC013_SRV_UEINFSUB_001_OK());
execute(TC_MEC_MEC013_SRV_UEINFSUB_001_BR());
execute(TC_MEC_MEC013_SRV_UEINFSUB_002_OK());
execute(TC_MEC_MEC013_SRV_UEINFSUB_002_NF());
// execute(TC_MEC_PLAT_RLOC_001_OK());
// execute(TC_MEC_PLAT_RLOC_001_NF());
}
if (PICS_APP_ENABLEMENT_API_SUPPORTED) {
/*execute(TC_MEC_SRV_TRANS_001_OK());
execute(TC_MEC_SRV_TRAF_001_OK());
execute(TC_MEC_SRV_TRAF_002_OK());
execute(TC_MEC_SRV_TRAF_003_OK());
execute(TC_MEC_SRV_TRAF_001_NF());*/
}
if (PICS_ENABLE_UE_APP_CTX) {
execute(TC_MEC_MEC016_MEO_UEAPPCTX_001_OK());
execute(TC_MEC_MEC016_MEO_UEAPPCTX_001_BR());
execute(TC_MEC_MEC016_MEO_UEAPPCTX_002_OK());
execute(TC_MEC_MEC016_MEO_UEAPPCTX_002_BR());
execute(TC_MEC_MEC016_MEO_UEAPPCTX_002_NF());
execute(TC_MEC_MEC016_MEO_UEAPPCTX_003_OK());
execute(TC_MEC_MEC016_MEO_UEAPPCTX_003_NF());
execute(TC_MEC_MEC016_MEO_UEAPPS_001_OK());
execute(TC_MEC_MEC016_MEO_UEAPPS_001_BR());
execute(TC_MEC_MEC016_MEO_UEAPPS_001_NF());
}
}
/*if (PICS_RNIS) {
if (PICS_RNIS_NOTIFICATIONS) {
execute(TC_MEC_MEC012_SRV_RNIS_001_OK());
execute(TC_MEC_MEC012_SRV_RNIS_002_OK());
execute(TC_MEC_MEC012_SRV_RNIS_003_OK());
execute(TC_MEC_MEC012_SRV_RNIS_004_OK());
}
if (PICS_RNIS_ALL_SUBSCRIPTIONS) {
execute(TC_MEC_MEC012_SRV_RNIS_011_OK());
execute(TC_MEC_MEC012_SRV_RNIS_012_OK());
execute(TC_MEC_MEC012_SRV_RNIS_011_BR());
execute(TC_MEC_MEC012_SRV_RNIS_012_BR());
}
if (PICS_RNIS_QUERY) {
execute(TC_MEC_MEC012_SRV_RNIS_016_OK());
execute(TC_MEC_MEC012_SRV_RNIS_016_BR());
execute(TC_MEC_MEC012_SRV_RNIS_016_NF());
execute(TC_MEC_MEC012_SRV_RNIS_017_OK());
execute(TC_MEC_MEC012_SRV_RNIS_017_BR());
execute(TC_MEC_MEC012_SRV_RNIS_017_NF());
execute(TC_MEC_MEC012_SRV_RNIS_018_OK());
execute(TC_MEC_MEC012_SRV_RNIS_018_BR());
execute(TC_MEC_MEC012_SRV_RNIS_018_NF());
execute(TC_MEC_MEC012_SRV_RNIS_019_OK());
execute(TC_MEC_MEC012_SRV_RNIS_019_BR());
execute(TC_MEC_MEC012_SRV_RNIS_019_NF());
}
}*/
if (PICS_MEC_PLAT and PICS_BWMANAGEMENT_API_SUPPORTED) {
execute(TC_MEC_MEC015_SRV_TM_001_OK());
execute(TC_MEC_MEC015_SRV_TM_002_OK());
execute(TC_MEC_MEC015_SRV_TM_002_BR());
execute(TC_MEC_MEC015_SRV_TM_002_NF());
}
} // End of 'control' statement
} // End of module AtsMec_TestControl